Skip to main content
Glama
nulab

Backlog MCP Server

Backlog MCP Server

MCP Toplist MIT License Build Last Commit

๐Ÿ“˜ ๆ—ฅๆœฌ่ชžใงใฎใ”ๅˆฉ็”จใ‚ฌใ‚คใƒ‰

A Model Context Protocol (MCP) server for interacting with the Backlog API. This server provides tools for managing projects, issues, wiki pages, and more in Backlog through AI agents like Claude Desktop / Cline / Cursor etc.

Features

  • Project tools (create, read, update, delete)

  • Issue tracking and comments (create, update, delete, list)

  • Version/Milestone management (create, read, update, delete)

  • Wiki page support

  • Git repository and pull request tools

  • Notification tools

  • Field selection for optimized responses

  • Token limiting for large responses

Related MCP server: Backlog MCP Server

Getting Started

Requirements

  • Docker

  • A Backlog account with API access

  • API key from your Backlog account

Option 1: Install via Docker

The easiest way to use this MCP server is through MCP configurations:

  1. Open MCP settings

  2. Navigate to the MCP configuration section

  3. Add the following configuration:

{
  "mcpServers": {
    "backlog": {
      "command": "docker",
      "args": [
        "run",
        "--pull",
        "always",
        "-i",
        "--rm",
        "-e",
        "BACKLOG_DOMAIN",
        "-e",
        "BACKLOG_API_KEY",
        "ghcr.io/nulab/backlog-mcp-server"
      ],
      "env": {
        "BACKLOG_DOMAIN": "your-domain.backlog.com",
        "BACKLOG_API_KEY": "your-api-key"
      }
    }
  }
}

Replace your-domain.backlog.com with your Backlog domain and your-api-key with your Backlog API key.

โœ… If you cannot use --pull always, you can manually update the image using:

docker pull ghcr.io/nulab/backlog-mcp-server:latest

Option 2: Install via npx

You can also run the server directly using npx without cloning the repository. This is a convenient way to run the server without a full installation.

  1. Open MCP settings

  2. Navigate to the MCP configuration section

  3. Add the following configuration:

{
  "mcpServers": {
    "backlog": {
      "command": "npx",
      "args": ["backlog-mcp-server"],
      "env": {
        "BACKLOG_DOMAIN": "your-domain.backlog.com",
        "BACKLOG_API_KEY": "your-api-key"
      }
    }
  }
}

Replace your-domain.backlog.com with your Backlog domain and your-api-key with your Backlog API key.

Option 3: Manual Setup (Node.js)

  1. Clone and install:

    git clone https://github.com/nulab/backlog-mcp-server.git
    cd backlog-mcp-server
    pnpm install
    pnpm run build
  2. Create .env from template and set required variables:

cp .env.example .env

Set the following values in .env:

  • BACKLOG_DOMAIN=your-domain.backlog.com

  • BACKLOG_API_KEY=your-api-key

  1. Run locally:

pnpm run dev
  1. Set your json to use as MCP

{
  "mcpServers": {
    "backlog": {
      "command": "node",
      "args": ["your-repository-location/build/index.js"],
      "env": {
        "BACKLOG_DOMAIN": "your-domain.backlog.com",
        "BACKLOG_API_KEY": "your-api-key"
      }
    }
  }
}

HTTP transport (Streamable HTTP)

By default the server uses stdio. To run the MCP Streamable HTTP transport instead (JSON-RPC over HTTP, same tools as stdio), start with --transport http or set MCP_TRANSPORT=http.

pnpm run build
MCP_TRANSPORT=http MCP_HTTP_PORT=3333 node build/index.js
  • Endpoint: POST (and GET for server-initiated streams) on http://<host>:<port><path> (default path /mcp).

  • Protocol: MCP 2026-07-28. The protocol is stateless: there is no initialize handshake and no mcp-session-id header. Clients send their metadata in _meta on every request and discover capabilities via server/discover. Streamable HTTP also requires the Mcp-Method header (and Mcp-Name on tools/call).

  • Backward compatibility: Clients on 2025-11-25 and earlier are still served over the same endpoint, statelessly. Because no session is kept, the 2025 session operations (GET / DELETE with an mcp-session-id) answer 405.

  • Security: Default bind is 127.0.0.1. On a bare loopback bind, Host and Origin are both validated against the localhost set (DNS rebinding protection). Behind a reverse proxy, set --http-allowed-hosts to the public hostname; that turns off the localhost Origin default, since a browser client's Origin is its own site and never this server's hostname. Add --http-allowed-origins to restrict which client origins may reach the server. Do not expose the HTTP port to untrusted networks without authentication and TLS; it allows full use of your Backlog API key via MCP tools.

Environment variables (CLI flags override when both are set):

Variable

Description

MCP_TRANSPORT

stdio (default) or http

MCP_HTTP_HOST

Bind address (default 127.0.0.1)

MCP_HTTP_PORT

Port (default 3333)

MCP_HTTP_PATH

URL path (default /mcp)

MCP_HTTP_JSON_RESPONSE

true to prefer JSON responses over SSE (applies to 2026-07-28 clients only)

MCP_HTTP_ALLOWED_HOSTS

Comma-separated allowed Host hostnames (port-agnostic). Required when binding to 0.0.0.0; also the escape hatch for a loopback bind behind a proxy (DNS rebinding protection)

MCP_HTTP_ALLOWED_ORIGINS

Comma-separated allowed Origin hostnames for browser-based clients. Defaults to the localhost set on a bare loopback bind, and to no Origin check otherwise

OAuth 2.0 Authentication (Remote MCP)

When exposing the MCP server over a network, you can enable OAuth 2.0 authentication so that each user authenticates with their own Backlog account instead of sharing a single API key.

The server implements the MCP Third-Party Authorization Flow by acting as both an OAuth authorization server (for MCP clients) and an OAuth client (for Backlog).

Prerequisites

  1. Register an OAuth application in your Backlog space:

    • Go to your Backlog space โ†’ Personal Settings โ†’ Register Application

    • Set the Redirect URI to <MCP_SERVER_BASE_URL>/callback (e.g., https://mcp.example.com/callback)

    • Note the Client ID and Client Secret

  2. Set the following environment variables (in addition to BACKLOG_DOMAIN):

Variable

Description

BACKLOG_OAUTH_CLIENT_ID

OAuth Client ID from your Backlog application

BACKLOG_OAUTH_CLIENT_SECRET

OAuth Client Secret from your Backlog application

MCP_SERVER_BASE_URL

Public URL of your MCP server (e.g., https://mcp.example.com)

Note: BACKLOG_API_KEY is not required when OAuth is enabled โ€” each user authenticates with their own Backlog account.

Example

BACKLOG_DOMAIN=your-space.backlog.com \
BACKLOG_OAUTH_CLIENT_ID=your-client-id \
BACKLOG_OAUTH_CLIENT_SECRET=your-client-secret \
MCP_SERVER_BASE_URL=https://mcp.example.com \
node build/index.js --transport http --http-host 0.0.0.0 --http-port 3333 \
  --http-allowed-hosts mcp.example.com

--http-allowed-hosts is required in practice when binding to 0.0.0.0: without it there is no DNS rebinding protection, and the server logs a warning at startup.

The server automatically exposes the following OAuth endpoints when OAuth is enabled:

Endpoint

Description

GET /.well-known/oauth-authorization-server

OAuth Authorization Server Metadata (RFC 8414)

GET /.well-known/oauth-protected-resource/mcp

OAuth Protected Resource Metadata (RFC 9728)

POST /register

Dynamic Client Registration (RFC 7591)

GET /authorize

Authorization endpoint (redirects to Backlog OAuth)

GET /callback

Backlog OAuth callback

POST /token

Token endpoint (authorization code & refresh token)

MCP clients that support the MCP authorization specification will use these endpoints automatically.

POST /register restricts which redirect URIs a client may register. A loopback URI (http://localhost, http://127.0.0.1, http://[::1]) is how an app running on the user's machine receives the authorization code, and is accepted from a client that declares "application_type": "native" โ€” or, when the field is absent, from one whose redirect URIs are all loopback. A client declaring "application_type": "web", or mixing a remote https: URI with a loopback one without declaring itself, is rejected with invalid_client_metadata.

Limitations:

  • OAuth mode currently supports a single Backlog organization. It is not compatible with the multi-organization configuration.

  • Client registrations and tokens are stored in memory and will be lost on server restart.

Tool Configuration

You can selectively enable or disable specific toolsets using the --enable-toolsets command-line flag or the ENABLE_TOOLSETS environment variable. This allows better control over which tools are available to the AI agent and helps reduce context size.

Available Toolsets

The following toolsets are available (enabled by default when "all" is used):

Toolset

Description

space

Tools for managing Backlog space settings and general information

project

Tools for managing projects, categories, custom fields, and issue types

issue

Tools for managing issues and their comments, version milestones

wiki

Tools for managing wiki pages

git

Tools for managing Git repositories and pull requests

notifications

Tools for managing user notifications

document

Tools for viewing documents and document trees

Specifying Toolsets

You can control toolset activation in the following ways:

Using via CLI:

--enable-toolsets space,project,issue

Or via environment variable:

ENABLE_TOOLSETS="space,project,issue"

If all is specified, all available toolsets will be enabled. This is also the default behavior.

Using selective toolsets can be helpful if the toolset list is too large for your AI agent or if certain tools are causing performance issues. In such cases, disabling unused toolsets may improve stability.

๐Ÿงฉ Tip: project toolset is highly recommended, as many other tools rely on project data as an entry point.

Available Tools

Toolset: space

Tools for managing Backlog space settings and general information.

  • get_space: Returns information about the Backlog space.

  • get_users: Returns list of users in the Backlog space.

  • get_myself: Returns information about the authenticated user.

Toolset: project

Tools for managing projects, categories, custom fields, and issue types.

  • get_project_list: Returns list of projects.

  • add_project: Creates a new project.

  • get_project: Returns information about a specific project.

  • get_project_users: Returns list of users in a specific project.

  • update_project: Updates an existing project.

Toolset: issue

Tools for managing issues, their comments, and related items like priorities, categories, custom fields, issue types, resolutions, and watching lists.

  • get_issue: Returns information about a specific issue.

  • get_issue_attachment: Downloads one attachment of an issue. Returns it as image or embedded resource content, or as base64 with format: "base64".

  • get_issues: Returns list of issues.

  • count_issues: Returns count of issues.

  • add_issue: Creates a new issue in the specified project.

  • update_issue: Updates an existing issue.

  • delete_issue: Deletes an issue.

  • get_issue_comments: Returns list of comments for an issue.

  • add_issue_comment: Adds a comment to an issue.

  • update_issue_comment: Updates a comment on an issue.

  • get_related_issues: Returns list of issues related to a specific issue.

  • add_related_issue: Relates an issue to another issue.

  • remove_related_issue: Removes the relation between an issue and a related issue.

  • get_priorities: Returns list of priorities.

  • get_categories: Returns list of categories for a project.

  • get_custom_fields: Returns list of custom fields for a project.

  • get_issue_types: Returns list of issue types for a project.

  • get_resolutions: Returns list of issue resolutions.

  • get_watching_list_items: Returns list of watching items for a user.

  • get_watching_list_count: Returns count of watching items for a user.

  • add_watching: Adds a new watch to an issue.

  • update_watching: Updates an existing watch note.

  • delete_watching: Deletes a watch from an issue.

  • mark_watching_as_read: Marks a watch as read.

  • get_version_milestone_list: Returns list of version milestones for a project.

  • add_version_milestone: Creates a new version milestone for a project.

  • update_version_milestone: Updates an existing version milestone.

  • delete_version_milestone: Deletes a version milestone.

Toolset: wiki

Tools for managing wiki pages.

  • get_wiki_pages: Returns list of Wiki pages.

  • get_wikis_count: Returns count of wiki pages in a project.

  • get_wiki: Returns information about a specific wiki page.

  • add_wiki: Creates a new wiki page.

Toolset: git

Tools for managing Git repositories and pull requests.

  • get_git_repositories: Returns list of Git repositories for a project.

  • get_git_repository: Returns information about a specific Git repository.

  • get_pull_requests: Returns list of pull requests for a repository.

  • get_pull_requests_count: Returns count of pull requests for a repository.

  • get_pull_request: Returns information about a specific pull request.

  • add_pull_request: Creates a new pull request.

  • update_pull_request: Updates an existing pull request.

  • get_pull_request_comments: Returns list of comments for a pull request.

  • add_pull_request_comment: Adds a comment to a pull request.

  • update_pull_request_comment: Updates a comment on a pull request.

Toolset: notifications

Tools for managing user notifications.

  • get_notifications: Returns list of notifications.

  • get_notifications_count: Returns count of notifications.

  • reset_unread_notification_count: Resets unread notification count.

  • mark_notification_as_read: Marks a notification as read.

Toolset: document

Tools for managing documents and document trees in Backlog projects.

  • get_document_tree: Returns the hierarchical tree of documents for a project, including folders and ne

  • get_documents: Returns a flat list of documents in a project or folder.

  • get_document: Returns detailed information about a specific document, including metadata, content, an

Usage Examples

Once the MCP server is configured in AI agents, you can use the tools directly in your conversations. Here are some examples:

  • Listing Projects

Could you list all my Backlog projects?
  • Creating a New Issue

Create a new bug issue in the PROJECT-KEY project with high priority titled "Fix login page error"
  • Getting Project Details

Show me the details of the PROJECT-KEY project
  • Working with Git Repositories

List all Git repositories in the PROJECT-KEY project
  • Managing Pull Requests

Show me all open pull requests in the repository "repo-name" of PROJECT-KEY project
Create a new pull request from branch "feature/new-feature" to "main" in the repository "repo-name" of PROJECT-KEY project
  • Watching Items

Show me all items I'm watching

Overriding Tool Descriptions

You can override the descriptions of tools by creating a .backlog-mcp-serverrc.json file in your home directory.

Almost all of these strings are the tool and parameter descriptions the model reads when it decides which tool to call and how to fill in its arguments, so overriding them is a way to steer tool selection โ€” for example to disambiguate two similar tools, or to add a rule your team follows โ€” rather than a way to change the language of the answers you get. The model answers in whatever language you ask in, regardless of the language these descriptions are written in.

A small number of keys are validation error messages instead (for example PROJECT_ID_OR_KEY_REQUIRED). Those are returned in the tool result when a call is rejected, so they can reach you by way of the model's reply.

The file should contain a JSON object with the tool names as keys and the new descriptions as values.
For example:

{
  "TOOL_ADD_ISSUE_COMMENT_DESCRIPTION": "An alternative description",
  "TOOL_CREATE_PROJECT_DESCRIPTION": "Create a new project in Backlog"
}

When the server starts, it determines the final description for each tool based on the following priority:

  1. Environment variables (e.g., BACKLOG_MCP_TOOL_ADD_ISSUE_COMMENT_DESCRIPTION)

  2. Entries in .backlog-mcp-serverrc.json - Supported configuration file formats: .json, .yaml, .yml

  3. Built-in defaults

Empty or non-string values are ignored at every level, and the built-in default is used instead.

Sample config:

{
  "mcpServers": {
    "backlog": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "BACKLOG_DOMAIN",
        "-e",
        "BACKLOG_API_KEY",
        "-v",
        "/yourcurrentdir/.backlog-mcp-serverrc.json:/root/.backlog-mcp-serverrc.json:ro",
        "ghcr.io/nulab/backlog-mcp-server"
      ],
      "env": {
        "BACKLOG_DOMAIN": "your-domain.backlog.com",
        "BACKLOG_API_KEY": "your-api-key"
      }
    }
  }
}

Exporting Current Descriptions

You can export the current descriptions (including any overrides) by running the binary with the --export-descriptions flag. This flag was previously called --export-translations; the old name still works but prints a deprecation notice and will be removed in a future release.

This prints every key that is resolved while the tool list is built, with its current value, including any customizations you have made. That covers all tool and parameter descriptions, and it is the practical way to discover key names.

It does not cover the validation error messages, because those keys are only resolved when a call is actually rejected. They are still overridable by the same rules; you just have to read them out of the source.

Example:

docker run -i --rm ghcr.io/nulab/backlog-mcp-server node build/index.js --export-descriptions

or

npx github:nulab/backlog-mcp-server --export-descriptions

Using Environment Variables

Alternatively, you can override tool descriptions via environment variables.

The environment variable names are based on the tool keys, prefixed with BACKLOGMCP and written in uppercase.

Example: To override the TOOL_ADD_ISSUE_COMMENT_DESCRIPTION:

{
  "mcpServers": {
    "backlog": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e", "BACKLOG_DOMAIN",
        "-e", "BACKLOG_API_KEY",
        "-e", "BACKLOG_MCP_TOOL_ADD_ISSUE_COMMENT_DESCRIPTION"
        "ghcr.io/nulab/backlog-mcp-server"
      ],
      "env": {
        "BACKLOG_DOMAIN": "your-domain.backlog.com",
        "BACKLOG_API_KEY": "your-api-key",
        "BACKLOG_MCP_TOOL_ADD_ISSUE_COMMENT_DESCRIPTION": "An alternative description"
      }
    }
  }
}

The server loads the config file synchronously at startup.

Environment variables always take precedence over the config file.

Advanced Features

Tool Name Prefixing

Add prefix to tool names with:

--prefix backlog_

or via environment variable:

PREFIX="backlog_"

This is especially useful if you're using multiple MCP servers or tools in the same environment and want to avoid name collisions. For example, get_project can become backlog_get_project to distinguish it from similarly named tools provided by other services.

Response Optimization & Token Limits

Field Selection

--optimize-response

Or environment variable:

OPTIMIZE_RESPONSE=1

Tools that return a list then take an optional fields parameter: a list of top-level field names from that tool's own result, published as an enum so a name the tool does not have is rejected rather than ignored. Tools that return a single record do not get it โ€” the parameter costs schema on every session, and one record has almost nothing to trim.

get_project(projectIdOrKey: "PROJECT-KEY", fields: ["name", "key", "description"])

Omitting fields returns the whole result. Selection is one level deep: naming an object or array field returns it whole.

Benefits:

  • Reduce response size by requesting only needed fields

  • Focus on specific data points

  • Improve performance for large responses

Token Limiting

Large responses are automatically limited to prevent exceeding token limits:

  • Default limit: 50,000 tokens

  • Configurable via MAX_TOKENS environment variable

  • Responses exceeding the limit are truncated with a message

You can change this using:

MAX_TOKENS=10000

If a response exceeds the limit, it will be truncated with a warning.

Note: This is a best-effort mitigation, not a guaranteed enforcement.

Logging

The server logs to stderr (stdout carries the JSON-RPC stream on the stdio transport).

Variable

Description

LOG_LEVEL

fatal, error, warn, info, debug, trace or silent. Defaults to error when NODE_ENV is production โ€” which is also the default when NODE_ENV is unset โ€” and to debug otherwise. An unrecognised value is reported and the default is used.

NODE_ENV still selects the output format: any value other than production switches to human-readable pino-pretty output when that package is available. Use LOG_LEVEL, not NODE_ENV, to change how much is logged, so that a deployment keeps structured JSON:

pino-pretty is a development dependency, so neither the published npm package nor the container image carries a copy. In those, logs are structured JSON whatever NODE_ENV says, and LOG_LEVEL is the only setting that changes the output.

LOG_LEVEL=info node build/index.js --transport http

Full Custom Configuration Example

This section demonstrates advanced configuration using multiple environment variables. These are experimental features and may not be supported across all MCP clients. This is not part of the MCP standard specification and should be used with caution.

{
  "mcpServers": {
    "backlog": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "BACKLOG_DOMAIN",
        "-e",
        "BACKLOG_API_KEY",
        "-e",
        "MAX_TOKENS",
        "-e",
        "OPTIMIZE_RESPONSE",
        "-e",
        "PREFIX",
        "-e",
        "ENABLE_TOOLSETS",
        "ghcr.io/nulab/backlog-mcp-server"
      ],
      "env": {
        "BACKLOG_DOMAIN": "your-domain.backlog.com",
        "BACKLOG_API_KEY": "your-api-key",
        "MAX_TOKENS": "10000",
        "OPTIMIZE_RESPONSE": "1",
        "PREFIX": "backlog_",
        "ENABLE_TOOLSETS": "space,project,issue"
      }
    }
  }
}

Development

Running Tests

pnpm test

Adding New Tools

  1. Create a new file in src/tools/ following the pattern of existing tools

  2. Create a corresponding test file

  3. Add the new tool to src/tools/tools.ts

  4. Build and test your changes

Command Line Options

The server supports several command line options:

  • --transport stdio|http: MCP transport (default: stdio). Use http for Streamable HTTP.

  • --http-host, --http-port, --http-path: HTTP bind address, port, and path (defaults: 127.0.0.1, 3333, /mcp).

  • --http-json-response: Prefer JSON responses over SSE. Applies to 2026-07-28 clients only; the backward-compatible 2025-11-25 path is served with the SDK's default response shaping.

  • --http-allowed-hosts: Comma-separated allowed Host hostnames (port-agnostic). Needed when binding to all interfaces, or on a loopback bind behind a reverse proxy.

  • --http-allowed-origins: Comma-separated allowed Origin hostnames for browser-based clients. Defaults to the localhost set on a bare loopback bind, and to no Origin check otherwise.

  • --export-descriptions: Export the description keys and values resolved when building the tool list. Was named --export-translations; that spelling still works as a deprecated alias and will be removed in a future release

  • --optimize-response: Add a fields parameter to each tool for selecting which result fields to return

  • --max-tokens=NUMBER: Set maximum token limit for responses

  • --prefix=STRING: Optional string prefix to prepend to all tool names (default: "")

  • --enable-toolsets <toolsets...>: Specify which toolsets to enable (comma-separated or multiple arguments). Defaults to "all". Example: --enable-toolsets space,project or --enable-toolsets issue --enable-toolsets git Available toolsets: space, project, issue, wiki, git, notifications.

Example:

node build/index.js --optimize-response --max-tokens=100000 --prefix="backlog_" --enable-toolsets space,issue

HTTP example:

node build/index.js --transport http --http-port 3333 --http-path /mcp

Multi-Organization Support

This server can be configured to access multiple Backlog organizations from a single MCP server instance.

Configuration

Configure one env pair per organization and set a default organization:

BACKLOG_DEFAULT_ORG=COMPANY_A
BACKLOG_ORG_COMPANY_A_DOMAIN=company-a.backlog.com
BACKLOG_ORG_COMPANY_A_API_KEY=your-company-a-api-key
BACKLOG_ORG_COMPANY_B_DOMAIN=company-b.backlog.com
BACKLOG_ORG_COMPANY_B_API_KEY=your-company-b-api-key

This works whether the variables come from a local .env, your shell environment, or an MCP client config env block.

Example MCP config:

{
  "env": {
    "BACKLOG_DEFAULT_ORG": "COMPANY_A",
    "BACKLOG_ORG_COMPANY_A_DOMAIN": "company-a.backlog.com",
    "BACKLOG_ORG_COMPANY_A_API_KEY": "your-company-a-api-key",
    "BACKLOG_ORG_COMPANY_B_DOMAIN": "company-b.backlog.com",
    "BACKLOG_ORG_COMPANY_B_API_KEY": "your-company-b-api-key"
  }
}

If no multi-organization env vars are set, the server falls back to the existing single-organization configuration:

BACKLOG_DOMAIN=your-domain.backlog.com
BACKLOG_API_KEY=your-api-key

Tool Usage

When multi-organization env vars are configured, all normal tools accept an optional organization input field. When provided, the tool call is routed to that Backlog organization.

In single-organization mode the field is not published, since there would be only one organization to route to. Omitting it keeps roughly 8 KB of tool schema out of every tools/list response.

Examples:

{
  "organization": "COMPANY_B",
  "projectKey": "PROJECT"
}

If organization is omitted:

  • the organization named by BACKLOG_DEFAULT_ORG is used

  • if multi-organization env vars are present and BACKLOG_DEFAULT_ORG is missing, the server fails at startup

Organization Discovery

In multi-organization mode the server provides a list_organizations tool that returns the configured organization names, their domains, and which one is the default. It is not registered in single-organization mode.

Example response:

[
  {
    "name": "COMPANY_A",
    "domain": "company-a.backlog.com",
    "isDefault": true
  },
  {
    "name": "COMPANY_B",
    "domain": "company-b.backlog.com",
    "isDefault": false
  }
]

Notes

  • For multi-org mode, every organization must define both BACKLOG_ORG_<NAME>_DOMAIN and BACKLOG_ORG_<NAME>_API_KEY.

  • The <NAME> part is the organization name exposed through the organization tool input and list_organizations.

License

This project is licensed under the MIT License.

Please note: This tool is provided under the MIT License without any warranty or official support.
Use it at your own risk after reviewing the contents and determining its suitability for your needs.
If you encounter any issues, please report them via GitHub Issues.

Available Tools

62 tools
addDocumentC

Adds a new document to the specified project.

ParametersJSON Schema
NameRequiredDescriptionDefault
emojiNoEmoji for the document
titleNoTitle of the document
addLastNoAdd to the end of the list
contentNoContent of the document
parentIdNoParent document ID
projectIdYesProject ID

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description is the sole source of behavioral info. It does not disclose return values, validation rules, permission requirements, or side effects like notifications. This is particularly weak 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 a single sentence, front-loaded and free of extraneous words. It is as concise as possible, though perhaps too sparse to be helpful.

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 6 parameters and no output schema, the description is incomplete. It doesn't explain the expected result (e.g., returns created document), how parameters interact, or constraints. The schema covers fields but the description fails to give operational context.

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%, so parameter semantics are fully defined in the schema. The description adds no additional meaning beyond restating the project context; it doesn't clarify relationships like parentId or optionality, but the schema already handles this.

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 (Adds) and resource (a new document) with a target context (specified project). This distinguishes it from sibling add tools like add_issue and add_wiki, though it lacks additional specificity about document types or hierarchy.

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 such as add_wiki or update_document. There is no mention of prerequisites, ordering, or when not to use it, leaving the agent without decision support.

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

add_issueB

Creates a new issue in the specified project.

ParametersJSON Schema
NameRequiredDescriptionDefault
dueDateNoScheduled due date (yyyy-MM-dd)
summaryYesSummary of the issue
projectIdYesProject ID
startDateNoScheduled start date (yyyy-MM-dd)
versionIdNoVersion IDs
assigneeIdNoUser ID of the assignee
categoryIdNoCategory IDs
priorityIdYesPriority ID
actualHoursNoActual work hours
descriptionNoCreates a new issue in the specified project.
issueTypeIdYesIssue type ID
milestoneIdNoMilestone IDs
attachmentIdNoAttachment IDs
customFieldsNoList of custom fields to set on the issue
parentIssueIdNoParent issue ID
estimatedHoursNoEstimated work hours
notifiedUserIdNoUser IDs to notify

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure, but it only says 'creates a new issue.' It does not mention required fields, permissions, side effects, idempotency, or return format. For a mutation tool with zero annotation coverage, this is a significant gap.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler words. It efficiently states the core action and object, earning its place without unnecessary complexity.

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

Completeness2/5

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

Despite the rich schema, the tool has 17 parameters, no output schema, and no annotations. The description offers no context about typical usage, required fields, or expected results, leaving significant gaps for an agent to understand the tool's full behavior and invocation context.

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 descriptions cover 100% of the 17 parameters, so the baseline is 3. The description itself adds no parameter-specific meaning, but since the schema already provides detailed descriptions for each field, the combined information is adequate.

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 the specific verb 'creates' and identifies the resource 'issue' with 'in the specified project', clearly distinguishing this from sibling tools like add_issue_comment and update_issue. It is unambiguous and directly states the tool's function.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. It does not mention that update_issue should be used for existing issues, nor does it state any prerequisites or exclusions. The description only states what it does, not when to choose it.

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

add_issue_commentB

Adds a comment to an issue

ParametersJSON Schema
NameRequiredDescriptionDefault
contentYesComment content
issueIdNoThe numeric ID of the issue (e.g., 12345)
issueKeyNoThe key of the issue (e.g., 'PROJ-123')
attachmentIdNoAttachment IDs
notifiedUserIdNoUser IDs to notify

TDQS

B3.2/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 transparency. It only states the action, with no mention of required inputs beyond schema, potential side effects, permissions, or response format. This is a significant gap for a mutation tool.

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

Conciseness5/5

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

The description is a single concise sentence with no wasted words. It is appropriately brief and immediately communicates the core action.

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

Completeness2/5

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

For a mutation tool with no annotations and no output schema, the description is too sparse. It doesn't mention that content is required, how to identify the target issue, or what the response will be. The schema provides some parameter context, but the description fails to fill behavioral and usage gaps.

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 descriptions cover 100% of parameters, so the baseline is 3. The description adds no additional semantic value, such as whether issueId and issueKey are alternatives or how attachmentId and notifiedUserId relate to the comment. It simply repeats the tool's purpose.

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 'Adds a comment to an issue' uses a specific verb and resource, clearly distinguishing it from sibling tools like update_issue_comment or get_issue_comments. It unambiguously states the tool's primary function.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives such as update_issue_comment. It also doesn't clarify the relationship between issueId and issueKey, which is a key usage decision for the agent.

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

add_projectB

Creates a new project

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesProject key
nameYesProject name
chartEnabledNoWhether to enable chart (default: false)
subtaskingEnabledNoWhether to enable subtasking (default: false)
textFormattingRuleNoText formatting rule (default: 'backlog')
projectLeaderCanEditProjectLeaderNoWhether project leaders can edit other project leaders (default: false)

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations provided, the description carries full responsibility for disclosing behavior. It only states the action ('creates') but provides no details on effects, permissions, idempotency, or return values, so it is minimally transparent.

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, clear sentence with no wasted words. However, it is under-specified, which prevents a score of 5, but it is appropriately concise for its purpose.

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?

While the schema describes all parameters, the description lacks context about the return value, authentication requirements, or any behavioral nuances. For a mutation tool with no annotations and no output schema, this is insufficient for an agent to fully understand the tool's use.

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

Parameters3/5

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

Schema description coverage is 100%, with each parameter having a description. The tool description adds no parameter-level information, but the baseline of 3 is appropriate since the schema already handles parameter 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 states a clear verb+resource: 'Creates a new project'. This distinguishes it from sibling tools like get_project, update_project, and delete_project, as it is the only creation operation for projects.

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 that this tool is used when creating a new project, but it provides no explicit context about when to use it versus alternatives, prerequisites, or any exclusions. It lacks guidance on required fields like name and key.

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

add_pull_requestC

Creates a new pull request

ParametersJSON Schema
NameRequiredDescriptionDefault
baseYesBase branch name
branchYesBranch name to merge
repoIdNoRepository ID
issueIdNoIssue ID to link
summaryYesSummary of the pull request
repoNameNoRepository name
projectIdNoThe numeric ID of the project (e.g., 12345)
assigneeIdNoUser ID of the assignee
projectKeyNoThe key of the project (e.g., 'PROJECT')
descriptionYesCreates a new pull request
notifiedUserIdNoUser IDs to notify

TDQS

C2.6/5.0
Behavior2/5

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

With no annotations provided, the description must disclose behavioral traits, but it only states the core action. It does not mention required permissions, side effects, failure behavior, or any other operational details.

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 with no wasted words. It is front-loaded and easy to parse, though it is quite minimal in 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 the tool has 11 parameters, no annotations, and no output schema, the description is far from complete. It does not explain required fields, how to specify the repository/project, or what the response will look like.

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

Parameters3/5

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

The input schema has 100% coverage with descriptions for all parameters, so the baseline is 3. The tool description itself adds no parameter-specific information, but the schema already provides adequate semantics.

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 states it creates a new pull request, but this is nearly synonymous with the tool name 'add_pull_request.' It provides no additional scope, fields, or context to distinguish it further.

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 like get_pull_request or update_pull_request. It does not mention exclusions, prerequisites, or any specific scenarios.

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

add_pull_request_commentD

Adds a comment to a pull request

ParametersJSON Schema
NameRequiredDescriptionDefault
numberYesPull request number
repoIdNoRepository ID
contentYesComment content
repoNameNoRepository name
projectIdNoThe numeric ID of the project (e.g., 12345)
projectKeyNoThe key of the project (e.g., 'PROJECT')
notifiedUserIdNoUser IDs to notify

TDQS

D1.7/5.0
Behavior1/5

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

No annotations are provided, and the description discloses no side effects, permissions, notification behavior, or error handling beyond the bare action of adding a comment.

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 a single sentence, but it is a tautology that adds no information beyond the tool name. It is under-specified rather than concise.

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?

With 7 parameters, no output schema, and no annotations, the description is grossly insufficient. It does not explain how to identify the pull request (number vs repoId vs projectKey), the significance of notifiedUserId, or what the tool returns.

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

Parameters3/5

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

The input schema provides descriptions for all 7 parameters, so the description adds no parameter-level information. The schema itself is terse, but the description does not compensate.

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

Purpose2/5

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

The description 'Adds a comment to a pull request' is a direct restatement of the tool name with no additional detail. It does not differentiate itself from siblings like update_pull_request_comment or clarify scope.

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

Usage Guidelines1/5

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

There is no mention of when to use this tool, prerequisites, or alternatives. An agent cannot determine whether to reach for this tool versus get_pull_request_comments or update_pull_request_comment.

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

add_version_milestoneB

Creates a new version milestone

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesVersion name
projectIdNoProject ID
startDateNoStart date of the version
projectKeyNoProject key
descriptionNoCreates a new version milestone
releaseDueDateNoRelease due date of the version

TDQS

B3.4/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 behavioral traits. It only says 'Creates a new version milestone' without mentioning side effects, permissions, reversibility, or return values. This is insufficient for a mutation tool.

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

Conciseness5/5

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

The description is a single, concise sentence with no unnecessary words or repetitive content. It is perfectly front-loaded and efficiently communicates the core purpose.

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 lack of annotations and output schema, the description should provide more context about expected inputs, requirements, or response behavior. It does not clarify the roles of projectId versus projectKey, nor what the tool returns after creation. This is a significant gap for a create operation with six parameters.

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 baseline is 3. The tool description adds no parameter details beyond what the schema already provides. The schema descriptions are minimal but present, and the tool description contributes nothing extra.

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 'Creates a new version milestone' uses a specific verb and resource, clearly distinguishing it from sibling tools like update_version_milestone and delete_version. It states exactly what action is performed and on what entity.

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

Usage Guidelines3/5

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

Usage is implied through the verb 'creates', and the sibling list includes update/delete tools, making the tool's role apparent. However, there is no explicit guidance on when to use this tool versus alternatives, nor any mention of prerequisites like projectId or projectKey being required.

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

add_watchingB

Adds a new watch to an issue

ParametersJSON Schema
NameRequiredDescriptionDefault
noteNoOptional note for the watch
issueIdOrKeyYesIssue ID or issue key (e.g., 1234 or "PROJECT-123")

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations provided, the description must carry the full burden of behavioral disclosure. It only says 'Adds', implying a mutation, but does not mention permissions, idempotency, side effects, return values, or error conditions. The agent gets no safety-relevant 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, concise sentence that front-loads the action and object. Every word earns its place, with no filler or redundancy.

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

Completeness3/5

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

Given the tool's low complexity (2 simple parameters, no output schema), the description and schema cover the bare essentials. However, it lacks usage context (e.g., when to add a watch vs. alternatives) and any details about the operation's effect or return behavior. It is minimally adequate but not rich.

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

Parameters3/5

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

The input schema already describes both parameters (issueIdOrKey and note) with 100% coverage. The description adds no additional meaning beyond the schema, so the baseline of 3 applies.

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 ('Adds') and the object ('a new watch to an issue'), using a specific verb+resource construction that distinguishes it from sibling tools like delete_watching and update_watching. The purpose is immediately understandable.

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 delete_watching, update_watching, or mark_watching_as_read. There are no prerequisites, exclusions, or context clues for selection.

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

add_wikiC

Creates a new wiki page

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName of the wiki page
contentYesContent of the wiki page
projectIdYesProject ID
mailNotifyNoWhether to send notification emails (default: false)

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 disclose behavioral traits. It only says 'Creates', which implies mutation, but it doesn't mention permissions, side effects (e.g., mailNotify), return values, or whether the operation is reversible. This is a minimal disclosure for a create operation.

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

Conciseness5/5

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

The description is a single sentence with no redundant words. It is front-loaded and achieves the core purpose without waste. It is concise, though it sacrifices helpful detail 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?

The description is too minimal for a tool with 4 params and many siblings. It doesn't explain when to use it, what happens on success, or any required permissions. The schema covers params, but the overall context is incomplete for an agent to invoke it reliably.

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

Parameters3/5

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

Schema description coverage is 100%, with all parameters (name, content, projectId, mailNotify) having descriptive text. The description adds no parameter information, but it doesn't need to because the schema already documents them. 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 'Creates a new wiki page' clearly states the verb (creates) and resource (wiki page). It distinguishes from sibling tools like update_wiki and get_wiki, but it is somewhat generic and doesn't specify the project context (projectId) or other constraints, which prevents a perfect score.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites, project membership, or differentiate it from other add_* tools like add_issue or addDocument. There is no context for when a wiki page should be created.

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

count_issuesC

Returns count of issues

ParametersJSON Schema
NameRequiredDescriptionDefault
keywordNoKeyword to search for in issues
statusIdNoStatus IDs
projectIdNoProject IDs
versionIdNoVersion IDs
assigneeIdNoAssignee user IDs
categoryIdNoCategory IDs
priorityIdNoPriority IDs
issueTypeIdNoIssue type IDs
milestoneIdNoMilestone IDs
createdSinceNoCreated since (yyyy-MM-dd)
createdUntilNoCreated until (yyyy-MM-dd)
customFieldsNoCustom field filters (text, numeric, date, or list)
dueDateSinceNoDue date since (yyyy-MM-dd)
dueDateUntilNoDue date until (yyyy-MM-dd)
resolutionIdNoResolution IDs
updatedSinceNoUpdated since (yyyy-MM-dd)
updatedUntilNoUpdated until (yyyy-MM-dd)
createdUserIdNoCreated user IDs
parentIssueIdNoParent issue IDs
startDateSinceNoStart date since (yyyy-MM-dd)
startDateUntilNoStart date until (yyyy-MM-dd)

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It states the core behavior (returns a count) but omits important context such as whether filters affect the count, the response shape, or any access/permission considerations.

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 with no unnecessary words. It is front-loaded and efficient, though somewhat terse given the tool's complexity.

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 description is incomplete for a tool with 21 parameters and no output schema. It does not explain the return format, how filters are applied, or how this tool relates to sibling tools like get_issues. More context is needed for an agent to use it correctly.

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

Parameters3/5

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

The schema has 100% coverage of all 21 parameters with descriptions, so the structured schema carries the parameter semantics. The description adds no parameter-specific information, warranting the baseline score of 3.

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 returns a count of issues, using a specific verb and resource. This distinguishes it from sibling tools like get_issues that likely return lists, though it does not explicitly mention the filtering capability.

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 instead of alternatives. It does not mention that it is appropriate for obtaining counts rather than detailed issue data, nor does it reference siblings or use cases.

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

count_notificationsC

Returns count of notifications

ParametersJSON Schema
NameRequiredDescriptionDefault
alreadyReadYesWhether to include already read notifications
resourceAlreadyReadYesWhether to include notifications for already read resources

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries full responsibility for behavioral disclosure. It only states that a count is returned, adding no context about what the count includes, whether it respects the boolean parameters, or any side effects. This is too thin for an agent to understand the tool's 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, short sentence that is immediately readable and free of fluff. It earns its place by stating the core function without redundancy.

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

Completeness2/5

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

There is no output schema, so the description must clarify the return value. It says 'returns count' but does not specify the format (e.g., plain integer vs. JSON object), the scope (all notifications vs. current user), or any limitations. This is a significant gap for a tool with no other contextual documentation.

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

Parameters3/5

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

The input schema covers 100% of the parameters with descriptions for both booleans, so the baseline is 3. The description itself adds no parameter clarity, but the schema already defines alreadyRead and resourceAlreadyRead adequately.

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 counts notifications, using a verb ('Returns') and the resource ('notifications'). It is distinct from sibling tools like get_notifications by virtue of returning a count, though it does not explicitly differentiate 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 provided about when to use this tool instead of alternatives. It does not mention whether to use it for a quick total, for unread counts, or how it relates to get_notifications or reset_unread_notification_count.

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

delete_issueC

Deletes an issue

ParametersJSON Schema
NameRequiredDescriptionDefault
issueIdNoThe numeric ID of the issue (e.g., 12345)
issueKeyNoThe key of the issue (e.g., 'PROJ-123')

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full responsibility for behavioral disclosure. 'Deletes an issue' reveals only the core action but omits critical details such as whether deletion is permanent, whether it cascades to related items, or any permission requirements. For a destructive tool, this is a significant transparency gap.

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 concise and front-loaded, using exactly three words with no filler. It earns its place by stating the purpose. However, it is borderline under-specified, as the brevity limits its usefulness for an AI agent trying to determine consequences or usage context.

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 simple destructive tool has no output schema, no annotations, and two optional parameters. The description 'Deletes an issue' does not explain what the effect is on the issue (e.g., permanent removal), what the response will be, or whether both parameters are required in some combination. For a delete operation, the lack of behavioral context makes it incomplete.

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

Parameters3/5

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

The input schema provides 100% coverage with descriptions for both issueId and issueKey. However, the description adds no additional meaning beyond what the schema already states, and it does not clarify why both parameters are optional or which one is preferred. The text meets the baseline for high schema coverage but does not elevate 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 'Deletes an issue' clearly states the verb and resource, making it easy to distinguish from siblings like add_issue, update_issue, and get_issue. However, it does not elaborate on scope or uniqueness, so it lacks the richer distinguishing details seen in higher-scoring examples.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. It does not mention that this should be used only when an issue should be permanently removed, nor does it warn against confusing it with update_issue (which modifies). The description simply states the action without any usage context.

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

delete_projectB

Deletes a project

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdNoThe numeric ID of the project (e.g., 12345)
projectKeyNoThe key of the project (e.g., 'PROJECT')

TDQS

B3.2/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 states only the action 'Deletes' without revealing whether the deletion is permanent, whether it cascades to related entities, or whether special permissions are needed. This lack of detail is a significant gap for a destructive operation.

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

Conciseness5/5

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

The description is a single sentence, 'Deletes a project', which is maximally concise with zero wasted words. It is appropriately sized for the simple action it describes, though it trades depth 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 destructive tool with no annotations and no output schema, the description is far from complete. It fails to mention side effects, return values, or prerequisites, leaving the agent without essential operational context. The minimalism undermines its usefulness in real-world invocation scenarios.

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

Parameters3/5

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

The input schema fully describes both parameters (projectId and projectKey) with clear descriptions, giving a baseline of 3. The description adds no additional parameter semantics, but it also doesn't need to given the schema's high coverage. However, it does not clarify that at least one of the two optional parameters is likely required, which leaves some semantic ambiguity.

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 ('Deletes') and the resource ('a project'), providing a specific verb+resource combination that unambiguously identifies the tool's purpose. It distinguishes itself from sibling tools like delete_issue or delete_watching by explicitly naming 'project' as the target.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives, nor are there any prerequisites, exclusions, or context about required permissions. The description is a bare statement with no usage context, leaving the agent to infer when deletion of a project is appropriate.

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

delete_versionB

Deletes a version from a project

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe numeric ID of the version to delete (e.g., 67890)
projectIdNoThe numeric ID of the project (e.g., 12345)
projectKeyNoThe key of the project (e.g., 'PROJECT')

TDQS

B3.2/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 disclosure. It only says 'Deletes a version' without mentioning consequences such as irreversibility, permission requirements, or potential side effects. This is insufficient for a destructive operation.

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

Conciseness5/5

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

The description is a single, clear sentence with no wasted words. The action verb is front-loaded, making the purpose instantly recognizable.

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

Completeness2/5

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

Given no annotations, no output schema, and the destructive nature of the tool, the description is too terse. It fails to provide necessary context about the operation's effects, prerequisites, or error behavior.

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 baseline is 3. The description adds no new parameter-level detail beyond the schema, though it implies the relationship between the version ID and project identifiers.

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 ('Deletes') and resource ('a version from a project'), making the tool's purpose immediately clear and distinguishing it from sibling deletion tools like delete_project or delete_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 guidance on when to use this tool, what prerequisites exist, or which alternatives might be more appropriate. It is a bare statement of the action with no context for selection.

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

delete_watchingA

Deletes a watch from an issue

ParametersJSON Schema
NameRequiredDescriptionDefault
watchIdYesWatch ID to delete

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states the core action without mentioning side effects, irreversibility, permission requirements, or return value. For a destructive operation, this is a notable gap.

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

Conciseness5/5

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

The description is a single concise sentence with no superfluous words, making it easy to parse and immediately actionable.

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 1-parameter delete operation, the description covers the essential purpose. However, with no annotations or output schema, it leaves out behavioral details such as response format or permanence. The high schema coverage partially compensates for the lack of additional context.

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

Parameters3/5

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

The schema fully documents the single parameter watchId with the description 'Watch ID to delete', achieving 100% schema coverage. The tool description adds no further meaning beyond the schema, so the baseline of 3 is appropriate.

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 the specific verb 'Deletes' and names the resource 'watch from an issue', clearly distinguishing it from sibling tools like add_watching or update_watching. The purpose is unambiguous.

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

Usage Guidelines3/5

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

The verb 'Deletes' implies when to use it, but there is no explicit guidance on alternatives or exclusions. For example, it does not clarify that mark_watching_as_read is for read status, not removal. The usage context is implied rather than stated.

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

get_categoriesA

Returns list of categories for a project

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdNoThe numeric ID of the project (e.g., 12345)
projectKeyNoThe numeric ID of the project (e.g., 12345)

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations supplied, the description must fully disclose behavioral traits. It indicates a read operation ('Returns'), but does not clarify whether the tool is read-only (though implied), how errors are handled, or what happens if no parameters are provided. The description is simple and non-misleading, but lacks explicit safety or error 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, six-word sentence that is front-loaded and free of any extraneous information. It maximizes clarity in minimal space, earning a perfect score.

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 mostly sufficient for a simple list-returning tool, but it leaves ambiguity about the optional parameters (both are optional) and does not explain behavior when neither is provided. It also does not mention return format or pagination, and with no output schema, some of this burden falls on the description. More detail would improve completeness.

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

Parameters3/5

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

The schema provides descriptions for both parameters (100% coverage), so the baseline is 3. The tool description adds no parameter-level meaning, and the schema descriptions themselves are somewhat inaccurate (projectKey described as numeric ID). The description does not compensate for or correct this, keeping the score at baseline.

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 ('Returns list of categories') and the scope ('for a project'), making the tool's purpose specific and unambiguous. It distinguishes from siblings by naming the resource 'categories', though it does not explicitly contrast with similar list-getting tools like get_custom_fields or get_issue_types.

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 primary use caseโ€”retrieving categories for a projectโ€”but offers no explicit guidance on when to choose this tool over alternatives or any exclusions. It lacks context such as 'Use this when you need the list of category IDs' or 'Not for custom fields'.

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

get_custom_fieldsB

Returns list of custom fields for a project

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdNoThe numeric ID of the project (e.g., 12345)
projectKeyNoThe key of the project (e.g., 'PROJECT')

TDQS

B3.4/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 behavioral traits on its own. It only states that a list is returned; it does not mention whether projectId or projectKey (or both) is required, how they interact (e.g., mutually exclusive), error behavior, authentication needs, or the response format. This is a significant gap for such a bare description.

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, well-formed sentence that immediately states the action and resource. There is zero fluff, and it is front-loaded with the main purpose. It earns the top score for conciseness.

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

Completeness2/5

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

For a tool with no annotations and no output schema, the description is incomplete. It does not clarify whether at least one parameter is required, whether projectId and projectKey are alternatives or can be combined, nor what a returned custom field object contains. Given the low complexity, the agent could still infer some usage, but the ambiguous optionality of both parameters creates a real gap.

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%, as both projectId and projectKey have clear descriptions (numeric ID and key, with examples). The description adds no further semantics beyond 'for a project'. This falls at the baseline of 3, where the schema handles parameter meaning and the description adds little extra.

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 'Returns list of custom fields for a project' clearly states a specific verb ('Returns'), a distinct resource ('custom fields'), and scope ('for a project'). It distinguishes from all sibling tools, none of which deal with custom fields, so the agent can easily identify its unique purpose.

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 is given about when to use this tool versus alternatives, and no exclusions or prerequisites are mentioned. However, the purpose is self-evident: if a user needs custom fields for a project, this is the tool to call. Usage is implied but not explicitly contrasted with other getters, so a mid-range score is appropriate.

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

get_documentC

Gets information about a document.

ParametersJSON Schema
NameRequiredDescriptionDefault
documentIdYesDocument ID

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 disclose behavior. It only states it 'gets information,' with no detail on response format, permissions, or side effects. This is minimal but not misleading.

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

Conciseness4/5

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

The description is a single sentence with no fluff. It is appropriately short for a simple getter, though it could be more specific without losing conciseness.

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

Completeness2/5

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

No output schema exists, so the description should explain what information is returned. It does not, and it also fails to differentiate from related document tools. The description is too vague to be considered complete.

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

Parameters3/5

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

The schema provides a complete description of the single parameter (documentId) with type and meaning. The tool description adds nothing beyond the schema, so the high schema coverage earns the baseline score of 3.

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?

Clearly identifies the action ('gets') and resource ('document'), distinguishing it from siblings like get_documents (plural) and get_document_tree. However, 'information' is vague and could mean metadata, content, or attachments.

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

Usage Guidelines2/5

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

Provides no guidance on when to use this tool versus alternatives. It does not mention that it fetches a single document by ID or when to prefer get_documents or get_document_tree.

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

get_documentsB

Gets a list of documents in a project.

ParametersJSON Schema
NameRequiredDescriptionDefault
offsetNoOffset for pagination (default is 0)
projectIdsYesProject ID List

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations, the description carries full burden, but it only says 'Gets a list' without disclosing pagination behavior, ordering, or potential side effects. The offset parameter hints at pagination, but the description does not explain it.

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 sentence that delivers the core purpose without any fluff. It is easily scannable and appropriately sized.

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 lacks annotations and output schema, and the description is minimal. It does not mention response format, pagination details, or that projectIds is required, leaving important gaps for an agent to infer.

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

Parameters3/5

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

The schema provides 100% coverage with descriptions for both parameters (offset and projectIds). The description adds no extra meaning, so the baseline of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool gets a list of documents within a project, using a specific verb and resource. It naturally distinguishes from siblings like get_document (single document) and get_document_tree (hierarchical view).

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 get_document_tree or get_document. The description does not provide 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.

get_document_treeB

Gets the document tree of a project.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdOrKeyYesProject ID or Key

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure, but it only states the action without detailing return format, depth of the tree, pagination, or side effects. The read-only nature is implied by the name 'get' but not explicitly confirmed.

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 redundant words. It efficiently communicates the core action and resource without unnecessary elaboration.

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 an output schema and annotations, the description is too sparse. It fails to clarify what a 'document tree' entails or how it differs from a flat document list, leaving significant uncertainty for an AI agent deciding whether to invoke this tool.

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% since the single parameter 'projectIdOrKey' already includes a description ('Project ID or Key'). The description adds no additional parameter semantics, so the baseline score of 3 is appropriate.

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 the clear verb 'Gets' with a specific resource 'the document tree of a project', which distinguishes it from sibling tools like get_documents and get_document. The scope is explicitly tied to a project, making the purpose unambiguous.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives such as get_documents or get_document. The description neither gives context for selection nor mentions any exclusions or prerequisites.

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

get_git_repositoriesB

Returns list of Git repositories for a project

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdNoThe numeric ID of the project (e.g., 12345)
projectKeyNoThe key of the project (e.g., 'PROJECT')

TDQS

B3.4/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 states 'returns list' which implies a read operation, but does not clarify behavior like requiring a project identifier, handling missing parameters, or edge cases such as empty results. The description adds minimal transparency beyond the function 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, front-loaded sentence with no filler words. It efficiently conveys the essential purpose without redundancy.

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 two optional parameters and no output schema, the description leaves ambiguity about whether at least one parameter is required, whether they are mutually exclusive, and what the returned list contains. The description does not sufficiently compensate for the lack of annotations or output schema, making it incomplete for a tool with this ambiguity.

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 parameters (projectId and projectKey) already described clearly. The description does not add any additional meaning or usage notes for the parameters, 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.

Purpose5/5

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

Clearly states the tool returns a list of Git repositories for a project, using a specific verb and resource. The inclusion of 'list' distinguishes it from the sibling tool 'get_git_repository' which likely returns a single repository.

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

Usage Guidelines3/5

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

The description implies usage context ('for a project') but does not explicitly state when to prefer this over 'get_git_repository' or mention alternatives/exclusions. No when-not-to-use guidance is provided, so it remains at an implied level.

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

get_git_repositoryB

Returns information about a specific Git repository

ParametersJSON Schema
NameRequiredDescriptionDefault
repoIdNoRepository ID
repoNameNoRepository name
projectIdNoThe numeric ID of the project (e.g., 12345)
projectKeyNoThe key of the project (e.g., 'PROJECT')

TDQS

B3.4/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 'returns information' with no detail on safety, possible errors, or what exactly is returned. This is minimal and leaves the agent without meaningful behavioral 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 concise sentence with no filler. It is front-loaded and every word contributes to the core meaning.

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 4 optional parameters with no required fields and no output schema. The description does not explain how these parameters should be combined, what information is returned, or potential edge cases. This leaves significant gaps for a tool that appears simple but has identification ambiguity.

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

Parameters3/5

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

Schema description coverage is 100%, and each parameter has a clear description (repoId, repoName, projectId, projectKey). The description itself adds no parameter guidance, but the schema already handles parameter semantics well, grounding the baseline score at 3.

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

Purpose5/5

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

The description clearly states the tool returns information about a specific Git repository, using a direct verb and resource. It distinguishes from sibling get_git_repositories by emphasizing 'specific', which indicates singular vs. list.

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 'a specific' implies this tool is for fetching a single repository, contrasting with get_git_repositories for listing. However, it does not explicitly state when to use this tool over alternatives, so guidance remains implicit.

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

get_issueA

Returns information about a specific issue

ParametersJSON Schema
NameRequiredDescriptionDefault
issueIdNoThe numeric ID of the issue (e.g., 12345)
issueKeyNoThe key of the issue (e.g., 'PROJ-123')

TDQS

A3.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 bears the full burden. It only states that the tool returns information, which is essentially its core function, and does not disclose behavior around missing issues, parameter requirements, output format, or any safety attributes.

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 core purpose without any fluff. Every word contributes to the meaning.

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

Completeness3/5

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

This is a simple tool with two well-documented optional parameters and no output schema. The description conveys the basic single-issue retrieval purpose but lacks information about how to choose between the two identifier parameters or what the response contains, leaving a small completeness gap.

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

Parameters3/5

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

The input schema describes both issueId and issueKey with examples, covering 100% of parameters. The description adds no extra parameter semantics, but with high schema coverage the baseline score of 3 is appropriate.

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 'returns' and resource 'information about a specific issue', clearly distinguishing this from sibling tools like get_issues (plural) and mutation tools. It is immediately clear that this tool targets a single issue.

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 phrase 'a specific issue' provides clear context for when to use this tool: when retrieving details of one issue, not a list. It does not explicitly name alternatives or exclusions, but the specificity of the scope is sufficient guidance.

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

get_issue_commentsB

Returns list of comments for an issue

ParametersJSON Schema
NameRequiredDescriptionDefault
countNoNumber of comments to retrieve
maxIdNoMaximum comment ID
minIdNoMinimum comment ID
orderNoSort order
issueIdNoThe numeric ID of the issue (e.g., 12345)
issueKeyNoThe key of the issue (e.g., 'PROJ-123')

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations, the description carries full responsibility for behavioral disclosure. It only says 'Returns list of comments' without mentioning pagination behavior (e.g., minId/maxId), permissions, error cases, or whether the operation is read-only beyond the verb 'Returns'. This leaves the agent uncertain about real-world 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, grammatically clear sentence with zero filler. It conveys the core purpose efficiently, making it appropriately concise for a simple retrieval tool.

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 6 parameters, no output schema, and no annotations. The description fails to explain how to identify an issue (issueId vs issueKey), how to leverage count/minId/maxId/order for pagination, or what the response structure looks like. This is a significant gap for an agent to invoke the 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?

The input schema has 100% coverage with descriptions for all 6 parameters, so the baseline is 3. The description adds no extra semantic value beyond the schema; it neither explains parameter relationships nor clarifies optionality. Thus, it does not elevate beyond the schema-provided information.

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

Purpose5/5

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

The description clearly states a specific verb ('Returns') and resource ('list of comments for an issue'), making the tool's purpose immediately understandable. It distinguishes itself from sibling tools like add_issue_comment/update_issue_comment by focusing on retrieval, and from get_pull_request_comments by scoping to issues.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives or when not to use it. The description only states what the tool does, not the context or prerequisites, leaving the agent to infer usage from the name alone.

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

get_issuesC

Returns list of issues

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNoSort field
countNoNumber of issues to retrieve
orderNoSort order
offsetNoOffset for pagination
keywordNoKeyword to search for in issues
statusIdNoStatus IDs
projectIdNoProject IDs
versionIdNoVersion IDs
assigneeIdNoAssignee user IDs
categoryIdNoCategory IDs
priorityIdNoPriority IDs
issueTypeIdNoIssue type IDs
milestoneIdNoMilestone IDs
createdSinceNoCreated since (yyyy-MM-dd)
createdUntilNoCreated until (yyyy-MM-dd)
customFieldsNoCustom field filters (text, numeric, date, or list)
dueDateSinceNoDue date since (yyyy-MM-dd)
dueDateUntilNoDue date until (yyyy-MM-dd)
resolutionIdNoResolution IDs
updatedSinceNoUpdated since (yyyy-MM-dd)
updatedUntilNoUpdated until (yyyy-MM-dd)
createdUserIdNoCreated user IDs
parentIssueIdNoParent issue IDs
startDateSinceNoStart date since (yyyy-MM-dd)
startDateUntilNoStart date until (yyyy-MM-dd)

TDQS

C2.8/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 full responsibility for behavioral disclosure. It only states 'Returns list of issues' without mentioning pagination, default sorting, filter behavior, or return format. This is insufficient for a tool that clearly supports extensive filtering and pagination via its schema.

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

Conciseness3/5

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

The description is extremely conciseโ€”a single sentence with no fluff. However, it is under-specifying for a tool with this many parameters and no other documentation. It earns its place but offers minimal value, so it's not exceptional.

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 highly complex with 25 parameters, no output schema, and no annotations. The description provides only a minimal hint about return value ('list of issues') and says nothing about default behavior, filtering, or pagination. This is incomplete for practical use.

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

Parameters3/5

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

Schema description coverage is 100%, with every parameter having a descriptive comment. The description itself adds no information beyond the schema, so the baseline score of 3 is justified. It neither helps nor hurts parameter understanding.

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 'Returns list of issues' clearly identifies the verb (returns) and resource (list of issues), but it doesn't distinguish this from sibling tools like get_issue (singular) or count_issues. It's clear but lacks sibling differentiation, so a score of 4 is appropriate.

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 like get_issue, get_related_issues, or count_issues. There is no mention of filtering, pagination, or any preconditions. This is a clear gap for a tool with 25 parameters.

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

get_issue_typesA

Returns list of issue types for a project

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdNoThe numeric ID of the project (e.g., 12345)
projectKeyNoThe key of the project (e.g., 'PROJECT')

TDQS

A3.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 must carry the full burden. It states the tool 'Returns list of issue types', which indicates a read operation, but it does not disclose additional traits such as authentication requirements, error conditions, or the structure of returned data. This is minimal behavioral disclosure.

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 of eight words. It contains no redundant or filler content, effectively communicating the tool's purpose with minimal length.

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

Completeness4/5

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

Given the tool's low complexity and that the schema documents both parameters with examples, the description provides the essential purpose. However, the lack of annotations leaves out read-only safety, return format, and authentication details, which is a minor gap for such a simple getter.

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

Parameters3/5

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

The input schema covers both parameters (projectId and projectKey) with clear descriptions, achieving 100% schema coverage. The description adds no additional parameter semantics, such as which identifier to use or what happens if neither is provided. Baseline 3 is appropriate.

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 'Returns' and identifies a concrete resource 'list of issue types' with scope 'for a project'. This clearly distinguishes it from sibling tools like get_priorities or get_categories.

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 'for a project' implies the tool requires a project context, but it does not explicitly state when to use this tool versus alternatives like get_priorities. There is no mention of required parameters or how to choose between projectId and projectKey.

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

get_myselfA

Returns information about the authenticated user

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/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 for behavioral disclosure. It states it returns information but does not disclose what specific fields are returned, whether authentication is required, or any potential errors. Minimal value beyond the basic action.

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, succinct sentence with no redundant words or repetition of existing schema/annotations. It earns its place entirely.

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

Completeness4/5

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

Given the tool's simplicity (0 params, no output schema), the description is adequate for basic understanding. However, it could hint at the shape of returned information or mention authentication requirement to be 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?

There are zero parameters, so the description need not explain parameter details. The empty schema is fully covered, and the baseline for 0-param tools is 4.

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 ('Returns') and resource ('information about the authenticated user'), clearly distinguishing this tool from sibling tools like get_users or get_user_recent_updates by focusing on the current authenticated user.

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

Usage Guidelines4/5

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

The description clearly implies the tool should be used when you need the current authenticated user's info, but it does not explicitly mention alternatives or when not to use it. Context is clear enough for an agent to select it over related user-focused tools.

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

get_notificationsC

Returns list of notifications

ParametersJSON Schema
NameRequiredDescriptionDefault
countNoNumber of notifications to retrieve
maxIdNoMaximum notification ID
minIdNoMinimum notification ID
orderNoSort order

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. 'Returns list' implies a read operation, but it does not explicitly state that it has no side effects, does not mark notifications as read, or mention any rate limits, pagination defaults, or authentication needs. This is a significant gap for a tool with no other behavioral context.

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 with no wasted words. It is properly front-loaded with the action and resource. While it is under-specified in content, it is structurally economical and appropriately sized for a simple read 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?

Given the tool has 4 optional parameters, no output schema, and no annotations, the description is far too sparse. It does not explain the shape of the returned list, default ordering, how count interacts with minId/maxId, or any edge cases. The agent would lack critical context 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?

The input schema already documents all four parameters (count, maxId, minId, order) with 100% coverage, so the description does not need to add parameter details. It adds nothing beyond the schema, but the baseline of 3 applies because schema coverage is high.

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 'Returns list of notifications' clearly states the action (returns) and resource (notifications). The word 'list' distinguishes it from sibling 'count_notifications', which returns a count, so it is specific enough. However, it doesn't elaborate on scope or filtering, so it lacks some differentiation 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?

The description provides no guidance on when to use this tool versus alternatives like count_notifications, nor does it explain scenarios for the optional parameters (count, order, maxId, minId). It simply states the basic function, leaving the agent without decision-support information.

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

get_prioritiesB

Returns list of priorities

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

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 carries full responsibility for behavioral disclosure. It only states the result type ('list of priorities') without mentioning ordering, filtering, authentication needs, or potential errors. For a simple read operation this is minimal but lacks detail that could affect invocation expectations.

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, clear sentence with no wasted words. It is appropriately sized for a trivial list operation, though it could include a bit more context without becoming verbose. It is front-loaded and to the point.

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 a minimal description, the return format, item structure, and sorting are undefined. A simple addition like 'in priority order' or 'including id and name' would greatly improve completeness. As written, the agent gets only the resource name and result type, which is insufficient for a full understanding.

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 empty, so there is no parameter semantics to explain. The description need not compensate for schema gaps since the schema coverage is 100% by nature; the baseline of 4 applies.

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

Purpose4/5

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

The description clearly states the tool returns a list of priorities, with a specific verb ('Returns') and resource ('priorities'). It is distinct from sibling tools as no other tool mentions priorities, though it could be more specific about what kind of priorities (e.g., issue priority levels).

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. There is no mention of use cases, exclusions, or comparisons to sibling list tools like get_resolutions or get_categories, leaving the agent to infer when 'priorities' is the right resource.

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

get_projectB

Returns information about a specific project

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdNoThe numeric ID of the project (e.g., 12345)
projectKeyNoThe key of the project (e.g., 'PROJECT')

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of disclosing behavior. It only says 'Returns information,' which is essentially the purpose and does not detail side effects, required permissions, return structure, or behavior when both identifiers are provided. The read-only nature is implied but not explicitly 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?

The description is a single, straightforward sentence with no wasted words. It is appropriately concise for a simple getter tool, providing the core purpose without unnecessary 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?

Despite the simple nature of the tool, the description lacks details about what 'information' is returned, which of the two optional parameters should be supplied, or how this tool relates to siblings like get_project_list. The lack of an output schema makes the vague 'information' more problematic, leaving the agent without enough context to fully understand the tool's capabilities.

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

Parameters3/5

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

The input schema fully documents both parameters (projectId as numeric ID, projectKey as string key), achieving 100% schema description coverage. The description adds no parameter-specific meaning, so the baseline score of 3 applies as the schema already handles 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 uses a specific verb ('Returns') and resource ('a specific project'), clearly distinguishing it from sibling tools like get_project_list. The phrase 'specific project' unambiguously signals a single-resource lookup, which differentiates it from other project-related tools.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives such as get_project_list or get_project_users. The description does not mention any conditions, prerequisites, or exclusions, leaving the agent to 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.

get_project_listC

Returns list of projects

ParametersJSON Schema
NameRequiredDescriptionDefault
allNoOnly applies to administrators. If โ€˜true,โ€™ it returns all projects. If โ€˜false,โ€™ it returns only projects they have joined.
archivedNoFor unspecified parameters, this form returns all projects. For โ€˜falseโ€™ parameters, it returns unarchived projects. For โ€˜trueโ€™ parameters, it returns archived projects.

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are available, so the description must carry the full burden of disclosing behavior. It only states the obvious return value and fails to mention that 'all' only applies to administrators, the effect of 'archived', whether pagination exists, or any permissions/side effects. This is a significant transparency gap.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no unnecessary words. It is well-structured and concise, though the brevity comes at the cost of substantive detail.

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 with two optional booleans and the schema covers parameter semantics, yet the description lacks usage context, return format details, and behavioral nuances. It is minimally adequate but has clear gaps, so a 3 reflects the balance.

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

Parameters3/5

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

The input schema provides detailed descriptions for both parameters (all, archived), achieving 100% coverage. The tool description adds no parameter information, but the baseline of 3 is appropriate because the schema fully explains parameter meaning.

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

Purpose2/5

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

The description is a direct restatement of the tool name: 'get_project_list' -> 'Returns list of projects'. It adds no additional scope, filtering behavior, or distinction from sibling tools like get_project. This is a tautology, scoring 2.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives such as get_project, get_issues, or other list tools. The description does not mention any prerequisites, exclusions, or context for choosing this tool, leaving agents without decision support.

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

get_project_usersA

Returns list of users in a specific project

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdNoThe numeric ID of the project (e.g., 12345)
projectKeyNoThe key of the project (e.g., 'PROJECT')

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations, the description must carry the full burden of behavioral disclosure. It only states that the tool returns a list, but does not mention required parameters (projectId vs projectKey), error handling, authentication needs, or response structure. For a read operation, minimal disclosure may be acceptable, but the lack of parameter-requirement clarity is a notable gap.

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

Conciseness5/5

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

The description is a single sentence of nine words, front-loaded with the action and result. It contains zero redundant information and is easy to parse quickly.

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-retrieval tool with well-documented parameters, the description is minimally sufficient. However, it does not clarify whether both parameters are required or how to choose between them, nor does it describe the return value structure. Given the absence of an output schema, slightly more detail would improve completeness.

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

Parameters3/5

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

The input schema provides 100% coverage with both parameters having descriptive text and examples. The description adds no parameter-specific semantics beyond what the schema already offers, so the baseline score of 3 is appropriate.

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 ('Returns') and resource ('list of users') with a clear scope qualifier ('in a specific project'). This clearly distinguishes it from sibling tools like get_users (all users) and get_project (project details). The purpose is immediately obvious.

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

Usage Guidelines3/5

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

The description implies usage context (project-scoped user retrieval) but does not explicitly state when to use this versus get_users or when not to use it. No exclusions or alternative tool references are provided, leaving the decision partially to inference.

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

get_pull_requestB

Returns information about a specific pull request

ParametersJSON Schema
NameRequiredDescriptionDefault
numberYesPull request number
repoIdNoRepository ID
repoNameNoRepository name
projectIdNoThe numeric ID of the project (e.g., 12345)
projectKeyNoThe key of the project (e.g., 'PROJECT')

TDQS

B3.2/5.0
Behavior2/5

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

Since no annotations are provided, the description carries full responsibility for behavioral disclosure. It only says 'returns information' without mentioning authentication, error behavior, required identifiers, or response format, leaving significant ambiguity.

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, front-loading the core purpose. It is appropriately minimal for a simple retrieval tool.

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?

While the schema covers parameters, the description lacks context on which identifier is necessary (number is required, but optional params are unclear) and provides no output schema or behavioral details. For a 5-param tool with no annotations, this leaves gaps in usability.

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 all parameters (number, repoId, repoName, projectId, projectKey). The description adds no additional parameter semantics, warranting the baseline score of 3.

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

Purpose5/5

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

The description clearly states the tool returns information about a specific pull request, using a specific verb and resource. The word 'specific' distinguishes it from sibling tool get_pull_requests, which presumably lists multiple pull requests.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like get_pull_requests for listing or get_pull_request_comments for comments. There are no explicit prerequisites or context indicating scenarios where this tool is preferred.

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

get_pull_request_commentsC

Returns list of comments for a pull request

ParametersJSON Schema
NameRequiredDescriptionDefault
countNoNumber of comments to retrieve
maxIdNoMaximum comment ID
minIdNoMinimum comment ID
orderNoSort order
numberYesPull request number
repoIdNoRepository ID
repoNameNoRepository ID
projectIdNoThe numeric ID of the project (e.g., 12345)
projectKeyNoThe key of the project (e.g., 'PROJECT')

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are present, so the description carries the full burden of behavioral disclosure. It merely restates the function without mentioning pagination, filtering, sorting, read-only nature, or any other behavioral traits. Key parameters like count, order, minId, and maxId are not discussed, so the agent is unaware of how results are constrained.

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

Conciseness3/5

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

The description is succinct at one sentence, but it under-specifies the tool's behavior. It is not needlessly verbose, yet it borders on a restatement of the tool name, lacking informative structure for a tool with nine parameters.

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?

Given the tool has nine parameters and no output schema, the description is seriously incomplete. It does not explain how to identify the pull request (e.g., number vs repoId/repoName), how filtering parameters affect results, or what the response structure looks like, leaving the agent without necessary context for correct invocation.

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 baseline is 3. The description adds no additional meaning beyond what the schema already provides for each parameter, and it does not explain how parameters interact or which are needed beyond the required 'number'.

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

Purpose5/5

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

The description clearly states the tool's purpose with a specific verb ('Returns list') and resource ('comments for a pull request'). This distinguishes it from siblings like get_issue_comments and get_pull_request, and the scope is immediately obvious.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives such as get_issue_comments or get_pull_request. There are no explicit context cues, prerequisites, or exclusions, leaving the agent to infer usage from the name alone.

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

get_pull_requestsB

Returns list of pull requests for a repository

ParametersJSON Schema
NameRequiredDescriptionDefault
countNoNumber of pull requests to retrieve
offsetNoOffset for pagination
repoIdNoRepository ID
issueIdNoIssue IDs
repoNameNoRepository name
statusIdNoStatus IDs
projectIdNoThe numeric ID of the project (e.g., 12345)
assigneeIdNoAssignee user IDs
projectKeyNoThe key of the project (e.g., 'PROJECT')
createdUserIdNoCreated user IDs

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations, the description is the only source of behavioral information. It simply states a return value without disclosing side effects, read-only status, or any unusual behavior. The agent cannot know if this operation is safe or if any parameters have 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, clear sentence with no unnecessary words. It directly states the tool's purpose without 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?

Given the tool has 10 parameters and no output schema, the description is too sparse. It does not explain filtering options, pagination, or the structure of returned data. Even though the parameter names give hints, the description does not provide enough contextual guidance for correct usage.

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

Parameters3/5

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

The schema description coverage is 100%, so all ten parameters are documented in the schema. The description adds no additional parameter semantics beyond the schema, so it remains at the baseline.

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

Purpose5/5

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

The description clearly states the tool returns a list of pull requests for a repository, using the verb 'returns' and the resource 'pull requests'. It distinguishes from sibling tools like get_pull_request (singular) and get_pull_requests_count.

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 other pull request tools. The description does not mention any exclusions or alternatives, leaving the agent to infer from the name.

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

get_pull_requests_countC

Returns count of pull requests for a repository

ParametersJSON Schema
NameRequiredDescriptionDefault
repoIdNoRepository ID
issueIdNoIssue IDs
repoNameNoRepository name
statusIdNoStatus IDs
projectIdNoThe numeric ID of the project (e.g., 12345)
assigneeIdNoAssignee user IDs
projectKeyNoThe key of the project (e.g., 'PROJECT')
createdUserIdNoCreated user IDs

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 only states the basic return of a count but does not explain how the various optional filters combine, what the default behavior is with no parameters, or whether authentication or rate limits apply. The phrase 'for a repository' is reductive given the schema allows filtering by projects, assignees, statuses, etc.

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: 'Returns count of pull requests for a repository.' It is concise with no wasted words. However, for a tool with 8 optional parameters, the structure could include a bit more context without becoming verbose, so it does not earn a 5.

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

Completeness2/5

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

The tool has 8 optional parameters, no output schema, and no annotations. The description is minimal and fails to explain the default behavior (e.g., what is counted when no filters are provided), how parameters scope the count, or the relationship to get_pull_requests. It is under-specified for the tool's complexity.

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

Parameters3/5

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

The schema description coverage is 100%, so the baseline is 3. The description adds no additional meaning beyond the schema's field descriptions; it does not clarify relationships or required combinations among the 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 tool returns a count of pull requests for a repository, with a specific verb and resource. However, it does not distinguish this from sibling tools like get_pull_requests (list) or mention the filtering capabilities implied by the schema, so it lacks explicit differentiation.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives, such as get_pull_requests for listing PRs or count_issues for counting issues. It also does not explain when to use the optional filters or any prerequisites, leaving the user without context for selection.

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

get_resolutionsC

Returns list of issue resolutions

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.9/5.0
Behavior1/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 simply restates the tool's name ('Returns list of issue resolutions') and provides no information about data scope, ordering, permissions, or response format, adding no value beyond the 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, succinct sentence with no filler. It front-loads the core action and resource, earning its place without waste.

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

Completeness2/5

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

The description lacks essential context about what 'issue resolutions' are, whether all or filtered resolutions are returned, and what the response structure looks like. With no output schema and no annotations, this is insufficient for an agent to fully understand the tool's behavior.

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 schema is vacuous. The description need not explain parameters; the baseline for 0 params 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 uses a specific verb ('Returns') and resource ('list of issue resolutions'), clearly indicating what the tool does. It distinguishes from sibling tools by naming a unique resource, though it doesn't explicitly compare with similar list getters.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus other issue-related getters like get_issues or get_priorities. The description does not mention use cases, prerequisites, or alternatives.

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

get_spaceB

Returns information about the Backlog space

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

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. It says 'Returns' which implies a read-only operation, but it does not disclose any side effects, authentication requirements, rate limits, or return format details, leaving significant behavioral ambiguity.

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

Conciseness5/5

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

The description is a single clear sentence with no wasted words. It conveys the core purpose without padding, which is appropriate for a simple getter tool.

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 information is returned. Merely saying 'information about the Backlog space' is vague and leaves the agent guessing about the response structure, so the tool is under-specified for effective invocation.

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 schema coverage is trivially 100%. The description does not need to add parameter semantics, and per guidelines a baseline of 4 is appropriate for no-param tools.

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 returns information about the Backlog space, using a specific verb ('Returns') and a distinct resource ('Backlog space'). It is not a tautology and distinguishes from siblings by the unique resource, though 'information' is somewhat vague.

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

Usage Guidelines3/5

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

The intended use is implied: call this tool when you need information about the Backlog space. However, there is no explicit guidance on when not to use it or mention of alternatives, though for a simple getter with no params this is acceptable.

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

get_space_activitiesC

Returns list of space activities

ParametersJSON Schema
NameRequiredDescriptionDefault
countNoNumber of activities to retrieve
maxIdNoMaximum activity ID
minIdNoMinimum activity ID
orderNoSort order
activityTypeIdNoActivity type IDs

TDQS

C2.2/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 behavioral disclosure burden. 'Returns list' implies a read-only operation, but it doesn't disclose pagination, filtering behavior, what an 'activity' is, or any side effects. The information is minimal and does not add meaningful transparency beyond the schema.

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 a single, short sentence with no filler, but it is under-specified to the point of being vague. It omits essential context about the resource and usage, making it more a case of under-specification than effective conciseness.

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

Completeness2/5

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

With 5 optional parameters and no output schema, the description provides only the basic action. It doesn't explain the domain of 'space activities', how parameters like minId, maxId, and activityTypeId interact, or what the response looks like. This leaves significant gaps for an agent to select and invoke the 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 100%, so the schema fully documents all five parameters. The description adds no parameter-specific meaning, but the baseline of 3 is appropriate since the schema already handles parameter semantics.

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 has a specific verb ('returns') and resource ('space activities'), but 'space activities' is ambiguous without domain context. It does not distinguish itself from other list endpoints like get_issue_comments or get_user_recent_updates, so it is only somewhat clear.

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

Usage Guidelines1/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 description provides no context about the intended use case, prerequisites, or situations where another tool might be more appropriate.

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

get_user_recent_updatesB

Returns recent updates (activities) for a specific user

ParametersJSON Schema
NameRequiredDescriptionDefault
countNoNumber of activities to retrieve (1-100, default: 20)
maxIdNoMaximum activity ID
minIdNoMinimum activity ID
orderNoSort order ("asc" or "desc", default: "desc")desc
userIdYesID of the user to retrieve activities for
activityTypeIdNoActivity type IDs to filter by

TDQS

B3.2/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 only says 'returns' which implies a read operation, but does not disclose any pagination, default sorting, or permission requirements. The schema parameters like 'order' and 'count' exist but are not explained 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.

Conciseness5/5

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

The description is a single, focused sentence that immediately states the purpose. There is no fluff or redundant 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?

The tool has no output schema, and the description does not explain the shape or content of the returned activity objects. It only mentions 'activities' without detailing key fields or behavior. The schema covers input parameters but not the response structure, leaving a gap for agent understanding.

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

Parameters3/5

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

The input schema has 100% parameter description coverage, so the baseline is 3. The description does not add further meaning to the parameters, but the schema already describes each parameter clearly (e.g., count, maxId, minId, order, userId, activityTypeId).

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

Purpose5/5

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

The description clearly states the tool returns recent updates/activities for a specific user, using a specific verb ('returns') and resource. It distinguishes from sibling tools like get_space_activities by scoping to a user.

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 other activity-related tools such as get_space_activities or get_notifications. There are no alternatives or exclusions mentioned.

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

get_usersA

Returns list of users in the Backlog space

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. It states the return value but does not disclose details such as whether inactive users are included, ordering, or permission requirements. This is a minimal but non-contradictory disclosure.

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 earns a high score for clarity and brevity.

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

Completeness4/5

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

The tool is simple with no parameters and no output schema. The description sufficiently conveys the basic purpose, though it could be more complete by mentioning response format or scope. Given low complexity, it is adequate.

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 description accurately reflects that there are no arguments to configure. The baseline of 4 for zero-parameter tools applies.

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

Purpose5/5

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

The description clearly states the tool returns a list of users in the Backlog space, using a specific verb and resource. It distinguishes from related user-specific getters like get_myself and get_user_stars_count.

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 other user-related tools. It does not mention alternatives or exclusions, leaving the agent to infer usage from the name alone.

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

get_user_stars_countA

Returns the count of stars received by a user

ParametersJSON Schema
NameRequiredDescriptionDefault
sinceNoCount stars received after this date (yyyy-MM-dd)
untilNoCount stars received before this date (yyyy-MM-dd)
userIdYesUser ID

TDQS

A3.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 of behavioral disclosure. It only states 'Returns,' implying a read operation, but does not mention whether the count includes all stars or is filtered by date, how the count is computed, or any side effects. This adds minimal value beyond the tool 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 sentence of 10 words, front-loaded with the action and result. Every word earns its place, with no redundant or fluff content.

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

Completeness4/5

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

For a simple count tool with well-documented parameters and no output schema, the description is sufficient to infer the return value is a number. It clearly states what is returned (the count), and the schema handles parameter details. However, it could have clarified the return type explicitly or mentioned the optional date range, but it does not compromise understanding.

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

Parameters3/5

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

The input schema has 100% coverage with descriptions for all three parameters (since, until, userId). The description adds no parameter-specific meaning, leaving the schema to carry the load. The baseline of 3 is appropriate when schema coverage is high.

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 identifies the tool's function: it returns a count of stars received by a user. The verb 'Returns' and specific resource 'count of stars received by a user' distinguish it from sibling tools like get_user_recent_updates, which focus on recent updates rather than a count.

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 (whenever a user's star count is needed), but no explicit guidance is given about alternatives or exclusions. There is no mention of when not to use it or which sibling tools might serve different purposes.

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

get_version_milestone_listC

Returns list of versions/milestones in the Backlog space

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdNoThe numeric ID of the project (e.g., 12345)
projectKeyNoThe key of the project (e.g., TEST_PROJECT)

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries the full burden. It only states that it returns a list, implying read-only behavior, but provides no details about data scope, pagination, ordering, or potential errors. It doesn't explicitly confirm the operation is safe or disclose any 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 concise sentence with no wasted words. It efficiently communicates the core purpose, and the structure is appropriate for its simplicity.

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 and minimal description, yet it fails to explain what versions/milestones are, how they are scoped (despite having project parameters), or what the return data looks like. The description is inadequate for an agent to confidently invoke the tool and interpret results.

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%, meaning both parameters are fully described in the schema. The tool description adds no additional parameter meaning beyond what the schema provides, so a baseline of 3 is appropriate.

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

Purpose4/5

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

The description clearly states the action (returns list) and resource (versions/milestones), but the phrase 'in the Backlog space' is vague and doesn't specify that the list is scoped to a project via projectId/projectKey. It doesn't differentiate from sibling tools, but no direct sibling with the same resource exists.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives, nor any mention of the need to supply projectId or projectKey (both optional). It doesn't clearly state that this is the endpoint for retrieving versions/milestones for a specific project as opposed to other list tools.

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

get_watching_list_countB

Returns count of watching items for a user

ParametersJSON Schema
NameRequiredDescriptionDefault
userIdYesUser ID

TDQS

B3.2/5.0
Behavior2/5

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

Without annotations, the description must disclose behavioral traits, but it only states the return value. It does not explicitly confirm read-only status, clarify what 'watching items' includes, or mention response format or edge cases.

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. It efficiently conveys the tool's purpose without unnecessary 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?

Given the lack of annotations and output schema, the description is too sparse. It does not specify the response shape (e.g., raw number vs object), behavior for invalid users, or the exact meaning of 'watching items'.

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

Parameters3/5

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

The schema already provides full coverage for the single userId parameter with a clear description. The tool description adds no additional meaning beyond what the schema already conveys, so the baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool returns a count of watching items for a user, with a specific verb and resource. It distinguishes itself from the sibling get_watching_list_items by explicitly mentioning 'count'.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It does not mention that get_watching_list_items returns the full list, nor any other context for selection.

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

get_watching_list_itemsB

Returns list of watching items for a user

ParametersJSON Schema
NameRequiredDescriptionDefault
userIdYesUser ID

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden for behavioral disclosure. It mentions 'Returns' but does not confirm read-only behavior, authentication requirements, pagination, or what fields each watching item contains. This is a 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.

Conciseness5/5

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

The description is a single concise sentence that front-loads the main action and object. It contains 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?

For a simple list tool with one parameter and no output schema, the description provides the basic purpose but lacks return structure details or any usage context. It is minimally viable but does not clarify what a 'watching item' contains or how results are ordered/paginated.

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

Parameters3/5

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

The schema description covers 100% of parameters (userId) with a clear 'User ID' description. The tool description adds only the context that items are returned 'for a user', but this roughly maps to the existing parameter meaning. Baseline 3 is appropriate.

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 ('Returns list') and the resource ('watching items for a user'), which distinguishes it from sibling tools like get_watching_list_count, add_watching, and delete_watching. It is specific and 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?

There is no guidance on when to use this tool versus alternatives such as get_watching_list_count or related watching mutations. The only implied context is 'for a user', but no explicit exclusions or alternative recommendations are provided.

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

get_wikiA

Returns information about a specific wiki page

ParametersJSON Schema
NameRequiredDescriptionDefault
wikiIdYesWiki ID

TDQS

A3.7/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. 'Returns information' indicates a read-only operation, but it does not describe the response format, potential errors, or authentication requirements. For a simple getter, this minimal disclosure is adequate but not rich.

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 of nine words, front-loaded with the action and resource. It contains no redundant information and earns its place entirely.

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 with only one parameter and no output schema, so the description is minimally adequate. However, it does not specify what 'information' is returned, which could be improved. Given the low complexity, it is acceptable but not complete.

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

Parameters3/5

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

The input schema provides 100% coverage, with the only parameter (wikiId) having a description 'Wiki ID'. The tool description adds no extra parameter-level meaning beyond what the schema already specifies, so baseline of 3 is appropriate.

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 'Returns' with a clear resource 'specific wiki page', distinguishing it from sibling tools like get_wiki_pages (list) and get_wikis_count (count). The word 'specific' emphasizes that this is for a single page, making the purpose unambiguous.

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

Usage Guidelines3/5

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

No explicit guidance on when to use this tool versus alternatives is provided. The use of 'specific' implies it's for retrieving an individual wiki page rather than listing, but the description does not state exclusions or mention get_wiki_pages as an alternative for lists. Usage is implied rather than clearly instructed.

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

get_wiki_pagesC

Returns list of Wiki pages

ParametersJSON Schema
NameRequiredDescriptionDefault
keywordNoKeyword to search for in Wiki pages
projectIdNoThe numeric ID of the project (e.g., 12345)
projectKeyNoThe key of the project (e.g., 'PROJECT')

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 must disclose behavior, but it only states a list is returned. It does not mention pagination, required permissions, output structure, or whether results are project-scoped, which are critical for correct invocation.

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

Conciseness3/5

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

The description is a single short sentence, making it concise. However, it is under-specified and lacks structural elaboration, striking a balance between brevity and sufficiency.

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 description is too minimal for a tool with no output schema and no annotations. It does not explain what fields are returned, how project context is resolved, or what the list represents (e.g., titles, snippets, full pages). This lacks completeness for an agent to invoke it appropriately.

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%, with each parameter described. The description adds no extra meaning, but since the schema already covers the semantics, a 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 clearly states the tool returns a list of Wiki pages, distinguishing it from singular get_wiki. However, it lacks scope details like project context or whether it returns page content or metadata, preventing a perfect score.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus siblings such as get_wiki or get_wikis_count. There is no mention of how the optional parameters relate to usage scenarios, leaving the agent without decision support.

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

get_wikis_countA

Returns count of wiki pages in a project

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdNoThe numeric ID of the project (e.g., 12345)
projectKeyNoThe key of the project (e.g., 'PROJECT')

TDQS

A3.5/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 implies a read-only operation ('Returns count'), but it does not clarify whether projectId or projectKey is required, what happens if both or neither are provided, or any access restrictions. This ambiguity could lead to incorrect invocation.

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 functionality.

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 sufficient for a basic understanding, but it leaves critical gaps: the schema lists both parameters as optional, yet the description never specifies that at least one is needed for the count. Additionally, the exact return format (e.g., number vs. object) is not stated, and there is no output schema or annotations to fill these gaps.

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 baseline is 3. The description adds no parameter-level meaning beyond what the schema already provides; projectId and projectKey are already explained in the schema.

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

Purpose5/5

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

The description clearly states the tool's function with a specific verb ('Returns count') and resource ('wiki pages in a project'). It distinguishes from siblings like get_wiki_pages, which returns the pages themselves, and count_issues, which counts a different resource.

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โ€”use when you need the number of wiki pagesโ€”but the description does not explicitly state when not to use it or mention alternatives such as get_wiki_pages for page details. No exclusion or alternative guidance is provided.

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

mark_notification_as_readB

Mark a notification as read

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesNotification ID to mark as read

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description carries full responsibility for behavioral disclosure. However, it merely restates the tool name without mentioning side effects, idempotency, return values, or error conditions, leaving significant behavioral ambiguity.

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

Conciseness4/5

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

The description is a single concise sentence, appropriately sized for a simple tool. However, it adds little beyond the tool name itself, so it is not fully earning its place, preventing a perfect score.

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 one-parameter, no-output-schema tool, the core action is clearly stated. However, the absence of any details about return behavior, side effects, or permission requirements leaves some contextual gaps, though the simplicity of the operation mitigates the impact.

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% with a clear parameter description ('Notification ID to mark as read'). The tool description adds no new information, but the baseline of 3 applies because the schema already fully documents the single parameter.

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 (mark) and the resource (notification) with the specific state change (as read). This distinctively differentiates it from sibling tools like mark_watching_as_read, which targets a different resource.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. There is no context about prerequisites (e.g., notification must exist) or when to prefer this over related notification operations like reset_unread_notification_count.

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

mark_watching_as_readC

Mark a watch as read

ParametersJSON Schema
NameRequiredDescriptionDefault
watchIdYesWatch ID to mark as read

TDQS

C2.4/5.0
Behavior2/5

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

With no annotations, the description carries full responsibility for behavioral disclosure. It only states the action itself, with no mention of side effects, permissions, idempotency, or return values. This is similar to a bare mutation description.

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. It is front-loaded and appropriately sized for a simple tool, every word serves a purpose.

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 lack of output schema and annotations, the description is too sparse. It does not explain what 'marked as read' means, whether the action is reversible, or what the response looks like, leaving critical gaps for a mutation tool.

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

Parameters3/5

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

The input schema provides 100% coverage for the single parameter 'watchId' with its own description. The tool description adds no additional semantic meaning beyond the schema, so the baseline of 3 is appropriate.

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

Purpose2/5

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

The description 'Mark a watch as read' directly restates the tool name 'mark_watching_as_read' without adding any new information. It is a tautology rather than a clear, distinct statement of purpose, and it does not differentiate from siblings like 'update_watching'.

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 'update_watching' or 'mark_notification_as_read'. No context is provided about prerequisites, scenarios, or exclusions.

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

reset_unread_notification_countC

Reset unread notification count

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.9/5.0
Behavior1/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It only states the action without mentioning side effects, scope (e.g., current user), idempotency, or what the reset implies. This is a significant gap for a mutation tool.

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

Conciseness5/5

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

The description is a single, direct sentence with no filler. Every word contributes to conveying the action, making it appropriately concise.

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

Completeness2/5

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

Despite the zero-parameter simplicity, the description is under-specified. It lacks context on the scope of the reset (e.g., all users, current user), whether it affects only the counter or also individual notification entries, and any prerequisites. Given the lack of annotations and output schema, more detail is needed.

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

Parameters4/5

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

The input schema has zero parameters and schema description coverage is 100%. With no parameters, the baseline score is 4, and the description need not explain parameter details.

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 'Reset unread notification count' uses a specific verb and resource, making it clear what the tool does. However, it does not explicitly differentiate from sibling tools like mark_notification_as_read, which also deals with read state.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It does not mention that this resets the count to zero, nor does it contrast with mark_notification_as_read or count_notifications.

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

update_issueC

Updates an existing issue

ParametersJSON Schema
NameRequiredDescriptionDefault
commentNoComment to add when updating the issue
dueDateNoScheduled due date (yyyy-MM-dd)
issueIdNoThe numeric ID of the issue (e.g., 12345)
summaryNoSummary of the issue
issueKeyNoThe key of the issue (e.g., 'PROJ-123')
statusIdNoStatus ID
startDateNoScheduled start date (yyyy-MM-dd)
versionIdNoVersion IDs. Pass an empty array to clear all versions. Omit this field to leave the current versions unchanged.
assigneeIdNoUser ID of the assignee
categoryIdNoCategory IDs. Pass an empty array to clear all categories. Omit this field to leave the current categories unchanged.
priorityIdNoPriority ID
actualHoursNoActual work hours
descriptionNoUpdates an existing issue
issueTypeIdNoIssue type ID
milestoneIdNoMilestone IDs. Pass an empty array to clear all milestones. Omit this field to leave the current milestones unchanged.
attachmentIdNoAttachment IDs
customFieldsNoList of custom fields to set on the issue
resolutionIdNoResolution ID
parentIssueIdNoParent issue ID
estimatedHoursNoEstimated work hours
notifiedUserIdNoUser IDs to notify

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 bears the full burden of behavioral disclosure. It only restates the mutation implied by the name and fails to disclose whether unchanged fields are preserved, how the issue is identified, whether permissions are required, or what response to expect.

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

Conciseness3/5

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

The description is a single sentence with no filler, making it concise. However, for a tool with 21 parameters, it is so sparse that it borders on under-specification and does not provide meaningful structural guidance.

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

Completeness2/5

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

Despite the rich schema, the description is not complete enough for an update operation with 21 optional parameters and no output schema. It does not state whether updates are partial, how the target issue is identified, or what side effects occur, leaving significant contextual gaps for an agent.

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 baseline is 3 even without parameter details in the tool description. The schema already documents all 21 parameters, including nuanced semantics like 'pass an empty array to clear all versions,' while the description adds no parameter-level 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 states the core function clearly with a verb+resource construction: 'Updates an existing issue.' It is accurate and specific to the issue resource, but it does not explicitly distinguish the tool from sibling update tools like update_issue_comment or update_project beyond the resource name.

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 usage guidance is provided. The description does not explain when to use this tool versus add_issue, get_issue, or update_issue_comment, nor does it mention required identifiers, partial-update semantics, or any prerequisites.

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

update_issue_commentB

Updates a comment on an issue

ParametersJSON Schema
NameRequiredDescriptionDefault
contentYesComment content
issueIdNoThe numeric ID of the issue (e.g., 12345)
issueKeyNoThe key of the issue (e.g., 'PROJ-123')
commentIdYesComment ID

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 must carry the burden of behavioral disclosure. It only says 'Updates a comment on an issue' without mentioning whether the update replaces the entire content, requires ownership, or has any side effects. This is insufficient for a mutation tool.

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

Conciseness5/5

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

The description is a single, concise sentence with no filler or redundant information. It is appropriately sized and front-loaded with the action.

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 update tool, the description plus schema covers the essential mechanics, but it lacks usage guidelines and behavioral details. Given no output schema and no annotations, it is adequate but not fully complete.

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

Parameters3/5

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

The input schema has 100% description coverage for all four parameters, so the baseline is 3. The description itself adds no additional parameter semantics, but it doesn't need to since the schema already explains each field.

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 'Updates' and identifies the resource 'a comment on an issue', making the core purpose clear. However, it does not differentiate from sibling tools like add_issue_comment or update_pull_request_comment, so it lacks distinctive scope.

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 add_issue_comment or other update tools. The description provides no context about prerequisites, scenarios, or alternative tools.

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

update_projectC

Updates an existing project

ParametersJSON Schema
NameRequiredDescriptionDefault
keyNoProject key
nameNoProject name
archivedNoWhether to archive the project
projectIdNoThe numeric ID of the project (e.g., 12345)
projectKeyNoThe key of the project (e.g., 'PROJECT')
chartEnabledNoWhether to enable chart
subtaskingEnabledNoWhether to enable subtasking
textFormattingRuleNoText formatting rule
projectLeaderCanEditProjectLeaderNoWhether project leaders can edit other project leaders

TDQS

C2.4/5.0
Behavior1/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 behavior. It only says 'Updates an existing project', with no information about how updates are applied (e.g., partial vs. full replacement), what happens if the project doesn't exist, whether changes are reversible, or side effects like archiving. For a mutation tool, this is severely inadequate.

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, but this is under-specification rather than effective conciseness. It merely restates the tool name without adding any useful context. A concise description should pack information efficiently; this one is vacuous and doesn't earn its place.

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?

Given the tool has 9 parameters, no required parameters, and no output schema, the description fails to provide essential context. It does not clarify which identifier (key, projectId, projectKey) is used to target the project, how the update behaves with partial input, or what the response looks like. The description is completely inadequate for an agent to invoke this tool correctly without relying solely on parameter names.

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 baseline is 3. The description itself adds no parameter information, but the schema provides detailed meanings for all 9 parameters, including identifiers, booleans, and an enum. Thus the description adds no extra value beyond the schema, warranting a baseline score.

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 'Updates an existing project' clearly states the action (update) and the resource (project), and the word 'existing' distinguishes it from sibling tools like add_project and delete_project. This is a specific verb+resource combination that clearly communicates the tool's core purpose.

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

Usage Guidelines1/5

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

The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites, when it should be preferred over add_project or delete_project, or any exclusions. There is zero usage context beyond the action itself.

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

update_pull_requestC

Updates an existing pull request

ParametersJSON Schema
NameRequiredDescriptionDefault
numberYesPull request number
repoIdNoRepository ID
issueIdNoIssue ID to link
summaryNoSummary of the pull request
repoNameNoRepository name
statusIdNoStatus ID
projectIdNoThe numeric ID of the project (e.g., 12345)
assigneeIdNoUser ID of the assignee
projectKeyNoThe key of the project (e.g., 'PROJECT')
descriptionNoUpdates an existing pull request
notifiedUserIdNoUser IDs to notify

TDQS

C2.4/5.0
Behavior1/5

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

With no annotations, the description carries full burden for behavioral disclosure. It only says 'Updates,' implying mutation, but does not state whether changes are reversible, require specific permissions, return the updated object, or affect related resources. This is completely opaque for a mutation tool.

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

Conciseness3/5

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

The description is a single, front-loaded sentenceโ€”concise and free of verbosity. However, it is so sparse that it under-specifies the tool's behavior, making it minimally adequate rather than a model of effective conciseness.

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?

For an 11-parameter mutation tool with no output schema and no annotations, this description is severely incomplete. It does not explain what properties can be updated, what the response contains, any prerequisites, or how this tool fits into the broader workflow of managing pull requests.

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

Parameters3/5

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

The schema covers all 11 parameters with descriptions (100% coverage), so the schema does the heavy lifting. The tool description adds no additional parameter meaning beyond stating the operation itself, which is redundant. Baseline 3 applies because the schema is sufficient.

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 'Updates an existing pull request' clearly states the verb (updates) and resource (pull request), making the core purpose unambiguous. However, it lacks any mention of which fields can be updated, which would further distinguish it from sibling tools like update_pull_request_comment or update_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 offers no guidance on when to use this tool versus alternatives, such as add_pull_request for creating a PR or update_issue for modifying issues. No prerequisites, exclusions, or recommended contexts are provided; usage can only be inferred as 'when you need to update a pull request,' which is tautological.

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

update_pull_request_commentB

Updates a comment on a pull request

ParametersJSON Schema
NameRequiredDescriptionDefault
numberYesPull request number
repoIdNoRepository ID
contentYesComment content
repoNameNoRepository name
commentIdYesComment ID
projectIdNoThe numeric ID of the project (e.g., 12345)
projectKeyNoThe key of the project (e.g., 'PROJECT')

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description carries the full burden, but it only states 'Updates a comment on a pull request' without detailing side effects, permissions, or behavior like overwriting content. The mutation nature is implied by the verb but not elaborated, leaving unknowns about idempotency, failure modes, or required context.

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 directly states the tool's purpose. It is front-loaded and free of fluff, though it may be too minimal to be genuinely helpful, but for conciseness it is appropriate.

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 7 parameters, no output schema, and no annotations, the description is under-specified. It does not mention return values, prerequisites (e.g., comment must exist), or error conditions, leaving the agent to infer from the schema and name alone, making it incomplete for a mutation tool.

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

Parameters3/5

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

The input schema already describes all 7 parameters with 100% coverage, so the description need not repeat them. However, the description adds no additional semantic meaning beyond the schema, such as which parameters are required or how they relate to the update operation, so the baseline of 3 applies.

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 ('Updates') and the target ('a comment on a pull request'), which distinguishes it from sibling tools like add_pull_request_comment and update_pull_request. The verb and resource are specific and unambiguous.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It does not mention distinguishing factors such as requiring an existing comment ID or that it should be used instead of add/delete comment tools, leaving the agent to infer usage from the name alone.

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

update_version_milestoneC

Updates an existing version milestone

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesVersion ID
nameYesVersion name
archivedNoArchive status of the version
projectIdNoThe numeric ID of the project (e.g., 12345)
startDateNoStart date
projectKeyNoThe key of the project (e.g., 'PROJECT')
descriptionNoUpdates an existing version milestone
releaseDueDateNoRelease due date

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description must fully disclose behavioral traits, but it only says 'updates an existing version milestone.' It does not explain whether updates are partial/full, require permissions, return a value, or have side effects, which is a critical gap for a mutating operation.

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

Conciseness4/5

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

The description is one concise sentence with no filler words, and it front-loads the verb. However, it is so minimal that it borders on under-specification, though conciseness itself is not penalized.

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 8 parameters, no output schema, and no annotations, the description is far too sparse. It does not clarify update semantics, the role of required fields, or how this tool contrasts with related version milestone tools. The agent would need to infer too much from the schema alone.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The tool description adds no extra parameter meaning beyond what the schema already provides (e.g., required fields id and name, archived, dates). The description's single sentence does not enhance parameter understanding.

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 ('Updates') and the resource ('existing version milestone'), which distinguishes it from get/add/delete counterparts. However, it does not specify which fields or aspects of the milestone are updated, so it lacks scope 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?

The description provides no guidance on when to use this tool versus alternatives like add_version_milestone or get_version_milestone_list. It does not mention prerequisites, exclusions, or typical scenarios, leaving the agent without decision criteria.

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

update_watchingC

Updates an existing watch note

ParametersJSON Schema
NameRequiredDescriptionDefault
noteYesUpdated note for the watch
watchIdYesWatch ID

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description must disclose behavioral traits, but it only says 'Updates' without explaining side effects, permissions, error conditions, or whether the note is overwritten or merged. This is a significant gap for a mutation tool.

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

Conciseness4/5

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

The description is a single, short sentence that front-loads the core action. No wasted words, though it might have been slightly more informative without sacrificing conciseness.

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 2-parameter update tool with full schema coverage, the description is minimally viable but lacks behavioral context (e.g., what happens on success/failure, whether it requires an existing watch). It does not fully cover the tool's context.

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%, so the schema documents both parameters. The description adds no additional meaning about parameters, but the baseline of 3 applies because the schema handles the heavy lifting.

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 ('Updates') and resource ('existing watch note'), and the name 'update_watching' aligns with this. It is distinguishable from sibling tools like 'add_watching' and 'mark_watching_as_read' by the focus on updating an existing note, though 'watch note' is not fully defined.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives such as 'add_watching' or 'mark_watching_as_read'. The context is implied only by the name and description, with no explicit exclusions or prerequisites.

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

update_wikiB

Updates an existing wiki page

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoName of the wiki page
wikiIdYesWiki ID
contentNoContent of the wiki page
mailNotifyNoWhether to send notification emails (default: false)

TDQS

B3.2/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 full burden. It only states the basic mutation operation without disclosing side effects (e.g., mailNotify behavior), permission requirements, failure cases, or whether it performs a partial or full update.

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 words. It is front-loaded and immediately communicates the core action and target.

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

Completeness2/5

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

For a mutation tool with 4 parameters and no annotations or output schema, this one-line description is inadequate. It does not explain which attributes can be updated or the implications of the update, leaving the agent to infer from parameters alone.

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

Parameters3/5

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

Schema description coverage is 100%, with each parameter (name, wikiId, content, mailNotify) having a description. The tool description adds no parameter-specific meaning, so the baseline of 3 is appropriate.

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 the specific verb 'Updates' and identifies the resource as an 'existing wiki page', clearly distinguishing it from sibling tools like add_wiki. It conveys both the action and the scope (existing entity).

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It does not mention add_wiki for creation or get_wiki for reading, nor any conditions that would make this tool inappropriate.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 62 tool updatesv0.15.1
    • Addedadd_issue
    • Addedadd_issue_comment
    • Addedadd_project
    • Addedadd_pull_request
    • Addedadd_pull_request_comment
    • Addedadd_related_issue
    • Addedadd_version_milestone
    • Addedadd_watching
    • Addedadd_wiki
    • AddedaddDocument
    • Addedcount_issues
    • Addedcount_notifications
    • Addeddelete_issue
    • Addeddelete_project
    • Addeddelete_version
    • Addeddelete_watching
    • Addedget_categories
    • Addedget_custom_fields
    • Addedget_document
    • Addedget_document_tree
    • Addedget_documents
    • Addedget_git_repositories
    • Addedget_git_repository
    • Addedget_issue
    • Addedget_issue_comments
    • Addedget_issue_types
    • Addedget_issues
    • Changedget_myself3 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / organization
        Removed value: -{
        -  "description": "Optional organization name. Use list_organizations to inspect available organizations.",
        -  "type": "string"
        -}
    • Addedget_notifications
    • Addedget_priorities
    • Addedget_project
    • Addedget_project_list
    • Addedget_project_users
    • Addedget_pull_request
    • Changedget_pull_request_comments3 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / organization
        Removed value: -{
        -  "description": "Optional organization name. Use list_organizations to inspect available organizations.",
        -  "type": "string"
        -}
    • Addedget_pull_requests
    • Addedget_pull_requests_count
    • Addedget_related_issues
    • Changedget_resolutions3 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / organization
        Removed value: -{
        -  "description": "Optional organization name. Use list_organizations to inspect available organizations.",
        -  "type": "string"
        -}
    • Addedget_space
    • Addedget_space_activities
    • Addedget_user_recent_updates
    • Addedget_user_stars_count
    • Addedget_users
    • Addedget_version_milestone_list
    • Addedget_watching_list_count
    • Addedget_watching_list_items
    • Addedget_wiki
    • Addedget_wiki_pages
    • Changedget_wikis_count3 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / organization
        Removed value: -{
        -  "description": "Optional organization name. Use list_organizations to inspect available organizations.",
        -  "type": "string"
        -}
    • Addedmark_notification_as_read
    • Addedmark_watching_as_read
    • Addedremove_related_issue
    • Addedreset_unread_notification_count
    • Addedupdate_issue
    • Addedupdate_issue_comment
    • Changedupdate_project3 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / organization
        Removed value: -{
        -  "description": "Optional organization name. Use list_organizations to inspect available organizations.",
        -  "type": "string"
        -}
    • Changedupdate_pull_request3 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / organization
        Removed value: -{
        -  "description": "Optional organization name. Use list_organizations to inspect available organizations.",
        -  "type": "string"
        -}
    • Addedupdate_pull_request_comment
    • Changedupdate_version_milestone3 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / organization
        Removed value: -{
        -  "description": "Optional organization name. Use list_organizations to inspect available organizations.",
        -  "type": "string"
        -}
    • Addedupdate_watching
    • Addedupdate_wiki
  2. 52 tool updatesv0.13.1
    • Removedadd_issue
    • Removedadd_issue_comment
    • Removedadd_project
    • Removedadd_pull_request
    • Removedadd_pull_request_comment
    • Removedadd_version_milestone
    • Removedadd_watching
    • Removedadd_wiki
    • RemovedaddDocument
    • Removedcount_issues
    • Removedcount_notifications
    • Removeddelete_issue
    • Removeddelete_project
    • Removeddelete_version
    • Removeddelete_watching
    • Removedget_categories
    • Removedget_custom_fields
    • Removedget_document
    • Removedget_document_tree
    • Removedget_documents
    • Removedget_git_repositories
    • Removedget_git_repository
    • Removedget_issue
    • Removedget_issue_comments
    • Removedget_issue_types
    • Removedget_issues
    • Removedget_notifications
    • Removedget_priorities
    • Removedget_project
    • Removedget_project_list
    • Removedget_project_users
    • Removedget_pull_request
    • Removedget_pull_requests
    • Removedget_pull_requests_count
    • Removedget_space
    • Removedget_space_activities
    • Removedget_user_recent_updates
    • Removedget_user_stars_count
    • Removedget_users
    • Removedget_version_milestone_list
    • Removedget_watching_list_count
    • Removedget_watching_list_items
    • Removedget_wiki
    • Removedget_wiki_pages
    • Removedlist_organizations
    • Removedmark_notification_as_read
    • Removedmark_watching_as_read
    • Removedreset_unread_notification_count
    • Removedupdate_issue
    • Removedupdate_pull_request_comment
    • Removedupdate_watching
    • Removedupdate_wiki
  3. 1 tool updatev0.13.0
    • Addedget_project_users
  4. 2 tool updatesv0.11.1
    • Changedadd_issue2 fields changed
      • changedInput schema / properties / customFields / items / properties / value / anyOf
        Previous value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "items": {
        -      "type": "number"
        -    },
        -    "type": "array"
        -  }
        -]New value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "number"
        +  },
        +  {
        +    "items": {
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "items": {
        +      "type": "number"
        +    },
        +    "type": "array"
        +  }
        +]
      • changedInput schema / properties / customFields / items / properties / value / description
        Previous value: -"The ID(s) of the custom field item. For single-select fields, provide a number. For multi-select fields, provide an array of numbers representing the selected item IDs."New value: +"Value of the custom field. For text/date fields, provide a string. For numeric fields, provide a number. For list fields, provide an array of strings or numbers."
    • Changedupdate_issue2 fields changed
      • changedInput schema / properties / customFields / items / properties / value / anyOf
        Previous value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "items": {
        -      "type": "number"
        -    },
        -    "type": "array"
        -  }
        -]New value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "number"
        +  },
        +  {
        +    "items": {
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "items": {
        +      "type": "number"
        +    },
        +    "type": "array"
        +  }
        +]
      • changedInput schema / properties / customFields / items / properties / value / description
        Previous value: -"The ID(s) of the custom field item. For single-select fields, provide a number. For multi-select fields, provide an array of numbers representing the selected item IDs."New value: +"Value of the custom field. For text/date fields, provide a string. For numeric fields, provide a number. For list fields, provide an array of strings or numbers."
  5. 58 tool updatesv0.11.0
    • Changedadd_issue1 field changed
      • addedInput schema / properties / organization
        Added value: +{
        +  "description": "Optional organization name. Use list_organizations to inspect available organizations.",
        +  "type": "string"
        +}
    • Changedadd_issue_comment1 field changed
      • addedInput schema / properties / organization
        Added value: +{
        +  "description": "Optional organization name. Use list_organizations to inspect available organizations.",
        +  "type": "string"
        +}
    • Changedadd_project1 field changed
      • addedInput schema / properties / organization
        Added value: +{
        +  "description": "Optional organization name. Use list_organizations to inspect available organizations.",
        +  "type": "string"
        +}
    • Changedadd_pull_request1 field changed
      • addedInput schema / properties / organization
        Added value: +{
        +  "description": "Optional organization name. Use list_organizations to inspect available organizations.",
        +  "type": "string"
        +}
    • Changedadd_pull_request_comment1 field changed
      • addedInput schema / properties / organization
        Added value: +{
        +  "description": "Optional organization name. Use list_organizations to inspect available organizations.",
        +  "type": "string"
        +}
    • Changedadd_version_milestone1 field changed
      • addedInput schema / properties / organization
        Added value: +{
        +  "description": "Optional organization name. Use list_organizations to inspect available organizations.",
        +  "type": "string"
        +}
    • Changedadd_watching1 field changed
      • addedInput schema / properties / organization
        Added value: +{
        +  "description": "Optional organization name. Use list_organizations to inspect available organizations.",
        +  "type": "string"
        +}
    • Changedadd_wiki1 field changed
      • addedInput schema / properties / organization
        Added value: +{
        +  "description": "Optional organization name. Use list_organizations to inspect available organizations.",
        +  "type": "string"
        +}
    • AddedaddDocument
    • Changedcount_issues1 field changed
      • addedInput schema / properties / organization
        Added value: +{
        +  "description": "Optional organization name. Use list_organizations to inspect available organizations.",
        +  "type": "string"
        +}
    • Changedcount_notifications1 field changed
      • addedInput schema / properties / organization
        Added value: +{
        +  "description": "Optional organization name. Use list_organizations to inspect available organizations.",
        +  "type": "string"
        +}
    • Changeddelete_issue1 field changed
      • addedInput schema / properties / organization
        Added value: +{
        +  "description": "Optional organization name. Use list_organizations to inspect available organizations.",
        +  "type": "string"
        +}
    • Changeddelete_project1 field changed
      • addedInput schema / properties / organization
        Added value: +{
        +  "description": "Optional organization name. Use list_organizations to inspect available organizations.",
        +  "type": "string"
        +}
    • Changeddelete_version1 field changed
      • addedInput schema / properties / organization
        Added value: +{
        +  "description": "Optional organization name. Use list_organizations to inspect available organizations.",
        +  "type": "string"
        +}
    • Changeddelete_watching1 field changed
      • addedInput schema / properties / organization
        Added value: +{
        +  "description": "Optional organization name. Use list_organizations to inspect available organizations.",
        +  "type": "string"
        +}
    • Changedget_categories1 field changed
      • addedInput schema / properties / organization
        Added value: +{
        +  "description": "Optional organization name. Use list_organizations to inspect available organizations.",
        +  "type": "string"
        +}
    • Changedget_custom_fields1 field changed
      • addedInput schema / properties / organization
        Added value: +{
        +  "description": "Optional organization name. Use list_organizations to inspect available organizations.",
        +  "type": "string"
        +}
    • Changedget_document1 field changed
      • addedInput schema / properties / organization
        Added value: +{
        +  "description": "Optional organization name. Use list_organizations to inspect available organizations.",
        +  "type": "string"
        +}
    • Changedget_document_tree1 field changed
      • addedInput schema / properties / organization
        Added value: +{
        +  "description": "Optional organization name. Use list_organizations to inspect available organizations.",
        +  "type": "string"
        +}
    • Changedget_documents1 field changed
      • addedInput schema / properties / organization
        Added value: +{
        +  "description": "Optional organization name. Use list_organizations to inspect available organizations.",
        +  "type": "string"
        +}
    • Changedget_git_repositories1 field changed
      • addedInput schema / properties / organization
        Added value: +{
        +  "description": "Optional organization name. Use list_organizations to inspect available organizations.",
        +  "type": "string"
        +}
    • Changedget_git_repository1 field changed
      • addedInput schema / properties / organization
        Added value: +{
        +  "description": "Optional organization name. Use list_organizations to inspect available organizations.",
        +  "type": "string"
        +}
    • Changedget_issue1 field changed
      • addedInput schema / properties / organization
        Added value: +{
        +  "description": "Optional organization name. Use list_organizations to inspect available organizations.",
        +  "type": "string"
        +}
    • Changedget_issue_comments1 field changed
      • addedInput schema / properties / organization
        Added value: +{
        +  "description": "Optional organization name. Use list_organizations to inspect available organizations.",
        +  "type": "string"
        +}
    • Changedget_issue_types1 field changed
      • addedInput schema / properties / organization
        Added value: +{
        +  "description": "Optional organization name. Use list_organizations to inspect available organizations.",
        +  "type": "string"
        +}
    • Changedget_issues1 field changed
      • addedInput schema / properties / organization
        Added value: +{
        +  "description": "Optional organization name. Use list_organizations to inspect available organizations.",
        +  "type": "string"
        +}
    • Changedget_myself2 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / organization
        Added value: +{
        +  "description": "Optional organization name. Use list_organizations to inspect available organizations.",
        +  "type": "string"
        +}
    • Changedget_notifications1 field changed
      • addedInput schema / properties / organization
        Added value: +{
        +  "description": "Optional organization name. Use list_organizations to inspect available organizations.",
        +  "type": "string"
        +}
    • Changedget_priorities2 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / organization
        Added value: +{
        +  "description": "Optional organization name. Use list_organizations to inspect available organizations.",
        +  "type": "string"
        +}
    • Changedget_project1 field changed
      • addedInput schema / properties / organization
        Added value: +{
        +  "description": "Optional organization name. Use list_organizations to inspect available organizations.",
        +  "type": "string"
        +}
    • Changedget_project_list1 field changed
      • addedInput schema / properties / organization
        Added value: +{
        +  "description": "Optional organization name. Use list_organizations to inspect available organizations.",
        +  "type": "string"
        +}
    • Changedget_pull_request1 field changed
      • addedInput schema / properties / organization
        Added value: +{
        +  "description": "Optional organization name. Use list_organizations to inspect available organizations.",
        +  "type": "string"
        +}
    • Changedget_pull_request_comments1 field changed
      • addedInput schema / properties / organization
        Added value: +{
        +  "description": "Optional organization name. Use list_organizations to inspect available organizations.",
        +  "type": "string"
        +}
    • Changedget_pull_requests1 field changed
      • addedInput schema / properties / organization
        Added value: +{
        +  "description": "Optional organization name. Use list_organizations to inspect available organizations.",
        +  "type": "string"
        +}
    • Changedget_pull_requests_count1 field changed
      • addedInput schema / properties / organization
        Added value: +{
        +  "description": "Optional organization name. Use list_organizations to inspect available organizations.",
        +  "type": "string"
        +}
    • Changedget_resolutions2 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / organization
        Added value: +{
        +  "description": "Optional organization name. Use list_organizations to inspect available organizations.",
        +  "type": "string"
        +}
    • Changedget_space2 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / organization
        Added value: +{
        +  "description": "Optional organization name. Use list_organizations to inspect available organizations.",
        +  "type": "string"
        +}
    • Addedget_space_activities
    • Addedget_user_recent_updates
    • Addedget_user_stars_count
    • Changedget_users2 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / organization
        Added value: +{
        +  "description": "Optional organization name. Use list_organizations to inspect available organizations.",
        +  "type": "string"
        +}
    • Changedget_version_milestone_list1 field changed
      • addedInput schema / properties / organization
        Added value: +{
        +  "description": "Optional organization name. Use list_organizations to inspect available organizations.",
        +  "type": "string"
        +}
    • Changedget_watching_list_count1 field changed
      • addedInput schema / properties / organization
        Added value: +{
        +  "description": "Optional organization name. Use list_organizations to inspect available organizations.",
        +  "type": "string"
        +}
    • Changedget_watching_list_items1 field changed
      • addedInput schema / properties / organization
        Added value: +{
        +  "description": "Optional organization name. Use list_organizations to inspect available organizations.",
        +  "type": "string"
        +}
    • Changedget_wiki1 field changed
      • addedInput schema / properties / organization
        Added value: +{
        +  "description": "Optional organization name. Use list_organizations to inspect available organizations.",
        +  "type": "string"
        +}
    • Changedget_wiki_pages1 field changed
      • addedInput schema / properties / organization
        Added value: +{
        +  "description": "Optional organization name. Use list_organizations to inspect available organizations.",
        +  "type": "string"
        +}
    • Changedget_wikis_count1 field changed
      • addedInput schema / properties / organization
        Added value: +{
        +  "description": "Optional organization name. Use list_organizations to inspect available organizations.",
        +  "type": "string"
        +}
    • Addedlist_organizations
    • Changedmark_notification_as_read1 field changed
      • addedInput schema / properties / organization
        Added value: +{
        +  "description": "Optional organization name. Use list_organizations to inspect available organizations.",
        +  "type": "string"
        +}
    • Changedmark_watching_as_read1 field changed
      • addedInput schema / properties / organization
        Added value: +{
        +  "description": "Optional organization name. Use list_organizations to inspect available organizations.",
        +  "type": "string"
        +}
    • Changedreset_unread_notification_count2 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / organization
        Added value: +{
        +  "description": "Optional organization name. Use list_organizations to inspect available organizations.",
        +  "type": "string"
        +}
    • Changedupdate_issue1 field changed
      • addedInput schema / properties / organization
        Added value: +{
        +  "description": "Optional organization name. Use list_organizations to inspect available organizations.",
        +  "type": "string"
        +}
    • Changedupdate_project1 field changed
      • addedInput schema / properties / organization
        Added value: +{
        +  "description": "Optional organization name. Use list_organizations to inspect available organizations.",
        +  "type": "string"
        +}
    • Changedupdate_pull_request1 field changed
      • addedInput schema / properties / organization
        Added value: +{
        +  "description": "Optional organization name. Use list_organizations to inspect available organizations.",
        +  "type": "string"
        +}
    • Changedupdate_pull_request_comment1 field changed
      • addedInput schema / properties / organization
        Added value: +{
        +  "description": "Optional organization name. Use list_organizations to inspect available organizations.",
        +  "type": "string"
        +}
    • Changedupdate_version_milestone1 field changed
      • addedInput schema / properties / organization
        Added value: +{
        +  "description": "Optional organization name. Use list_organizations to inspect available organizations.",
        +  "type": "string"
        +}
    • Changedupdate_watching1 field changed
      • addedInput schema / properties / organization
        Added value: +{
        +  "description": "Optional organization name. Use list_organizations to inspect available organizations.",
        +  "type": "string"
        +}
    • Changedupdate_wiki1 field changed
      • addedInput schema / properties / organization
        Added value: +{
        +  "description": "Optional organization name. Use list_organizations to inspect available organizations.",
        +  "type": "string"
        +}
  6. 45 tool updatesv1.0.0
    • Changedadd_issue3 fields changed
      • removedInput schema / properties / customFieldId
        Removed value: -{
        -  "description": "Custom field IDs",
        -  "items": {
        -    "type": "number"
        -  },
        -  "type": "array"
        -}
      • removedInput schema / properties / customFieldValue
        Removed value: -{
        -  "description": "Values for custom fields",
        -  "items": {
        -    "type": "string"
        -  },
        -  "type": "array"
        -}
      • addedInput schema / properties / customFields
        Added value: +{
        +  "description": "List of custom fields to set on the issue",
        +  "items": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "id": {
        +        "description": "The ID of the custom field (e.g., 12345)",
        +        "type": "number"
        +      },
        +      "otherValue": {
        +        "description": "Other value for list type fields",
        +        "type": "string"
        +      },
        +      "value": {
        +        "anyOf": [
        +          {
        +            "type": "number"
        +          },
        +          {
        +            "items": {
        +              "type": "number"
        +            },
        +            "type": "array"
        +          }
        +        ],
        +        "description": "The ID(s) of the custom field item. For single-select fields, provide a number. For multi-select fields, provide an array of numbers representing the selected item IDs."
        +      }
        +    },
        +    "required": [
        +      "id"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
    • Changedadd_issue_comment4 fields changed
      • addedInput schema / properties / issueId
        Added value: +{
        +  "description": "The numeric ID of the issue (e.g., 12345)",
        +  "type": "number"
        +}
      • removedInput schema / properties / issueIdOrKey
        Removed value: -{
        -  "description": "Issue ID or issue key",
        -  "type": [
        -    "string",
        -    "number"
        -  ]
        -}
      • addedInput schema / properties / issueKey
        Added value: +{
        +  "description": "The key of the issue (e.g., 'PROJ-123')",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "issueIdOrKey",
        -  "content"
        -]New value: +[
        +  "content"
        +]
    • Changedadd_pull_request7 fields changed
      • addedInput schema / properties / projectId
        Added value: +{
        +  "description": "The numeric ID of the project (e.g., 12345)",
        +  "type": "number"
        +}
      • removedInput schema / properties / projectIdOrKey
        Removed value: -{
        -  "description": "Project ID or project key",
        -  "type": [
        -    "string",
        -    "number"
        -  ]
        -}
      • addedInput schema / properties / projectKey
        Added value: +{
        +  "description": "The key of the project (e.g., 'PROJECT')",
        +  "type": "string"
        +}
      • addedInput schema / properties / repoId
        Added value: +{
        +  "description": "Repository ID",
        +  "type": "number"
        +}
      • removedInput schema / properties / repoIdOrName
        Removed value: -{
        -  "description": "Repository ID or name",
        -  "type": "string"
        -}
      • addedInput schema / properties / repoName
        Added value: +{
        +  "description": "Repository name",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "projectIdOrKey",
        -  "repoIdOrName",
        -  "summary",
        -  "description",
        -  "base",
        -  "branch"
        -]New value: +[
        +  "summary",
        +  "description",
        +  "base",
        +  "branch"
        +]
    • Changedadd_pull_request_comment7 fields changed
      • addedInput schema / properties / projectId
        Added value: +{
        +  "description": "The numeric ID of the project (e.g., 12345)",
        +  "type": "number"
        +}
      • removedInput schema / properties / projectIdOrKey
        Removed value: -{
        -  "description": "Project ID or project key",
        -  "type": [
        -    "string",
        -    "number"
        -  ]
        -}
      • addedInput schema / properties / projectKey
        Added value: +{
        +  "description": "The key of the project (e.g., 'PROJECT')",
        +  "type": "string"
        +}
      • addedInput schema / properties / repoId
        Added value: +{
        +  "description": "Repository ID",
        +  "type": "number"
        +}
      • removedInput schema / properties / repoIdOrName
        Removed value: -{
        -  "description": "Repository ID or name",
        -  "type": "string"
        -}
      • addedInput schema / properties / repoName
        Added value: +{
        +  "description": "Repository name",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "projectIdOrKey",
        -  "repoIdOrName",
        -  "number",
        -  "content"
        -]New value: +[
        +  "number",
        +  "content"
        +]
    • Addedadd_version_milestone
    • Addedadd_watching
    • Changedcount_issues1 field changed
      • addedInput schema / properties / customFields
        Added value: +{
        +  "description": "Custom field filters (text, numeric, date, or list)",
        +  "items": {
        +    "anyOf": [
        +      {
        +        "additionalProperties": false,
        +        "description": "Text custom field filter",
        +        "properties": {
        +          "id": {
        +            "description": "Custom field ID (e.g., 12345)",
        +            "type": "number"
        +          },
        +          "type": {
        +            "const": "text",
        +            "type": "string"
        +          },
        +          "value": {
        +            "description": "Keyword to match for the custom field",
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "type",
        +          "id",
        +          "value"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "additionalProperties": false,
        +        "description": "Numeric custom field filter",
        +        "properties": {
        +          "id": {
        +            "description": "Custom field ID (e.g., 12345)",
        +            "type": "number"
        +          },
        +          "max": {
        +            "description": "Maximum numeric value (inclusive)",
        +            "type": "number"
        +          },
        +          "min": {
        +            "description": "Minimum numeric value (inclusive)",
        +            "type": "number"
        +          },
        +          "type": {
        +            "const": "numeric",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "type",
        +          "id"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "additionalProperties": false,
        +        "description": "Date custom field filter",
        +        "properties": {
        +          "id": {
        +            "description": "Custom field ID (e.g., 12345)",
        +            "type": "number"
        +          },
        +          "max": {
        +            "description": "End date (yyyy-MM-dd)",
        +            "type": "string"
        +          },
        +          "min": {
        +            "description": "Start date (yyyy-MM-dd)",
        +            "type": "string"
        +          },
        +          "type": {
        +            "const": "date",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "type",
        +          "id"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "additionalProperties": false,
        +        "description": "List custom field filter",
        +        "properties": {
        +          "id": {
        +            "description": "Custom field ID (e.g., 12345)",
        +            "type": "number"
        +          },
        +          "type": {
        +            "const": "list",
        +            "type": "string"
        +          },
        +          "value": {
        +            "anyOf": [
        +              {
        +                "type": "number"
        +              },
        +              {
        +                "items": {
        +                  "type": "number"
        +                },
        +                "minItems": 1,
        +                "type": "array"
        +              }
        +            ],
        +            "description": "Value ID(s) to match for list-type custom field"
        +          }
        +        },
        +        "required": [
        +          "type",
        +          "id",
        +          "value"
        +        ],
        +        "type": "object"
        +      }
        +    ]
        +  },
        +  "type": "array"
        +}
    • Changeddelete_issue4 fields changed
      • addedInput schema / properties / issueId
        Added value: +{
        +  "description": "The numeric ID of the issue (e.g., 12345)",
        +  "type": "number"
        +}
      • removedInput schema / properties / issueIdOrKey
        Removed value: -{
        -  "description": "Issue ID or issue key",
        -  "type": [
        -    "string",
        -    "number"
        -  ]
        -}
      • addedInput schema / properties / issueKey
        Added value: +{
        +  "description": "The key of the issue (e.g., 'PROJ-123')",
        +  "type": "string"
        +}
      • removedInput schema / required
        Removed value: -[
        -  "issueIdOrKey"
        -]
    • Changeddelete_project4 fields changed
      • addedInput schema / properties / projectId
        Added value: +{
        +  "description": "The numeric ID of the project (e.g., 12345)",
        +  "type": "number"
        +}
      • removedInput schema / properties / projectIdOrKey
        Removed value: -{
        -  "description": "Project ID or project key",
        -  "type": [
        -    "string",
        -    "number"
        -  ]
        -}
      • addedInput schema / properties / projectKey
        Added value: +{
        +  "description": "The key of the project (e.g., 'PROJECT')",
        +  "type": "string"
        +}
      • removedInput schema / required
        Removed value: -[
        -  "projectIdOrKey"
        -]
    • Addeddelete_version
    • Addeddelete_watching
    • Changedget_categories4 fields changed
      • addedInput schema / properties / projectId
        Added value: +{
        +  "description": "The numeric ID of the project (e.g., 12345)",
        +  "type": "number"
        +}
      • removedInput schema / properties / projectIdOrKey
        Removed value: -{
        -  "description": "Project ID or project key",
        -  "type": [
        -    "string",
        -    "number"
        -  ]
        -}
      • addedInput schema / properties / projectKey
        Added value: +{
        +  "description": "The numeric ID of the project (e.g., 12345)",
        +  "type": "string"
        +}
      • removedInput schema / required
        Removed value: -[
        -  "projectIdOrKey"
        -]
    • Addedget_custom_fields
    • Addedget_document
    • Addedget_document_tree
    • Addedget_documents
    • Changedget_git_repositories4 fields changed
      • addedInput schema / properties / projectId
        Added value: +{
        +  "description": "The numeric ID of the project (e.g., 12345)",
        +  "type": "number"
        +}
      • removedInput schema / properties / projectIdOrKey
        Removed value: -{
        -  "description": "Project ID or project key",
        -  "type": [
        -    "string",
        -    "number"
        -  ]
        -}
      • addedInput schema / properties / projectKey
        Added value: +{
        +  "description": "The key of the project (e.g., 'PROJECT')",
        +  "type": "string"
        +}
      • removedInput schema / required
        Removed value: -[
        -  "projectIdOrKey"
        -]
    • Changedget_git_repository7 fields changed
      • addedInput schema / properties / projectId
        Added value: +{
        +  "description": "The numeric ID of the project (e.g., 12345)",
        +  "type": "number"
        +}
      • removedInput schema / properties / projectIdOrKey
        Removed value: -{
        -  "description": "Project ID or project key",
        -  "type": [
        -    "string",
        -    "number"
        -  ]
        -}
      • addedInput schema / properties / projectKey
        Added value: +{
        +  "description": "The key of the project (e.g., 'PROJECT')",
        +  "type": "string"
        +}
      • addedInput schema / properties / repoId
        Added value: +{
        +  "description": "Repository ID",
        +  "type": "number"
        +}
      • removedInput schema / properties / repoIdOrName
        Removed value: -{
        -  "description": "Repository ID or name",
        -  "type": "string"
        -}
      • addedInput schema / properties / repoName
        Added value: +{
        +  "description": "Repository name",
        +  "type": "string"
        +}
      • removedInput schema / required
        Removed value: -[
        -  "projectIdOrKey",
        -  "repoIdOrName"
        -]
    • Changedget_issue4 fields changed
      • addedInput schema / properties / issueId
        Added value: +{
        +  "description": "The numeric ID of the issue (e.g., 12345)",
        +  "type": "number"
        +}
      • removedInput schema / properties / issueIdOrKey
        Removed value: -{
        -  "description": "Issue ID or issue key",
        -  "type": [
        -    "string",
        -    "number"
        -  ]
        -}
      • addedInput schema / properties / issueKey
        Added value: +{
        +  "description": "The key of the issue (e.g., 'PROJ-123')",
        +  "type": "string"
        +}
      • removedInput schema / required
        Removed value: -[
        -  "issueIdOrKey"
        -]
    • Changedget_issue_comments4 fields changed
      • addedInput schema / properties / issueId
        Added value: +{
        +  "description": "The numeric ID of the issue (e.g., 12345)",
        +  "type": "number"
        +}
      • removedInput schema / properties / issueIdOrKey
        Removed value: -{
        -  "description": "Issue ID or issue key",
        -  "type": [
        -    "string",
        -    "number"
        -  ]
        -}
      • addedInput schema / properties / issueKey
        Added value: +{
        +  "description": "The key of the issue (e.g., 'PROJ-123')",
        +  "type": "string"
        +}
      • removedInput schema / required
        Removed value: -[
        -  "issueIdOrKey"
        -]
    • Changedget_issue_types4 fields changed
      • addedInput schema / properties / projectId
        Added value: +{
        +  "description": "The numeric ID of the project (e.g., 12345)",
        +  "type": "number"
        +}
      • removedInput schema / properties / projectIdOrKey
        Removed value: -{
        -  "description": "Project ID or project key",
        -  "type": [
        -    "string",
        -    "number"
        -  ]
        -}
      • addedInput schema / properties / projectKey
        Added value: +{
        +  "description": "The key of the project (e.g., 'PROJECT')",
        +  "type": "string"
        +}
      • removedInput schema / required
        Removed value: -[
        -  "projectIdOrKey"
        -]
    • Changedget_issues1 field changed
      • addedInput schema / properties / customFields
        Added value: +{
        +  "description": "Custom field filters (text, numeric, date, or list)",
        +  "items": {
        +    "anyOf": [
        +      {
        +        "additionalProperties": false,
        +        "description": "Text custom field filter",
        +        "properties": {
        +          "id": {
        +            "description": "Custom field ID (e.g., 12345)",
        +            "type": "number"
        +          },
        +          "type": {
        +            "const": "text",
        +            "type": "string"
        +          },
        +          "value": {
        +            "description": "Keyword to match for the custom field",
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "type",
        +          "id",
        +          "value"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "additionalProperties": false,
        +        "description": "Numeric custom field filter",
        +        "properties": {
        +          "id": {
        +            "description": "Custom field ID (e.g., 12345)",
        +            "type": "number"
        +          },
        +          "max": {
        +            "description": "Maximum numeric value (inclusive)",
        +            "type": "number"
        +          },
        +          "min": {
        +            "description": "Minimum numeric value (inclusive)",
        +            "type": "number"
        +          },
        +          "type": {
        +            "const": "numeric",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "type",
        +          "id"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "additionalProperties": false,
        +        "description": "Date custom field filter",
        +        "properties": {
        +          "id": {
        +            "description": "Custom field ID (e.g., 12345)",
        +            "type": "number"
        +          },
        +          "max": {
        +            "description": "End date (yyyy-MM-dd)",
        +            "type": "string"
        +          },
        +          "min": {
        +            "description": "Start date (yyyy-MM-dd)",
        +            "type": "string"
        +          },
        +          "type": {
        +            "const": "date",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "type",
        +          "id"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "additionalProperties": false,
        +        "description": "List custom field filter",
        +        "properties": {
        +          "id": {
        +            "description": "Custom field ID (e.g., 12345)",
        +            "type": "number"
        +          },
        +          "type": {
        +            "const": "list",
        +            "type": "string"
        +          },
        +          "value": {
        +            "anyOf": [
        +              {
        +                "type": "number"
        +              },
        +              {
        +                "items": {
        +                  "type": "number"
        +                },
        +                "minItems": 1,
        +                "type": "array"
        +              }
        +            ],
        +            "description": "Value ID(s) to match for list-type custom field"
        +          }
        +        },
        +        "required": [
        +          "type",
        +          "id",
        +          "value"
        +        ],
        +        "type": "object"
        +      }
        +    ]
        +  },
        +  "type": "array"
        +}
    • Changedget_myself1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedget_notifications2 fields changed
      • removedInput schema / properties / alreadyRead
        Removed value: -{
        -  "description": "Whether to include already read notifications",
        -  "type": "boolean"
        -}
      • removedInput schema / properties / resourceAlreadyRead
        Removed value: -{
        -  "description": "Whether to include notifications for already read resources",
        -  "type": "boolean"
        -}
    • Changedget_priorities1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedget_project4 fields changed
      • addedInput schema / properties / projectId
        Added value: +{
        +  "description": "The numeric ID of the project (e.g., 12345)",
        +  "type": "number"
        +}
      • removedInput schema / properties / projectIdOrKey
        Removed value: -{
        -  "description": "Project ID or project key",
        -  "type": [
        -    "string",
        -    "number"
        -  ]
        -}
      • addedInput schema / properties / projectKey
        Added value: +{
        +  "description": "The key of the project (e.g., 'PROJECT')",
        +  "type": "string"
        +}
      • removedInput schema / required
        Removed value: -[
        -  "projectIdOrKey"
        -]
    • Changedget_pull_request7 fields changed
      • addedInput schema / properties / projectId
        Added value: +{
        +  "description": "The numeric ID of the project (e.g., 12345)",
        +  "type": "number"
        +}
      • removedInput schema / properties / projectIdOrKey
        Removed value: -{
        -  "description": "Project ID or project key",
        -  "type": [
        -    "string",
        -    "number"
        -  ]
        -}
      • addedInput schema / properties / projectKey
        Added value: +{
        +  "description": "The key of the project (e.g., 'PROJECT')",
        +  "type": "string"
        +}
      • addedInput schema / properties / repoId
        Added value: +{
        +  "description": "Repository ID",
        +  "type": "number"
        +}
      • removedInput schema / properties / repoIdOrName
        Removed value: -{
        -  "description": "Repository ID or name",
        -  "type": "string"
        -}
      • addedInput schema / properties / repoName
        Added value: +{
        +  "description": "Repository name",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "projectIdOrKey",
        -  "repoIdOrName",
        -  "number"
        -]New value: +[
        +  "number"
        +]
    • Changedget_pull_request_comments7 fields changed
      • addedInput schema / properties / projectId
        Added value: +{
        +  "description": "The numeric ID of the project (e.g., 12345)",
        +  "type": "number"
        +}
      • removedInput schema / properties / projectIdOrKey
        Removed value: -{
        -  "description": "Project ID or project key",
        -  "type": [
        -    "string",
        -    "number"
        -  ]
        -}
      • addedInput schema / properties / projectKey
        Added value: +{
        +  "description": "The key of the project (e.g., 'PROJECT')",
        +  "type": "string"
        +}
      • addedInput schema / properties / repoId
        Added value: +{
        +  "description": "Repository ID",
        +  "type": "number"
        +}
      • removedInput schema / properties / repoIdOrName
        Removed value: -{
        -  "description": "Repository ID or name",
        -  "type": "string"
        -}
      • addedInput schema / properties / repoName
        Added value: +{
        +  "description": "Repository ID",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "projectIdOrKey",
        -  "repoIdOrName",
        -  "number"
        -]New value: +[
        +  "number"
        +]
    • Changedget_pull_requests7 fields changed
      • addedInput schema / properties / projectId
        Added value: +{
        +  "description": "The numeric ID of the project (e.g., 12345)",
        +  "type": "number"
        +}
      • removedInput schema / properties / projectIdOrKey
        Removed value: -{
        -  "description": "Project ID or project key",
        -  "type": [
        -    "string",
        -    "number"
        -  ]
        -}
      • addedInput schema / properties / projectKey
        Added value: +{
        +  "description": "The key of the project (e.g., 'PROJECT')",
        +  "type": "string"
        +}
      • addedInput schema / properties / repoId
        Added value: +{
        +  "description": "Repository ID",
        +  "type": "number"
        +}
      • removedInput schema / properties / repoIdOrName
        Removed value: -{
        -  "description": "Repository ID or name",
        -  "type": "string"
        -}
      • addedInput schema / properties / repoName
        Added value: +{
        +  "description": "Repository name",
        +  "type": "string"
        +}
      • removedInput schema / required
        Removed value: -[
        -  "projectIdOrKey",
        -  "repoIdOrName"
        -]
    • Changedget_pull_requests_count7 fields changed
      • addedInput schema / properties / projectId
        Added value: +{
        +  "description": "The numeric ID of the project (e.g., 12345)",
        +  "type": "number"
        +}
      • removedInput schema / properties / projectIdOrKey
        Removed value: -{
        -  "description": "Project ID or project key",
        -  "type": [
        -    "string",
        -    "number"
        -  ]
        -}
      • addedInput schema / properties / projectKey
        Added value: +{
        +  "description": "The key of the project (e.g., 'PROJECT')",
        +  "type": "string"
        +}
      • addedInput schema / properties / repoId
        Added value: +{
        +  "description": "Repository ID",
        +  "type": "number"
        +}
      • removedInput schema / properties / repoIdOrName
        Removed value: -{
        -  "description": "Repository ID or name",
        -  "type": "string"
        -}
      • addedInput schema / properties / repoName
        Added value: +{
        +  "description": "Repository name",
        +  "type": "string"
        +}
      • removedInput schema / required
        Removed value: -[
        -  "projectIdOrKey",
        -  "repoIdOrName"
        -]
    • Changedget_resolutions1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedget_space1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedget_users1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Addedget_version_milestone_list
    • Changedget_wiki_pages4 fields changed
      • addedInput schema / properties / projectId
        Added value: +{
        +  "description": "The numeric ID of the project (e.g., 12345)",
        +  "type": "number"
        +}
      • removedInput schema / properties / projectIdOrKey
        Removed value: -{
        -  "description": "Project ID or project key",
        -  "type": [
        -    "string",
        -    "number"
        -  ]
        -}
      • addedInput schema / properties / projectKey
        Added value: +{
        +  "description": "The key of the project (e.g., 'PROJECT')",
        +  "type": "string"
        +}
      • removedInput schema / required
        Removed value: -[
        -  "projectIdOrKey"
        -]
    • Changedget_wikis_count4 fields changed
      • addedInput schema / properties / projectId
        Added value: +{
        +  "description": "The numeric ID of the project (e.g., 12345)",
        +  "type": "number"
        +}
      • removedInput schema / properties / projectIdOrKey
        Removed value: -{
        -  "description": "Project ID or project key",
        -  "type": [
        -    "string",
        -    "number"
        -  ]
        -}
      • addedInput schema / properties / projectKey
        Added value: +{
        +  "description": "The key of the project (e.g., 'PROJECT')",
        +  "type": "string"
        +}
      • removedInput schema / required
        Removed value: -[
        -  "projectIdOrKey"
        -]
    • Addedmark_watching_as_read
    • Changedreset_unread_notification_count1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedupdate_issue5 fields changed
      • addedInput schema / properties / customFields
        Added value: +{
        +  "description": "List of custom fields to set on the issue",
        +  "items": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "id": {
        +        "description": "The ID of the custom field (e.g., 12345)",
        +        "type": "number"
        +      },
        +      "otherValue": {
        +        "description": "Other value for list type fields",
        +        "type": "string"
        +      },
        +      "value": {
        +        "anyOf": [
        +          {
        +            "type": "number"
        +          },
        +          {
        +            "items": {
        +              "type": "number"
        +            },
        +            "type": "array"
        +          }
        +        ],
        +        "description": "The ID(s) of the custom field item. For single-select fields, provide a number. For multi-select fields, provide an array of numbers representing the selected item IDs."
        +      }
        +    },
        +    "required": [
        +      "id"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / properties / issueId
        Added value: +{
        +  "description": "The numeric ID of the issue (e.g., 12345)",
        +  "type": "number"
        +}
      • removedInput schema / properties / issueIdOrKey
        Removed value: -{
        -  "description": "Issue ID or issue key",
        -  "type": [
        -    "string",
        -    "number"
        -  ]
        -}
      • addedInput schema / properties / issueKey
        Added value: +{
        +  "description": "The key of the issue (e.g., 'PROJ-123')",
        +  "type": "string"
        +}
      • removedInput schema / required
        Removed value: -[
        -  "issueIdOrKey"
        -]
    • Changedupdate_project4 fields changed
      • addedInput schema / properties / projectId
        Added value: +{
        +  "description": "The numeric ID of the project (e.g., 12345)",
        +  "type": "number"
        +}
      • removedInput schema / properties / projectIdOrKey
        Removed value: -{
        -  "description": "Project ID or project key",
        -  "type": [
        -    "string",
        -    "number"
        -  ]
        -}
      • addedInput schema / properties / projectKey
        Added value: +{
        +  "description": "The key of the project (e.g., 'PROJECT')",
        +  "type": "string"
        +}
      • removedInput schema / required
        Removed value: -[
        -  "projectIdOrKey"
        -]
    • Changedupdate_pull_request7 fields changed
      • addedInput schema / properties / projectId
        Added value: +{
        +  "description": "The numeric ID of the project (e.g., 12345)",
        +  "type": "number"
        +}
      • removedInput schema / properties / projectIdOrKey
        Removed value: -{
        -  "description": "Project ID or project key",
        -  "type": [
        -    "string",
        -    "number"
        -  ]
        -}
      • addedInput schema / properties / projectKey
        Added value: +{
        +  "description": "The key of the project (e.g., 'PROJECT')",
        +  "type": "string"
        +}
      • addedInput schema / properties / repoId
        Added value: +{
        +  "description": "Repository ID",
        +  "type": "number"
        +}
      • removedInput schema / properties / repoIdOrName
        Removed value: -{
        -  "description": "Repository ID or name",
        -  "type": "string"
        -}
      • addedInput schema / properties / repoName
        Added value: +{
        +  "description": "Repository name",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "projectIdOrKey",
        -  "repoIdOrName",
        -  "number"
        -]New value: +[
        +  "number"
        +]
    • Changedupdate_pull_request_comment7 fields changed
      • addedInput schema / properties / projectId
        Added value: +{
        +  "description": "The numeric ID of the project (e.g., 12345)",
        +  "type": "number"
        +}
      • removedInput schema / properties / projectIdOrKey
        Removed value: -{
        -  "description": "Project ID or project key",
        -  "type": [
        -    "string",
        -    "number"
        -  ]
        -}
      • addedInput schema / properties / projectKey
        Added value: +{
        +  "description": "The key of the project (e.g., 'PROJECT')",
        +  "type": "string"
        +}
      • addedInput schema / properties / repoId
        Added value: +{
        +  "description": "Repository ID",
        +  "type": "number"
        +}
      • removedInput schema / properties / repoIdOrName
        Removed value: -{
        -  "description": "Repository ID or name",
        -  "type": "string"
        -}
      • addedInput schema / properties / repoName
        Added value: +{
        +  "description": "Repository name",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "projectIdOrKey",
        -  "repoIdOrName",
        -  "number",
        -  "commentId",
        -  "content"
        -]New value: +[
        +  "number",
        +  "commentId",
        +  "content"
        +]
    • Addedupdate_version_milestone
    • Addedupdate_watching
    • Addedupdate_wiki
  7. 40 tool updates
    • First observedadd_issue
    • First observedadd_issue_comment
    • First observedadd_project
    • First observedadd_pull_request
    • First observedadd_pull_request_comment
    • First observedadd_wiki
    • First observedcount_issues
    • First observedcount_notifications
    • First observeddelete_issue
    • First observeddelete_project
    • First observedget_categories
    • First observedget_git_repositories
    • First observedget_git_repository
    • First observedget_issue
    • First observedget_issue_comments
    • First observedget_issue_types
    • First observedget_issues
    • First observedget_myself
    • First observedget_notifications
    • First observedget_priorities
    • First observedget_project
    • First observedget_project_list
    • First observedget_pull_request
    • First observedget_pull_request_comments
    • First observedget_pull_requests
    • First observedget_pull_requests_count
    • First observedget_resolutions
    • First observedget_space
    • First observedget_users
    • First observedget_watching_list_count
    • First observedget_watching_list_items
    • First observedget_wiki
    • First observedget_wiki_pages
    • First observedget_wikis_count
    • First observedmark_notification_as_read
    • First observedreset_unread_notification_count
    • First observedupdate_issue
    • First observedupdate_project
    • First observedupdate_pull_request
    • First observedupdate_pull_request_comment

TDQS

B3.3/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose and target: user info, pull request comments, issue resolutions, wiki count, project update, pull request update, version milestone update. No two tools overlap in functionality.

Naming Consistency4/5

Tools follow a verb_noun pattern uniformly, e.g., get_pull_request_comments, update_project. The only minor inconsistency is 'get_myself' using a pronoun instead of a specific noun, but the pattern is otherwise consistent.

Tool Count5/5

With 7 tools, the count is well-scoped for a focused server. It provides enough operations without being overwhelming, fitting the typical 3-15 range perfectly.

Completeness2/5

The tool surface is severely incomplete. It offers only read and update operations on a few specific resources, with no create, delete, or list tools for core entities like projects, issues, or wikis. Important CRUD operations are missing, leading to likely agent failures.

Maintenance

ActivityActive
ResponsivenessResponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    A Model Context Protocol server that enables Claude Code to directly interact with Redmine project management systems, supporting issue management, project operations, and search features.
    22
    9
    MIT
  • -
    license
    Not graded
    quality
    Not graded
    maintenance
    A Model Context Protocol server that enables AI agents to interact with Backlog API for managing projects, issues, wikis, Git repositories, and other Backlog features.
    -

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/nulab/backlog-mcp-server'

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