Skip to main content
Glama
dmccaffery

claude-desktop-mcp

by dmccaffery

claude-desktop-mcp

A deliberately fake MCP server for validating how Claude Desktop handles large toolsets — and how it behaves against the Amazon Bedrock AgentCore Gateway semantic-search pattern.

It exposes 108 themed "fake" tools (orders, users, files, GitHub, Slack, weather, calendar, database, email, payments, Jira, analytics, notifications, storage). None of them do real work — each returns a canned echo response — but they have realistic names, descriptions, and input schemas so the server is a faithful stand-in for a big multi-service MCP setup.

Three modes

The mode is chosen at startup via the MCP_MODE environment variable:

Mode

tools/list returns

What it validates

full (default)

all 108 catalog tools, natural names, no search tool

What Desktop does when a plain MCP server dumps a large toolset.

gateway

all 109 tools — x_amz_bedrock_agentcore_search first, then the 108 catalog tools as target___tool

What Desktop does against a faithful Amazon Bedrock AgentCore Gateway.

search

only the x_amz_bedrock_agentcore_search tool; the 108-tool catalog is hidden but stays callable

What a consuming agent does in front of a gateway: expose just search, discover the rest on demand.

gateway mode is a faithful AgentCore gateway

A real AgentCore Gateway with semantic search does not hide your tools. Its tools/list returns the entire catalog with the built-in search tool listed first. This mode mirrors that exactly:

  • Naming — every catalog tool is namespaced by its target with a triple-underscore delimiter (target___tool), e.g. payments___refund_charge.

  • Search toolx_amz_bedrock_agentcore_search takes a single { "query": "..." } argument and returns matching tool definitions (name, description, inputSchema), ranked most-relevant first, under result.structuredContent.tools — the exact shape the AWS samples read.

  • Ranking — a cheap, dependency-free BM25-lite ranker with a substring fallback stands in for real vector search. Not natural-language semantic search; just "good enough" to mimic discovery.

The catch this server is built to surface. Because the gateway lists everything, semantic search saves no context on its own. In the AWS reference agents (Strands, LangGraph) the agent runtime exposes only the search tool to the model and then dynamically re-injects the discovered tools into the model's tool list before the next turn. A passive MCP client — like Claude Desktop / Cowork — just loads tools/list and never performs that re-injection step. So pointed at a real gateway it sees the full 109-tool footprint, and a discovered tool's schema returned as data is not something it can promote into a callable tool.

gateway mode is faithful to what an AgentCore gateway puts on the wire — the whole catalog, search tool first — so it does not shrink the listing. The context saving AgentCore advertises happens one layer up, in the consuming agent, which exposes only the search tool to its model and re-injects discovered tools on demand. search mode makes that layer observable here:

  • tools/list returns one tool — just x_amz_bedrock_agentcore_search. The 108-tool catalog is hidden, so this is the smallest possible footprint (see logs/search.jsonl).

  • The catalog stays callable. Hiding happens only at tools/list; tools/call still resolves any catalog tool by its natural name (orders_get_order, not orders___get_order — there is no gateway namespacing in this mode). A client that discovers a tool via search can call it straight away.

  • The interesting failure mode is a passive client that treats the search result as data about tools it doesn't have, rather than tools it can now call. Observability flags every such call as hidden: true (the tool was never in the listing the client saw), so the logs show whether the client followed search-then-call or got stuck.

This is not a claim about what a gateway does on the wire — it doesn't hide the catalog (that's gateway). search mode is a stand-in for the agent runtime that sits in front of one.

Related MCP server: mcp-server

Requirements

  • Python ≥ 3.10

  • uv (recommended) — or any PEP 517 installer

  • Built on FastMCP

Install & run

uv sync --extra dev          # create the venv and install deps
uv run claude-desktop-mcp    # run over stdio (MCP_MODE defaults to "full")
MCP_MODE=gateway uv run claude-desktop-mcp

Turnkey local run: make run

make run (a thin wrapper over hack/run.sh) builds and health-checks both modes, backs up your claude_desktop_config.json, swaps in a config wired to this working copy (fake-mcp-full + fake-mcp-gateway, logging to logs/), restarts Claude Desktop, and tails the event logs. Press Ctrl-C and a trap restores your original config. Set NO_RESTART=1 to skip the automatic Claude Desktop restart.

make run        # or: ./hack/run.sh
make test       # run the test suite
make help       # list targets

Wiring into Claude Desktop

Edit claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/claude_desktop_config.json) and add one or both entries. Register both to A/B test the two modes side by side. The example below runs straight from this public repo — uvx clones and builds it on demand, so no local path is required:

{
  "mcpServers": {
    "fake-mcp-full": {
      "command": "uvx",
      "args": ["--from", "git+https://github.com/dmccaffery/claude-desktop-mcp", "claude-desktop-mcp"],
      "env": { "MCP_MODE": "full" }
    },
    "fake-mcp-gateway": {
      "command": "uvx",
      "args": ["--from", "git+https://github.com/dmccaffery/claude-desktop-mcp", "claude-desktop-mcp"],
      "env": { "MCP_MODE": "gateway" }
    }
  }
}

Pin a tag or branch by appending @<ref>, e.g. git+https://github.com/dmccaffery/claude-desktop-mcp@v0.1.0. The first launch builds the package (a few seconds); uvx caches it for subsequent launches. Restart Claude Desktop after editing the config.

Running from a local clone instead

If you've cloned the repo and want to run your working copy, point --from at the checkout. The path must be absolute — Claude Desktop launches the server without a shell and with an unpredictable working directory, so relative paths, ~, and $HOME are not expanded:

{
  "command": "uvx",
  "args": ["--from", "/absolute/path/to/claude-desktop-mcp", "claude-desktop-mcp"],
  "env": { "MCP_MODE": "gateway" }
}

Optional: write a JSONL log

Add MCP_LOG_FILE to the env block to capture the structured event log (see Observability). It too must be an absolute path to a writable location, for the same reason:

"env": { "MCP_MODE": "full", "MCP_LOG_FILE": "/absolute/path/to/logs/full.jsonl" }

Example prompts

Once a server is connected, drive it from any MCP client (Claude Desktop, Claude Code, or the cowork agent) with a task that naturally spans several domains. Every tool returns a canned echo, so the outcome is irrelevant — what you're validating is how the model selects, discovers, and calls tools, and what the toolset costs in context.

Enable one server at a time. Both modes advertise the whole catalog, so running fake-mcp-full and fake-mcp-gateway together just doubles the tools the model sees and muddies the per-server footprint in the logs.

Paste this multi-domain prompt (it typically chains 8–12 tool calls across users → orders → payments → Jira → Slack → email):

A customer (email jordan@example.com) says their order never arrived and they
think they were charged twice. Please:

1. Look up the customer and their recent orders.
2. Find the problem order, its shipment tracking, and its payment charges.
3. Refund the duplicate charge.
4. Open a Jira ticket in the SUPPORT project summarizing the issue.
5. Post a heads-up in the #customer-ops Slack channel.
6. Email the customer to confirm the refund and the new ETA.

Narrate each step and show me which tool you used for it.

What each mode validates:

  • fake-mcp-full (108 tools, no search): tool-selection accuracy when the whole catalog is dumped into context. Watch whether the model picks the right orders_* / payments_* / jira_* tools, and check the footprint in logs/full.jsonl.

  • fake-mcp-gateway (109 tools, search first): a faithful AgentCore gateway. The model sees the search tool and all 108 target___tool tools. The question is behavioural: does it lean on x_amz_bedrock_agentcore_search to narrow down, or just scan the full catalog like any other large toolset? And does it correctly call tools by their target___tool names? Check the footprint and call_tool sequence in logs/gateway.jsonl.

  • fake-mcp-search (1 tool, catalog hidden): the consuming-agent layer. The model sees only the search tool, so the only way to reach the catalog is search-then-call by natural name. The question is whether the client promotes a discovered tool into an actual call, or treats the search result as inert data. Check logs/search.jsonl — every catalog call is flagged hidden: true.

To probe the discovery behaviour explicitly:

I don't know what tools you have. Search your tool gateway to discover
capabilities for: orders, refunds, Slack messaging, and analytics events.
For each area, tell me which tools you found, then call one of them with
sample arguments and show me the result.

In gateway mode the discovered tools are already in tools/list, so a well-behaved client can call them straight away. The interesting failure mode is a client that treats the search result as a hint about tools it doesn't have — calling search, getting schemas back, and then not knowing how to invoke them. That's the "schemas returned as data aren't callable tools" gap that only an agent runtime with dynamic re-injection closes.

After a run, compare the logs (see Observability):

# Footprint per listing: full = 108 tools vs gateway = 109 tools (catalog + search).
# A faithful gateway is NOT smaller — that's the point.
jq -c 'select(.event=="list_tools") | {mode, tool_count, est_tokens}' logs/full.jsonl logs/gateway.jsonl

# Did the model actually use the search tool, and in what order did it call things?
jq -c 'select(.event=="call_tool") | {tool, hidden}' logs/gateway.jsonl

Environment variables

Variable

Default

Meaning

MCP_MODE

full

full, gateway, or search.

MCP_SEARCH_TOP_K

5

How many tools the search tool returns.

MCP_SEARCH_TOOL_NAME

x_amz_bedrock_agentcore_search

Name of the search tool.

MCP_LOG_FILE

(unset)

If set, append structured JSONL events to this file.

MCP_LOG_LEVEL

info

info or debug.

MCP_SERVER_NAME

claude-desktop-mcp

Server name reported to the client.

MCP_LIST_PAGE_SIZE

50

Max items per page for tools/list (and other list ops); clients page via nextCursor.

Observability: measuring the context footprint

The server cannot read Claude's internally-assembled context window. What it can do is record everything Desktop loads/requests at the MCP protocol boundary — a faithful proxy for "how the context window handles the toolset". Every event is written to stderr (which Claude Desktop captures) and, when MCP_LOG_FILE is set, appended as JSON Lines.

Key events:

  • list_tools — the headline metric. Records the tool_count, the serialized bytes, and an estimated est_tokens of the returned tool definitions. This is the toolset's context footprint. Comparing full vs gateway:

    full:    {"event":"list_tools","mode":"full",   "tool_count":108,"bytes":...,"est_tokens":~9100}
    gateway: {"event":"list_tools","mode":"gateway","tool_count":109,"bytes":...,"est_tokens":~9400}
    search:  {"event":"list_tools","mode":"search", "tool_count":1,  "bytes":...,"est_tokens":~120}

    The faithful gateway is slightly larger (the whole catalog under longer target___tool names, plus the search tool). search is the only mode that actually shrinks the listing — and it does so by hiding the catalog the way a consuming agent would, not the way a gateway does. The lesson: a gateway's semantic search reduces context only when the consuming agent uses it to expose a subset to its model — not at the tools/list boundary a passive client reads.

  • call_tool — records the tool, its arguments, and a hidden flag that is true when the called tool was not in the listing the client last saw. In gateway mode everything is listed, so this is false; in full mode the only hidden-but-callable tool is x_amz_bedrock_agentcore_search itself; in search mode every catalog call is hidden (only the search tool was advertised).

  • initialize — client name/version and protocol version (which Desktop build).

  • startup — mode, catalog size, and search settings, emitted once at boot.

Reading the logs

  • Your JSONL file (MCP_LOG_FILE): durable, one JSON object per line. Inspect with e.g. jq -c 'select(.event=="list_tools")' logs/full.jsonl.

  • Claude Desktop's own MCP logs (macOS): ~/Library/Logs/Claude/mcp*.log — the server's stderr is interleaved here next to Desktop's view of the connection.

Token counts use a documented ceil(len(json)/4) heuristic and are approximate.

Verifying without Claude Desktop

Run the test suite:

uv run pytest

Or drive it manually with the MCP Inspector:

npx @modelcontextprotocol/inspector \
  uvx --from git+https://github.com/dmccaffery/claude-desktop-mcp claude-desktop-mcp

In gateway mode: list tools (the search tool is first, then all 108 target___tool tools), call x_amz_bedrock_agentcore_search with a query, read the ranked definitions under structuredContent.tools, then call one of them by its full target___tool name and confirm it succeeds.

Project layout

src/claude_desktop_mcp/
  catalog.py        # 108 themed fake tools (pure data)
  search.py         # cheap BM25-lite ranking + substring fallback
  observability.py  # JSONL/stderr event logger + footprint estimation
  middleware.py     # ModeMiddleware (list filter) + ObservabilityMiddleware
  config.py         # environment-variable configuration
  server.py         # build_server(): registers tools + middleware
  __main__.py       # stdio entrypoint
tests/              # catalog, search, modes, observability

Available Tools

50 tools
files_copy_fileC

Create a copy of a file.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoName for the copy.
file_idYesFile to copy.

TDQS

C2.7/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 disclosure. It simply states 'Create a copy of a file' without any details on where the copy is placed, what happens if the name already exists, whether permissions are preserved, or what the response contains. This is a minimal tautological statement that provides no behavioral insight.

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

Conciseness4/5

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

The description is a single, efficient sentence with no wasted words. It is front-loaded with the key action. However, it is so minimal that it borders on under-specification rather than true conciseness, so it doesn't 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?

For a simple tool with two parameters and no output schema, the description is insufficient. It doesn't explain key behavior like default naming, destination, or return value. The schema covers parameters, but the overall operational context is missing, making it hard for an agent to predict outcomes.

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 'file_id' and 'name'. The tool description adds no additional meaning beyond what the schema already explains, 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.

Purpose4/5

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

The description clearly states the action ('Create a copy') and the resource ('a file'), which distinguishes it from sibling tools like files_move_file and files_delete_file. However, it lacks any additional scope or destination context, so it doesn't fully reach the level of a 5.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. There is no mention of copying versus moving, or any prerequisites or exclusions. The tool name implies duplication, but the description doesn't explicitly state appropriate usage contexts.

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

files_delete_fileB

Move a file to trash, or delete it permanently.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_idYesFile to delete.
permanentNoDelete permanently instead of trashing.

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 discloses the two deletion modes but does not mention irreversibility of permanent deletion, permission requirements, or what happens to shared/trashed files. The term 'permanently' hints at consequences but lacks explicit 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, clear sentence with no wasted words. It immediately conveys the core action and both modes.

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

Completeness3/5

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

For a tool with only two parameters and no output schema, the description is minimally sufficient. However, it lacks context about the 'permanent' flag's implications and does not clarify the difference from files_move_file, leaving some ambiguity for the 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%, and both parameters are well-described in the schema. The tool description adds no extra meaning beyond what the schema already provides, so the baseline score of 3 applies.

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

Purpose5/5

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

The description uses a specific verb ('Move'/'delete') and identifies the resource ('a file'), with clear scope: either trash or permanent deletion. It distinguishes itself from sibling tools like files_move_file (which implies relocating a file) and files_copy_file.

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

Usage Guidelines2/5

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

No explicit guidance on when to choose trash versus permanent deletion, nor any comparison with alternatives. The description implies deletion but does not state prerequisites or edge cases, leaving the agent to infer usage.

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

files_download_fileA

Download the binary content of a file.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_idYesFile to download.

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 burden of behavioral disclosure. It discloses that the operation is a download and returns binary content, but omits details on error handling, permissions, or response format beyond binary data.

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 communicates the essential action with no extraneous words. The description is front-loaded and clear.

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 single-parameter download tool, the description covers the core behavior and return type but lacks mention of edge cases or when to use it over siblings. Given its simplicity, it is reasonably 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 single parameter file_id is fully described in the schema as 'File to download,' providing complete coverage. The description adds no additional parameter semantics beyond the schema.

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

Purpose5/5

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

The description clearly states 'Download the binary content of a file,' specifying the verb (download) and resource (file). It distinguishes from siblings like files_get_file_metadata and files_upload_file by focusing on binary content retrieval.

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 for obtaining file binary data but does not explicitly contrast with alternatives like files_get_file_metadata. There is no when-to-use guidance or exclusions, leaving the context to be inferred.

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

files_get_file_metadataA

Retrieve metadata for a file such as name, size, owner, and timestamps.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_idYesFile whose metadata to fetch.

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations provided, the description carries the burden of disclosing behavior. It indicates a read-only operation ('retrieve') but doesn't mention permissions, error conditions, or that no file content is downloaded. It adds minimal context beyond the obvious read nature.

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

Conciseness5/5

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

The description is a single sentence that is front-loaded with the action and resource, and every word earns its place. No filler or redundancy.

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 metadata getter with one parameter and no output schema, the description covers the core purpose and gives examples of the metadata fields. It doesn't detail return format or error handling, but the tool's simplicity lowers the burden, making this reasonably 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 file_id ('File whose metadata to fetch.'). The tool description does not add additional parameter-level detail, but the schema already documents the parameter clearly, so a baseline score of 3 is appropriate.

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

Purpose5/5

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

The description states a specific verb and resource: 'Retrieve metadata for a file' and lists example fields (name, size, owner, timestamps). This clearly distinguishes it from sibling tools like files_download_file (content) or files_list_files (many files).

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

Usage Guidelines3/5

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

The description implies usage: when you need metadata for a single file. However, it does not explicitly mention alternatives or exclusions, such as using files_download_file to get content. It's clear context but no explicit guidance on when not to use.

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

files_list_filesC

List files in a folder, optionally filtered by MIME type.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of items to return (page size).
cursorNoOpaque pagination cursor returned by a previous call.
folder_idNoFolder to list; omit for the root folder.
mime_typeNoFilter by MIME type.

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 for behavioral disclosure. It only mentions optional MIME filtering and does not disclose pagination behavior, default limit, root-folder handling, or return format. This is a read operation by nature, but that is 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 one concise sentence with no redundant or vague wording. It front-loads the primary action and is appropriately sized for the tool's 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?

Given no output schema and no annotations, the description leaves substantial gaps: pagination via cursor/limit, default root folder behavior, and what fields are returned for each file are not mentioned. It is a minimal viable description but lacks completeness for an agent to confidently invoke the tool, especially with 4 optional 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 descriptions cover 100% of parameters, so the schema already defines limit, cursor, folder_id, and mime_type. The description only restates the mime_type filter, adding no significant meaning beyond the structured schema. Baseline for high coverage is 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 states a specific verb ('List') and resource ('files in a folder'), making the core purpose clear. It does not explicitly differentiate from sibling tools like files_search_files, but the folder-scoped listing is distinct enough.

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 files_search_files or files_get_file_metadata. It does not mention any exclusions, prerequisites, or alternative tool names.

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

files_move_fileB

Move a file to a different folder.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_idYesFile to move.
folder_idYesDestination folder.

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 bears full responsibility for behavioral disclosure. It states the action but does not explain whether the original is removed, what happens if the destination folder is invalid, or whether the operation is reversible. Similar to the 'update_drive' example, 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?

A single sentence with zero wasted words. It is front-loaded and immediately comprehensible.

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 adequate for a simple two-parameter tool, but it lacks context about behavior on failure, overwriting, or required permissions. With no output schema or annotations, additional context would be needed for full 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?

Schema coverage is 100%, with the schema already describing 'File to move' and 'Destination folder'. The description adds no extra meaning beyond the schema, so 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?

Description clearly states the verb 'Move' and the resource 'file', with the destination scope 'to a different folder'. This distinguishes it from sibling tools like files_copy_file and files_delete_file.

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. It does not mention that moving removes the original file, nor does it suggest when to prefer move over copy or delete. Usage context is implied only by the tool name.

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

files_search_filesA

Search files by name or full-text content.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of items to return (page size).
queryYesFree-text search query.

TDQS

A3.8/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 reveals that queries can match file names or content, but it does not describe the return format, result structure, whether it is read-only, or any side effects or limitations.

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-structured sentence. It is front-loaded with the verb and resource, contains no filler, and every word adds value.

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 2-parameter tool with no output schema, the description and input schema together cover the core behavior. Some gaps remain around result shape and scope, but the low complexity keeps this reasonably complete.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds meaningful semantics by explaining that the query searches both name and full-text content, which goes beyond the schema's generic 'Free-text search query.' This extra context justifies a score above 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 uses a specific verb ('Search') with a clear resource ('files') and scope ('by name or full-text content'). This clearly differentiates the tool from sibling tools like files_list_files and other search tools.

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 on when to use this tool versus alternatives. The context implies searching files rather than listing them, but there are no concrete use cases, exclusions, or comparisons to sibling tools.

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

files_share_fileA

Create a shareable link or grant a user access to a file.

ParametersJSON Schema
NameRequiredDescriptionDefault
roleNoPermission to grant.
emailNoUser to share with.
file_idYesFile to share.

TDQS

A3.8/5.0
Behavior2/5

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

No annotations are provided, and the description does not disclose side effects (e.g., whether existing shares are modified, if notifications are sent, or if ownership is required). It also does not mention reversibility or any permission requirements, which 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 sentence of 13 words, directly stating the action and target. It is concise, front-loaded with the verb, and contains no unnecessary 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?

There is no output schema or annotations, and the description does not mention what the tool returns (e.g., a link URL) or any behavioral consequences of sharing. This lack of detail leaves the agent without expectations for output or side effects.

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 schema covers 100% of parameters, but the description adds meaning by distinguishing the two modes: creating a shareable link (when email is omitted) and granting user access (when email is provided). This helps interpret how parameters interact.

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 specific verbs ('Create', 'grant') and identifies the resource ('shareable link', 'user access', 'file'). It clearly distinguishes this tool from sibling file operations like copy, delete, download, and upload by focusing on sharing functionality.

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

Usage Guidelines4/5

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

The description implies usage: it is the tool to use when you need to share a file. There are no sibling tools for sharing, so the context is clear, though it does not explicitly mention alternatives or when not to use the tool.

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

files_upload_fileB

Upload a new file from base64 content or a source URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesFile name.
contentNoBase64-encoded file content.
source_urlNoURL to fetch content from.

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 carries the full burden. It does not disclose any behavioral traits beyond the basic action, such as whether the upload overwrites existing files, how source_url is processed, authentication needs, or what the response contains. For an upload tool, 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, compact sentence that directly states the tool's purpose without any redundant or extraneous content. It is highly concise and well-structured.

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 simple, but the description is too sparse given the lack of annotations and output schema. It does not explain expected return values, failure modes, or constraints on the two upload methods. A more complete description would cover these aspects, making this barely adequate.

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 clear descriptions for name, content, and source_url. The description adds minimal extra meaning beyond the schema, essentially restating the content/source_url option. It earns the baseline 3 for schema coverage.

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

Purpose5/5

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

The description clearly states the tool's verb ('Upload'), resource ('a new file'), and distinct input methods ('base64 content or a source URL'), which distinguishes it from sibling file tools like copy, move, or delete. It fully conveys the 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?

The description implies usage by explaining the core function, but it does not explicitly specify when to use this tool versus alternatives, nor does it provide context about prerequisites, file size limits, or when to prefer content vs source_url. This is implied usage rather than explicit guidance.

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

github_create_issueB

Open a new issue on a repository.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyNoIssue body in Markdown.
repoYesRepository name.
ownerYesRepository owner.
titleYesIssue title.

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It implies a write operation ('open a new issue') but does not disclose required authentication, potential side effects, error conditions, or the return value, which 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, clear sentence with no unnecessary words. It is front-loaded with the action and resource, making it highly concise and easy to parse.

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

Completeness3/5

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

For a simple create-issue tool, the description covers the core purpose and the schema fully documents parameters. However, it lacks usage guidance and return-value context, making it only minimally complete for an agent to invoke 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 provides descriptions for all four parameters (100% coverage), so the schema handles parameter semantics. The description adds no extra parameter meaning beyond what the schema already states, justifying 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 action ('open a new issue') and the target resource ('a repository'), accurately conveying the tool's function. It naturally distinguishes itself from sibling tools like listing or getting issues, and from creating 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?

The description provides no guidance on when to use this tool versus alternatives such as listing or getting issues, nor does it mention any prerequisites or exclusions. An explicit 'when to use' or pointer to sibling tools would be needed for higher scoring.

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

github_create_pull_requestB

Open a pull request from a head branch into a base branch.

ParametersJSON Schema
NameRequiredDescriptionDefault
baseYesBase branch.
headYesHead branch.
repoYesRepository name.
ownerYesRepository owner.
titleYesPull request title.

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 full burden of behavioral disclosure. It states the creation action but does not explain required permissions, potential side effects, or what happens if branches do not exist. This is a 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, well-structured sentence that is front-loaded with the primary action and object. It contains no fluff or redundant information, making it highly concise and easy to parse.

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

Completeness2/5

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

With no annotations, no output schema, and a one-sentence description, the tool lacks important context such as return value, prerequisites, and error behavior. For a create operation with 5 parameters, the description feels incomplete for an agent to fully anticipate the tool's 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?

The input schema has 100% coverage, so the baseline is 3. The description adds minimal value by clarifying the directional relationship between head and base branches, but it does not elaborate on any parameter details beyond the schema.

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

Purpose5/5

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

The description clearly states the action (open a pull request) and the resource (pull request), with a specific direction from head branch to base branch. This distinguishes it from sibling tools like github_merge_pull_request (merging) and github_create_issue (issues).

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 its usage by defining the action (open a PR) but does not explicitly mention when to use it versus alternatives such as merge or list PRs. No exclusions or alternative tool references are provided, so it relies on the user's inference.

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

github_get_commitA

Get details and diff stats for a single commit.

ParametersJSON Schema
NameRequiredDescriptionDefault
shaYesCommit SHA.
repoYesRepository name.
ownerYesRepository owner.

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses that the tool returns 'details and diff stats', which is useful behavioral information. However, it doesn't mention authentication requirements, rate limits, or how errors are handled. The read-only nature is implied but not fully contextualized.

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 of 10 words. It front-loads the action ('Get') and resource ('details and diff stats for a single commit'), with no redundant or vague phrasing.

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 3-parameter GET tool, the description sufficiently communicates the core function. However, it leaves minor gaps: it doesn't elaborate on what 'diff stats' includes (e.g., additions, deletions, files changed) or provide guidance relative to github_list_commits. Given the low complexity and no output schema, the description is almost 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?

Schema description coverage is 100%: each parameter (owner, repo, sha) has a clear short description. The tool description adds no additional parameter meaning beyond what the schema already provides, so the 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 'Get details and diff stats for a single commit' uses a specific verb ('Get') and resource ('details and diff stats') and explicitly scopes to a single commit. This clearly distinguishes it from sibling tools like github_list_commits, which lists commits, and github_get_repository, which targets a 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 when retrieving details for one commit, but it does not explicitly state when to use this tool versus alternatives. No exclusions or alternative tool names are mentioned, leaving the agent to infer context.

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

github_get_issueA

Get a single issue by number.

ParametersJSON Schema
NameRequiredDescriptionDefault
repoYesRepository name.
ownerYesRepository owner.
numberYesIssue number.

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description must carry the transparency burden. 'Get' implies a read-only operation, but it does not disclose potential error behavior (e.g., 404 if issue does not exist), authentication requirements, or whether the full issue object is returned. This is acceptable for a simple read, but not richly descriptive.

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 superfluous words. It is front-loaded with the verb and resource, making it highly scannable and efficient. Every word earns its place.

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 get-by-number tool with fully documented parameters and no output schema, the description is sufficiently complete. The only missing element is a note about how it differs from github_list_issues, but that is relatively minor given the straightforward nature of the operation.

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

Parameters3/5

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

Schema description coverage is 100% for all three parameters (owner, repo, number), so the schema already explains each field's meaning. The description adds no additional parameter context, which is fine given the high coverage, resulting in 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 is concise and precisely states the action: 'Get a single issue by number.' It clearly distinguishes this from sibling tools like github_list_issues (which lists many) and github_create_issue (which creates), making the purpose unambiguous.

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

Usage Guidelines3/5

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

The description implies usage: fetch a specific issue when its number is known. However, it does not explicitly mention when not to use it or point to alternatives like github_list_issues for browsing issues. The context is self-evident for a simple retrieval tool, but lacks explicit guidance about sibling comparisons.

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

github_get_repositoryA

Get details about a single Git repository.

ParametersJSON Schema
NameRequiredDescriptionDefault
repoYesRepository name.
ownerYesRepository owner.

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It does not disclose whether this is a safe read operation, any error behavior (e.g., 404 if not found), or the nature of 'details'. It adds no behavioral context 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, direct sentence with no filler. It is appropriately sized for a simple 'get' operation and front-loads 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?

Given the simplicity of the tool and the absence of an output schema, the description is adequate but vague. It doesn't clarify what 'details' includes or mention any prerequisites (e.g., repository existence). However, for a straightforward GET-like tool, this is acceptable but not exceptional.

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 provides high coverage (100%): 'repo' and 'owner' each have clear descriptions. The tool description adds no further meaning to parameters, so a baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the action ('Get details') and the resource ('a single Git repository'). It distinguishes itself from sibling tool 'github_list_repositories' by specifying a single repository rather than a 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?

No explicit when-to-use or alternatives are provided. The usage is implied: use this when you need details for one known repository (with owner and repo). No exclusionary guidance exists, but the context is inferable.

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

github_list_commitsC

List commits on a branch.

ParametersJSON Schema
NameRequiredDescriptionDefault
repoYesRepository name.
limitNoMaximum number of items to return (page size).
ownerYesRepository owner.
branchNoBranch name.

TDQS

C2.9/5.0
Behavior2/5

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

No annotations exist, so the description must disclose behavior. It only states 'List commits on a branch,' omitting details like default branch behavior, pagination via limit, and return format.

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

Conciseness4/5

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

The description is very concise, a single sentence. However, it is so brief that it sacrifices substance for brevity, warranting a 4.

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 an optional branch and limit, no output schema, the description is incomplete. It doesn't clarify what happens when branch is omitted, nor what the response contains.

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 covers 100% of parameters with descriptions, so baseline is 3. The description adds no extra meaning beyond the schema; 'on a branch' is redundant with the branch parameter description.

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

Purpose4/5

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

The description clearly states the tool lists commits on a branch, using a specific verb and resource. It distinguishes from github_get_commit (single commit) by implication, but doesn't mention owner/repo 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?

No guidance on when to use this tool versus alternatives like github_list_pull_requests or github_get_commit. There is no mention of use cases or exclusions.

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

github_list_issuesA

List issues on a repository, filtered by state.

ParametersJSON Schema
NameRequiredDescriptionDefault
repoYesRepository name.
limitNoMaximum number of items to return (page size).
ownerYesRepository owner.
stateNoIssue state.

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 carries the full burden. It only says 'List ... filtered by state,' which implies read-only behavior but does not disclose pagination, authentication needs, ordering, or return structure. The filter mention is a minor behavioral trait, but significant gaps remain for a no-annotation 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, front-loaded sentence with no filler. Every word contributes to understanding the tool's core purpose. It is appropriately sized for a simple list operation.

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

Completeness3/5

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

Given the tool's simplicity and full schema coverage, the description covers the basic purpose. However, with no output schema and no annotations, it omits return value details (e.g., array of issue objects) and pagination behavior (e.g., limit default), making it merely adequate rather than 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 already documents all 4 parameters with descriptions, meeting the 100% coverage baseline. The description adds contextual meaning to the 'state' parameter by explicitly mentioning filtering by state, but does not elaborate on owner, repo, or limit beyond what the schema provides.

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 'List' and the resource 'issues on a repository,' with an explicit scope 'filtered by state.' This distinguishes it from sibling tools like list_pull_requests or get_issue, and the verb+resource pattern is specific.

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 by stating the function — if you need to list issues, this tool does that. However, it provides no explicit when-to-use versus alternatives (e.g., use get_issue for a single issue) or exclusions. The implication is present but not expanded.

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

github_list_pull_requestsB

List pull requests on a repository.

ParametersJSON Schema
NameRequiredDescriptionDefault
repoYesRepository name.
limitNoMaximum number of items to return (page size).
ownerYesRepository owner.
stateNoPull request state.

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 only states the basic action, omitting details like default state, pagination behavior, response format, or whether this is a read-only operation. No additional behavioral context is given.

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 or redundant information. It is appropriately front-loaded and maintains high efficiency.

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 four parameters and no output schema. It does not explain what the response contains, how pagination works, or how the state parameter behaves when omitted. More detail is needed for an agent to use the tool correctly without external knowledge.

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

Parameters3/5

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

All four parameters have descriptions in the input schema, giving 100% schema coverage. The tool description itself adds no extra parameter details, so it meets the baseline but does not exceed it.

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

Purpose5/5

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

The description clearly states 'List pull requests on a repository' with a specific verb and resource. It distinguishes itself from sibling tools like github_list_issues and github_list_repositories by explicitly naming the target 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?

No guidance is provided on when to use this tool versus alternatives such as github_list_issues or github_list_commits. The description does not mention state filtering, pagination, or any other context that would help an agent decide when to invoke it.

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

github_list_repositoriesA

List Git repositories for a user or organization.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of items to return (page size).
ownerNoUser or organization login.
cursorNoOpaque pagination cursor returned by a previous call.

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 full burden. It only states 'List Git repositories' which implies read-only, but does not disclose pagination behavior (despite cursor/limit params), authentication requirements, or whether only public repos or all accessible repos are returned. The presence of cursor in the schema 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?

The description is a single concise sentence that is front-loaded with the action and resource. No wasted words.

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

Completeness3/5

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

For a list tool with no output schema, the description is adequate but incomplete. It does not clarify what happens when 'owner' is omitted (likely defaults to authenticated user), nor does it mention return format or sorting. The schema covers parameters but the description lacks behavioral 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 description coverage is 100% with each parameter having a clear description (limit, owner, cursor). The tool description adds no additional meaning beyond the schema, so 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?

Description clearly states the action (List), the resource (Git repositories), and the scope (for a user or organization). It distinguishes itself from sibling tools like github_get_repository (single repo) and github_list_issues (issues).

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?

Description implies usage for listing repositories of a user or organization, but does not explicitly compare with alternatives or state when not to use this tool. No exclusions or preference guidance is provided.

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

github_merge_pull_requestB

Merge an open pull request.

ParametersJSON Schema
NameRequiredDescriptionDefault
repoYesRepository name.
ownerYesRepository owner.
methodNoMerge method.
numberYesPull request number.

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 for behavioral disclosure. It does not mention side effects, permissions, or consequences of merging. Besides stating the target is an 'open' pull request, no additional behavioral context is provided.

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 effectively communicates the core purpose without extraneous 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?

For a mutation tool with no annotations and no output schema, the description is under-specified. It fails to mention what happens after merge, error conditions, or reversibility, leaving the agent without critical 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 parameters are fully described. The description does not add extra meaning beyond the schema, but the baseline of 3 is appropriate when the schema carries the load.

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

Purpose5/5

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

The description uses a specific verb 'merge' and clear resource 'open pull request', making it easily distinguishable from sibling tools like create_pull_request and list_pull_requests. The modifier 'open' adds useful scoping.

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

Usage Guidelines2/5

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

No guidance is given on when to use this tool versus alternatives, nor any prerequisites or exclusions. It simply states the action without contextualizing when merging is appropriate.

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

orders_cancel_orderA

Cancel an order that has not yet shipped.

ParametersJSON Schema
NameRequiredDescriptionDefault
reasonNoReason for cancellation.
order_idYesOrder to cancel.

TDQS

A3.8/5.0
Behavior2/5

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

No annotations provided, but the description only states the action and condition without disclosing side effects, reversibility, or impacts (e.g., payment refund). Minimal behavioral transparency 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?

Single sentence, direct, no filler.

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?

Simple 2-param tool with no output schema; description covers the key precondition. Lacks details on cancellation effects, but adequate for basic 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 covers 100% of parameters with descriptions. The tool description adds nothing beyond schema for order_id and reason; baseline 3 for high coverage.

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

Purpose5/5

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

Clear verb+resource: cancels an order. The condition 'has not yet shipped' differentiates it from siblings like refund_order and update_order.

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?

States the precondition for use (order not yet shipped), implying cancellation is only for unshipped orders. No explicit exclusions or alternative tool mentions.

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

orders_create_orderB

Create a new customer order from a list of product line items.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemsYesLine items, each a product id and quantity.
customer_idYesCustomer placing the order.

TDQS

B3.1/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 states the action but does not disclose side effects, validation behavior, idempotency, or what is returned. For a mutation tool, 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.

Conciseness4/5

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

The description is a single concise sentence that front-loads the action. It wastes no words, but it is perhaps too concise, omitting necessary context that would improve usability. Still, for conciseness alone, it is efficient.

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

Completeness2/5

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

For a create-order operation with no output schema and no annotations, the description should provide more context: what the return value is, possible validations, and preconditions. As written, it is too sparse to fully guide 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?

The input schema already covers 100% of the parameters with descriptions. The description adds a slight nuance with 'product line items' but does not go beyond what the schema already states, 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 a specific verb ('create') and resource ('customer order') with the input method ('from a list of product line items'). It clearly distinguishes this from sibling tools like update, cancel, get, and list orders.

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

Usage Guidelines2/5

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

No explicit guidance is given on when to use this tool or when not to. It does not mention prerequisites (e.g., customer must exist, items must be valid) or alternatives. The context is only implied by the tool name and the word 'create'.

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

orders_get_orderA

Retrieve full details of a single customer order by its order ID, including line items, totals, status, and shipping.

ParametersJSON Schema
NameRequiredDescriptionDefault
order_idYesUnique identifier of the order to retrieve.

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description must carry the transparency burden. The verb 'Retrieve' and the listed response fields clearly indicate a read-only operation, which is good. However, it does not disclose potential errors (e.g., order not found), permission requirements, or any side effects, leaving some behavioral aspects unaddressed.

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, front-loaded with the main action and resource. It conveys all necessary information without redundancy or fluff.

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 (1 parameter, no output schema), and the description lists the key data components returned (line items, totals, status, shipping), which is helpful. It does not mention error handling or authentication, but for a straightforward retrieval tool, this is reasonably 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 one parameter, order_id, with a clear description 'Unique identifier of the order to retrieve.' The description reiterates 'by its order ID' but adds no new semantics beyond the schema. With 100% schema coverage and a simple parameter, a 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 verb 'Retrieve' and the specific resource 'full details of a single customer order by its order ID'. It lists the included fields (line items, totals, status, shipping) and distinguishes itself from siblings like 'orders_list_orders' or 'orders_search_orders' by emphasizing 'single order'.

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

Usage Guidelines4/5

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

The description implies when to use this tool: when you need full details for a specific order ID. It does not explicitly name alternative tools like 'orders_search_orders' for finding orders, but the singular 'single customer order' provides clear context. Lacks an explicit exclusion statement.

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

orders_get_order_invoiceA

Fetch the invoice document and billing breakdown for an order.

ParametersJSON Schema
NameRequiredDescriptionDefault
order_idYesOrder whose invoice to fetch.

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It states the tool fetches an invoice document and billing breakdown, giving some indication of the output scope. However, it lacks any mention of authentication requirements, error behavior (e.g., if no invoice exists), or potential side effects. For a simple read tool, this 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 that immediately states the action and the target resource. Every word contributes value, with no redundancy or filler.

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 tool with one parameter and no output schema, the description adequately conveys the core purpose and hints at the return content (invoice document and billing breakdown). It is complete enough for a simple fetch operation, though it could mention what happens if the invoice is not found or the order is invalid.

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 100% coverage with a clear description for order_id ('Order whose invoice to fetch.'). The tool description does not add additional meaning beyond the schema, so it matches the baseline 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 uses a specific verb ('Fetch') and clearly identifies the resource ('invoice document and billing breakdown') for a given order. This distinguishes it from sibling tools like orders_get_order (which likely retrieves the order itself) and orders_list_orders.

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 clearly implies the tool is for retrieving invoice details for a specific order, but it does not explicitly state when to use this versus alternatives or mention any exclusions or prerequisites. The context is clear but minimal, so it earns an implied-usage score.

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

orders_list_ordersA

List customer orders, optionally filtered by customer or status, with pagination.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of items to return (page size).
cursorNoOpaque pagination cursor returned by a previous call.
statusNoFilter by order status.
customer_idNoFilter to orders placed by this customer.

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. It mentions pagination and optional filtering, which are behavioral traits, but it does not explicitly state that the operation is read-only or describe the return format, sorting, or pagination cursor behavior beyond what the schema already provides.

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

Conciseness5/5

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

The description is a single sentence that is front-loaded with the core purpose ('List customer orders') and includes key modifiers ('filtered', 'pagination') without any waste. It is highly concise and well-structured.

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

Completeness4/5

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

For a list tool with four optional parameters and pagination, the description covers the primary functionality and filter/pagination capabilities. However, since there is no output schema, the description could provide more detail on the return format (e.g., that it returns a list of order objects with a next cursor).

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 mentions 'customer or status' filters and 'pagination', but these details are already present in the schema. It does not add new semantic meaning beyond the schema.

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

Purpose4/5

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

The description clearly states the tool lists customer orders with optional filters and pagination. The verb 'list' and resource 'customer orders' are specific, but it does not explicitly differentiate from the related sibling tool orders_search_orders.

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 for browsing orders with optional filters and pagination, but it does not provide explicit guidance on when to use this tool versus alternatives like orders_search_orders or orders_get_order.

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

orders_refund_orderB

Issue a full or partial refund against a paid order.

ParametersJSON Schema
NameRequiredDescriptionDefault
amountNoAmount to refund; omit for a full refund.
order_idYesOrder to refund.

TDQS

B3.4/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 only says 'full or partial refund' and 'against a paid order.' It omits side effects, permission requirements, idempotency, failure behavior, and reversibility—critical for a financial mutation. The minimal detail fails to adequately prepare the agent for 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?

A single concise sentence that is front-loaded with the action verb and includes necessary qualifiers ('full or partial', 'paid'). No wasted words; it earns its place.

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

Completeness2/5

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

Although the parameter schema is complete, the tool is a financial operation with no output schema and no annotations. The description lacks return-value details, failure scenarios, prerequisite conditions beyond 'paid', and system behavior (e.g., whether refund is immediate, partial refund limits). This is insufficient for safe 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%: both parameters are documented ('Amount to refund; omit for a full refund.' and 'Order to refund.'). The description's mention of 'full or partial' adds no new 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?

Description clearly states the action: 'Issue a full or partial refund against a paid order.' It names a specific verb ('issue'), the resource ('refund'), and the target ('order'), while qualifying with 'paid' to prevent misuse. This distinguishes it from sibling tools like orders_cancel_order or orders_update_order.

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

Usage Guidelines3/5

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

Usage context is implied: the tool is for refunding paid orders, with 'paid' acting as a precondition. However, it does not explicitly compare to alternatives (e.g., when to cancel vs. refund) or state when not to use this tool, leaving the agent to infer from the wording.

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

orders_search_ordersA

Search orders by free-text query across customer name, email, product, or order number.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of items to return (page size).
queryYesFree-text search query.

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses the searchable fields but does not state match semantics (e.g., partial vs exact), result ordering, or explicitly confirm a read-only, side-effect-free operation. This is a moderate gap for a search 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, front-loaded sentence with no fluff. Every word contributes to understanding the tool's purpose.

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 search tool with a complete schema, the description covers the search scope. It doesn't describe return format or pagination details, but with no output schema and well-documented parameters, this is acceptable. Slightly more behavioral detail would improve completeness.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. However, the description adds meaningful context by specifying exactly which fields the query targets, going beyond the schema's generic 'Free-text search query'.

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 the specific verb 'search' and resource 'orders', and enumerates the searchable fields (customer name, email, product, order number). This clearly distinguishes it from sibling tools like orders_list_orders and orders_get_order.

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 makes the use case clear: use when you need to find orders by free-text across multiple fields. It doesn't explicitly name alternatives, but the context of siblings (list/get) implies when this tool is appropriate.

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

orders_track_orderA

Get the current shipment tracking status and carrier events for an order.

ParametersJSON Schema
NameRequiredDescriptionDefault
order_idYesOrder to track.

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 does not explicitly state that this is a read-only operation, nor does it mention any prerequisites, potential latency, or data freshness. The term 'current' hints at timeliness but lacks detail about what is returned or how events are ordered.

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

Conciseness5/5

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

The description is a single sentence that is front-loaded with the primary action and outcome. Every word contributes meaning with no redundancy or filler.

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

Completeness3/5

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

For a simple single-parameter read tool, the description provides the core purpose but lacks details about the return format, such as whether carrier events are a list, how many events are included, or what fields are present. Since there is no output schema, these gaps matter. Still, the tool's simplicity makes this minimally adequate.

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 the parameter description 'Order to track.' The tool description adds context about shipment tracking, but does not significantly enhance the understanding of order_id beyond the schema. Baseline 3 is appropriate given high schema coverage.

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

Purpose5/5

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

The description clearly states a specific action: 'Get the current shipment tracking status and carrier events for an order.' This distinguishes it from sibling tools like orders_get_order (which likely retrieves order details) by focusing on shipment tracking and carrier events.

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 for tracking shipments by the phrase 'shipment tracking status', but it does not explicitly mention when to use this tool versus alternatives like orders_get_order or orders_list_orders. No exclusions or alternative tool references are provided.

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

orders_update_orderA

Update mutable fields on an existing order such as shipping address or internal notes.

ParametersJSON Schema
NameRequiredDescriptionDefault
notesNoInternal notes.
order_idYesOrder to update.
shipping_addressNoNew shipping address.

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It states that it updates mutable fields, but gives no details on side effects, permission requirements, partial-update behavior, or whether changes are reversible. The word 'update' implies mutation, but little else is disclosed.

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

Conciseness5/5

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

A single, front-loaded sentence that conveys the purpose and examples without filler. It is efficiently structured and immediately understandable.

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 fully described schema parameters. However, with no annotations and no output schema, the description is minimal. It does not clarify whether the update is partial (only provided fields are changed) or what the response looks like. Adequate but not comprehensive.

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 three parameters with 100% coverage. The description's mention of 'shipping address' and 'internal notes' reinforces the schema but adds no new semantics about parameter formatting, constraints, or relationships. Baseline 3 for full coverage 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 identifies the action ('Update'), the target resource ('an existing order'), and the scope ('mutable fields'), with concrete examples (shipping address, internal notes). This distinguishes it from sibling tools like create, cancel, refund, and track orders.

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 modifying an order's mutable fields. However, it does not explicitly state when not to use it or mention alternatives such as canceling, refunding, or listing orders. It does not provide exclusion criteria or direct comparisons.

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

slack_create_channelC

Create a new Slack channel.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesChannel name.
privateNoCreate as a private channel.

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It does not disclose any behavioral traits such as error handling for duplicate names, required permissions, workspace scope, or the return value. 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, concise sentence with no unnecessary words. However, it is under-specified; while concise, it doesn't provide enough detail to be fully helpful, though it is not bloated.

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

Completeness2/5

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

For a create tool, the description is incomplete. It does not explain what happens on success (e.g., returns channel object), error conditions (e.g., duplicate name), or permission requirements. The schema covers only parameter names, not behavioral semantics.

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 both parameters (name and private), achieving 100% schema description coverage. The tool description adds no additional meaning beyond the schema, so the baseline 3 is appropriate.

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

Purpose4/5

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

The description clearly states the action (create) and resource (Slack channel), and is distinct from sibling tools like slack_get_channel or slack_send_message. However, it adds no extra detail about channel type or workspace context, so it's not maximally informative.

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. The name implies usage for creating channels, but the description lacks any criteria, prerequisites, or comparisons to sibling tools like slack_invite_user or slack_list_channels.

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

slack_get_channelA

Get metadata for a single Slack channel.

ParametersJSON Schema
NameRequiredDescriptionDefault
channelYesChannel ID.

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It implicitly indicates a read-only operation via 'Get', but does not disclose error handling, required permissions, or the exact fields of metadata returned. This is minimal but not contradictory.

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 seven words, immediately stating the action and object. There is no fluff or repetition, making it highly efficient.

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

Completeness4/5

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

Given the simple one-parameter nature and lack of output schema, the description adequately states the tool's purpose and expected return (metadata), but it omits any context about alternative tools or potential edge cases, making it slightly incomplete for an agent that needs to decide when to use it.

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 only parameter ('channel') with description 'Channel ID.' Since schema coverage is 100%, the description adds no additional meaning beyond what the schema already provides, so a baseline score of 3 is appropriate.

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

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 ('Get') and resource ('metadata for a single Slack channel'), distinguishing it from sibling tools like slack_list_channels and slack_create_channel. It is concise 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 such as slack_list_channels. It does not mention use cases, prerequisites, or exclusions, leaving the agent 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.

slack_invite_userB

Invite a user to a channel.

ParametersJSON Schema
NameRequiredDescriptionDefault
channelYesChannel ID.
user_idYesUser to invite.

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 must disclose behavioral traits. It does not mention permissions, idempotency, side effects, or what happens if the user is already in the channel, leaving substantial uncertainty for a state-changing 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 filler words. It is front-loaded with the action and resource, making it easy to scan.

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

Completeness2/5

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

Given the tool's simple 2-parameter schema but lack of annotations and output schema, the description is insufficiently complete. It doesn't mention what the invocation returns, whether it can fail, or any prerequisites like workspace membership, making it harder for the agent to use without additional assumptions.

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?

Both parameters have schema descriptions (100% coverage), so the baseline is 3. The description adds no additional meaning beyond the schema; the parameter descriptions are minimal but present.

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 'invite' with a clear object/resource: invite a user to a channel. It is unambiguous and distinct from sibling tools like slack_send_message or slack_create_channel.

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, prerequisites, or exclusions. It does not mention alternative tools or any context beyond the literal action.

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

slack_list_channelsC

List Slack channels in the workspace.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoChannel type filter.
limitNoMaximum number of items to return (page size).
cursorNoOpaque pagination cursor returned by a previous call.

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 reveals no information about pagination behavior, return format, rate limits, auth requirements, or whether it only lists public channels by default. The presence of 'limit' and 'cursor' parameters is not reflected in the description, 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, front-loaded sentence with no waste. It is appropriately concise for the tool's simplicity, though it could benefit from a brief note on the type parameter or default behavior without becoming verbose.

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

Completeness2/5

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

The tool has no output schema and no annotations, so the description must provide context on return structure and behavior. It does none of this. The three parameters are documented in the schema, but the description adds no context about what channels appear, how pagination works, or any default limits, making it incomplete for an agent interacting with an unfamiliar API.

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 type, limit, and cursor, so the description does not need to elaborate. It adds no extra meaning beyond the schema, but the schema itself is adequate, leading to 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 action ('List') and the resource ('Slack channels') with a scope ('workspace'). It is distinct from sibling tools like slack_get_channel and slack_create_channel, though it does not explicitly mention the filtering options (type, pagination) that would fully define its 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?

No usage guidance is provided. The description does not indicate when to use this tool versus alternatives, nor does it mention any prerequisites or exclusions. It simply states what it does, leaving the agent to infer appropriate contexts.

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

slack_list_messagesB

List recent messages in a channel.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of items to return (page size).
cursorNoOpaque pagination cursor returned by a previous call.
channelYesChannel ID.

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 of behavioral disclosure. It doesn't mention pagination behavior, ordering, authentication needs, or what 'recent' means, leaving the agent to infer these details from the schema. For a read 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?

A single, focused sentence with no superfluous words. The description is immediately understandable and follows the pattern of front-loading the verb and resource.

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

Completeness3/5

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

For a tool with three parameters and full schema coverage, the description is minimally sufficient. However, it omits details about pagination, return format, and time bounds that would be valuable given the lack of an output schema and annotations. It is complete enough for a simple list operation but could be richer.

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 baseline is 3. The description adds the notion of 'recent' which suggests ordering, but does not elaborate on parameter specifics beyond what the schema already provides. It is adequate but not compensatory.

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 ('List') and resource ('recent messages in a channel'). While it doesn't explicitly differentiate from sibling tools like slack_get_channel or slack_list_channels, the resource is distinct and the purpose is unambiguous.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool instead of alternatives, nor are there any exclusions or prerequisites. The description merely states what the tool does without helping the agent decide between this and similar Slack tools.

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

slack_send_messageB

Send a message to a Slack channel or user.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesMessage text.
channelYesChannel ID or name.

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations, the description carries the full burden but only states the core action. It does not disclose potential side effects, requirements (e.g., whether the bot must be in the channel), or error behavior, providing minimal transparency.

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 redundant information; it is optimally concise.

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

Completeness3/5

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

For a simple two-parameter tool with no output schema, the description is minimally adequate but lacks any context about edge cases, return value, or usage constraints, so it is not richly 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?

Schema covers both parameters with descriptions (100%), and the tool description adds no additional parameter semantics beyond restating that the message goes to a channel or user, so a 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 ('Send a message') and the target ('a Slack channel or user'), which is specific and distinguishes it from siblings like slack_list_messages or slack_set_status.

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 slack_upload_snippet or slack_invite_user; no usage context or exclusions are provided.

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

slack_set_statusA

Set the authenticated user's status text and emoji.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesStatus text.
emojiNoStatus emoji shortcode.

TDQS

A3.7/5.0
Behavior2/5

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

There are no annotations, so the description carries the burden of behavioral disclosure. It reveals the mutation action but does not describe side effects (e.g., whether existing status is replaced, how optional emoji is handled), authentication needs, or response behavior. This lack of detail may leave the agent uncertain about the operation's full implications.

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 is front-loaded and efficiently conveys the tool's purpose.

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 setter tool with no output schema and no behavioral notes, the description provides the core action but leaves gaps: optional emoji behavior, whether the status is overwritten or appended, and expected return values are not addressed. This is adequate but not comprehensive.

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 descriptions for both parameters ('Status text' and 'Status emoji shortcode'). The description adds no additional semantic meaning beyond restating these fields, 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 action ('Set') and the resource ('the authenticated user's status text and emoji'). It is specific enough to distinguish from sibling tools like slack_send_message or slack_create_channel, which deal with messaging or channel management.

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 context of use is clear: this tool is for updating the current user's status. However, it does not explicitly mention when not to use it or provide alternative tools, though no direct alternative exists among siblings. The clarity of the resource implies the use case effectively.

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

slack_upload_snippetB

Upload a text snippet or file to a channel.

ParametersJSON Schema
NameRequiredDescriptionDefault
channelYesChannel ID.
contentYesSnippet content.
filenameNoFile name.

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 only states the action without revealing side effects, permissions, return values, or the distinction between uploading a snippet versus a file, so significant behavioral context is missing.

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 immediately states the action and resource, making it efficiently scannable for an agent.

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

Completeness2/5

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

Given no output schema and no annotations, the description is too sparse. It fails to mention response behavior, when to use snippet vs file, or any operational details, leaving the agent without enough context 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?

Schema coverage is 100%, so the baseline is 3. The description adds the context that the tool handles snippets or files, but it does not explain how the filename parameter relates to content or when to treat it as a file upload, so it adds little beyond the schema.

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

Purpose5/5

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

The description clearly states the action ('Upload') and the resource ('a text snippet or file to a channel'), which is specific and distinguishes it from sibling tools like slack_send_message or files_upload_file by targeting channel-bound snippets.

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. It does not mention exclusions, prerequisites, or differences from slack_send_message or files_upload_file, leaving usage context entirely implicit.

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

users_create_userC

Create a new user account.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoFull name of the user.
roleNoInitial role.
emailYesEmail address for the new user.

TDQS

C2.9/5.0
Behavior2/5

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

There are no annotations and the description does not disclose side effects, permissions, idempotency, or error behavior. It simply states the action without any behavioral depth.

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

Conciseness4/5

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

The description is a single, compact sentence with no wasted words. However, it is somewhat under-specified for a create operation, balancing conciseness against completeness.

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 create tool with a fully documented schema, the description is minimally sufficient, but it omits any context about the user lifecycle, email uniqueness, or post-creation behavior, which would be relevant 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 all three parameters have descriptions in the input schema. The tool description adds no parameter-level meaning beyond what the schema already provides, yielding the baseline score.

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

Purpose4/5

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

The description 'Create a new user account' uses a specific verb and resource, clearly distinguishing it from sibling tools like users_update_user and users_delete_user. However, it lacks any detail about required vs optional fields, which are only in the schema.

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

Usage Guidelines2/5

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

No guidance is provided about when to use this tool versus alternatives such as users_update_user or users_set_user_role. The description is purely declarative with no contextual cues.

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

users_delete_userA

Permanently delete a user account.

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idYesUser to delete.

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations provided, the description must carry the full burden of behavioral disclosure. It does clearly state that deletion is permanent, which is critical. However, it does not mention permissions, cascade effects, or other consequences beyond the account removal, so it only partially covers 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 five-word sentence, 'Permanently delete a user account,' that front-loads the action and object with no redundant or extraneous content. It is highly concise and well-structured.

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

Completeness4/5

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

For a tool with one required parameter and no output schema, the description covers the core action and permanence. It might optionally mention admin permissions or related data effects, but those are not essential for basic selection and invocation. The description is complete enough for this simple delete 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 user_id with the description 'User to delete.' The tool description adds no additional semantic detail about the parameter, so baseline 3 is appropriate given the schema's completeness.

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 'Permanently delete a user account' uses a specific verb (delete) and resource (user account), clearly stating what the tool does. It distinguishes from sibling tools like users_reset_user_password or users_set_user_role by making the destructive action explicit.

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

Usage Guidelines3/5

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

The description does not explicitly state when to use this tool or mention alternatives, but the verb 'delete' implies usage for removing users, and 'permanently' indicates irreversibility. Usage guidance is present only implicitly, not as direct guidance.

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

users_get_userA

Retrieve a single user account by user ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idYesUnique identifier of the user.

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 'Retrieve', which is synonymous with the tool's name 'get' and does not reveal any additional behavioral traits such as return structure, error conditions (e.g., 404 for missing user), authentication requirements, or whether it returns the full account or a partial representation.

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 correct sentence that immediately conveys the tool's function. It is front-loaded with the verb and resource, and every word contributes meaningful information without any 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?

As a simple get-by-ID tool with no output schema and only one parameter, the description is minimally adequate. However, it fails to differentiate from the sibling users_get_user_profile, which could create confusion about which tool returns what. The absence of any statement about the returned data or relationship to other retrieval tools leaves a gap in context 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?

The input schema already describes the sole parameter user_id with 100% coverage. The description adds no semantic detail beyond phrase 'by user ID', which mirrors the schema. Thus it meets the baseline for schema-driven understanding but does not enhance the parameter semantics further.

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 'Retrieve' with a clear resource ('a single user account by user ID'). It distinctly contrasts with sibling tools like users_list_users (plural) and users_get_user_profile (profile-specific), making its purpose unambiguous.

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

Usage Guidelines3/5

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

The description implies usage when you need a specific user by ID, but it does not explicitly state when to prefer this tool over alternatives like users_get_user_profile or users_search_users. There are no exclusions or when-not-to-use guidance, so usage is only implied.

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

users_get_user_profileA

Get the extended public profile for a user, including avatar and bio.

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idYesUser whose profile to fetch.

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses the profile is public and includes avatar and bio, but it does not describe the full response structure, potential errors, or access constraints beyond 'public'.

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, concise sentence that front-loads the verb and purposes. No wasteful words, ideal for quick comprehension.

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

Completeness4/5

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

For a simple one-parameter get operation without an output schema, the description gives enough to select and invoke the tool. It covers the main purpose and some return fields (avatar, bio), though 'extended' remains undefined.

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 a clear description of `user_id` with 100% coverage. The tool description adds no additional meaning about the parameter, merely referencing 'a user' without further detail.

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

Purpose5/5

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

The description states a specific verb 'Get' and resource 'extended public profile', mentioning avatar and bio. This clearly distinguishes it from users_get_user (basic profile) and other user tools.

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 use for extended public profile data but does not explicitly state when to use this tool over alternatives like users_get_user. No exclusions 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.

users_list_usersB

List user accounts, optionally filtered by role or status.

ParametersJSON Schema
NameRequiredDescriptionDefault
roleNoFilter by role.
limitNoMaximum number of items to return (page size).
cursorNoOpaque pagination cursor returned by a previous call.
statusNoFilter by account status.

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 of behavioral disclosure. It only says 'list' and mentions filters, but does not disclose potential side effects (none expected), authentication requirements, rate limits, or pagination behavior. This is minimal transparency.

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 conveys the core action and optional filters efficiently, earning a perfect score for 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?

The description is sufficient for a simple list operation, but it lacks details about the return format or pagination behavior, especially since there is no output schema. The schema covers parameters, but the description doesn't mention that results are paginated or that cursor/limit control this, making it slightly 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 documents all four parameters with descriptions (100% coverage), so the description adds no extra parameter semantics. The mention of 'role or status' merely restates what the schema already lists, providing no additional meaning.

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

Purpose4/5

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

The description clearly states the action ('List') and the resource ('user accounts'), which distinguishes it from single-user tools like users_get_user. However, it does not explicitly differentiate from users_search_users, so it's not a perfect 5.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like users_search_users or users_get_user. The mention of optional filters implies some usage context, but there are no explicit exclusions or comparisons to siblings.

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

users_reset_user_passwordB

Trigger a password reset email for a user account.

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idYesUser to reset.

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden. It states the primary side effect (sending a password reset email) but does not disclose any additional behavioral traits such as permission requirements, idempotency, rate limits, or what the user experience entails beyond the email being triggered.

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 of eight words. Every word contributes to the core purpose, with no redundant phrasing or filler.

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 tool with one parameter and no output schema, the description is largely complete: it names the action and the target. It could optionally mention that this only triggers an email and does not directly change the password, but that omission is minor given the simplicity of the 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 schema already fully describes the only parameter 'user_id' with 'User to reset,' and the description reinforces this by saying 'for a user account.' Since schema coverage is 100%, the description adds no new parameter meaning, placing it at the baseline 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 uses a specific verb 'Trigger' and names the resource 'a password reset email for a user account.' This clearly distinguishes it from sibling user management tools like users_update_user or users_get_user, making the tool's 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?

There is no guidance on when to use this tool versus alternatives such as users_update_user, which might also change user credentials. The description implies a use case but does not explicitly state contexts, exclusions, or alternative tools.

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

users_search_usersA

Search user accounts by name, email, or username.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of items to return (page size).
queryYesFree-text search query.

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations provided, the description must communicate behavioral traits. It specifies the fields that can be searched, but does not disclose details like case sensitivity, fuzzy matching, or result pagination. This adds basic context but leaves significant behavioral uncertainty.

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 immediately conveys the tool's purpose with no filler, making it easy for an agent to parse quickly.

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 (two parameters, no output schema), the description covers the essential purpose and searchable fields. It omits explicit return-value details, but they are easily inferred from the tool name, making it adequate for this context.

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 already provides 100% coverage for both parameters. The description adds semantic value by clarifying that the 'query' parameter can contain names, emails, or usernames, going beyond the schema's generic 'Free-text search query.'

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 ('Search') and resource ('user accounts'), and enumerates the searchable fields ('name, email, or username'), distinguishing it from listing or getting individual users.

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

Usage Guidelines4/5

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

The description implies when to use this tool—when you need to find users by a free-text query—but does not explicitly state alternatives or exclusions, such as using users_get_user for known IDs. This provides clear context but lacks explicit guidance against other tools.

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

users_set_user_roleB

Change the access role assigned to a user.

ParametersJSON Schema
NameRequiredDescriptionDefault
roleYesNew role to assign.
user_idYesUser to modify.

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It indicates a mutation ('change') but does not mention required permissions, reversibility, or side effects. The agent gets no additional context beyond the verb itself.

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

Conciseness5/5

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

The description is a single, focused sentence that conveys the complete purpose without wasted words. It is appropriately sized for the tool's simplicity and earns its place.

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

Completeness3/5

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

For a simple two-parameter mutation tool with fully described schema, the description is minimally adequate. However, the absence of annotations or output schema leaves gaps around operational context, such as assumptions about user existence or role validity. It is functional 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?

Schema description coverage is 100% since both parameters have meaningful descriptions ('New role to assign' and 'User to modify'). The description adds no extra semantic layer beyond what the schema already provides, 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 'Change the access role assigned to a user' uses a specific verb and resource, clearly distinguishing it from sibling tools like users_update_user or users_reset_user_password. It directly states the action and target without ambiguity.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. The description only states what it does, leaving the agent to infer appropriate usage contexts. No exclusions or alternative tool mentions are present.

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

users_update_userB

Update profile fields on an existing user account.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoNew full name.
emailNoNew email address.
user_idYesUser to update.

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It only says 'Update profile fields', which conveys mutation but nothing about partial updates, error behavior, authorization needs, or side effects. This is insufficient for an agent to safely invoke the 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 clear sentence with no wasted words. It is front-loaded with the verb and resource. However, it is so brief that it misses the opportunity to add usage or behavioral context, though that is a matter of completeness rather than 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?

Given the lack of annotations and no output schema, the description offers minimal context. For a mutation tool, agents would benefit from knowing whether unspecified fields remain unchanged, whether the user must exist, and what the response contains. The simple three-parameter schema does not compensate for this absence.

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 each parameter (name, email, user_id). The description adds no extra semantic meaning beyond 'profile fields', which is already implied by the schema. Baseline of 3 is appropriate since the schema does the necessary work.

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 ('Update') and the resource ('existing user account'), with a specific scope ('profile fields'). It distinguishes from siblings like users_create_user, users_delete_user, and users_set_user_role, 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 given on when to use this tool versus alternatives such as users_set_user_role or users_reset_user_password. There is no mention of prerequisites, or explicit 'when not to use', leaving agents to infer usage from the tool name and description alone.

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

weather_get_air_qualityA

Get the current air quality index and pollutant breakdown for a location.

ParametersJSON Schema
NameRequiredDescriptionDefault
locationYesCity name, postal code, or 'lat,long'.

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 burden. It discloses that data is 'current' and mentions the return components (AQI and pollutants), but does not elaborate on potential side effects, limitations, or data freshness details. For a read-only get operation, this 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, front-loaded sentence with no redundant wording. Every word contributes to clarity.

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

Completeness4/5

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

For a simple one-parameter get tool with no output schema, the description sufficiently covers what is returned (AQI and pollutants) and the input. It could specify which pollutants or units, but the scope is adequately complete for typical use.

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

Parameters3/5

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

Schema coverage is 100% for the single 'location' parameter, and the description does not add any semantics beyond the schema's own explanation ('City name, postal code, or lat,long'). 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's function with a specific verb ('Get'), resource ('air quality index and pollutant breakdown'), and scope ('for a location'). It distinguishes itself from sibling weather tools like current weather, forecast, alerts, and historical weather by explicitly focusing on air quality.

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

Usage Guidelines3/5

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

The description implies usage when current air quality data is needed, but it does not explicitly state when to use this tool over alternatives or provide any exclusions. Sibling tools exist but are not referenced.

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

weather_get_alertsA

Get active severe-weather alerts and warnings for a location.

ParametersJSON Schema
NameRequiredDescriptionDefault
locationYesCity name, postal code, or 'lat,long'.

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It does add meaningful qualifiers like 'active' and 'severe-weather,' indicating that the returned alerts are current and specific to severe conditions. However, it does not explain response format, potential lack of alerts, or any side effects, leaving some 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, ten-word sentence that is direct and free of fluff. Every word adds value, and the most important information (what resource is retrieved and for what input) is front-loaded.

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

Completeness4/5

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

For a simple read-only tool with one well-documented parameter and no output schema, the description is complete enough for an agent to understand its core function. It could mention that the response is a list of alerts, but the verb 'get' and plural 'alerts and warnings' make that reasonably clear. The lack of output schema doesn't create a major gap here.

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 covers the sole parameter 'location' with a clear description ('City name, postal code, or lat,long'), giving 100% schema description coverage. The tool description adds no extra parameter syntax or examples, so it does not materially enhance what the schema already provides.

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 ('get') and identifies the exact resource ('active severe-weather alerts and warnings') and scope ('for a location'). It clearly distinguishes itself from sibling weather tools like weather_get_current_weather and weather_get_forecast, which cover different data 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 usage for retrieving alert data at a given location, but it does not explicitly state when to use this tool over alternatives or provide exclusions. Sibling tool names are available but the description itself offers no direct comparison or guidance, making the usage context only implicit.

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

weather_get_current_weatherB

Get current weather conditions for a location.

ParametersJSON Schema
NameRequiredDescriptionDefault
unitsNoUnit system.
locationYesCity name, postal code, or 'lat,long'.

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, but it only states the action without disclosing what data is returned, whether it's read-only, or any potential side effects. 'Get' implies a read but no details about the response structure.

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, clear sentence with no wasted words. The description is appropriately concise and immediately states the 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?

For a simple tool, the description is minimal but lacks context about what 'conditions' includes, how it differs from air quality or forecasts, and what the response looks like. No output schema or annotations compensate for this 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%, so parameters are already documented. The description adds no additional meaning beyond referring to 'a location,' which aligns with the location parameter but provides no extra context.

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

Purpose5/5

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

The description uses a specific verb 'get' with the resource 'current weather conditions' and the scope 'for a location,' making it clear and distinct from the sibling tools like weather_get_forecast and weather_get_air_quality.

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 'current weather' implies when to use this tool, but no explicit exclusions or alternatives are provided. The agent must infer that forecast, historical, and air quality are separate tools based on their names.

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

weather_get_forecastB

Get a multi-day weather forecast for a location.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoNumber of days to forecast.
unitsNoUnit system.
locationYesCity name, postal code, or 'lat,long'.

TDQS

B3.2/5.0
Behavior1/5

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

No annotations are provided, and the description offers no behavioral details beyond the basic function. It does not mention data sources, rate limits, location resolution, or any side effects, so it fails to disclose operational 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, direct sentence that front-loads the core function. There is no redundancy or unnecessary information, making it highly concise and well-structured.

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

Completeness4/5

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

For a simple forecast tool with all parameters documented in the schema, the description is mostly complete. However, since there is no output schema, it could be more explicit about the type of forecast details returned, such as temperature or precipitation, leaving some room for clarification.

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 (location, days, units). The tool description adds no additional semantic meaning beyond the schema, meeting the baseline for high schema coverage.

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

Purpose5/5

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

The description clearly identifies the tool as retrieving a multi-day weather forecast for a location. This distinguishes it from sibling weather tools like weather_get_current_weather and weather_get_historical_weather.

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 implies the tool is for future weather predictions but provides no explicit guidance on when to prefer it over alternatives. No exclusions or alternative tool mentions are present, leaving the agent to infer usage.

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

weather_get_historical_weatherA

Get historical weather observations for a location on a past date.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesDate in YYYY-MM-DD format.
locationYesCity name, postal code, or 'lat,long'.

TDQS

A4/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden for behavioral disclosure. It communicates that this is a read-only operation via the verb 'Get', but does not mention potential limitations such as data availability, date range constraints, or required permissions. This is adequate for a simple getter but not richly informative.

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

Conciseness5/5

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

The description is a single sentence that is front-loaded with the primary action and resource. It contains no redundant information and is perfectly concise for the tool's simplicity.

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 (2 parameters, no output schema, no annotations), the description sufficiently covers its purpose and scope. It could mention return formats or data source specifics, but for a basic historical weather lookup, it is complete enough for an agent to select and invoke the tool. The schema covers parameter details, so the description does not need to repeat them.

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 for both parameters (location, date) with descriptions, so the schema carries the parameter semantics. The description does not add any additional format or constraint details beyond what the schema already specifies.

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: 'Get historical weather observations' with a specific scope ('for a location on a past date'). It distinctly differentiates from sibling tools like weather_get_current_weather and weather_get_forecast by emphasizing 'historical' and 'past date'.

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

Usage Guidelines4/5

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

The description provides clear context for when to use the tool—when past weather data is needed for a specific location and date. It does not explicitly exclude alternatives, but the wording naturally implies using this tool instead of current or forecast weather tools.

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

TDQS

B3.4/5.0
Disambiguation5/5

Each tool has a distinct domain prefix and action-object pairing, making them clearly separable. Even within similar operations (e.g., users_set_user_role vs users_update_user), the intent is unambiguous.

Naming Consistency5/5

All tools follow a consistent {domain}_{verb}_{object} naming convention in lowercase snake_case. Verbs like list, get, create, update, delete are used uniformly across domains.

Tool Count2/5

With 50 tools spanning six different domains, the server is overloaded. While each domain is well-covered, the overall count exceeds what an agent can efficiently navigate and would be better split into separate servers.

Completeness4/5

Each domain provides comprehensive CRUD and lifecycle operations. Minor gaps exist, such as GitHub lacking a single-PR detail fetch or Slack lacking message deletion, but core workflows are fully supported.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

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

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

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

curl -X GET 'https://glama.ai/api/mcp/v1/servers/dmccaffery/claude-desktop-mcp'

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