Skip to main content
Glama
Edison-Watch

mcp-template

by Edison-Watch

custom-mcps


Agent Prompt

Copy and paste this into your AI coding agent (Claude Code, Cursor, Copilot, etc.) to install:

Install the CLI and download the gmail-mcp skill:

uv tool install custom-mcps

curl -fsSL https://raw.githubusercontent.com/Edison-Watch/Custom-MCPs/main/scripts/install-skills.sh -o install-skills.sh
bash install-skills.sh && rm install-skills.sh

The official gmail-mcp agent skill is self-published on skills.sh. Install it directly with:

npx skills add Edison-Watch/Custom-MCPs

The skill's source of truth lives in skills/gmail-mcp/SKILL.md; make sync-skills mirrors it to the landing page's /.well-known/agent-skills/ discovery tree (digest-pinned in index.json).

Related MCP server: MCP Template

App Distribution

  • MCP server with OAuth

  • Claude and ChatGPT connectors

  • APIs and SDKs

  • Chat interfaces like iMessage and WhatsApp

  • A dashboard that uses the same MCP layer

  • Open source

Direction

This repo is being refactored in place from a single Gmail MCP into a polyglot monorepo of small, utilitarian, streamable-HTTP MCP servers that Edison hosts as first-party, open-source connectors - commodity capabilities (image preview & hosting, PDF, and more) wired cleanly for the AI era. New servers default to TypeScript on Cloudflare Workers (under servers/), while Python / FastMCP stays first-class for Gmail and heavy-dependency servers. Everything can be self-hosted or Edison-hosted with per-user auth.

Full plan - topology, runtime choice, MCP-UI, and the Edison auth/catalog integration - lives in docs/mcp_commodity_fleet_strategy.md.

Key Features

Feature

Stack

CLI (auto-discovery commands, global flags, shell completions, self-update)

Typer

MCP server (streamable HTTP at /mcp, services auto-registered as tools; stdio supported for local dev)

FastMCP

HTTP API server (also hosts /mcp)

FastAPI + Uvicorn

Auth

WorkOS + API keys

Payments

Stripe

Database + migrations

SQLAlchemy + Alembic

Config (YAML + .env)

Pydantic-settings

LLM inference + observability

DSPY + LiteLLM + LangFuse

Testing

pytest + TestTemplate

Lint / type / dead-code

Ruff + Vulture + ty + import-linter

Pre-commit (folder size, ai-writing, agent-config sync)

prek

Telemetry

Anonymous, opt-out

Architecture

One codebase, three interfaces. Write business logic once in services/ and it ships as a CLI subcommand, an MCP tool, and an HTTP route - same Pydantic input/output contract everywhere.

┌──────────────┐  ┌──────────────┐  ┌──────────────┐
│ src/cli/app  │  │ mcp_server/  │  │ api_server/  │   transport / interface
│  (Typer)     │  │ (FastMCP)    │  │ (FastAPI)    │
└──────┬───────┘  └──────┬───────┘  └──────┬───────┘
       │                 │                 │
       └─────────────────┼─────────────────┘
                         ▼
                 ┌───────────────┐
                 │  services/    │   pure @service functions
                 │  @service     │   (transport-agnostic)
                 └───────┬───────┘
                         ▼
                 ┌───────────────┐
                 │  models/      │   Pydantic I/O contracts
                 └───────┬───────┘
                         ▼
        ┌────────────┬───────┬────────────┬─────────────┐
        │ common/    │ db/   │ utils/llm/ │ src/utils/  │   shared infra
        │ (config)   │ (ORM) │ (DSPY)     │ (logs/theme)│
        └────────────┴───────┴────────────┴─────────────┘

MCP UI (optional)

Need elicitation, image output, or an iframe dashboard for an MCP tool? Add an opt-in enhancer in mcp_server/enhancers/. Enhancers wrap a service for the MCP transport only - the pure service stays untouched and CLI/API consumers are unaffected.

See mcp_server/MCP_UI_ARCHITECTURE.md for the full design.

Quick Start

uv sync                   # install deps
uv run edisonmcps --help       # see all CLI commands
uv run edisonmcps greet Alice  # run a command
uv run edisonmcps init my_command  # scaffold a new command

uv run edisonmcps-serve        # start the server (HTTP API + MCP at /mcp on one port)
uv run edisonmcps-mcp          # legacy: stdio MCP only, for local Claude Desktop / dev

Deploy

One-click deploy to Railway or Render (backend + managed Postgres, migrations run automatically). See deployment docs for the per-platform setup, the Railway template variable map, and OAuth/secret wiring.

CLI Usage

Global flags go before the subcommand:

Flag

Short

Description

--verbose

-v

Increase output verbosity

--quiet

-q

Suppress non-essential output

--debug

Show full tracebacks on error

--format

-f

Output format: table, json, plain

--dry-run

Preview actions without executing

--version

-V

Print version and exit

uv run edisonmcps --format json config show     # JSON output
uv run edisonmcps --dry-run greet Bob           # preview without executing
uv run edisonmcps --verbose greet Alice         # detailed output

Adding Commands

Drop a Python file in src/cli/commands/ and it is auto-discovered.

Single command - export a main() function:

# src/cli/commands/hello.py
from typing import Annotated
import typer

def main(name: Annotated[str, typer.Argument(help="Who to greet.")]) -> None:
    """Say hello."""
    typer.echo(f"Hello, {name}!")
uv run edisonmcps hello World   # Hello, World!

Subcommand group - export app = typer.Typer():

# src/cli/commands/db.py
import typer

app = typer.Typer()

@app.command()
def migrate() -> None:
    """Run migrations."""
    ...
uv run edisonmcps db migrate

Or scaffold with: uv run edisonmcps init my_command --desc "Does something".

Configuration

from common import global_config

# Access config values from common/global_config.yaml
global_config.example_parent.example_child

# Access secrets from .env
global_config.OPENAI_API_KEY

CLI config inspection:

uv run edisonmcps config show                           # full config
uv run edisonmcps config get llm_config.cache_enabled   # single value
uv run edisonmcps config set logging.verbose false      # write override

Full configuration docs

Credits

This software uses the following tools:

About the Core Contributors

Made with contrib.rocks.

Available Tools

50 tools
gmail_add_attachmentA

Attach one file to an existing Gmail draft and return the draft's full attachment list (each with attachment_id, filename, mime_type, size_bytes). Only the attachments change - body, subject, and recipients are preserved exactly. Pass the file as 'attachment' (filename + mime_type + base64 data_base64).

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idNo
draft_idYes
attachmentYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
draft_idYes
attachmentsNo

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 bears the full burden of disclosing behavior. It truthfully describes the side effects (only attachments change) and the return value. However, it omits important details such as requirements for the draft to exist, size limits beyond the schema's maxLength, error handling, or permissions, leaving gaps in transparency for an agent.

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

Conciseness5/5

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

The description is two sentences with no fluff. The first sentence communicates the action, return value, and preservation of other fields; the second succinctly specifies how to pass the attachment. Every sentence is essential and front-loaded, making it easy to scan.

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, the description covers the core functionality well: what it does, what it returns, and the input format. It lacks details on error conditions or prerequisites (e.g., draft must exist), but the presence of an output schema and clear parameter schema mitigate this. It is reasonably complete for a single-purpose attachment tool.

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

Parameters3/5

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

The input schema already provides rich descriptions for each parameter (e.g., filename, MIME type, base64 data). The tool description adds a brief summary ('Pass the file as attachment (filename + mime_type + base64 data_base64)') but does not significantly enhance understanding beyond the schema. Since schema coverage is high, baseline 3 is appropriate.

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

Purpose4/5

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

The description clearly states the tool attaches one file to an existing Gmail draft and returns the updated attachment list. It specifies what changes and what remains unchanged, making the purpose specific and actionable. However, it does not explicitly differentiate from sibling tools like gmail_remove_attachment or gmail_get_attachment, leaving some ambiguity for agents comparing options.

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 when to use the tool (when adding an attachment to a draft without altering other parts) and states that only attachments change. It does not provide explicit context on when NOT to use it or mention alternative tools, but the guidance is sufficient for basic scenarios.

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

gmail_archive_threadC

Archive a Gmail thread by removing the INBOX label. Also marks the thread dismissed in the curation ledger. During a triage pass, continue on to the next uncurated or stale thread.

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idNo
thread_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
archivedYes

TDQS

C2.7/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 archiving removes the INBOX label and marks the thread dismissed in the curation ledger, as well as auto-advancing during triage. However, it does not mention authorization needs, rate limits, or side effects when not in a triage pass.

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 three sentences long, with the main action in the first sentence. It is fairly efficient and front-loaded with the purpose. Minor waste could be trimmed, but overall 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 has two parameters and an output schema. The description covers behavioral aspects but leaves out parameter documentation and return value explanation. Given the lack of annotations, this is incomplete for an agent to confidently use the tool.

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

Parameters1/5

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

The schema description coverage is 0%, so the description must explain parameters. It does not mention thread_id or user_id at all. The agent receives no guidance on what these parameters represent or how to use them.

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 archives a Gmail thread by removing the INBOX label and mentions marking the thread dismissed in the curation ledger. This is a specific verb+resource combination. However, it does not explicitly differentiate from the sibling tool gmail_inbox.archive, which might have a similar purpose.

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 use during a triage pass with the phrase 'During a triage pass, continue on to the next uncurated or stale thread.' But it provides no explicit guidance on when to use this tool versus alternatives like gmail_inbox.archive, nor does it state when not to use it.

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

gmail_composeA

Create a new Gmail draft from the given fields and open an interactive composer UI. Returns the draft's actual saved state - draft_id, thread_id, recipients, subject, a body_preview, and the attachment list (each with attachment_id, filename, mime_type, size_bytes) - so you can verify what was saved without a follow-up gmail_get_draft. To edit it afterward use gmail_update_draft, which preserves omitted fields and keeps attachments unless you clear them. ALWAYS use this tool instead of composing email text in chat - it creates a real Gmail draft where the user can review, edit, and send. When an interactive UI is rendered alongside the result, keep your text response brief since the user can edit in the UI.

ParametersJSON Schema
NameRequiredDescriptionDefault
ccNo
toYes
bccNo
bodyYes
subjectYes
user_idNo
attachmentsNo
in_reply_to_thread_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
ccNo
toNo
bccNo
bodyNo
subjectNo
draft_idYes
thread_idNo
attachmentsNo

TDQS

A4.4/5.0
Behavior5/5

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

Discloses that it creates a draft, returns saved state, and opens an interactive UI. No annotation contradiction.

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 informative and well-structured, but slightly wordy with 5 sentences.

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?

Covers essential behavior, return values, and editing workflow, but could include more parameter details given the complexity.

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

Parameters2/5

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

With 0% schema description coverage, the description does not elaborate on individual parameters, only stating 'from the given fields'. The schema is self-explanatory but the description adds minimal parameter 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 clearly states it creates a new Gmail draft and opens an interactive composer UI, distinguishing it from siblings like gmail_send and gmail_update_draft.

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

Usage Guidelines5/5

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

Explicitly tells the agent to always use this tool instead of composing email text in chat, and mentions alternatives like gmail_update_draft for editing.

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

gmail_composer.discardC

Delete the current draft.

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idNo
draft_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
discardedYes

TDQS

C2.6/5.0
Behavior2/5

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

Description implies a destructive action but provides no details on side effects, irreversibility, permissions, or error conditions. Without annotations, this is insufficient for an AI agent to understand implications.

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?

Single sentence, concise. No unnecessary words. However, it is so brief that it sacrifices clarity. Still, it earns points for brevity.

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

Completeness2/5

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

Despite having an output schema, the description lacks context about the operation's impact (e.g., permanent deletion). It does not address potential errors or prerequisites, leaving the agent poorly informed.

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

Parameters1/5

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

Schema description coverage is 0%. The description does not explain any parameter (e.g., purpose of user_id, format of draft_id). Agent must rely solely on parameter names and types, which is inadequate.

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?

Description clearly states the verb 'Delete' and resource 'draft', which is straightforward. However, it does not distinguish from sibling tools like gmail_discard_draft or gmail_composer.save_draft, so it lacks full differentiation.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives (e.g., gmail_discard_draft). No prerequisites or use cases mentioned.

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

gmail_composer.get_attachmentC

Fetch the raw base64 data for an attachment on a message.

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idNo
message_idYes
attachment_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
sizeNo
message_idYes
data_base64Yes
attachment_idYes

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are provided, so the description bears full responsibility. It only states it fetches raw base64 data, but omits any behavioral context like authorization requirements, rate limits, error handling for missing attachments, or size limits.

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

Conciseness4/5

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

The description is a single efficient sentence with no filler. However, some additional detail (e.g., a note on parameter usage) could be added without significant bloat, so it is not maximally concise for the information needed.

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

Completeness2/5

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

Despite having an output schema (so return values are covered elsewhere), the description lacks critical context: no mention of how to obtain attachment_id or message_id, and no usage guidance. For a simple fetch tool, it is minimally complete but leaves gaps.

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

Parameters1/5

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

Schema description coverage is 0%, yet the description adds no meaning to the parameters (user_id, message_id, attachment_id). It fails to explain what each parameter represents or how to obtain them, leaving the agent to infer solely from parameter names.

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 ('Fetch'), the resource ('attachment'), and the format ('raw base64 data'), making it specific and distinguishable from sibling tools like gmail_add_attachment or gmail_remove_attachment. It fully explains what the tool does.

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 such as gmail_get_attachment or other attachment-related tools. No context on prerequisites (e.g., message must be opened) or when not to use it.

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

gmail_composer.get_threadB

Fetch the full thread for display in the composer's thread panel.

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idNo
thread_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
draftNo
messagesYes
thread_idYes

TDQS

B3/5.0
Behavior2/5

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

No annotations are provided, so the description must cover behavioral traits. It only states the tool fetches the thread but does not disclose permissions, rate limits, or what constitutes a 'full thread.' The behavioral context is minimal.

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

Conciseness4/5

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

The description is a single concise sentence that front-loads the core action. However, it is somewhat under-specified for the required detail, but not verbose.

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

Completeness2/5

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

Given the tool has an output schema and two parameters, the description omits essential context like expected input format for thread_id, behavior when user_id is not provided, and whether the thread must already be loaded. Incomplete for effective invocation.

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

Parameters1/5

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

Schema description coverage is 0%, yet the description does not explain either parameter (user_id or thread_id). It adds no meaning beyond the schema structure, failing to compensate for the lack of parameter descriptions.

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 fetches the full thread for display in the composer's thread panel, specifying the verb and resource. It distinguishes itself from the generic gmail_get_thread sibling by adding the composer context.

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

Usage Guidelines3/5

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

The description implies the tool is for displaying a thread in the composer panel but does not explicitly state when to use it over alternatives like gmail_get_thread or any prerequisites. No when-not-to-use guidance is given.

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

gmail_composer.refreshB

Re-fetch the current draft (used by the composer to poll for agent edits).

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idNo
draft_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
ccNo
toNo
bccNo
bodyNo
subjectNo
draft_idYes
thread_idNo
attachmentsNo

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 must fully disclose behavioral traits. It states the action (re-fetch draft) but does not clarify if the tool is read-only, destructive, or requires specific permissions. The description lacks transparency about side effects or prerequisites.

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 immediately conveys the action and context. It is appropriately sized with no wasted words.

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

Completeness2/5

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

Given the tool has no annotations and parameters, the description is too minimal. It does not cover when to call the tool, prerequisites, or the impact of the refresh operation. The presence of an output schema slightly reduces the burden, but the description lacks enough context for an agent to use it confidently.

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

Parameters1/5

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

Schema description coverage is 0%, meaning the input schema provides no descriptions for parameters. The tool description does not explain the meaning or usage of 'user_id' (optional with default) or 'draft_id' (required), leaving the agent with no guidance on how to populate them correctly.

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 'Re-fetch' and the resource 'current draft'. It also provides context about its use in polling for agent edits, which distinguishes it from sibling tools like save_draft or send.

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 mentions it is 'used by the composer to poll for agent edits', giving some context. However, it does not explicitly state when to use vs alternatives or provide exclusions. The context is implied but not directive.

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

gmail_composer.save_draftC

Persist the current composer fields onto an existing Gmail draft.

ParametersJSON Schema
NameRequiredDescriptionDefault
ccNo
toNo
bccNo
bodyNo
subjectNo
user_idNo
draft_idYes
attachmentsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
ccNo
toNo
bccNo
bodyNo
subjectNo
draft_idYes
thread_idNo
attachmentsNo

TDQS

C2.7/5.0
Behavior2/5

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

No annotations exist, and the description only says 'persist' without explaining behavioral traits like overwrite behavior, auth requirements, or side effects.

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

Conciseness4/5

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

Single sentence is concise and front-loaded, but could benefit from more detail without significant bloat.

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

Completeness1/5

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

Despite having an output schema, the description lacks context on return values, errors, or any additional behavioral detail needed given 8 parameters and no annotations.

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

Parameters1/5

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

Schema description coverage is 0%, and description adds no explanation for any of the 8 parameters beyond their names.

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 ('persist') and resource ('current composer fields onto an existing Gmail draft'), distinguishing it from sibling tools like send or discard.

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 vs alternatives (e.g., save_draft vs send), or when not to use it.

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

gmail_composer.sendC

Persist composer fields then send the draft via Gmail.

ParametersJSON Schema
NameRequiredDescriptionDefault
ccNo
toNo
bccNo
bodyNo
subjectNo
user_idNo
draft_idYes
attachmentsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
sent_atYes
thread_idNo
message_idYes

TDQS

C2.6/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 mentions persistence and sending, but provides no details on required permissions, rate limits, side effects, or error conditions. The mutation intent is implied but not explicit.

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?

Single sentence, no wasted words. However, it is so concise that it sacrifices clarity and completeness.

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

Completeness2/5

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

Given the 8 parameters, required draft_id, and existence of output schema, the description is insufficient. It does not explain return values, prerequisites, or how the 'composer fields' are used.

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

Parameters1/5

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

Schema description coverage is 0% and the description adds no meaning to any of the 8 parameters. Parameters like cc, to, bcc, body, subject are not explained in context of the tool's action.

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: 'send the draft via Gmail' and mentions persisting composer fields. It distinguishes the tool from siblings like save_draft that likely don't send. However, the term 'composer fields' is vague.

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 such as gmail_composer.save_draft or gmail_send. No when-not or selection criteria provided.

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

gmail_connectC

Begin the Google OAuth flow to link a Gmail account

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
stateYes
auth_urlYes

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 full burden. It mentions 'OAuth flow' but does not disclose key behaviors like whether user interaction is required, if a redirect URL is returned, or that authentication may persist. This is minimal for an authentication tool.

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

Conciseness3/5

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

The description is a single sentence, which is concise but too brief for an authentication flow. It lacks important details such as the outcome of the OAuth flow, making it less effective despite its brevity.

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

Completeness2/5

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

The tool has an output schema (as noted in context signals), but the description does not clarify what the output contains (e.g., auth URL, tokens, success status). For a critical setup tool, more context is needed.

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

Parameters1/5

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

The sole parameter 'user_id' has a default value but no description in the schema (0% coverage). The tool description does not explain the purpose or format of this parameter, leaving the agent without needed 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 clearly states the tool initiates a Google OAuth flow to link a Gmail account. It uses a specific verb 'Begin' and resource 'Google OAuth flow' and distinguishes from sibling tools which focus on inbox actions, sending, etc.

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

Usage Guidelines3/5

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

The description implies that this tool is a prerequisite for other Gmail operations, but it does not explicitly state when to use it (e.g., 'call before other Gmail tools') or provide alternatives. No guidance on when not to use it.

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

gmail_curate_inboxA

Rank recent inbox threads by a deterministic heuristic score and render the inbox dashboard. This is a quick provisional view, NOT the assistant's own triage: for 'what's important / triage my inbox', prefer inbox_get_curation (banked LLM verdicts + coverage), going deeper with inbox_search + inbox_save_curation when coverage shows uncurated/stale threads. When an interactive UI is rendered alongside the result, keep your text response brief (a one-line summary) since the user can browse details in the UI. Only elaborate if the user asks.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryNo
user_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
threadsYes

TDQS

A4.4/5.0
Behavior4/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 ranking is deterministic heuristic (not LLM-based) and that it renders a dashboard. Minor omission: no mention of any potential side effects or permissions, but it is safe for a read-like 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, well-structured paragraph. It front-loads the primary purpose, then provides caveats and usage guidance. Every sentence adds value, and there is no wasted text.

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

Completeness5/5

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

Given that the tool has an output schema (so return values don't need explanation) and the description clearly covers purpose, alternatives, and UI behavior, it is complete for an inbox curation tool of moderate complexity.

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

Parameters2/5

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

Schema description coverage is 0%; the description does not mention any of the three parameters (limit, query, user_id). The schema provides basic info (type, defaults), but the description adds no semantic guidance on how to use these parameters effectively.

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

Purpose5/5

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

The description starts with a clear verb and resource: 'Rank recent inbox threads by a deterministic heuristic score and render the inbox dashboard.' It distinguishes the tool from sibling tools by stating it is a quick provisional view, not the assistant's own triage.

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

Usage Guidelines5/5

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

Explicitly states when to use this tool (for a quick provisional view) and when not to (for triage, prefer inbox_get_curation). Also provides guidance on UI interaction: keep response brief when UI is rendered.

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

gmail_discard_draftC

Delete a Gmail draft by id

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idNo
draft_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
discardedYes

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are provided, so the description must fully disclose behavioral traits. It only mentions deletion, but does not address permanence, authentication requirements, or side effects (e.g., whether the draft is permanently lost). This is insufficient for a destructive action.

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

Conciseness3/5

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

The description is a single concise sentence, front-loaded with the key action. However, it lacks necessary elaboration, making it underspecified. It is efficient but not sufficiently informative.

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 moderate complexity (2 parameters, destructive, output schema exists but not described), the description is too minimal. It fails to explain the output, error handling, or usage context. Sibling tools suggest a rich ecosystem, but this description isolates the tool without contextual connections.

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

Parameters2/5

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

With 0% schema description coverage, the description must explain both parameters. It clarifies draft_id via 'by id', but does not mention user_id at all, leaving its purpose ambiguous. The default value is not explained.

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 (Delete) and resource (Gmail draft) and the method (by id). However, it does not differentiate from the sibling tool gmail_composer.discard, which may perform a similar action.

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 vs alternatives like gmail_composer.discard or context regarding prerequisites. The description only states the core action without usage context.

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

gmail_disconnectB

Revoke and remove the user's linked Gmail account

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
revokedYes

TDQS

B3.3/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. It discloses destructive behavior (revoke/remove) but lacks detail on side effects, reversibility, or required permissions.

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

Conciseness4/5

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

Single concise sentence with no wasted words. However, it omits parameter details, making it slightly under-informative.

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 existence of an output schema and one optional parameter, the description is adequate but incomplete. It doesn't explain parameter behavior or use case nuances.

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

Parameters1/5

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

Schema description coverage is 0%, and the description adds no information about the 'user_id' parameter. Its purpose and effect remain unclear.

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 ('revoke and remove') and identifies the resource ('user's linked Gmail account'). It clearly distinguishes from siblings like gmail_connect.

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

Usage Guidelines3/5

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

No explicit guidance on when to use this tool versus alternatives. Usage is implied from context, but no prerequisites or exclusions are mentioned.

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

gmail_get_attachmentA

Fetch the raw base64 bytes of a single attachment or inline image on a Gmail message, identified by the message_id + attachment_id echoed by gmail_get_thread. Use this to pull one file on demand instead of loading every attachment into the thread payload. data_base64 is raw encoded bytes, not a rendered image - you cannot read an image's contents from it; on vision-capable MCP hosts, image attachments are additionally rendered into context as a viewable image.

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idNo
message_idYes
attachment_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
sizeNo
message_idYes
data_base64Yes
attachment_idYes

TDQS

A4.6/5.0
Behavior4/5

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

No annotations provided, so description carries full burden. It discloses that data_base64 is raw encoded bytes, not a rendered image, and notes that on vision-capable hosts images are rendered as viewable. Lacks details on error handling or authentication, but covers the core 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?

Two concise sentences: first defines the action, second provides usage guidance and a behavioral warning. No fluff, every sentence 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?

Covers the main aspects: what it does, how to identify attachment, output format, and image rendering caveat. Output schema exists but not shown; still, description is fairly complete. Could mention error scenarios but not critical.

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 has 0% description coverage, but description adds meaning: explains that message_id and attachment_id come from gmail_get_thread. Does not explain user_id (optional) but overall compensates for lack of schema descriptions.

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 it fetches raw base64 bytes of a single attachment or inline image, identifying the resource (attachment) and action (fetch). It distinguishes from siblings like gmail_get_thread and gmail_add_attachment by specifying it pulls one file on demand.

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

Usage Guidelines5/5

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

Explicitly says to use when you need a single attachment instead of loading all, and warns that data_base64 is raw bytes, not a rendered image. Also mentions how to obtain message_id and attachment_id from gmail_get_thread.

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

gmail_get_draftC

Fetch a single Gmail draft by id

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idNo
draft_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
ccNo
toNo
bccNo
bodyNo
subjectNo
draft_idYes
thread_idNo
attachmentsNo

TDQS

C2.5/5.0
Behavior1/5

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

With no annotations, the description fails to disclose any behavioral traits such as authentication needs, error handling, rate limits, or what happens if the draft is not found.

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

Conciseness3/5

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

The description is a single sentence, not verbose, but it lacks essential information; it is adequate in length but not optimally informative.

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 simple fetch operation and existence of an output schema, the description is incomplete; it does not mention error scenarios or any behavioral context.

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

Parameters1/5

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

Schema coverage is 0% and the description adds no meaning beyond the schema; it does not explain 'user_id' or the format of 'draft_id', leaving the agent without guidance.

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

Purpose5/5

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

The description clearly states it fetches a single Gmail draft by ID, using specific verb 'Fetch' and resource 'single Gmail draft by id', distinguishing it from sibling tools like gmail_list_drafts.

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 gmail_list_drafts or gmail_update_draft, nor any context or prerequisites mentioned.

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

gmail_get_focused_emailB

Return the email thread the user is currently viewing in the inbox UI. Call this when the user asks about 'this email', 'the email I'm looking at', or references the currently open thread.

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
from_No
focusedYes
subjectNo
messagesNo
thread_idNo
message_countNo

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 must disclose behavioral traits. It only states the action without mentioning whether it's read-only, requires permissions, or has side effects.

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

Conciseness5/5

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

Two sentences, no filler, front-loaded with the core function. Every word adds value.

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 parameter documentation and behavioral transparency, the description is incomplete despite having an output schema which reduces the need for return value info.

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

Parameters1/5

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

The sole parameter user_id is not described at all. With 0% schema description coverage, the description should explain when or why to provide this parameter, but it does not.

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 'Return the email thread the user is currently viewing in the inbox UI.' It uses a specific verb and resource, and distinguishes from siblings like gmail_get_thread which requires a thread ID.

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?

Provides explicit usage context: 'Call this when the user asks about...' but does not mention when not to use it or mention alternatives like gmail_get_thread for non-focused threads.

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

gmail_get_threadA

Fetch a Gmail thread by id with full message bodies. By default attachment/inline-image bytes are omitted (each attachment still carries filename, mime_type, size, attachment_id) to keep the payload small - fetch a file on demand with gmail_get_attachment. Pass include_attachment_data=true to inline bytes, or strip_quoted_replies=true to drop repeated quoted history. When an interactive UI is rendered alongside the result, keep your text response brief since the user can browse the conversation in the UI.

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idNo
thread_idYes
strip_quoted_repliesNo
include_attachment_dataNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
draftNo
messagesYes
thread_idYes

TDQS

A4.1/5.0
Behavior3/5

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

Discloses key behaviors: attachment bytes omitted by default, metadata retained, options to include data or strip quotes. No annotations exist, so description carries full burden; could mention rate limits or auth requirements.

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?

Three sentences, concise and front-loaded with core action. The UI note is mildly tangential but still useful.

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?

Adequately covers retrieval logic and optional behaviors for a tool with output schema. No critical gaps for typical use.

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?

Explains thread_id (implied), include_attachment_data, and strip_quoted_replies with added context. Does not mention user_id. Given 0% schema coverage, description adds significant meaning.

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 fetches a Gmail thread by ID with full message bodies, using a specific verb and resource.

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?

Provides guidance on default behavior (omitting attachments) and when to use optional parameters. Differentiates from gmail_get_attachment for fetching files, but lacks explicit when-not-to-use scenarios.

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

gmail_inbox.archiveC

Archive a thread (removes the INBOX label).

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idNo
thread_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
archivedYes

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations, the description must disclose all behavioral traits. It only mentions removing the INBOX label but omits other effects (e.g., whether it marks as read, permissions needed, or irreversibility).

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

Conciseness4/5

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

The description is a single sentence that is directly to the point, but it could be slightly expanded without losing conciseness (e.g., adding a note about thread scope).

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 presence of an output schema, the description is minimally adequate. However, it lacks information on error states, required permissions, or side effects, leaving gaps for such a simple operation.

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

Parameters2/5

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

Schema description coverage is 0%, and the description adds no explanation for the two parameters (user_id, thread_id) beyond their names. The agent must infer meaning from the context.

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 (archive) and the effect (removes INBOX label), making the purpose specific. However, it does not differentiate from the similar sibling 'gmail_archive_thread', which could cause confusion.

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 gmail_archive_thread or gmail_inbox.mark_read. The agent receives no context about prerequisites or conditions.

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

gmail_inbox.forwardC

Create a forward draft for a message in a thread.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyNo
subjectNo
user_idNo
thread_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
ccNo
toNo
bccNo
bodyNo
subjectNo
draft_idYes
thread_idNo
attachmentsNo

TDQS

C2.8/5.0
Behavior2/5

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

Despite no annotations, the description only states what the tool does without disclosing effects like whether it modifies the thread or adds a draft. Missing details like permissions needed or side effects.

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

Conciseness4/5

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

Single sentence, 10 words, no fluff. However, it could be expanded slightly to add value 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?

Given the tool has 4 parameters and an output schema, the description is too minimal. It does not explain what the output is, how the draft relates to the thread, or how this differs from similar tools like gmail_composer.save_draft.

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

Parameters1/5

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

Schema description coverage is 0%, yet the description provides no explanation for any of the 4 parameters. Only 'thread_id' is implied by the phrase 'for a message in a thread', but body, subject, and user_id are not explained.

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 ('Create'), the resource ('forward draft'), and the context ('for a message in a thread'). This differentiates from sibling tools like gmail_inbox.reply (reply to thread) and gmail_archive_thread (archive).

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 vs. alternatives (e.g., gmail_composer.send, gmail_inbox.reply). No mention of prerequisites like opening the thread or that it creates a draft that must be sent later.

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

gmail_inbox.mark_doneC

Mark a thread as done (applies MCP/Done label, hides from curated inbox).

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idNo
thread_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
label_idNo
marked_doneYes

TDQS

C2.9/5.0
Behavior3/5

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

The description discloses key behavioral traits: it applies a label and hides from curated inbox. Since annotations are absent, the description carries the burden, but it lacks details on reversibility, permissions, or side effects. Adequate but not thorough.

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

Conciseness5/5

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

The description is a single, concise sentence with no wasted words. It efficiently communicates the purpose and primary effect.

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

Completeness2/5

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

Despite having an output schema (not provided), the description lacks usage guidance, parameter details, and differentiation from siblings. For a simple tool, it covers basic purpose but is incomplete for effective selection and invocation.

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

Parameters1/5

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

The input schema has two parameters (user_id, thread_id) with 0% description coverage. The tool description provides no additional meaning about these parameters, such as required format or allowed values. Baseline 3 is not applicable because schema coverage is low.

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 ('Mark a thread as done') and specifies the effect ('applies MCP/Done label, hides from curated inbox'). However, it does not differentiate from the sibling tool 'gmail_mark_thread_done', which may have identical behavior.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus siblings like 'gmail_archive_thread', 'gmail_inbox.mark_read', or 'gmail_mark_thread_done'. The description implies usage for marking done and hiding, but no explicit when-not or alternatives.

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

gmail_inbox.mark_readB

Mark a thread as read (removes the UNREAD label).

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idNo
thread_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
marked_readYes

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations, the description solely discloses the behavior: removing the UNREAD label. This is accurate for a simple boolean toggle, but it omits idempotency (what if already read?), permission requirements, or consequences for related labels. Adequate but not thorough.

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

Conciseness4/5

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

The description is extremely concise at one sentence and front-loads the action. It avoids verbosity, but could be slightly expanded to include parameter hints without losing efficiency.

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 tool with an output schema, the description covers the core action. However, it lacks explanation of return value, edge cases (already read, invalid thread_id), and guidance on the optional user_id parameter. Completeness is adequate but not robust.

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

Parameters2/5

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

The description does not mention any parameters. Given 0% schema description coverage, the tool relies entirely on this description to explain parameters. The names thread_id and user_id are somewhat self-explanatory, but the description adds no contextual meaning (e.g., format of thread_id, default behavior for user_id).

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

Purpose5/5

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

The description clearly states the action ('Mark a thread as read') and explains the effect ('removes the UNREAD label'). This distinguishes it from siblings like gmail_archive_thread which moves rather than marks. The verb+resource is specific and unambiguous.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like gmail_mark_thread_read or gmail_inbox.archive. There is no mention of prerequisites, thread state expectations, or cases where this tool is inappropriate.

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

gmail_inbox.open_threadC

Fetch a single thread for the inbox reader app.

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idNo
thread_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
draftNo
messagesYes
thread_idYes

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavioral traits. It only says 'fetch', implying read-only, but does not explicitly state safety, permissions, or side effects.

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

Conciseness3/5

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

The description is a single sentence with no waste, but it is too brief to be adequately informative. It does not front-load critical context.

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

Completeness1/5

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

Given the lack of annotations and parameter explanations, the description is far from complete. It does not cover return values, usage context, or differentiation from similar sibling tools.

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

Parameters1/5

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

Schema coverage is 0%; the description does not mention 'thread_id' or 'user_id', adding no meaning beyond the raw schema. It fails to compensate for the lack of schema explanations.

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 'Fetch a single thread', which is a specific verb and resource. However, it does not differentiate from the sibling tool 'gmail_get_thread' which likely performs a similar function.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like 'gmail_get_thread' or 'gmail_inbox.reply'. No usage context is provided.

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

gmail_inbox.refreshC

Re-run gmail_curate_inbox (called by the inbox reader app).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryNo
user_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
threadsYes

TDQS

C2.3/5.0
Behavior2/5

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

With no annotations, the description must disclose behavioral traits. It only says the tool re-runs a curation process, implying it may have side effects, but it does not detail what those effects are, what data is modified, or any required permissions.

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

Conciseness2/5

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

The description is extremely brief (one sentence), but it omits critical information. It is under-specified rather than efficiently concise, which reduces its helpfulness.

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

Completeness1/5

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

Given the presence of three undocumented parameters, no annotations, and many sibling tools, the description is severely incomplete. It fails to explain parameter behavior, output, or how this tool fits into the broader workflow.

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

Parameters1/5

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

The schema has 0% description coverage for three parameters, and the description adds no information about them. The agent must guess the meaning and usage of 'limit', 'query', and 'user_id' based solely on names.

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

Purpose4/5

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

The description states a specific action ('Re-run gmail_curate_inbox') which identifies the tool's purpose. However, it does not differentiate this tool from siblings like gmail_curate_inbox itself, and the meaning of 'curate' is ambiguous without additional context.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It mentions being called by an inbox reader app, but does not specify conditions, prerequisites, or when not to use it.

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

gmail_inbox.replyC

Create a reply draft on a thread (the composer app opens it next).

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyNo
subjectNo
user_idNo
thread_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
ccNo
toNo
bccNo
bodyNo
subjectNo
draft_idYes
thread_idNo
attachmentsNo

TDQS

C2.9/5.0
Behavior3/5

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

With no annotations, the description alone must disclose behavior. It confirms the tool creates a draft and opens the composer, but does not address permissions, side effects (e.g., whether the draft is saved to the server), or any limitations. It provides basic transparency but lacks depth.

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 conveys the core functionality without unnecessary words. It is front-loaded and to the point, earning full marks for brevity.

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

Completeness2/5

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

Given the complexity of a Gmail reply draft tool with 4 parameters (1 required) and zero schema descriptions, the description is too sparse. It fails to clarify parameter usage, return values, or integration with other tools like gmail_composer.save_draft. The presence of an output schema does not compensate for the lack of parameter guidance.

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

Parameters1/5

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

The input schema has 0% description coverage, and the tool description does not explain any parameters (body, subject, user_id, thread_id). The agent must rely solely on parameter names, which is insufficient, especially for ambiguous fields like 'user_id'.

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 reply draft') and the resource ('on a thread'), with a note about the composer app opening. However, it does not explicitly distinguish this tool from similar sibling tools like gmail_reply_to_thread.

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 lacks explicit when-to-use, when-not-to-use, or prerequisite information. The note about the composer app implies a workflow but is insufficient.

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

gmail_inbox.set_focusC

Store which thread the user is currently viewing (called by inbox UI).

ParametersJSON Schema
NameRequiredDescriptionDefault
from_No
subjectNo
user_idNo
messagesNo
thread_idNo
message_countNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
okNo

TDQS

C2.4/5.0
Behavior2/5

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

No annotations provided, so description must convey behavior. It hints at a write operation ('store') but lacks details on persistence, side effects, auth requirements, or rate limits.

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

Conciseness3/5

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

Single sentence is concise, but lacks structure such as a summary or bullet points. Could be more informative without added length.

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

Completeness2/5

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

Despite having an output schema, the description fails to provide essential usage context, parameter meanings, or behavioral cues. An agent would struggle to use this tool correctly.

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

Parameters1/5

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

Schema description coverage is 0%. Description provides no explanation for any of the 6 parameters (e.g., from_, subject, messages, etc.), leaving agents without guidance.

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?

Description clearly states verb 'store' and resource 'which thread the user is currently viewing', distinguishing it from siblings like gmail_inbox.open_thread and gmail_get_focused_email. The mention 'called by inbox UI' provides context.

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 only states it's called by the inbox UI, but does not specify conditions for selection or exclusions.

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

gmail_inbox.unmark_doneC

Remove the done marker from a thread (undo mark-done).

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idNo
thread_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
unmarked_doneYes

TDQS

C2.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 fully convey behavioral traits. It implies mutation but does not disclose side effects, permissions required, reversibility, or what the output contains. The existence of an output schema is not utilized to clarify return values.

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

Conciseness3/5

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

The description is very short, consisting of a single phrase. While it is concise and front-loaded, it sacrifices completeness. Every word earns its place, but it omits important details that could be included without verbosity.

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 is a simple undo action and an output schema exists (though not provided in the input), the description should still mention error conditions, authentication needs, or return value overview. It currently lacks contextual completeness for confident use.

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

Parameters1/5

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

Schema description coverage is 0%, meaning no parameter descriptions are in the schema, and the description adds none either. It does not explain the purpose of 'user_id' or the format of 'thread_id'. The description adds no value beyond the parameter names.

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's purpose: 'Remove the done marker from a thread (undo mark-done).' It identifies a specific action on a specific resource. However, there is a sibling named 'gmail_unmark_thread_done' with an identical name and purpose, which could cause confusion.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'gmail_unmark_thread_done' or 'gmail_inbox.mark_done'. There is no mention of prerequisites, conditions, or typical contexts.

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

gmail_list_draftsB

List the user's Gmail drafts

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
user_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
draftsYes

TDQS

B3/5.0
Behavior2/5

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

No annotations provided, so description must convey behavioral traits. Only states 'list', missing details like pagination, ordering, or whether it returns full draft content. Insufficient for a tool with no annotations.

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 with no fluff. Every word adds value.

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?

With output schema existing, description doesn't detail return format. However, for a list tool with no annotations, more context about behavior (e.g., sorting, draft state) would improve completeness.

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

Parameters1/5

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

Schema description coverage is 0% and description adds no meaning to parameters (limit, user_id). Does not explain default behavior, maximum impact, or how user_id is used.

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 uses specific verb 'List' and resource 'Gmail drafts' clearly distinguishing it from sibling tools like gmail_list_inbox. The purpose is immediately clear.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like gmail_get_draft or gmail_list_inbox. Missing context about appropriate scenarios or exclusions.

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

gmail_list_inboxA

List recent inbox messages, optionally filtered by a Gmail search query. When the user asks to find or open a specific email, ALWAYS follow up by calling gmail_get_thread with the thread_id to render the full conversation in an interactive UI.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryNo
user_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messagesYes

TDQS

A3.8/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavioral traits. It mentions 'recent' but does not define recency, nor does it describe side effects (e.g., marking as read), rate limits, or pagination 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 concise (two sentences) and front-loaded with the core purpose. Every sentence adds value without 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?

The description provides a minimal overview, but given that an output schema exists, return values need not be detailed. However, it omits important context such as message details returned, authentication requirements, and any limitations (e.g., only metadata).

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. It only hints at the 'query' parameter by mentioning Gmail search query, but provides no explanation for 'limit' or 'user_id', leaving their meanings unclear.

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

Purpose5/5

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

The description clearly states the tool's purpose: listing recent inbox messages with optional filtering. It uses specific verbs and resources (list, inbox messages) and distinguishes from siblings like gmail_get_thread by implying it's for listing, not retrieving a single thread.

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

Usage Guidelines5/5

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

The description explicitly instructs the agent to follow up with gmail_get_thread when a user asks for a specific email, providing clear guidance on when to use this tool and what to do next.

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

gmail_mark_thread_doneB

Mark a Gmail thread as done by applying the MCP/Done label (hides from curated inbox). Also marks the thread dismissed in the curation ledger. During a triage pass, continue on to the next uncurated or stale thread.

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idNo
thread_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
label_idNo
marked_doneYes

TDQS

B3.2/5.0
Behavior3/5

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

No annotations provided; description discloses applying a label and marking in a ledger, but lacks details on other side effects (e.g., inbox visibility, thread state changes).

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?

Two sentences; concise but could merge the second sentence about the curation ledger for better flow.

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?

Missing output schema description and parameter explanations; with no annotations, the description should provide more context for a tool with two parameters.

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

Parameters1/5

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

Schema description coverage is 0%; description does not explain the meaning or expected format of user_id or thread_id beyond the schema, leaving the agent underinformed.

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

Purpose5/5

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

Clearly states the tool marks a thread as done by applying a specific label and hiding it from the curated inbox. Distinguishes from archive and unmark siblings.

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

Usage Guidelines3/5

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

Mentions usage during a triage pass and continuing to the next thread, but does not explicitly state when not to use it or describe alternatives among siblings.

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

gmail_mark_thread_readB

Mark a Gmail thread as read by removing the UNREAD label

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idNo
thread_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
marked_readYes

TDQS

B3.1/5.0
Behavior3/5

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

The description reveals that the tool works by removing the UNREAD label, which adds behavioral context beyond the bare action. However, with no annotations provided, it lacks other important traits (e.g., reversibility, authentication needs, or side effects).

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no unnecessary words. Every word contributes to 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?

Given the low schema coverage (0%) and no annotations, the description is too brief. It does not explain the return value (output schema exists but is ignored) or provide sufficient context for the two parameters, leaving the agent underinformed.

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

Parameters1/5

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

The description does not explain either parameter. The input schema has 0% description coverage, so the description should add meaning for 'thread_id' and 'user_id', but it fails to do so, leaving the agent without context on required identifiers.

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

Purpose5/5

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

The description clearly states it marks a Gmail thread as read by removing the UNREAD label. It uses a specific verb ('mark') and resource ('thread'), and distinguishes itself from sibling tools like gmail_archive_thread and gmail_mark_thread_done.

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 archiving or marking done. It does not specify prerequisites, conditions, or exclusion cases.

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

gmail_remove_attachmentA

Remove one file from a Gmail draft by its attachment_id and return the draft's remaining attachment list. Only the attachments change - body, subject, and recipients are preserved exactly. The attachment_id comes from any prior draft response or gmail_get_draft.

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idNo
draft_idYes
attachment_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
draft_idYes
attachmentsNo

TDQS

A4.2/5.0
Behavior4/5

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

The description explicitly states that only attachments change and body/subject/recipients are preserved, which is key behavioral context. With no annotations, this is valuable, though it doesn't cover error behavior or permissions.

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

Conciseness5/5

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

Three sentences with no redundancy; first sentence gives core action, second clarifies side effects, third provides source for attachment_id. Front-loaded and 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 output schema exists, return values are covered. The description specifies the change scope and prerequisite, but could include error scenarios or scope requirements for a more complete picture.

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 0%, but the description adds meaning for attachment_id (source) and draft_id (implied), and partially for user_id (default only). It does not explain user_id's role or requirements.

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 'remove' and the resource 'one file from a Gmail draft', and distinguishes it from siblings like 'gmail_add_attachment' and 'gmail_get_attachment'.

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?

It explains that the attachment_id comes from 'any prior draft response or gmail_get_draft', implying when to use, but lacks explicit when-not-to-use or alternative tool references beyond the implicit distinction from add/get tools.

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

gmail_reply_to_threadA

Create a reply draft on an existing Gmail thread. ALWAYS use this tool instead of composing reply text in chat - it creates a real Gmail draft and opens an interactive composer UI where the user can review, edit, and send. Pass your drafted reply in the 'body' parameter. Recipients are yours to control: pass 'to', 'cc', and/or 'bcc' (each a comma-separated address list) to set them explicitly. If you omit 'to', it defaults to the other party in the thread (never the account owner); omitted 'cc'/'bcc' are left unset. If every message in the thread is yours (no other participant to reply to), you must pass 'to' explicitly or the call errors. When an interactive UI is rendered alongside the result, keep your text response brief since the user can edit in the UI.

ParametersJSON Schema
NameRequiredDescriptionDefault
ccNo
toNo
bccNo
bodyNo
subjectNo
user_idNo
thread_idYes
attachmentsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
ccNo
toNo
bccNo
bodyNo
subjectNo
draft_idYes
thread_idNo
attachmentsNo

TDQS

A4.2/5.0
Behavior4/5

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

Describes key behavioral traits: creates a real Gmail draft, opens an interactive composer UI, recipient default logic, and a specific error condition. It also advises on response brevity due to the UI. With no annotations provided, the description carries the full burden and does so well.

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

Conciseness5/5

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

Two paragraph structure is concise and front-loaded with the purpose. Every sentence adds value—no filler. The description efficiently conveys all necessary information in about 120 words.

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?

Covers the core use case, edge cases, and behavioral expectations. While it doesn't detail output (output schema exists) or all parameters, it provides enough context for an AI agent to select and invoke the tool correctly given the complexity and sibling tools.

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

Parameters3/5

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

Adds meaning for to, cc, bcc, and body (e.g., default behavior for 'to', explicit control). However, subject, user_id, thread_id, and attachments are not explained in the description. Given 0% schema description coverage, the description compensates partially but not fully for all 8 parameters.

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

Purpose5/5

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

Explicitly states 'Create a reply draft on an existing Gmail thread' and distinguishes itself from composing reply text in chat. The description is specific about the resource (Gmail thread) and the action (create reply draft), making its purpose unmistakable.

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?

Provides clear when-to-use instructions ('ALWAYS use this tool instead of composing reply text in chat') and covers an edge case (when 'to' must be explicitly passed if all messages are from the user). However, it does not explicitly compare to other sibling Gmail reply tools like gmail_inbox.reply.

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

gmail_sendB

Send a previously-composed Gmail draft

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idNo
draft_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
sent_atYes
thread_idNo
message_idYes

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, and the description fails to disclose behavioral traits such as whether sending deletes the draft, required authentication, or side effects. Only the basic action is described.

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, given the lack of parameter explanation, it could benefit from slightly more detail without being verbose.

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

Completeness2/5

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

With no annotations and a 0% schema description coverage, the description is insufficient. It omits prerequisites (e.g., draft must exist), success behavior, and differentiation from sibling tools like gmail_composer.send.

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

Parameters2/5

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

Schema description coverage is 0%, and the description does not explain the 'draft_id' or 'user_id' parameters beyond their names. The description adds no semantics to what the schema already shows.

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') and resource ('previously-composed Gmail draft'). It differentiates from sibling tools like gmail_composer.send (sends new email) and gmail_discard_draft (discards draft).

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 when you have a draft ID, but does not explicitly state when to use this versus alternatives like gmail_composer.send or gmail_discard_draft. No when-not guidance is given.

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

gmail_statusC

Return whether the user has a linked Gmail account

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
emailNo
scopesNo
connectedYes
granted_atNo

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are present, so the description must disclose behavior. It only states the return type but does not mention network activity, auth requirements, error conditions, or side effects.

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

Conciseness4/5

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

Single sentence is concise, but could benefit from front-loading key information. No wasted words.

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

Completeness2/5

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

Given no annotations and one undocumented parameter, the description is too minimal. It does not clarify the role of user_id, prerequisites, or what the output looks like despite having an output schema.

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

Parameters1/5

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

Schema coverage is 0% and the description does not mention the single optional parameter 'user_id'. It adds no meaning beyond the schema.

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

Purpose5/5

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

The description clearly states the tool returns a boolean about linked Gmail account, using specific verb 'Return' and resource 'whether the user has a linked Gmail account'. It distinguishes from sibling tools that perform actions or retrieve detailed data.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool vs alternatives, such as checking before using other gmail tools. Lacks any usage context.

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

gmail_unmark_thread_doneB

Remove the MCP/Done label from a thread (undo mark-done)

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idNo
thread_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
unmarked_doneYes

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the core action ('remove a label') but omits details like whether this is a permanent change, if it triggers any side effects (e.g., notifications), required permissions, or rate limits. For a mutation tool, more transparency is needed.

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 12-word sentence that conveys the essential purpose without any fluff. It is front-loaded with the verb and resource, making it easy for an agent to quickly grasp the tool's function.

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

Completeness3/5

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

The description is minimally adequate for a simple undo action, especially since an output schema exists (handling return values). However, it lacks parameter explanations and behavioral context, leaving gaps for an agent that could lead to incorrect usage or assumptions.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must add meaning to the parameters. It does not mention 'thread_id' or 'user_id' at all, leaving the agent to infer that 'thread_id' identifies the thread. No additional context about format, defaults, or optionality is provided.

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 ('remove the MCP/Done label') and the resource ('from a thread'), and explicitly frames it as an undo action for mark-done, distinguishing it from sibling tools like 'gmail_mark_thread_done' and 'gmail_inbox.mark_done'. The verb 'remove' is specific and the scope 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?

The description provides no explicit guidance on when to use this tool over its siblings, such as 'gmail_inbox.unmark_done'. There is no mention of prerequisites, when not to use it, or context for choosing among similar tools. The implied usage ('undo mark-done') is insufficient for an AI agent to make informed decisions.

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

gmail_update_draftA

Patch fields on an existing Gmail draft and open an interactive composer UI. Non-destructive by default: any field you OMIT is left unchanged on the draft, and a field set to null is CLEARED - this holds for to, cc, bcc, subject, body, and attachments. Omit 'attachments' to keep every existing file untouched (so you can edit the body repeatedly without re-uploading); pass null or [] to drop them all. 'attachments' may mix new uploads (filename + mime_type + data_base64) with references to existing files ({attachment_id}) taken from a prior response, letting you preserve specific files by id. To add or remove a single file without touching the body, prefer gmail_add_attachment / gmail_remove_attachment. The returned draft echoes the saved state (recipients, subject, body_preview, and the full attachment list with ids/filenames/sizes). ALWAYS call this tool to write or edit draft content - NEVER compose email text as plain chat text. Pass your composed text in the 'body' parameter. Keep your chat response to one brief sentence since the user can edit in the UI.

ParametersJSON Schema
NameRequiredDescriptionDefault
ccNo
toNo
bccNo
bodyNo
subjectNo
user_idNo
draft_idYes
attachmentsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
ccNo
toNo
bccNo
bodyNo
subjectNo
draft_idYes
thread_idNo
attachmentsNo

TDQS

A4.9/5.0
Behavior5/5

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

No annotations are provided, so the description fully discloses behavior: non-destructive by default, fields omitted unchanged, null cleared, attachment handling with mixing inputs and references, and that the returned draft echoes the saved state.

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 front-loaded with the core action and is detailed but not verbose. Every sentence adds value, though it could be slightly more concise without losing clarity.

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

Completeness5/5

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

Given 8 parameters, nested objects, and an output schema, the description covers all aspects: mutation behavior, attachment handling, return value, and usage guidance. No gaps remain.

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

Parameters5/5

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

Schema coverage is 0%, but the description adds detailed semantics: explains effect of omitting vs null for each field, and for attachments how to mix new uploads with references. This compensates fully for the missing schema descriptions.

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 it patches an existing draft and opens an interactive UI. It distinguishes from siblings like gmail_add_attachment and gmail_remove_attachment by explicitly preferring those for single-file operations.

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

Usage Guidelines5/5

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

It instructs to always use this tool for writing/editing draft content, never to compose plain text. It specifies when to use sibling tools for attachments and advises keeping responses brief since the user can edit in the UI.

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

gmail_watch_startC

Subscribe the user's Gmail inbox to push notifications

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
watchingYes
expirationNo
history_idNo

TDQS

C2.9/5.0
Behavior2/5

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

No annotations provided. Description lacks details about permissions, rate limits, subscription renewal, or consequences of re-subscribing. Only a high-level purpose.

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?

Single sentence, no redundant words. Could include more detail without becoming verbose.

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

Completeness2/5

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

With one parameter and no required fields, the tool seems simple, but crucial context like notification type, setup requirements, and return value format is missing. Output schema exists but description ignores it.

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

Parameters2/5

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

Parameter 'user_id' has no description in schema or tool description. Schema coverage 0% forces description to clarify meaning, but it does not.

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 ('subscribe') and target ('user's Gmail inbox') with a specific outcome ('push notifications'). It distinguishes from siblings like gmail_watch_stop and webhook_subscribe.

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 vs alternatives (e.g., webhook_subscribe). No mention of prerequisites or conditions for subscription.

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

gmail_watch_stopC

Cancel the user's Gmail push-notification watch

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
stoppedYes

TDQS

C2.9/5.0
Behavior2/5

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

The description is minimal and does not disclose important behavioral traits beyond the obvious cancellation. There is no mention of side effects, required permissions, or what happens to existing watches, especially given the absence of annotations.

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 essential action and resource, with no wasted words.

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

Completeness2/5

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

Given the tool has one parameter and at least one sibling (gmail_watch_start), the description is too sparse. It does not explain the result of the action, success criteria, or error scenarios, making it incomplete for an agent to use effectively.

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

Parameters1/5

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

The parameter 'user_id' is not described in the description, and the schema coverage is 0%. The description adds no extra meaning beyond the parameter name, which is insufficient for an agent to understand its role.

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 'Cancel' and the resource 'Gmail push-notification watch', which is specific and distinguishes it from its sibling gmail_watch_start.

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 is implied that it should be used after starting a watch, but no explicit 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.

inbox_get_curationA

Read banked inbox triage from the curation ledger. Cheap: no email bodies are fetched and no reasoning is run - it returns judgments the assistant already made (bucket, importance, summary, suggested action) plus a coverage count of curated / stale / uncurated threads in the inbox. Call this FIRST for any 'what's important / triage my inbox' request. If coverage shows many uncurated or stale threads and the user wants a thorough pass, go deeper with inbox_search + inbox_save_curation; otherwise answer directly from these banked verdicts.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
stateNo
bucketNo
user_idNo
fresh_onlyNo
check_freshnessNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
recordsYes
coverageYes

TDQS

A3.9/5.0
Behavior4/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 is cheap (no email bodies fetched, no reasoning run) and returns banked judgments plus coverage counts. However, it does not explicitly state idempotency or rate limits, but the read-only nature is implied.

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

Conciseness4/5

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

The description is a single paragraph that front-loads the core purpose and then provides usage guidance. It is concise, but lacks structural elements like bullet points or explicit parameter descriptions. Still, it is efficient.

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 output schema exists, the description adequately outlines return values. However, with 6 undocumented parameters, the description is incomplete for parameter usage. The presence of an output schema partially compensates, but the parameter documentation gap remains.

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

Parameters1/5

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

The input schema has 6 parameters (limit, state, bucket, user_id, fresh_only, check_freshness) with 0% schema description coverage, yet the tool description does not explain any of them. The agent must rely on parameter names alone, which is insufficient for correct invocation.

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 reads banked inbox triage from a curation ledger, specifying it returns judgments (bucket, importance, summary, suggested action) and coverage counts. It distinguishes itself from sibling tools like inbox_search and inbox_save_curation by emphasizing it is cheap and only returns precomputed data.

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

Usage Guidelines5/5

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

The description explicitly instructs to call this tool FIRST for triage requests, and provides clear conditional guidance: if coverage shows many uncurated or stale threads, then use inbox_search and inbox_save_curation; otherwise answer directly from banked verdicts. This clearly differentiates when to use this tool versus alternatives.

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

inbox_save_curationA

Bank your triage judgments for one or more threads into the curation ledger so they are not re-reasoned next time. Call this after reading and reasoning over threads (typically from inbox_search) - pass a batch of per-thread verdicts (bucket, importance, a short summary, suggested action, optional reasoning/confidence). Each write stamps the thread's current Gmail historyId so the verdict stays valid until the thread changes. This is what makes the next inbox_get_curation near-free.

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idNo
judgmentsNo
curator_versionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
savedYes
thread_idsNo

TDQS

A4.2/5.0
Behavior4/5

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

No annotations provided, but description discloses key behavior: stamps Gmail historyId to keep verdict valid until thread changes, and makes inbox_get_curation near-free. No contradictions.

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?

Approximately 80 words, well-structured, front-loaded with purpose, no redundant sentences. Each sentence 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?

Given presence of an output schema (not shown), description covers input parameters adequately and explains postcondition. Missing nothing critical for a save 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?

Description lists the fields of ThreadJudgment (bucket, importance, summary, suggested action, reasoning/confidence) but does not mention user_id or curator_version. Schema coverage is 0% for properties, so description adds some value but not fully comprehensive.

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

Purpose5/5

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

Clearly states the action ('bank triage judgments into curation ledger') and the resource, distinguishes from siblings like inbox_get_curation and inbox_search by indicating sequence.

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?

Explicitly says 'Call this after reading and reasoning over threads (typically from inbox_search)', providing clear when-to-use context, though no explicit when-not or alternatives.

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

settings.getA

Fetch the current settings snapshot for the Settings app.

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
watchingNo
gmail_emailNo
subscriptionsNo
push_availableNo
gmail_connectedNo
watch_expirationNo

TDQS

A3.8/5.0
Behavior4/5

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

No annotations are provided, so the description must convey behavioral traits. It correctly indicates a read-only operation ('fetch'), but lacks details on authorization needs or rate limits. Acceptable for a simple get 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 that is clear and to the point, with no wasted words or unnecessary details.

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

Completeness3/5

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

Given the presence of an output schema (which might detail return values) and the simplicity of the tool, the description is minimally adequate. However, it could elaborate on what 'settings snapshot' encompasses or any side effects.

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

Parameters2/5

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

The single parameter 'user_id' is not described in the schema (0% coverage) and the tool description provides no explanation of its purpose or usage. The description fails to compensate for the missing schema descriptions.

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 fetches a 'current settings snapshot' for the Settings app. The verb 'fetch' and resource 'snapshot' are specific, and it easily distinguishes from sibling tools like settings.subscribe or settings.rotate_secret.

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

Usage Guidelines3/5

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

No explicit guidance on when to use this tool versus alternatives. Usage is implied as a basic retrieval operation, but there are no clues about prerequisites or exclusions.

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

settings.rotate_secretC

Issue a new signing secret for a webhook subscription.

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idNo
subscription_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
secretYesNew HMAC signing secret; shown only once

TDQS

C2.6/5.0
Behavior2/5

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

No annotations provided, so the description must convey behavioral traits. It implies a mutation (issuing a new secret) but does not disclose consequences like old secret invalidation, required permissions, or whether the operation is reversible. This is insufficient for safe usage.

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

Conciseness3/5

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

The description is a single, short sentence that is front-loaded. However, it sacrifices essential detail for brevity, making it minimally adequate but not well-structured for completeness.

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

Completeness2/5

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

Given the lack of annotations, an output schema exists but is not described, and the parameters are not explained. The description fails to provide a complete picture of the tool's behavior, input requirements, or effects, leaving significant gaps.

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

Parameters2/5

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

Schema coverage is 0%, but the description adds no explanation for the parameters (subscription_id, user_id). It does not clarify the role of user_id or how subscription_id is used. The description fails to add value beyond the raw 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 action ('Issue a new signing secret') and the resource ('webhook subscription'). It is specific and distinguishable from most sibling tools, though there is a similar 'webhook_rotate_secret' tool that may overlap.

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 (e.g., webhook_rotate_secret), nor any prerequisites or conditions for rotation. The description lacks context for appropriate invocation.

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

settings.subscribeC

Register a webhook endpoint (returns the one-time signing secret).

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
user_idNo
event_typesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
urlYes
activeNo
secretYesHMAC signing secret; shown only once
event_typesNo

TDQS

C2.4/5.0
Behavior2/5

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

No annotations provided, so description must carry behavioral disclosure. It only states the action and return value, omitting side effects, authentication requirements, idempotency, or error conditions.

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

Conciseness3/5

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

The description is extremely concise at one sentence, but it sacrifices necessary detail. It fits the minimum viable length but lacks informative content.

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

Completeness2/5

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

Despite having an output schema, the description fails to explain parameters or usage. For a tool with 3 parameters and no schema coverage, the description is incomplete.

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

Parameters1/5

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

Schema description coverage is 0%, but the description adds no meaning to the three parameters (url, user_id, event_types). The agent cannot infer parameter usage from the description.

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

Purpose4/5

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

Description uses specific verb 'Register' and resource 'webhook endpoint' and mentions return value. However, it does not differentiate from sibling tool 'webhook_subscribe', which likely serves a similar purpose.

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 over alternatives like 'webhook_subscribe'. No context on prerequisites or typical use cases.

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

settings.unsubscribeC

Deactivate a webhook subscription.

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idNo
subscription_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
unsubscribedYes

TDQS

C2.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 only says 'Deactivate a webhook subscription', which implies mutation but lacks details on reversibility, idempotency, or side effects.

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

Conciseness3/5

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

Single sentence, front-loaded, but under-specifies critical information. Could be improved without adding length.

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

Completeness2/5

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

Despite having an output schema (not shown), the description omits parameter details and any behavioral context, making it incomplete for an agent to use correctly.

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

Parameters1/5

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

Schema description coverage is 0%. The description does not mention or explain any of the two parameters ('user_id' and 'subscription_id').

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?

Description states the verb 'Deactivate' and the resource 'webhook subscription', making the core purpose clear. However, it does not differentiate from sibling tools like 'settings.subscribe' or 'webhook_unsubscribe'.

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, no context about prerequisites or exclusions.

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

webhook_listB

List the caller's webhook subscriptions (secrets are never returned)

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
subscriptionsNo

TDQS

B3.4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses that secrets are never returned, which is good for a read operation. However, it does not mention authentication, pagination, or other behavioral aspects beyond that.

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

Conciseness5/5

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

The description is a single sentence of 11 words, which is highly concise. It front-loads the key action and immediately adds a critical behavioral note about secrets.

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

Completeness3/5

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

For a simple list tool with an output schema, the description is mostly adequate but lacks explanation of the user_id parameter and potential pagination or filtering. The behavioral note helps, but the parameter gap reduces completeness.

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

Parameters1/5

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

Schema description coverage is 0%. The sole parameter 'user_id' is not explained in the description. It is unclear what effect this parameter has or whether it allows listing others' subscriptions, which contradicts 'the caller's'.

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

Purpose5/5

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

The description uses a specific verb ('List') and resource ('webhook subscriptions') and clarifies scope ('the caller's'). It distinguishes from sibling tools like webhook_subscribe and webhook_unsubscribe by being a read operation.

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 viewing existing subscriptions but provides no explicit guidance on when to use this tool vs alternatives like webhook_subscribe or webhook_settings. No 'when not to use' or alternative mentions.

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

webhook_rotate_secretB

Issue a new signing secret for a subscription (invalidates the old one)

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idNo
subscription_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
secretYesNew HMAC signing secret; shown only once

TDQS

B3.1/5.0
Behavior3/5

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

The description explicitly states that the old secret is invalidated, which is a destructive side effect. However, there are no annotations to rely on, and the description omits other behavioral details such as authentication requirements, rate limits, or whether the new secret is returned.

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

Conciseness5/5

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

The description is a single sentence that is concise, front-loaded with the action, and contains no superfluous information.

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

Completeness3/5

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

Given the tool's simplicity and the presence of an output schema, the description covers the main effect but lacks parameter details and usage context. It is adequate but leaves gaps for a complete understanding.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate, but it provides no explanation for the two parameters ('user_id' and 'subscription_id'). The meaning of 'user_id' (optional, default '') is unclear, and 'subscription_id' is not explicitly linked to the described action.

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 ('Issue a new signing secret') and the resource ('for a subscription'), and notes the side effect ('invalidates the old one'). However, it does not differentiate from the sibling tool 'settings.rotate_secret', which may have a similar purpose.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'settings.rotate_secret', nor does it mention prerequisites (e.g., an existing subscription) or typical use cases.

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

webhook_settingsC

Open your settings: Gmail connection status and webhook subscriptions

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
watchingNo
gmail_emailNo
subscriptionsNo
push_availableNo
gmail_connectedNo
watch_expirationNo

TDQS

C2.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 fully disclose behavior. It merely says 'Open your settings', implying a read-only navigation, but does not confirm safety, side effects, authentication needs, or what happens after opening. The agent learns little about the tool's behavior.

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

Conciseness3/5

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

The description is a single sentence and concise, but it is under-specified. For a tool with one parameter and no annotations, more detail is needed to justify its brevity. It earns its place but lacks completeness.

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

Completeness2/5

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

Given the tool has one parameter, no annotations, and an output schema (not shown), the description should contextualize the output and behavior. It does not address what the user sees or how to interact, leaving the agent with insufficient information to invoke it correctly.

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

Parameters1/5

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

The schema has one optional parameter 'user_id' with no description coverage (0%). The description does not mention or explain this parameter, so it adds zero value beyond the schema. The agent cannot infer its purpose or default behavior.

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 'Open your settings: Gmail connection status and webhook subscriptions', identifying both the action ('Open') and the resource ('settings'). It distinguishes the tool from siblings that modify subscriptions or perform other actions, though it does not specify what 'open' entails beyond viewing.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites, scenarios, or contexts where opening settings is appropriate, leaving the agent without decision support.

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

webhook_subscribeC

Register an HTTPS endpoint to receive signed webhook events

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
user_idNo
event_typesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
urlYes
activeNo
secretYesHMAC signing secret; shown only once
event_typesNo

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations, the description must disclose behavioral traits. It only states the basic action (register endpoint) but omits details such as authentication, rate limits, or effects on existing subscriptions.

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 wasted words. However, it is so brief that it sacrifices necessary detail for conciseness.

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

Completeness2/5

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

Despite having an output schema and 3 parameters with 0% schema coverage, the description does not explain return values or parameter behavior. It is incomplete for a registration tool.

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

Parameters1/5

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

Schema description coverage is 0%, yet the description adds no meaning to the three parameters (url, user_id, event_types). It fails to explain their purpose or constraints.

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 registers an HTTPS endpoint for signed webhook events. This specific verb+resource combination distinguishes it from siblings like webhook_list and webhook_unsubscribe.

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 guidelines are provided. The description does not indicate when to use this tool versus alternatives, prerequisites, or scenarios where it should be avoided.

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

webhook_unsubscribeC

Deactivate a webhook subscription so it stops receiving events

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idNo
subscription_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
unsubscribedYes

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden. It only states the basic action without disclosing side effects, reversibility, or required permissions. The output schema exists but is not referenced.

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 verbosity. However, it could be restructured to include more detail without losing conciseness.

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

Completeness2/5

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

Given the presence of an output schema and no annotations, the description is insufficient. It does not explain return values, confirmation, or integration with other webhook tools like 'webhook_subscribe'.

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

Parameters1/5

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

Schema description coverage is 0%, yet the description adds no explanation for either parameter. The required 'subscription_id' is implied but not elaborated, and the optional 'user_id' is completely unmentioned.

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 ('Deactivate'), the resource ('webhook subscription'), and the outcome ('stops receiving events'). It effectively distinguishes the tool from siblings like 'webhook_subscribe'.

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 (e.g., existing subscription), or alternatives. It lacks explicit context for selection among siblings.

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

TDQS

C2.6/5.0
Disambiguation2/5

Many tools have overlapping purposes, such as gmail_archive_thread and gmail_inbox.archive, or gmail_mark_thread_done and gmail_inbox.mark_done. The subtle differences (e.g., curation ledger updates) are not obvious, causing ambiguity for agents. Additionally, composer tools and non-composer tools are intermixed without clear delineation.

Naming Consistency2/5

Naming conventions are inconsistent: some tools use snake_case (gmail_archive_thread), some use camelCase (gmail_composer.save_draft), and some use dot notation (gmail_inbox.set_focus). There is no consistent verb_noun pattern, making it hard to predict tool names.

Tool Count2/5

With 50 tools, the server is overloaded. Many tools are redundant or could be consolidated (e.g., multiple archive/done/mark-read tools). A typical Gmail MCP server can operate with 15-25 tools; this exceeds that range significantly.

Completeness3/5

The tool set covers core Gmail operations like reading, sending, and managing drafts, plus advanced features like curation and webhooks. However, it lacks common operations like trash, label management, and filter creation, which are notable gaps.

Maintenance

ActivityActive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

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

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    A foundational template for building MCP servers in Python using Streamable HTTP transport. Provides example implementations of tools, resources, and prompts to help developers create custom MCP integrations for AI assistants.
  • A
    license
    Not graded
    quality
    D
    maintenance
    A production-ready Python template for building MCP servers with enterprise features including registry integration, configuration management, structured logging, and extensible patterns for tools, resources, and prompts.
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    A production-grade, extensible Python template for building Model Context Protocol servers with support for Streamable HTTP and stdio transports. It provides a structured framework for implementing tools, resources, and prompts with built-in authentication, observability, and background task management.
    11
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    A production-ready template for building Model Context Protocol (MCP) servers in Python, using Docker Compose for containerized development and CI/CD.
    MIT

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/Edison-Watch/Custom-MCPs'

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