Skip to main content
Glama

confluence-mcp

Fast, surgical Confluence MCP server for AI agents.

What makes this different

Unlike generic Atlassian MCP servers, this one is Confluence-only and optimized for how AI agents actually work with documentation:

  • Surgical section edits — Update a single section by heading name without touching the rest of the page

  • Fast page tree download — Get an entire page hierarchy in one call

  • Smart image handling — Upload images as attachments and auto-embed them in pages

  • Markdown in/out — Read and write in markdown; storage format conversion is automatic

  • Find & replace — Simple text replacement preserving all HTML structure

  • Section-aware reading — Fetch just the section you need, not the whole page

Related MCP server: confluence-mcp-server

Installation

uvx --from git+https://github.com/1vecera/confluence-mcp confluence-mcp

Via pip

pip install git+https://github.com/1vecera/confluence-mcp

Configuration

Set these environment variables:

CONFLUENCE_URL=https://yoursite.atlassian.net
CONFLUENCE_USERNAME=you@company.com
CONFLUENCE_API_TOKEN=your-api-token

Get your API token at: https://id.atlassian.com/manage-profile/security/api-tokens

Claude Code config

Add to ~/.claude.json:

{
  "mcpServers": {
    "confluence": {
      "command": "uvx",
      "args": ["--from", "git+https://github.com/1vecera/confluence-mcp", "confluence-mcp"],
      "env": {
        "CONFLUENCE_URL": "https://yoursite.atlassian.net",
        "CONFLUENCE_USERNAME": "you@company.com",
        "CONFLUENCE_API_TOKEN": "your-token"
      }
    }
  }
}

Tools

Reading

Tool

Description

get_page

Get page content in markdown or storage format

get_page_tree

Download entire page hierarchy at once

get_page_sections

List all sections with their content

get_section

Get a specific section by heading name

search_pages

Search via CQL or simple text

list_page_images

List all image references in a page

Writing (surgical)

Tool

Description

update_page

Update entire page content

update_section

Replace only a specific section — the key surgical edit tool

append_to_section

Add content to end of a section

find_replace_in_page

Find and replace text preserving HTML

create_page

Create a new page

Attachments & Images

Tool

Description

list_attachments

List all attachments on a page

download_attachment

Download an attachment by filename

upload_attachment

Upload a file attachment

upload_image_and_embed

Upload image + optionally rewrite page to embed it

Labels

Tool

Description

get_labels

Get labels on a page

add_label

Add a label to a page

Examples

Surgical section update

Instead of downloading and re-uploading an entire page:

update_section(page_id="123456", heading="Status", new_content="Project is **on track** for Q2 delivery.")

Download entire doc tree

get_page_tree(page_id="123456", include_body=True)

Upload and embed an image

upload_image_and_embed(page_id="123456", filename="arch.png", image_base64="...", replace_url="https://old-host.com/arch.png")

Development

uv sync --extra dev
uv run pytest --cov=confluence_mcp --cov-report=term-missing

License

MIT

Available Tools

17 tools
add_labelC

Add a label to a page.

Args: page_id: The page ID. label: The label text.

ParametersJSON Schema
NameRequiredDescriptionDefault
labelYes
page_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. It only states the basic action 'Add a label' without any nuance about duplicate labels, idempotency, error conditions, or permissions. This is a significant gap for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise and front-loaded, with a clear one-line purpose followed by a simple Args list. No filler words or redundant explanations. It is efficient but lacks depth.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that this is a mutation tool with no annotations, the description is under-specified. It does not explain behavior on duplicate labels, whether labels are additive or replacing, or any side effects. The output schema exists, so return values are covered, but operational behavior remains ambiguous.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

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. The Args section restates the parameter names as 'page_id: The page ID' and 'label: The label text', which adds little beyond the schema's property names and types. No format, constraints, or additional semantics are provided.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Add a label to a page' with a specific verb (add) and resource (label to page). This distinguishes it from sibling tools like get_labels (which retrieves labels) and update_page (which modifies page content).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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. It does not mention prerequisites, exclusions, or how it relates to get_labels or other page-manipulation tools. The intended usage is only implied by the stated purpose.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

append_to_sectionA

Append content to the end of a specific section.

Args: page_id: The page ID. heading: The heading text identifying the section. content: Content to append (ignored if input_file is provided). content_format: "markdown" or "storage". version_message: Optional commit message. input_file: Path to a file whose content will be appended.

ParametersJSON Schema
NameRequiredDescriptionDefault
contentNo
headingYes
page_idYes
input_fileNo
content_formatNomarkdown
version_messageNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

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 precedence of input_file over content and supports content_format choices ('markdown' or 'storage'), which is useful. However, it omits side effects (e.g., whether a new version is created), permission requirements, or error conditions—important for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with a one-sentence summary, followed by a clean, bulleted Args list. Every sentence serves a purpose, with no redundant or extraneous information. It is both concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of an output schema and moderate complexity (6 params), the description is largely complete: it covers all parameters and the core behavior. It lacks behavioral context like versioning impact or permission prerequisites, but these are not required by the schema. Overall, it adequately informs an agent about what the tool does and how to invoke it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, but the description compensates by listing all six parameters with meaningful explanations. It adds semantics beyond the schema by stating 'content ignored if input_file is provided' and clarifying the content_format options and optional nature of version_message.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states 'Append content to the end of a specific section,' which uses a specific verb and resource, and accurately differentiates from sibling tools like update_section (which would replace content). The action is unambiguous and directly aligns with the tool's name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly implies usage through the verb 'append' and the target 'specific section,' and the parameter list clarifies when content versus input_file is used. However, it does not explicitly mention when not to use this tool or contrast it with alternatives like update_section or update_page, so it stops short of full when/when-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_pageA

Create a new Confluence page.

Args: space_id: The space ID (numeric). title: Page title. body: Page content (ignored if input_file is provided). parent_id: Optional parent page ID. body_format: "markdown" or "storage" (default: markdown). input_file: Path to a file whose content becomes the page body.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyNo
titleYes
space_idYes
parent_idNo
input_fileNo
body_formatNomarkdown

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior2/5

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 only mentions that body is ignored if input_file is provided, but omits permissions, error behavior, side effects, or what the API returns.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is tightly structured: a one-sentence purpose followed by a clean Args block with each parameter on its own line. No redundant or filler content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the output schema exists, return values need not be explained. The description covers all parameters and defaults, but lacks information on permissions or how this tool relates to other page tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description provides meaningful explanations for all six parameters, including numeric space_id, body_format enum, parent_id optionality, and the body vs input_file interaction. This adds substantial value beyond the bare schema titles.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description begins with 'Create a new Confluence page.', which clearly states the tool's purpose with a specific verb and resource. This distinguishes it from sibling tools like get_page and update_page.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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. It does not mention when to prefer create_page over update_page or any prerequisites or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

download_attachmentA

Download an attachment from a page by filename.

Args: page_id: The page ID. filename: The attachment filename. output_file: If provided, save the attachment to this file path instead of returning base64 in the response.

ParametersJSON Schema
NameRequiredDescriptionDefault
page_idYes
filenameYes
output_fileNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral transparency burden. It discloses the key output behavior (base64 by default, file save with output_file) but omits other aspects like error handling, file not found behavior, or size limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise: a one-line purpose statement followed by a tight Args section. No wasted words, and the most critical information (purpose and options) is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has only 3 parameters and an output schema, the description covers the essentials: what it does and the two output modes. It doesn't detail error cases or security, but those are less critical for a simple download utility.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must explain parameters. It does so effectively: page_id, filename, and output_file are all described clearly, including the effect of leaving output_file null.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

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: 'Download an attachment from a page by filename.' This clearly distinguishes it from siblings like list_attachments and upload_attachment by focusing on retrieval of a single known attachment.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit guidance on when to use this tool versus alternatives. It does imply the need to know the filename, but it doesn't mention list_attachments for discovery or provide any exclusions or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

find_replace_in_pageB

Find and replace text within a page, preserving all HTML structure.

Args: page_id: The page ID. find_text: Text to search for. replace_text: Text to replace it with. version_message: Optional commit message.

ParametersJSON Schema
NameRequiredDescriptionDefault
page_idYes
find_textYes
replace_textYes
version_messageNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must disclose side effects and caveats. It only mentions preserving HTML structure, but doesn't explain whether the replacement is global, case-sensitive, regex, or whether it creates a new version (despite the version_message parameter). It also doesn't state if the operation is reversible or has any failure modes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely efficient: a one-sentence overview followed by an argument list. Every line provides essential information without redundancy, making it easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is a mutation with no annotations, and the description omits critical context such as return behavior, error cases, and whether the operation is scoped to the whole page or just visible text. The presence of an output schema doesn't compensate for the lack of operational details and usage context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Although the description lists each parameter with a one-line explanation, these add little beyond the schema's property names and titles. For example, 'Text to search for' is essentially restating 'find_text'. It doesn't clarify whether find_text is plain text or regex, what 'preserving HTML structure' means for replacement, or the effect of version_message.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific action ('Find and replace text within a page') and an important constraint ('preserving all HTML structure'), which distinguishes it from sibling tools like update_page or append_to_section.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives such as update_page or update_section. It doesn't mention prerequisites, exclusions, or typical use cases. An agent would have to infer appropriate usage from the tool name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_labelsB

Get labels on a page.

Args: page_id: The page ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
page_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

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, but it only states the basic action. It does not mention whether the operation is read-only, the return format, or any side effects. For a simple getter, this is minimal but not misleading.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise, consisting of one sentence and a single parameter definition. It is front-loaded with the core purpose and contains no unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one parameter, output schema present), the description is adequate but not fully complete. It covers the essential purpose but lacks explicit behavioral details like read-only status or any caveats that would help an agent invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds 'The page ID' for the page_id parameter, which is slightly more than the schema's type and title but essentially restates the parameter name. With schema description coverage at 0%, the description provides only minimal additional context.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool 'Get labels on a page' with a specific verb and resource, distinguishing it from sibling tools like get_page, get_page_sections, and add_label. The purpose is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It lacks any explicit context, exclusions, or mention of related tools like add_label, leaving the agent to infer usage solely from the tool name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_pageA

Get a Confluence page by ID.

Args: page_id: The numeric page ID. include_body: Whether to include page content (default: True). body_format: Return body as "markdown", "storage", or "view" (default: markdown). output_file: If provided, write the page body to this file path instead of returning it in the response. Keeps the LLM context clean. include_images: If True and output_file is set, download images and rewrite URLs to local paths. images_dir: Directory to save images to. Defaults to pictures/ next to the output file. Set this to control where images land.

ParametersJSON Schema
NameRequiredDescriptionDefault
page_idYes
images_dirNo
body_formatNomarkdown
output_fileNo
include_bodyNo
include_imagesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral burden. It discloses side effects such as writing the body to a file via output_file, downloading and rewriting images with include_images, and the images_dir default. It does not explicitly state that the page is not modified or cover error cases, but the key non-obvious behaviors are covered.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a well-structured docstring: a one-sentence purpose followed by a clean Args list. Every line adds value, with no redundancy or filler. It is front-loaded with the primary action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers all six parameters and their side effects, and the output schema handles return values. It lacks explicit guidance on when to use this tool vs. alternatives and does not state that it is a non-mutating read operation, but these are minor given the parameter detail and output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description fully compensates. It explains every parameter: page_id as numeric, include_body default, body_format options, output_file behavior, include_images conditionality, and images_dir default. This adds far more meaning than the bare schema properties.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Get a Confluence page by ID,' which is a specific verb plus resource. It differentiates from siblings like search_pages (search by query) and get_page_sections (list sections) by focusing on fetching a single full page by its unique ID.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage context is implied rather than explicit. The description does not mention when to prefer this over search_pages or get_page_tree, nor any exclusions or alternatives. It provides parameter-level guidance (e.g., use output_file to keep LLM context clean) but no direct comparison to sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_page_sectionsA

List all sections (headings) of a page with their content.

Args: page_id: The page ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
page_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description must carry the transparency burden. It indicates a read-only operation via 'List' and shows the content is included, but it does not disclose details like section ordering, nesting, or pagination.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one sentence plus a short args list, front-loaded with the primary action. No unnecessary words or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter read-only tool with an output schema, the description is adequate. It could mention edge cases or behavior with empty pages, but overall it provides enough context for an agent to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema itself has 0% description coverage, so the description's 'Args: page_id: The page ID' provides the only semantic cue. However, it is essentially a restatement of the parameter name with minimal added value—no format, constraints, or examples.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the function: 'List all sections (headings) of a page with their content.' It uses a specific verb ('List') and resource ('sections of a page'), and distinguishes itself from siblings like get_section (singular) and get_page_tree (hierarchy).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage context is implied but not explicit. The description says what it does but does not mention when to use it over alternatives like get_section or get_page, nor does it provide any exclusions or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_page_treeA

Get a page and all its descendants as a flat list.

When output_dir is set, saves each page as a .md file and downloads all images — same as the fetch-confluence skill.

Args: page_id: The root page ID. include_body: If True, fetch each page's body in markdown (slower). output_dir: If provided, write each page as a separate .md file to this directory. Files are named by depth and title. include_images: If True and output_dir is set, download all image attachments and rewrite URLs in markdown. images_dir: Directory to save images to. Defaults to pictures/ inside output_dir. Set this to control where images land.

ParametersJSON Schema
NameRequiredDescriptionDefault
page_idYes
images_dirNo
output_dirNo
include_bodyNo
include_imagesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full transparency burden. It discloses local file system writes when output_dir is set, image downloads and URL rewriting when include_images is true, and performance implications of include_body. It does not explicitly state that Confluence is never modified, but the verb 'get' plus the local-only side effects imply a read-only operation on the server.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a one-sentence summary followed by an Args block. Every sentence earns its place—no fluff, while the cross-reference to the fetch-confluence skill adds useful context. It is compact given the tool's complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (recursive tree, optional file system writes, image downloads), the description covers all key behaviors and parameter interactions. An output schema exists, so return-value details are not needed. Minor edge cases like missing directories or error handling are absent, but the core usage and effects are thoroughly described.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, yet the description gives meaningful semantics for all five parameters: page_id identifies the root, include_body controls markdown body fetching, output_dir triggers file exports and explains naming by depth and title, include_images requires output_dir and rewrites URLs, and images_dir defaults to pictures/ inside output_dir. This far exceeds the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states 'Get a page and all its descendants as a flat list,' which is a specific verb+resource+scope. It clearly distinguishes the tree-fetch behavior from siblings like get_page and get_section by emphasizing descendants and optional file export.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The opening sentence implies when to use: when you need a page plus its entire subtree. The Args section adds context for when output_dir triggers file writing and when include_images takes effect, and it references the fetch-confluence skill as an equivalent. However, it does not explicitly state alternatives or when not to use, though the sibling context makes this reasonably clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_sectionA

Get content of a specific section by heading name.

Args: page_id: The page ID. heading: The exact heading text to find. body_format: "markdown" or "storage" (default: markdown). output_file: If provided, write section content to this file.

ParametersJSON Schema
NameRequiredDescriptionDefault
headingYes
page_idYes
body_formatNomarkdown
output_fileNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Descriptions must carry the full burden since annotations are absent. It does disclose behavioral details like exact heading matching, body_format options, and optional file output. However, it does not explicitly state that this is a read-only operation, nor does it describe error behavior when headings are not found.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized with a single-purpose opening sentence followed by a clear, per-line argument list. Every line adds semantic value without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity and the presence of an output schema, the description covers purpose and all parameters. However, it lacks usage guidance (when to use vs alternatives) and behavioral context (e.g., error handling, read-only nature), which leaves some gaps for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must fully explain parameters. It does so effectively: page_id (page ID), heading (exact text), body_format (allowed values and default), and output_file (behavior). This adds significant value beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's action ('Get content of a specific section') with a specific resource (a section by heading name). This distinguishes it from siblings like get_page (whole page) and get_page_sections (list of sections).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when you know the exact heading text, but provides no explicit guidance on when to use this tool versus alternatives (e.g., get_page_sections or get_page). No exclusions or alternative recommendations are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_attachmentsC

List all attachments on a page.

Args: page_id: The page ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
page_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

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 says 'List all attachments on a page' without mentioning return format, pagination, read-only semantics, or whether it includes images or only file attachments. This is a significant gap for a listing tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very short and front-loaded, but the 'Args' section simply restates the schema parameter without added detail. It is concise but not well-structured, as the redundant arg documentation wastes space.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having an output schema, the description lacks essential context such as what counts as an attachment, how it relates to sibling tools, and when it should be used. The tool is too underspecified for reliable invocation by an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

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 compensate. However, it only repeats 'page_id: The page ID,' which adds no meaning beyond the schema's field title 'Page Id.' No format, source, or usage details are provided.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'List all attachments on a page,' which identifies the verb (list), the resource (attachments), and the scope (on a page). This distinguishes it from sibling tools like download_attachment, upload_attachment, and list_page_images.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 such as list_page_images or download_attachment. The description only states what it does, not when it should be preferred or excluded.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_page_imagesB

List all image references in a page.

Args: page_id: The page ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
page_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3/5.0
Behavior2/5

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 only states that it lists image references, but does not clarify whether the operation is read-only, what 'image references' includes (e.g., embedded vs. attachments), or how missing/invalid page IDs are handled. This lack of detail leaves significant behavioral ambiguity.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very brief and front-loaded with the tool's purpose. The Args section is clear and structured, though it repeats information already available in the schema. It is concise without wasted words, but the brevity contributes to the lack of depth in other dimensions.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool with one parameter and an output schema, the description is minimally adequate. However, it does not explain what constitutes an 'image reference' or whether the output contains URLs, paths, or IDs. The presence of an output schema reduces the need to describe returns, but the description still leaves gaps in conceptual clarity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

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 compensate. The only parameter, page_id, is described as 'The page ID,' which adds no meaningful information beyond the parameter's name and type. No format, source, or validation details are provided, making the description insufficient for properly understanding the parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

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 all image references in a page.' This clearly identifies the tool's function and distinguishes it from siblings like get_page_sections or list_attachments. However, it does not explicitly differentiate from potentially similar tools, so it falls short of a perfect score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'in a page' implies the tool is used to retrieve image references for a given page, but it does not provide explicit guidance on when to use this tool versus alternatives. No exclusions or alternative tool recommendations are mentioned, leaving usage context only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_pagesA

Search Confluence pages using CQL or simple text.

Args: query: CQL query or simple text. limit: Max results (1-50, default 10).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

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 purpose and parameters but does not explicitly confirm that it is a read-only operation, nor does it describe the output structure (though an output schema exists). Since search tools generally have no destructive side effects, the risk is moderate, but more transparency—such as noting it returns a list of matching pages—would improve the score.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise: a single lead sentence stating purpose, followed by a compact argument list. Every sentence provides necessary information without fluff, and the structure is front-loaded with the main purpose, making it easy to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple nature of the tool, an output schema, and the parameter explanations, the description is largely complete. The main gap is the lack of guidance on when to use simple text vs. CQL or whether the search is full-text, but this is a minor omission for a straightforward search tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema itself has no parameter descriptions (coverage 0%), so the description must compensate. It does so effectively by defining 'query' as 'CQL query or simple text' and 'limit' as 'Max results (1-50, default 10),' adding format, bounds, and defaults beyond the bare schema fields. This is exactly the kind of added meaning needed for correct invocation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: 'Search Confluence pages using CQL or simple text.' It uses a specific verb (search) and a distinct resource (Confluence pages), and it names the search methods (CQL or simple text), which differentiates it from sibling tools like get_page (retrieves a specific page) and get_page_tree (returns a hierarchy).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly indicates this is the tool for locating Confluence pages via search, providing enough context for an AI agent to infer it's the go-to tool for discovery. However, it does not explicitly list alternative tools or state when not to use it, so it falls short of the 'explicit when/when-not' level.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_pageA

Update an entire page's content.

Content can come from the body parameter OR from a file via input_file. Using input_file avoids sending large content through the LLM.

Args: page_id: The page ID. body: The new page body (ignored if input_file is provided). title: New title (optional, keeps current if not provided). body_format: "markdown" or "storage" (default: markdown). version_message: Optional commit message for this version. input_file: Path to a file whose content will be used as the page body. The file format is determined by body_format.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyNo
titleNo
page_idYes
input_fileNo
body_formatNomarkdown
version_messageNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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 discloses key traits: body is ignored if input_file is provided, title defaults to keeping current, body_format has a default of markdown, and version_message is a commit message. It also implies destructive replacement via 'entire page's content.' It doesn't cover permissions or rate limits, but the provided behaviors are significant and clearly stated, so a 4 is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a clear leading sentence followed by a concise argument list. The redundancy between the opening statement and the body parameter explanation is minor but not wasteful. Overall, it is succinct and front-loaded with the core purpose, earning a 4.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 6-parameter tool with no annotations, the description covers essential context: the input_file vs body decision, large-content handling, and default behaviors. It doesn't explicitly explain when to use this tool versus sibling update tools, and it relies on the output schema for return details. Still, the provided context is substantial and practical for an agent, so it earns a 4.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must fully compensate for parameter semantics. It does so admirably: each parameter is explained with real-world meaning, including the interaction between body and input_file, the allowed values for body_format, and the optional nature of title and version_message. This exceeds the baseline and provides complete semantic clarity.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'Update an entire page's content,' which clearly states the specific action (update), the resource (page), and the scope (entire content). This distinguishes it from sibling tools like update_section and find_replace_in_page, which target subsections or specific content.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context on when to use body versus input_file, explicitly noting that input_file avoids sending large content through the LLM. However, it does not explicitly mention alternatives like update_section for partial updates, so it lacks the explicit exclusion guidance seen in top-tier examples. The guidance is practical and context-rich, earning a 4.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_sectionA

Surgically replace the content of a specific section by heading.

Only the section under the specified heading is changed; the rest of the page is untouched.

Args: page_id: The page ID. heading: The heading text identifying the section. new_content: The replacement content (ignored if input_file is provided). content_format: "markdown" or "storage" (default: markdown). version_message: Optional commit message. input_file: Path to a file whose content replaces the section.

ParametersJSON Schema
NameRequiredDescriptionDefault
headingYes
page_idYes
input_fileNo
new_contentNo
content_formatNomarkdown
version_messageNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations to rely on, the description carries the full burden of behavioral disclosure. It does disclose the key scoping behavior and the precedence rule (input_file overrides new_content). However, it leaves gaps: what happens if the heading appears multiple times or not at all, and whether the operation is atomic or reversible. These are meaningful behavioral ambiguities.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is tightly written: a single lead sentence conveying the core action, followed by a clean argument list. Every line provides necessary information, and it avoids fluff. The structure makes it easy to scan and quickly grasp the tool's purpose and parameters.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 6 parameters, an output schema, and no annotations, the description covers the key aspects: what the tool does, parameter semantics, and an important edge case (input_file override). It does not address error conditions like 'heading not found' or ambiguous headings, which would improve completeness. Overall, it is nearly complete for its complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description compensates for the absence of schema parameter descriptions. It explains each of the six parameters, adds crucial detail for new_content (ignored if input_file is provided), and specifies allowed values/default for content_format. The brief definitions for page_id and heading are minimal but still provide basic semantic grounding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: 'Surgically replace the content of a specific section by heading.' It uses a specific verb ('replace') and resource ('section'), and distinguishes itself from siblings by emphasizing that only the targeted section changes and the rest of the page remains untouched. This differentiates it from update_page (whole page) and append_to_section (append).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the proper use case: when you need to replace a single section identified by heading without affecting other content. It does not explicitly name alternatives or exclusions, but the 'only the section...' phrasing provides clear context for when this tool is appropriate. This is sufficient for a competent agent to select it over siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

upload_attachmentA

Upload a file as an attachment to a page.

Can upload from a local file (input_file) or from base64 content.

Args: page_id: The page ID. filename: Name for the attachment (auto-detected from input_file if not given). content_base64: File content as base64 (ignored if input_file is provided). content_type: MIME type (auto-detected from filename if not given). comment: Optional comment for the attachment. input_file: Path to a local file to upload directly.

ParametersJSON Schema
NameRequiredDescriptionDefault
commentNo
page_idYes
filenameNo
input_fileNo
content_typeNo
content_base64No

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden and discloses important behaviors: content_base64 is ignored if input_file is provided, and if filename/content_type are not given they are auto-detected. It also indicates an optional comment parameter. However, it does not mention side effects, permissions, size limits, or overwrite semantics, which would be valuable for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description opens with a one-sentence summary, then sensibly breaks down all parameters in a structured Args list. It is concise for the amount of information conveyed, though slightly verbose with parameter details that are necessary given the schema's lack of descriptions.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given six parameters, two input modes, and no annotations, the description thoroughly covers how to correctly invoke the tool. It explains precedence rules, auto-detection behavior, and all parameter meanings. The existence of an output schema means return values need not be explained. The description is complete for effective use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema provides no descriptions (0% coverage), but the description's Args block explains every parameter, including the crucial relationships: content_base64 is ignored when input_file is given, filename is auto-detected, and content_type is auto-detected from filename. This adds meaning far beyond the schema's titles and property names.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Upload a file as an attachment to a page' with a specific verb and resource, and distinguishes itself from siblings like download_attachment and upload_image_and_embed by focusing on general file attachments. It also explicitly names the two input modes (local file or base64), making the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use this tool (for uploading attachments) but does not explicitly compare it with alternatives like upload_image_and_embed or download_attachment. It mentions the two input methods (local file vs base64) but lacks direct 'when to use this over X' guidance. The usage context is clear but exclusions are not stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

upload_image_and_embedA

Upload an image and optionally embed it in the page.

Can upload from a local file (input_file) or from base64 content.

Args: page_id: The page ID. filename: Name for the image file (auto-detected from input_file). image_base64: Image content as base64 (ignored if input_file is provided). content_type: MIME type (auto-detected from filename if not given). replace_url: If provided, replaces this external image URL in the page body with the new attachment reference. input_file: Path to a local image file to upload directly.

ParametersJSON Schema
NameRequiredDescriptionDefault
page_idYes
filenameNo
input_fileNo
replace_urlNo
content_typeNoimage/png
image_base64No

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

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 transparently explains input precedence (image_base64 ignored if input_file is provided), auto-detection of filename/content_type, and the side effect of replace_url on the page body. It does not mention permissions or rate limits, but it discloses the key mutation behavior and parameter interactions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded with the core purpose in the first sentence. The Args list is structured and every line adds value, with no filler or repetition of schema constraints. It earns its length for a 6-parameter tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 6-parameter mutation tool with no annotations, the description covers purpose, all parameter semantics, input methods, and side effects. An output schema exists, so return values do not need description. The only minor gap is lack of explicit sibling differentiation, but that is not central to completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 0% description coverage, so the description fully compensates by explaining all six parameters in the Args section. It adds meaningful context: page_id is the page ID, image_base64 is ignored when input_file is set, content_type auto-detects from filename, and replace_url swaps external URLs. This goes far beyond the bare schema property names.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a clear verb+resource: 'Upload an image and optionally embed it in the page.' This distinguishes it from sibling tools like upload_attachment, which likely only uploads, by explicitly mentioning the embedding capability. The two input modes (file/base64) add specificity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description conveys clear context for when to use the tool: uploading an image and optionally embedding it, with an explicit use case for replace_url (replacing an external image URL). However, it does not explicitly name alternatives or state when not to use it, such as recommending upload_attachment for plain uploads, so it stops short of full exclusion guidance.

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. Dates show when Glama detected each change.

  1. 17 tool updatesv0.1.0
    • First observedadd_label
    • First observedappend_to_section
    • First observedcreate_page
    • First observeddownload_attachment
    • First observedfind_replace_in_page
    • First observedget_labels
    • First observedget_page
    • First observedget_page_sections
    • First observedget_page_tree
    • First observedget_section
    • First observedlist_attachments
    • First observedlist_page_images
    • First observedsearch_pages
    • First observedupdate_page
    • First observedupdate_section
    • First observedupload_attachment
    • First observedupload_image_and_embed

TDQS

A3.6/5.0
Disambiguation4/5

Most tools have clearly distinct purposes (page CRUD, section manipulation, attachments, labels). However, upload_attachment and upload_image_and_embed overlap in functionality, and get_page_sections vs get_section might cause confusion for agents.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern using snake_case (e.g., get_page, create_page, list_attachments, update_section). Verb choices are predictable and readable.

Tool Count4/5

At 17 tools, the server is slightly heavier than the ideal 3-15 range, but each tool addresses a distinct Confluence operation. The count is justified by the breadth of features (pages, sections, attachments, labels, images).

Completeness3/5

The tool set covers create, read, and update for pages, plus attachments and labels. However, there are no delete operations for pages, attachments, or labels, which is a notable gap in lifecycle coverage.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/1vecera/confluence-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server