Skip to main content
Glama

dev.mcp

A MCP stdio server in TypeScript. One process per developer; credentials live only in environment variables (the server never persists them to disk).

This is not a web app: it is a spec-compliant MCP server that any compatible harness starts as a subprocess (node dist/index.js).

Clone into any folder. The directory name is up to you; use that folder’s absolute path in harness args.

git clone <repo-url> [dir]
cd [dir]
npm install
npm run build

[dir] may be omitted (Git uses the repository name) or any relative/absolute path.

Requires Node 20+.

Why this server

It replaces the official Figma, Atlassian (Jira + Confluence), and GitLab MCPs by talking to the REST APIs directly (and to glab when the GitLab API fails). Figma, Atlassian, and GitLab use the credentials you put in the harness env (a per-person token, or a shared Dev/Full Figma PAT).

Figma — official MCP vs REST

The official MCP (https://mcp.figma.com/mcp) charges extra daily/monthly quotas per seat, on top of per-minute limits. REST has no daily quota for Dev/Full: only a leaky bucket per minute on Tier 1 (GET file / nodes / image). Starter has no Dev/Full seat.

Seat / quota

Starter (basic)

Professional

Organization

Enterprise

MCP Dev/Full

200/day + 10/min

200/day + 15/min

600/day + 20/min

MCP View/Collab

20/month

6/month

6/month

6/month

REST Dev/Full (Tier 1)

10/min

15/min

20/min

REST View/Collab (Tier 1)

6/month

6/month

6/month

6/month

If the team shares one PAT from a Figma Dev/Full account, the REST bucket stays shared (every agent counts against the same user). Versus the official MCP, the ceiling changes: that seat pays a daily quota plus per-minute; REST Dev/Full has no daily quota, only the Tier 1 per-minute leaky bucket. In-memory cache and Retry-After still help when several tools would reread the same file. View/Collab tokens (~6/month on Tier 1) are not a substitute for a Dev/Full seat.

REST does not cover (accepted, read-only): use_figma, generate_figma_design, generate_diagram, create_new_file, upload_assets. Code Connect write (add_code_connect_map) is also out of scope.

If the file lives on a Starter plan, Starter limits apply even if another team has a paid seat.

Atlassian — Rovo vs REST

The Rovo MCP (mcp.atlassian.com) does not publish official quota numbers; reports of 429s after a few dozen parallel calls are common. API tokens use classic burst (Retry-After). The points-per-hour model (since 2026-03-02) applies to Forge/Connect/OAuth apps, not to API tokens.

This server’s scope: Jira + Confluence (Rovo tools that have REST). Out of scope: JSM, Bitbucket, Compass, Teamwork Graph, and searchAtlassian (Rovo/AI).

GitLab — official MCP blocked; Guest is not enough

The native MCP (/api/v4/mcp) requires the group to have Duo on, beta features, and Allow MCP server. REST/GraphQL exist on Free.

Guest on a private project: can see issues; cannot see code, clone, or create MRs. Reporter is the minimum for repo/MR/CI.

Strategy: REST with GITLAB_TOKEN first; on 401/403/404 (permission) or a missing token, fall back to glab already authenticated on the machine (the developer’s real role).

Out of this slice (Duo / Premium / no simple REST): list_duo_sessions, semantic_code_search, attach_scan_profile, advanced GraphQL work items.

Related MCP server: Work Integrations MCP

Architecture

MCP harness (Cursor, Claude, VS Code, Gemini, Zed, Codex, …)
        │  JSON-RPC on stdin/stdout
        ▼
node dist/index.js          ← one process, stdout JSON-RPC only, logs on stderr
        │
        ├─ Figma REST + in-memory cache (GET files/nodes/images/variables)
        ├─ Jira REST + Confluence REST (Basic email:api_token)
        └─ GitLab REST ──401/403/404 or no token──► glab CLI

HTTP/SSE is out of this slice. The same tool set could later attach to StreamableHTTPServerTransport without rewriting handlers.

Tools

Stable prefixes: figma_*, jira_*, confluence_*, gitlab_*.

Figma

Tool

REST

figma_whoami

GET /v1/me

figma_get_file

GET /v1/files/:key (depth / ids)

figma_get_metadata

GET /v1/files/:key/nodes → slim XML (id, name, type, size)

figma_get_screenshot

GET /v1/images/:key

figma_get_variable_defs

GET /v1/files/:key/variables/local (+ published optional)

figma_get_design_context

orchestrates nodes + variables + screenshot URL (implementation context, not official proprietary codegen)

figma_download_assets

GET /v1/images + image fills

figma_get_comments

GET /v1/files/:key/comments

Jira

jira_get_issue, jira_search_jql, jira_get_projects, jira_get_issue_types_metadata, jira_get_transitions, jira_create_issue, jira_edit_issue, jira_transition_issue, jira_add_comment, jira_add_worklog, jira_lookup_account_id, jira_get_remote_issue_links, jira_create_remote_issue_link, jira_get_issue_link_types, jira_create_issue_link.

Confluence

confluence_get_spaces, confluence_get_pages_in_space, confluence_get_page, confluence_get_page_descendants, confluence_get_page_footer_comments, confluence_get_page_inline_comments, confluence_search_cql, confluence_create_page, confluence_update_page, confluence_create_footer_comment, confluence_create_inline_comment.

GitLab

gitlab_whoami, gitlab_list_projects, gitlab_get_issue, gitlab_create_issue, gitlab_list_merge_requests, gitlab_get_merge_request (optional commits/diffs/notes/pipelines), gitlab_save_merge_request, gitlab_create_merge_request_note, gitlab_accept_merge_request, gitlab_add_branch, gitlab_add_commit, gitlab_get_repository_file, gitlab_get_commit, gitlab_list_pipelines, gitlab_get_pipeline, gitlab_get_pipeline_jobs, gitlab_get_job, gitlab_list_project_members, gitlab_search, gitlab_search_labels, gitlab_list_wiki_pages.

glab fallback: glab api with the same paths. If glab is not on PATH and the API fails, the tool returns instructions to install glab or export GITLAB_TOKEN.

Providers without credentials stay listed: the tool returns a clear message instead of crashing the process.

Tokens

There are two places for variables. They are not equivalent.

Where

When to use

env block in the MCP config (mcp.json, etc.)

Normal use in Cursor, Claude, VS Code, Gemini, Zed, Codex

.env in this repository

Only npm run dev / npm start inside this folder

In the harness, the subprocess almost always starts with cwd in the project you are editing, not this server’s folder. That is why this repo’s .env does not load in Cursor (or other clients). Put secrets in the MCP config env (next section). If the same variable exists in both, the harness wins: .env does not override it.

Do not commit .env. Copy .env.example only for local development.

Names (the same in both places):

FIGMA_ACCESS_TOKEN=
ATLASSIAN_EMAIL=
ATLASSIAN_API_TOKEN=
ATLASSIAN_SITE=your-site.atlassian.net
GITLAB_HOST=https://gitlab.com
GITLAB_TOKEN=

Optional: HTTP_TIMEOUT_MS (default 30000), HTTP_MAX_RETRIES (3), FIGMA_CACHE_TTL_MS (300000).

Figma

  1. In a Figma account with a Dev/Full seat (yours, or the team’s shared account), open Settings → Personal access tokens.

  2. Create a token with file content scope (files, images, and variables) and use the same FIGMA_ACCESS_TOKEN in every harness.

  3. Personal View/Collab accounts do not replace that PAT: on REST Tier 1 they get ~6 calls/month. The REST per-minute bucket is still shared among whoever uses that token; what you drop is the official MCP daily quota.

Atlassian (Jira + Confluence)

  1. Create an API token for the developer’s account.

  2. ATLASSIAN_EMAIL = Atlassian account email.

  3. ATLASSIAN_SITE = site host, e.g. your-site.atlassian.net (no https://).

  4. Auth: HTTP Basic email:api_token. No OAuth in this slice.

GitLab

  1. Preferred: Personal Access Token with api scope, in GITLAB_TOKEN.

  2. Alternative: glab auth login on the machine (the server calls glab api if REST returns 401/403/404 or the token is missing).

  3. Guest is not enough for code/MRs. Use Reporter or above on private projects.

Default GITLAB_HOST: https://gitlab.com. Self-managed: https://gitlab.yourcompany.com.

Harness configuration

Token variables go in the env block below — not in this repo’s .env.

Canonical binary (/path/to/clone = absolute path of the folder you cloned into):

command: node
args:    ["/path/to/clone/dist/index.js"]

The same binary works for every client. Only the config file/CLI changes.

Canonical example (mcp.json / Claude Desktop)

{
  "mcpServers": {
    "dev.mcp": {
      "command": "node",
      "args": ["/path/to/clone/dist/index.js"],
      "env": {
        "FIGMA_ACCESS_TOKEN": "figd_…",
        "ATLASSIAN_EMAIL": "you@example.com",
        "ATLASSIAN_API_TOKEN": "…",
        "ATLASSIAN_SITE": "your-site.atlassian.net",
        "GITLAB_HOST": "https://gitlab.com",
        "GITLAB_TOKEN": "glpat-…"
      }
    }
  }
}

Cursor

  • Global: ~/.cursor/mcp.json

  • Per repo: .cursor/mcp.json

  • Or Settings → MCP → Add server

Use the canonical JSON above.

Claude Code

claude mcp add dev.mcp -- node /path/to/clone/dist/index.js

Pass the environment with CLI flags (--env / --env-file, depending on version). Do not rely on a TTY.

Claude Desktop

Edit claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/; Linux: ~/.config/Claude/) and paste the canonical mcpServers block.

VS Code / GitHub Copilot

  • Command Palette → MCP: Add Server

  • Or .vscode/mcp.json in the workspace

VS Code JSON often uses "servers" instead of "mcpServers":

{
  "servers": {
    "dev.mcp": {
      "command": "node",
      "args": ["/path/to/clone/dist/index.js"],
      "env": {
        "FIGMA_ACCESS_TOKEN": "figd_…"
      }
    }
  }
}

Gemini CLI / Gemini Code Assist

~/.gemini/settings.json:

{
  "mcpServers": {
    "dev.mcp": {
      "command": "node",
      "args": ["/path/to/clone/dist/index.js"],
      "env": {
        "FIGMA_ACCESS_TOKEN": "figd_…"
      }
    }
  }
}

Zed

agent: open settingsMCP Servers. Equivalent:

{
  "context_servers": {
    "dev.mcp": {
      "command": {
        "path": "node",
        "args": ["/path/to/clone/dist/index.js"],
        "env": {
          "FIGMA_ACCESS_TOKEN": "figd_…"
        }
      }
    }
  }
}

OpenAI Codex

codex mcp add dev.mcp -- node /path/to/clone/dist/index.js

Set env vars in the Codex profile or on the command, depending on the CLI.

Companion harness

This server exposes tools. It does not impose gates, evidence, or a development cycle.

dev.harness is the companion workflow: two flows — Feature (spec-driven) and Bug (reproduce / root-cause-first) — plus the review skills dev-qa-guided-review and dev-mr-guided-review. Those skills consume this server, not the official Figma, Atlassian, or GitLab MCP servers.

Figma REST quota and dev.mcp bind are documented above. The harness does not replace this mcp.json (or equivalent host) configuration.

Development

npm install
npm test
npm run typecheck
npm run build
npm run dev    # stdio; only useful behind an MCP client

Tests (Vitest): Retry-After on 429, Figma cache/dedup, no cache on GitLab POST, 403 → glab fallback.

Rules so other clients keep working:

  • stdout is JSON-RPC only; logs go to stderr

  • Standard JSON Schema (Zod → inputSchema)

  • No Cursor-specific APIs, headers, or prompts

  • No dynamic OAuth (env vars) — works in headless harnesses (CI, Claude Code, Codex)

  • No dashboard, persisted auth, database, or second HTTP process

License

MIT

Available Tools

55 tools
confluence_create_inline_commentB

Creates an inline comment (POST /wiki/api/v2/inline-comments).

ParametersJSON Schema
NameRequiredDescriptionDefault
pageIdYesPage ID.
bodyValueYes
bodyRepresentationNo
inlineCommentPropertiesNoHighlighted selection/text properties required by the v2 API.

TDQS

B3.3/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, but it only states the mutation ('Creates') and the endpoint. It does not disclose required permissions, side effects, return behavior, or prerequisites like highlighted selection properties.

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

Conciseness5/5

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

The description is extremely concise, front-loads the core action, and includes the API endpoint without any filler. Every word earns its place.

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 create operation with four parameters, a nested object, no annotations, and no output schema, a single sentence is insufficient. It omits guidance on required body content, representation format, and how the highlighted-selection properties should be structured.

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

Parameters2/5

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

Schema description coverage is 50%, and the description adds no parameter-level meaning. Required fields such as bodyValue remain unexplained, and inlineCommentProperties is only vaguely described in the schema as 'Highlighted selection/text properties' without detail.

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 and resource: 'Creates an inline comment' with the exact API endpoint. This clearly distinguishes it from sibling tools like confluence_create_footer_comment and confluence_create_page.

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

Usage Guidelines3/5

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

The purpose implies when to use the tool: when an inline comment needs to be created. However, it provides no explicit guidance on when not to use it or how it differs from footer comments and page creation tools.

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

confluence_create_pageC

Creates a page (POST /wiki/api/v2/pages). body in storage HTML or atlas_doc_format.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYes
statusNo
spaceIdYesNumeric space ID (not the key).
parentIdNo
bodyValueYes
bodyRepresentationNo

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 alone must disclose behavior. It reveals the HTTP method and accepted body formats, but it does not mention permissions, side effects, response behavior, idempotency, or handling of existing pages. This is insufficient 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.

Conciseness4/5

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

The description is two short sentences that directly state the core action, endpoint, and body format requirement. It is efficient and front-loaded, though it sacrifices completeness for brevity.

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 creation tool with no annotations and no output schema, the description omits critical context: how to obtain spaceId, semantics of status and parentId, relationship between bodyValue and bodyRepresentation, error behavior, and response contents. This is incomplete for a 6-parameter operation.

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

Parameters2/5

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

Schema description coverage is only 17%, with spaceId being the only parameter described. The description adds a note about 'storage HTML or atlas_doc_format', which clarifies the bodyRepresentation/bodyValue pairing, but it leaves title, status, parentId, and bodyValue semantics largely unexplained.

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

Purpose4/5

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

The description states a specific action ('Creates a page') and identifies the resource plus the HTTP endpoint. The verb 'creates' differentiates it from sibling tools like confluence_update_page and confluence_get_page, though it does not explicitly name those alternatives.

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

Usage Guidelines3/5

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

Usage context is only implied by the name and verb: an agent can infer this tool is for creating pages rather than updating or reading them. There is no explicit guidance about when to prefer this tool over confluence_update_page or how to decide between status values like draft and current.

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

confluence_get_pageB

Gets a page (GET /wiki/api/v2/pages/{id}).

ParametersJSON Schema
NameRequiredDescriptionDefault
pageIdYesPage ID.
bodyFormatNostorage (default), atlas_doc_format, view.

TDQS

B3.3/5.0
Behavior3/5

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

The GET method implies a read-only fetch, but there are no annotations and the description discloses no further behavior such as return payload shape, error behavior, or the effect of bodyFormat. This is acceptable for a simple getter but does not add much behavioral context beyond the operation itself.

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 concise sentence that front-loads the action and includes the endpoint for precision. There is no filler or redundant information.

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 and the schema covers all parameters, but with no output schema and no annotations, the return value shape remains undocumented. It is enough to make a basic call with pageId, but it lacks richer context about what the agent will receive back.

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 documents both pageId and bodyFormat adequately. The description adds no parameter-specific detail, so it meets the baseline without exceeding it.

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 specific resource (a page) and the exact REST endpoint, which is enough to distinguish it from sibling tools like confluence_get_page_descendants or confluence_get_page_footer_comments. However, it does not explicitly contrast it with those siblings, 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 tool versus alternatives such as confluence_get_page_descendants, confluence_get_pages_in_space, or confluence_search_cql. The agent is left to infer the correct choice from the tool name and sibling names.

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

confluence_get_page_descendantsC

Page descendants (GET /wiki/api/v2/pages/{id}/descendants).

ParametersJSON Schema
NameRequiredDescriptionDefault
depthNo
limitNo
cursorNo
pageIdYesPage ID.

TDQS

C2.6/5.0
Behavior2/5

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

The HTTP GET in parentheses implies a read-only operation, but nothing is disclosed about whether descendants are returned recursively, how depth is interpreted, how cursor/limit pagination behaves, or what the response structure looks like. With no annotations, the description carries the full behavioral burden and fails to meet it.

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 text is short and free of fluff, with the endpoint front-loaded. However, it is a bare fragment rather than a useful description, so the conciseness comes at the cost of important detail.

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

Completeness2/5

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

The tool involves a depth parameter, a cursor, and a limit, yet none of those behaviors are explained, and there is no output schema. An agent would need to guess at pagination and depth semantics, making the description insufficient for correct invocation.

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

Parameters2/5

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

Schema coverage is only 25%, with pageId being the only described parameter. The description adds no meaning for depth, limit, or cursor beyond what their names suggest, and it does not compensate for the lack of schema documentation.

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 the resource ('Page descendants') and gives the exact GET endpoint, so an agent can tell what data is being requested. It is distinguishable from sibling tools like get_page and get_pages_in_space by the word 'descendants', though it lacks an explicit verb like 'retrieve'.

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 use this tool instead of alternatives, such as when a user wants descendants vs. a single page vs. all pages in a space. The tool name implies the use case, but no explicit conditions or exclusions are given.

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

confluence_get_page_inline_commentsC

Inline comments (GET /wiki/api/v2/pages/{id}/inline-comments).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
cursorNo
pageIdYesPage ID.

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are present, so the description has full responsibility for disclosing behavior. It reveals only the HTTP method and path; it does not mention pagination, response shape, ordering, or whether only comments visible to the user are returned. This is minimal disclosure.

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

Conciseness4/5

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

The description is very short and front-loaded, with no filler. However, it may be too terse to fully support call construction.

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 no output schema or annotations, the description would need to state what the response contains and how pagination works. It does neither, so the definition is incomplete for correct invocation beyond the minimal pageId call.

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

Parameters2/5

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

The schema describes only pageId ('Page ID.'), and the inferred endpoint confirms this parameter. limit and cursor have no descriptions, and the description does not explain their role in pagination, leaving 67% of parameters underspecified.

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 identifies the operation as retrieving inline comments for a page and gives the exact REST endpoint, so an agent can infer the resource and HTTP verb. It is clear, though it doesn't explicitly state 'list' or differentiate from the footer-comments sibling beyond the path.

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 over alternatives like confluence_get_page_footer_comments or confluence_create_inline_comment. The name and endpoint hint at the use case, but no explicit context or exclusions are given.

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

confluence_get_pages_in_spaceC

Pages in a space (GET /wiki/api/v2/spaces/{id}/pages).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
titleNo
cursorNo
statusNo
spaceIdYesNumeric space ID (not the key).

TDQS

C2.4/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure, but it only restates the endpoint. It does not mention pagination via the cursor parameter, whether results are flat or hierarchical, supported status values, or any authentication/rate-limit behavior. The GET verb at least signals a read operation.

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 compact and front-loads the resource, and the embedded endpoint adds structural value. However, it is under-specified to the point of reading like a title rather than a functional description.

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 list endpoint with no annotations and no output schema, the description omits return shape, pagination defaults, and filter semantics. An agent cannot predict the response format or how cursor, limit, and status interact.

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

Parameters2/5

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

Schema description coverage is only 20% (spaceId alone is documented in the schema), and the tool description adds nothing about parameters. The endpoint reference hints at the space ID, but limit, title, cursor, and status remain completely unexplained, and there are no enums to constrain them.

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 is a noun phrase ('Pages in a space') with no explicit verb, so the agent must infer the list operation from the HTTP path. It names the resource and scope, but does not distinguish this from siblings like confluence_get_page_descendants or confluence_search_cql, which also return pages.

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

Usage Guidelines2/5

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

No guidance is given on when to use this tool versus alternatives. The description never mentions when to prefer it over confluence_search_cql for filtered searches, confluence_get_page for a single page, or confluence_get_page_descendants for a hierarchy.

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

confluence_get_spacesC

Lists spaces (GET /wiki/api/v2/spaces).

ParametersJSON Schema
NameRequiredDescriptionDefault
keysNoCSV keys, e.g. ENG,DOC.
typeNo
limitNo
cursorNo

TDQS

C2.9/5.0
Behavior2/5

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

There are no annotations, so the description carries the full behavioral disclosure burden. It implies a read-only operation via GET, but does not mention pagination, response shape, scope of accessible spaces, or authentication requirements.

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 concise sentence with no filler. Including the endpoint adds precision without unnecessary length, making it well-structured for a simple list operation.

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 no output schema and no annotations, 'Lists spaces' plus the endpoint is too thin. An agent cannot tell what the response looks like, how pagination works, or how the optional parameters affect behavior.

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

Parameters1/5

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

Schema description coverage is only 25%: keys is described, but type, limit, and cursor are not. The description itself adds no parameter meaning, so it fails to compensate for the low schema coverage.

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 identifies a specific verb ('Lists') and resource ('spaces'), and includes the REST endpoint (GET /wiki/api/v2/spaces). This clearly distinguishes it from sibling tools like confluence_get_page or confluence_get_pages_in_space.

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 use this tool versus alternatives such as confluence_search_cql or confluence_get_pages_in_space. The agent must infer appropriate usage from the tool name alone.

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

confluence_search_cqlC

CQL search (GET /wiki/rest/api/search).

ParametersJSON Schema
NameRequiredDescriptionDefault
cqlYesE.g. type=page AND space=ENG AND title~'API'
limitNo
startNo
excerptNo

TDQS

C2.7/5.0
Behavior3/5

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

The description explicitly shows 'GET', which signals a read-only search operation, and identifies the API path. However, with no annotations, it leaves important behavioral details unmentioned: return shape, pagination behavior, excerpt handling, and whether the search covers pages, blog posts, attachments, or other content.

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

Conciseness4/5

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

The description is extremely short and front-loaded, with no filler words or redundant phrasing. It is appropriately compact for a simple search tool, though the brevity does sacrifice useful explanatory content that is penalized 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?

For a four-parameter tool with no annotations and no output schema, the description is incomplete: it omits valid CQL syntax guidance, return value structure, pagination semantics, and the scope of searchable content. The endpoint and name only provide basic orientation, not enough for reliable autonomous invocation.

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

Parameters1/5

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

The description adds no meaning to any of the four parameters; the only parameter documentation is the cql example in the schema. With schema description coverage at only 25%, the description was expected to compensate for the undocumented limit, start, and excerpt parameters, but it 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?

The description names a specific operation, 'CQL search', and supplies the REST endpoint, making it clear this tool runs Confluence Query Language searches. It is sufficiently distinct from sibling search tools like jira_search_jql and gitlab_search, though it does not spell out what content types are searched.

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 alternatives such as confluence_get_pages_in_space, jira_search_jql, or gitlab_search. The endpoint is provided, but no conditions, exclusions, or contextual recommendations are given.

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

confluence_update_pageC

Updates a page (PUT /wiki/api/v2/pages/{id}). versionNumber is required.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYes
pageIdYesPage ID.
statusNo
spaceIdNo
bodyValueYes
versionNumberYes
versionMessageNo
bodyRepresentationNo

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 burden of behavioral disclosure. It only says 'Updates a page' and mentions versionNumber; it does not explain that content is replaced, that a stale versionNumber may cause failure, or any authentication/error behavior.

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 short and front-loaded with the core action. The versionNumber note is useful but somewhat redundant with the schema's required field list.

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 8 parameters, no annotations, no output schema, and low schema coverage, the description is far from complete. It omits guidance on body format, required parameter roles, version handling, and failure behavior, leaving the agent to infer too much.

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

Parameters2/5

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

Schema description coverage is only 13%, so the description should compensate by explaining key parameters. It does not explain bodyValue, title, status, spaceId, bodyRepresentation, or versionMessage; the only mention, that versionNumber is required, merely repeats schema information.

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 tool updates a Confluence page and identifies the underlying HTTP method. It distinguishes the operation from creation at a basic level, though it does not explicitly contrast with confluence_create_page or other siblings.

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?

Use is implied for updating existing Confluence pages, and the note that versionNumber is required provides an important precondition. However, there is no explicit guidance on when to choose this over confluence_create_page or how to obtain the correct versionNumber.

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

figma_download_assetsC

Export URLs (GET /v1/images) and image fills for the file (GET /v1/files/:key/images).

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoFigma file or node URL.
scaleNo
formatNo
fileKeyNoFigma file key or full URL (figma.com/design/...).
nodeIdsNoNodes to export. If omitted, returns image fills only.
includeImageFillsNoDefault: true.

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 full behavioral disclosure. It only states what endpoints are involved, with no mention of whether this is a read-only operation, whether export URLs require asynchronous rendering, or how omitted nodeIds and includeImageFills affect the result. The nodeIds behavior is mentioned only in the parameter schema, not in the description.

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 one compact sentence with no filler, and it front-loads the core purpose ('Export URLs'). The endpoint references add precision, though the wording is slightly stilted and could be clearer to an agent unfamiliar with Figma API conventions.

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, no required parameters, no output schema, and no annotations, the description leaves important operational details undefined. It does not explain possible combinations of url, fileKey, nodeIds, scale, and format, nor what the response shape is. An agent would likely need to open schemas or rely on trial and error to invoke this tool correctly.

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

Parameters3/5

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

Schema description coverage is 67%, with url, fileKey, nodeIds, and includeImageFills already explained in the schema. The description adds endpoint context and the notion of 'image fills,' but does not meaningfully elaborate on scale or format beyond what their constraints and enum already convey. This is an adequate but not exceptional contribution.

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 concrete action ('Export') and specific resources ('URLs' and 'image fills'), and references the underlying Figma GET endpoints. This makes the tool's purpose reasonably clear and helps it stand apart from siblings like figma_get_file and figma_get_screenshot, though it could be phrased more plainly.

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 explicit guidance on when to use this tool versus alternatives, and it never names sibling tools or exclusion conditions. The endpoint references imply an asset-export use case, but an agent is left to infer when this should be chosen over figma_get_screenshot or figma_get_file.

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

figma_get_commentsC

File comments (GET /v1/files/:key/comments).

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoFigma file or node URL.
fileKeyNoFigma file key or full URL (figma.com/design/...).

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 reveal behavioral details, but it only restates the endpoint. It does not disclose pagination, whether resolved comments are included, return structure, authentication needs, or any side effects. The GET endpoint hints at a read operation but little else.

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 sentence that packs resource, verb, and endpoint into minimal space. There is no filler or repetition, and the key information is front-loaded.

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 no output schema and no annotations, the description should explain what the response contains and how the tool behaves. It does neither, leaving an agent to infer return values, comment ordering, filtering, and pagination.

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 'fileKey' already described in the schema. The tool description adds no further meaning about how these parameters interact or when one should be preferred, so the baseline 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 names a specific resource ('File comments') and includes the exact REST endpoint, making the tool's purpose clear. It is distinguishable from sibling Figma tools like figma_get_file or figma_get_metadata, though it doesn't explicitly contrast with them.

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 use this tool versus alternatives, such as figma_get_design_context or figma_get_file. The endpoint implies 'retrieve comments on a file,' but the description does not state use cases, exclusions, or preferred alternatives.

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

figma_get_design_contextB

Implementation context (layout, tokens, components, screenshot URL) composed via REST. Not the official MCP proprietary codegen.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoFigma file or node URL.
fileKeyNoFigma file key or full URL (figma.com/design/...).
nodeIdsNoTarget nodes. Recommended for smaller payloads.
includeVariablesNoDefault: true.
includeScreenshotNoDefault: true.

TDQS

B3.2/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 does disclose that the result is composed via REST and is not the official MCP codegen, which alerts agents to potentially different behavior. It does not address authentication, side effects, or failure modes, but 'get' implies a read operation and the output shape is stated.

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, with the main output content front-loaded and no filler. Every sentence adds information about the tool's nature.

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 no output schema and no annotations, the description should do more to explain invocation: which parameter is needed first, how nodeIds changes the result, and how the returned 'context' is structured. The broad output categories are present, but the agent is left without practical guidance for actually composing a useful request.

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 the schema already documents url, fileKey, nodeIds, includeVariables, and includeScreenshot. The description adds no parameter-level meaning, 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 identifies the deliverable as implementation context (layout, tokens, components, screenshot URL), which is a clear resource distinct from sibling Figma tools like figma_get_file or figma_get_screenshot. However, it lacks an explicit action verb such as 'retrieves' or 'generates', and the 'composed via REST' phrasing leans on implementation detail.

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 figma_get_file, figma_get_metadata, figma_get_screenshot, or figma_get_variable_defs. The only disqualifier, 'Not the official MCP proprietary codegen', is an implementation caveat, not usage direction. The intended usage is only implied by the tool name.

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

figma_get_fileB

Gets the Figma document (GET /v1/files/:key). Use depth/ids to shrink the payload.

ParametersJSON Schema
NameRequiredDescriptionDefault
idsNoNode IDs (comma-separated or array). URL node-id (1-2) is accepted.
urlNoFigma file or node URL.
depthNoTree depth.
fileKeyNoFigma file key or full URL (figma.com/design/...).

TDQS

B3.4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the behavioral burden. It signals a read-only operation via 'GET /v1/files/:key' and warns that payloads can be large enough to warrant depth/ids. It does not mention auth requirements, error behavior, or return structure, but for a straightforward read call this is sufficient.

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 two short sentences with no filler. The core action and endpoint are front-loaded, and the second sentence provides a practical tip that earns its place.

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

Completeness3/5

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

Given there is no output schema and no annotations, the description could say more about the returned document structure or which parameter is primary when all parameters are optional. However, the schema documents all parameters well, and the description conveys the core operation and the key payload-reduction technique, so it is adequate but not exhaustive.

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

Parameters4/5

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

Schema description coverage is 100%, establishing a baseline of 3. The description adds value by explaining that 'depth/ids' can shrink the payload, which is not explicitly stated in the input schema and helps an agent understand how to control response size.

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 action ('Gets') and the resource ('the Figma document'), and even includes the exact endpoint. It does not explicitly contrast with sibling tools like figma_get_metadata or figma_get_screenshot, but the document scope is reasonably distinct without needing further 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 about when to choose this tool over alternatives such as figma_get_metadata or figma_get_design_context. The only instruction, 'Use depth/ids to shrink the payload,' is about parameter usage rather than tool selection, so an agent gets no routing or exclusion criteria.

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

figma_get_metadataB

Slim XML tree (id, name, type, size) via GET /v1/files/:key/nodes.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoFigma file or node URL.
depthNo
fileKeyNoFigma file key or full URL (figma.com/design/...).
nodeIdsNoNodes to include. If omitted, tries the URL node-id; otherwise uses the root document.

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description carries the safety burden. 'GET' signals a non-mutating read operation, and the listed fields disclose the intended return shape. However, it does not clarify the response format, depth behavior, potential errors, or whether any side effects are possible.

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 tight sentence with no filler. The output shape is front-loaded, followed by the endpoint, making it easy to scan.

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

Completeness2/5

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

The tool has no annotations and no output schema, so the description must carry more explanatory weight. It omits depth semantics, node-id vs. URL handling, and enough detail about the returned tree structure, leaving an agent under-informed for correct invocation.

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

Parameters2/5

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

Schema coverage is 75%, and the description adds no parameter-level meaning. In particular, the 'depth' parameter has no schema description and is not explained in the tool description, leaving its semantics ambiguous for an agent.

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 identifies a specific resource (Figma nodes) and a concrete endpoint, with the output fields (id, name, type, size) spelled out. It is reasonably distinguishable from sibling tools like figma_get_file by the word 'slim', though it does not explicitly name the alternative.

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?

No explicit when-to-use or when-not-to-use guidance is provided. The word 'slim' implies lightweight metadata retrieval, but the description does not state when to choose this over figma_get_file, figma_get_design_context, or other siblings.

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

figma_get_screenshotA

Renders nodes as images (GET /v1/images/:key) and returns temporary URLs.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoFigma file or node URL.
scaleNo
formatNo
fileKeyNoFigma file key or full URL (figma.com/design/...).
nodeIdsYesNode IDs to render.

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations provided, the description carries the behavioral disclosure burden. It does disclose that the operation is a GET render and that returned URLs are temporary, which is useful. However, it omits other behavioral details such as error cases, URL expiration timeline, or that node rendering may fail for unsupported node types.

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 filler. Every word contributes to understanding the tool, and the endpoint reference adds precision without bloat.

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 tool with 5 parameters, no annotations, and no output schema, the description is somewhat thin. It states the core behavior and temp-URL output, but does not describe the returned URL mapping, the relationship between url and fileKey/nodeIds, or any usage prerequisites. The agent must rely on the schema and API familiarity to invoke it correctly.

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

Parameters3/5

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

Schema description coverage is 60%, and the description adds little parameter-level meaning beyond the schema. nodeIds, fileKey, and url are already described in the schema, while scale and format rely on their names, enums, and numeric bounds. The description is adequate but does not meaningfully compensate for the undocumented scale/format semantics.

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

Purpose5/5

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

The description clearly states the action ('Renders nodes as images'), the resource (GET /v1/images/:key), and the output (temporary URLs). This is specific enough to distinguish it from sibling tools like figma_get_file or figma_get_metadata.

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

Usage Guidelines4/5

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

The description gives clear context: this tool is for turning Figma nodes into rendered image URLs. It does not explicitly name alternatives or say when not to use it, but the rendering purpose is unambiguous and easily matched to an agent's need for screenshots.

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

figma_get_variable_defsB

Local (and optionally published) variables for the file (GET /v1/files/:key/variables/...).

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoFigma file or node URL.
fileKeyNoFigma file key or full URL (figma.com/design/...).
includePublishedNoAlso fetch published variables.

TDQS

B3.2/5.0
Behavior3/5

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

Annotations are absent, so the description itself must convey behavior. The GET endpoint indicates a non-mutating read, and 'Local (and optionally published)' describes the data scope returned. However, it does not disclose pagination, errors, auth requirements, or the structure of the returned variable definitions, leaving the behavioral picture thin.

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 compact sentence with no filler and it leads with the main scope distinction (local vs published). It is efficient and well-organized, though the brevity means some behavioral context is omitted and penalized elsewhere.

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

Completeness3/5

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

For a simple read-only tool with fully described parameters, this is minimally adequate: the core resource and the local/published option are stated. But with no output schema or annotations, it leaves the return payload, the relationship between url and fileKey, and when includePublished matters unspecified.

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 three parameters have descriptions in the schema (100% coverage), so the schema already carries the semantic load. The tool description only echoes the 'published' concept and adds no new detail about url/fileKey precedence or includePublished behavior. Baseline 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 identifies the resource ('variables') and the scope ('Local (and optionally published)'), and the parenthetical 'GET /v1/files/:key/variables/...' makes the retrieval action explicit. It is clear enough to avoid confusing this with the other Figma tools, though it never states the action as a verb and doesn't explicitly differentiate from siblings.

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 or alternative tools are mentioned. The only contextual hint is 'optionally published', which maps to includePublished but does not explain when to enable it. An agent must infer from the tool name and sibling list that this is the way to read variable definitions.

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

figma_whoamiA

Returns the authenticated Figma user (GET /v1/me).

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 full burden of behavioral disclosure. It clearly states the core behavior—returning the authenticated user—but it does not mention failure modes, authentication requirements, or response shape. The word 'authenticated' only weakly implies the auth context.

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 that includes the endpoint for clarity and contains no filler or redundant information. It is efficiently front-loaded with the action and resource.

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

Completeness4/5

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

For a simple, zero-parameter read-only identity lookup, the description is largely complete: it names the tool's purpose, resource, and endpoint. However, because there is no output schema and no annotations, a bit more detail about the returned user object or error behavior would make it fully 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?

The tool has zero parameters and the input schema is fully empty, so there are no parameter semantics to document. The 0-parameter baseline of 4 applies; the description correctly adds nothing beyond the endpoint.

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 ('Returns'), a clear resource ('the authenticated Figma user'), and the exact endpoint ('GET /v1/me'). This distinguishes it from sibling tools like gitlab_whoami by explicitly naming Figma.

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 does not provide any guidance on when to use this tool versus alternatives, nor does it mention exclusions or prerequisites. The intended use is implied by the name and endpoint, but no explicit context is given.

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

gitlab_accept_merge_requestC

Accepts/merges an MR (PUT /merge_requests/:iid/merge).

ParametersJSON Schema
NameRequiredDescriptionDefault
squashNo
projectIdYesNumeric ID or path with namespace, e.g. group/project.
mergeRequestIidYes
mergeCommitMessageNo
shouldRemoveSourceBranchNo

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It reveals only that this is a merge action via PUT, but does not mention side effects like source branch deletion, merge commit behavior, permission requirements, or failure conditions.

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 concise sentence that front-loads the action and includes the endpoint for reference. Minor redundancy in 'Accepts/merges' prevents a perfect score, but there is no wasted content.

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 operation with no annotations and no output schema, the description is too minimal. It lacks context about optional parameters, expected behavior, and any post-conditions, making it incomplete for safe autonomous invocation.

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

Parameters1/5

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

Schema description coverage is only 20% and the description adds no parameter-level meaning. It does not explain squash, mergeCommitMessage, or shouldRemoveSourceBranch, leaving the agent without the information needed to set them appropriately.

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

Purpose5/5

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

The description clearly states the operation: 'Accepts/merges an MR' and includes the exact API endpoint. This distinguishes it from sibling tools like gitlab_get_merge_request and gitlab_save_merge_request without 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?

The description gives no guidance on when to use this tool versus alternatives such as gitlab_save_merge_request or gitlab_create_merge_request_note. There are no stated conditions, prerequisites, or exclusions.

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

gitlab_add_branchB

Creates a branch (POST /repository/branches).

ParametersJSON Schema
NameRequiredDescriptionDefault
refYesSource branch, tag, or SHA.
branchYes
projectIdYesNumeric ID or path with namespace, e.g. group/project.

TDQS

B3.3/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 states that a branch is created and identifies the HTTP method; it does not mention side effects, required permissions, idempotency, or error behavior such as what happens if the branch already exists.

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 short, front-loaded sentence with no filler. The parenthetical endpoint adds useful precision without repeating schema information or wasting words.

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 too sparse. It omits what a successful response looks like, behavior on conflicts, prerequisites such as project existence or permissions, and any post-condition details. The schema covers the parameters but not the operational context.

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

Parameters2/5

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

Schema description coverage is 67%, so ref and projectId are partially explained by the schema, but the description adds no parameter-level meaning. The 'branch' parameter has no schema description and the tool description does not explicitly clarify that it is the new branch name, leaving an ambiguity that the description fails to resolve.

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 starts with a specific verb and object, 'Creates a branch,' and adds the exact REST endpoint 'POST /repository/branches', making the tool's purpose unambiguous. It is clearly distinct from sibling GitLab tools such as gitlab_add_commit or gitlab_create_issue, none of which create branches.

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: an agent can infer this tool is for creating a new branch in a GitLab project, but there is no explicit guidance on when to use it versus alternatives, nor any mention of preconditions or limitations. No exclusions or alternative tools are noted.

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

gitlab_add_commitB

Creates a commit with actions (POST /repository/commits).

ParametersJSON Schema
NameRequiredDescriptionDefault
branchYes
actionsYes
projectIdYesNumeric ID or path with namespace, e.g. group/project.
startBranchNo
commitMessageYes

TDQS

B3.1/5.0
Behavior2/5

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

There are no annotations, so the description carries the full disclosure burden. It does state that this is a mutating operation that creates a commit, but it does not disclose effects on the target branch, required permissions, or what happens when the commit is created.

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. It front-loads the core purpose and includes the endpoint, which is useful context without adding unnecessary length.

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 operation with five parameters, no annotations, and no output schema, the description is too sparse. It lacks critical context about required parameters, action semantics, branch behavior, and return values, leaving an agent under-informed.

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

Parameters2/5

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

Schema description coverage is only 20%, with only projectId described. The description adds little beyond the word 'actions' and does not explain branch, startBranch, commitMessage, or the structure and allowed values of actions. It fails to compensate for the schema's low coverage.

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 and resource: 'Creates a commit with actions' and includes the exact endpoint '(POST /repository/commits)'. This is clear and distinct enough from siblings like gitlab_add_branch or gitlab_get_commit.

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 for when to use this tool versus alternatives. It does not mention that it is for creating new commits on a GitLab branch, nor does it contrast with gitlab_add_branch, gitlab_save_merge_request, or other commit-related operations.

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

gitlab_create_issueC

Creates an issue (POST /projects/:id/issues).

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYes
labelsNo
projectIdYesNumeric ID or path with namespace, e.g. group/project.
assigneeIdsNo
descriptionNo

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It indicates a write operation via POST, but does not mention required permissions, side effects, idempotency, rate limits, or what happens on failure. The description adds little beyond what 'Creates an issue' already implies.

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. It efficiently conveys the core operation and adds the endpoint as useful technical context without unnecessary elaboration.

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

Completeness1/5

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

This is an issue-creation tool with 5 parameters, no annotations, and no output schema, yet the description gives no behavioral or parameter context. An agent would have to infer important details such as required fields beyond the schema, label syntax, assignee ID types, and expected return data. The description is far too thin for the tool's complexity.

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

Parameters1/5

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

Schema description coverage is only 20%, with only projectId documented in the schema. The tool description provides no parameter details, nor does it compensate for the undocumented title, labels, assigneeIds, and description parameters. It does not explain formats, constraints, or relationships between parameters.

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

Purpose5/5

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

The description clearly states the action 'Creates an issue' and identifies the specific resource and endpoint (POST /projects/:id/issues), making the tool's purpose unambiguous. The GitLab prefix in the tool name further distinguishes it from similar create-issue tools like jira_create_issue.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives, such as gitlab_get_issue or jira_create_issue. It does not state prerequisites, when not to use it, or how to choose between similar issue-related tools.

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

gitlab_create_merge_request_noteC

Comment on an MR (POST /merge_requests/:iid/notes).

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes
projectIdYesNumeric ID or path with namespace, e.g. group/project.
mergeRequestIidYes

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 burden of behavioral disclosure. It only says 'Comment on an MR' and gives the POST endpoint; it does not state that the action creates a persistent note, what permissions are required, whether it is reversible, or what response to expect. The POST method implies a write but adds little beyond that.

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, scannable sentence with no filler. The endpoint parenthetical adds a small but useful technical clarification, and every word earns its place.

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 tool with three required parameters, no annotations, and no output schema, this description is too sparse. It omits usage context, expected response, error conditions, and behavioral caveats, leaving the agent to infer most details from the name and endpoint.

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

Parameters2/5

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

Schema description coverage is only 33% (only projectId is documented). The description does not explain mergeRequestIid or body, though 'Comment' and 'MR' weakly imply body is the comment text and the IID identifies the merge request. This does not adequately compensate for the undocumented 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?

The description clearly states the action (comment) and resource (merge request), reinforced by the explicit POST endpoint. It does not explicitly differentiate from sibling tools, but the tool name and 'MR' make the target 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 is given about when to use this tool versus alternatives, nor when not to use it. There is no mention of prerequisites, contexts, or exclusions, leaving the agent to infer usage entirely from the name and endpoint.

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

gitlab_get_commitB

Gets a commit (GET /repository/commits/:sha).

ParametersJSON Schema
NameRequiredDescriptionDefault
shaYes
statsNo
projectIdYesNumeric ID or path with namespace, e.g. group/project.

TDQS

B3.3/5.0
Behavior3/5

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

The description reveals the HTTP method GET and the targeted endpoint, which implies a non-destructive read operation. However, with no annotations at all, it does not disclose what commit data is returned, how the 'stats' parameter affects behavior, or any error/rate-limit considerations.

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. The action, resource, and endpoint are front-loaded, and every part contributes useful information.

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 no output schema and no annotations, the description should carry more weight. It fails to explain the response shape, the role of 'stats', or how projectId is used in the endpoint, leaving an agent with significant gaps for correct invocation and result interpretation.

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

Parameters2/5

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

Schema description coverage is only 33%; only projectId is described. The description does indicate that sha is part of the URL path, adding some meaning, but the 'stats' boolean parameter remains entirely unexplained in both description and schema.

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

Purpose5/5

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

The description clearly states the action ('Gets') and the resource ('a commit'), and reinforces it with the HTTP endpoint 'GET /repository/commits/:sha'. This distinguishes it from sibling tools like gitlab_add_commit and gitlab_get_merge_request without requiring schema inspection.

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, and there are many GitLab sibling tools that could overlap. No when-to-use criteria, exclusions, or alternative tool names are provided.

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

gitlab_get_issueB

Gets an issue (GET /projects/:id/issues/:iid).

ParametersJSON Schema
NameRequiredDescriptionDefault
issueIidYes
projectIdYesNumeric ID or path with namespace, e.g. group/project.

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description itself must carry the behavioral burden. The 'GET' verb does indicate a non-mutating read, which is useful, but nothing is said about return format, error behavior, permissions, or any other side-effect-relevant trait.

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, short sentence that immediately states the action and resource. No filler or repetition of schema details.

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

Completeness3/5

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

For a low-complexity read tool, the endpoint plus schema covers basic invocation. However, the absence of any return-value description and the undocumented issueIid parameter leave meaningful gaps for an agent deciding whether the result satisfies a request.

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

Parameters2/5

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

Schema coverage is only 50%; projectId has a description but issueIid does not. The description's endpoint pattern '/projects/:id/issues/:iid' mirrors the parameter names without explaining what an iid is or how it differs from an id, so it fails to compensate for the missing schema documentation.

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 ('Gets'), a clear resource ('an issue'), and the exact REST endpoint. This unambiguously distinguishes it from siblings like gitlab_get_merge_request or gitlab_create_issue.

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 explicit guidance about when to use this tool versus alternatives, and does not mention prerequisites or exclusions. The endpoint makes the basic use obvious, but no decision support is provided.

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

gitlab_get_jobC

Gets a job (GET /projects/:id/jobs/:job_id).

ParametersJSON Schema
NameRequiredDescriptionDefault
jobIdYes
projectIdYesNumeric ID or path with namespace, e.g. group/project.

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure, but it only says a job is fetched and repeats the HTTP method. It does not disclose what the response contains, whether additional scopes or project visibility are required, or how missing/invalid job IDs 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.

Conciseness4/5

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

The description is a single, efficient sentence with no filler and the endpoint is front-loaded where it is most useful. It is appropriately brief for such a small tool, though the brevity borders on under-specification in other dimensions.

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 read tool with no output schema and no annotations, the description should at least indicate what data is returned and how to obtain a valid job ID. It does neither, and it omits the natural connection to sibling tools like gitlab_get_pipeline_jobs, leaving the agent without enough context to call it reliably.

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

Parameters2/5

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

Schema description coverage is only 50%, and the description does not compensate: jobId is left entirely undocumented, and projectId's meaning must be gathered from the schema. The endpoint template hints that projectId maps to ':id' and jobId to ':job_id', but this is minimal and indirect.

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 the specific verb 'Gets a job' and names a concrete resource, backed by the exact GitLab REST endpoint. It is clear that this tool retrieves a single CI job by ID, though it does not explicitly contrast itself with the sibling gitlab_get_pipeline_jobs.

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 use this tool versus related alternatives like gitlab_get_pipeline_jobs or gitlab_get_pipeline. The description merely states what the endpoint does, leaving the agent to infer that it should be used when a specific job ID is already known.

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

gitlab_get_merge_requestC

Gets an MR and optionally commits, diffs, notes, and pipelines.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdYesNumeric ID or path with namespace, e.g. group/project.
includeDiffsNo
includeNotesNo
includeCommitsNo
mergeRequestIidYes
includePipelinesNo

TDQS

C2.9/5.0
Behavior3/5

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

With no annotations, the description carries the behavioral disclosure burden. 'Gets' suggests a read-only operation and 'optionally commits, diffs, notes, and pipelines' indicates that include flags affect response composition. However, it does not explicitly state that the operation is side-effect-free, what defaults apply, or how the optional components alter the response, leaving meaningful ambiguity.

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

Conciseness4/5

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

The description is a single front-loaded sentence with no filler words. It efficiently communicates the primary action and the optional response pieces, though the list order is minor and not fully aligned with parameter naming. It is concise without being verbose.

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 the absence of annotations and output schema, plus six parameters and many sibling tools, this short description is incomplete. It does not explain how to identify the MR, which parameters are required, when to prefer this over gitlab_list_merge_requests, or what the response contains by default. An agent could make a reasonable first call, but would lack important context for robust usage.

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

Parameters2/5

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

The schema description coverage is only 17%, yet the description does not explain the required parameters projectId and mergeRequestIid; in particular, mergeRequestIid's distinction from a global MR ID is left undocumented. The optional list partially maps to the include* booleans, but it does not connect those concepts to the actual parameter names or clarify required arguments, so it only weakly compensates for the low schema coverage.

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 ('Gets') and a specific resource ('an MR'), and lists the optional data components (commits, diffs, notes, pipelines). It is distinguishable from sibling gitlab_list_merge_requests because it targets a single MR rather than a list. It does not explicitly name the required identifiers, but the core purpose is clear.

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 gitlab_list_merge_requests, gitlab_get_issue, or gitlab_save_merge_request. The phrase 'Gets an MR' implies use for retrieval, but no exclusions or comparison to other tools are provided, so an agent must infer the appropriate context 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.

gitlab_get_pipelineC

Gets a pipeline (GET /pipelines/:pipeline_id).

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdYesNumeric ID or path with namespace, e.g. group/project.
pipelineIdYes

TDQS

C2.9/5.0
Behavior3/5

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

With no annotations, the description must carry behavioral disclosure, and 'Gets' plus 'GET /pipelines/:pipeline_id' clearly indicate a read-only operation. It does not mention edge behaviors such as 404 handling, required permissions, or whether the full pipeline object is returned. For a simple GET operation, this is acceptable but minimal.

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 with no wasted words, using a standard verb-resource form plus the endpoint. It is front-loaded and efficient. It is so terse that it sacrifices helpful context, but for a simple GET operation the brevity is not inappropriate.

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

Completeness2/5

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

The tool has no output schema, no annotations, and sits among many GitLab siblings with overlapping concepts, yet the description provides only minimal GET semantics. It does not explain when to choose this over list_pipelines or get_pipeline_jobs, nor how to obtain a valid pipelineId. This is not complete enough for confident selection and correct invocation.

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?

Only one of the two parameters (projectId) has a schema description, and the tool description adds no parameter-level detail. pipelineId is only typed as a positive integer with no hint about where it comes from or how it relates to the project. The endpoint placeholder offers slight context, but it is insufficient compensation for the incomplete schema coverage and the description's silence on parameter meaning.

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 identifies the action ('Gets') and resource ('a pipeline'), and the endpoint path confirms the specific API call. It is distinct from list_pipelines, which retrieves multiple pipelines, and from pipeline-related siblings like gitlab_get_pipeline_jobs. However, it does not explicitly differentiate itself from these siblings in the text.

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 use this tool versus gitlab_list_pipelines, gitlab_get_pipeline_jobs, or other GitLab siblings. There are no exclusions, prerequisites, or context cues beyond the bare GET semantics. An agent must infer usage from the tool name alone.

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

gitlab_get_pipeline_jobsA

Jobs of a pipeline (GET /pipelines/:pipeline_id/jobs).

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdYesNumeric ID or path with namespace, e.g. group/project.
pipelineIdYes

TDQS

A3.5/5.0
Behavior2/5

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

There are no annotations provided, so the description carries the full burden of behavioral disclosure. It only states a GET endpoint, which hints at read-only behavior, but it does not mention pagination, whether all jobs are returned, or what the response contains; this is thin coverage for a tool with no annotation support.

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

Conciseness5/5

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

The description is extremely compact: a one-phrase resource statement followed by the exact API endpoint. Every word earns its place, and the key information is front-loaded before the parenthetical endpoint.

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

Completeness3/5

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

For a simple two-parameter listing operation, the description is minimally sufficient: it identifies the inputs conceptually and the expected collection of jobs. However, with no output schema and no annotations, the lack of any mention of response format, pagination, or permissions leaves notable gaps in what an agent needs for robust 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 coverage is 50%, with projectId already described. The endpoint string adds a little value by clarifying that pipelineId maps to the ':pipeline_id' path segment, but the description does not meaningfully expand on the schema or add context for how the parameters relate, such as requiring an existing pipeline.

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 specifies the resource ('jobs of a pipeline') and even gives the exact HTTP verb and path ('GET /pipelines/:pipeline_id/jobs'), so the tool's action and target are unambiguous. It also differentiates from siblings like gitlab_get_pipeline and gitlab_get_job by clearly focusing on the plural jobs collection.

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

Usage Guidelines3/5

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

The description implies the correct use case: when you need the jobs belonging to a particular pipeline. However, it never explicitly states when not to use it or mentions alternatives such as gitlab_get_job for a single job, leaving the routing decision to inference from sibling names.

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

gitlab_get_repository_fileB

File contents (GET /repository/files/:path). content is base64.

ParametersJSON Schema
NameRequiredDescriptionDefault
refNoBranch, tag, or SHA. Default: the project's default HEAD.
filePathYes
projectIdYesNumeric ID or path with namespace, e.g. group/project.

TDQS

B3.1/5.0
Behavior3/5

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

No annotations are provided, so the description carries the behavioral burden. It discloses that return content is base64-encoded, which is useful, and the GET verb implies a read-only operation. However, it doesn't mention error behavior, authentication, URL encoding of the file path, or limits.

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

Conciseness5/5

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

The description is extremely concise and front-loaded with the core purpose. The endpoint and base64 detail are delivered in one compact sentence with no filler.

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

Completeness3/5

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

For a simple file-fetch operation, the description covers the essential action and a key response trait. But with no output schema and no annotations, an agent may still lack clarity on the exact response shape, error cases, and path-handling requirements.

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

Parameters2/5

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

Schema descriptions cover ref and projectId, but filePath has no schema description. The description's endpoint hint ':path' adds some context for filePath, but not enough to clarify path formatting, encoding, or whether a leading slash is needed. It adds little value 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 states the resource (repository file), the operation (GET), and a key detail (base64 content). It clearly identifies the tool as a file-content fetcher. It doesn't explicitly distinguish itself from sibling tools, but the resource and operation are specific enough given the sibling list.

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 use this tool versus alternatives. The description only states what the tool does, not when it should be chosen or when another gitlab tool would be more appropriate.

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

gitlab_list_merge_requestsB

Lists merge requests (GET /projects/:id/merge_requests).

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
stateNo
searchNo
perPageNo
projectIdYesNumeric ID or path with namespace, e.g. group/project.
sourceBranchNo
targetBranchNo

TDQS

B3.1/5.0
Behavior2/5

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

There are no annotations, so the description carries the full behavioral burden, but it only states that the tool lists merge requests and provides the endpoint. It does not disclose pagination behavior, default result counts, state filtering effects, read-only guarantees, or any authentication requirements.

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 concise sentence that front-loads the action and includes the endpoint for precision. There is no filler or redundant content.

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 7 parameters, no annotations, and no output schema, a one-line description is insufficient. It omits key context such as how filtering parameters work, pagination defaults, and what the response contains, leaving the agent with an incomplete picture.

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

Parameters2/5

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

Schema description coverage is only 14%, with projectId being the only documented parameter. The description adds no parameter meaning beyond the endpoint's ':id' placeholder, leaving page, perPage, state, search, sourceBranch, and targetBranch semantically under-specified.

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 action ('Lists merge requests') and resource (project merge requests via the endpoint). This clearly distinguishes it from sibling tools like gitlab_get_merge_request, gitlab_accept_merge_request, and gitlab_save_merge_request.

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 use this tool versus alternatives, such as using gitlab_get_merge_request for a single merge request or gitlab_create_merge_request_note for commenting. The agent must infer usage purely from the tool name and endpoint.

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

gitlab_list_pipelinesC

Lists pipelines (GET /projects/:id/pipelines).

ParametersJSON Schema
NameRequiredDescriptionDefault
refNo
pageNo
statusNo
perPageNo
projectIdYesNumeric ID or path with namespace, e.g. group/project.

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 burden of behavioral disclosure. It only states the verb and GET endpoint; it does not mention read-only semantics, pagination defaults, result shape, authentication needs, or rate limits.

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 short sentence with no filler, and the core action and endpoint are front-loaded. It is concise, though the brevity sacrifices important detail captured as gaps in the other dimensions.

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 list endpoint with no annotations and no output schema, this description is too thin. It omits filter semantics, pagination behavior, and return-value expectations, providing the minimum needed to identify the tool but not enough to invoke it correctly for non-default cases.

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

Parameters2/5

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

Schema description coverage is only 20%, so the description needed to compensate for the undocumented ref, status, page, and perPage parameters. It does not; it only references the endpoint path. Only projectId has a schema description, leaving the other four parameters without meaningful semantics in either the schema or the description.

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+resource ('Lists pipelines') and includes the REST endpoint, so an agent can tell this is a collection-level listing rather than a single-pipeline fetch. It clearly contrasts with siblings like gitlab_get_pipeline and gitlab_get_pipeline_jobs, though it does not name them explicitly.

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 gitlab_get_pipeline or gitlab_get_pipeline_jobs. The intended context is only inferable from the tool name and sibling list, not from the description itself.

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

gitlab_list_project_membersA

Project members (GET /projects/:id/members). members/all includes inherited members.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNo
projectIdYesNumeric ID or path with namespace, e.g. group/project.
includeInheritedNo

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the disclosure burden. It discloses the endpoint and a meaningful behavioral difference: includeInherited uses members/all and includes inherited members. It does not mention pagination or return shape, but for a simple read-only list the key behavior is stated.

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?

Extremely compact and front-loaded: the resource and endpoint appear first, followed by the inherited-members caveat. There is no filler wording or repetition of schema details. Every element earns its place.

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 low-complexity read-only list, the description plus the projectId schema is nearly sufficient for a basic call. The optional query parameter is unexplained and no output structure is described, but neither blocks correct use for the common case. Adequate but not thorough.

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 only 33%, so the description must add parameter meaning. It does explain includeInherited via the members/all note, but the query parameter remains entirely undocumented in both the schema and the description. It adds some but not complete parameter 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 identifies the resource ('Project members') and the exact API endpoint, making the tool's function evident. It lacks an explicit verb like 'list' and doesn't distinguish among sibling tools, but the GET method and tool name make the action clear.

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

Usage Guidelines3/5

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

The description implies the tool is for retrieving a project's members and clarifies that members/all covers inherited members, which helps the agent choose includeInherited. It offers no explicit when-to-use vs alternatives or exclusions, so usage guidance is only implicit.

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

gitlab_list_projectsB

Lists projects (GET /projects). Defaults to the user's membership, simple payload.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
sortNo
ownedNo
searchNo
simpleNoDefault: true.
orderByNoDefault: last_activity_at.
perPageNo
starredNo
archivedNo
membershipNoDefault: true. false also lists visible projects without membership (can be huge).
visibilityNo
minAccessLevelNo10 Guest, 20 Reporter, 30 Developer, 40 Maintainer, 50 Owner.

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations provided, the description carries the burden for behavioral disclosure. It does add useful behavior — default membership scoping and a simplified payload — but it does not disclose pagination behavior, response shape, or any read-only/authorization context, leaving meaningful gaps.

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 with no filler, and the most decision-relevant information (default membership and simple payload) is front-loaded. It is a model of concise, scannable tool documentation.

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 a 12-parameter tool with no output schema and no annotations, so the description needs to provide more context for correct invocation. It gives the default call behavior but omits pagination, filtering guidance, and the shape of the returned payload, making it incomplete for an agent deciding between or configuring parameters.

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

Parameters2/5

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

Schema description coverage is only 33%, so the description needed to compensate for many undocumented parameters. It only addresses defaults for membership and simple, while page, sort, owned, search, visibility, starred, archived, and others receive no guidance from the description.

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 an explicit verb and resource ('Lists projects') and even cites the endpoint (GET /projects). It also communicates default scoping ('user's membership, simple payload'), which clearly separates it from sibling list tools like gitlab_list_merge_requests or gitlab_list_project_members.

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 explicit when-to-use or when-not-to-use guidance is given, and no alternative tools are named. The 'Defaults to the user's membership' line hints at a primary use case but never tells the agent when to prefer this over gitlab_search or other GitLab list tools.

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

gitlab_list_wiki_pagesC

Wiki pages (GET /projects/:id/wikis).

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdYesNumeric ID or path with namespace, e.g. group/project.
withContentNo

TDQS

C2.3/5.0
Behavior2/5

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

With no annotations provided, the description bears the full burden of behavioral disclosure. It only states the resource and HTTP method, with no mention of read-only behavior, return contents, effects of the withContent parameter, or permissions.

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

Conciseness2/5

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

The description is extremely short and front-loads the resource, but it is a fragment rather than a clear sentence. It omits a verb and reads more like a label than an actionable description, making the brevity counterproductive.

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 simple two-parameter endpoint with no output schema and no annotations, the description leaves essential context missing: what withContent does, what the response contains, and any project-related scope details. It is not complete enough to reliably invoke the tool.

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

Parameters2/5

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

Schema coverage is only 50%: projectId is documented in the schema, but withContent has no description and the tool description does not clarify it. The description adds no parameter meaning beyond the endpoint path, so it fails to compensate for the gap.

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 is a noun phrase 'Wiki pages' plus the API endpoint, which implies a list operation but does not explicitly state one. It is distinct from siblings by resource, but the tool name carries most of the meaning rather than the description itself.

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 about when to use this tool or how it relates to other GitLab tools. It does not mention alternatives, prerequisites, or context, leaving the agent to infer usage entirely from the name and endpoint.

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

gitlab_save_merge_requestC

Creates (POST) or updates (PUT) a merge request.

ParametersJSON Schema
NameRequiredDescriptionDefault
draftNo
titleNo
projectIdYesNumeric ID or path with namespace, e.g. group/project.
assigneeIdsNo
descriptionNo
reviewerIdsNo
sourceBranchNo
targetBranchNo
mergeRequestIidNo
removeSourceBranchNo

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 burden of behavioral disclosure. It discloses that the tool mutates state via POST/PUT, but it does not explain side effects, permissions required, what happens on update, required fields for creation, or response behavior. This is insufficient for a mutation tool with no annotation safety net.

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 and includes the essential HTTP method distinction. It is concise and immediately communicates the core operation. However, it is so terse that it omits operationally important details, which slightly reduces the appropriateness of its size.

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 a 10-parameter, dual-mode mutation tool with no annotations and no output schema, so the description needs to supply substantial context. It fails to explain the create-vs-update trigger, required parameters for each mode, or consequences of invocation. The description is not complete enough for an agent to reliably select and call the tool correctly.

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

Parameters2/5

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

Schema description coverage is only 10%, yet the description adds no parameter-level meaning. It does not indicate that mergeRequestIid selects update mode, that sourceBranch and targetBranch are likely needed for create, or how draft/removeSourceBranch behave. The agent must rely on schema property names alone for most parameters.

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 clear verb-resource pairing: 'Creates (POST) or updates (PUT) a merge request.' It names both the action and the target resource, and the HTTP methods reinforce the dual nature of the tool. There is no ambiguity with sibling tools like gitlab_list_merge_requests or gitlab_get_merge_request.

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 about when to use this tool versus alternatives, or when the create path applies versus the update path. The description does not mention that mergeRequestIid likely distinguishes update from create, nor does it reference any sibling tool for comparison. An agent must infer usage entirely from the tool name and schema.

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

gitlab_search_labelsB

Project labels (GET /projects/:id/labels).

ParametersJSON Schema
NameRequiredDescriptionDefault
searchNo
projectIdYesNumeric ID or path with namespace, e.g. group/project.

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 burden. It does disclose the HTTP method (GET), implying a read-only operation scoped to a project. However, it does not mention pagination, return format, authorization needs, or how the optional 'search' parameter affects behavior.

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 with no filler. The resource and endpoint are front-loaded, making it immediately scannable and easy to parse.

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

Completeness3/5

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

For a simple list-style endpoint, the description is minimally adequate, but it omits any explanation of what the 'search' parameter does and what the response contains. An agent could probably invoke the tool correctly for basic use, but would lack context for filtering or interpreting results.

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

Parameters2/5

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

Schema coverage is only 50%; projectId is documented, but the 'search' parameter has no description in the schema. The tool description also does not explain the search behavior, so an agent gets no added meaning for the optionally critical parameter beyond the tool name.

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 identifies the resource ('Project labels') and the exact API path, making the tool's purpose understandable at a glance. Although it lacks an explicit verb like 'list' or 'search', the GET endpoint and tool name strongly imply retrieving labels for a project.

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. The sibling list includes other GitLab tools like gitlab_search, but the description does not explain how this label-specific search differs or when to prefer it.

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

gitlab_whoamiA

Authenticated user for the token (GET /user).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. It discloses the HTTP method (GET) and the fact that the operation is tied to the supplied token, which implies read-only behavior. However, it does not describe the response structure, error behavior, or whether any rate limits apply, leaving some behavioral gaps.

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 short sentence with the endpoint in parentheses, which is appropriately sized and front-loaded. Every word earns its place, and there is no redundancy.

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

Completeness3/5

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

For a zero-parameter identity lookup, invocation is fully specified. However, there is no output schema and the description does not enumerate the returned user fields, so an agent may not know what data to expect. This is a minor completeness gap for a standard GitLab /user endpoint.

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 has zero parameters, so the input schema fully covers everything; there is nothing for the description to add. Baseline for zero-parameter tools is 4.

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 identifies the resource (the authenticated user associated with the token) and the exact endpoint (GET /user), making the tool's purpose clear. It lacks an explicit action verb like 'retrieves' or 'returns,' but the noun phrase is unambiguous. It is distinguishable from sibling tools like gitlab_list_projects because the endpoint and token reference are unique to identity lookup.

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

Usage Guidelines3/5

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

The description does not state when to use this tool versus alternatives such as figma_whoami or other GitLab tools. The usage is only implied: if you need the identity of the current token holder, this is the tool. There is no explicit mention of exclusions or alternatives.

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

jira_add_commentB

Adds a comment (POST /rest/api/3/issue/{key}/comment).

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes
issueIdOrKeyYes

TDQS

B3.3/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 conveys that the operation is a mutation through the verb 'Adds' and the POST method, but says nothing about side effects (e.g., watcher notifications), required permissions, or whether the created comment is returned. This is thin 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.

Conciseness5/5

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

A single short sentence that front-loads the action and appends a high-value endpoint reference. There is no filler; every element earns its place.

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

Completeness2/5

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

The tool is structurally simple (2 required params, no output schema), but with zero annotations and 0% schema description coverage the description must do more. It leaves the body format ambiguous and gives no indication of return values or failure modes, so an agent could invoke it with a malformed comment payload.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. The endpoint's '{key}' segment gives a useful hint that the required issueIdOrKey is the Jira issue key used in the URL path, but the body parameter — which accepts either a string or an object — is left entirely unexplained, leaving ambiguity about whether to send plain text, markdown, or ADF.

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 and resource — 'Adds a comment' — and pins the exact operation with the REST endpoint 'POST /rest/api/3/issue/{key}/comment'. The '{key}' path segment makes clear this targets a Jira issue's comments, distinguishing it from comment siblings like confluence_create_inline_comment and from jira_add_worklog without opening any schema.

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

Usage Guidelines3/5

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

Usage context is only implied: the 'jira' namespace in the name and the '/issue/{key}/comment' endpoint signal this is for adding a comment to a Jira issue. There is no explicit routing versus alternatives such as jira_add_worklog or confluence_create_footer_comment, and no exclusions or prerequisites like required comment permissions.

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

jira_add_worklogC

Adds a worklog (POST /rest/api/3/issue/{key}/worklog).

ParametersJSON Schema
NameRequiredDescriptionDefault
commentNo
startedNoISO-8601.
timeSpentYesE.g. 1h, 30m.
issueIdOrKeyYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations exist, so the description must carry the full behavioral disclosure burden. It only says 'Adds' and repeats the endpoint, with no mention of required permissions, time-tracking prerequisites, side effects on the issue, or response/error behavior. This gives minimal transparency beyond the mutation itself.

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 direct sentence with no filler, and the endpoint is useful context. It is concise, though it could have added more guidance without becoming verbose.

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 no annotations, no output schema, four parameters, and incomplete parameter coverage, the one-sentence description is not enough for an agent to understand all requirements and expected behavior. The endpoint provides context, but the definition is otherwise minimal.

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

Parameters2/5

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

Schema coverage is only 50%, and the description adds no parameter details. While started and timeSpent have schema descriptions, comment and issueIdOrKey remain undocumented in both schema and description, and the description does not compensate for that gap.

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 and resource ('Adds a worklog') and includes the exact REST endpoint, making it clear what the tool does. It is easily distinguished from siblings like jira_add_comment by the entity being added.

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 about when to use this tool versus alternatives such as jira_add_comment or jira_create_issue. The only implied usage is derived from the tool name, and there are no exclusions or conditions provided.

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

jira_create_issueA

Creates an issue (POST /rest/api/3/issue). Plain-text description is converted to ADF.

ParametersJSON Schema
NameRequiredDescriptionDefault
summaryYes
issueTypeYesType name or ID (e.g. Task, Bug).
projectKeyYes
descriptionNo
extraFieldsNoExtra fields under fields.
assigneeAccountIdNo

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description carries the transparency burden. It usefully discloses that plain-text descriptions are converted to ADF and identifies the HTTP method. It does not discuss permissions, idempotency, or side effects beyond creation, but the core behavior is clearly conveyed.

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 sentence with no filler. The primary action and endpoint are front-loaded, and the ADF note is a valuable second piece of information.

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 description is minimally viable: it identifies the action and a key conversion behavior. Yet with six parameters, no annotations, and no output schema, it leaves gaps around expected return values, how extraFields should be shaped, and how required fields relate to other Jira lookup tools. More context would help an agent invoke it correctly on first try.

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

Parameters2/5

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

Schema description coverage is only 33%, so the description should compensate. It adds meaningful semantics only for 'description' by explaining ADF conversion. projectKey, summary, assigneeAccountId, and extraFields receive no additional explanation beyond their names, leaving the agent without adequate guidance for several parameters.

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 and resource: 'Creates an issue' with the exact endpoint 'POST /rest/api/3/issue'. This clearly distinguishes it from update, transition, and comment tools, and the endpoint adds precision beyond the tool name.

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 usage context is implied by the verb 'creates' — use this when a new Jira issue is needed. However, the description does not explicitly contrast it with related tools like jira_edit_issue or transition_issue, nor does it mention prerequisites such as needing projectKey or issueType metadata.

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

jira_edit_issueC

Updates an issue (PUT /rest/api/3/issue/{key}).

ParametersJSON Schema
NameRequiredDescriptionDefault
fieldsNo
updateNo
issueIdOrKeyYes

TDQS

C2.6/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 mutating operation via PUT, but does not mention permissions, whether the update is partial or full replacement, irreversibility, error behavior, 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?

The description is a single efficient sentence with no wasted words and the core action is front-loaded. However, it is terse to the point of under-specification, so it earns a high conciseness score but not a perfect one.

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, nested objects in the schema, and a large set of Jira sibling tools, this description is far from complete. It does not explain the semantics of fields versus update, what a successful update returns, or how this differs from other issue-modifying tools.

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

Parameters1/5

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

Schema description coverage is 0%, and the description provides no parameter semantics. The fields and update objects are dynamic and opaque in the schema, and the description does not explain their roles or how issueIdOrKey maps to the {key} path parameter.

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

Purpose4/5

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

The description states a clear verb and resource: 'Updates an issue' and gives the exact endpoint PUT /rest/api/3/issue/{key}. This distinguishes it from sibling tools like jira_create_issue or jira_transition_issue, though it does not explicitly name or contrast them.

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 jira_transition_issue, jira_add_comment, or jira_create_issue. The description only states what it does, not the conditions, prerequisites, or exclusions for using it.

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

jira_get_issueB

Gets a Jira issue (GET /rest/api/3/issue/{key}).

ParametersJSON Schema
NameRequiredDescriptionDefault
expandNo
fieldsNoCSV fields, e.g. summary,status,assignee.
issueIdOrKeyYesKey or ID, e.g. ABC-123.

TDQS

B3.3/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full disclosure burden. It does convey the HTTP method (GET), which establishes read-only, non-mutating semantics — the most important behavioral trait for a fetch tool. However, it says nothing about error behavior, permissions, or response handling, which is a gap given zero 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.

Conciseness5/5

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

A single nine-word sentence with zero filler; verb and resource are front-loaded and the endpoint is parenthesized as precise supporting detail. Every word earns its place.

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

Completeness3/5

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

For a simple GET-by-key tool with a well-described schema, the description is minimally adequate: it names the operation and endpoint. But with no output schema and no annotations, it leaves return-value expectations, error behavior, and routing decisions to the agent's prior Jira API knowledge — the bare minimum rather than genuinely complete.

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

Parameters2/5

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

Schema coverage is 67%, leaving the `expand` parameter undocumented in both the schema and the description. The {key} placeholder in the endpoint maps to issueIdOrKey but adds no meaning beyond the schema's existing 'Key or ID, e.g. ABC-123.' The description does not compensate for the undocumented parameter.

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

Purpose4/5

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

The description states a specific verb and resource ('Gets a Jira issue') and pins it down with the exact REST endpoint (GET /rest/api/3/issue/{key}). The endpoint path distinguishes it from sibling get-* tools like jira_get_transitions and jira_get_remote_issue_links, though the core phrasing largely restates the tool name, 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 Guidelines3/5

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

No explicit guidance on when to use this tool versus jira_search_jql or the sibling get-* operations. The intended use case (fetch a single issue by key or ID) is implied by the verb and endpoint, but there is no when-not-to-use direction or mention of alternatives.

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

jira_get_issue_types_metadataB

Issue type metadata / create fields (GET /issue/createmeta/{project}/issuetypes).

ParametersJSON Schema
NameRequiredDescriptionDefault
issueTypeIdNoIf set, returns fields for that type.
projectIdOrKeyYes

TDQS

B3/5.0
Behavior3/5

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

The description includes the HTTP method GET and the word 'metadata,' which strongly implies a read-only operation. However, with no annotations provided, the description carries the full burden and it does not explain behavior such as what happens when issueTypeId is omitted, required permissions, or response shape beyond the endpoint name.

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 resource and includes the endpoint for precision. There is no redundant wording or filler.

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?

Without an output schema or annotations, the description is too sparse to be fully self-sufficient. It lacks return value details, the effect of the optional issueTypeId parameter, pagination behavior, and any indication of permissions or prerequisites.

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

Parameters2/5

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

Schema description coverage is 50%; issueTypeId has a helpful description, but the required projectIdOrKey is undocumented. The tool description adds no parameter-level clarification, so an agent must infer from the parameter name and endpoint path that a project key or ID is expected.

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 identifies a specific resource—issue type metadata and create fields—and gives the exact endpoint, so an agent can distinguish it from related tools like jira_get_issue_link_types or jira_get_remote_issue_links. The phrasing is slightly telegraphic but the meaning is clear.

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 use this tool versus alternatives such as jira_get_issue, jira_get_projects, or jira_get_issue_link_types. The endpoint path implies it is project-scoped, but the description does not state the intended use case or any exclusions.

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

jira_get_projectsC

Lists Jira projects (GET /rest/api/3/project/search).

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNo
startAtNo
maxResultsNo

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 burden of disclosing side effects and access behavior. It reveals only the HTTP method and endpoint, implying a read-only list, but says nothing about authentication, pagination behavior, or whether it returns all projects vs a filtered subset.

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 line, front-loaded with the action and resource, with the endpoint as a low-cost disambiguator. There is no filler or redundant restating 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?

For a tool with no annotations and no output schema, the description is too thin: it doesn't clarify the query parameter, pagination semantics, or what fields are returned. It is minimally callable with zero arguments, but an agent needing filtered or paginated results has to guess.

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

Parameters2/5

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

The schema provides names, types, and numeric constraints but no descriptions, and the description adds no parameter meaning. 'query' remains ambiguous (project name vs key vs text search), and startAt/maxResults are only weak clues to pagination, which the description never mentions.

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 an explicit action ('Lists') and resource ('Jira projects'), and adds the exact REST endpoint, which makes the operation unambiguous among the Jira siblings. It does not state what subset of projects is returned or whether query changes scope, but the core purpose is clear.

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 about when to prefer this tool over alternatives such as jira_search_jql or when not to use it. An agent must infer from the name that 'get projects' is for project enumeration, so the when-to-use context is essentially unaddressed.

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

jira_get_transitionsB

Available transitions for an issue (GET /rest/api/3/issue/{key}/transitions).

ParametersJSON Schema
NameRequiredDescriptionDefault
issueIdOrKeyYes

TDQS

B3.2/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 disclosure burden. The GET method clearly signals a non-mutating read operation, but the description does not mention what the response contains, whether transitions include ids/names, or how the result relates to jira_transition_issue. Basic safety is clear, but deeper behavior is not disclosed.

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 short sentence that front-loads the core purpose and includes the exact endpoint. Every word contributes information, and there is no redundancy or filler.

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 tool with no output schema and no annotations, the description is too thin for full self-sufficiency. It omits what the returned transitions look like, how the issueIdOrKey should be formatted, and how this tool connects to jira_transition_issue. An agent would likely understand the tool's intent but would need to infer important invocation details.

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 input schema has only issueIdOrKey, and the description provides no additional meaning, examples, or format guidance. Since schema description coverage is 0%, the description should compensate, but it does not mention the parameter at all. The parameter name is somewhat self-explanatory, but no concrete detail such as 'PROJ-123' is given.

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 resource and action: it returns available transitions for a Jira issue, and the included GET endpoint confirms it is a read operation. It does not explicitly differentiate itself from the sibling jira_transition_issue, though the name and wording make that distinction easy to infer.

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

Usage Guidelines3/5

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

The description implies the tool is used to fetch valid transitions before performing a transition, especially with the sibling jira_transition_issue present. However, it never explicitly says when to use this tool rather than alternatives, nor does it mention any workflow or prerequisites.

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

jira_lookup_account_idB

Looks up users and accountId (GET /rest/api/3/user/search).

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesName or email.
maxResultsNo

TDQS

B3.1/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 disclosure burden, but it only says 'Looks up users and accountId' and names the endpoint. It does not state whether this is read-only, how search matching behaves, whether maxResults limits results, or what the response shape looks like.

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 concise sentence with no wasted words. Including the REST endpoint adds valuable precision without bloating the text.

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 and the description identifies the main purpose, but it lacks guidance on when to invoke it, any caveats about search behavior, and detail about the maxResults parameter. Since there is no output schema or annotations, the description alone provides only partial context.

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

Parameters2/5

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

The schema describes the 'query' parameter as 'Name or email.', but the 'maxResults' parameter has no description and the tool description adds no parameter-level meaning. With only 50% schema description coverage, the description should compensate 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?

The description uses a specific verb ('Looks up') and clear resource ('users and accountId'), plus the exact REST endpoint, making the tool's function immediately understandable. It does not explicitly differentiate from siblings, but no other sibling performs user lookup, so ambiguity is low.

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

Usage Guidelines3/5

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

The description implies the tool should be used when needing to find a user's accountId, but it never states when to use this tool versus alternatives or provides any prerequisite context. There are no explicit usage conditions or exclusions.

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

jira_search_jqlB

Search issues with JQL (POST /rest/api/3/search/jql).

ParametersJSON Schema
NameRequiredDescriptionDefault
jqlYes
expandNo
fieldsNo
maxResultsNo
nextPageTokenNo

TDQS

B3/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 disclose behavior on its own. It only repeats the search action and the POST endpoint; it does not mention pagination, response shape, authentication needs, or whether the operation has side effects.

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 filler. The endpoint parenthetical adds useful API context and every word earns its place.

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 tool with 5 parameters, no parameter descriptions, no annotations, and no output schema, this description is under-specified. It does not explain pagination via nextPageToken, how fields and expand work, or what the response contains.

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

Parameters2/5

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

Schema description coverage is 0%, yet the description only clarifies the jql parameter by mentioning JQL. The parameters expand, fields, maxResults, and nextPageToken receive no explanation beyond their names in 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 states a specific verb and resource: 'Search issues with JQL' and gives the exact REST endpoint. It is clearly distinct from jira_get_issue, which retrieves a single issue, 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 Guidelines3/5

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

The phrase 'Search issues with JQL' implies the tool is for JQL-based issue searching, but it does not state when to prefer it over jira_get_issue or other Jira tools. There is no explicit when-to-use or exclusion guidance.

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

jira_transition_issueC

Applies a transition (POST /rest/api/3/issue/{key}/transitions).

ParametersJSON Schema
NameRequiredDescriptionDefault
fieldsNo
commentNo
issueIdOrKeyYes
transitionIdYes

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It indicates a mutation via POST but does not disclose that transitions may require additional fields, may be irreversible, depend on the issue's current workflow state, or require specific 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?

The description is a single efficient sentence with no filler and the endpoint is included for precision. It is concise, though the brevity comes at the cost of behavioral and parameter detail.

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 tool with no annotations, no output schema, and no schema descriptions, this description is too sparse. It does not explain how to construct the fields object, whether the transition can change required fields, or how the tool relates to jira_get_transitions, leaving important operational knowledge implicit.

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

Parameters2/5

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

Schema description coverage is 0%, and the description adds no parameter-level meaning. While issueIdOrKey and transitionId are reasonably self-explanatory, the 'fields' and 'comment' parameters remain underspecified—especially 'fields', which often carries required transition 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 action ('Applies a transition') and identifies the REST endpoint, making it clear this tool performs a state transition on a Jira issue. It is distinguishable from sibling tools like jira_get_transitions by its verb and POST method, though it does not explicitly name the alternative.

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 use this tool versus related tools such as jira_get_transitions or jira_edit_issue. The description does not mention prerequisites like retrieving valid transition IDs first, nor does it describe any exclusions.

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

TDQS

C2.9/5.0
Disambiguation4/5

Tools are grouped by product prefix and target distinct resource/action pairs, so most are easy to tell apart even at 55 tools. The main risk is within Figma where get_file/get_metadata/get_design_context and get_screenshot/download_assets have adjacent image/export purposes, though the descriptions provide enough separation.

Naming Consistency4/5

Nearly all tools follow a product_verb_noun snake_case pattern (confluence_create_page, jira_transition_issue), which is highly predictable. Deviations like figma_whoami/gitlab_whoami and the ambiguous gitlab_save_merge_request (create-or-update) keep it from a perfect score.

Tool Count1/5

At 55 tools this server presents an extreme selection burden, far beyond the 25+ threshold; it effectively bundles four product-specific servers into one namespace. The per-platform subsets are reasonable, but the aggregate would be better split into separate MCP servers.

Completeness4/5

Core lifecycles are covered for all four platforms: Confluence pages/comments, GitLab MRs/issues/pipelines/files, Jira issues/transitions/comments/worklogs/links, and Figma read/export/context. Missing operations are mostly destructive ones (deletes, comment updates) that can be worked around or are rarely needed in AI-assisted dev workflows.

Maintenance

ActivityMaintained
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

  • A
    license
    A
    quality
    A
    maintenance
    MCP server for Jira integration with stdio transport. Enables reading, writing, and managing Jira issues and projects directly from Claude Desktop. Supports issue creation, updates, comments, JQL search, and project management.
    23
    587
    14
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    A modular MCP server exposing tools for integrating with services like GitHub, Redash, Jenkins, Figma, Jira, Confluence, Teams, Datadog, PagerDuty, Slack, and Presto, enabling users to manage these platforms through natural language via an MCP client.

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/iwilldotdev/dev.mcp'

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