Skip to main content
Glama

gsuite-mcp

MCP server for Gmail, Google Calendar, Google Docs, Google Sheets, and Google Drive. Supports multiple Google accounts. TypeScript, local stdio or authenticated Streamable HTTP over HTTPS.

Design

  • Writes are explicitly gated. OAuth grants write-capable scopes, but mutating tools are only registered when their environment flags are enabled: GMAIL_ENABLE_WRITE, GMAIL_ENABLE_SEND, CALENDAR_ENABLE_WRITE, DOCS_ENABLE_WRITE, and SHEETS_ENABLE_WRITE. All default to disabled.

  • Proper RFC 5322 reply threading. Pass reply_to_message_id to gmail_create_draft or gmail_send_message and the server fetches the source message, sets In-Reply-To / References, and reuses threadId.

  • Bulk-first. gmail_bulk_export dumps a query result (metadata + bodies + attachments) to a directory; gmail_bulk_modify_labels calls batchModify so 1000 messages cost one API call.

  • Account-aware. Add accounts without restarting the server. Every Gmail, Calendar, Docs, Sheets, and Drive tool accepts email; it is required when multiple accounts are configured and optional when there is only one.

  • Google Docs read/write. Read complete document structures or plain text, create documents, insert/replace text, and apply advanced batch updates.

  • Google Sheets read/write. Inspect tabs and metadata, read multiple cell ranges, create spreadsheets, write or append values, clear cells, and apply formatting or structural updates. Value writes default to RAW; choose USER_ENTERED to interpret formulas and dates.

  • Google Drive browsing. Browse My Drive and shared-drive folders, search with Drive query syntax, inspect metadata, read text content, and download/export files. Drive access is read-only.

  • Tokens stored under ~/.config/gmail-mcp/ with 0600. Refresh tokens are persisted on rotation. Override with GMAIL_MCP_CONFIG_DIR=/some/path.

  • Remote credential isolation. Run HTTPS on a trusted host or dedicated container. Google tokens stay there; agent containers connect to /mcp with a separate MCP access key. Remote clients cannot authorize accounts or write server files.

Related MCP server: MCP Google Multi-Account Server

Install

npx -y gsuite-mcp@latest

Prerequisites

A Google account. That's it — the package ships with a default OAuth client, so you do not need to create your own GCP project.

Optional: bring your own OAuth client

If you'd rather run against your own Google Cloud project (separate quota, your own consent screen):

  1. Enable the Gmail API, Calendar API, Google Docs API, Google Sheets API, and Google Drive API on the project.

  2. Configure the OAuth consent screen (External, Testing mode is fine — add yourself as a Test user).

  3. Create an OAuth 2.0 Client ID of type Desktop app and download the credentials JSON.

  4. Save it as ~/.config/gmail-mcp/oauth-client.json. When present, this file overrides the bundled defaults.

HTTPS: keep Google tokens outside agent containers

Run the MCP server as a separate service on a trusted host or in a dedicated container. Mount the Google configuration directory only into that service, with write access for refreshed tokens. Do not share its home directory, token directory, TLS private key, or container runtime socket with agents.

  1. Authorize Google accounts on the trusted host using the local stdio setup below. Existing token.json files work unchanged. For an existing installation, the default GMAIL_MCP_CONFIG_DIR is still ~/.config/gmail-mcp.

  2. Generate a separate MCP access key once on that host:

    umask 077
    mkdir -p "$HOME/.config/gsuite-mcp-server"
    openssl rand -hex 32 > "$HOME/.config/gsuite-mcp-server/access-key"
  3. Build this checkout with npm ci && npm run build, supply a TLS certificate/key for the hostname agents will use, and start the service:

    GSUITE_MCP_TRANSPORT=https \
    GSUITE_MCP_HOST=0.0.0.0 \
    GSUITE_MCP_PORT=8443 \
    GSUITE_MCP_TLS_CERT_FILE=/etc/gsuite-mcp/fullchain.pem \
    GSUITE_MCP_TLS_KEY_FILE=/etc/gsuite-mcp/privkey.pem \
    GSUITE_MCP_BEARER_TOKEN_FILE="$HOME/.config/gsuite-mcp-server/access-key" \
    GMAIL_MCP_CONFIG_DIR="$HOME/.config/gmail-mcp" \
    node dist/src/index.js

    The certificate must be trusted by your MCP client and valid for its connection hostname. Use your internal CA or a publicly trusted certificate; keep certificate verification enabled. Set the existing write flags on this server process to enable mutating tools.

  4. Configure the agent's MCP client for Streamable HTTP at https://mcp.example.com:8443/mcp, with Authorization: Bearer <MCP_ACCESS_KEY>. Use the hostname in your certificate. Clients that accept JSON HTTP configuration can use:

    {
      "mcpServers": {
        "gmail": {
          "type": "http",
          "url": "https://mcp.example.com:8443/mcp",
          "headers": {
            "Authorization": "Bearer <MCP_ACCESS_KEY>"
          }
        }
      }
    }

    Prefer the client's secret/header injection mechanism over storing the key in a repository. Replace the previous command/args stdio entry; agents no longer launch this server or receive its Google credentials.

The MCP access key grants access to every configured Google account and every enabled remote tool on this server; it is not a Google access or refresh token. If no credentials at all may enter agent containers, have a trusted MCP client/gateway outside them inject the Authorization header. Rotate the MCP key independently of Google tokens and restart the service after rotation. This is a shared trusted service, not per-agent account authorization.

Remote mode exposes setup_list_accounts, but omits setup_auth, setup_add_account, drive_download_file, gmail_download_attachments, and gmail_bulk_export. Arbitrary output paths on the token-owning server would allow credential or code overwrites. Use remote read tools such as drive_read_file for returned content. These local file tools remain available over stdio. To add or reauthorize an account, stop the remote service, use a local stdio client on the trusted host with the same config directory, then restart the service. Avoid multiple processes writing the same token registry.

Docker on a private agent network

The Dockerfile serves plain HTTP with GSUITE_MCP_ALLOW_PRIVATE_HTTP=true, and every request still needs the bearer key. The gsuite-mcp service in ../browser-sandbox/docker-compose.yml runs it on the external mcp network. That service mounts ~/.config/gmail-mcp as the registry and reads its key from ~/.config/mcp-access-keys/gsuite. Agents use http://gsuite-mcp:8080/mcp with Authorization: Bearer <key>; the host uses http://127.0.0.1:8932/mcp. Do not mount ~/.config/gmail-mcp into agent containers. To add or reauthorize an account, run docker compose stop gsuite-mcp, use a local stdio client, then start the service again.

HTTPS at an existing reverse proxy

For a proxy on the same host/network namespace, use GSUITE_MCP_TRANSPORT=http with GSUITE_MCP_HOST=127.0.0.1 and GSUITE_MCP_PORT=8080, omit the TLS file settings, and keep the MCP access key configured. The HTTP backend refuses non-loopback binds. Publish only the proxy's HTTPS endpoint, preserving /mcp and the Authorization header. For example, a Caddy site can forward to the backend:

mcp.example.com {
    reverse_proxy 127.0.0.1:8080
}

A proxy in a separate network namespace must connect to the server's direct HTTPS listener instead. HTTP mode never trusts X-Forwarded-* headers to bypass authentication.

Transport settings

Environment variable

Default / meaning

GSUITE_MCP_TRANSPORT

stdio; set https for direct TLS or http for a loopback proxy backend

GSUITE_MCP_HOST

127.0.0.1; explicitly use 0.0.0.0 for direct HTTPS across containers

GSUITE_MCP_PORT

8443 for HTTPS, 8080 for HTTP

GSUITE_MCP_TLS_CERT_FILE

Required PEM certificate/full chain for HTTPS

GSUITE_MCP_TLS_KEY_FILE

Required PEM private key for HTTPS

GSUITE_MCP_BEARER_TOKEN_FILE

File containing the MCP access key (at least 32 characters)

GSUITE_MCP_BEARER_TOKEN

Alternative to the token file; configure exactly one source

GSUITE_MCP_ALLOWED_ORIGINS

Optional comma-separated exact HTTPS origins; requests with an Origin header are otherwise rejected

Native MCP clients normally omit Origin. The endpoint does not enable browser CORS. Following the MCP transport security requirements, it validates any supplied Origin and authenticates every request. /mcp uses stateless POST requests with JSON responses, supports concurrent clients, and limits request bodies to 4 MiB. GET/DELETE return 405; no persistent sessions or legacy SSE endpoint are created.

Register a local stdio client

For Claude Code, add to ~/.claude.json under mcpServers:

{
  "mcpServers": {
    "gmail": {
      "command": "npx",
      "args": ["-y", "gsuite-mcp@latest"],
      "env": {}
    }
  }
}

Enable only the write surfaces you want exposed:

"env": {
  "GMAIL_ENABLE_WRITE": "true",
  "GMAIL_ENABLE_SEND": "true",
  "CALENDAR_ENABLE_WRITE": "true",
  "DOCS_ENABLE_WRITE": "true",
  "SHEETS_ENABLE_WRITE": "true"
}
  • GMAIL_ENABLE_WRITE — label changes and draft create/update/delete

  • GMAIL_ENABLE_SEND — immediate message/draft sending

  • CALENDAR_ENABLE_WRITE — event create/update/delete

  • DOCS_ENABLE_WRITE — document create, insert/replace text, and advanced batch updates

  • SHEETS_ENABLE_WRITE — spreadsheet creation, value writes/appends/clears, and advanced formatting or structural updates

Restart the MCP server after changing environment flags so its tool list is rebuilt.

Authorize accounts (local stdio MCP)

On the trusted host, after the server is registered with a local stdio client:

  1. Ask the model to call setup_auth with no arguments (or with the intended email). It returns a URL.

  2. Open the URL in a browser, pick the account, grant access.

  3. Your browser shows ERR_CONNECTION_REFUSED on http://localhost/?code=... — expected. Copy the full URL from the address bar.

  4. Ask the model to call setup_auth again, passing the URL as url_or_code. The token is saved; Gmail, Calendar, Docs, Sheets, and Drive tools become live without restart.

PKCE is used end-to-end. No loopback server is run.

To add another account, use setup_add_account with the same two-call flow. Use setup_list_accounts to see configured emails and granted scopes. Once two or more accounts are configured, pass email to every Gmail, Calendar, Docs, Sheets, and Drive tool call; calls without it return the list of available accounts and an error. Email matching is case-insensitive.

Existing installations should run setup_auth once again for each account to grant the Google Drive read-only scope (and the Google Docs scope if it was not granted previously). The old single-account token format is migrated automatically when the server can identify its account.

Adding Sheets to an existing installation

  1. Build and restart the updated server. For a local checkout, run npm install and npm run build, and point the MCP client at node /absolute/path/to/gsuite-mcp/dist/src/index.js.

  2. Existing drive.readonly grants already permit native Sheets reads. The Google Sheets API must also be enabled in the OAuth client's Google Cloud project.

  3. To edit, set SHEETS_ENABLE_WRITE=true in the MCP server environment and restart it. Run setup_auth for each account you want to edit with and complete Google's consent flow to grant https://www.googleapis.com/auth/spreadsheets.

  4. Check setup_list_accounts for the granted Sheets scope. A newly requested scope does not upgrade existing tokens automatically, and the account still needs edit permission on each target spreadsheet.

See Google's read authorization scopes and Sheets scopes.

Tool surface

Setup (account authorization is local stdio only; listing is also available remotely)

  • setup_auth — authorize the first account or reauthorize an existing account

  • setup_add_account — authorize another account without replacing existing accounts

  • setup_list_accounts — list account emails and granted scopes

All Gmail, Calendar, Docs, Sheets, and Drive tools below accept an email parameter. It may be omitted only when exactly one account is configured.

Gmail (always on)

  • gmail_search — Gmail query syntax. Returns enriched metadata (from/subject/date/snippet/labelIds/hasAttachments) by default; pass format: 'ids' for ID-only.

  • gmail_get_message, gmail_get_thread

  • gmail_list_labels

  • gmail_list_drafts, gmail_get_draft

  • gmail_download_attachments — bulk by query, with mime/filename filters (local stdio only)

  • gmail_bulk_export — bulk export to per-message subdirectories (metadata, body, attachments) plus a top-level index.json (local stdio only)

Gmail (only when GMAIL_ENABLE_WRITE=true)

  • gmail_modify_labels, gmail_bulk_modify_labels

  • gmail_create_draft, gmail_update_draft, gmail_delete_draft

Gmail (only when GMAIL_ENABLE_SEND=true)

  • gmail_send_message, gmail_send_draft

Calendar (always on)

  • calendar_list_calendars, calendar_list_events, calendar_get_event

Calendar (only when CALENDAR_ENABLE_WRITE=true)

  • calendar_create_event, calendar_update_event, calendar_delete_event

Google Docs (always on)

  • docs_read_document — accept a document ID or Docs URL and return readable text per tab plus combined text

  • docs_get_document — return the full structured Google Docs API response

Google Docs (only when DOCS_ENABLE_WRITE=true)

  • docs_create_document — create a document with optional initial text

  • docs_insert_text — append or insert text at a Docs API index

  • docs_replace_all_text — replace matching text across all or selected tabs

  • docs_batch_update — apply advanced Docs API edits and formatting requests

Google Sheets (always on)

  • sheets_get_spreadsheet — accept a spreadsheet ID or URL; return metadata, tab IDs/titles, grid dimensions, named ranges, and other properties. Set include_grid_data=true with ranges to inspect cell formatting.

  • sheets_read_values — read one or more A1 ranges across tabs; choose formatted values, calculated values, or formulas, and row or column orientation

Google Sheets (only when SHEETS_ENABLE_WRITE=true)

  • sheets_create_spreadsheet — create a spreadsheet with optional named tabs, locale, and time zone; returns its URL and tab IDs

  • sheets_write_values — write multiple ranges in one API call; RAW by default, or USER_ENTERED for formulas and parsed input

  • sheets_append_values — append after the logical table found in an A1 range; inserts rows by default and returns the actual destination range

  • sheets_clear_values — clear values in multiple ranges while preserving formatting and validation

  • sheets_batch_update — advanced Sheets API requests for tabs, rows/columns, formatting, filters, validation, charts, and other spreadsheet changes

Find spreadsheets with drive_search_files and query: "mimeType = 'application/vnd.google-apps.spreadsheet'". Use sheets_get_spreadsheet to discover tab titles and numeric IDs before reading or editing. A URL's gid is not used to select a tab: qualify ranges explicitly, such as 'Program budget'!A1:D20. For tabs with apostrophes, double the apostrophe, for example 'Team''s budget'!A1:D20.

Example sheets_write_values arguments:

{
  "email": "you@example.com",
  "spreadsheet_id_or_url": "YOUR_SPREADSHEET_ID",
  "value_input_option": "USER_ENTERED",
  "data": [
    { "range": "'Summary'!A1:B2", "values": [["Item", "Total"], ["Budget", "=SUM('Costs'!B2:B100)"]] }
  ]
}

Cell values may be strings, numbers, booleans, or null. null skips a cell; "" clears it. Reads omit trailing empty rows and columns. Advanced batch requests use Google's camelCase request fields, numeric sheetId values, and zero-based grid indexes with exclusive end indexes. The value write tools use A1 ranges instead.

Google Drive (read-only)

  • drive_list_folder — list the direct children of My Drive root or a folder ID/URL, with pagination and optional filters

  • drive_search_files — search files and folders with Google Drive API query syntax

  • drive_get_file — return detailed metadata for a file, folder, or shortcut

  • drive_read_file — return text content; exports Docs/Sheets/Slides to text or CSV by default

  • drive_download_file — download a blob file or export a Google Workspace file to an absolute local path (local stdio only)

  • drive_list_shared_drives — list shared drives accessible to the selected account

Scopes

  • https://www.googleapis.com/auth/gmail.modify (read, draft, label, send)

  • https://www.googleapis.com/auth/calendar

  • https://www.googleapis.com/auth/documents

  • https://www.googleapis.com/auth/spreadsheets

  • https://www.googleapis.com/auth/drive.readonly

Gmail has no scope that grants drafts without also granting send. Send is gated at the tool layer, not the scope layer — Google's own official MCP makes the same tradeoff.

Config paths

  • OAuth client (optional override): ~/.config/gmail-mcp/oauth-client.json

  • Account token registry: ~/.config/gmail-mcp/token.json

Override with GMAIL_MCP_CONFIG_DIR=/some/path.

License

MIT

Available Tools

24 tools
calendar_get_eventC

Fetch a single event.

NameRequiredDescriptionDefault
emailNoGoogle account email. May be omitted when exactly one account is configured; required when multiple accounts are configured.
event_idYes
calendar_idNo

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations supplied, the description carries the full behavioral burden, yet it says nothing about this being a read-only operation, authentication/account requirements, error behavior for unknown event_ids, or what happens to the event data. Beyond implying a retrieval, it discloses no behavioral traits.

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

Conciseness4/5

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

A single four-word sentence, front-loaded with verb and resource, with no padding or redundancy. Its brevity is clean, though it is arguably under-sized for a tool carrying three parameters and no annotations.

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

Completeness2/5

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

For a tool with no annotations, no output schema, three parameters (one required and undocumented), and only 33% schema coverage, the agent is left guessing about the identifier's origin, the default calendar, and account selection. The description is far too thin to be complete.

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

Parameters2/5

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

Schema coverage is only 33%: the schema documents only 'email', while 'event_id' (required) and 'calendar_id' are bare. The description adds nothing about the required identifier's format/source or about calendar_id defaulting behavior, so it fails to compensate for the documented gaps.

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

Purpose4/5

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

The description pairs a specific verb ("Fetch") with a specific resource ("a single event"), and the word "single" implicitly distinguishes it from the sibling calendar_list_events. It is clear what the tool does, though it never names the sibling or the scope boundary explicitly.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus calendar_list_events (which is presumably how you obtain an event_id) or any other sibling. No prerequisites are stated, such as needing an event_id that must first be discovered via listing or search.

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

calendar_list_calendarsC

List the user's calendars.

NameRequiredDescriptionDefault
emailNoGoogle account email. May be omitted when exactly one account is configured; required when multiple accounts are configured.

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It does not say whether this is a read-only operation, whether shared/subscribed calendars are included, whether results are paginated, or what the response contains — for a tool with zero annotation coverage this is a real gap.

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

Conciseness4/5

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

A single front-loaded sentence with no filler, which is appropriate for a simple list operation. It is arguably under-specified rather than padded, so terseness here is a mild virtue rather than a flaw.

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

Completeness3/5

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

For a one-parameter read tool with full schema coverage the description is minimally viable, but with no annotations and no output schema an agent still lacks the safety profile and return-shape context it would want. Adding one clause about read-only semantics and the email requirement would close the gap.

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

Parameters3/5

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

Schema coverage is 100% and the single optional email parameter is well documented in the schema, including the condition for when it is required. The description adds nothing beyond that, which is the expected baseline when the schema does the heavy lifting.

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

Purpose4/5

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

States a specific verb (List) and resource (the user's calendars), so the operation is unambiguous. It does not, however, explicitly distinguish itself from the closely named sibling calendar_list_events, leaving the agent to infer that this returns calendar containers rather than events.

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 call this versus calendar_list_events, nor any prerequisite context such as needing a configured account first (setup_list_accounts/setup_add_account exist as siblings). The agent must infer usage entirely from the name.

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

calendar_list_eventsC

List events on a calendar in a time window. Default calendar_id is 'primary'.

NameRequiredDescriptionDefault
emailNoGoogle account email. May be omitted when exactly one account is configured; required when multiple accounts are configured.
queryNoFree-text search
time_maxNoRFC3339
time_minNoRFC3339; default = now
page_tokenNo
calendar_idNo
max_resultsNo
single_eventsNoDefault true: expand recurring

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are present, so the description carries the full behavioral burden and mostly fails it. It discloses only the calendar_id default; it says nothing about pagination via page_token, max_results default, recurring-event expansion, account/auth requirements, or the read-only nature of the operation.

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

Conciseness4/5

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

Two tight sentences with the core action front-loaded and no filler. It is appropriately sized for readability, though arguably too terse for an 8-parameter tool.

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

Completeness2/5

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

For an 8-parameter list tool with no annotations and no output schema, the description omits critical context: pagination, default result limits, recurring-event behavior, and the account-selection semantics. It is far from complete enough to call the tool correctly without opening the schema.

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

Parameters3/5

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

Schema coverage is 63%, with the undocumented params (page_token, calendar_id, max_results) left ambiguous in the schema. The description usefully supplies the calendar_id default of 'primary', which the schema lacks, but adds nothing for the other gaps, so it stays at baseline.

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

Purpose4/5

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

States a specific verb and resource ("List events on a calendar") plus a scoping constraint ("in a time window"), which cleanly separates it from calendar_get_event. It does not, however, explicitly name the sibling it differs from, so it stops short of a 5.

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

Usage Guidelines2/5

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

The description gives no when-to-use or when-not-to-use guidance and never mentions alternatives like calendar_get_event for a single event or calendar_list_calendars for discovery. Only a scoping hint ("time window") implies usage, leaving an agent to infer routing.

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

docs_get_documentB

Fetch a Google Doc as the full structured Google Docs API document, including all document tabs by default.

NameRequiredDescriptionDefault
emailNoGoogle account email. May be omitted when exactly one account is configured; required when multiple accounts are configured.
document_id_or_urlYesA Google Docs document ID or full docs.google.com document URL
include_tabs_contentNoDefault true

TDQS

B3.3/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It usefully discloses the return format (structured Docs API document) and the default tab-inclusion behavior, but says nothing about the read-only nature, authentication requirements tied to the email parameter, or any size/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.

Conciseness5/5

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

A single sentence with zero waste, and the key differentiator (structured API document, all tabs) is front-loaded. Nothing to trim.

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

Completeness3/5

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

For a read tool with no annotations and no output schema, the description is minimally adequate but leaves gaps: it never explains the email/account requirement or how this tool relates to the similarly named docs_read_document sibling.

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

Parameters3/5

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

Schema description coverage is 100%, so baseline is 3 and the schema already documents all three parameters. The phrase 'including all document tabs by default' loosely mirrors the include_tabs_content default, but the description adds no syntax or format detail beyond the schema.

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

Purpose4/5

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

States a specific verb ('Fetch') and resource ('Google Doc') and even specifies the return shape ('full structured Google Docs API document'), which is more than most definitions offer. However, it does not differentiate itself from the sibling tool docs_read_document, so an agent cannot tell the two apart from the description alone.

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

Usage Guidelines2/5

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

No when-to-use or when-not-to-use guidance is given, and no alternative is named. The existence of a close sibling, docs_read_document, makes this omission costly: nothing in the description tells the agent which of the two read tools to pick.

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

docs_read_documentB

Read the text of a Google Doc. Returns plain text for each tab (including nested tabs), plus combined text and document metadata. Tables are rendered as tab-separated rows.

NameRequiredDescriptionDefault
emailNoGoogle account email. May be omitted when exactly one account is configured; required when multiple accounts are configured.
document_id_or_urlYesA Google Docs document ID or full docs.google.com document URL

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the full burden, and it does disclose the return shape (plain text per tab, combined text, metadata, tables rendered as TSV rows), which is genuinely useful. However it says nothing about authentication/account selection, rate limits, large-document truncation, or error behavior for inaccessible docs.

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 tight sentences, front-loaded with the core action and then the return format. Every sentence carries information; nothing is padding.

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?

Since there is no output schema, the description usefully compensates by describing the returned text structure and TSV table rendering. It is still incomplete regarding the multi-account email requirement (only covered in schema) and failure modes, which it leaves to the schema.

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

Parameters3/5

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

Schema description coverage is 100%, so both parameters (email, document_id_or_url) are fully documented in the schema. The description adds no parameter-level detail beyond that, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource ('Read the text of a Google Doc') and scopes the output precisely (per-tab text, nested tabs, combined text, metadata, tables as TSV). It never distinguishes itself from the sibling docs_get_document, so an agent must infer which of the two returns raw text versus structure.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no statement of alternatives (docs_get_document, drive_read_file), and no prerequisites such as which account or permission is needed. Usage is only implied by the verb 'Read'.

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

drive_download_fileA

Download a Drive file to an exact local path. Native Google Workspace files are exported (Docs as text, Sheets as CSV, Slides as text) unless export_mime_type is specified.

NameRequiredDescriptionDefault
emailNoGoogle account email. May be omitted when exactly one account is configured; required when multiple accounts are configured.
dest_pathYesAbsolute local output file path; parent directories are created
file_id_or_urlYesA Google Drive file/folder ID or a Google Drive/Workspace URL
export_mime_typeNoOptional export MIME type for a native Google Workspace file

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the full burden, and it does disclose real behavior: native Workspace files are auto-exported with stated default formats, and export_mime_type overrides that. It is silent on authentication requirements, overwrite behavior when dest_path already exists, and rate/size limits on downloads.

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 tight sentences with the core action and destination front-loaded, followed immediately by the one non-obvious behavior (native file export). Nothing is wasted.

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?

There is no output schema, so the description should ideally say what the call returns (e.g., the written path) and whether an existing file is overwritten. It covers the download and export semantics adequately but leaves these operational details unspecified.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds genuine meaning for export_mime_type by explaining the default export mapping that applies when it is omitted, but adds nothing for email, dest_path, or file_id_or_url beyond the schema.

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

Purpose4/5

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

The description pairs a specific verb (download) with a specific resource (Drive file) and a destination constraint ('to an exact local path'), which separates it from read-style siblings like drive_read_file and drive_get_file. It stops short of naming any sibling explicitly, so the differentiation is inferable rather than stated.

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

Usage Guidelines3/5

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

Usage is implied by the export rule: use export_mime_type only when you need a non-default format for a native Workspace file. There is no explicit when-to-use/when-not guidance and no mention of when to prefer drive_read_file over downloading.

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

drive_get_fileB

Get detailed metadata for a Google Drive file, folder, or shortcut.

NameRequiredDescriptionDefault
emailNoGoogle account email. May be omitted when exactly one account is configured; required when multiple accounts are configured.
file_id_or_urlYesA Google Drive file/folder ID or a Google Drive/Workspace URL

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full disclosure burden, and it delivers essentially none. "Get" implies a safe read, but there is no statement about permissions/auth requirements, what happens with invalid IDs, or the shape of the returned metadata. One sentence of pure intent is thin for a tool with zero annotation coverage.

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

Conciseness5/5

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

A single front-loaded sentence with no filler, restatement of the name, or hedging. Every word earns its place, though brevity here partly reflects under-specification rather than disciplined editing.

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?

There is no output schema or annotation set, so the description bears the responsibility for behavioral and return context, and it does not specify what metadata is returned (size, mimeType, permissions, parents). For a simple two-parameter read tool with a fully documented schema, it is adequate but not complete.

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

Parameters3/5

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

Schema description coverage is 100%, so both parameters are already documented, and the baseline is 3. The description adds only marginal value by naming the resource types (file, folder, shortcut), while the schema's own text also covers file/folder ID vs URL, so it does not meaningfully extend parameter meaning.

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

Purpose4/5

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

Specific verb ("Get") plus resource ("detailed metadata for a Google Drive file, folder, or shortcut"), and "metadata" implicitly separates it from content-oriented siblings like drive_read_file and drive_download_file. It does not name those siblings explicitly, so the differentiation is inferred rather than stated.

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 states what the tool returns but gives no when-to-use guidance, no conditions selecting it over drive_read_file, drive_search_files, or drive_list_folder, and no exclusions. The agent must infer the routing decision from the tool names alone.

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

drive_list_folderA

List the direct children of a Google Drive folder, including folders, files, and shortcuts. Supports My Drive and shared drives. Omit folder_id_or_url to list My Drive's root.

NameRequiredDescriptionDefault
emailNoGoogle account email. May be omitted when exactly one account is configured; required when multiple accounts are configured.
drive_idNoOptional shared drive ID; narrows the corpus for better performance
order_byNoDrive orderBy expression; default 'folder,name_natural'
page_sizeNoDefault 100
page_tokenNo
folders_onlyNoDefault false
name_containsNoOptional case-insensitive name substring filter
include_trashedNoDefault false
folder_id_or_urlNoDefault: My Drive root

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description must carry the behavioral burden. It usefully discloses that only DIRECT children are returned (non-recursive) and that both My Drive and shared drives are supported, but says nothing about pagination behavior, permission requirements, or that this is a read-only listing.

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 compact sentences, front-loaded with the core action, and each sentence contributes (result composition, scope, root default). No filler or repetition.

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

Completeness4/5

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

For a 9-parameter, zero-required read tool with no output schema and no annotations, the description covers the essentials: what is listed, what is included, supported corpora, and the root default. The main gap is pagination/enumeration behavior, which the schema only partially implies.

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

Parameters3/5

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

Schema description coverage is 89%, so the schema already documents nearly every parameter including defaults and bounds. The description adds only the root-default behavior for folder_id_or_url, which is meaningful but exceeds the baseline by little.

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

Purpose4/5

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

States a specific verb and resource ('List the direct children of a Google Drive folder') and clarifies the result includes folders, files, and shortcuts. It does not explicitly name or differentiate itself from the sibling drive_search_files, but the scope statement is unambiguous.

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

Usage Guidelines3/5

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

Tells the agent that omitting folder_id_or_url lists My Drive's root, which is useful operational context, but offers no when-to-use/when-not guidance and never mentions the sibling drive_search_files as the alternative for querying by content. Usage is implied rather than spelled out.

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

drive_list_shared_drivesC

List shared drives that the selected Google account can access.

NameRequiredDescriptionDefault
emailNoGoogle account email. May be omitted when exactly one account is configured; required when multiple accounts are configured.
queryNoOptional shared-drive query, such as `name contains 'Engineering'`
page_sizeNoDefault 100
page_tokenNo

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It implies a read-only listing but says nothing about pagination behavior, permission/auth requirements, result limits, or what happens when the account has no shared drives. For a zero-annotation tool this leaves significant behavioral gaps.

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

Conciseness5/5

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

A single, front-loaded sentence with no wasted words. The verb and resource lead the sentence and the scope qualifier follows immediately.

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

Completeness2/5

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

With no annotations, no output schema, and four parameters, the description is too thin. It omits pagination semantics, the shape of the returned drives, and how the account selection interacts with the email parameter, which an agent needs to call this correctly in a multi-account setup.

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

Parameters3/5

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

Schema description coverage is 75%, so most parameters (email, query, page_size) are already documented in the schema, and the description adds no parameter-level detail. Baseline 3 applies since the schema does the heavy lifting and page_token has no description anywhere.

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

Purpose4/5

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

States a specific verb (List) and resource (shared drives) with a scoping qualifier (the selected Google account can access), so an agent can distinguish it from siblings like drive_list_folder or drive_search_files. It does not explicitly name alternatives, but the resource is unambiguous.

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

Usage Guidelines2/5

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

No when-to-use guidance or comparison against alternatives such as drive_search_files or drive_list_folder. The phrase 'selected Google account' weakly implies the email parameter context, but nothing tells the agent when this tool is the right choice versus another drive listing/search tool.

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

drive_read_fileA

Read a text file from Google Drive. Native Docs, Sheets, and Slides are exported to plain text/CSV by default. Binary files should be saved with drive_download_file instead.

NameRequiredDescriptionDefault
emailNoGoogle account email. May be omitted when exactly one account is configured; required when multiple accounts are configured.
file_id_or_urlYesA Google Drive file/folder ID or a Google Drive/Workspace URL
max_charactersNoMaximum characters returned; default 200000
export_mime_typeNoOptional export MIME type for a native Google Workspace file

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It does disclose a genuinely useful, non-obvious trait: native Docs/Sheets/Slides are exported to plain text/CSV by default, so the agent knows the return format is transformed rather than raw. It omits permissions/auth requirements, error behavior, and any limits, so it is only partially transparent.

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 tight sentences, front-loaded with the core action and followed by the two facts that change agent behavior (export default and the binary alternative). No filler.

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

Completeness4/5

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

No output schema and no annotations, so the description must stand alone; it adequately covers what the tool reads and what format it returns. It stops short of covering auth requirements or failure modes, but for a read tool with fully documented params this is close to complete.

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

Parameters3/5

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

Schema description coverage is 100%, so all four parameters are already documented in the schema (email fallback behavior, file_id_or_url, max_characters default, export_mime_type). The description adds no syntax or format detail beyond implying the export default, so the baseline 3 applies.

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

Purpose5/5

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

States a specific verb and resource ('Read a text file from Google Drive') and immediately names the sibling it is not for binary content ('drive_download_file'). An agent can tell this apart from the download path without opening a schema.

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?

Gives a clear exclusion ('Binary files should be saved with drive_download_file instead'), which routes the agent correctly for the binary case. It does not, however, distinguish this from drive_get_file or the docs_/sheets_ readers, so sibling ambiguity remains for text-like workspace files.

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

drive_search_filesA

Search Google Drive files and folders with Google Drive API query syntax (for example: name contains 'report', fullText contains 'quarterly', mimeType = 'application/pdf', or sharedWithMe). Includes My Drive and shared-drive items.

NameRequiredDescriptionDefault
emailNoGoogle account email. May be omitted when exactly one account is configured; required when multiple accounts are configured.
queryYesGoogle Drive API `q` expression
corporaNoIgnored when drive_id is supplied; default 'user'
drive_idNoOptional shared drive ID; searches only that shared drive
order_byNoDrive orderBy expression; default 'recency desc'
page_sizeNoDefault 100
page_tokenNo
include_trashedNoDefault false

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It usefully discloses that results span My Drive and shared-drive items, but omits whether this is read-only, how pagination works (page_token/page_size exist in schema), and what a result contains.

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, purpose front-loaded, examples inlined compactly with no wasted words. Nothing can be trimmed without losing meaning.

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

Completeness3/5

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

The rich schema covers parameters, but with no annotations and no output schema the description should say more about behavior and return shape. It explains the core query mechanism but leaves the agent guessing about result format and pagination behavior.

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

Parameters3/5

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

Schema coverage is 88%, so the schema already documents nearly all parameters, giving a baseline of 3. The description adds query-string examples and scope relevant to the corpora parameter, but says nothing extra about email, order_by, page_token, or include_trashed.

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

Purpose5/5

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

States a specific verb ('Search') and resource ('Google Drive files and folders') and pins the mechanism with query-syntax examples, making it distinguishable from siblings like drive_list_folder (browse one folder) or drive_get_file (fetch one file). Scope ('Includes My Drive and shared-drive items') further separates it from single-corpus tools.

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

Usage Guidelines3/5

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

Usage is implied by the query-syntax examples, but there is no explicit when-to-use/when-not guidance and no reference to alternatives such as drive_list_folder for simple browsing. The examples hint at scenarios without stating them.

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

gmail_bulk_exportA

Bulk-export messages matching a Gmail search query to a directory. Per message: <dest_dir>//{message.json, body.txt, body.html, attachments/...}. Also writes <dest_dir>/index.json summarizing all exported messages.

NameRequiredDescriptionDefault
emailNoGoogle account email. May be omitted when exactly one account is configured; required when multiple accounts are configured.
queryYesGmail search query
dest_dirYesAbsolute path; created if missing
max_messagesNoDefault 200
include_html_bodyNoDefault true
include_attachmentsNoDefault true

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the full burden; it does disclose the significant side effect of writing files to disk and the exact artifact layout, which is valuable. However, it says nothing about authentication requirements, rate limits, or how partial failures mid-export are handled, which for a bulk mutation tool is a notable gap.

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

Conciseness5/5

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

Two tight sentences with zero filler, and the primary purpose is front-loaded before the output layout detail. Every 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?

There is no output schema, so the description must cover return values, and it does so precisely by describing the per-message directory, the named files, and the index.json summary. It falls short only on error/partial-completion behavior and auth expectations for a tool that writes to an arbitrary absolute path.

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

Parameters3/5

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

Schema description coverage is 100%, so all six parameters (including defaults for max_messages, include_html_body, include_attachments, and the email account-selection rule) are already documented in the schema. The description adds no syntax or format detail for these parameters beyond what the schema provides, so the baseline 3 applies.

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

Purpose5/5

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

States a specific verb (bulk-export), resource (messages), scoping mechanism (matching a Gmail search query), and destination (a directory). This clearly separates it from gmail_search and gmail_download_attachments, which an agent can distinguish without opening any schema.

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

Usage Guidelines3/5

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

The word "bulk" and the query-matching framing imply when this tool is appropriate versus a single-message sibling, but the description never states when-not to use it or names an alternative for non-bulk retrieval. Usage is inferable but not explicit.

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

gmail_download_attachmentsB

Download attachments from messages matching a Gmail search query into a destination directory. Files are named <messageId>__<originalFilename> to avoid collisions. Returns a summary.

NameRequiredDescriptionDefault
emailNoGoogle account email. May be omitted when exactly one account is configured; required when multiple accounts are configured.
queryYesGmail search query (e.g. 'label:DMARC')
dest_dirYesAbsolute path to destination directory; created if missing
max_messagesNoDefault 200
filename_filterNoOptional case-insensitive substring matched against original filename
mime_type_filterNoOptional case-insensitive substring matched against MIME type

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It usefully discloses the output naming scheme (`<messageId>__<originalFilename>`) and collision avoidance, but omits any statement about overwriting existing files, duplicate handling, size/rate limits, or whether the Gmail mailbox itself is left untouched (read-only side effects vs. disk writes).

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 short sentences, front-loaded with the core action and scope. The naming-convention detail and the return-value note both earn their place given there is no output schema.

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 six-parameter write-to-disk tool with no annotations and no output schema, the description leaves gaps: the shape of the returned 'summary' is undefined, and side-effect semantics (overwrite, dedup) are unstated. Adequate but with clear holes.

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

Parameters3/5

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

Schema description coverage is 100%, so all six parameters are already documented in the schema. The description adds no parameter-level detail (e.g., query syntax beyond the schema example, filter semantics, or max_messages defaults), so baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource ('Download attachments from messages matching a Gmail search query into a destination directory') plus the naming convention used for output files. The purpose is unambiguous, but it does not distinguish itself from the nearby sibling gmail_bulk_export, which an agent may confuse it with.

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 never says when to prefer this tool over alternatives such as gmail_search, gmail_get_message, or gmail_bulk_export. There is no mention of prerequisites (configured account), no exclusions, and no guidance on choosing between attachment-downloading flows.

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 draft's full content.

NameRequiredDescriptionDefault
idYes
emailNoGoogle account email. May be omitted when exactly one account is configured; required when multiple accounts are configured.

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations provided, the description carries the full behavioral burden but only says it fetches full content. It does not disclose authentication requirements, error behavior, or what 'full content' includes.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no wasted words. It is appropriately concise for a simple getter tool.

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

Completeness2/5

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

For a tool with no annotations, no output schema, and only 50% schema parameter coverage, the description leaves key gaps. It omits usage guidance, parameter meaning, and behavioral context, making it insufficiently complete for reliable invocation.

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

Parameters2/5

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

Schema description coverage is only 50%, and the description adds no parameter information to compensate. The required id and optional email parameters are left entirely to the schema, with the latter only partially documented.

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 a specific verb and resource: fetching a draft's full content. It is easy to understand what the tool does, though it does not explicitly differentiate itself from siblings like gmail_get_message or 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?

There is no guidance on when to use this tool versus alternatives such as gmail_get_message or gmail_list_drafts. It also omits any prerequisites, such as whether a draft id must be obtained first.

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

gmail_get_messageA

Fetch a single Gmail message by ID with headers and decoded text body.

NameRequiredDescriptionDefault
idYes
emailNoGoogle account email. May be omitted when exactly one account is configured; required when multiple accounts are configured.
formatNoDefault 'full'

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It helpfully says the response includes headers and decoded text body, but omits authentication/account requirements, error behavior, and how the format parameter changes output.

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

Conciseness5/5

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

A single, front-loaded sentence that states the verb, resource, identifier, and return content without wasted words.

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

Completeness3/5

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

No output schema or annotations exist, so the description should carry more context. It gives some return information, but does not explain account selection, format effects, or permission requirements for a read tool with three parameters.

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

Parameters3/5

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

Schema coverage is 67%, with the schema describing email and format. The description covers the required id parameter but adds no semantics for email or format, so it does not materially compensate for the remaining gap.

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

Purpose4/5

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

The description states a specific verb (Fetch), resource (single Gmail message), identifier (by ID), and returned content (headers and decoded text body). It implicitly distinguishes 'message' from siblings like gmail_get_thread or gmail_get_draft, but does not explicitly name alternatives or boundaries.

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

Usage Guidelines3/5

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

Usage is implied: call this when you have a message ID and need the message content. There is no explicit when-to-use, when-not-to-use, or alternative routing, such as when to prefer gmail_get_thread or gmail_search.

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

gmail_get_threadB

Fetch an entire Gmail thread by ID with all messages in order.

NameRequiredDescriptionDefault
idYes
emailNoGoogle account email. May be omitted when exactly one account is configured; required when multiple accounts are configured.

TDQS

B3.3/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full behavioral burden. It does disclose the return trait that matters most (all messages, in order), which is useful and not derivable from structured fields, but it omits the read-only nature of the operation, any permission/account prerequisites, pagination or size limits, and behavior for an invalid thread ID.

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

Conciseness5/5

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

A single front-loaded sentence with no filler: verb, resource, identifier, and scope. Nothing is repeated from the structured fields and nothing needs trimming.

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

Completeness3/5

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

For a simple two-parameter read tool with no output schema, the description covers the essential action and roughly what comes back. It leaves the returned message structure to guesswork and omits sibling differentiation, so it is adequate but with visible gaps.

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

Parameters3/5

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

Schema description coverage is 50%: the optional email parameter is fully documented in the schema, while id is undocumented there but implicitly explained by 'by ID' in the description. That is a marginal add for the id parameter, not substantial compensation, so the baseline 3 is appropriate.

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

Purpose4/5

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

Specific verb (fetch) plus resource (Gmail thread) and scope (entire thread, all messages in order). It clearly tells an agent what the tool returns, but it never distinguishes itself from the sibling gmail_get_message, which is the natural source of confusion for an agent choosing between thread-level and message-level retrieval.

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

Usage Guidelines2/5

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

No when-to-use, when-not-to-use, or alternative is given. With gmail_get_message and gmail_search in the sibling list, the description should state that this retrieves a whole conversation when the thread ID is known, but it offers no routing guidance at all.

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

gmail_list_draftsC

List Gmail drafts (most recent first).

NameRequiredDescriptionDefault
emailNoGoogle account email. May be omitted when exactly one account is configured; required when multiple accounts are configured.
page_tokenNo
max_resultsNo

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full disclosure burden, yet it only states result ordering. It says nothing about pagination behavior (despite a page_token parameter), auth/account requirements, or rate limits, leaving an agent to discover these at call time.

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

Conciseness4/5

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

One short sentence with the core action front-loaded and zero filler; it is efficiently structured, though arguably terse to the point of under-specification.

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

Completeness2/5

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

With no annotations, no output schema, 33% parameter coverage, and a paginated list operation whose pagination is never explained, the definition leaves significant gaps an agent would need to resolve before calling it correctly.

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

Parameters2/5

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

Schema description coverage is 33% — only 'email' is documented, while 'page_token' and 'max_results' (with its 1-100 bound) are bare in the schema. The description adds no parameter meaning at all, so it fails to compensate for the coverage gap.

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

Purpose4/5

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

The description gives a clear verb+resource ('List Gmail drafts') and adds ordering semantics ('most recent first'), which distinguishes it from gmail_get_draft (single draft). However, it makes no attempt to distinguish itself from the broader sibling set (gmail_search, gmail_list_labels), so it stops short of full sibling differentiation.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no exclusions, and no mention of alternatives such as gmail_get_draft or gmail_search. Usage is only inferable from the tool name itself, which is exactly the kind of inference a description should eliminate.

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

gmail_list_labelsB

List all Gmail labels (system and user).

NameRequiredDescriptionDefault
emailNoGoogle account email. May be omitted when exactly one account is configured; required when multiple accounts are configured.

TDQS

B3.1/5.0
Behavior2/5

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

There are no annotations, so the description carries the full behavioral burden, and it discloses almost nothing: no statement that it is a read-only operation, no auth/account requirements, no pagination or rate-limit notes. Only the scope hint ('system and user') goes beyond the name, which is thin for an unannotated tool.

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

Conciseness5/5

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

A single front-loaded sentence with zero filler that states the action and the scope; nothing is wasted and nothing important is buried.

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 one-parameter read tool with full schema coverage and no output schema, the description is minimally adequate. However, with no annotations it still leaves the read-only nature, account-selection behavior, and return shape unstated.

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

Parameters3/5

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

Schema description coverage is 100% and the single 'email' parameter is fully documented in the schema, including the single-vs-multiple account rule. The description adds no parameter meaning beyond that, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb (list) and resource (Gmail labels) plus the scope (system and user), so an agent immediately knows what it returns. No sibling tool lists labels, so there is no sibling to differentiate against, which is the only thing keeping this from a 5.

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

Usage Guidelines2/5

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

The description gives no when-to-use guidance, prerequisites, or alternatives. It never states that this is a discovery tool typically called before operations that need label IDs, so the agent must infer the usage context entirely.

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

setup_add_accountA

Authorize an additional Google account. Call without url_or_code to get a consent URL, then call again with the post-consent localhost URL/code. Once multiple accounts are configured, Google tools require email on every call.

NameRequiredDescriptionDefault
emailNoOptional account to preselect and verify during authorization.
url_or_codeNoOmit to start auth and receive a consent URL. Pass the post-consent localhost URL (or just the `code` param) to complete auth.

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses the interactive two-call handshake, what the first call returns (a consent URL), and a genuine side effect — that all Google tools then require email on every call. It stops short of stating permission scopes, token persistence, or what happens if the consent URL is never completed.

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, zero filler, ordered by the sequence an agent will actually execute. The downstream email requirement is placed last where it reads as a consequence rather than competing with the core instruction.

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

Completeness4/5

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

For a zero-required-param, no-output-schema setup tool, the description covers the flow, the return value of step one, and the cross-tool consequence. Only failure/abort behavior and account-limit details are absent, which are minor for this operation.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, and the description adds real value by clarifying the state-dependent meaning of url_or_code (omit to start, pass localhost URL or bare code to finish) and noting email's preselect/verify role. This is more than a restatement of 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?

Specific verb+resource ('Authorize an additional Google account') with a clear scope qualifier ('additional') that separates it from setup_auth and setup_list_accounts, which are the nearest siblings. An agent can pick this tool without opening the schema.

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

Usage Guidelines4/5

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

The two-phase usage is spelled out precisely: call without url_or_code to obtain a consent URL, then call again with the post-consent localhost URL/code. The word 'additional' implies setup_auth handles the first account, but the alternative is never explicitly named and no when-not-to-use condition is given.

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

setup_authA

Authorize the first Google account or reauthorize an existing one. Call without url_or_code to begin, then call again with the post-consent localhost URL/code to finish. Requests Gmail, Calendar, read/write Google Docs and Sheets, and read-only Google Drive access. Existing accounts must reauthorize to grant newly added scopes.

NameRequiredDescriptionDefault
emailNoOptional account to preselect and verify during authorization.
url_or_codeNoOmit to start auth and receive a consent URL. Pass the post-consent localhost URL (or just the `code` param) to complete auth.

TDQS

A4/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 and does well: it discloses the two-phase consent flow, the exact scopes requested (Gmail, Calendar, Docs/Sheets read/write, Drive read-only), and that existing accounts must reauthorize to pick up newly added scopes. It does not say whether a browser is launched or where tokens are persisted, which are the only notable gaps.

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

Conciseness5/5

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

Three sentences with no filler, and the actionable two-step protocol is front-loaded before the scope inventory. Every sentence carries distinct information (flow, scopes, reauthorization caveat).

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?

With no annotations and no output schema, the description must cover behavior itself, and it does: both phases are described and the consent URL return is implied by 'receive a consent URL.' It could be more complete about the completion-state response (e.g., which account was signed in), but nothing critical is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents both parameters, and the description largely restates the same protocol (omit `url_or_code` to start, pass the URL/code to finish). The `email` preselect/verify semantics live only in the schema, not the description, so no value is added beyond the baseline.

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

Purpose4/5

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

States a specific verb and resource: authorize (or reauthorize) a Google account, and names the two modes (first account vs. existing account). It is clearly distinct from the read-only gmail_*/drive_* siblings, but it never distinguishes itself from setup_add_account, leaving an agent to guess which of the two setup tools actually adds an account.

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 states the calling protocol: call without `url_or_code` to begin, then call again with the post-consent localhost URL/code to finish. That is actionable context an agent can follow directly. It stops short of naming an alternative or exclusion (e.g., when to use setup_add_account instead).

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

setup_list_accountsA

List configured Google accounts and their granted OAuth scopes.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries the full burden, but "List" conveys read-only semantics and it usefully discloses what is returned (accounts plus granted scopes). It says nothing about auth requirements, whether scopes reflect live grants, or pagination/error behavior.

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

Conciseness5/5

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

A single front-loaded sentence that states the resource and the returned content with no filler. Every word earns its place.

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

Completeness4/5

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

For a zero-param read tool with no output schema, the description covers the essential return content (accounts and their scopes). Given no annotations exist, a touch more on read-only safety or prerequisites would fully close the gap.

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

Parameters4/5

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

The tool takes zero parameters, so there is no parameter semantics to explain; the baseline for a no-arg tool applies. The description adds nothing misleading in this dimension.

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

Purpose4/5

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

States a specific verb ("List") and resource ("configured Google accounts and their granted OAuth scopes"), which is unambiguous. It doesn't name or route against siblings like setup_auth or setup_add_account, but the resource itself is distinct enough that an agent can differentiate it.

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

Usage Guidelines3/5

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

Usage is only implied: an agent would infer this is the way to enumerate existing accounts. There is no explicit when-to-use, no prerequisite (e.g. run setup_auth first), and no mention of how it relates to setup_add_account.

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

sheets_get_spreadsheetA

Get spreadsheet metadata, tab titles/IDs, dimensions, named ranges, and other properties. Cell grid data is excluded by default; enable it for formatting and restrict ranges for large spreadsheets. Discover spreadsheet IDs with drive_search_files using mimeType = 'application/vnd.google-apps.spreadsheet'.

NameRequiredDescriptionDefault
emailNoGoogle account email. May be omitted when exactly one account is configured; required when multiple accounts are configured.
rangesNo
include_grid_dataNoDefault false; true includes cell data and formatting
spreadsheet_id_or_urlYesGoogle Sheets spreadsheet ID or full docs.google.com/spreadsheets URL. The URL's gid does not select a tab; use a sheet-qualified range.

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden and does disclose key traits: grid data is off by default, enabling it returns formatting, and range restriction mitigates large-spreadsheet cost. It stops short of stating auth requirements or account-resolution behavior (which the schema covers for email).

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 tight sentences, front-loaded with what the tool returns, followed by default-behavior and discovery guidance. No filler; every sentence carries actionable content.

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

Completeness4/5

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

There is no output schema and no annotations, so the description is the main source of truth, and it covers return contents, the grid-data default, and ID discovery adequately. Auth/permission behavior is the only notable gap, which the email parameter description partially offsets.

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

Parameters3/5

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

Schema description coverage is 75%, so the schema already documents each parameter thoroughly (including the URL/gid caveat and email rules). The description adds only a light performance rationale for 'ranges' and the formatting motive for grid data, so it sits at the high-coverage baseline of 3.

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

Purpose5/5

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

States a specific verb ('Get') and resource ('spreadsheet') and enumerates exactly what is returned: metadata, tab titles/IDs, dimensions, named ranges. The scope note that cell grid data is excluded implicitly separates it from sheets_read_values, so an agent can distinguish it from siblings without opening a schema.

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?

Gives clear operational guidance: enable grid data only for formatting needs, restrict ranges for large spreadsheets, and discover IDs via drive_search_files with the specific mimeType filter. It lacks an explicit 'use sheets_read_values instead when you need cell values' exclusion, but context for when to reach for this tool is solid.

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

sheets_read_valuesA

Read one or more ranges across spreadsheet tabs in one request. Returns valueRanges in requested order, with trailing empty rows/columns omitted. Choose FORMULA to inspect formulas or UNFORMATTED_VALUE for calculated numbers.

NameRequiredDescriptionDefault
emailNoGoogle account email. May be omitted when exactly one account is configured; required when multiple accounts are configured.
rangesYes
major_dimensionNoDefault ROWS
value_render_optionNoDefault FORMATTED_VALUE
spreadsheet_id_or_urlYesGoogle Sheets spreadsheet ID or full docs.google.com/spreadsheets URL. The URL's gid does not select a tab; use a sheet-qualified range.
date_time_render_optionNoDefault SERIAL_NUMBER; ignored when value_render_option is FORMATTED_VALUE

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It usefully discloses output ordering and trimming ('valueRanges in requested order, with trailing empty rows/columns omitted'), but says nothing about read-only safety, permission/scope requirements, or quota behavior for a read 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?

Three tight sentences: purpose and scope first, then return behavior, then the most consequential parameter choice. Every clause carries information and nothing is repeated from the schema.

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?

With no output schema, the description appropriately describes the return value ('valueRanges in requested order' with trimming). The remaining parameters (major_dimension, date_time_render_option) are documented in the schema, so coverage is adequate, though a note on multi-account/auth context could help given the email parameter.

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

Parameters4/5

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

Schema coverage is already high at 83%, so baseline is 3. The description goes beyond the schema by explaining the practical meaning of the value_render_option choices ('inspect formulas' vs 'calculated numbers'), which the enum alone does not convey, earning a modest bump.

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

Purpose4/5

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

States a specific verb and resource ('Read one or more ranges across spreadsheet tabs') and adds a distinguishing scope detail: multiple ranges in one request. It doesn't explicitly contrast with the sibling sheets_get_spreadsheet, so it stops short of a 5, but an agent can tell what this does without opening the schema.

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

Usage Guidelines3/5

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

The only guidance is value_render_option semantics ('Choose FORMULA to inspect formulas or UNFORMATTED_VALUE for calculated numbers'), which is parameter-level, not tool-level. There is no statement of when to prefer this over sheets_get_spreadsheet or any prerequisites, leaving usage largely implied.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 24 tool updatesv0.4.0
    • First observedcalendar_get_event
    • First observedcalendar_list_calendars
    • First observedcalendar_list_events
    • First observeddocs_get_document
    • First observeddocs_read_document
    • First observeddrive_download_file
    • First observeddrive_get_file
    • First observeddrive_list_folder
    • First observeddrive_list_shared_drives
    • First observeddrive_read_file
    • First observeddrive_search_files
    • First observedgmail_bulk_export
    • First observedgmail_download_attachments
    • First observedgmail_get_draft
    • First observedgmail_get_message
    • First observedgmail_get_thread
    • First observedgmail_list_drafts
    • First observedgmail_list_labels
    • First observedgmail_search
    • First observedsetup_add_account
    • First observedsetup_auth
    • First observedsetup_list_accounts
    • First observedsheets_get_spreadsheet
    • First observedsheets_read_values

TDQS

B3.2/5.0

Scored across 24 tools

Disambiguation4/5

Tools are largely distinct, with clear service prefixes and action verbs. Minor overlap exists between docs_get_document and docs_read_document (structured vs plain text) and between gmail_download_attachments and gmail_bulk_export (attachments vs full messages), but descriptions clarify the boundaries.

Naming Consistency4/5

Names follow a consistent service_verb_noun snake_case convention (e.g., gmail_list_labels, calendar_get_event, drive_download_file). A few names omit the object (gmail_search, setup_auth) or use an adjective (gmail_bulk_export), but the pattern is still predictable.

Tool Count4/5

24 tools span five Google services plus auth, averaging roughly 4 tools per service, which is reasonable for a broad multi-service server. Gmail (8) and Drive (6) are somewhat heavy, but each tool serves a distinct function.

Completeness2/5

The surface is heavily read-only: Gmail lacks send/draft-create/modify, Calendar lacks create/update/delete events, and Docs/Sheets lack any write operations despite auth requesting write scopes. These are significant gaps for a Google Workspace server.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    C
    maintenance
    Multi-account Google MCP server providing read access to Gmail and Calendar via stdio. Supports secure authentication for personal and work accounts with OAuth and keychain token storage.
    4
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables local, read-only access to multiple Gmail and Google Drive accounts through explicit per-account aliases, using bring-your-own Google OAuth with secure credential storage and no telemetry or write capabilities.
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Enables managing multiple Gmail accounts under one OAuth client, with per-account access levels, cross-account search, and read/write operations via stdio or Streamable HTTP.
    12
    62 npm
    MIT