Skip to main content
Glama

atlas-lite-mcp

A local stdio MCP server for Jira Cloud and Confluence Cloud, designed for fast, focused reads and surgical edits instead of full-document rewrites. It calls the Atlassian REST APIs directly rather than routing through Rovo, preserves untouched Confluence storage XHTML, and uses placeholder tokens to carry macros and other rich content through markdown edits. No Rovo service is used; this is not a performance benchmark or a promise about Atlassian or MCP-client billing.

Requirements

  • Node 20.19 or newer for the server. For source development, use Node 22.12 or newer on the Node 22 line to satisfy the current test toolchain.

  • An Atlassian Cloud account with access to the Jira projects and Confluence spaces you intend to use.

  • An Atlassian API token owned by that account, and the matching account email. Use a token instead of your password. Tokens can expire; select an appropriate expiration and rotate them before it passes.

  • An MCP client that can launch local stdio servers, such as Claude Code, Claude Desktop or Cursor.

Related MCP server: Confluence Reader MCP Server

Install

Install the CLI from npm, then configure your Atlassian credentials:

npm install -g atlas-lite-mcp
atlas-lite-mcp init

Installation and init do not change your MCP client settings. Choose the client you want to use and register the server yourself.

Claude Code:

claude mcp add atlas -- atlas-lite-mcp

The -- separates Claude options from the server launch command. Claude Code registers this at local scope by default, private to you in the current project. Add --scope user before atlas if you want it available across your projects.

Codex:

codex mcp add atlas -- atlas-lite-mcp

Codex saves this in your user MCP configuration. Start a new client session after registration and ask it to call sites_list once credentials are configured.

Without a global installation, run npx -y atlas-lite-mcp init and use npx -y atlas-lite-mcp as the client launch command, for example claude mcp add atlas -- npx -y atlas-lite-mcp. To run a source checkout, see Development.

Quick setup with environment variables

With no config file, set these in the environment of the process that launches the server:

export ATLASSIAN_URL='https://your-site.atlassian.net'
export ATLASSIAN_EMAIL='you@example.com'
export ATLASSIAN_TOKEN='your-api-token'
export ATLASSIAN_TOKEN_TYPE='classic'

The token is a placeholder, not a real credential. Supply the real value through your local secret manager or a private environment, not a shared shell script or repository. The server does not load .env files automatically.

ATLASSIAN_TOKEN_TYPE accepts classic (the default, for tokens without scopes) or scoped. The first three variables must all be set. This creates one site named after the URL subdomain, for example your-site. Launch Claude Code from that environment; GUI clients may need their own env configuration. Ask the client to call sites_list to check product reachability. That tool makes read-only network probes.

Interactive setup

atlas-lite-mcp init

Or, without a global install, use npx -y atlas-lite-mcp init.

The wizard asks for a site name, URL, email, token or environment-variable name, token type, and optional default Jira project and Confluence space. An uppercase variable name such as NORTHSTAR_ATLASSIAN_TOKEN is saved as an environment reference rather than as a literal token. The token prompt suppresses terminal echo and readline history.

init writes sites.json with mode 600, preserving other sites and replacing an existing site with the same name ignoring case. It makes read-only Jira /myself and Confluence spaces probes, so it requires network access to verify credentials. A failed probe is reported but does not prevent saving; successful setup is not proof that every tool is permitted. If an environment reference is unset, verification is skipped. Restart the MCP server after changing configuration.

Multiple sites

Create ~/.config/atlas-lite-mcp/sites.json with this synthetic example:

{
  "sites": [
    {
      "name": "northstar",
      "baseUrl": "https://northstar.atlassian.net",
      "email": "you@example.com",
      "apiToken": "${NORTHSTAR_ATLASSIAN_TOKEN}",
      "tokenType": "classic",
      "defaultJiraProject": "DEMO",
      "defaultConfluenceSpace": "DOCS"
    }
  ]
}

Names, project keys and space keys here are examples, not built-in defaults. Add more entries to sites for other sites or credential profiles. Names must be unique ignoring case. Required fields are name, baseUrl, email and apiToken; optional fields are tokenType, defaultJiraProject, defaultConfluenceSpace and cloudId.

  • apiToken can be a literal token or a whole-string ${ENV_VAR} reference resolved in the server process. Prefer the reference form. An unset reference marks that site unavailable without disabling other sites.

  • Set ATLAS_MCP_CONFIG to an absolute file path to use a different config file.

  • File wins over env: when a config file exists, it replaces the single-site environment fallback. The server reports the precedence on stderr; referenced environment variables are still resolved.

  • Protect the file, especially if it contains literal credentials:

chmod 600 ~/.config/atlas-lite-mcp/sites.json

The 18 page, table and issue tools accept optional site, matched case-insensitively by name or hostname; sites_list takes no arguments and lists all configured sites. A page or issue URL selects its configured hostname; a conflicting explicit site fails. Bare page IDs and issue keys use the only configured site, or require site if several are configured. For profiles sharing a hostname, pass the explicit profile name with either a URL or a bare ID/key. An ambiguous hostname asks for the profile name instead of choosing credentials arbitrarily.

Scoped tokens

In Atlassian's token-management screen, choose the scoped-token creation option, an expiry, the application and permissions needed for your intended operations. See Atlassian's API-token guide. Token scopes and the account's product, project, space and item permissions both apply. A scope does not grant access the account lacks.

Set ATLASSIAN_TOKEN_TYPE='scoped' for env-only setup, or use this site entry:

{
  "name": "your-site",
  "baseUrl": "https://your-site.atlassian.net",
  "email": "you@example.com",
  "apiToken": "${ATLASSIAN_TOKEN}",
  "tokenType": "scoped",
  "cloudId": "your-cloud-id"
}

cloudId is optional. If absent, the implementation resolves it from https://your-site.atlassian.net/_edge/tenant_info and caches a successful result for the process. If discovery fails, set the site's cloudId explicitly. There is no environment variable for cloudId and no token-type auto-detection or 401 fallback.

Both token types use Basic authentication with email and API token. Scoped requests go through https://api.atlassian.com/ex/jira/{cloudId}/rest/api/3/... or https://api.atlassian.com/ex/confluence/{cloudId}/wiki/...; classic requests use the configured site origin.

Choose scopes against the REST operations you actually use, not the Rovo agent-interface scopes. Jira tools read/search issues, fields, create/edit metadata and transitions; writes create/update/delete issues, transition them or add comments. User resolution and probes also read user profiles. Confluence tools read pages and spaces, search via CQL, create/update/trash pages and add footer comments. Deletion requires delete:issue:jira (or the classic write:jira-work scope) and delete:page:confluence, respectively, plus the account's Jira Delete issues or Confluence page-delete permissions. Consult the scope requirements in the Jira delete reference and Confluence delete reference, along with the Jira REST reference, Confluence REST v2 reference and CQL search operation. No universal minimal scope set or cross-product token coverage has been live-verified for this release. If a token only covers one product, the other product's reachability probe may fail; use separate named profiles when needed.

Claude Desktop and Cursor

Merge the following into the client's existing configuration rather than replacing other servers. Values shown are placeholders. Keep real credentials out of version control; alternatively use a private sites.json and omit this env object when no environment references are needed.

{
  "mcpServers": {
    "atlas": {
      "command": "npx",
      "args": ["-y", "atlas-lite-mcp"],
      "env": {
        "ATLASSIAN_URL": "https://your-site.atlassian.net",
        "ATLASSIAN_EMAIL": "you@example.com",
        "ATLASSIAN_TOKEN": "your-api-token"
      }
    }
  }
}

This example defaults to classic. For a scoped token, also set ATLASSIAN_TOKEN_TYPE to scoped in env. If using ${ENV_VAR} references in sites.json, those variables must be available to the launched server; do not assume a GUI inherits your terminal environment.

  • Claude Desktop: edit claude_desktop_config.json using Settings > Developer > Edit Config. On macOS it is at ~/Library/Application Support/Claude/claude_desktop_config.json; on Windows, %APPDATA%\Claude\claude_desktop_config.json. Restart the app.

  • Cursor: use ~/.cursor/mcp.json for personal global configuration or .cursor/mcp.json for project configuration. Never commit a project configuration containing a real token. Reload the client after editing.

  • Ensure npx and a supported Node are on the client's PATH; use an absolute executable path if necessary.

Setup references: Claude Code MCP, Claude Desktop local servers, Cursor MCP.

Tools

There are 19 tools: the 18 page, table and issue tools accept optional site; sites_list takes no arguments and lists all configured sites. Page write tools take url, which also accepts a bare page ID. Issue tools take key, which also accepts an issue URL. Searches default to 10 pages or 20 issues.

Tool

Purpose and main inputs

page_get

Read by url or id; format is markdown, storage or outline, with optional section heading.

page_edit

Exact storage XHTML find and replace at url; set all: true for multiple matches.

page_update_section

Replace the content under heading with markdown, preserving supplied placeholder tokens.

page_append

Append markdown to a page at url.

page_create

Create from space, title and markdown, with optional parent URL or ID.

page_delete

Move the published page at url to trash. Does not purge pages or delete drafts.

page_search

Search by CQL or plain-text query, with optional space and limit.

page_comment

Add a footer comment using url and markdown.

table_get

Read a table at url; optional table is its 1-based index or preceding heading text.

table_update

Set value at a row label and column header, with optional table selector.

table_add_row

Add cells keyed by column names; optional position is end or after:<row label>.

issue_get

Read key, with optional extra fields and include_comments.

issue_search

Search by JQL or plain-text query, with optional limit; applies the configured default project when appropriate.

issue_create

Create from type and summary; optional project, description, fields, labels and assignee.

issue_update

Update key using fields by name or ID, summary or markdown description.

issue_delete

Permanently delete key; optional deleteSubtasks: true also deletes its subtasks. Default false.

issue_transition

Move key using a target status or transition name in to.

issue_comment

Add a comment using key and markdown.

sites_list

List names, hosts, default project/space and product reachability via read-only probes.

To clear an optional Jira field, pass null in issue_update.fields, for example {"Assignee": null, "Due date": null}. Use an empty array to clear labels or other lists. Required fields cannot be cleared; Jira still enforces its field and workflow rules. To clear the description, use the separate description parameter with an empty string. When several fields share a display name, the tool lists candidate field IDs; use the intended ID instead of the ambiguous name.

Placeholder tokens

Markdown reads represent unsupported rich content as {{atlas:N}} [hint], for example {{atlas:3}} [macro: toc]. Keep the token in submitted markdown to keep the underlying macro, image, attachment or ADF node; the trailing hint is ignored on restoration. Tokens are scoped to the same site and page or issue, not portable identifiers.

Confluence column layouts appear as an opaque {{atlas:N}} [layout] token. Use page_get with format: outline to find headings, then section to read or edit inside a column or panel. Nested content keeps page-wide token numbers, so a view may skip numbers. Restoring an enclosing layout or panel token into its own section is rejected. Jira tables with merged cells or explicit column widths also use an opaque token to preserve their geometry. Re-read content after upgrading the server before reusing any earlier token numbers.

page_update_section, page_append, issue_update descriptions and issue_comment restore supported token references. Omitting a token from a replaced section or description removes that content and reports it as Dropped:. These four restoration paths omit unknown tokens and report them as Dropped:; Jira issue_create does the same for unknown description tokens. Confluence page_create and page_comment do not restore page token references: they treat them as ordinary literal text without a Dropped: warning. A changed page or issue causes the map to be rebuilt from current content; re-read before editing if it changed, since token numbers are not a conflict-proof edit handle.

Use page_get with format: storage and page_edit when exact XHTML is needed. Table cell updates refuse macros, images, nested tables and targeted row/column spans instead of flattening them.

Safety

  • page_delete moves a published page to Confluence trash, where it can be restored. It does not offer permanent purge, draft deletion or recursive page-tree deletion.

  • issue_delete permanently deletes a Jira issue. Jira refuses issues with subtasks unless deleteSubtasks: true is explicitly supplied. Both delete tools are marked destructive in MCP annotations and run when called; account permissions and token scopes are enforced by Atlassian.

  • All writes change live content. Section, description and exact-match edits can also remove content. Delete requests are not retried after a network error or 5xx; inspect remote state before retrying an ambiguous result. Rate-limit responses use the normal bounded 429 retry policy.

  • Every successful changed Confluence page PUT increments the page version and sends atlas-lite-mcp <tool_name> as its version message. A no-op does not create a new version. Page creation and footer-comment POSTs do not send this message. Jira mutations do not create Confluence-style page versions or carry that message.

  • Confluence page history can help recover edits; it does not undo comments, Jira transitions, notifications or workflow automation side effects.

  • Tokens are never logged, echoed in errors or returned by tools. Server diagnostics use stderr; stdout is reserved for MCP. Page and issue content is still returned to the MCP client, so use an account with only the access you intend to expose.

  • Use HTTPS site URLs, keep credentials private, prefer environment references and protect config files with chmod 600. The server warns about group/other file permissions but does not refuse to load that file.

  • Page writes validate XHTML and retry one version conflict by re-fetching and re-applying the edit. This is not a general transaction or automatic rollback guarantee.

Troubleshooting

  • 401: check the matching account email, token value and expiry. Create a new token at token management, update the active configuration and restart the server. Verify classic versus scoped explicitly.

  • 403: check product/item access and the token's REST scopes. A successful login or init probe does not establish write permission.

  • 404: confirm the page ID, issue key and selected site. Atlassian may also return 404 when the account lacks permission.

  • 429: the client honors Retry-After, caps each wait at 60 seconds and retries at most three times. Persistent throttling is returned as an error, with RateLimit-Reason when present; wait before trying again. Requests time out after 30 seconds.

  • Missing site or env: call sites_list, check ATLAS_MCP_CONFIG and file precedence, and ensure referenced variables reach the server process. Restart after edits.

  • No find match: markdown text may differ from storage markup or entity escaping. Read format: storage to choose an exact replacement. Ambiguous targets need a unique heading, row, column or table selector.

Development

From a source checkout with pnpm 9.15.0 and a supported development Node:

pnpm install
pnpm typecheck
pnpm test
pnpm build
npm pack --dry-run
node dist/index.js --version

The version command should print 0.2.0. Run node dist/index.js for the local stdio server. pnpm test is the offline unit suite and excludes test/smoke/**. Keep ATLAS_ALLOW_NETWORK unset for offline checks. The publish hook runs exactly pnpm run typecheck && pnpm test && pnpm run build, not smoke tests. npm pack --dry-run inspects packaging without publishing; build first because prepublishOnly runs on publish, not pack. The package boundary is package.json, README.md, LICENSE and dist/** only.

For source development, run node dist/index.js init from the repository, then register the built entry point using its absolute path:

claude mcp add --scope user atlas -- node /absolute/path/to/atlas-lite-mcp/dist/index.js
codex mcp add atlas -- node /absolute/path/to/atlas-lite-mcp/dist/index.js

Use an absolute path to a supported Node binary too if the client cannot find node. Rebuild after pulling source changes, then start a new MCP client session. Registration and a successful MCP handshake do not verify Atlassian credentials; sites_list checks read access to each product.

Optional live smoke test

This is not an offline check. Do not run it on normal pages or issues. The live run for this release has not been performed because owner-supplied scratch IDs are pending.

Before opting in, manually create one disposable scratch Confluence page and one disposable scratch Jira issue reserved exclusively for this run, with no other editors or automation depending on them. Do not reuse business content. The page must have a heading and exactly one ordinary table with a header row and a labelled body row, each with at least two cells; the second body cell must be editable plain content, with no unsupported spans or rich objects. The issue must allow label edits, comments and an unambiguous transition away from its starting status, ideally with a usable reverse transition. Missing fixtures fail rather than silently passing.

Use the normal private credentials/config, replace both placeholders, and set the three ACK guards only after accepting these consequences:

ATLAS_ALLOW_NETWORK=1 \
ATLAS_SMOKE_PAGE='<disposable-scratch-page-id>' \
ATLAS_SMOKE_ISSUE='<UPPERCASE-SCRATCH-KEY>' \
ATLAS_SMOKE_ACK_EXCLUSIVE_SCRATCH=1 \
ATLAS_SMOKE_ACK_PERMANENT_COMMENT=1 \
ATLAS_SMOKE_ACK_TRANSITION_RISK=1 \
pnpm test:smoke

Also set ATLAS_SMOKE_SITE to the explicit configured site/profile name when there is not exactly one configured site. Use a bare numeric page ID and uppercase issue key for the selected site. The ACK variables are harness requirements, not a general server authorization feature.

The suite appends/edits/removes its page marker, changes/restores exact table-cell XHTML, reads outline/section content, adds/removes a unique Jira label, adds a permanent issue comment, and discovers transitions read-only before attempting a real forward transition and a reverse transition when available. A reverse transition is not guaranteed. Page versions, the comment, transition history, notifications and automation effects can remain even after content/status restoration. It does not create pages or issues, and there is no comment deletion or automatic removal of scratch objects.

The harness waits for tracked handlers before cleanup, but deadlines, network ambiguity or process interruption cannot prove that a remote write did not happen. On any failure or interruption, manually inspect both targets for atlas-smoke- markers, table markup, labels, comments and final issue status before retrying. A failed comment request may already have created its permanent comment, so do not blindly rerun. A passing run verifies only these scenarios and observable restoration, not every tool, endpoint, scope, external automation effect or the server factory's metadata wiring.

License

MIT. Copyright (c) 2026 Andrija Peric. See LICENSE.

Available Tools

19 tools
issue_commentC

Comment on an issue in markdown.

NameRequiredDescriptionDefault
keyYesIssue key or URL
siteNoSite name or host
markdownYes

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, yet it never says this creates an immutable comment (append-only mutation), what it returns, or whether commenting on closed issues fails. The only disclosed trait is that body content is interpreted as markdown, which is thin for an unannotated write 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?

One short, front-loaded sentence with zero redundancy or filler. It is efficient, though its brevity is partly under-specification rather than disciplined concision.

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 an unannotated mutation tool with no output schema and one undocumented third parameter, the definition omits return shape, failure conditions, and permission requirements. An agent could invoke it but could not predict outcomes or handle errors from the description alone.

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 coverage is 67% and the two documented parameters ('Issue key or URL', 'Site name or host') are already explained in the schema. The description's only added meaning is that the 'markdown' parameter is a markdown-formatted body, a marginal but real clarification beyond the bare string type.

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 and resource ('Comment on an issue') plus the content format ('markdown'), which is enough to separate it from page_comment and read tools like issue_get. It does not explicitly name the sibling it contrasts with, 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?

There is no guidance on when to use this versus page_comment, issue_update, or issue_transition, and no prerequisites such as required permissions or issue state. The agent must infer the choice from the resource noun alone.

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

issue_createC

Create an issue; fields map names or ids to plain values.

NameRequiredDescriptionDefault
siteNoSite name or host
typeYesIssue type name
fieldsNo
labelsNo
projectNoDefault from site
summaryYes
assigneeNoName or email
descriptionNoMarkdown

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are supplied, so the description bears the full behavioral burden for a write operation. It does not state permission requirements, whether creation is idempotent, what happens on duplicate issues, or what the response contains. The only behavioral hint is the cryptic note that fields map names or ids to plain values.

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 single sentence is front-loaded and free of waste, but for an 8-parameter create tool it is terse to the point of under-specification. Efficiency is good; sufficiency is not.

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 mutation tool with no annotations, no output schema, 8 parameters (two required), and a nested object, the description omits required-field guidance, site/project defaults, return value, and failure behavior. An agent could not call this confidently without reading the schema closely.

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 coverage is 63%, and the description adds real meaning only for the nested `fields` object, explaining that keys may be names or ids and values are plain. Other params (labels, summary) remain undocumented in both schema and description, so it partially compensates but leaves gaps.

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 opens with a specific verb and resource: "Create an issue." That clearly separates it from issue_get, issue_update, issue_delete, and issue_transition. It does not explicitly name or contrast with any sibling, so it stops short of a 5.

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 versus issue_update or issue_transition, no prerequisites (site, project, permissions), and no note about required type/summary. The agent must infer all usage conditions from the schema.

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

issue_deleteA
Destructive

Permanently delete a Jira issue. Subtasks require deleteSubtasks: true.

NameRequiredDescriptionDefault
keyYesIssue key or URL
siteNoSite name or host
deleteSubtasksNoAlso delete subtasks; default false

TDQS

A3.8/5.0
Behavior4/5

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

The annotations already declare readOnlyHint=false and destructiveHint=true, so the safety profile is covered by structured data. The description still adds genuine value by stating the deletion is permanent and by disclosing the subtask rule, which tells the agent an extra flag may be required to succeed. It does not say what happens if the flag is omitted on a parent issue, which keeps it at 4.

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?

Two short sentences, zero filler, with the destructive nature front-loaded before the conditional subtask detail. Nothing here could be removed without losing information.

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 three-parameter delete tool with destructiveness already covered by annotations and full schema coverage, the description supplies the two things an agent most needs: irreversibility and the subtask flag requirement. It omits permission requirements and the failure mode when a parent issue is deleted without the flag, which is a modest gap given the tool's simplicity.

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 key, site, and deleteSubtasks are all documented in the schema, which sets the baseline at 3. The description's 'Subtasks require deleteSubtasks: true' slightly strengthens the meaning of that flag beyond the schema's 'Also delete subtasks; default false', but it does not explain key formats (ID vs URL) or site semantics.

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 opens with a specific verb and resource: 'Permanently delete a Jira issue.' That cleanly separates it from issue_update, issue_transition, and page_delete, which all operate on different resources or with different intent. It stops short of explicitly naming a sibling, so it lands at 4 rather than 5.

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 is implied by the destructive 'permanently delete' framing, and the sentence about subtasks functions as a precondition for calling it. However there is no explicit when-to-use guidance against alternatives such as issue_transition (e.g. closing vs deleting) and no warning to confirm intent before an irreversible call.

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

issue_getB

Read a Jira issue: key fields and description as markdown.

NameRequiredDescriptionDefault
keyYesIssue key or URL
siteNoSite name or host
fieldsNoExtra field names or ids
include_commentsNo

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations, the description carries the full burden; it does signal a non-mutating read and discloses the return shape ('markdown'), which is real value. However, it says nothing about permissions, error behavior for missing issues, or that comments are omitted unless requested, leaving meaningful gaps for a tool with no annotation coverage.

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?

A single short sentence, front-loaded with the action and resource, with zero filler. It is arguably too terse rather than too verbose, so it does not reach a 5.

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?

There are four parameters, no annotations, and no output schema, yet the description is one sentence. It fails to explain comment inclusion, site selection, or the response structure, which is inadequate for a fetch tool whose contract is otherwise undocumented.

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 coverage is 75%, so the baseline is 3, and the description adds little beyond it: 'key fields' loosely gestures at the default field set relevant to the 'fields' parameter, but 'site' and 'include_comments' get no explanation anywhere. The undocumented include_comments parameter is the most notable miss.

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?

Specific verb plus resource ('Read a Jira issue') and it states what comes back ('key fields and description as markdown'), so it is clearly distinguishable from issue_search or issue_update. It does not explicitly name a sibling to route against, which keeps it below a 5.

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 is only implied: 'Read a Jira issue' suggests fetching a single known issue, and the required 'key' parameter reinforces that. There is no explicit statement of when to prefer this over issue_search or issue_comment, and no mention of prerequisites such as site access.

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

issue_transitionC

Move an issue to a status.

NameRequiredDescriptionDefault
toYesStatus or transition name
keyYesIssue key or URL
siteNoSite name or host

TDQS

C2.5/5.0
Behavior2/5

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

With no annotations supplied, the description carries the full disclosure burden, yet it says nothing about whether this is a mutating operation, whether it requires specific permissions, whether invalid statuses or disallowed transitions cause an error, or what side effects (comments, notifications) occur. Only the bare mutation is implied.

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 single short sentence is front-loaded and free of waste, but it is under-specified rather than concise; there is no structure beyond the one clause to guide the agent.

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 mutation tool with zero annotations, no output schema, and a close sibling in issue_update, the description leaves too much unsaid: no failure modes, no permission model, no distinction from siblings. It is only minimally adequate given the tool's complexity.

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% and each of the three parameters (to, key, site) is documented in the schema itself, so the baseline of 3 applies. The description adds no meaning beyond that — notably it does not clarify whether "to" accepts a status name, a transition name, or an ID.

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

Purpose3/5

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

The description pairs a verb ("Move") with a resource ("an issue") and states the target concept (a status), so the basic intent is legible. But it never distinguishes this from sibling tools like issue_update or issue_create, and "move" is ambiguous for what is really a workflow status transition, so an agent cannot tell from the text alone which sibling to pick.

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 instead of issue_update, nor on prerequisites such as whether the target status must be reachable via an allowed workflow transition. The agent must infer all usage conditions from the sibling list.

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

issue_updateC

Update issue fields, summary or description.

NameRequiredDescriptionDefault
keyYesIssue key or URL
siteNoSite name or host
fieldsNoNames or ids to plain values
summaryNo
descriptionNoMarkdown

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 must carry the full behavioral burden. It implies a mutation but does not disclose permissions required, whether updates are partial or full replacements, how the nested fields object is handled, or what happens to unspecified fields.

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 efficient sentence with no wasted wording. However, its brevity contributes to under-specification rather than precision, which is better assessed under contextual completeness.

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 mutation tool with no annotations, no output schema, five parameters, and a nested fields object, the description is too thin. It does not explain partial update semantics, field value formats, permissions, or how the site parameter affects the 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?

Schema description coverage is 80%, so the schema already documents most parameters, including key, site, fields, and description as Markdown. The description adds little beyond naming the updatable areas, and it does not clarify the fields object structure or how summary and description interact with fields.

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 and resource: update an issue's fields, summary, or description. It is clear what the tool does, but it does not distinguish itself from sibling tools like issue_transition or issue_comment, which also modify issue-related data.

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 issue_transition, issue_comment, or page_update. It also omits prerequisites or conditions, leaving the agent to infer usage from the name alone.

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

page_appendC

Append markdown to the end of a page.

NameRequiredDescriptionDefault
urlYesPage URL or id
siteNoSite name or host
markdownYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are supplied, so the description carries the full burden. It does not say whether the page must already exist, what permissions are needed, whether the append is atomic, how the markdown is inserted relative to the last block, or what is returned.

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?

A single front-loaded sentence with no filler. It is efficient, though its brevity comes partly at the cost of the behavioral detail the tool lacks elsewhere.

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?

This is an unannotated mutation tool with no output schema and one undocumented parameter. The description leaves out prerequisites, side effects, and return behavior, which is a significant gap for a write 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?

Schema coverage is 67%, with url and site documented but markdown left bare. The description only confirms that markdown is the content appended to the page identified by url; it adds no format, escaping, or size guidance 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 gives a specific verb and resource ('Append markdown to the end of a page'), and the phrase 'to the end' distinguishes it at least implicitly from page_edit and page_update_section. It does not name any sibling explicitly, so it stops short of a 5.

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 when-to-use or when-not-to-use guidance and no mention of the obvious alternatives (page_edit, page_update_section, page_comment). The agent must infer from the name alone that this is the append-only variant.

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

page_commentC

Add a footer comment to a page.

NameRequiredDescriptionDefault
urlYesPage URL or id
siteNoSite name or host
markdownYes

TDQS

C2.7/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 identifies the action as adding a footer comment but does not disclose permission requirements, whether the comment is immediately visible, idempotency, or what the response contains.

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?

A single, front-loaded sentence with no wasted words. It is appropriately concise, though its brevity contributes to gaps in usage and parameter guidance.

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 mutation tool with no annotations and no output schema, the definition is under-specified. It lacks usage context, permission expectations, return behavior, and parameter guidance, leaving an agent with too little to invoke it confidently.

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 description adds no meaning beyond the input schema. Schema coverage is 67%, and the markdown parameter has no schema description at all, so the description should ideally clarify its expected format but does not.

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?

States a specific verb and resource: "Add a footer comment to a page." This clearly distinguishes it from page-editing siblings and from issue_comment by resource, though it does not explicitly name alternatives.

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?

Provides no when-to-use or when-not-to-use guidance. It does not mention prerequisites, whether the page must exist, or how this differs from page_append or issue_comment beyond the implicit "page" vs "issue" distinction.

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

page_createC

Create a page from markdown.

NameRequiredDescriptionDefault
siteNoSite name or host
spaceNoSpace key; default from site
titleYes
parentNoParent page URL or id
markdownYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are supplied, so the description carries the full disclosure burden for a mutation tool, and it says nothing about permissions or auth requirements, whether a duplicate title errors or overwrites, whether site/space defaults apply, or what the call returns. Only the input format (markdown) is disclosed. This is a substantial gap for a write operation.

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

Conciseness4/5

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

A single front-loaded sentence with no filler or redundancy. The brevity is efficient, though it shades into under-specification rather than optimal conciseness.

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 five-parameter mutation tool with no annotations and no output schema, the definition leaves out return behavior, error cases, and placement semantics (site/space/parent interactions). An agent could not call this confidently without inspecting the schema and guessing at side effects.

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 coverage is 60%: site, space, and parent are documented in the schema, while title and markdown are not, though both are self-evident and required. The description adds nothing about parameter behavior (e.g., what happens when parent is omitted or how space defaults from site), so the baseline 3 applies rather than a higher score.

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 gives a specific verb and resource ("Create a page") plus the input format (markdown), so the agent knows exactly what operation is performed. It does not distinguish this from close siblings such as page_append, page_edit, or page_update_section, which also write page content, so the sibling-differentiation bar for a 5 is not met.

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 when-to-use guidance, no indication of prerequisites, and no mention of the alternatives (page_append, page_edit, page_update_section) that an agent must choose between when adding content to a site. The agent must infer everything from the name alone.

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

page_deleteA
Destructive

Move a published Confluence page to trash. Does not purge pages or delete drafts.

NameRequiredDescriptionDefault
urlYesPage URL or id
siteNoSite name or host

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already flag destructiveHint=true and readOnlyHint=false, so the lower bar applies; the description still adds real value by clarifying this is a move-to-trash (soft delete) rather than a purge, and that drafts are unaffected. It stops short of saying whether child pages, attachments, or comments are affected and whether the action is reversible.

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?

Two short sentences, front-loaded with the primary action and followed by the key scoping constraint; nothing is redundant or padded.

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 two-parameter destructive tool with annotations covering the safety profile and no output schema, the description supplies enough to call it correctly, though it omits side effects on page hierarchy/attachments and any permission requirements.

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 coverage is 100% with both url and site documented, so the schema does the heavy lifting; the description only adds the qualifier that the target must be a published page, which mildly informs the url parameter but adds no format or identification guidance.

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?

States a specific verb+resource ('Move a published Confluence page to trash') and immediately scopes what it is not ('Does not purge pages or delete drafts'), so the agent can tell it apart from edit/create/append siblings and from any purge-like behavior.

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 sentence 'Does not purge pages or delete drafts' gives a clear exclusion and implies the tool applies only to already-published pages, but no sibling/alternative tool is named and no prerequisites (permissions, confirmation) are stated.

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

page_editB

Exact find and replace on the page storage XHTML.

NameRequiredDescriptionDefault
allNoReplace every match
urlYesPage URL or id
findYes
siteNoSite name or host
replaceYes

TDQS

B3.1/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It does disclose two genuinely useful facts — matching is exact/literal, and edits apply to raw storage XHTML rather than rendered text — but omits what happens when no match is found, whether the default replaces only the first occurrence, and whether the write is reversible or requires elevated permissions.

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?

A single front-loaded sentence with no wasted words, which is the right shape for a narrow tool. It is arguably under-specified rather than concise, but structurally it is clean.

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 five-parameter mutation tool with no annotations, no output schema, and 40% of parameters undocumented in the schema, this one-line description leaves too much unstated — match-failure behavior, idempotency, and scoping via url/site all go unexplained.

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 coverage is 60%: 'all', 'url', and 'site' are documented, while the required 'find' and 'replace' have no schema descriptions. The description partially compensates by implying 'find' is an exact literal string, but adds nothing about 'replace' escaping or the first-match-only default when 'all' is false.

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?

Names a specific verb (find and replace) and a specific resource (the page storage XHTML), and the word 'exact' narrows it to literal matching rather than regex or fuzzy search. It does not, however, distinguish itself from close siblings such as page_update_section or page_append, which also mutate 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?

There is no guidance on when to choose this tool over page_update_section, page_append, or page_get. The only implicit signal is 'exact', which suggests targeted surgical edits rather than section rewrites, but the agent must infer that.

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

page_getB

Read a Confluence page as markdown, storage XHTML, or an outline of headings and tables.

NameRequiredDescriptionDefault
idNoPage id
urlNoPage URL or id
siteNoSite name or host
formatNoDefault markdown
sectionNoHeading text

TDQS

B3.2/5.0
Behavior3/5

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

No annotations are supplied, so the description carries the full burden; it does disclose that three output encodings exist and characterizes the outline format. It is silent on permission requirements, behavior on very large pages, and what happens when id, url, and site disagree or are all omitted, which is a meaningful gap for a tool with 5 optional params.

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?

A single front-loaded sentence with zero filler that covers the verb, the resource, and the format dimension. It is efficient, though the terseness leaves gaps that a second sentence about id/url/site selection could have closed.

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 read-only tool with no output schema and a fully described schema, format enumeration plus the outline explanation is a reasonable core. It falls short on the optional id/url/site triple and the section parameter, which an agent needs resolved to invoke the tool confidently.

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 documented and the baseline is 3. The description does add a little meaning by naming the three format values and explaining that outline yields headings and tables, but it says nothing about id vs url vs site precedence or what section does.

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?

States a specific verb and resource ("Read a Confluence page") plus the three possible renderings, which separates it from mutating siblings like page_edit or page_update_section. It does not explicitly name any sibling, but the read-vs-write split 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?

No guidance on when to choose this over page_search, table_get, or the section-oriented page_update_section, and no prerequisites or exclusions. The only implied usage is the generic act of reading a page, which the agent would infer from the name alone.

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

page_update_sectionA

Replace the content under a heading with markdown; keep {{atlas:N}} tokens to preserve macros.

NameRequiredDescriptionDefault
urlYesPage URL or id
siteNoSite name or host
headingYes
markdownYes

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It does disclose one genuinely useful trait - macro-preserving {{atlas:N}} tokens must be retained - but says nothing about reversibility, whether nested sub-sections are affected, or what happens if the heading is absent.

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 front-loaded sentence with the operation stated first and the critical caveat second; every clause earns its place and nothing is padded.

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 destructive write with zero annotations and no output schema, the definition covers the highest-risk failure mode (macro token destruction) but omits heading-not-found behavior, sub-section handling, and result confirmation. Adequate to call safely, not complete.

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 coverage is only 50%, with 'heading' and 'markdown' undocumented in the schema; the description compensates by framing heading as the section anchor and markdown as the replacement format with token-preservation rules. It leaves the optional 'site' versus 'url' relationship unaddressed, which keeps it from a 5.

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?

States a specific verb and targeted resource: 'Replace the content under a heading with markdown'. The section-scoped replacement is clearly a different operation from whole-page editing, though it never names page_edit or page_append explicitly.

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 is only implied by the verb 'replace ... under a heading' - an agent can infer this is for swapping one section's body rather than appending or rewriting a whole page. There is no explicit when-to-use, when-not-to-use, or named alternative among page_edit/page_append.

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

sites_listB

List configured Atlassian sites and what they can reach.

NameRequiredDescriptionDefault

No parameters

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations, the description carries the full burden, and it does hint that each entry includes reachability information rather than just names. However, it never states that this is a read-only, side-effect-free call, nor whether authentication is required or how large the result set can be.

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?

A single front-loaded sentence with no filler, and the object of the listing comes before the qualifier. It is on the terse side — 'what they can reach' is slightly ambiguous phrasing that a few more words could sharpen.

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 zero-parameter list tool with no output schema and no annotations, the description is roughly proportionate but leaves the return shape undefined: 'what they can reach' gestures at permissions or scopes without saying what fields come back. An agent knows what it gets in broad strokes but not how to interpret the response.

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 tool takes zero parameters, so there is nothing for the description to disambiguate; baseline is 4. The phrase 'configured sites' usefully implies the set is server-side configuration rather than a caller-supplied filter.

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?

Uses a specific verb ('List') with a specific resource ('configured Atlassian sites') and adds scope ('what they can reach'). It is obviously distinct from the page_* and issue_* siblings, which operate on content rather than site configuration, though it never explicitly names that distinction.

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 when-to-use guidance at all: nothing says whether this should be called first to discover sites before other operations, or that it takes no arguments and cannot filter. The agent must infer the discovery use case entirely from the verb and resource.

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

table_add_rowC

Add a table row; cells map column names to values.

NameRequiredDescriptionDefault
urlYesPage URL or id
siteNoSite name or host
cellsYes
tableNoIndex or heading above
positionNoend or after:<row label>

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 the full behavioral burden, and it does not disclose that this is a mutation, whether the target table must already exist, what happens with unknown column names, or whether the operation is idempotent. Only the word "Add" implies a write, leaving error and side-effect behavior unexplained.

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?

A single compact sentence with the action front-loaded and no filler. It is efficient, though the terseness leaves little room for the context a mutation tool needs.

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 5-parameter mutation tool with a nested object, no annotations, and no output schema, the description says too little: return value (e.g., row index or label), default placement behavior, and failure modes are all unaddressed. The agent has enough to guess an invocation but not enough to use it reliably.

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 coverage is already 80%, documenting url, site, table, and position, so the schema does most of the work. The description does add genuine meaning for the undocumented `cells` object by explaining that keys are column names and values are cell contents, which is not stated in the schema, but it adds nothing for the remaining parameters.

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?

States a specific verb and resource ("Add a table row") and clarifies the core payload semantics (cells map column names to values), which lets an agent distinguish it from table_get and table_update at a glance. It stops short of naming siblings or stating scope conditions, so it is clear but not fully differentiated.

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 versus table_update (e.g., creating a row vs modifying an existing one), no prerequisites such as the table needing to exist, and no mention of whether the row is appended by default. The agent must infer all usage conditions.

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

table_getC

Read one page table as markdown.

NameRequiredDescriptionDefault
urlYesPage URL or id
siteNoSite name or host
tableNoIndex or heading above

TDQS

C2.8/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 behavioral burden, yet it only discloses the output format (markdown). It says nothing about read-only semantics, authentication/scope needs, error behavior when the table isn't found, or size/pagination limits for large tables.

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 single sentence is front-loaded with zero filler, which is good, but at six words it is undersized for a tool with three parameters and no annotations, and the phrase "one page table" is awkward and easy to misparse.

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 no annotations, no output schema, and three parameters, the description is too thin to fully inform an agent about scoping, table selection, or failure modes. Only the return format is covered.

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 explains url, site, and that table accepts an index or heading. The description adds no extra meaning to those parameters; the baseline 3 applies since the schema does the work.

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?

"Read one page table as markdown" gives a specific verb (read), resource (a table on a page), and return format (markdown), which distinguishes it from the mutation siblings table_update and table_add_row. It doesn't explicitly contrast with page_get or clarify whether "one page table" means a single table per page, leaving some ambiguity.

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 when-to-use or when-not-to-use guidance and no named alternative. An agent must infer on its own that this is for extracting tabular data from a page rather than fetching the whole page with page_get.

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

table_updateC

Set one table cell, matched by row label and column header.

NameRequiredDescriptionDefault
rowYes
urlYesPage URL or id
siteNoSite name or host
tableNoIndex or heading above
valueYes
columnYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are supplied, so the description bears the full burden of behavioral disclosure. It does not say whether an existing cell value is overwritten, whether a missing row label or column header causes an error or creates one, what permissions are needed, or what the response contains — significant omissions 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?

A single eleven-word sentence with the action and addressing scheme front-loaded and no filler. It is efficient, though the extreme brevity borders on under-specification rather than pure conciseness.

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 six parameters, a mutating effect, no annotations, and no output schema, the description is too thin — it omits overwrite semantics, error/creation behavior for unmatched row or column, and how table selection interacts with url and site.

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 coverage is 50%: url, site, and table are described in the schema, while row, column, and value are bare strings. The phrase "matched by row label and column header" usefully clarifies that row and column are lookup keys rather than indices, partially compensating for the gap, but the relationship between url/site/table is still left implicit.

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 gives a specific verb ("Set") and a precisely scoped resource ("one table cell"), plus the addressing mechanism (row label + column header). This implicitly separates it from table_get and table_add_row without naming them, so it is clear but not explicitly differentiated.

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 prefer this over table_add_row or table_get, and no stated preconditions (e.g., whether the table must already exist or where the page/table identifiers come from). Usage is only inferable from the verb.

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.

  1. 19 tool updatesv0.2.0
    • First observedissue_comment
    • First observedissue_create
    • First observedissue_delete
    • First observedissue_get
    • First observedissue_search
    • First observedissue_transition
    • First observedissue_update
    • First observedpage_append
    • First observedpage_comment
    • First observedpage_create
    • First observedpage_delete
    • First observedpage_edit
    • First observedpage_get
    • First observedpage_search
    • First observedpage_update_section
    • First observedsites_list
    • First observedtable_add_row
    • First observedtable_get
    • First observedtable_update

TDQS

B3.2/5.0

Scored across 19 tools

Disambiguation4/5

Each tool targets a clear resource+action pair, and the three page-mutation variants (page_edit for find/replace, page_update_section for heading-scoped replacement, page_append for end-of-page) are distinguished by explicit descriptions. Minor residual overlap between page_edit and page_update_section could still cause misselection in edge cases, and page_get vs table_get requires the agent to know whether it needs a table specifically.

Naming Consistency4/5

Names follow a predictable resource_action pattern (page_get, table_update, issue_create, issue_transition) grouped by domain prefix. Small deviations exist: sites_list is plural where others are singular, and multi-word actions like page_update_section and table_add_row break the two-token rhythm slightly, but the convention remains readable.

Tool Count4/5

19 tools serve two distinct product surfaces (Confluence pages/tables and Jira issues), so the count is roughly proportional to scope and each tool maps to a real operation. It sits near the upper end of comfortable, with the page-editing family being the only area that feels finer-grained than strictly necessary.

Completeness4/5

Both domains have near-full lifecycle coverage: pages support create/read/edit/append/delete/search/comment and issues support get/search/create/update/delete/transition/comment. Gaps are minor but present — no table row deletion or table creation, no page label or attachment operations, and no way to restore a trashed page.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers