Skip to main content
Glama
saleshandy

Confluence API Docs MCP Server

by saleshandy

Confluence API Docs MCP Server

An MCP (Model Context Protocol) server that generates API documentation in Confluence from:

  • Swagger/OpenAPI specifications (JSON files or URLs)

  • NestJS controller files (TypeScript decorators)

Automatically generates Postman collections and embeds them in documentation pages.

Installation

npm install
npm run build

Related MCP server: Confluence MCP Server

Configuration

  1. Copy .env.example to .env

  2. Fill in your Confluence Cloud credentials:

  3. Add to ~/.claude.json:

{
  "mcpServers": {
    "confluence-api-docs": {
      "command": "node",
      "args": ["/home/harsh-vaghela/saleshandy/confluence-api-docs-mcp/dist/index.js"],
    }
  }
}

Usage

Available Tools

Space Management:

  • list_spaces - List all Confluence spaces

  • search_pages - Search for existing pages

  • get_page - Get page content

  • delete_page - Delete a page

Swagger/OpenAPI Documentation:

  • create_api_doc - Create API documentation from Swagger/OpenAPI spec (URL or file)

  • update_api_doc - Update existing API documentation from spec

  • sync_swagger_to_confluence - Full sync with configurable grouping (tag, path, or single page)

NestJS Controller Documentation:

  • create_api_doc_from_controller - Create documentation from NestJS controller files

  • update_api_doc_from_controller - Update documentation from controller files

Note: All tools automatically generate Postman collections embedded in the documentation.

Examples

List available spaces:

Show me available Confluence spaces

Create API docs from Swagger:

Create API documentation in space DEV from http://localhost:3000/swagger.json

Create API docs from NestJS controller:

Create API documentation from src/controllers/dialer.controller.ts in space DEV with base URL https://api.example.com

Create docs from controller directory:

Create API documentation from src/controllers in space DEV

Update API docs:

Update page 12345678 with latest API spec from /path/to/swagger.json

Update from controller:

Update page 12345678 from src/controllers/dialer.controller.ts

Development

npm run dev          # Run with ts-node
npm run build        # Build to dist/
npm start            # Run compiled version
npm run clean        # Remove dist/

Architecture

MCP Server
  ├── Parsers
  │   ├── Swagger Parser Service
  │   │   └── Parses OpenAPI specs from URLs or files
  │   └── Controller Parser Service
  │       └── Parses NestJS TypeScript controller files
  ├── Generators
  │   ├── Doc Generator Service
  │   │   └── Converts parsed specs to Confluence storage format
  │   └── Postman Generator Service
  │       └── Generates Postman Collection v2.1 JSON
  ├── Confluence Client Service
  │   └── Handles Confluence REST API v2 calls
  └── Tools
      ├── Space Management
      ├── Swagger-based Documentation
      ├── Controller-based Documentation
      └── Maintenance

Dual-Mode Pipeline

Both Swagger and Controller inputs converge to the same ParsedSwagger format, ensuring identical output documentation:

Swagger JSON/URL → Swagger Parser → ParsedSwagger ─┐
                                                    ├→ Doc Generator → Confluence HTML + Postman JSON
NestJS Controller → Controller Parser → ParsedSwagger ┘

Supported Swagger/OpenAPI Versions

  • OpenAPI 3.0.x

  • OpenAPI 3.1.x

  • Swagger 2.0

License

MIT

Available Tools

9 tools
create_api_docC

Create a new API documentation page from a Swagger/OpenAPI specification

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNoOptional: custom page title (defaults to API title)
spaceKeyYesTarget Confluence space key
filterTagsNoOptional: only include endpoints with these tags
filterPathsNoOptional: only include endpoints matching these path patterns
parentPageIdNoOptional: parent page ID for nesting
swaggerSourceYesURL or file path to the Swagger/OpenAPI specification

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full disclosure burden, yet it is a single sentence. It conveys that a page is created but does not disclose whether the operation is idempotent, whether an existing page with the same title is overwritten or duplicated, or whether swaggerSource must be reachable from the server. For a mutating tool with zero annotation coverage, this is a significant gap.

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?

A single 12-word sentence with zero filler; the verb and object are front-loaded. Every word earns its place and nothing extraneous is included.

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?

For a 6-parameter mutation tool with no annotations, no output schema, and a near-twin sibling, the description is too thin. It omits default filter behavior (does omitting filterTags/filterPaths import all endpoints?), the on-success result, and re-run semantics. An agent gets schema help for parameters but no decision help for tool selection or operational expectations.

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?

Schema description coverage is 100%: every parameter (swaggerSource, spaceKey, title, filterTags, filterPaths, parentPageId) already carries an inline description, including optionality and defaults. The tool description adds no parameter meaning beyond the schema, which matches the baseline-3 rule for high-coverage schemas.

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 verb ('Create'), a concrete deliverable ('new API documentation page'), and the input source ('from a Swagger/OpenAPI specification'). The source phrase implicitly distinguishes it from the controller-based sibling create_api_doc_from_controller, but it does not explicitly differentiate it from sync_swagger_to_confluence, which also ingests Swagger specs.

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 offers no guidance on when to choose this tool over siblings. Nothing clarifies whether to prefer this over create_api_doc_from_controller (controller source), update_api_doc (page already exists), or sync_swagger_to_confluence, nor whether re-running creates duplicates. An agent selecting between the two create variants must rely on name-guessing.

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

create_api_doc_from_controllerC

Create a new API documentation page from NestJS controller files

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNoOptional: custom page title
baseUrlNoOptional: API base URL for Postman collection
spaceKeyYesTarget Confluence space key
filterTagsNoOptional: only include endpoints with these tags
filterPathsNoOptional: only include endpoints matching these path patterns
parentPageIdNoOptional: parent page ID for nesting
controllerPathYesPath to a .controller.ts file or directory containing controller files

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are present, so the description bears the full responsibility for behavioral disclosure. It states a creation action but does not mention side effects, whether the tool is idempotent, what happens if a page with the same title exists, or any permission requirements. This is insufficient for a mutation tool that creates a resource.

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 single clear sentence with no filler words or redundant information. It states the action and source directly, earning its place without waste.

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?

With seven parameters, no output schema, and no annotations, this terse description leaves significant gaps. It omits behavioral details, return/result information, and any guidance about how controller files are processed. The schema covers parameters well, but the overall tool context is under-specified for a complex operation.

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?

All seven parameters are already documented in the input schema, so the baseline for parameter semantics is met. The description's mention of 'NestJS controller files' adds a tad of context about controllerPath, but it mostly restates what the schema already conveys. No additional parameter-specific insights are provided.

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 uses a clear verb (create), resource (new API documentation page), and source (NestJS controller files), so an agent immediately understands the action. However, it does not differentiate this from sibling create_api_doc or update_api_doc_from_controller, since the description does not state what distinguishes creation from controller files vs. other sources or updating.

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 siblings like create_api_doc or update_api_doc_from_controller. The phrase 'from NestJS controller files' implies a use case but provides no explicit conditions, exclusions, or alternative routing. An agent must infer when creation is appropriate rather than an update.

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

delete_pageC

Delete a Confluence page

ParametersJSON Schema
NameRequiredDescriptionDefault
pageIdYesThe Confluence page ID to delete

TDQS

C2.9/5.0
Behavior2/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 restates the action implied by the tool name and does not mention irreversibility, cascading effects on child pages, authentication requirements, or any other side effects of deletion.

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 a single, front-loaded sentence with no filler. It is appropriately concise for such a simple operation, though it is arguably too spare to add much value beyond the tool name.

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?

For a destructive tool with no annotations and no output schema, the description is too minimal. An agent cannot determine whether deletion is permanent, whether related content is affected, or what response to expect on success or failure.

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 input schema already documents pageId with 100% coverage and a clear description. The tool description adds no additional parameter semantics beyond what the schema provides, so the baseline score of 3 applies.

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 clearly states the operation ('Delete') and the resource ('a Confluence page'), making the tool's purpose immediately understandable. It distinguishes itself from siblings like get_page, create_api_doc, and update_api_doc, though it is terse and does not clarify whether deletion is soft or permanent.

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 gives no guidance on when to use this tool versus alternatives, nor any conditions or exclusions. It does not mention prerequisites like permissions, whether deletion is reversible, or when a sibling tool might be more appropriate.

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

get_pageA

Get the content of an existing Confluence page

ParametersJSON Schema
NameRequiredDescriptionDefault
pageIdYesThe Confluence page ID

TDQS

A3.5/5.0
Behavior2/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 that this is a read operation and that the page must already exist, but it does not clarify what 'content' includes (body, metadata, attachments) or how missing/invalid pages are handled.

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?

One short sentence with no wasted words, and the core action is front-loaded. It is concise without sacrificing clarity.

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?

The tool is simple, but with no output schema and no annotations, the vague term 'content' leaves questions about return format and error behavior. It is minimally adequate but has clear gaps in routing and expected output details.

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?

Schema description coverage is 100%, so the schema already fully documents the single pageId parameter. The description adds no parameter-specific meaning beyond the 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 a specific verb ('get') and resource ('content of an existing Confluence page'). This clearly distinguishes it from sibling create/update/delete/list/search operations.

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 intended use is implied: when you need the content of an existing page. However, there is no explicit guidance on when to choose this over search_pages or list_spaces, nor any mention of how to obtain the pageId.

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

list_spacesA

List all available Confluence spaces

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/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 burden. 'List all available Confluence spaces' indicates a read-only operation and implies permission-based availability, but it does not disclose output shape, pagination, or ordering. This is acceptable for a simple list but not deeply informative.

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 single, front-loaded sentence with no wasted words. Every word contributes meaning and the core operation is immediately visible.

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 zero-parameter list tool, the description is nearly sufficient for an agent to invoke it correctly. It lacks details about the returned fields or limits, but the absence of parameters and the simple read-only nature keep the requirements minimal.

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 input schema is empty with 100% coverage, so there are no parameters requiring explanation. The description appropriately handles this by focusing on the operation itself.

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 uses a specific verb ('List') and resource ('all available Confluence spaces'), making the function unambiguous. It is clearly distinct from the sibling page- and doc-focused tools.

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 about when to choose list_spaces over alternatives, nor any mention of exclusions or use cases. The intended context must be inferred entirely from the tool name and description.

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

search_pagesC

Search for existing pages in Confluence

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSearch query term
spaceKeyNoOptional: limit search to a specific space key

TDQS

C2.9/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, but it only says 'Search for existing pages.' It does not mention whether the search covers titles, bodies, or both, whether results are paginated, or what the return shape is. The read-only nature is implied but not stated.

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 a single six-word sentence with no redundancy or filler, and the core action is front-loaded. It could have included a brief usage note or scope clarification without becoming bloated, so it is concise but not maximally useful in structure.

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?

This is a simple 2-parameter tool with no nested objects and full schema coverage, so the basic invocation is clear. However, since there is no output schema, the description does not explain what the search returns, and there is no mention of search semantics or result limits. Adequate for a basic call, but incomplete for confident use.

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?

Schema description coverage is 100%, so both parameters are already documented in the schema. The tool description adds no extra meaning to query or spaceKey, but it does align with the search action. A baseline score of 3 is appropriate.

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 verb ('Search') and resource ('existing pages in Confluence'), so an agent understands this is a lookup-by-query tool. However, it does not explicitly distinguish it from siblings like get_page or list_spaces, 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.

Usage Guidelines2/5

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

The description gives no guidance on when to prefer search_pages over get_page or list_spaces, and no exclusions or alternative suggestions. The schema mentions spaceKey as an optional filter, but the description does not explain when that filter matters.

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

sync_swagger_to_confluenceC

Sync a Swagger/OpenAPI spec to Confluence, optionally creating nested pages

ParametersJSON Schema
NameRequiredDescriptionDefault
groupByNoHow to organize pages: tag (separate pages per tag), path (separate pages per path), or single (all on one page)
spaceKeyYesTarget Confluence space key
parentPageIdNoOptional: parent page ID for organizing documentation
swaggerSourceYesURL or file path to the Swagger/OpenAPI specification

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It states 'sync' and optional nested pages, but does not disclose whether existing pages are updated or overwritten, whether removed spec items are deleted, or what side effects a sync may have.

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 a single sentence, front-loaded with the core operation, and contains no filler. It could have included more behavioral detail, but as written it is compact and 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?

With 4 parameters, no annotations, no output schema, and several overlapping sibling tools, one sentence is not enough for an agent to safely invoke this tool. The description does not clarify sync semantics, behavior for existing pages, or page-organization outcomes sufficiently.

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?

Schema description coverage is 100%, so the parameters are already well documented and the baseline is 3. The description adds only the notion of nested pages, loosely tied to parentPageId/groupBy, but provides no additional parameter-level meaning beyond the schema.

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 names a specific verb (sync), a source (Swagger/OpenAPI spec), and a target (Confluence), and adds optional nested-page creation. It is clear about the core operation, though it does not explicitly differentiate it from sibling tools like create_api_doc or update_api_doc.

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 instead of the similarly purposed create_api_doc, update_api_doc, or controller-based siblings. Usage context is only implied by the source type, with no alternatives, exclusions, or conditions stated.

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

update_api_docB

Update an existing API documentation page with new Swagger/OpenAPI spec

ParametersJSON Schema
NameRequiredDescriptionDefault
pageIdYesExisting Confluence page ID to update
filterTagsNoOptional: only include endpoints with these tags
filterPathsNoOptional: only include endpoints matching these path patterns
swaggerSourceYesURL or file path to the Swagger/OpenAPI specification

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations available, the description carries the full burden of behavioral disclosure. It indicates the page will be modified, but it does not state whether the page content is overwritten wholesale, whether existing non-generated content is preserved, whether a new Confluence version is created, or what permissions/errors are involved.

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 single focused sentence with no filler or redundant wording. It puts the core action and target resource up front, making it easy for an agent to grasp quickly.

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?

For a mutating tool with no annotations and no output schema, the description is incomplete: it omits the optional filtering behavior, the effect on page content, and how a successful update is communicated. Sibling differentiation is also absent, so an agent cannot confidently choose this over similar update/sync tools.

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 input schema already describes all four parameters, so the baseline is 3. The description adds a little meaning by tying 'existing page' to pageId and 'new spec' to swaggerSource, but it adds nothing about filterTags or filterPaths.

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 uses a specific verb ('Update'), a clear resource ('an existing API documentation page'), and the input type ('new Swagger/OpenAPI spec'). It clearly distinguishes update-from-create by saying 'existing', but it does not distinguish this tool from sibling 'update_api_doc_from_controller' or 'sync_swagger_to_confluence'.

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 phrasing implies this tool is for refreshing an already-created Confluence API doc page when a new spec is available. However, it gives no explicit when-not-to-use guidance, no prerequisites, and does not mention alternatives like create_api_doc or update_api_doc_from_controller.

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

update_api_doc_from_controllerB

Update an existing API documentation page with NestJS controller files

ParametersJSON Schema
NameRequiredDescriptionDefault
pageIdYesExisting Confluence page ID to update
baseUrlNoOptional: API base URL for Postman collection
filterTagsNoOptional: only include endpoints with these tags
filterPathsNoOptional: only include endpoints matching these path patterns
controllerPathYesPath to a .controller.ts file or directory containing controller files

TDQS

B3.2/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 disclosing side effects. It states the update action but does not explain whether the existing page content is replaced, merged, or preserved, nor does it mention authentication requirements or failure behavior. This is a significant gap for a mutating operation.

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 single, compact sentence that front-loads the core action and resource. Every word earns its place, with no padding or redundant restatement of the tool name.

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 and no output schema, the description is too thin. It fails to disclose the overwrite/merge behavior of the update or provide any operational context such as whether the page must exist or what happens to unspecified content. Parameter documentation is solid, but the behavioral context is incomplete.

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?

Schema description coverage is 100%, so every parameter already has a meaningful description in the schema. The tool description adds little beyond echoing the controller-file concept already present in controllerPath. Per baseline, a 3 is appropriate when the schema carries the parameter documentation load.

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 names a specific verb ('Update'), a specific resource ('existing API documentation page'), and a specific input source ('NestJS controller files'). This distinguishes it clearly from the sibling create_api_doc_from_controller and from Swagger-based tools like sync_swagger_to_confluence.

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 about when to choose this tool versus alternatives such as update_api_doc or create_api_doc_from_controller. The agent must infer from the tool name and description that this is for updating existing pages from controller files, with no explicit conditions or exclusions.

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. 9 tool updatesv1.0.0
    • First observedcreate_api_doc
    • First observedcreate_api_doc_from_controller
    • First observeddelete_page
    • First observedget_page
    • First observedlist_spaces
    • First observedsearch_pages
    • First observedsync_swagger_to_confluence
    • First observedupdate_api_doc
    • First observedupdate_api_doc_from_controller

TDQS

B3.1/5.0
Disambiguation2/5

The tool set contains overlapping functions, particularly create_api_doc and sync_swagger_to_confluence, which both handle Swagger/OpenAPI imports with unclear distinctions. Similarly, create_api_doc and create_api_doc_from_controller differ only by source but share the 'create' prefix, causing potential misselection. The generic page operations are distinct, but the API documentation tools blur boundaries.

Naming Consistency3/5

Most tools follow a verb_noun pattern (e.g., list_spaces, get_page, delete_page), but sync_swagger_to_confluence breaks this convention with an irregular long phrase. Additionally, create_api_doc and create_api_doc_from_controller inconsistently encode the source (one has a suffix, the other does not), reducing predictability.

Tool Count4/5

With 9 tools, the server is reasonably scoped for managing Confluence pages and API documentation. The count is not excessive, though some redundancy among Swagger/OpenAPI tools makes it feel slightly heavier than necessary.

Completeness4/5

The core CRUD operations for pages are covered (create, read, update, delete), along with search and space listing. API documentation generation supports multiple sources (Swagger, NestJS) and nested pages via sync. Missing minor features like version history or publishing workflows, but no critical gaps for the stated domain.

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/saleshandy/saleshandy-confluence-mcp-server'

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