---
canonical_url: "https://docs.composio.dev/toolkits/hackmd"
markdown_url: "https://docs.composio.dev/toolkits/hackmd.md"
product: "platform"
version: null
last_updated: null
---

# HackMD

HackMD is a collaborative Markdown workspace for creating, organizing, and sharing personal and team notes.

- **Category:** documents
- **Auth:** API_KEY
- **Composio-managed OAuth available?** N/A
- **Tools:** 8
- **Triggers:** 0
- **Slug:** `HACKMD`
- **Version:** 00000000_00

## Tools

### Create Note

**Slug:** `HACKMD_CREATE_NOTE`

Create a Markdown note in the personal workspace or a specified team workspace. The team branch is documented but was not live-tested because the test account belongs to no teams.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `tags` | array | No | Tags to assign to the note. |
| `title` | string | No | Note title. |
| `content` | string | No | Initial note body as Markdown. Content creation was live-verified; later content replacement is intentionally unavailable. |
| `team_path` | string | No | Team path from HACKMD_GET_ACCOUNT. Omit for the personal workspace; team creation was not live-verified. |
| `description` | string | No | Short note description. |
| `read_permission` | string ("owner" | "signed_in" | "guest") | No | Who may read the note; omit to use HackMD's default. |
| `parent_folder_id` | string | No | Folder ID from HACKMD_LIST_FOLDERS in the selected workspace. |
| `write_permission` | string ("owner" | "signed_in" | "guest") | No | Who may edit the note; omit to use HackMD's default. |
| `comment_permission` | string ("disabled" | "forbidden" | "owners" | "signed_in_users" | "everyone") | No | Who may comment; omit to use HackMD's default. |
| `suggest_edit_permission` | string ("disabled" | "forbidden" | "owners" | "signed_in_users") | No | Who may suggest edits; omit to use HackMD's default. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Account

**Slug:** `HACKMD_GET_ACCOUNT`

Return the HackMD profile for the connected token and the teams visible to it. Use the returned team paths with tools that accept team_path.

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Note

**Slug:** `HACKMD_GET_NOTE`

Get a note by ID, including its Markdown content. The personal note route can also retrieve an accessible team note, so no team selector is needed.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `note_id` | string | Yes | Unique note ID returned by a note list or create call. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Folders

**Slug:** `HACKMD_LIST_FOLDERS`

List all folders in the personal workspace, or in one team workspace when team_path is supplied. Use a folder ID as parent_folder_id when creating a note. The team route is documented but was not live-tested.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `team_path` | string | No | Team path from HACKMD_GET_ACCOUNT. Omit for personal folders; the team branch was not live-verified. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Notes

**Slug:** `HACKMD_LIST_NOTES`

List all notes in the personal workspace, or in one team workspace when team_path is supplied. HackMD returns the complete collection without pagination; the team route is documented but was not live-tested.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `team_path` | string | No | Team path from HACKMD_GET_ACCOUNT. Omit for the personal workspace; team access depends on the connected account's membership and was not live-verified. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Trash

**Slug:** `HACKMD_LIST_TRASH`

List soft-deleted notes in the personal workspace. Team trash is intentionally excluded because it requires team-admin permission and could not be live-tested.

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Move Note to Trash

**Slug:** `HACKMD_MOVE_NOTE_TO_TRASH`

Soft-delete a note by moving it to trash in the personal workspace or an explicitly selected team workspace. This is not permanent deletion. Personal notes can be restored with HACKMD_RESTORE_NOTES; team deletion is documented but was not live-verified, and no team restore endpoint is mapped.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `note_id` | string | Yes | Unique note ID to move to trash. |
| `team_path` | string | No | Team path from HACKMD_GET_ACCOUNT. Omit for a personal note; team deletion is documented but was not live-verified and has no mapped restore counterpart. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Restore Notes

**Slug:** `HACKMD_RESTORE_NOTES`

Restore one or more personal notes from HackMD trash. Returns a per-note success or failure outcome so a partial HTTP 207 result is never reported as an unconditional success.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `note_ids` | array | Yes | One or more encoded personal trash note IDs from HACKMD_LIST_TRASH. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |
