# Tags actions

> Tags: 5 Xholic actions (1 read, 4 change), each with its MCP tool, REST endpoint and CLI command.

Source: https://docs.xholic.ai/actions/tags/

5 actions. Every field marked *Required* must be sent; `account`, `dryRun`, `idempotencyKey`, `confirmCredits` and `quoteId` are the [control fields](/api/responses/#control-fields) every surface adds.

## List tags

`tags.list` · read

The account's post tags (name, color, id). Use the ids to filter the queue or calendar, or to tag a post.

- **MCP tool:** `list_tags`. Loaded by default in MCP clients.
- **REST:** `GET /v1/tags/list`
- **CLI:** `xholic tags list`
- **Scope:** `read`
- **Plan:** Every plan, including the trial
- **Cost:** Free.
- **Rate limit bucket:** `read`

**Input**

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `account` | string ≤ 64 chars | No | X account to act on, as @handle. Leave it out to use the connection's default account. |

## Create a tag

`tags.create` · write

Create a post tag. Call it only when the user asked for this in the conversation; never on your own initiative.

- **MCP tool:** `tags_create`. Catalog: reach it with `find_actions` and `run_write_action`, or turn on the full toolset.
- **REST:** `POST /v1/tags/create`
- **CLI:** `xholic tags create`
- **Scope:** `write`
- **Plan:** Every plan, including the trial
- **Cost:** Free.
- **Rate limit bucket:** `write`
- **Undo:** from the activity log, which runs `tags.delete`

**Input**

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `name` | string ≤ 40 chars | Yes |  |
| `color` | "neutral" \\| "red" \\| "orange" \\| "amber" \\| "lime" \\| "emerald" \\| "teal" \\| "cyan" \\| "blue" \\| "indigo" \\| "violet" \\| "fuchsia" | Yes |  |
| `account` | string ≤ 64 chars | No | X account to act on, as @handle. Leave it out to use the connection's default account. |
| `dryRun` | boolean | No | Return exactly what would happen without doing it. |
| `idempotencyKey` | string ≤ 200 chars | No | A unique key for this write. Repeating a call with the same key returns the first result instead of acting twice. |

## Add the starter tags

`tags.import_starter` · write

Add Xholic's starter tag set (missing ones only). Call it only when the user asked for this in the conversation; never on your own initiative.

- **MCP tool:** `tags_import_starter`. Catalog: reach it with `find_actions` and `run_write_action`, or turn on the full toolset.
- **REST:** `POST /v1/tags/import-starter`
- **CLI:** `xholic tags import-starter`
- **Scope:** `write`
- **Plan:** Every plan, including the trial
- **Cost:** Free.
- **Rate limit bucket:** `write`

**Input**

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `account` | string ≤ 64 chars | No | X account to act on, as @handle. Leave it out to use the connection's default account. |
| `dryRun` | boolean | No | Return exactly what would happen without doing it. |
| `idempotencyKey` | string ≤ 200 chars | No | A unique key for this write. Repeating a call with the same key returns the first result instead of acting twice. |

## Edit a tag

`tags.update` · write

Rename a tag or change its color. Send both name and color. Call it only when the user asked for this in the conversation; never on your own initiative.

- **MCP tool:** `tags_update`. Catalog: reach it with `find_actions` and `run_write_action`, or turn on the full toolset.
- **REST:** `POST /v1/tags/update`
- **CLI:** `xholic tags update`
- **Scope:** `write`
- **Plan:** Every plan, including the trial
- **Cost:** Free.
- **Rate limit bucket:** `write`

**Input**

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `tagId` | string (uuid) | Yes |  |
| `name` | string ≤ 40 chars | Yes |  |
| `color` | "neutral" \\| "red" \\| "orange" \\| "amber" \\| "lime" \\| "emerald" \\| "teal" \\| "cyan" \\| "blue" \\| "indigo" \\| "violet" \\| "fuchsia" | Yes |  |
| `account` | string ≤ 64 chars | No | X account to act on, as @handle. Leave it out to use the connection's default account. |
| `dryRun` | boolean | No | Return exactly what would happen without doing it. |
| `idempotencyKey` | string ≤ 200 chars | No | A unique key for this write. Repeating a call with the same key returns the first result instead of acting twice. |

## Delete a tag

`tags.delete` · write

Delete a tag. Posts keep their text; they just lose the tag. Call it only when the user asked for this in the conversation; never on your own initiative.

- **MCP tool:** `tags_delete`. Catalog: reach it with `find_actions` and `run_write_action`, or turn on the full toolset.
- **REST:** `POST /v1/tags/delete`
- **CLI:** `xholic tags delete`
- **Scope:** `write`. Destructive: it can't be taken back
- **Plan:** Every plan, including the trial
- **Cost:** Free.
- **Rate limit bucket:** `write`

**Input**

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `tagId` | string (uuid) | Yes |  |
| `account` | string ≤ 64 chars | No | X account to act on, as @handle. Leave it out to use the connection's default account. |
| `dryRun` | boolean | No | Return exactly what would happen without doing it. |
| `idempotencyKey` | string ≤ 200 chars | No | A unique key for this write. Repeating a call with the same key returns the first result instead of acting twice. |
