<!-- Generated by `just docs` from catalog/toolkits/confluence.yaml, catalog/expansions/confluence.yaml, catalog/evals/scorecard.json. Edit the source, not this file. -->

# Confluence

Team wiki. Create, read, and update pages and their children, attach files, comment, label, and search across a whole site.

| Property | Value |
| --- | --- |
| Slug | `confluence` |
| Definition version | `0.1.0` |
| Base URL | `https://api.atlassian.com` |
| Auth schemes | `oauth2` |
| Action tools | 30 |
| By class | 16 read, 12 write, 2 destructive |
| Triggers | 0 |
| Provider rate limit | not declared, so outbound calls are unpaced |

## Measured routing accuracy

42 golden cases replayed through the router over the whole index: measured over corpus `ea4f12ad2948` (65 toolkits, 2283 tools indexed and 13 declared uncallable), 30 cases written by hand and 12 cases from the paraphrase pass. A case counts as top-1 when its gold tool ranked first and top-8 when it reached the slate at all.

| Measure | Cases | Share |
| --- | --- | --- |
| top-1 | 18/42 | 42.9% |
| top-8 | 36/42 | 85.7% |

The sweep is offline: the reranker is a deterministic identity fake that returns candidates in the order retrieval produced them, so top-1 measures retrieval order rather than a reranked slate. `just eval-live` measures the same cases through the live reranker.

## Authentication

Connect an entity with `ConnectionsService.InitiateConnection`, naming this toolkit's slug. Credentials stay in the connections vault; callers hold connected-account ids only.

### `oauth2`

| Property | Value |
| --- | --- |
| Authorization URL | `https://auth.atlassian.com/authorize` |
| Token URL | `https://auth.atlassian.com/oauth/token` |
| Default scopes | `read:confluence-content.all`, `write:confluence-content`, `read:confluence-space.summary`, `write:confluence-space`, `read:confluence-user`, `search:confluence`, `offline_access` |
| Refresh tokens | yes, the refresh daemon renews ahead of expiry |

## Tools

30 action tools. The catalog-wide slug is `confluence.<tool>`, which is what `search_tools` returns and `call_tool` takes.

### `confluence.list_spaces`

List or browse the spaces (wikis) on a Confluence site, optionally filtered by key or type. Use when the user asks what spaces exist or wants to find a space's id. For one already-known space use get_space.

Class `read` (reads only). No scopes beyond the connection's defaults. Calls `GET /ex/confluence/{{params.cloud_id}}/wiki/api/v2/spaces`.

Arguments:

| Argument | Type | Required | Notes |
| --- | --- | --- | --- |
| `cloud_id` | string | **yes** | Atlassian Cloud id of the connected Confluence site. |
| `cursor` | string | no | Cursor from a previous response's _links.next, for the next page. |
| `keys` | string | no | Comma-separated space keys to filter to, e.g. "ENG,MKT". Omit to list all. |
| `limit` | integer | no | Page size, default 25. |
| `status` | string, one of current, archived | no | Restrict to current or archived spaces. Defaults to current. |
| `type` | string, one of global, personal | no | Restrict to global (team) or personal spaces. Omit for both. |

Result fields (the payload is trimmed to these before it reaches the model):

| Field | Type | Notes |
| --- | --- | --- |
| `_links` | object |  |
| `_links.next` | string |  |
| `results` | array of object |  |
| `results[].homepageId` | string |  |
| `results[].id` | string |  |
| `results[].key` | string |  |
| `results[].name` | string |  |
| `results[].status` | string |  |
| `results[].type` | string |  |

Also retrieved by: "what wikis do we have", "show me every team workspace", "which confluence areas exist", "browse the available wikis".

### `confluence.get_space`

Get one Confluence space's (wiki's) detail by id: key, name, type, and its homepage id. Use when the user names a specific space. For the whole list use list_spaces.

Class `read` (reads only). No scopes beyond the connection's defaults. Calls `GET /ex/confluence/{{params.cloud_id}}/wiki/api/v2/spaces/{{params.space_id}}`.

Arguments:

| Argument | Type | Required | Notes |
| --- | --- | --- | --- |
| `cloud_id` | string | **yes** | Atlassian Cloud id of the connected Confluence site. |
| `space_id` | string | **yes** | Confluence space id, from list_spaces. |

Result fields (the payload is trimmed to these before it reaches the model):

| Field | Type | Notes |
| --- | --- | --- |
| `homepageId` | string |  |
| `id` | string |  |
| `key` | string |  |
| `name` | string |  |
| `status` | string |  |
| `type` | string |  |

Also retrieved by: "tell me about this workspace", "pull up the engineering wiki area", "what's this team's home base".

### `confluence.create_space`

Create a new Confluence space (wiki) with a unique key and name. Use when the user wants to start, set up, or spin up a new team space, not a page inside one. For a page use create_page instead.

Class `write` (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls `POST /ex/confluence/{{params.cloud_id}}/wiki/api/v2/spaces`.

Arguments:

| Argument | Type | Required | Notes |
| --- | --- | --- | --- |
| `cloud_id` | string | **yes** | Atlassian Cloud id of the connected Confluence site. |
| `description` | object | no | Optional space description, e.g. {"value": "Engineering docs", "representation": "plain"}. Omit for no description. |
| `description.representation` | string, one of plain, view | no |  |
| `description.value` | string | no |  |
| `key` | string | **yes** | Unique space key, e.g. "ENG". Uppercase letters and digits. |
| `name` | string | **yes** | Space display name. |

Result fields (the payload is trimmed to these before it reaches the model):

| Field | Type | Notes |
| --- | --- | --- |
| `id` | string |  |
| `key` | string |  |
| `name` | string |  |
| `status` | string |  |

Also retrieved by: "stand up a fresh wiki for the team", "I need somewhere new to keep docs", "open a workspace for this project", "set up a home for our notes".

### `confluence.update_space`

Rename a Confluence space or edit its description. Use when the user wants to edit or update a space's own details, not the pages inside it.

Class `write` (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls `PUT /ex/confluence/{{params.cloud_id}}/wiki/api/v2/spaces/{{params.space_id}}`.

Arguments:

| Argument | Type | Required | Notes |
| --- | --- | --- | --- |
| `cloud_id` | string | **yes** | Atlassian Cloud id of the connected Confluence site. |
| `description` | object | no | New space description, e.g. {"value": "Engineering docs", "representation": "plain"}. Omit to leave unchanged. |
| `description.representation` | string, one of plain, view | no |  |
| `description.value` | string | no |  |
| `name` | string | no | New space display name. Omit to leave unchanged. |
| `space_id` | string | **yes** | Confluence space id to edit, from list_spaces. |

Result fields (the payload is trimmed to these before it reaches the model):

| Field | Type | Notes |
| --- | --- | --- |
| `id` | string |  |
| `key` | string |  |
| `name` | string |  |

Also retrieved by: "rename our team's wiki area", "fix the blurb on our workspace", "change what this wiki is called".

### `confluence.create_page`

Create a new Confluence page in a space, optionally under a parent page. Use when the user wants to write, add, or start a new wiki page or doc. Pass parent_id to make it a child page under an existing one; omit it for a top-level page in the space.

Class `write` (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls `POST /ex/confluence/{{params.cloud_id}}/wiki/api/v2/pages`.

Arguments:

| Argument | Type | Required | Notes |
| --- | --- | --- | --- |
| `body_value` | string | **yes** | Page content in Confluence storage format (XHTML-based markup), e.g. "<p>Hello world</p>". |
| `cloud_id` | string | **yes** | Atlassian Cloud id of the connected Confluence site. |
| `parent_id` | string | no | Id of the page this becomes a child of. Omit for a top-level page in the space. |
| `space_id` | string | **yes** | Confluence space id the page belongs to, from list_spaces. |
| `status` | string, one of current, draft | no | Publish immediately (current) or save as a draft. Defaults to current. |
| `title` | string | **yes** | Page title. |

Result fields (the payload is trimmed to these before it reaches the model):

| Field | Type | Notes |
| --- | --- | --- |
| `_links` | object |  |
| `_links.webui` | string |  |
| `id` | string |  |
| `parentId` | string |  |
| `spaceId` | string |  |
| `status` | string |  |
| `title` | string |  |
| `version` | object |  |
| `version.number` | integer |  |

Also retrieved by: "write up a new doc", "jot down some notes on the wiki", "start a fresh article under this section", "draft something for the team to read".

### `confluence.get_page`

Get one Confluence wiki page's detail and content by id: title, space, parent, current body, and version number. Use when the user asks to read, open, or pull up a specific Confluence page by its id. For a page found only by title use search_pages_by_title first.

Class `read` (reads only). No scopes beyond the connection's defaults. Calls `GET /ex/confluence/{{params.cloud_id}}/wiki/api/v2/pages/{{params.page_id}}`.

Arguments:

| Argument | Type | Required | Notes |
| --- | --- | --- | --- |
| `body_format` | string, one of storage, atlas_doc_format, view | no | Representation to return the body in. Defaults to storage. |
| `cloud_id` | string | **yes** | Atlassian Cloud id of the connected Confluence site. |
| `page_id` | string | **yes** | Confluence page id. |

Result fields (the payload is trimmed to these before it reaches the model):

| Field | Type | Notes |
| --- | --- | --- |
| `_links` | object |  |
| `_links.webui` | string |  |
| `authorId` | string |  |
| `body` | object |  |
| `body.storage` | object |  |
| `body.storage.value` | string |  |
| `createdAt` | string (date-time) |  |
| `id` | string |  |
| `parentId` | string |  |
| `spaceId` | string |  |
| `status` | string |  |
| `title` | string |  |
| `version` | object |  |
| `version.createdAt` | string (date-time) |  |
| `version.message` | string |  |
| `version.number` | integer |  |

Also retrieved by: "pull up that doc", "show me what's written on this article", "open the wiki entry for this", "read what's on that write-up", "what's on that confluence page".

### `confluence.update_page`

Edit an existing Confluence wiki page's title or content, or move it under a different parent. Use when the user wants to change, edit, rewrite, or retitle a Confluence page. Requires the page's current version number, from get_page, incremented by one.

Class `write` (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls `PUT /ex/confluence/{{params.cloud_id}}/wiki/api/v2/pages/{{params.page_id}}`.

Arguments:

| Argument | Type | Required | Notes |
| --- | --- | --- | --- |
| `body_value` | string | **yes** | New page content in Confluence storage format (XHTML-based markup), replacing the whole body. |
| `cloud_id` | string | **yes** | Atlassian Cloud id of the connected Confluence site. |
| `page_id` | string | **yes** | Confluence page id to edit. |
| `parent_id` | string | no | New parent page id, to move this page. Omit to leave it where it is. |
| `status` | string, one of current, draft | no | Defaults to current. |
| `title` | string | **yes** | New (or unchanged) page title. |
| `version_number` | integer | **yes** | New version number. Must be exactly one greater than the page's current version.number, from get_page. |

Result fields (the payload is trimmed to these before it reaches the model):

| Field | Type | Notes |
| --- | --- | --- |
| `id` | string |  |
| `title` | string |  |
| `version` | object |  |
| `version.number` | integer |  |

Also retrieved by: "fix the wording on this doc", "rewrite this article", "I need to correct what's written here", "refresh the content on this write-up", "edit that confluence page".

### `confluence.delete_page`

Delete a Confluence page. Use when the user wants to delete, remove, or trash a page. By default it moves to the space's trash and can be restored there; pass purge true to permanently delete it right away. Irreversible once purged.

Class `destructive` (held by the mutation gate until the call's own arguments carry `"confirm": true`). No scopes beyond the connection's defaults. Calls `DELETE /ex/confluence/{{params.cloud_id}}/wiki/api/v2/pages/{{params.page_id}}`.

Arguments:

| Argument | Type | Required | Notes |
| --- | --- | --- | --- |
| `cloud_id` | string | **yes** | Atlassian Cloud id of the connected Confluence site. |
| `page_id` | string | **yes** | Confluence page id to delete. |
| `purge` | boolean | no | Skip the trash and permanently delete right away. Default false. |

Result fields (the payload is trimmed to these before it reaches the model):

| Field | Type | Notes |
| --- | --- | --- |
| `deleted` | boolean |  |

Also retrieved by: "get rid of this doc for good", "trash that write-up", "throw this article away", "I don't need this page anymore".

### `confluence.list_pages_in_space`

List the pages in one Confluence space, optionally filtered by status. Use when the user asks what pages exist in a space or wants to browse its contents. For a page's child pages specifically, use list_child_pages.

Class `read` (reads only). No scopes beyond the connection's defaults. Calls `GET /ex/confluence/{{params.cloud_id}}/wiki/api/v2/spaces/{{params.space_id}}/pages`.

Arguments:

| Argument | Type | Required | Notes |
| --- | --- | --- | --- |
| `cloud_id` | string | **yes** | Atlassian Cloud id of the connected Confluence site. |
| `cursor` | string | no | Cursor from a previous response's _links.next, for the next page. |
| `limit` | integer | no | Page size, default 25. |
| `space_id` | string | **yes** | Confluence space id, from list_spaces. |
| `status` | string, one of current, archived, draft, trashed | no | Restrict to pages in this status. Defaults to current. |

Result fields (the payload is trimmed to these before it reaches the model):

| Field | Type | Notes |
| --- | --- | --- |
| `_links` | object |  |
| `_links.next` | string |  |
| `results` | array of object |  |
| `results[].authorId` | string |  |
| `results[].createdAt` | string (date-time) |  |
| `results[].id` | string |  |
| `results[].parentId` | string |  |
| `results[].status` | string |  |
| `results[].title` | string |  |

Also retrieved by: "what's written in this workspace", "show me everything under this wiki area", "browse the docs in this team space".

### `confluence.search_pages_by_title`

Find Confluence pages across a site (or one space) by exact title. Use when the user names a page but you only have its title, not its id. For fuzzy keyword or full-text search use search_content instead.

Class `read` (reads only). No scopes beyond the connection's defaults. Calls `GET /ex/confluence/{{params.cloud_id}}/wiki/api/v2/pages`.

Arguments:

| Argument | Type | Required | Notes |
| --- | --- | --- | --- |
| `cloud_id` | string | **yes** | Atlassian Cloud id of the connected Confluence site. |
| `cursor` | string | no | Cursor from a previous response's _links.next, for the next page. |
| `limit` | integer | no | Page size, default 25. |
| `space_id` | string | no | Restrict the search to this space id. Omit to search the whole site. |
| `title` | string | **yes** | Exact page title to match. |

Result fields (the payload is trimmed to these before it reaches the model):

| Field | Type | Notes |
| --- | --- | --- |
| `_links` | object |  |
| `_links.next` | string |  |
| `results` | array of object |  |
| `results[].id` | string |  |
| `results[].spaceId` | string |  |
| `results[].status` | string |  |
| `results[].title` | string |  |

Also retrieved by: "find the doc called onboarding guide", "I know the name but not where it lives", "look up an article by its exact heading".

### `confluence.list_child_pages`

List the direct child pages nested under a Confluence page. Use when the user asks what sub-pages, nested pages, or children a page has. For every page in the whole space use list_pages_in_space.

Class `read` (reads only). No scopes beyond the connection's defaults. Calls `GET /ex/confluence/{{params.cloud_id}}/wiki/api/v2/pages/{{params.page_id}}/children`.

Arguments:

| Argument | Type | Required | Notes |
| --- | --- | --- | --- |
| `cloud_id` | string | **yes** | Atlassian Cloud id of the connected Confluence site. |
| `cursor` | string | no | Cursor from a previous response's _links.next, for the next page. |
| `limit` | integer | no | Page size, default 25. |
| `page_id` | string | **yes** | Confluence parent page id. |

Result fields (the payload is trimmed to these before it reaches the model):

| Field | Type | Notes |
| --- | --- | --- |
| `_links` | object |  |
| `_links.next` | string |  |
| `results` | array of object |  |
| `results[].id` | string |  |
| `results[].parentId` | string |  |
| `results[].status` | string |  |
| `results[].title` | string |  |

Also retrieved by: "what's nested under this doc", "show me the sub-sections of this article", "what write-ups branch off this one".

### `confluence.list_attachments`

List the files attached to a Confluence page: images, PDFs, spreadsheets, and other uploads. Use when the user asks what's attached to a page or wants to find an attachment by filename.

Class `read` (reads only). No scopes beyond the connection's defaults. Calls `GET /ex/confluence/{{params.cloud_id}}/wiki/api/v2/pages/{{params.page_id}}/attachments`.

Arguments:

| Argument | Type | Required | Notes |
| --- | --- | --- | --- |
| `cloud_id` | string | **yes** | Atlassian Cloud id of the connected Confluence site. |
| `cursor` | string | no | Cursor from a previous response's _links.next, for the next page. |
| `filename` | string | no | Filter to attachments matching this exact filename. |
| `limit` | integer | no | Page size, default 25. |
| `media_type` | string | no | Filter to attachments of this MIME type, e.g. "image/png". |
| `page_id` | string | **yes** | Confluence page id. |

Result fields (the payload is trimmed to these before it reaches the model):

| Field | Type | Notes |
| --- | --- | --- |
| `_links` | object |  |
| `_links.next` | string |  |
| `results` | array of object |  |
| `results[].downloadLink` | string |  |
| `results[].fileSize` | integer |  |
| `results[].id` | string |  |
| `results[].mediaType` | string |  |
| `results[].title` | string |  |
| `results[].webuiLink` | string |  |

Also retrieved by: "what files are stuck to this doc", "show me the uploads on this article", "what's been dropped onto this write-up".

### `confluence.get_attachment`

Get one Confluence attachment's detail by id: filename, media type, size, and download link. Use when the user names a specific attached file rather than browsing a page's whole attachment list.

Class `read` (reads only). No scopes beyond the connection's defaults. Calls `GET /ex/confluence/{{params.cloud_id}}/wiki/api/v2/attachments/{{params.attachment_id}}`.

Arguments:

| Argument | Type | Required | Notes |
| --- | --- | --- | --- |
| `attachment_id` | string | **yes** | Confluence attachment id, from list_attachments. |
| `cloud_id` | string | **yes** | Atlassian Cloud id of the connected Confluence site. |

Result fields (the payload is trimmed to these before it reaches the model):

| Field | Type | Notes |
| --- | --- | --- |
| `downloadLink` | string |  |
| `fileSize` | integer |  |
| `id` | string |  |
| `mediaType` | string |  |
| `title` | string |  |
| `version` | object |  |
| `version.number` | integer |  |
| `webuiLink` | string |  |

Also retrieved by: "grab the details on that uploaded file", "where can I download this attached image", "info on the pdf someone put on the page".

### `confluence.upload_attachment`

Attach a new file to a Confluence page. Use when the user wants to add, upload, or attach a file, image, or document to a page. Content is binary data, base64-encoded. To replace an existing attachment's content, use update_attachment_data instead.

Class `write` (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls `POST /ex/confluence/{{params.cloud_id}}/wiki/rest/api/content/{{params.page_id}}/child/attachment`.

Arguments:

| Argument | Type | Required | Notes |
| --- | --- | --- | --- |
| `cloud_id` | string | **yes** | Atlassian Cloud id of the connected Confluence site. |
| `comment` | string | no | Optional short comment describing the attachment. |
| `content` | string | **yes** | File content, base64-encoded. |
| `filename` | string | **yes** | File name including extension, e.g. "roadmap.pdf". |
| `page_id` | string | **yes** | Confluence page id to attach the file to. |

Result fields (the payload is trimmed to these before it reaches the model):

| Field | Type | Notes |
| --- | --- | --- |
| `results` | array of object |  |
| `results[].extensions` | object |  |
| `results[].extensions.fileSize` | integer |  |
| `results[].extensions.mediaType` | string |  |
| `results[].id` | string |  |
| `results[].title` | string |  |

Also retrieved by: "stick this file onto the doc", "drop an image into the article", "add this pdf to the write-up".

### `confluence.update_attachment_data`

Replace an existing Confluence attachment's binary content, keeping its filename and id. Use when the user wants to overwrite, update, or upload a new version of a file already attached to a page. Content is binary data, base64-encoded.

Class `write` (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls `POST /ex/confluence/{{params.cloud_id}}/wiki/rest/api/content/{{params.page_id}}/child/attachment/{{params.attachment_id}}/data`.

Arguments:

| Argument | Type | Required | Notes |
| --- | --- | --- | --- |
| `attachment_id` | string | **yes** | Confluence attachment id to replace, from list_attachments. |
| `cloud_id` | string | **yes** | Atlassian Cloud id of the connected Confluence site. |
| `comment` | string | no | Optional short comment describing the new version. |
| `content` | string | **yes** | New file content, base64-encoded. |
| `page_id` | string | **yes** | Confluence page id the attachment belongs to. |

Result fields (the payload is trimmed to these before it reaches the model):

| Field | Type | Notes |
| --- | --- | --- |
| `extensions` | object |  |
| `extensions.fileSize` | integer |  |
| `id` | string |  |
| `title` | string |  |

Also retrieved by: "swap in a newer version of this file", "replace what's attached with the latest copy", "overwrite that uploaded document".

### `confluence.delete_attachment`

Permanently delete a file attached to a Confluence page. Use when the user wants to delete, remove, or get rid of an attached file, not the whole page. Irreversible.

Class `destructive` (held by the mutation gate until the call's own arguments carry `"confirm": true`). No scopes beyond the connection's defaults. Calls `DELETE /ex/confluence/{{params.cloud_id}}/wiki/api/v2/attachments/{{params.attachment_id}}`.

Arguments:

| Argument | Type | Required | Notes |
| --- | --- | --- | --- |
| `attachment_id` | string | **yes** | Confluence attachment id to delete, from list_attachments. |
| `cloud_id` | string | **yes** | Atlassian Cloud id of the connected Confluence site. |
| `purge` | boolean | no | Skip the trash and permanently delete right away. Default false. |

Result fields (the payload is trimmed to these before it reaches the model):

| Field | Type | Notes |
| --- | --- | --- |
| `deleted` | boolean |  |

Also retrieved by: "remove this file from the doc", "get rid of the attached image", "I want that upload gone for good".

### `confluence.list_footer_comments`

List the footer comments on a Confluence page: the discussion thread at the bottom of the page, oldest first. Use when the user wants to read the general discussion on a page. For comments anchored to a specific highlighted bit of text, use list_inline_comments.

Class `read` (reads only). No scopes beyond the connection's defaults. Calls `GET /ex/confluence/{{params.cloud_id}}/wiki/api/v2/pages/{{params.page_id}}/footer-comments`.

Arguments:

| Argument | Type | Required | Notes |
| --- | --- | --- | --- |
| `cloud_id` | string | **yes** | Atlassian Cloud id of the connected Confluence site. |
| `cursor` | string | no | Cursor from a previous response's _links.next, for the next page. |
| `limit` | integer | no | Page size, default 25. |
| `page_id` | string | **yes** | Confluence page id. |

Result fields (the payload is trimmed to these before it reaches the model):

| Field | Type | Notes |
| --- | --- | --- |
| `_links` | object |  |
| `_links.next` | string |  |
| `results` | array of object |  |
| `results[].authorId` | string |  |
| `results[].body` | object |  |
| `results[].body.storage` | object |  |
| `results[].createdAt` | string (date-time) |  |
| `results[].id` | string |  |
| `results[].status` | string |  |

Also retrieved by: "what did people say at the bottom of this doc", "read the general discussion on this article", "show me the thread under this write-up".

### `confluence.create_footer_comment`

Post a footer comment on a Confluence page, or reply to one already there. Use when the user wants to comment, reply, or leave general feedback on a page. For a comment anchored to specific text, use create_inline_comment instead.

Class `write` (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls `POST /ex/confluence/{{params.cloud_id}}/wiki/api/v2/footer-comments`.

Arguments:

| Argument | Type | Required | Notes |
| --- | --- | --- | --- |
| `body_value` | string | **yes** | Comment text in Confluence storage format (XHTML-based markup). |
| `cloud_id` | string | **yes** | Atlassian Cloud id of the connected Confluence site. |
| `page_id` | string | **yes** | Confluence page id to comment on. |
| `parent_comment_id` | string | no | Comment id to reply to. Omit to start a new thread. |

Result fields (the payload is trimmed to these before it reaches the model):

| Field | Type | Notes |
| --- | --- | --- |
| `createdAt` | string (date-time) |  |
| `id` | string |  |
| `status` | string |  |

Also retrieved by: "leave a note at the bottom of this doc", "chime in on the discussion for this article", "reply to the thread on this write-up".

### `confluence.list_inline_comments`

List the inline comments on a Confluence page: comments anchored to a specific highlighted selection of text, oldest first. Use when the user wants feedback tied to a particular passage. For the page's general discussion thread, use list_footer_comments.

Class `read` (reads only). No scopes beyond the connection's defaults. Calls `GET /ex/confluence/{{params.cloud_id}}/wiki/api/v2/pages/{{params.page_id}}/inline-comments`.

Arguments:

| Argument | Type | Required | Notes |
| --- | --- | --- | --- |
| `cloud_id` | string | **yes** | Atlassian Cloud id of the connected Confluence site. |
| `cursor` | string | no | Cursor from a previous response's _links.next, for the next page. |
| `limit` | integer | no | Page size, default 25. |
| `page_id` | string | **yes** | Confluence page id. |

Result fields (the payload is trimmed to these before it reaches the model):

| Field | Type | Notes |
| --- | --- | --- |
| `_links` | object |  |
| `_links.next` | string |  |
| `results` | array of object |  |
| `results[].authorId` | string |  |
| `results[].body` | object |  |
| `results[].body.storage` | object |  |
| `results[].createdAt` | string (date-time) |  |
| `results[].id` | string |  |
| `results[].status` | string |  |

Also retrieved by: "what feedback is anchored to that paragraph", "who highlighted and commented on this passage", "show me the annotations on this text".

### `confluence.create_inline_comment`

Post a comment anchored to a specific highlighted selection of text on a Confluence page. Use when the user wants to comment on, flag, or react to one particular passage rather than the page as a whole. For a general comment use create_footer_comment instead.

Class `write` (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls `POST /ex/confluence/{{params.cloud_id}}/wiki/api/v2/inline-comments`.

Arguments:

| Argument | Type | Required | Notes |
| --- | --- | --- | --- |
| `body_value` | string | **yes** | Comment text in Confluence storage format (XHTML-based markup). |
| `cloud_id` | string | **yes** | Atlassian Cloud id of the connected Confluence site. |
| `page_id` | string | **yes** | Confluence page id to comment on. |
| `text_selection` | string | **yes** | The exact page text this comment is anchored to. |

Result fields (the payload is trimmed to these before it reaches the model):

| Field | Type | Notes |
| --- | --- | --- |
| `createdAt` | string (date-time) |  |
| `id` | string |  |
| `status` | string |  |

Also retrieved by: "flag this specific sentence with a note", "react to just this highlighted bit", "annotate that particular passage".

### `confluence.get_comment`

Get one Confluence comment's detail by id, footer or inline: its author, text, and version. Use when the user asks about one specific comment rather than a page's whole thread.

Class `read` (reads only). No scopes beyond the connection's defaults. Calls `GET /ex/confluence/{{params.cloud_id}}/wiki/api/v2/comments/{{params.comment_id}}`.

Arguments:

| Argument | Type | Required | Notes |
| --- | --- | --- | --- |
| `cloud_id` | string | **yes** | Atlassian Cloud id of the connected Confluence site. |
| `comment_id` | string | **yes** | Confluence comment id, from list_footer_comments or list_inline_comments. |

Result fields (the payload is trimmed to these before it reaches the model):

| Field | Type | Notes |
| --- | --- | --- |
| `authorId` | string |  |
| `body` | object |  |
| `body.storage` | object |  |
| `body.storage.value` | string |  |
| `createdAt` | string (date-time) |  |
| `id` | string |  |
| `pageId` | string |  |
| `status` | string |  |
| `version` | object |  |
| `version.number` | integer |  |

Also retrieved by: "pull up what exactly someone wrote there", "show me the details on that one remark", "what did that single reply actually say".

### `confluence.update_comment`

Edit the text of a Confluence comment already posted, footer or inline. Use when the user wants to fix, correct, or update something they or someone else wrote in a comment. Requires the comment's current version number, from get_comment, incremented by one.

Class `write` (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls `PUT /ex/confluence/{{params.cloud_id}}/wiki/api/v2/comments/{{params.comment_id}}`.

Arguments:

| Argument | Type | Required | Notes |
| --- | --- | --- | --- |
| `body_value` | string | **yes** | Replacement comment text in Confluence storage format. |
| `cloud_id` | string | **yes** | Atlassian Cloud id of the connected Confluence site. |
| `comment_id` | string | **yes** | Confluence comment id to edit. |
| `version_number` | integer | **yes** | New version number. Must be exactly one greater than the comment's current version.number, from get_comment. |

Result fields (the payload is trimmed to these before it reaches the model):

| Field | Type | Notes |
| --- | --- | --- |
| `id` | string |  |
| `version` | object |  |
| `version.number` | integer |  |

Also retrieved by: "fix a typo in what I wrote earlier", "correct my earlier remark", "edit that note I left".

### `confluence.delete_comment`

Remove a comment from a Confluence page, footer or inline. Use when the user wants to delete or remove a comment, not the whole page. For deleting the page itself use delete_page.

Class `write` (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls `DELETE /ex/confluence/{{params.cloud_id}}/wiki/api/v2/comments/{{params.comment_id}}`.

Arguments:

| Argument | Type | Required | Notes |
| --- | --- | --- | --- |
| `cloud_id` | string | **yes** | Atlassian Cloud id of the connected Confluence site. |
| `comment_id` | string | **yes** | Confluence comment id to delete. |

Result fields (the payload is trimmed to these before it reaches the model):

| Field | Type | Notes |
| --- | --- | --- |
| `deleted` | boolean |  |

Also retrieved by: "take down that remark", "erase what I said there", "pull that note off the doc".

### `confluence.list_page_labels`

List the labels (tags) applied to a Confluence page. Use when the user asks what a page is tagged with. To add or remove a label use add_label or remove_label.

Class `read` (reads only). No scopes beyond the connection's defaults. Calls `GET /ex/confluence/{{params.cloud_id}}/wiki/api/v2/pages/{{params.page_id}}/labels`.

Arguments:

| Argument | Type | Required | Notes |
| --- | --- | --- | --- |
| `cloud_id` | string | **yes** | Atlassian Cloud id of the connected Confluence site. |
| `cursor` | string | no | Cursor from a previous response's _links.next, for the next page. |
| `limit` | integer | no | Page size, default 25. |
| `page_id` | string | **yes** | Confluence page id. |
| `prefix` | string, one of global, my, team | no | Restrict to labels of this namespace. Omit for all. |

Result fields (the payload is trimmed to these before it reaches the model):

| Field | Type | Notes |
| --- | --- | --- |
| `_links` | object |  |
| `_links.next` | string |  |
| `results` | array of object |  |
| `results[].id` | string |  |
| `results[].name` | string |  |
| `results[].prefix` | string |  |

Also retrieved by: "what tags are on this doc", "how is this article categorized", "show me the topic tags for this write-up".

### `confluence.add_label`

Tag a Confluence page with a label. Use when the user wants to tag, label, or categorize a page. To see what's already applied use list_page_labels; to remove one use remove_label.

Class `write` (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls `POST /ex/confluence/{{params.cloud_id}}/wiki/api/v2/pages/{{params.page_id}}/labels`.

Arguments:

| Argument | Type | Required | Notes |
| --- | --- | --- | --- |
| `cloud_id` | string | **yes** | Atlassian Cloud id of the connected Confluence site. |
| `name` | string | **yes** | Label text, e.g. "roadmap". |
| `page_id` | string | **yes** | Confluence page id to tag. |
| `prefix` | string, one of global, my, team | no | Label namespace. Defaults to global. |

Result fields (the payload is trimmed to these before it reaches the model):

| Field | Type | Notes |
| --- | --- | --- |
| `id` | string |  |
| `name` | string |  |
| `prefix` | string |  |

Also retrieved by: "tag this doc as a roadmap item", "mark this article under a category", "slap a label on this write-up".

### `confluence.remove_label`

Remove a label from a Confluence page. Use when the user wants to untag, unlabel, or remove a tag from a page, not delete the page itself.

Class `write` (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls `DELETE /ex/confluence/{{params.cloud_id}}/wiki/api/v2/pages/{{params.page_id}}/labels/{{params.label_id}}`.

Arguments:

| Argument | Type | Required | Notes |
| --- | --- | --- | --- |
| `cloud_id` | string | **yes** | Atlassian Cloud id of the connected Confluence site. |
| `label_id` | string | **yes** | Label id to remove, from list_page_labels. |
| `page_id` | string | **yes** | Confluence page id the label is on. |

Result fields (the payload is trimmed to these before it reaches the model):

| Field | Type | Notes |
| --- | --- | --- |
| `removed` | boolean |  |

Also retrieved by: "untag this doc", "take that category off the article", "strip the tag from this write-up".

### `confluence.search_content`

Search across an entire Confluence site using CQL (Confluence Query Language), e.g. 'space = "ENG" AND type = page AND text ~ "roadmap"'. Use for any fuzzy, keyword, or cross-space search. For an exact known title use search_pages_by_title instead.

Class `read` (reads only). No scopes beyond the connection's defaults. Calls `GET /ex/confluence/{{params.cloud_id}}/wiki/rest/api/search`.

Arguments:

| Argument | Type | Required | Notes |
| --- | --- | --- | --- |
| `cloud_id` | string | **yes** | Atlassian Cloud id of the connected Confluence site. |
| `cql` | string | **yes** | CQL query, e.g. 'space = "ENG" AND type = page AND text ~ "roadmap" ORDER BY lastmodified DESC'. |
| `limit` | integer | no | Page size, default 25. |
| `start` | integer | no | Offset into the result list, default 0. |

Result fields (the payload is trimmed to these before it reaches the model):

| Field | Type | Notes |
| --- | --- | --- |
| `limit` | integer |  |
| `results` | array of object |  |
| `results[].content` | object |  |
| `results[].content.id` | string |  |
| `results[].content.space` | object |  |
| `results[].content.title` | string |  |
| `results[].content.type` | string |  |
| `results[].excerpt` | string |  |
| `results[].lastModified` | string (date-time) |  |
| `results[].url` | string |  |
| `start` | integer |  |
| `totalSize` | integer |  |

Also retrieved by: "hunt across the whole wiki for mentions of pricing", "find anything anywhere that talks about the launch", "dig through every space for this keyword".

### `confluence.list_page_versions`

List a Confluence page's version history, newest first: who changed it, when, and their edit message. Use when the user asks about a page's history, past edits, or revisions. For one specific past version's content use get_page_version.

Class `read` (reads only). No scopes beyond the connection's defaults. Calls `GET /ex/confluence/{{params.cloud_id}}/wiki/api/v2/pages/{{params.page_id}}/versions`.

Arguments:

| Argument | Type | Required | Notes |
| --- | --- | --- | --- |
| `cloud_id` | string | **yes** | Atlassian Cloud id of the connected Confluence site. |
| `cursor` | string | no | Cursor from a previous response's _links.next, for the next page. |
| `limit` | integer | no | Page size, default 25. |
| `page_id` | string | **yes** | Confluence page id. |

Result fields (the payload is trimmed to these before it reaches the model):

| Field | Type | Notes |
| --- | --- | --- |
| `_links` | object |  |
| `_links.next` | string |  |
| `results` | array of object |  |
| `results[].authorId` | string |  |
| `results[].createdAt` | string (date-time) |  |
| `results[].message` | string |  |
| `results[].number` | integer |  |

Also retrieved by: "show me the edit history of this doc", "who changed this article and when", "what past revisions exist for this write-up".

### `confluence.get_page_version`

Get one specific past version of a Confluence page by version number: who made that edit, when, and their message. Use when the user asks about an older revision by number rather than the current content (use get_page for that).

Class `read` (reads only). No scopes beyond the connection's defaults. Calls `GET /ex/confluence/{{params.cloud_id}}/wiki/api/v2/pages/{{params.page_id}}/versions/{{params.version_number}}`.

Arguments:

| Argument | Type | Required | Notes |
| --- | --- | --- | --- |
| `cloud_id` | string | **yes** | Atlassian Cloud id of the connected Confluence site. |
| `page_id` | string | **yes** | Confluence page id. |
| `version_number` | integer | **yes** | Version number to look up, from list_page_versions. |

Result fields (the payload is trimmed to these before it reaches the model):

| Field | Type | Notes |
| --- | --- | --- |
| `authorId` | string |  |
| `createdAt` | string (date-time) |  |
| `message` | string |  |
| `number` | integer |  |

Also retrieved by: "what did this doc look like three edits ago", "pull up an older revision by number", "show me a specific past copy of this article".

### `confluence.get_current_user`

Get the profile of the connected Confluence account itself: accountId, display name, and email. Use to answer "who am I" on Confluence, as opposed to Jira's separate get_current_user.

Class `read` (reads only). No scopes beyond the connection's defaults. Calls `GET /ex/confluence/{{params.cloud_id}}/wiki/rest/api/user/current`.

Arguments:

| Argument | Type | Required | Notes |
| --- | --- | --- | --- |
| `cloud_id` | string | **yes** | Atlassian Cloud id of the connected Confluence site. |

Result fields (the payload is trimmed to these before it reaches the model):

| Field | Type | Notes |
| --- | --- | --- |
| `accountId` | string |  |
| `accountType` | string |  |
| `displayName` | string |  |
| `email` | string |  |

Also retrieved by: "who am I signed in as here", "what's my confluence identity", "show my own profile on this site".
