confluence-cloud-mcp
This server is a local stdio MCP server that lets Claude Desktop read and write Confluence Cloud content through a set of high-level and primitive REST API tools.
Search Confluence with CQL (
confluence_search) or natural-query modes (confluence_search_and_fetch)List and retrieve pages, spaces, folders, comments, attachments, versions, and content history
Fetch full page context, ancestor chains, content trees, and space overviews with hierarchical, budget-aware rendering
Create, update, and delete pages; update titles; create and update footer and inline comments
Upload attachments and run allowlisted raw API requests for unsupported operations
Control safety via opt-in environment variables for destructive operations, raw writes, and local file uploads
Handle pagination, retries, version history exclusion, and response size limits automatically
Provides tools to interact with Confluence Cloud REST API v2 and v1, enabling search, retrieval of pages and spaces, hierarchy navigation, attachments, comments, version history, and page/folder/comment creation and updates.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@confluence-cloud-mcpsearch for pages about API authentication and show the top result"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Confluence Cloud MCP
Confluence Cloud REST API v1 and v2を、Claude Desktopから使えるローカルstdio MCPサーバーとして提供します。検索、ページ本文、Space、階層、添付、コメント、版履歴、主要な更新操作を、LLMが作業の流れに合わせて選べる粒度のToolにまとめています。
認証情報はローカル環境変数、またはClaude Desktop Extensionのsecure configurationから受け取ります。サーバーはstdoutをMCP protocol専用に使うため、診断ログはstderrへ出力します。
Requirements
Node.js 20 or newer
Confluence Cloud site
Atlassian account email
Atlassian API token
Claude Desktop (stdio configuration or
.mcpbExtension)
API tokenはAtlassianのAPI tokens pageで作成します。Confluence CloudのBasic Authは、メールアドレスとAPI tokenを使う方式です。Tokenには必要最小限の権限を持つAtlassianアカウントを使ってください。
Related MCP server: Confluence MCP Server
Quick start with Node
git clone https://github.com/yuu-biz/confluence-cloud-mcp.git
cd confluence-cloud-mcp
npm install
npm run build:bundleCONFLUENCE_BASE_URL、CONFLUENCE_EMAIL、CONFLUENCE_API_TOKENを設定してサーバーを起動します。PowerShellでは次のように設定できます。
$env:CONFLUENCE_BASE_URL = "https://example.atlassian.net"
$env:CONFLUENCE_EMAIL = "user@example.com"
$env:CONFLUENCE_API_TOKEN = ""
node dist/index.js.env.exampleをコピーして使う場合も、.envはGitへ追加しないでください。このプロジェクトはdotenvを読み込まないため、Claude Desktopまたは起動環境から環境変数を渡します。
Claude Desktop stdio configuration
Claude Desktopの設定ファイルに、次のエントリを追加します。argsはclone先の絶対パスへ変更し、空のCONFLUENCE_API_TOKENにはローカル設定だけで実際のtokenを入力してください。公開リポジトリの設定例にはtokenを記載しません。
{
"mcpServers": {
"confluence-cloud": {
"command": "node",
"args": ["C:\\path\\to\\confluence-cloud-mcp\\dist\\index.js"],
"env": {
"CONFLUENCE_BASE_URL": "https://example.atlassian.net",
"CONFLUENCE_EMAIL": "user@example.com",
"CONFLUENCE_API_TOKEN": "",
"CONFLUENCE_ALLOW_DESTRUCTIVE_OPERATIONS": "false",
"CONFLUENCE_ALLOW_RAW_WRITE": "false",
"CONFLUENCE_ALLOW_LOCAL_FILE_UPLOAD": "false"
}
}
}
}Claude Desktopを再起動してから、confluence_searchでCQL検索を試してください。
Claude Desktop Extension (.mcpb)
Extensionは、Node.jsを別途用意せずClaude DesktopへローカルMCPサーバーを導入するためのパッケージです。
npm run build:mcpb生成されたdist/confluence-cloud-mcp.mcpbをClaude Desktopへドラッグするか、Extensionのインストール画面で選択します。設定画面で次を入力します。
Confluence site URL:
https://example.atlassian.netAtlassian email:
user@example.comAtlassian API token: Extensionのsensitive fieldへ入力
Destructive operations: 通常は無効
Raw write requests: 通常は無効
Local file upload: 通常は無効
Extension manifestはMCPB manifest v0.4を使い、API tokenをsensitive: trueのuser configurationから環境変数として渡します。MCPBにはOS-level sandboxがないため、write系の安全制御はサーバー側でも行っています。
High-level Toolを通常優先してください。サーバー内部でpagination、階層再構成、複数API呼び出しを処理するため、Claude DesktopからのTool Callを減らせます。Primitive Toolは、1リソース・1階層だけが必要な場合、cursorを自分で制御したい場合、High-level Toolが公開していないフィールドを使いたい場合に使います。
High-level Tool | 集約する処理 |
confluence_get_content_tree | v2 descendantsのcursor pagination、root取得、階層再構成、budget内でのrender |
confluence_search_and_fetch | query→CQL変換、v1 search、上位ページのv2本文取得 |
confluence_get_page_context | ページ本文・current versionと、指定したancestors / attachments / comments |
confluence_get_space_overview | space key解決、Space metadata、homepage/root以下のcontent tree |
confluence_get_comment_thread | コメント本体とv2 child commentsのreply tree |
Content treeのoutput mode
confluence_get_content_tree(およびconfluence_get_space_overview)は、node objectの羅列ではなくインデント済みテキストを返します。1行 = 1 node、インデント = 階層、末尾の/ = folder、[id]は後続呼び出し用のcontent idです。parentIdやchildPositionは階層から復元できるためcompact outputには含めません。
compact(default): output budgetに収まる最も深い表示を返します。収まらない場合はbranchを切り捨てる前にdepthを下げるため、branchは一覧から消えません。outline: 直下の子だけを子数付きで返す「地図」。内部ではdepth 2のdescendantsを1回読むだけで、branchごとのAPI呼び出しは発生しません。巨大・未知の階層はまずこれを取り、必要なbranchだけcompactで展開します。detailed: 従来どおりのnode object。parentId/childPosition/statusが必要なときだけ使います。
Fetched / rendered / omitted と truncation
statusはMCPが取得した量とClaudeへ返した量を分けて報告します。
fetchedItems/renderedItems/omittedItems: 取得数、実際にrenderした数、省略された数truncatedとtruncationReasons:output_budget(renderで省略)、max_items、pagination_limit、api_erroromittedBranches: 省略したbranchのid/title/type/fetchedDescendants。関係のありそうなbranchだけroot_idに指定して追加取得できますoutputBudget:requestedChars(指定値)、effectiveChars(実際に使われた値)、hardCapChars(サーバー上限50,000)
max_charsは1,000〜50,000の範囲にクランプされます。指定値と実効値が異なる場合もstatus.outputBudgetで確認できます。
truncationReasonsにoutput_budgetが入っている場合、取得済み(fetchedItems)のうちrenderできなかった分なので、max_charsを上げるだけで追加のAPI呼び出しなしに表示を増やせます。compact renderは残り予算で折り畳んだbranchを可能な限り展開するため、予算を上げた分はそのまま表示ノード数に反映されます。
版履歴(Versions of ...)の除外
Confluenceは保持された版を通常の子コンテンツ(Versions of ... フォルダとその配下の版ページ)として持つため、無指定のdescendants取得では版履歴だけでitem budgetを使い切り、兄弟branchに到達できないことがあります。
confluence_get_content_tree と confluence_get_space_overview は既定でこれらを除外します(include_version_history: true で含められます)。除外はpagination中に行われるため、除外されたnodeは max_items を消費しません。除外量は status.excludedVersionHistory(containers / items)で報告するので、黙って消えることはありません。
Primitiveの confluence_list_descendants はAPIの応答をそのまま返す既定(include_version_history: true)のままで、false を指定するとそのページ分だけ同じ規則で除外します(前ページで開いたcontainerは判定できません)。
続きの取得(cursor)
status.nextCursorが返った場合は、同じroot_id / depth / output_modeのままcursorに渡すと続きから取得できます(confluence_get_content_tree、confluence_get_space_overview)。継続ページでは親が前ページに含まれるnodeが出るため、それらはrootの直下に並べ、件数をstatus.unresolvedParentsで報告します(エラー扱いにはしません)。status.cursorUsedには実際に使ったcursorが入ります。
Search mode
confluence_search_and_fetchはCQLを書かずにqueryを渡せます。search_modeはauto(default)で、title = "..."(完全一致)→ title ~ "...*"(前方一致)→ text ~ "..."(全文)の順に試し、最初にhitした時点で止まります。full-text検索はtokenizeされるため、識別子や型番のように正確なtitleが分かっている場合はこの順序が有効です。exact_title / title_prefix / full_textで固定でき、cqlは手書きクエリ用のescape hatchです。実際に使われたCQLはstrategy.cqlUsedに入ります。
Tool overview
Tool | Purpose |
| CQLでv1検索。IDが不明なときの入口 |
| v2でページ一覧、Space・タイトル・status・cursor検索 |
| ページ本文、labels、properties、operations、likes、versions |
| v1の汎用content取得とexpand |
| Spaceの一覧・詳細 |
| Folderの詳細取得・作成 |
| PageまたはFolderの直接の子 |
| PageまたはFolder以下の子孫とdepth |
| PageまたはFolderの親階層 |
| 添付ファイルの一覧・メタデータ |
| footer / inline commentの一覧・詳細 |
| v2のページ版履歴 |
| v1の汎用content history |
| Page作成(published / draft、storage / ADF) |
| explicit version number付きPage更新 |
| titleだけの更新 |
| footer commentの作成・更新 |
| inline commentの作成・更新・resolve |
| opt-inでローカルファイルをPageへアップロード |
| opt-inでtrash / purge |
| allowlisted pathだけの未ラップAPIアクセス |
典型的な流れは、Space全体の把握には confluence_get_space_overview、ページ検索と本文確認には confluence_search_and_fetch、ページ理解には confluence_get_page_context、階層取得には confluence_get_content_tree(大きい場合はまず output_mode=outline)を使い、1階層だけ必要なときや cursor を自分で制御したいときだけ confluence_list_children などのPrimitiveを使う形です。
Pagination and response size
Primitiveのv2一覧系APIはConfluenceのcursor paginationに合わせ、レスポンスの next_cursor を返します。High-level Toolは、指定budgetに達するまでcursorをMCP内部で消費します。v1 CQL searchは start と next_start を使い、confluence_search_and_fetch は指定した fetch_top だけを本文取得します。 High-level Toolのcursor消費には内部上限(1呼び出しあたり最大20ページ)があり、打ち切った場合は status.truncationReasons に pagination_limit が入ります。
Tool responseはデフォルトで12,000文字に抑え、max_charsで最大50,000文字まで調整できます。ページ本文など大きい値は縮約されるため、必要な本文representationを指定して個別取得してください。
API clientは429と一時的な5xxを指数バックオフとRetry-Afterに従って最大3回再試行します。401、403、404、権限エラーは、statusと安全な説明をTool errorとして返します。Credentials、Authorization header、環境変数値はログやTool responseへ出しません。
Safety controls
デフォルトでは次が無効です。
CONFLUENCE_ALLOW_DESTRUCTIVE_OPERATIONS=false: page delete、purge、raw DELETEを無効化CONFLUENCE_ALLOW_RAW_WRITE=false: raw POST / PUT / PATCH / DELETEを無効化CONFLUENCE_ALLOW_LOCAL_FILE_UPLOAD=false: ローカルファイル添付を無効化
有効化しても、破壊的操作・raw write・file uploadはTool inputのconfirm: trueが必要です。raw toolは完全URL、別ホスト、..、query string入りのpathを拒否し、/wiki/api/v2/または/wiki/rest/api/のrelative pathだけを受け付けます。
標準ではCONFLUENCE_BASE_URLをhttps://*.atlassian.netに制限します。管理されたcustom domainを使う場合だけ、CONFLUENCE_ALLOW_CUSTOM_DOMAIN=trueを明示してください。
Development
npm install
npm run check
npm test
npm run build
npm run build:bundle実Confluence credentialを使わないunit testで、Basic Auth、query encoding、rate-limit retry、API error、pagination、raw path safety、response size boundを検証します。stdioの手動確認には、ビルド後にMCP Inspectorを使えます。
npx @modelcontextprotocol/inspector node dist/index.jsDeliberate limitations
OAuth、Atlassian Connect、Forgeの認証は実装していません。ローカル用途のemail + API token Basic Authに限定しています。
named toolはPage / Folder階層を中心にし、全REST endpointを1:1では公開していません。未ラップAPIは安全なraw toolで補完します。
添付のダウンロード内容をMCP responseへ埋め込む機能はありません。現状は一覧・メタデータ・opt-in uploadです。
Blog post、whiteboard、databaseなどPage以外のcontentは、必要に応じてraw toolまたはv1
confluence_get_contentを使います。ページ更新の競合は自動マージせず、呼び出し側が最新version numberを指定します。
Space permission、admin key、永久削除など高権限操作はnamed toolとして追加していません。権限が必要なAPIはraw toolの追加実装と同じpath/method allowlistを通してください。
Official references
License
MIT. See LICENSE.
Available Tools
33 toolsconfluence_create_commentC
Create a footer comment on a page or as a reply to an existing comment.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| page_id | No | ||
| max_chars | No | ||
| representation | No | storage | |
| parent_comment_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states the action itself and does not explain whether page_id or parent_comment_id is required, what the API returns, whether content is truncated by max_chars, or what permissions are needed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single clear sentence with no wasted words. It is front-loaded with the primary action, though it could have used its brevity to include a bit more routing or parameter context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a create tool with five parameters, no output schema, and no annotations, this description is too thin. It does not clarify the relationship between page_id and parent_comment_id, the meaning of 'footer comment,' or the effect of representation and max_chars, leaving important invocation details unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for the five parameters. It vaguely implies page_id and parent_comment_id through the page/reply wording, but it says nothing about body, max_chars, or representation, leaving the agent without useful parameter-level guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates a comment and identifies two target modes: a footer comment on a page or a reply to an existing comment. The word 'footer' helps distinguish it from the sibling create_inline_comment, though it does not explicitly name that alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the main use case by describing where comments are created, but it gives no explicit guidance on when not to use it or which sibling tool to prefer for inline comments. The page-vs-reply distinction is useful context but not a full routing guide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
confluence_create_folderB
Create a folder in a Confluence space, optionally under a parent page or folder.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | ||
| space_id | Yes | ||
| max_chars | No | ||
| parent_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It only mentions optional placement under a parent, but does not describe side effects, error behavior, permissions, or whether the folder is created idempotently. Agents cannot anticipate consequences of calling this tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no filler. Every word earns its place, and the core action and optional placement are stated efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a create operation with 4 parameters, no output schema, and no annotations, the description is too thin. It does not explain 'max_chars', required space context, or outcomes, leaving an agent without enough information to invoke the tool correctly and safely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It clarifies that 'parent_id' refers to a parent page or folder, but leaves 'max_chars' and the exact semantics of 'space_id' and 'title' unexplained. The description adds minimal meaning beyond the raw parameter names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('create') on a specific resource ('folder') within a Confluence space, and mentions the optional parent placement. The resource 'folder' clearly distinguishes it from sibling tools like 'confluence_create_page'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives such as creating a page or using raw_request. There are no prerequisites, exclusions, or decision criteria provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
confluence_create_inline_commentC
Create an inline comment on a page. inline_comment_properties should contain the selection coordinates required by the Confluence v2 API.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| page_id | No | ||
| max_chars | No | ||
| representation | No | storage | |
| parent_comment_id | No | ||
| inline_comment_properties | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It does disclose one important technical requirement — that inline_comment_properties must contain Confluence v2 selection coordinates — but it omits mutation side effects, permission needs, failure modes, and how the API identifies the target page. This is minimal transparency for a mutating tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded: the core action comes first, followed by the most API-specific caveat. Both sentences earn their place, though the brevity leaves substantive gaps better addressed by other dimensions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with six parameters, no annotations, no output schema, and 0% schema description coverage, the description is incomplete. It fails to clarify required body semantics, disambiguate page_id from parent_conditional page_id, explain max_chars behavior, or describe when representation matters. An agent would likely need external API knowledge to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, but it explains only inline_comment_properties (selection coordinates). The other five parameters — body, page_id, max_chars, representation, and parent_comment_id — receive no semantic explanation, and the nested object remains opaque.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action and resource: 'Create an inline comment on a page.' This distinguishes it from non-comment tools and conveys the inline nature of the operation. However, it does not explicitly contrast with the near-named sibling confluence_create_comment or the update variant, so it stops short of full differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives like confluence_create_comment, confluence_update_inline_comment, or confluence_list_comments. The only usage-related hint is the implementation note about inline_comment_properties, but no use-case context or exclusion criteria is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
confluence_create_pageB
Create a published or draft Confluence page in a space, optionally under a parent page. Body is Confluence storage or Atlas document format.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| title | Yes | ||
| status | No | current | |
| subtype | No | ||
| space_id | Yes | ||
| max_chars | No | ||
| parent_id | No | ||
| representation | No | storage |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It adds useful context around draft/current status, parent placement, and body formats, but it does not mention permissions, side effects, response behavior, or failure modes for a mutating create operation. That is a meaningful gap for a creation tool with no annotation safety hints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loads the actionable verb and resource, and every phrase carries meaning. It is compact, readable, and avoids redundant restatement of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 8 parameters, no output schema, and no annotations, two sentences are not enough for a confident call. Missing information includes the return value, permission requirements, max_chars behavior, subtype semantics, and how the draft/current workflow operates. An agent would need to guess on several fields.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and there are 8 parameters, so the description must compensate. It does clarify status, parent_id, body, and representation indirectly, but it leaves max_chars and subtype unexplained and provides no format details for the body. This only partially compensates for the low-coverage schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb, 'Create,' and a clear resource: a Confluence page in a space, with published/draft status, optional parent, and accepted body formats. This is distinguishable from sibling tools like confluence_update_page, confluence_delete_page, or confluence_create_folder without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The word 'Create' implies this is for new pages rather than updates, but the description does not explicitly say when to use it over alternatives such as confluence_update_page or confluence_raw_request. It mentions published/draft status but gives no guidance on when to choose a draft versus publishing, and it does not name alternatives or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
confluence_delete_pageA
Move a page to the Confluence trash, or permanently purge a trashed page. Disabled unless CONFLUENCE_ALLOW_DESTRUCTIVE_OPERATIONS=true and confirm=true.
| Name | Required | Description | Default |
|---|---|---|---|
| draft | No | ||
| purge | No | ||
| confirm | Yes | ||
| page_id | Yes | ||
| max_chars | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the full burden of disclosing destructive behavior. It clearly states both the reversible action ('Move a page to the Confluence trash') and the irreversible action ('permanently purge'), plus the environment-variable and confirm gates. It does not detail side effects on child pages or attachments, but the core destructive impact is explicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences deliver the core behavior and the operational guard with no filler. The most important information, the destructive action and the disable condition, is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the core behavior and the key restriction, which is the most important context for a destructive tool. However, with five parameters and no output schema, the unhelpful draft and max_chars parameters remain unexplained, leaving an agent uncertain about how to use the full input schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, but it only directly references the confirm gate and the purge concept. page_id, draft, and max_chars are left completely unexplained, and no parameter names or value meanings are given beyond the schema's structural constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ('Move a page to the Confluence trash, or permanently purge a trashed page') and clearly identifies the tool's two distinct modes. It is immediately distinguishable from the sibling tools, none of which offer deletion semantics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit preconditions for use: the tool is 'Disabled unless CONFLUENCE_ALLOW_DESTRUCTIVE_OPERATIONS=true and confirm=true.' This tells the agent when invocation will be rejected. It does not state when to prefer an alternative over deletion, but there is no sibling delete tool, so the guidance is adequate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
confluence_get_ancestorsA
Primitive: get the ancestor chain for a page or folder. When the surrounding page context is also needed, prefer confluence_get_page_context.
| Name | Required | Description | Default |
|---|---|---|---|
| max_chars | No | ||
| content_id | Yes | ||
| content_type | No | page |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the burden. 'Primitive: get the ancestor chain' signals a non-mutating read operation and scopes it to page/folder. However, it does not disclose ordering, whether the current node is included, auth requirements, or behavior tied to max_chars.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short, front-loaded sentences with no filler. The purpose statement comes before the routing advice, and every word earns its place; slightly more parameter detail could be added without hurting conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no output schema and no annotations, the description omits essential invocation context: what max_chars controls, the content_type default, and the shape/order of the returned ancestor chain. It is adequate for choosing between tools but not fully sufficient for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description only indirectly maps 'page or folder' to content_type. It never explains content_id semantics or the purpose/limits of max_chars, so the agent is left to infer key parameter behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb 'get' and resource 'ancestor chain for a page or folder'. Explicitly differentiates from sibling confluence_get_page_context by noting when it is not the right tool. This is unambiguous and distinguishes it among many siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Directly provides a selection rule: 'When the surrounding page context is also needed, prefer confluence_get_page_context.' This tells the agent when to use this tool and when to choose the alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
confluence_get_attachmentB
Get attachment metadata and optional version, labels, properties, operations, or collaborators.
| Name | Required | Description | Default |
|---|---|---|---|
| version | No | ||
| max_chars | No | ||
| attachment_id | Yes | ||
| include_labels | No | ||
| include_versions | No | ||
| include_operations | No | ||
| include_properties | No | ||
| include_collaborators | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden. It discloses that the tool returns metadata and can optionally include version, labels, properties, operations, or collaborators, but it does not describe the return format, default behaviors, or whether any side effects occur.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no filler. It is slightly awkward grammatically, but it earns its place by summarizing the core operation and optional inclusions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 8 parameters, no annotations, no output schema, and 0% schema description coverage, this one-liner is inadequate. It leaves key parameters like max_chars and version unexplained and gives no guidance for choosing this over sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It only repeats the parameter names without explaining semantics; notably, max_chars is completely unexplained and version is ambiguous.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'attachment metadata', and enumerates the optional inclusions. It is not as explicit as naming sibling alternatives, but the single-attachment target is clear from the tool name and schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended use is implied: call this when you need metadata for a specific attachment. However, it does not explicitly distinguish this from sibling tools like confluence_list_attachments or confluence_get_content, so an agent must infer the routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
confluence_get_commentA
Primitive: get one footer or inline comment by ID. For the comment plus its bounded reply tree, prefer confluence_get_comment_thread.
| Name | Required | Description | Default |
|---|---|---|---|
| version | No | ||
| max_chars | No | ||
| comment_id | Yes | ||
| body_format | No | storage | |
| comment_type | No | footer | |
| include_versions | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It usefully clarifies that this is a primitive single-comment fetch that does not include the reply tree, but it does not disclose response shape, error behavior, or auth/versioning caveats.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no wasted words. The primary scope is front-loaded, and the sibling alternative is stated immediately after.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple getter with 6 parameters and no output schema, the description gives enough to select the tool and know its basic scope, but it is not fully complete: parameter semantics and return behavior are left to inference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description only adds meaning for comment_id and the footer/inline distinction. It leaves version, max_chars, body_format, and include_versions unexplained, so it does not sufficiently compensate for the schema's lack of descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: get one footer or inline comment by ID. It also distinguishes itself from the thread-fetching sibling by name, so an agent can tell exactly what this primitive does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs when to prefer the alternative: for the comment plus its bounded reply tree, use confluence_get_comment_thread. This gives clear selection guidance for the primary use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
confluence_get_comment_threadA
HIGH-LEVEL: Get one footer or inline comment plus its reply tree in one MCP call. Prefer this over repeatedly calling confluence_get_comment and child-comment endpoints. max_depth and max_items bound recursive traversal; partial/truncated status is explicit.
| Name | Required | Description | Default |
|---|---|---|---|
| max_chars | No | ||
| max_depth | No | ||
| max_items | No | ||
| comment_id | Yes | ||
| body_format | No | storage | |
| comment_type | No | footer |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full responsibility for behavioral disclosure. It explains recursive traversal, bounding via max_depth and max_items, and explicitly mentions partial/truncated status in the response. It stops short of describing error behavior or full return structure, but the core behavior is transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with high signal-to-noise. The core action is front-loaded, the alternative usage is named, and the key traversal constraints are stated without repeating schema details. No fluff or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a six-parameter tool with no annotations and no output schema, the description covers purpose, usage, recursion bounds, and truncation status, but it does not explain the expected response shape or the semantics of max_chars and body_format. This leaves an agent with some uncertainty about request formatting and output parsing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It meaningfully explains max_depth and max_items ('bound recursive traversal') and the 'footer or inline' wording maps to comment_type, but max_chars and body_format semantics are left entirely to the schema. This is a noticeable gap with six parameters present.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('get') and resource ('one footer or inline comment plus its reply tree'), which clearly differentiates it from single-comment and list-comment siblings. The phrase 'in one MCP call' further clarifies the intended scope and distinguishes it from tools requiring multiple calls.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs the agent to prefer this tool over repeatedly calling confluence_get_comment and child-comment endpoints, giving clear guidance on when to choose it. However, it does not mention conditions where a flatter list or single-comment tool would be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
confluence_get_contentA
Get a generic Confluence content item through REST API v1 when v2 does not expose the needed content shape or expansion.
| Name | Required | Description | Default |
|---|---|---|---|
| expand | No | ||
| max_chars | No | ||
| content_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It does disclose that the tool uses REST API v1 and that it serves as a fallback for content shapes/expansions not available in v2, which is useful behavioral context. However, it does not mention read-only guarantees, error behaviors, response format, or any rate limits, leaving notable gaps for a no-annotation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the core action ('Get a generic Confluence content item') and then adds the conditional context. There is no redundant filler or irrelevant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 3 parameters with 0% schema coverage, no output schema, and no annotations, the description is incomplete. It does not explain parameter semantics, return shape, or how to distinguish this from the many sibling get tools beyond the v1 fallback condition. An agent would still need to consult external documentation to use it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for all three parameters. It only vaguely references 'expansion' (relating to the expand parameter) but provides no meaning for content_id or max_chars. This is insufficient for an agent to understand what values to pass or their purpose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('get'), a resource ('generic Confluence content item'), and a clear context ('through REST API v1 when v2 does not expose the needed content shape or expansion'). This differentiates it from sibling tools like get_page or get_comment, which target specific content types via v2.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear condition for when to use this tool ('when v2 does not expose the needed content shape or expansion'), giving agents a decision rule. However, it does not explicitly name the alternative tools (e.g., confluence_get_page) or state when NOT to use it beyond that condition, so it stops short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
confluence_get_content_historyB
Get v1 history details for generic Confluence content, useful when the v2 page model does not expose the required history shape.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| start | No | ||
| expand | No | ||
| max_chars | No | ||
| content_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits itself, but it only says 'Get v1 history details.' It does not explain pagination, expand behavior, content-type coverage, return shape, or any side effects/permissions. This is a significant gap for a read operation whose behavior is mostly unspecified.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence with no filler and the key action is front-loaded. It is concise, though it may be too terse to fully support effective tool selection.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with five undocumented parameters, no annotations, and no output schema, the description only provides a narrow use-case hint. It leaves out pagination semantics, expand options, response structure, and relationship to sibling history/version tools, so the agent is under-equipped to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description adds no meaning to the five parameters. An agent cannot infer what 'expand', 'max_chars', 'limit', 'start', or even 'content_id' are used for beyond their raw types and defaults. The description does not compensate for the schema's lack of documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific operation ('Get v1 history details') and scopes it to generic Confluence content, which is clear and actionable. It distinguishes itself from the v2 page model by noting when v1 history shape is required, though it does not explicitly contrast with sibling version/list tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'useful when the v2 page model does not expose the required history shape' gives a clear context for when to invoke this tool. It implies an alternative (the v2 model), but it does not explicitly say when not to use the tool or name specific sibling alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
confluence_get_content_treeA
HIGH-LEVEL: Get a page or folder hierarchy in one MCP call, rendered as an indented text tree (title [id], a trailing / marks folders). Prefer this over recursively calling confluence_list_children: the server reads v2 descendants, consumes cursor pagination, and rebuilds the hierarchy. output_mode=compact (default) returns the deepest view that fits the output budget and lists collapsed branches in omittedBranches, so a follow-up call can expand only what matters; output_mode=outline returns just the direct children with child counts and is the cheapest way to map a large or unknown tree first; output_mode=detailed returns raw node objects and is only worth it when parentId, childPosition or status are needed. Retained document versions, which Confluence stores as "Versions of ..." child content, are excluded by default so history cannot consume the item budget ahead of sibling branches; set include_version_history=true to include them, and status.excludedVersionHistory reports what was skipped. status separates fetchedItems from renderedItems and names every truncationReason. When status.nextCursor is returned, pass it back as cursor with the same root_id, depth and output_mode to continue the traversal; when truncationReasons contains output_budget, raising max_chars renders more of what was already fetched without extra API calls.
| Name | Required | Description | Default |
|---|---|---|---|
| depth | No | ||
| cursor | No | ||
| root_id | Yes | ||
| max_chars | No | ||
| max_items | No | ||
| root_type | No | page | |
| output_mode | No | compact | |
| include_version_history | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, and it delivers: the server reads v2 descendants and consumes cursor pagination, rebuilds the hierarchy, excludes version-history content by default so it cannot consume the item budget, and status separates fetchedItems from renderedItems and names every truncationReason. It also discloses continuation behavior via nextCursor and that raising max_chars renders already-fetched data without extra API calls.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but every clause carries behavioral information and it front-loads the high-level purpose before details. A bulleted structure would improve scanability slightly, but there is little redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex 8-parameter tool with no annotations and no output schema, the description covers invocation, output format, mode trade-offs, pagination continuation, truncation semantics, and version-history exclusion. An agent has enough to select and drive the tool correctly without external documentation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description defines the meaningful behavior of output_mode (compact/outline/detailed), include_version_history, cursor/nextCursor, depth/root_id for continuation, max_chars effect, and item-budget behavior linked to max_items. This substantially compensates for the empty parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: get a page or folder hierarchy as an indented text tree, with notation (title [id], trailing / for folders). It also distinguishes itself from the named sibling confluence_list_children by positioning this as a single-call alternative to recursive calls.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs to prefer this over recursively calling confluence_list_children, and gives mode-selection rules: outline for cheaply mapping large/unknown trees, detailed only when parentId/childPosition/status are needed, compact as default. It also explains when to pass cursor back and when raising max_chars is worthwhile.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
confluence_get_folderA
Get one Confluence folder by ID, optionally including direct children, operations, properties, or collaborators.
| Name | Required | Description | Default |
|---|---|---|---|
| folder_id | Yes | ||
| max_chars | No | ||
| include_operations | No | ||
| include_properties | No | ||
| include_collaborators | No | ||
| include_direct_children | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral burden. 'Get' implies a read-only operation, and the optional include modifiers give useful behavioral context. However, it does not disclose behavior around max_chars, pagination, response size, or what happens with invalid IDs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence, front-loaded with the verb and object, and the optional include list is compact. There is no filler or repetition of schema details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With six parameters, no annotations, and no output schema, the description is thin. It covers the core action and optional flags but omits max_chars semantics and any indication of the return shape. For a tool with this many options and no structured documentation, more context is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It clarifies folder_id by saying 'by ID' and enumerates the include_* booleans. However, max_chars is not explained at all, and no parameter-level detail is given about constraints or effects.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Get one Confluence folder by ID.' It clearly distinguishes this from sibling tools like confluence_list_children or confluence_get_page, and the optional include list adds scope without obscuring the core purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The context is clear: use this to fetch a single folder by its ID, optionally with children, operations, properties, or collaborators. It does not explicitly state when to prefer list_children or get_content, but the single-entity-by-ID framing is strong enough for an agent to infer the primary use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
confluence_get_pageA
Primitive: get one Confluence page by ID. Use it when a single page body or a specific field set is all that is needed. For the page plus its ancestors, attachments, or comments, prefer confluence_get_page_context.
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | ||
| page_id | Yes | ||
| version | No | ||
| max_chars | No | ||
| body_format | No | storage | |
| include_likes | No | ||
| include_labels | No | ||
| include_versions | No | ||
| include_operations | No | ||
| include_properties | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral disclosure. It communicates that this is a minimal single-page fetch and implicitly states what it does not include (ancestors, attachments, comments). However, it does not disclose output format, possible truncation behavior, error conditions, or effects of the many include flags, so transparency is partial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no redundancy. The core behavior is front-loaded, and the sibling alternative is mentioned only after the primary usage context is established.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This tool has 10 parameters, no output schema, and no annotations, so the description needs to provide significant context to make the tool safely and correctly invocable. It covers selection criteria well but gives almost no guidance on parameter usage, return shape, or edge-case behavior, leaving the agent under-equipped for actual invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description only vaguely references 'a specific field set' and 'page body'. The 10 parameters, including status, version, max_chars, body_format, and include_* flags, are left entirely to the agent to infer. This is insufficient compensation for the complete lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Primitive: get one Confluence page by ID', clearly stating a specific verb, resource, and retrieval method. It also distinguishes itself from confluence_get_page_context by noting that this tool returns a single page rather than ancestors, attachments, or comments.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells the agent when to use this tool ('when a single page body or a specific field set is all that is needed') and names the preferred alternative for richer context needs. This is direct, actionable guidance that helps route between siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
confluence_get_page_contextA
HIGH-LEVEL: Gather the information commonly needed to understand one page in one MCP call: body/current version plus optional ancestors, attachments, and comments. Prefer this over calling several page context primitives separately; optional section failures are returned with partial status.
| Name | Required | Description | Default |
|---|---|---|---|
| page_id | Yes | ||
| max_chars | No | ||
| body_format | No | storage | |
| comment_types | No | ||
| include_comments | No | ||
| include_ancestors | No | ||
| include_attachments | No | ||
| max_items_per_section | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It reveals a non-obvious behavior: 'optional section failures are returned with partial status.' This tells the agent that individual sections may fail without aborting the whole call. The verb 'Gather' implies a read-only operation, which is appropriate. It does not discuss rate limits or auth, but these are not critical for a read operation. The partial-failure disclosure adds meaningful context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with 'HIGH-LEVEL:' to signal its purpose, and states the key benefit first. It avoids redundancy and wastes no words. The structural choice to lead with the aggregation intent and then mention the partial-failure behavior is efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Without an output schema, the description should give a clear sense of the return structure. It does: 'body/current version plus optional ancestors, attachments, and comments.' It also mentions partial failures. However, it does not detail the format of the body, how sections are organized, or any pagination behavior (though max_items_per_section hints at it). For a tool with 8 parameters and no output schema, this is adequate but not exhaustive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, so the description must compensate for all 8 parameters. It only indirectly addresses the include_* booleans ('optional ancestors, attachments, comments') and the body/version, but does not explain body_format, max_chars, comment_types, or max_items_per_section. The schema itself provides enums and defaults, but the description adds no meaning beyond that. The high-level mapping is insufficient for an agent to understand parameter behavior without inspecting the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: to gather page context (body/current version plus optional ancestors, attachments, comments) in one call. It uses a specific verb ('Gather') and resource ('one page'), and distinguishes itself from sibling primitives by framing it as a high-level aggregation. The phrase 'Prefer this over calling several page context primitives separately' explicitly positions it against the family of simpler tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit guidance: prefer this tool when you need multiple page context sections, and implies that for single pieces you might use the primitives. However, it does not name specific sibling tools or give clear exclusions (e.g., 'if you only need the body, use confluence_get_page'). The guidance is useful but could be more precise about when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
confluence_get_page_versionC
Get details for one historical page version.
| Name | Required | Description | Default |
|---|---|---|---|
| page_id | Yes | ||
| max_chars | No | ||
| version_number | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure, but it only says 'get details.' It does not mention that max_chars may truncate content, what the response contains, or any read-only/reversibility implications.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single efficient sentence that front-loads the core operation. It has no filler or redundancy, though it is brief on details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given three parameters, no annotations, no output schema, and zero schema description coverage, one sentence is insufficient. The description leaves max_chars semantics and expected return details unexplained, making the tool harder to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, but it does not explain any parameters. page_id and version_number are somewhat inferable from the name and description, but max_chars is entirely unexplained beyond its raw schema constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb and resource: 'Get details for one historical page version.' This distinguishes it from get_page (current version) and list_versions (listing versions), though 'details' is somewhat vague.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'one historical page version' implies this tool is for retrieving a single specific version rather than a list, giving some usage context. However, it does not name alternatives or explain when to prefer this tool over list_versions or get_content_history.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
confluence_get_spaceA
Primitive: get one Confluence space by ID when only the space record is needed. When first understanding a space and its structure, prefer confluence_get_space_overview, which also accepts a space key.
| Name | Required | Description | Default |
|---|---|---|---|
| space_id | Yes | ||
| max_chars | No | ||
| include_icon | No | ||
| description_format | No | ||
| include_operations | No | ||
| include_properties | No | ||
| include_permissions | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full burden of behavioral disclosure. It does convey that the tool returns a space record and is a 'primitive' (minimal) fetch, which implies a read-only operation. However, it does not mention response format, pagination, rate limits, error behavior, or the meaning of the various include flags. It adds some context but leaves significant behavioral aspects undisclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly written sentences with no filler. The key information ('get one Confluence space by ID') is front-loaded, and the usage caveat and alternative follow efficiently. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 7 parameters, no output schema, and no annotations, yet the description does not explain the optional parameters, the return value, or any permissions or side effects. While the primary use case is clearly stated, the lack of detail on the remaining parameters and expected behavior leaves the definition incomplete for an agent that needs to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for the undocumented parameters. The description only references 'by ID,' which maps to 'space_id,' but says nothing about 'max_chars,' 'include_icon,' 'description_format,' 'include_operations,' 'include_properties,' or 'include_permissions.' An agent cannot infer the meaning or format of these parameters from the description, so it fails to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('get'), a specific resource ('one Confluence space'), and the exact access pattern ('by ID'). It also explicitly distinguishes itself from the sibling tool 'confluence_get_space_overview' by scoping this to 'when only the space record is needed.' An agent can clearly tell what this tool does and how it differs from the most similar alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit usage context: use this when you need only the space record, and prefer 'confluence_get_space_overview' when first understanding a space and its structure. This clearly tells the agent when to select this tool versus an alternative, which is exactly what the dimension asks for.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
confluence_get_space_overviewA
HIGH-LEVEL: Get space metadata and the homepage/root content tree in one MCP call. Prefer this when first learning a space instead of listing spaces, fetching the space, and recursively listing children. Provide either space_id or space_key; with space_key (for example DOCS) the server resolves the numeric space id itself. status.nextCursor can be passed back as cursor to continue the tree traversal. The tree is always budgeted and reports partial/truncated state.
| Name | Required | Description | Default |
|---|---|---|---|
| depth | No | ||
| cursor | No | ||
| root_id | No | ||
| space_id | No | ||
| max_chars | No | ||
| max_items | No | ||
| root_type | No | page | |
| space_key | No | ||
| output_mode | No | compact | |
| include_version_history | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the combined-call behavior, server-side space_key resolution, cursor-based continuation, and the fact that the tree is always budgeted and reports partial/truncated state. It stops short of defining the exact budget limits or return shape, but the key behavioral traits are transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a compact, high-signal paragraph: purpose first, usage rule, key parameters, pagination, and budget behavior. Every sentence adds information and none duplicates structured schema data.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 10-parameter tool with no annotations and no output schema, this description covers the core use case well but omits semantics for several important fields (especially root_type, output_mode, and include_version_history) and does not describe the returned metadata structure. It is adequate for the happy-path first-learning scenario but not fully complete for advanced usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and only space_id/space_key and cursor semantics are explained in prose. depth, root_id, root_type, output_mode, max_chars, max_items, and include_version_history receive no meaning beyond their type/enum/default in the schema, leaving a substantial semantic gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action and resource — 'Get space metadata and the homepage/root content tree in one MCP call' — and explicitly contrasts it with the multi-call alternative of listing spaces, fetching a space, and recursively listing children. This clearly distinguishes it from sibling tools like confluence_get_space and confluence_list_children.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit usage rule: 'Prefer this when first learning a space' and tells the agent what multi-step pattern to avoid. It also explains the space_id vs space_key input convention and the cursor continuation pattern, so an agent knows both when and how to invoke it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
confluence_list_attachmentsA
Primitive: list attachments for a page with optional filename, media type, status, and cursor filters. For attachments together with the page body and comments, prefer confluence_get_page_context.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| cursor | No | ||
| status | No | ||
| page_id | Yes | ||
| filename | No | ||
| max_chars | No | ||
| media_type | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavior. It only says 'list attachments' and 'Primitive' – which hints at a low-level read operation but does not explicitly state read-only behavior, pagination behavior, or what the response contains. The description does not mention cursor as a pagination token, which is a behavioral detail an agent would need.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, no wasted words. The purpose is front-loaded, followed by a clear usage tip. The description earns its place with minimal redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of annotations and output schema, the description is too thin. It does not explain what the tool returns, how pagination works (cursor, limit), or how the filters interact. While it names the key filters, it omits essential context like response format and pagination semantics, so an agent cannot fully anticipate the tool's behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has no descriptions (0% coverage), so the description must compensate. It names 'filename, media type, status, and cursor filters' but does not explain what each filter does, nor does it mention limit, max_chars, or page_id semantics. Calling 'cursor' a 'filter' is ambiguous – it is typically a pagination token, not a filter. This is insufficient for an agent to construct a correct request.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('list') and resource ('attachments for a page'), and immediately distinguishes itself from the sibling confluence_get_page_context by naming the alternative. The agent can clearly tell this is a scoped, low-level listing operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit guidance is given: 'For attachments together with the page body and comments, prefer confluence_get_page_context.' This sets a clear condition for when to use the alternative, and the 'Primitive' tag implies use when only attachments are needed. No other tool is mentioned, but this is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
confluence_list_childrenA
Primitive: list one direct level of page or folder children. Use it when exactly one immediate level is needed, or when the caller wants to drive cursor pagination itself. For recursive hierarchy exploration prefer confluence_get_content_tree; for a large or unknown hierarchy call it with output_mode=outline first and expand only the branches that matter.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | ||
| limit | No | ||
| cursor | No | ||
| max_chars | No | ||
| parent_id | Yes | ||
| parent_type | No | page |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. It usefully explains that the tool is a primitive, non-recursive listing with caller-driven cursor pagination. However, it does not disclose return shape, ordering, truncation behavior, or whether auth or read-only semantics are relevant.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences with a clear front-loaded purpose, followed by usage guidance and alternatives. There is no filler, and every sentence contributes to selection or invocation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given six parameters, zero schema descriptions, and no output schema, the description provides strong purpose and routing context but leaves significant invocation details uncovered. An agent still lacks documentation for key parameters such as sort and max_chars, and the response behavior is not described.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, so the description must add meaning. It clarifies parent_type by mentioning 'page or folder children' and explains cursor by saying the caller can drive cursor pagination. But sort, limit, and max_chars are left entirely to inference, and the description does not compensate fully for the missing schema guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Primitive: list one direct level of page or folder children', giving a specific verb, resource, and scope. It explicitly restricts the behavior to one level, which distinguishes it from recursive siblings like confluence_get_content_tree and confluence_list_descendants.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states exactly when to use this tool: when one immediate level is needed or when the caller wants to drive cursor pagination. It also names alternatives and routing criteria, saying to prefer confluence_get_content_tree for recursive exploration and to start with an outline for large or unknown hierarchies.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
confluence_list_commentsA
Primitive: list root footer or inline comments on a page. For one discussion and all bounded replies, prefer confluence_get_comment_thread; use this for a single page-level comment list.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | ||
| limit | No | ||
| cursor | No | ||
| status | No | ||
| page_id | Yes | ||
| max_chars | No | ||
| body_format | No | storage | |
| comment_type | No | footer | |
| resolution_status | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the behavioral burden. It communicates a read-only list operation and root-comment scope, but it does not disclose pagination/cursor behavior, sorting semantics, status filters, response shape, or content truncation despite parameters like limit, cursor, status, and max_chars existing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no waste. The core operation and scope are front-loaded, and the alternative routing takes the second sentence. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 9 parameters, no annotations, and no output schema, this description is too thin. It explains intent but omits essential context about pagination, return content, filtering behavior, and output shape that an agent would need to invoke the tool confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, yet the description only mildly clarifies comment_type by saying 'root footer or inline comments' and page_id by saying 'single page-level comment list.' It does not explain sort, limit, cursor, status, max_chars, body_format, or resolution_status, leaving most parameters underspecified.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'list root footer or inline comments on a page.' It also names the sibling confluence_get_comment_thread and clarifies that this tool is for a single page-level comment list, so an agent can distinguish it from related tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit routing guidance: for one discussion with all bounded replies, prefer confluence_get_comment_thread; use this tool for a single page-level comment list. This directly answers when to use this tool versus the key alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
confluence_list_descendantsA
Primitive: list one paginated descendants response below a page or folder, in flat top-to-bottom order. Returns the API response as-is, including the "Versions of ..." containers Confluence uses for retained document versions; set include_version_history=false to drop those and everything under them from this page of results. Use it when a raw page of descendants or manual cursor control is needed. For a rendered hierarchy with pagination handled server-side, and with version history excluded by default, prefer confluence_get_content_tree.
| Name | Required | Description | Default |
|---|---|---|---|
| depth | No | ||
| limit | No | ||
| cursor | No | ||
| max_chars | No | ||
| parent_id | Yes | ||
| parent_type | No | page | |
| include_version_history | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden, and it does so well. It discloses that the tool returns the API response as-is, includes Confluence's 'Versions of ...' containers, and explains the effect of include_version_history=false. It also clarifies flat ordering and single-page behavior, which are non-obvious behavioral traits an agent cannot infer from the schema alone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: the core primitive behavior appears first, followed by the key version-history nuance, then the usage guidance and preferred alternative. Every sentence contributes useful information with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter tool with no output schema and no annotations, the description covers the most important behavioral and routing context: raw response, pagination, version history, and when to prefer a sibling. The main gap is that several parameters remain semantically undocumented, so the context is strong but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does explain include_version_history and cursor behavior, and it mentions 'page or folder' which maps to parent_type. However, it does not explain depth, limit, max_chars, or parent_id semantics, leaving several parameters dependent on the agent's inference from names and schema constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action and resource: 'list one paginated descendants response below a page or folder, in flat top-to-bottom order.' It also distinguishes the tool from the rendered-hierarchy alternative, confluence_get_content_tree, by calling itself a 'Primitive' and emphasizing raw API responses and manual cursor control.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit guidance is given: 'Use it when a raw page of descendants or manual cursor control is needed,' and the sibling to prefer instead is named with the reason: 'For a rendered hierarchy with pagination handled server-side... prefer confluence_get_content_tree.' This directly tells an agent when to choose this tool versus the alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
confluence_list_pagesC
List Confluence pages with optional space, title, status, ID, and body format filters. Use cursor from the previous response for the next page.
| Name | Required | Description | Default |
|---|---|---|---|
| ids | No | ||
| sort | No | ||
| limit | No | ||
| title | No | ||
| cursor | No | ||
| status | No | ||
| max_chars | No | ||
| space_ids | No | ||
| body_format | No | storage |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full burden. It does disclose pagination behavior ('Use cursor from the previous response for the next page'), which is useful. It does not disclose return shape, whether body content is included, sort/limit semantics, or error behavior, but it is enough to convey the basic read/pagination behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences, with the core listing purpose and the pagination hint front-loaded. The wording is efficient, though the parameter names are paraphrased rather than exact, which slightly reduces clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with nine parameters, zero schema coverage, no annotations, and no output schema, this description is too thin. It does not clarify output format, default sort/limit behavior, body_format semantics, or relationship to the many sibling list/get tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for nine undocumented parameters. It maps only some of them (space→space_ids, title→title, status→status, ID→ids, body format→body_format), and not always precisely. It adds no meaning for sort, limit, max_chars, or cursor beyond the cursor usage hint.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('List Confluence pages') and mentions the main filtering dimensions. It is distinguishable from single-page getters like get_page and from search. However, it refers to 'space' and 'ID' while the schema uses 'space_ids' and 'ids', which introduces mild imprecision.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies a general listing use case and gives cursor instructions, but it never explains when to choose this over get_page, search, list_children, or list_descendants. With many sibling tools, explicit routing guidance would materially help, and none is present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
confluence_list_spacesC
List Confluence spaces with optional key, type, status, and description format filters.
| Name | Required | Description | Default |
|---|---|---|---|
| keys | No | ||
| sort | No | ||
| type | No | ||
| limit | No | ||
| cursor | No | ||
| status | No | ||
| max_chars | No | ||
| description_format | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations to convey safety or behavioral traits, and the description does not disclose pagination behavior, result format, truncation due to max_chars, or any other operational details. The schema hints at cursor and limit, but the description fails to explain how the tool behaves beyond 'list spaces'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence with no filler words, making it concise and easy to parse. Key filter terms are front-loaded, but the sentence is so brief that it necessarily omits important context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, no output schema, and eight parameters with zero schema coverage, the description is insufficient. It does not cover pagination, response structure, parameter constraints, or edge cases, leaving the agent under-informed for invoking the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for explaining the parameters, but it only names four of eight params (keys, type, status, description_format) without detailing their meaning or valid values. Sort, limit, cursor, and max_chars are completely unexplained, leaving significant ambiguity for the agent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists Confluence spaces, which is a specific verb and resource. It also mentions the filter options (key, type, status, description format), helping to distinguish its listing purpose from tools like confluence_get_page or confluence_get_space. However, it does not explicitly differentiate itself from the sibling list tools such as confluence_list_pages.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like confluence_get_space for retrieving a single space or confluence_search for broader queries. The description simply lists what it does, leaving usage decisions entirely to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
confluence_list_versionsB
List page version history with optional body representation and cursor pagination.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | ||
| limit | No | ||
| cursor | No | ||
| page_id | Yes | ||
| max_chars | No | ||
| body_format | No | storage |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses pagination and body representation, but does not specify default behavior, ordering, side effects (likely none, but not confirmed), or rate limits. The non-destructive nature is implied but not explicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one concise sentence, front-loading the core purpose. It uses minimal words and covers the key optional features. No wasted or redundant content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of 6 parameters, no output schema, and no annotations, the description is incomplete. It does not describe the response structure, available parameters' behavior, or specific usage scenarios. Adequate for a basic understanding, but a caller would need to inspect the schema or more.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, meaning the description must compensate for understanding parameters. The description mentions body representation (body_format) and cursor pagination (cursor), but does not explain other parameters like sort, limit, page_id, or max_chars. Only a few parameters are given meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists page version history. It mentions optional body representation and cursor pagination, but does not explicitly differentiate from related siblings like confluence_get_page_version or confluence_get_content_history, though the plural 'versions' implies a listing function.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides the context of listing version history, but does not explicitly state when to use this tool versus alternatives such as confluence_get_page_version for a single version. There is no mention of when not to use it or references to sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
confluence_raw_requestA
Call an allowlisted Confluence REST API path for an operation not covered by a named tool. Path must be under /wiki/api/v2/ or /wiki/rest/api/. GET is enabled by default; non-GET requires CONFLUENCE_ALLOW_RAW_WRITE=true and confirm=true, and DELETE also requires destructive opt-in.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | ||
| path | Yes | ||
| query | No | ||
| method | Yes | ||
| confirm | No | ||
| max_chars | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the burden. It discloses that GET is default, non-GET requires additional env flags and confirm=true, and DELETE needs destructive opt-in. This is good behavioral transparency for a raw request tool, but it doesn't mention rate limiting, response format, or error handling (e.g., 404s), which could matter for an agent invoking raw paths. Still, the key safety and opt-in constraints are clearly disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, tightly packed with essential information. The first sentence establishes purpose and scope, the second details method constraints. Every sentence earns its place, though the mention of DELETE opt-in could be integrated more smoothly, but it remains concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (6 params, variable methods, env-dependent behavior) and missing annotations/output schema, the description provides substantial necessary context: path restrictions, method constraints, and opt-in requirements. It lacks some details like response format or fail modes, but for a raw API tool, the core protocol is well-covered. It's likely complete enough for a competent agent to call it safely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It covers the critical parameters: method (GET default, non-GET restrictions), path (must be under specific prefixes), confirm (true for non-GET), and destructive opt-in for DELETE. It doesn't explicitly explain query, body, max_chars, but these are clear from their names and the schema, and the description's focus on the most safety-critical parameters adds significant value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it is a raw API caller for allowlisted Confluence paths, with specific path prefixes. It differentiates itself from named siblings by saying it is for operations not covered by a named tool, which gives clear purpose and distinguishes it from the many more specific tools it sits alongside.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage: when no named tool covers the operation, use this. It also provides critical conditions for non-GET methods (CONFLUENCE_ALLOW_RAW_WRITE=true, confirm=true, destructive opt-in for DELETE). However, it doesn't explicitly name an alternative or say when NOT to use it (e.g., when a named tool exists), though that's strongly implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
confluence_searchA
Primitive: search Confluence content with raw CQL when only compact search metadata is needed, or when the query needs fields the high-level tool does not expose (label, space, type, ancestor, lastmodified). For search plus page bodies, and for plain queries that should not be hand-written as CQL, prefer confluence_search_and_fetch. CQL matching: title = "Exact Title" matches the whole title; title ~ "Prefix*" matches a partial title; text ~ "words" searches full text. Full text is tokenized, so an identifier such as AB12-C also matches pages containing only its fragments: when the exact title is known, try title = first, then title ~ "...", and use text ~ only as the fallback. Combine with and/or, for example space = "DOCS" and title ~ "Report".
| Name | Required | Description | Default |
|---|---|---|---|
| cql | Yes | ||
| limit | No | ||
| start | No | ||
| expand | No | ||
| max_chars | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations at all, the description carries the full behavioral burden. It discloses tokenization behavior, partial-title semantics, the risk of identifier fragmentation, and the recommended search strategy. It does not mention return shape or pagination behavior, but the most important behavioral quirk—CQL matching and tokenization—is clearly explained.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but every sentence earns its place. It starts with the core purpose, moves to the alternative tool, then explains CQL matching rules, tokenization caveats, fallback strategy, and an example. The structure is logical and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the phrase 'compact search metadata' is vague about what the agent will actually receive. Pagination, expand, and max_chars semantics are also missing. That said, the description is comprehensive for the most important part—constructing and choosing between CQL queries—making it minimally viable but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It adds strong semantics for the cql parameter with exact/partial/text matching examples and combinators. However, it does not explain limit, start, expand, or max_chars at all, leaving 4 of 5 parameters mostly inferred.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action and resource: 'search Confluence content with raw CQL'. It also distinguishes itself from the sibling confluence_search_and_fetch by saying it returns compact metadata and exposes fields the high-level tool does not. This is far clearer than generic search descriptions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use conditions: when compact search metadata is needed, or when the query requires fields the other tool does not expose. It also tells the agent when NOT to use it, naming confluence_search_and_fetch for page bodies or plain queries, and provides concrete CQL matching guidance and fallback order.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
confluence_search_and_fetchA
HIGH-LEVEL: Find pages and read their bodies in one MCP call. Prefer this over confluence_search followed by confluence_get_page per result. Pass a plain query with search_mode instead of writing CQL: auto (default) tries exact title, then title prefix, then full text and stops at the first mode that matches, which keeps identifiers such as codes or part numbers from being diluted by full-text tokenization; exact_title, title_prefix and full_text pin one strategy; cql is the escape hatch for a hand-written query. strategy.cqlUsed reports what actually ran. Non-page or failed fetches come back as partial results.
| Name | Required | Description | Default |
|---|---|---|---|
| cql | No | ||
| query | No | ||
| start | No | ||
| fetch_top | No | ||
| max_chars | No | ||
| body_format | No | storage | |
| search_mode | No | auto | |
| search_limit | No | ||
| fetch_concurrency | No | ||
| max_chars_per_page | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It discloses the auto-mode stop-at-first-match behavior, partial results for non-pages or failed fetches, and the strategy.cqlUsed reporting field. It doesn't cover permissions, rate limits, or exact return shape, so it is not a 5, but it is unusually transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but every sentence earns its place: high-level purpose, sibling differentiation, search mode semantics, tokenization rationale, and failure behavior. It is front-loaded with the most important routing information and has no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 10-parameter tool with no annotations and no output schema, this description covers the critical decision-making context: when to use the tool, how search modes behave, and what happens on partial failure. Gaps remain in documenting several parameters and the exact return envelope, but an agent can confidently invoke the main workflow.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It does explain query vs cql and the search_mode enum in depth, which is the most complex parameter. However, it never clarifies body_format, start, fetch_top, max_chars, max_chars_per_page, or fetch_concurrency beyond what their names or defaults imply, leaving several parameters under-specified.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a clear, specific verb+resource statement: 'Find pages and read their bodies in one MCP call.' It also explicitly distinguishes this tool from the sibling workflow 'confluence_search followed by confluence_get_page per result,' making its unique value obvious.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says 'Prefer this over confluence_search followed by confluence_get_page per result,' and then gives detailed routing guidance: when to use auto vs pinned search modes vs cql, including the rationale for preserving identifiers. This is unambiguous selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
confluence_update_commentA
Update a footer comment body. Use confluence_get_comment first if you need to inspect its current version.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| max_chars | No | ||
| comment_id | Yes | ||
| representation | No | storage |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral context, but it only states the mutation and hints at version inspection. It doesn't mention required permissions, whether the update overwrites the entire body, failure modes for missing comments, or any versioning side effects. This is a minimal disclosure for a write operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences with no filler. The primary action is front-loaded, and the secondary sentence adds a useful prerequisite hint without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, no output schema, and zero parameter descriptions, the description is too sparse for an agent to reliably make an informed call. It omits optional parameter semantics, expected return values, and behavioral caveats, so it is not fully complete for a mutation tool of this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description should compensate by explaining parameters, but it only implies 'body' and 'comment_id'. It does not clarify the meaning or usage of 'max_chars' or 'representation', leaving gaps that the schema alone cannot fill.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Update') and a specific resource ('a footer comment body'), making it clear what the tool does. It also implicitly distinguishes itself from the sibling 'confluence_update_inline_comment' by targeting footer comments specifically.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance to use 'confluence_get_comment' first if the current version needs inspection, which is a useful alternative. However, it doesn't fully discuss when to use this tool over 'confluence_update_inline_comment' or other update variants, though the 'footer comment' scoping makes that largely inferable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
confluence_update_inline_commentC
Update or resolve an inline comment.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | ||
| resolved | No | ||
| max_chars | No | ||
| comment_id | Yes | ||
| representation | No | storage |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits, but it only says 'update or resolve' without explaining side effects, reversibility, permissions, or what 'resolve' actually changes. The agent has no idea of the impact of calling this tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no wasted words, but it is under-specified rather than concise. It omits essential information and provides little more than a restatement of the tool name, so the brevity is not a virtue.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 5 parameters, 0% schema coverage, no annotations, and no output schema, the description must carry the full burden of context. It fails to explain the difference between updating and resolving, the meaning of representation values, or the max_chars constraint, leaving the agent dangerously uninformed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description mentions none of the five parameters (body, resolved, max_chars, comment_id, representation). The agent cannot infer the meaning or required format of any parameter, making correct invocation impossible without external documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear action ('Update or resolve') and a specific resource ('inline comment'), which is more informative than just the tool name. However, it does not differentiate from sibling tools like confluence_update_comment or explain what 'resolve' means, so it falls short of full clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus alternatives such as confluence_update_comment or confluence_create_inline_comment. There is no context for choosing between update and resolve, nor any mention of prerequisites or typical scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
confluence_update_pageA
Update a page body and title using an explicit current version number. Read the page first when unsure; Confluence requires optimistic versioning.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| title | Yes | ||
| status | No | current | |
| page_id | Yes | ||
| space_id | No | ||
| max_chars | No | ||
| parent_id | No | ||
| minor_edit | No | ||
| representation | No | storage | |
| version_number | Yes | ||
| version_message | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must disclose behavioral traits itself, and it does by warning about Confluence's optimistic versioning and advising a pre-read. It could also mention failure modes on version conflict or that unspecified optional fields are not updated, but the core concurrency behavior is clearly surfaced.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler; the primary operation is stated first and the critical concurrency warning follows immediately. Every clause adds information the agent needs before calling the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the main success path and the essential optimistic-versioning constraint, and points the agent to a read-before-update strategy. However, for a mutation tool with 11 parameters, no annotations, and no output schema, it omits guidance on optional fields, representation formats, draft/current status, and conflict behavior, so it is not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and there are 11 parameters; the description only clarifies version_number ('explicit current version') and identifies body/title as the main update targets. Optional parameters such as representation, status, parent_id, and max_chars receive no semantic guidance, leaving the agent to infer their meaning from names and schema constraints alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific action ('Update a page body and title'), a distinct resource, and a required precondition (explicit current version number). This clearly differentiates it from the sibling tool confluence_update_page_title, which handles title-only updates.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an actionable guideline: read the page first when unsure, because Confluence uses optimistic versioning. It does not enumerate exact conditions for choosing this over update_page_title or create_page, but the body-and-title scope and version requirement are sufficient context for most routing decisions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
confluence_update_page_titleC
Update only a page title using the v2 title endpoint and explicit version number.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | ||
| page_id | Yes | ||
| max_chars | No | ||
| minor_edit | No | ||
| version_number | Yes | ||
| version_message | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry the full burden of behavioral disclosure. It mentions the endpoint and version number, but does not disclose the mutation side effects, failure modes, or consequences of providing an incorrect version number. It also omits any mention of how the title change affects the page or whether it is reversible. This is insufficient for a write operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no filler. The core purpose is front-loaded, and the technical details (endpoint, version number) are secondary. It is efficient, though its brevity contributes to the lack of substantive content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 6 parameters, no output schema, and no annotations, the description is severely incomplete. It does not explain parameter semantics, return values, prerequisites, versioning requirements, or how the title update interacts with the page. An agent would be unable to construct a correct call without external knowledge.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the schema provides no explanations for properties. The description does not compensate: it does not mention any parameter names, purposes, or relationships. The presence of parameters like max_chars, minor_edit, and version_message is entirely unexplained, leaving an agent unable to determine correct values or meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Update only a page title') with a clear resource and scope. 'Only' differentiates it from the broader confluence_update_page tool, and the mention of the v2 title endpoint and explicit version number adds technical precision. It is not a tautology and clearly identifies the tool's unique function.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for title-only updates but does not explicitly state when to use it versus alternatives like confluence_update_page. It lacks any context on prerequisites, exclusions, or conditions under which the tool should or should not be chosen. The scope is implied, not explicitly guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
confluence_upload_attachmentA
Upload a local file to a page using REST API v1. Disabled unless CONFLUENCE_ALLOW_LOCAL_FILE_UPLOAD=true and confirm=true; the file path is read by this local process.
| Name | Required | Description | Default |
|---|---|---|---|
| comment | No | ||
| confirm | Yes | ||
| page_id | Yes | ||
| file_path | Yes | ||
| max_chars | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations at all, the description carries the full burden, and it uses that space well: it discloses the environment-variable gate, the mandatory confirm flag, and the significant fact that 'the file path is read by this local process' — a security-relevant behavior an agent cannot infer from the schema. It omits result/error behavior, but the critical behavioral traits of this gated mutation are surfaced.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler: the action is front-loaded and the second sentence packs three high-value caveats. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is complete about the gating and local-file behavior, but with no output schema and no parameter documentation, an agent must guess at the meaning of comment and max_chars and at what the call returns. Adequate for a 5-parameter gated mutation, but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, but it only tacitly touches confirm and file_path. page_id (the attachment target), comment, and the oddly constrained max_chars (1000–50000) are left completely unexplained, so an agent cannot know what max_chars controls.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States an unambiguous verb+resource pair: 'Upload a local file to a page.' The 'REST API v1' detail anchors it to a concrete implementation, and no sibling tool performs uploads, so differentiation from the read-oriented attachment tools (list_attachments, get_attachment) is inherent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description conveys availability preconditions ('Disabled unless CONFLUENCE_ALLOW_LOCAL_FILE_UPLOAD=true and confirm=true'), which tells an agent when the tool can fire, but it never states when to prefer this over an alternative or what to do when disabled. Usage context is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
6 tool updates
v0.4.0- Added
confluence_get_comment_thread - Added
confluence_get_content_tree - Added
confluence_get_page_context - Added
confluence_get_space_overview - Changed
confluence_list_descendants1 field changed- added
Input schema / properties / include_version_historyAdded value: +{ + "default": true, + "type": "boolean" +}
- Added
confluence_search_and_fetch
28 tool updates
v0.1.0- First observed
confluence_create_comment - First observed
confluence_create_folder - First observed
confluence_create_inline_comment - First observed
confluence_create_page - First observed
confluence_delete_page - First observed
confluence_get_ancestors - First observed
confluence_get_attachment - First observed
confluence_get_comment - First observed
confluence_get_content - First observed
confluence_get_content_history - First observed
confluence_get_folder - First observed
confluence_get_page - First observed
confluence_get_page_version - First observed
confluence_get_space - First observed
confluence_list_attachments - First observed
confluence_list_children - First observed
confluence_list_comments - First observed
confluence_list_descendants - First observed
confluence_list_pages - First observed
confluence_list_spaces - First observed
confluence_list_versions - First observed
confluence_raw_request - First observed
confluence_search - First observed
confluence_update_comment - First observed
confluence_update_inline_comment - First observed
confluence_update_page - First observed
confluence_update_page_title - First observed
confluence_upload_attachment
TDQS
Scored across 33 tools
All 33 tools have clearly defined, non-overlapping purposes. High-level composite tools (e.g., confluence_get_content_tree, confluence_search_and_fetch) are explicitly distinguished from the primitives they wrap (e.g., confluence_list_children, confluence_search), with guidance on when to prefer each. No two tools appear to do the same thing.
Every tool follows the same `confluence_` prefix plus a verb_noun convention (e.g., list_pages, get_page, create_page, update_page, delete_page, upload_attachment). Even composite tools like get_content_tree and get_space_overview fit the pattern with descriptive nouns. No mixed camelCase or inconsistent verbs observed.
With 33 tools, this server exceeds the 25+ threshold that signals an overly heavy tool surface. While each tool is individually useful, the large number increases the risk of agent confusion and selection fatigue. A few composite tools absorb some redundancy, but the overall count is still high for a typical MCP server.
The tool surface covers core Confluence operations thoroughly: page and comment CRUD, folder management, attachments, version history, search, and content tree traversal. Minor gaps exist (e.g., no explicit move/copy page, no label management), but the raw_request escape hatch mitigates these, so the set is nearly complete for common workflows.
Maintenance
Related MCP Connectors
Connect to Atlassian Jira, Confluence, Loom, and more to search, create, and manage your work.
- platform7nOAuthtech.p7n
Connect Claude to your Platform7n workspaces — chat, links, and tasks. One-click OAuth.
Connect your team's living knowledge base — docs, data, issues, CRM — to Claude and ChatGPT.
Share context and questions between Claude instances — VS Code, claude.ai web, and mobile.
Related MCP Servers
- AlicenseBqualityDmaintenanceEnables querying and retrieving content from Confluence through CQL searches and page content fetching, allowing Claude to seamlessly access information stored in Confluence workspaces.314MIT
- FlicenseBqualityDmaintenanceEnables page search and retrieval from Confluence using the Model Context Protocol. It allows users to search documents via CQL and fetch page content as text for use within Claude.29 npm1-
- FlicenseNot gradedqualityDmaintenanceEnables Claude Code to read and search Confluence pages, with support for images and multi-site configurations.9 npm1-
- AlicenseNot gradedqualityDmaintenanceEnables Claude and Claude Code to interact with Atlassian Cloud (Confluence and Jira) through natural language, supporting full CRUD operations, search, comments, and attachments.MIT