Google Workspace (GWS) MCP Server
This server provides AI assistants with controlled access to Google Workspace services through 25 curated tools, translating MCP tool calls into gws CLI commands for Google Drive, Sheets, Calendar, Docs, and Gmail.
Google Drive (9 tools)
Search and list files (including shared drives)
Get file metadata by ID
Create new files with optional content upload
Copy files (useful for format conversion)
Update file metadata or content
Delete files permanently
Export Google Workspace files (Docs, Sheets, Slides) to PDF, DOCX, XLSX, CSV, plain text, etc.
Download file content inline (text or base64 for binary), with automatic export for Google-native files
Share files by managing permissions for users, groups, domains, or anyone
Google Sheets (4 tools)
Get spreadsheet metadata
Read cell values from a specified range
Write cell values to a specified range
Append rows after the last row in a range
Google Calendar (5 tools)
List events with time range and search query filtering
Get a single event by ID
Create new events (title, time, location, description)
Update existing events
Delete events
Google Docs (3 tools)
Get document content and metadata
Create new empty documents
Apply batch updates (insert text, formatting, etc.)
Gmail (4 tools)
Search and list messages using Gmail query syntax
Read a single message in various formats (full, metadata, minimal, raw)
Search and list email threads
Read a full thread with all messages in a conversation
You can also configure which services to expose to avoid unnecessary context window usage.
Allows for searching and reading Gmail messages and threads to manage email communication programmatically.
Provides tools for managing Google Workspace services, including file operations in Google Drive, spreadsheet manipulation in Google Sheets, event management in Google Calendar, and document editing in Google Docs.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Google Workspace (GWS) MCP ServerSearch my Gmail for recent messages about the project status"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
gws-mcp-server
Google Workspace for AI agents: Gmail, Calendar, Drive, Sheets, Docs, Slides, and Tasks as a curated set of 51 Model Context Protocol tools, built on the official Google Workspace CLI (gws).
Why?
The gws CLI had a built-in MCP server that was removed in v0.8.0 because it exposed 200-400 tools — causing context window bloat in MCP clients. This server takes a curated approach: you choose which Google services to expose, and only a focused set of high-value, narrowly scoped operations are registered as tools. Every tool declares all four MCP annotation hints — readOnlyHint, destructiveHint, idempotentHint, openWorldHint — so clients can reason about side effects, know which writes are safe to retry, and surface clearer consent prompts. This is the permissions leg of trust infrastructure for agents: a deliberately narrow tool surface, side effects declared on every tool, and no freestanding send tool — the only outbound email an agent can trigger is calendar invite/update notifications, opt-in via sendUpdates and off by default.
Related MCP server: Vopak Workspace MCP
Prerequisites
Node.js 18+
gwsCLI installed and authenticated (npm install -g @googleworkspace/cli && gws auth login)
Grant fewer scopes than the default
This server exposes no freestanding send tool — gmail_drafts_create explicitly does not send, and the only outbound email an agent can trigger is calendar invite/update notifications via sendUpdates, which is enum-validated and defaults to none. The token gws auth login mints is broader than that.
gws auth login opens a scope picker listing nine scopes. The default grant is seven: full read-write drive, spreadsheets, gmail.modify (Google documents it as "Read, compose, and send emails"), calendar, documents, presentations, and tasks — the same seven you get running non-interactively as DEFAULT_SCOPES.
The other two rows are Cloud Pub/Sub and Cloud Platform, and neither is part of the default grant — gws auth login --help describes --full as "Request all scopes incl. pubsub + cloud-platform."
Which rows start checked has not been verified against a live picker — the seven above are the documented default grant, not an observation of the TUI. Read the checkboxes before pressing Enter rather than trusting this paragraph.
So the token on disk can send mail and rewrite Drive even though nothing here will. Deselect what you do not need in the picker, or:
gws auth login --readonly # read-only across services-s gmail limits the picker to Gmail, per the flag's own help text ("Comma-separated service names to limit scope picker"). It cannot pull in cloud-platform or pubsub, because those two are reachable only through --full.
On Linux there is no keyring, and the encryption key is a file next to the data it encrypts. gws enables the keyring crate's native backends only for macOS and Windows; on every other platform the dependency is declared with no backend feature, so the store falls through to writing .encryption_key into ~/.config/gws/. That file is not a backup of a key held elsewhere — it is the key, and the credential store's own doc comment says it is never deleted. Setting GOOGLE_WORKSPACE_CLI_KEYRING_BACKEND=file changes nothing there because that is already the only path. On macOS and Windows the key file is removed once the OS keyring holds the key. If you run this headless on Linux, treat ~/.config/gws/ as a password file: anyone who can read the directory has the credentials.
Quick start
# Install
npm install -g gws-mcp-server
# Or run from source
git clone https://github.com/conorbronsdon/gws-mcp-server.git
cd gws-mcp-server
npm install && npm run buildConfiguration
Claude Code (.mcp.json)
{
"mcpServers": {
"google-workspace": {
"command": "npx",
"args": [
"gws-mcp-server",
"--services", "drive,sheets,calendar,docs,slides,gmail,tasks"
]
}
}
}Claude Desktop (claude_desktop_config.json)
{
"mcpServers": {
"google-workspace": {
"command": "npx",
"args": [
"gws-mcp-server",
"--services", "drive,sheets,calendar"
]
}
}
}Options
Flag | Description | Default |
| Comma-separated list of services to expose | All services |
| Path to the |
|
| Register only the read-only tools | off |
--read-only
--read-only registers 22 tools instead of 51. Every tool that writes to Google is left unregistered, so it never appears in tools/list and there is nothing for an agent to call — including gmail_drafts_create, which is a write even though it never sends. drive_files_download stays, since it reads.
gws-mcp-server --read-only
gws-mcp-server --read-only --services drive,calendar # combines with -sThis constrains the agent, not the credential. The token on disk keeps whatever scopes it was granted, and anything else on the machine can still use it. gws auth login --readonly is what narrows the token; the two are complementary. For an MCP server the agent is the threat model, but that is the limit of the claim.
Trimming context cost
Every registered tool rides along in each conversation: the full registry is roughly 37 KB of tools/list payload (~9.5K tokens) that your MCP client loads before anything else happens. The two flags above compose, and dropping whole services you don't use is the cheapest context win there is:
gws-mcp-server --services calendar # calendar assistant: 6 tools
gws-mcp-server --services drive,docs # document work, nothing else
gws-mcp-server --read-only --services drive,docs,sheets # research setup: reads onlyIn .mcp.json or claude_desktop_config.json, the same trimming is just editing the args array:
"args": ["gws-mcp-server", "--services", "drive,calendar"]A service's tool count (headers below) tracks its context cost: dropping tasks (12 tools) saves the most, docs (3 tools) the least. There is no per-tool exclude flag today — if service granularity is too coarse for your setup, open an issue describing the split you need.
Available services & tools
drive (14 tools)
drive_files_list— Search and list filesdrive_files_get— Get file metadatadrive_files_create— Create files (with optional upload)drive_files_copy— Copy files (useful for format conversion)drive_files_update— Update file metadata/contentdrive_files_delete— Delete filesdrive_files_export— Export Google Workspace files (Doc, Sheet, Slide) to other formatsdrive_files_download— Download file content (text inline, binary as base64 or saved to a path; Google-native files are exported to a readable format)drive_permissions_create— Share filesdrive_permissions_list— List all permissions on a file (audit sharing state, e.g. check for public access)drive_permissions_update— Change an existing permission's role (e.g. reader to writer); downgrades remove capabilities. Use the dedicated transfer tools below for ownership changes.drive_permissions_delete— Revoke a permission from a filedrive_permissions_transferOwnership— Immediately transfer ownership to another Google Workspace account in the SAME organization, downgrading the current owner to writer; sends a mandatory notification email; not supported for shared drive filesdrive_permissions_proposeOwnershipTransfer— Propose transferring ownership between personal/consumer accounts; the recipient must separately accept (mandatory email notification), this doesn't transfer it outright
sheets (5 tools)
sheets_get— Get spreadsheet metadatasheets_values_get— Read cell valuessheets_values_update— Write cell valuessheets_values_append— Append rowssheets_batchUpdate— Apply updates to a spreadsheet (conditional formatting, cell/border formatting, adding sheets, and more; delete requests are permanent)
calendar (6 tools)
calendar_events_list— List eventscalendar_events_get— Get event detailscalendar_events_insert— Create events, optionally withattendees.sendUpdatescontrols invitation email (defaultnone— no email, though the event may still appear on attendees' calendars depending on their settings)calendar_events_update— Update events (only supplied fields change — exceptattendees, which replaces the whole list; omitted attendees are uninvited). SamesendUpdatessupport as insertcalendar_events_delete— Delete eventscalendar_freebusy_query— Query free/busy information for one or more calendars over a time range
docs (3 tools)
docs_get— Get document contentdocs_create— Create documentsdocs_batchUpdate— Apply document updates
slides (5 tools)
slides_get— Get a presentation's slides, layouts, masters, and page elementsslides_create— Create a blank presentationslides_batchUpdate— Apply updates (insert/update/delete slides, text, shapes, tables, etc)slides_pages_get— Get a single page (slide, layout, or master)slides_pages_getThumbnail— Get a thumbnail image URL for a page
gmail (6 tools)
gmail_messages_list— Search messagesgmail_messages_get— Read a messagegmail_threads_list— Search threadsgmail_threads_get— Read a full threadgmail_threads_modify— Add/remove labels on a thread (archive, mark read, star)gmail_drafts_create— Create a draft (plain text and/or HTML, with reply threading viathreadId). Drafts are never auto-sent
tasks (12 tools)
tasks_tasklists_list— List task liststasks_tasklists_get— Get a task listtasks_tasklists_insert— Create a task listtasks_tasklists_update— Update a task list (only supplied fields change)tasks_tasklists_delete— Delete a task listtasks_tasks_list— List tasks (filters: completed/hidden/due dates)tasks_tasks_get— Get a tasktasks_tasks_insert— Create a task (optionally nested or positioned)tasks_tasks_update— Update a task (only supplied fields change; common use: mark complete)tasks_tasks_move— Move a task within/across lists or reordertasks_tasks_delete— Delete a tasktasks_tasks_clear— Hide all completed tasks in a list
Update semantics: the
*_updatetools (calendar events, tasks, task lists) use the Google API'spatchverb — they merge the fields you supply and leave the rest untouched. To clear an existing value, pass it explicitly (e.g. an empty string) rather than omitting it.
Total: 51 tools (vs 200-400 in the old implementation)
Adding new tools
Edit src/services.ts to add tool definitions. Each tool maps directly to a gws CLI command:
{
name: "drive_files_list", // MCP tool name
description: "List files in Drive", // Shown to AI
command: ["drive", "files", "list"],// gws CLI args
params: [ // Maps to --params JSON
{ name: "q", description: "Search query", type: "string", required: false },
],
bodyParams: [ // Maps to --json body
{ name: "name", description: "File name", type: "string", required: true },
],
}Typed errors
Tool call failures are mapped to a typed error hierarchy (src/errors.ts): AuthenticationError (401/403), RateLimitError (429), ValidationError (400), NotFoundError (404, with a shared-drive access hint for drive commands), and ServerError (5xx), all extending a base GwsError. Unlike an HTTP API client, this server has no response object to read a status code from — it spawns the gws CLI as a subprocess and only sees plain text (stdout/stderr, or a rejected promise's .message). mapGwsErrorToTyped() recovers a status-like code from that text, handling both a raw JSON error body (Google's own {"error":{"code":...,"message":...}} shape) and plain text containing an HTTP-status-like token (e.g. "Error 404: ..."). If neither pattern is found, the original message passes through unchanged rather than forcing an invented status onto it.
Architecture
MCP Client (Claude) ←→ stdio ←→ gws-mcp-server ←→ gws CLI ←→ Google APIsThe server is a thin wrapper: it translates MCP tool calls into gws CLI invocations, passes --params and --json as appropriate, and returns the JSON output. Authentication stays in the gws CLI — this server never sees or stores your Google credentials.
Development
git clone https://github.com/conorbronsdon/gws-mcp-server.git
cd gws-mcp-server
npm ci
npm run lint # type-check
npm run build
npm test # vitest, mocks the executor layer — no real gws callsContributing
Issues and pull requests are welcome. The most useful contributions are new tool definitions in src/services.ts for high-value gws operations (see "Adding new tools" above). Keep the curated contract: a focused set of narrowly scoped tools, not a 1:1 mirror of every Google API surface. See SECURITY.md for how to report vulnerabilities.
Other options
This server is deliberately narrow: a curated tool surface, side effects declared on every tool, no freestanding send tool. That is the right trade for some workflows and the wrong one for others. The real alternatives:
You want | Use |
Every Workspace API, self-hosted, with tiers and multi-user OAuth | taylorwilsdon/google_workspace_mcp — 120+ tools across 12 services, MIT, |
Google's own servers, hosted by Google | Google Workspace remote MCP servers — 8 endpoints, 42 tools. Developer Preview: requires an application, a Workspace account (not personal Gmail), and a supported client plan |
No MCP at all — CLI plus agent skills | googleworkspace/cli — 100+ Agent Skills on the same |
Worth saying plainly: Google's official Gmail MCP server is also draft-only, with no send tool — the curated-surface argument is no longer contrarian. What this server still does that those don't: Google Tasks (Google's official lineup has no Tasks server), all four MCP annotation hints on every tool, a local stdio server with no preview application or plan gating, and --read-only as a single flag.
The analytics siblings
Data | Server |
Google Workspace | this repo |
Search Console | gsc-mcp — same curated approach, including derived views like |
YouTube Analytics | yt-analytics-mcp — owner-side channel, video, and playlist metrics; read-only, nine tools |
Google Analytics 4 | googleanalytics/google-analytics-mcp — Google's own, read-only |
BigQuery | googleapis/mcp-toolbox — Google's own |
These are separate credential families, not one login: Workspace authenticates with gws auth login, Search Console with a webmasters OAuth credential, YouTube Analytics with a yt-analytics.readonly OAuth credential, GA4 with Application Default Credentials scoped analytics.readonly. Nothing here shares a token with anything else.
About
Built and maintained by Conor Bronsdon. I host the Chain of Thought podcast, which covers AI infrastructure, developer tools, and how practitioners actually use this stuff. I built this to give the agent workflows that run the show safe, curated access to Gmail, Calendar, Drive, Sheets, Docs, Slides, and Tasks.
Companion tools:
Transistor-MCP: the Transistor.fm MCP server. Episodes, transcripts, and download counts.
substack-mcp: read posts and manage drafts on Substack, safe for agent workflows.
podcastindex-mcp: the Podcast Index MCP server, search by person or topic, trending shows, feed health.
op3-mcp: podcast analytics through OP3. Downloads, geography, apps. Read-only.
ai-tools-for-creators: a curated list of AI skills and MCP servers for people who ship ideas for a living.
More at chainofthought.show and on X.
Disclaimer
This is an independent personal project, not affiliated with, sponsored by, or endorsed by any company. All views expressed are my own.
License
MIT
Available Tools
39 toolscalendar_events_deleteADestructive
Delete a calendar event.
| Name | Required | Description | Default |
|---|---|---|---|
| eventId | Yes | Event ID to delete | |
| calendarId | Yes | Calendar ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description aligns with annotations (destructiveHint=true) by stating 'Delete', but it adds no additional behavioral context beyond what annotations already provide, such as consequences, permissions, or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise at four words, front-loading the key action and resource. Every word is necessary and earned, with no wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple deletion tool with two well-documented parameters and no output schema, the description is minimally adequate. However, it could be improved by mentioning permanence or required permissions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the input schema already fully documents both required parameters (eventId and calendarId). The description adds no further semantic value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Delete a calendar event' clearly specifies the action (delete) on a resource (calendar event), and among sibling tools like calendar_events_get, insert, list, and update, it uniquely identifies this tool as the deletion operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives, prerequisites, or when not to use it. The description lacks any contextual usage hints.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calendar_events_getARead-only
Get a single calendar event by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| eventId | Yes | Event ID | |
| calendarId | Yes | Calendar ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds no behavioral details beyond the annotation readOnlyHint=true, which already indicates a safe read operation. No mention of authentication, rate limits, or return behavior. The description is adequate given the 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence of six words with no unnecessary information. It is front-loaded with the key action and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple get operation, the description is nearly complete. It lacks specifics about the return value (e.g., whether it returns full event details), but given no output schema and the tool's straightforward nature, this is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Both parameters (calendarId, eventId) are fully described in the input schema (100% coverage). The description does not add any additional parameter semantics beyond what the schema provides, which meets the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get', the resource 'single calendar event', and the selection criterion 'by ID'. It effectively distinguishes this tool from sibling tools like calendar_events_list (multiple events) and calendar_events_insert/update/delete.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage context is implied by the tool name and purpose: use when you need a single event by ID. However, no explicit guidance on when not to use or alternatives (e.g., calendar_events_list for multiple events) is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calendar_events_insertC
Create a new calendar event.
| Name | Required | Description | Default |
|---|---|---|---|
| end | Yes | End time JSON | |
| start | Yes | Start time JSON (e.g. '{"dateTime":"2026-03-10T10:00:00-07:00"}') | |
| summary | Yes | Event title | |
| location | No | Event location | |
| calendarId | Yes | Calendar ID | |
| description | No | Event description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false, so the description's 'Create' is consistent but adds nothing beyond that. No disclosure of behavioral traits like timezone handling, recurrence, or error responses.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise at 5 words. It is front-loaded but lacks any structure or elaboration. Every word earns its place, but the brevity may sacrifice completeness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (6 parameters, 4 required, no output schema), the description is insufficient. It does not cover return values, prerequisites, or side effects. Annotations provide minimal context, but the description should compensate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds no additional meaning beyond the schema; it does provide an example for 'start' in the schema but not in the description field itself.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Create a new calendar event' clearly states the verb (create) and resource (calendar event). It is specific enough to distinguish from sibling tools like update or delete, though it is brief.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., update, delete). No exclusions or context provided. Sibling tools exist but no differentiation is offered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calendar_events_listBRead-only
List events from a calendar.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Free-text search | |
| orderBy | No | Sort order: startTime or updated | |
| timeMax | No | Upper bound (RFC3339) | |
| timeMin | No | Lower bound (RFC3339, e.g. "2026-03-07T00:00:00Z") | |
| calendarId | Yes | Calendar ID (use 'primary' for main calendar) | |
| maxResults | No | Max events to return | |
| singleEvents | No | Expand recurring events (usually true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and the description is consistent ('list'). However, the description does not add any behavioral context beyond the annotation, such as pagination or time zone handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One clear, concise sentence with no waste. Efficiently communicates the tool's purpose, though it could be slightly expanded for completeness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite good schema coverage, the description lacks context about return value (list of events), pagination behavior, or usage scenarios. For a list tool with 7 parameters and many siblings, the description is too minimal.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the description adds no extra meaning beyond the schema. Baseline 3 applies as the schema already documents each parameter thoroughly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'List events from a calendar' uses a specific verb ('list') and resource ('events'), clearly distinguishing it from siblings like calendar_events_get or calendar_events_delete.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives. The description does not provide context on when to choose this over other list tools like drive_files_list or gmail_threads_list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calendar_events_updateA
Update an existing calendar event with patch semantics (only supplied fields change).
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | End time JSON | |
| start | No | Start time JSON | |
| eventId | Yes | Event ID to update | |
| summary | No | Event title | |
| calendarId | Yes | Calendar ID | |
| description | No | Event description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation readOnlyHint=false confirms it's a write operation. The description adds important patch semantics, disclosing that only supplied fields change, which is beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, no wasted words, front-loaded key information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, but the description is sufficient for a simple update tool; the agent can infer the return value. Lacks explicit return description but not necessary.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% so baseline is 3. The description adds value by explaining patch semantics, clarifying how parameters interact (only supplied fields change).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool updates an existing calendar event and specifies patch semantics, distinguishing it from siblings like insert, delete, get, and list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by stating patch semantics; it is clear when to use (modify existing event) but lacks explicit when-not-to-use or alternatives guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
docs_batchUpdateC
Apply updates to a Google Doc (insert text, formatting, etc).
| Name | Required | Description | Default |
|---|---|---|---|
| requests | Yes | Array of update requests as JSON string | |
| documentId | Yes | The document ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation 'readOnlyHint: false' already indicates a write operation. The description adds only 'apply updates' which is consistent but provides no additional behavioral traits like auth needs, rate limits, or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, concise with no filler. It effectively communicates the tool's purpose in minimal words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter mutation tool, the description is adequate but lacks mention of output or common use cases. Given no output schema, more context would be helpful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the parameters are fully described. The description adds small value by giving examples of request types (insert text, formatting), but overall does not significantly enhance parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Apply updates to a Google Doc' with specific examples like 'insert text, formatting, etc.' This is a specific verb+resource but does not differentiate from sibling tools like docs_create.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives, nor any exclusivity or prerequisites. The description only states what it does, not the context for its use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
docs_createB
Create a new empty Google Doc.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Document title |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description does not disclose behavioral traits beyond the annotation (readOnlyHint: false). No information about what happens if the title exists, whether the doc is created in a specific folder, or what the response contains. It adds no value beyond the annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no unnecessary words. It is front-loaded and to the point.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple creation tool, the description lacks critical context such as return value (e.g., document ID) or default location. With no output schema, the description should compensate but does not.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with one parameter described as 'Document title'. The tool description adds no additional meaning beyond the schema, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (create) and the resource (new empty Google Doc). It distinguishes from sibling tools like docs_get or drive_files_create by specifying 'empty Google Doc'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. No mention of when to use docs_create vs drive_files_create or docs_batchUpdate, nor any prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
docs_getBRead-only
Get a Google Doc's content and metadata.
| Name | Required | Description | Default |
|---|---|---|---|
| documentId | Yes | The document ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds 'content and metadata' to the behavior, which is consistent with the readOnlyHint annotation. However, it does not disclose additional behavioral traits such as the format of returned content, rate limits, or required permissions. The annotation already indicates read-only, so the description provides marginal extra value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that is front-loaded with the core purpose. Every word earns its place; there is no redundancy or unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple input (one parameter with full schema coverage) and annotations covering the read-only behavior, the description is adequate but not rich. It does not mention the output structure, which could be helpful for an agent. No output schema exists to compensate, so slightly more detail could be beneficial.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers 100% of parameters with a description for documentId. The tool description does not add additional semantic meaning beyond what the schema provides, so baseline score is appropriate. No parameter details are missing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves a Google Doc's content and metadata, using a specific verb ('Get') and resource ('Google Doc'). It differentiates from sibling tools like docs_batchUpdate (which modifies) and sheets_get (different resource type), though it doesn't explicitly highlight these distinctions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. It does not mention prerequisites (e.g., document must exist), when not to use it, or scenarios where other tools like docs_batchUpdate or drive_files_get would be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drive_files_copyB
Copy a file. Useful for converting formats (e.g. markdown to Google Doc).
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name for the copy | |
| fields | No | Fields to return | |
| fileId | Yes | Source file ID to copy | |
| parents | No | Parent folder IDs (JSON array as string) | |
| mimeType | No | Target MIME type for conversion |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotation indicating a write operation, the description does not disclose behavioral details such as permissions needed, whether the original is preserved, or what happens during conversion. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise: two sentences with no unnecessary words. The key action and a practical use case are front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite only 5 parameters and no output schema, the description lacks context about the copy behavior (e.g., permissions, location), the parents parameter, and the fields parameter. It leaves significant gaps for an agent to infer.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema coverage, the baseline is 3. The description adds minimal value by hinting at the mimeType parameter with an example, but does not elaborate on other parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'copy' and resource 'file', and provides a specific use case (format conversion). This distinguishes it from siblings like drive_files_create and drive_files_update.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It implies usage for copying and converting formats but lacks explicit guidance on when to use this tool vs alternatives like drive_files_export or drive_files_create. No when-not-to conditions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drive_files_createB
Create a new file in Google Drive. Use with bodyParams for metadata and optionally upload a local file.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | File name | |
| fields | No | Fields to return (e.g. "id,webViewLink") | |
| parents | No | Parent folder IDs (JSON array as string, e.g. '["folderId"]') | |
| mimeType | No | MIME type (e.g. "application/vnd.google-apps.document") | |
| uploadPath | No | Local file path to upload |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false, so the description adds minimal behavioral insight. It does not disclose authentication needs, rate limits, or consequences of creating a file with an existing name. The burden on description is higher due to no additional context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no unnecessary words. The description is front-loaded with the purpose and immediately provides usage context. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite good schema coverage, the description lacks information on return values, error handling, or prerequisites (e.g., required scopes). For a tool with 5 parameters and no output schema, more context is needed for the agent to use it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all parameters have individual descriptions. The description adds a general hint about using bodyParams, but does not provide additional meaning or constraints beyond the schema. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Create a new file in Google Drive,' specifying the verb and resource. It distinguishes this tool from siblings like drive_files_list, drive_files_get, etc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description hints at using 'bodyParams' for metadata and optional file upload, but does not explicitly state when to use this tool versus alternatives like drive_files_copy or other creation methods. No exclusion criteria or prerequisites are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drive_files_deleteADestructive
Permanently delete a file.
| Name | Required | Description | Default |
|---|---|---|---|
| fileId | Yes | The file ID to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, clearly signaling mutation. The description adds the qualifier 'permanently', reinforcing irreversibility. However, it does not disclose additional behavioral traits such as whether the deletion affects shared permissions or fails for non-existent files.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence containing only essential information. Every word serves a purpose, and there is no redundancy or extraneous content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and the presence of annotations (destructiveHint), the description adequately covers the core action. However, it could mention that the operation does not return a response body or clarify the source of the fileId (though the schema supplies that). Overall, it is mostly complete for a straightforward delete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides full coverage for the single parameter fileId with a description. The tool's description does not add extra meaning beyond what the schema already states, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Permanently delete a file' uses a specific verb ('delete') and resource ('file'), directly and unambiguously stating the tool's action. It clearly distinguishes itself from sibling tools like drive_files_copy or drive_files_update by specifying the destructive nature of the operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no explicit guidance on when to use this tool versus alternatives (e.g., trashing a file or using a delete with confirmation). The word 'permanently' implies irreversibility, which offers implicit context, but no when-not-to-use or alternative tool names are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drive_files_downloadARead-only
Download a file's content from Google Drive. Returns the text content for text files, or a base64-encoded string for binary files. For Google Docs/Sheets/Slides, exports to a readable format (plain text by default).
| Name | Required | Description | Default |
|---|---|---|---|
| fileId | Yes | The file ID to download | |
| savePath | No | For binary files (images, PDFs): save to this local path instead of returning content inline. The file path is returned in the response. | |
| exportMimeType | No | For Google-native files (Docs/Sheets/Slides): export format. Defaults to text/plain for Docs, text/csv for Sheets. Examples: text/plain, text/csv, application/pdf |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark readOnlyHint=true. The description adds value by explaining return formats (text, base64, export) and the savePath option. It does not contradict annotations and discloses important behavioral details beyond them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with no wasted words, front-loading the core purpose. Each sentence adds distinct value, making it highly concise and structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given good annotations and full schema coverage, the description covers key behaviors. It could mention error handling or size limits, but the provided context is sufficient for typical usage. No output schema is needed as return behavior is described.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds meaning beyond schema by explaining return behavior based on file type and default export MIME types, enhancing parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool downloads file content from Google Drive, specifying behavior for text files, binary files, and Google native files. It uses specific verbs and resource, and distinguishes from siblings like drive_files_export and drive_files_get.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide explicit guidance on when to use this tool versus alternatives like drive_files_export. It implies usage for downloading content but lacks when-not or alternative tool mentions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drive_files_exportARead-only
Export a Google Workspace file (Doc, Sheet, Slide) to a specific format. Returns JSON with export metadata. Use drive_files_download for automatic export with content returned inline.
| Name | Required | Description | Default |
|---|---|---|---|
| fileId | Yes | The Google Workspace file ID to export | |
| mimeType | Yes | Export format: text/plain, text/csv, application/pdf, application/vnd.openxmlformats-officedocument.wordprocessingml.document (docx), application/vnd.openxmlformats-officedocument.spreadsheetml.sheet (xlsx) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Read-only nature is consistent with readOnlyHint annotation. Description adds that return is JSON metadata, which is useful context beyond annotations. No mention of permissions or rate limits, but sufficient given annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences: first defines action and scope, second provides sibling guidance and return type. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple export tool with two parameters, the description covers purpose, supported files, return format, and alternative usage. No output schema, but return type is mentioned. Complete given complexity and context from siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema already provides descriptions for both parameters (fileId and mimeType) with mimeType listing possible formats. The description does not add new parameter insights beyond what schema provides, so baseline 3 applies due to 100% schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool exports a Google Workspace file to a specific format, specifying file types (Doc, Sheet, Slide) and return type (JSON metadata). Distinguishes from sibling tool drive_files_download.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly directs to use drive_files_download for automatic export with inline content, providing clear alternative for when the agent wants content instead of metadata.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drive_files_getARead-only
Get a file's metadata by ID. Shared drive files are supported automatically.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Fields to include | |
| fileId | Yes | The file ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, marking it as a safe read. The description adds that 'Shared drive files are supported automatically,' which is a useful behavioral detail beyond annotations. However, no other side effects, permissions, or limitations are disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no redundancy, essential information front-loaded: action and resource in the first sentence, special feature in the second. Every word serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only metadata retrieval tool with 2 parameters and no output schema, the description covers the core purpose and an important edge case (shared drives). A minor gap is lack of mention about return format or optional fields usage, but overall sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with both parameters (fileId, fields) well-described in the schema. The description does not add any additional meaning, examples, or clarification beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with a verb ('Get') and specifies the resource ('a file's metadata') and method ('by ID'). It clearly differentiates from sibling tools like drive_files_list, drive_files_download, etc., by focusing on metadata retrieval for a single file.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool vs alternatives (e.g., drive_files_list for listing, drive_files_get vs drive_files_download for content vs metadata). No when-not-to-use or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drive_files_listARead-only
List files in Google Drive. Supports search queries via the 'q' parameter. Shared drive files are included automatically.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Search query (e.g. "name contains 'report'" or "mimeType='application/vnd.google-apps.folder'") | |
| fields | No | Fields to include (e.g. "files(id,name,mimeType)") | |
| orderBy | No | Sort order (e.g. "modifiedTime desc") | |
| pageSize | No | Max results per page (1-1000, default 100) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description aligns with readOnlyHint annotation and adds valuable behavior: 'Shared drive files are included automatically'. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise, front-loaded sentences with no filler. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, search queries, and shared drive behavior. Lacks mention of pagination or default behavior (pageSize schema covers this partly). Adequate for a read-only list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with parameter descriptions already present. Description adds only high-level context ('Supports search queries') but does not deepen parameter meaning significantly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'List files in Google Drive' with specific features (search queries, shared drive inclusion). Distinct purpose from sibling tools like drive_files_get and drive_files_create.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context for use (listing files with search support) but does not explicitly mention when not to use it or direct alternatives among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drive_files_updateC
Update a file's metadata or content.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | New file name | |
| fields | No | Fields to return | |
| fileId | Yes | The file ID to update | |
| mimeType | No | New MIME type | |
| uploadPath | No | Local file path to upload |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations indicate it is a write operation (readOnlyHint=false), and the description confirms it updates. However, no additional behavioral details are given—e.g., whether content updates replace or append, permission requirements, or error conditions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, which is concise but at the cost of completeness. It is appropriately short but lacks necessary details for effective tool invocation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and minimal annotations, the description fails to cover important aspects like return values, side effects, or prerequisites. This leaves the agent underinformed for correct usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All parameters have schema descriptions (100% coverage), so the description adds minimal extra meaning. It does hint at the distinction between metadata (name, mimeType) and content (uploadPath) but does not elaborate beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool updates a file's metadata or content, distinguishing it from sibling tools like drive_files_copy (copy) and drive_files_create (create). However, it does not explicitly differentiate itself from other update tools in the sibling set.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as drive_files_copy or docs_batchUpdate. The description lacks context for appropriate usage scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drive_permissions_createB
Share a file by creating a permission.
| Name | Required | Description | Default |
|---|---|---|---|
| role | Yes | Permission role: owner, organizer, fileOrganizer, writer, commenter, reader | |
| type | Yes | Grantee type: user, group, domain, anyone | |
| fileId | Yes | The file ID to share | |
| emailAddress | No | Email of user/group (required for user/group type) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate it's a mutation (readOnlyHint=false). Description adds no further details about side effects (e.g., notifications) or required access. With annotations present, bar is lowered, but description is minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise single sentence. No wasted words. Could include slightly more context but remains efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has 4 parameters with conditional requirements (emailAddress needed for user/group type). Description does not mention this or output behavior. Schema covers param details, so overall context is borderline adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers all parameter descriptions (100% coverage). Description adds no new meaning beyond the schema. Baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool creates a permission to share a file, using specific verb 'Share' and resource 'permission'. It distinguishes from sibling tools which operate on files or other entities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs. alternatives like drive_files_update. No mention of prerequisites (e.g., permission to share) or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gmail_drafts_createA
Create a Gmail draft. Pass threadId to attach the draft to an existing conversation (it will appear as a reply within that thread). The draft is NOT sent — open Gmail to review and send.
| Name | Required | Description | Default |
|---|---|---|---|
| cc | No | CC recipient(s), comma-separated | |
| to | Yes | Recipient(s). Comma-separated for multiple, e.g. "a@x.com, b@y.com" | |
| bcc | No | BCC recipient(s), comma-separated | |
| body | No | Plain-text body | |
| subject | No | Subject line. When attaching to a thread via threadId, Gmail expects the subject to match the thread (typically "Re: <original>"). | |
| htmlBody | No | HTML body. If both body and htmlBody are provided, the draft is multipart/alternative. | |
| threadId | No | Thread ID to attach this draft to. Get it from gmail_threads_list / gmail_messages_get. | |
| inReplyTo | No | Message-ID header value of the message being replied to. Improves threading robustness alongside threadId. | |
| references | No | References header value (space-separated Message-IDs of ancestor messages). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false, confirming write operation. The description adds that the draft is not sent and that threadId attaches it to an existing conversation, providing useful behavioral context beyond annotations. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (three sentences) and front-loaded with the primary action. Every sentence adds essential information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the core purpose and key caveat (not sent) but omits return value information (e.g., draft ID). Given no output schema, the agent would benefit from knowing what to expect from the response. This gap reduces completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds minimal value beyond the schema parameter descriptions, only reiterating threadId usage. The schema itself documents each parameter sufficiently.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'Create a Gmail draft' and distinguishes it from siblings by specifying the draft is not sent and can be attached to a thread via threadId. This provides precise verb+resource+scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains that the draft is not sent (implying use when a draft is needed before sending) and mentions threadId for replying within a thread. However, it does not explicitly list alternatives or conditions when not to use. This is clear but lacks explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gmail_messages_getBRead-only
Get a single Gmail message by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Message ID | |
| format | No | Response format: full, metadata, minimal, raw | |
| userId | Yes | User ID (use 'me') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, the description adds no behavioral details. It does not mention error handling, rate limits, or that the format parameter controls response content. The description relies entirely on the schema and annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence. It is appropriately concise for a simple get operation, though it could include more context without becoming overly long.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 3 parameters and no output schema, the description is too sparse. It does not explain how to obtain the message ID or the significance of the format parameter. More context would aid agent decision-making.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with parameter descriptions. The tool description adds no additional meaning about parameters, but the baseline for high coverage is 3. No parameter-specific information is provided beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (get), resource (a single Gmail message), and method (by ID). It accurately distinguishes this tool from siblings like gmail_messages_list which retrieves multiple messages.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives such as gmail_messages_list or gmail_threads_get. The description provides no context about prerequisites or scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gmail_messages_listBRead-only
List Gmail messages matching a query.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Gmail search query (e.g. "from:user@example.com subject:hello") | |
| userId | Yes | User ID (use 'me') | |
| labelIds | No | Label IDs to filter by | |
| maxResults | No | Max messages to return |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, so the agent knows it's safe. However, the description adds no additional behavioral details like pagination limits, default maxResults, or that it returns message IDs/snippets rather than full bodies. For a list tool with no output schema, more transparency is needed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no filler, perfectly concise. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema and 4 parameters. The description does not explain what the response contains (e.g., list of message resources, metadata only). For a list operation, this is a significant omission that forces the agent to assume based on analogies. Does not fully cover the tool's behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already has 100% coverage with clear descriptions for all 4 parameters (q, userId, labelIds, maxResults). The description adds no further semantic value beyond restating the filter capability. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists Gmail messages filtered by a query, with a specific verb ('List') and resource ('Gmail messages'). It distinguishes from sibling tools like gmail_messages_get (single message) and gmail_threads_list (threads vs messages).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., gmail_threads_list for threads, gmail_messages_get for a single message) or when not to use it. The description lacks context about scope, such as that it returns message metadata, not full content.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gmail_threads_getARead-only
Get a full Gmail thread by ID (all messages in the conversation).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Thread ID | |
| format | No | Response format: full, metadata, minimal | |
| userId | Yes | User ID (use 'me') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, aligning with the read operation. The description adds that the tool returns all messages in the thread. Given annotation coverage, it provides sufficient behavioral context without contradicting.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence that is clear, direct, and free of verbosity. Every word is necessary and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple get-by-ID tool, the description adequately conveys the purpose and result. It omits details like thread ID format or any limits, but the schema covers the parameter meaning. No output schema exists, so the return description is helpful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with detailed parameter descriptions. The description does not add additional parameter semantics beyond stating the result is a 'full thread'. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get'), the resource ('full Gmail thread by ID'), and adds clarifying context ('all messages in the conversation'). This distinguishes it from siblings like gmail_messages_get (single message) and gmail_threads_list (list threads).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving an entire thread, but does not explicitly state when to use this tool versus alternatives like gmail_threads_modify or gmail_messages_get. No exclusions or usage context provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gmail_threads_listBRead-only
List Gmail threads matching a query.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Gmail search query | |
| userId | Yes | User ID (use 'me') | |
| maxResults | No | Max threads to return |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the description adds no further behavioral details. The description does not mention pagination, limits, or that results may be thread summaries. However, it does not contradict annotations, so a baseline of 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no waste. While very terse, it effectively communicates the core action. It could be slightly expanded for clarity but remains well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool is a simple list operation with fully documented parameters and no output schema, the description is minimally adequate. It lacks details like pagination behavior, query syntax notes, or what thread fields are returned, but it is not grossly incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage, fully describing all three parameters (q, userId, maxResults). The description only indirectly references 'q' via 'matching a query', adding no additional semantic value beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List' and the resource 'Gmail threads', and specifies the filtering aspect 'matching a query'. This effectively distinguishes it from sibling tools like gmail_threads_get (single thread retrieval) and gmail_messages_list (messages vs threads).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as gmail_threads_get or gmail_messages_list. It lacks any context about prerequisites, query syntax hints, or recommended use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gmail_threads_modifyA
Modify a Gmail thread: add/remove labels. To archive, remove INBOX. To mark read, remove UNREAD. To star, add STARRED.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Thread ID | |
| userId | Yes | User ID (use 'me') | |
| addLabelIds | No | JSON array of label IDs to add, e.g. ["STARRED"] | |
| removeLabelIds | No | JSON array of label IDs to remove, e.g. ["INBOX","UNREAD"] |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explains the effects of actions (e.g., 'remove INBOX' to archive, 'remove UNREAD' to mark read) and aligns with the readOnlyHint=false annotation. No contradictions; it adds context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose, followed by key examples. No unnecessary words; every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers all essential use cases for a modification tool, but lacks information about prerequisites (e.g., OAuth scopes) or error handling. Since there is no output schema, return values are not explained, but that is acceptable for a mutation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the description adds semantic value by showing how to use addLabelIds and removeLabelIds with common label identifiers (STARRED, INBOX, UNREAD), making it easier for the agent to select correct parameter values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Modify a Gmail thread: add/remove labels' and provides specific examples (archive, mark read, star) that distinguish it from sibling tools like gmail_threads_get or gmail_threads_list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives concrete use cases (archive, mark read, star) but does not explicitly state when not to use the tool or mention alternatives for other modifications (e.g., deleting). Still, the examples are practical and cover common scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sheets_getBRead-only
Get spreadsheet metadata.
| Name | Required | Description | Default |
|---|---|---|---|
| spreadsheetId | Yes | The spreadsheet ID | |
| includeGridData | No | Include grid data |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the agent knows it's safe. The description adds no further behavioral details (e.g., what metadata contains, error cases), but does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, concise and directly to the point. It could be slightly more informative while remaining concise, but it has no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Without an output schema, the description should clarify what metadata is returned and explain the includeGridData parameter. It lacks this context, making it less complete for a simple tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (both parameters have descriptions). The description adds no additional meaning beyond the schema, meeting the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get spreadsheet metadata.' clearly states the action (get) and resource (spreadsheet metadata), distinguishing it from sibling tools like sheets_values_get which retrieve cell values.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives (e.g., sheets_values_get for cell data). No prerequisites or context are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sheets_values_appendB
Append values after the last row of a spreadsheet range.
| Name | Required | Description | Default |
|---|---|---|---|
| range | Yes | A1 notation range to append to | |
| values | Yes | 2D array of values as JSON string | |
| spreadsheetId | Yes | The spreadsheet ID | |
| valueInputOption | Yes | RAW or USER_ENTERED |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false, so a write operation is expected. However, the description does not disclose behavioral details such as whether rows are automatically created, what happens if the range does not exist, or any authorization requirements. It adds minimal value beyond the annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no wasted words. It is appropriately front-loaded. While concise, it could include a brief note about return value or behavior without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of an output schema, the description should explain what the tool returns (e.g., the updated range). It does not mention return values, error states, or side effects. This leaves the agent with incomplete information for safe invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage with descriptions for all parameters. The tool description adds no additional meaning beyond the schema; for example, it does not clarify how the 'range' parameter interacts with the append operation. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Append', the resource 'values', and specifies the location 'after the last row of a spreadsheet range'. It effectively distinguishes from sibling tools like 'sheets_values_update' which modifies existing data, and 'sheets_values_get' which reads data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for adding data to the end of a sheet, but it provides no explicit context about when to use versus alternatives, such as when to use 'sheets_values_update' instead. No exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sheets_values_getBRead-only
Read values from a spreadsheet range.
| Name | Required | Description | Default |
|---|---|---|---|
| range | Yes | A1 notation range (e.g. "Sheet1!A1:D10") | |
| spreadsheetId | Yes | The spreadsheet ID | |
| majorDimension | No | ROWS or COLUMNS | |
| valueRenderOption | No | FORMATTED_VALUE, UNFORMATTED_VALUE, or FORMULA |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already informs the agent that this is a safe read operation. The description adds no further behavioral context, such as data format, pagination, or error handling. With annotations covering safety, a score of 3 is appropriate—adequate but lacking extra detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence of seven words, with no redundancy. While concise, it could include slightly more context without becoming verbose, but it earns a 4 for efficiency.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple read operation and no output schema, the description provides the minimum necessary information. It does not explain the return format (e.g., 2D array), but the agent can infer from typical spreadsheet API behavior. Sibling tools are diverse, but the purpose is sufficiently clear.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All four parameters are documented in the input schema (100% coverage). The description does not add extra meaning beyond the schema, so the baseline score of 3 applies. The schema already explains range format, majorDimension options, and valueRenderOption choices.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Read' and the resource 'values from a spreadsheet range', accurately conveying the tool's function. It distinguishes from sibling write tools (sheets_values_append, sheets_values_update) and possibly from sheets_get (sheet metadata), making selection unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus siblings. For example, it does not contrast with sheets_get (which reads sheet properties) or sheets_values_update (which modifies values). The agent must infer from the name and schema alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sheets_values_updateC
Write values to a spreadsheet range.
| Name | Required | Description | Default |
|---|---|---|---|
| range | Yes | A1 notation range to write | |
| values | Yes | 2D array of values as JSON string (e.g. '[["A","B"],["C","D"]]') | |
| spreadsheetId | Yes | The spreadsheet ID | |
| valueInputOption | Yes | RAW or USER_ENTERED |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false, confirming mutation. The description adds no further behavioral details such as overwrite behavior, authorization needs, or rate limits. For a mutation tool, additional transparency would be beneficial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence of 7 words, highly concise and front-loaded with the core action. No unnecessary text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, and the description lacks details about behavior (e.g., overwriting, cell effects) and usage context. For a mutation tool with 4 required params, more completeness is expected.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with all four parameters described. The description does not add meaning beyond the schema, resulting in a baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Write values to a spreadsheet range' clearly states the verb (write) and resource (spreadsheet range). It distinguishes from sibling tools like sheets_values_get (read) and sheets_values_append (add rows), though it does not explicitly contrast with append.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives (e.g., sheets_values_append). The description only states the core action without usage context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tasks_tasklists_deleteADestructive
Delete a task list. If it contains assigned tasks, the originals (in Docs/Chat Spaces) are also removed.
| Name | Required | Description | Default |
|---|---|---|---|
| tasklist | Yes | Task list ID to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate destructiveHint=true; description adds specific behavioral detail: if task list contains assigned tasks, originals in Docs/Chat Spaces are also removed. No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single concise sentence that conveys the core purpose and an important side effect. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple delete operation with one parameter, the description covers the key side effect. However, missing details on success response or error conditions, but acceptable given no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Single parameter 'tasklist' is fully described in the schema as 'Task list ID to delete'. Description adds no additional meaning, but schema coverage is 100%, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the action (delete) and resource (task list), with an additional note about side effects on assigned tasks, distinguishing it from other operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives like tasks_tasks_delete or tasks_tasklists_update. Implicitly clear from the name, but no differentiation from sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tasks_tasklists_getARead-only
Get a task list by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| tasklist | Yes | Task list ID (use "@default" for the user's default list) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the read-only nature is covered. Description adds no extra behavioral context beyond that.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence is concise and front-loaded with purpose. No wasted words, but could be slightly richer without sacrificing brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with one parameter and no output schema, the description is fully complete. All necessary information is provided.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and already describes the parameter including the '@default' usage. Description adds no additional meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb 'Get' and resource 'task list by ID'. Distinguishes from sibling tools like tasks_tasks_get (gets a task) and tasks_tasklists_list (lists all task lists).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or alternative guidance. Usage is implied by the verb and resource, but no exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tasks_tasklists_insertB
Create a new task list.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Task list title |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false, so the write nature is known. However, the description adds no extra behavioral details (e.g., authentication needed, rate limits, or that the created list is empty). Relies solely on annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Very concise at 5 words, front-loaded with the action. However, could include a brief note about the return value without becoming verbose. Acceptable for a simple tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description should explain what the tool returns (e.g., the created task list object). It does not, leaving the return format ambiguous. Also lacks context about required scopes or typical use cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the 'title' parameter described as 'Task list title.' The description adds no further semantic value beyond the schema, meeting the baseline expectation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the verb 'Create' and the resource 'a new task list,' distinguishing it from sibling tools like tasks_tasklists_delete or tasks_tasklists_get. It is specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. No prerequisites, exclusions, or context such as 'Use when you need a new empty task list' or 'Not for updating existing lists.' Lacks explicit usage instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tasks_tasklists_listARead-only
List the authenticated user's task lists.
| Name | Required | Description | Default |
|---|---|---|---|
| pageToken | No | Token for the next page of results | |
| maxResults | No | Max task lists per page (1-100, default 20) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare a safe read operation (readOnlyHint=true). The description adds that it's scoped to the 'authenticated user', which is useful but minimal. No further behavioral traits (e.g., pagination behavior) are disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no wasted words. It is concise and front-loaded, though it could be expanded slightly without harming conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, so return structure is unspecified. The description is adequate for a simple list operation but could mention that it returns a list of task lists to aid the agent. Annotations provide safety context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema covers both parameters (pageToken, maxResults) with descriptions, so schema coverage is 100%. The description adds no additional meaning beyond the schema fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description is a specific verb+resource: 'List the authenticated user's task lists.' It clearly distinguishes this tool from sibling tools like tasks_tasklists_get (specific) and tasks_tasklists_delete, etc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidelines on when to use this tool vs alternatives. The description implies that it lists all task lists for the authenticated user, but it doesn't mention when to use tasks_tasklists_get for a single list or other write operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tasks_tasklists_updateA
Update a task list (only supplied fields change).
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | New task list title | |
| tasklist | Yes | Task list ID to update |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only provide readOnlyHint=false, indicating mutation. The description adds the important behavioral detail that only supplied fields change (PATCH-like behavior), which is not evident from annotations alone. However, it does not disclose potential side effects or error conditions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, compact sentence that communicates the essential purpose and key behavioral trait. No redundant or irrelevant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 parameters, no output schema), the description is sufficient: it states the action and partial update behavior. It could mention that the tasklist ID is required, but that is already in the schema. A minor gap: what the tool returns is unspecified, but no output schema exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with both parameters described. The description adds the partial update context, which marginally clarifies parameter usage (title is optional). With complete schema, baseline is 3, and the description doesn't significantly enhance parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool updates a task list and specifies partial update behavior ('only supplied fields change'). This distinguishes it from sibling tools like tasks_tasklists_insert (create) and tasks_tasklists_delete (delete), making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for updating an existing task list, but does not explicitly state when to use this tool versus alternatives like tasks_tasklists_insert or tasks_tasklists_delete. No guidance on when not to use or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tasks_tasks_clearADestructive
Hide all completed tasks in a list. Cleared tasks are not deleted but stop appearing in default list responses.
| Name | Required | Description | Default |
|---|---|---|---|
| tasklist | Yes | Task list ID to clear |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description adds beyond annotations: clarifies that clearing hides, not deletes, tasks. Annotations indicate destructive=true, readOnly=false, which align. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, no wasted words, front-loaded with action. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Simple tool with one parameter, no output schema. Description explains key behavioral nuance (hide vs delete) and purpose. Sufficient for invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema already describes 'tasklist' as 'Task list ID to clear'. Description adds no extra parameter info. Baseline 3 since schema coverage is 100%.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Hide' and resource 'all completed tasks in a list'. It distinguishes from deletion by noting tasks are not deleted but stop appearing in default responses.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage for hiding completed tasks, but no explicit when-to-use or alternatives. Sibling tools like tasks_tasks_delete are not mentioned, leaving the agent to infer differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tasks_tasks_deleteADestructive
Delete a task. If assigned from Docs/Chat Spaces, the original is also removed.
| Name | Required | Description | Default |
|---|---|---|---|
| task | Yes | Task ID to delete | |
| tasklist | Yes | Task list ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true, and the description adds useful context that deletion also removes the original if assigned from Docs/Chat Spaces. This goes beyond the annotation flag.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with 17 words, front-loaded with the verb 'Delete', and no wasted text. Every word adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low complexity (2 required params, no output schema), the description covers the essential behavior and side-effect. It is complete enough for an agent to understand the tool's impact.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for both parameters. The tool description does not add any extra meaning to the parameters beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Delete a task' with a specific verb and resource, distinguishing it from other deletion tools. It also adds nuance about removal from Docs/Chat Spaces, which is a unique detail.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for deleting tasks but provides no explicit guidance on when to use this tool versus alternatives like tasks_tasks_clear. No exclusions or context are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tasks_tasks_getARead-only
Get a task by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| task | Yes | Task ID | |
| tasklist | Yes | Task list ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description adds no behavioral context beyond the readOnlyHint annotation. No mention of permissions, rate limits, or response details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no unnecessary words, front-loaded with essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a simple get operation; could mention response structure but not required without output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions in schema; description adds no additional parameter meaning, meeting baseline for high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description 'Get a task by ID' specifies verb (get) and resource (task by ID), clearly distinguishing from sibling tools like tasks_tasks_list (list) or tasks_tasks_insert (create).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use vs. alternatives; usage is implied but not elaborated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tasks_tasks_insertA
Create a new task. Use parent to nest as a subtask, previous to position after a sibling.
| Name | Required | Description | Default |
|---|---|---|---|
| due | No | Due date (RFC 3339, e.g. "2026-06-01T00:00:00.000Z") | |
| notes | No | Free-text notes / body | |
| title | Yes | Task title | |
| parent | No | Parent task ID (insert as a subtask under this task) | |
| status | No | Task status: needsAction or completed | |
| previous | No | Sibling task ID (insert immediately after this task) | |
| tasklist | Yes | Task list ID to insert into |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false, so the write intent is clear. The description adds behavioral details on nesting and ordering beyond annotations, but does not mention return behavior or potential side effects (e.g., response shape, idempotency).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, front-loaded with the primary action, zero waste. Every word serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is complete for the tool's purpose given its complexity. It covers the core creation action and optional nesting/ordering. It could be improved by mentioning the return value (e.g., created task ID), but this is not critical.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with good individual parameter descriptions. The description adds value by explaining how 'parent' and 'previous' interact (nesting vs. ordering), which goes beyond the schema's isolated descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates a new task and explains how the 'parent' and 'previous' parameters enable subtask nesting and sibling positioning, distinguishing it from siblings like tasks_tasks_move and tasks_tasks_update.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the core action and when to use the 'parent' and 'previous' parameters, but it does not explicitly state when not to use this tool or provide alternatives for similar tasks (e.g., updating instead of inserting).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tasks_tasks_listARead-only
List tasks in a task list. Excludes hidden and assigned tasks by default; set showHidden/showAssigned to include them.
| Name | Required | Description | Default |
|---|---|---|---|
| dueMax | No | Upper bound on due date (RFC 3339) | |
| dueMin | No | Lower bound on due date (RFC 3339) | |
| tasklist | Yes | Task list ID (use "@default" for the default list) | |
| pageToken | No | Token for the next page of results | |
| maxResults | No | Max tasks per page (1-100, default 20) | |
| showHidden | No | Include hidden (cleared) tasks | |
| updatedMin | No | Lower bound on last-modified time (RFC 3339) | |
| showDeleted | No | Include deleted tasks | |
| completedMax | No | Upper bound on completion date (RFC 3339) | |
| completedMin | No | Lower bound on completion date (RFC 3339) | |
| showAssigned | No | Include tasks assigned from Docs/Chat Spaces | |
| showCompleted | No | Include completed tasks (default true; ignored unless showHidden is also true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral context beyond the readOnlyHint annotation by specifying default exclusions of hidden and assigned tasks. It does not contradict annotations. However, it does not mention pagination or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core action, and contains no redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 12 parameters including pagination and multiple date filters, the description only covers default filters. It lacks mention of pagination (pageToken, maxResults) and other filtering options, making it somewhat incomplete for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 meaningful context only for showHidden and showAssigned parameters, but other parameters are adequately documented in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists tasks in a task list, specifies the default exclusion of hidden and assigned tasks, and distinguishes it from other tasks tools like getting a single task or modifying task lists.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides guidance on default filtering and how to include hidden/assigned tasks with parameters. It implicitly distinguishes from other tasks tools, but could be more explicit about when to use this list vs. other list tools (though only one exists).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tasks_tasks_moveA
Move a task within its list or to another list. Use parent/previous to set position; destinationTasklist to change list.
| Name | Required | Description | Default |
|---|---|---|---|
| task | Yes | Task ID to move | |
| parent | No | New parent task ID (move as subtask under this task) | |
| previous | No | New sibling task ID (move immediately after this task) | |
| tasklist | Yes | Source task list ID | |
| destinationTasklist | No | Destination task list ID (omit to move within the source list) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description aligns with annotations (readOnlyHint=false) by indicating a write operation. It discloses the core behavior: moving within or between lists via positioning parameters. However, it does not detail potential side effects (e.g., removal from old list, permission requirements) or confirm non-destructiveness beyond the implied move.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise (two sentences, 20 words) and front-loaded with the action. Every sentence provides essential information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the 5 parameters, 2 required, and no output schema, the description adequately covers the operation by explaining the key parameters and their purposes. It omits potential edge-case behaviors (e.g., moving from a subtask position), but remains complete for typical use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds value beyond the schema by clarifying the roles of 'parent' and 'previous' for ordering, and 'destinationTasklist' for changing lists. Since schema coverage is 100%, the baseline is 3; the extra usage context justifies a 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'Move a task within its list or to another list', specifying the resource (task) and scope (within or between lists). It distinguishes from sibling tools like tasks_tasks_update or tasks_tasks_list by focusing solely on relocation and reordering.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on parameter usage: 'Use parent/previous to set position; destinationTasklist to change list.' It implies when to use each parameter, though it does not explicitly exclude alternatives or state when not to use the tool. For a move operation, this is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tasks_tasks_updateA
Update a task (only supplied fields change). Common use: complete a task by setting status to "completed".
| Name | Required | Description | Default |
|---|---|---|---|
| due | No | Due date (RFC 3339) | |
| task | Yes | Task ID to update | |
| notes | No | Free-text notes / body | |
| title | No | Task title | |
| status | No | Task status: needsAction or completed | |
| tasklist | Yes | Task list ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false, consistent with the update nature. The description adds partial update behavior and a common use case. It does not discuss side effects or permissions, but for a simple update, this is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, no redundant words. It front-loads the purpose and immediately adds useful detail. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple update operation and no output schema, the description covers purpose, use case, and partial update behavior. It could mention return values (e.g., updated task object) but this is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents each parameter. The description adds value by clarifying that only supplied fields change, which is a behavioral nuance not evident from individual parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Update a task' with specific verb and resource. It distinguishes from siblings like tasks_tasks_insert and tasks_tasks_delete by focusing on updating existing tasks, and provides a common use case.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly notes 'only supplied fields change,' implying partial update semantics. It gives a concrete example for completing a task. However, it does not mention when to use alternatives (e.g., tasks_tasks_move for moving tasks) or when not to use this tool.
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.
12 tool updates
v0.4.0- Added
tasks_tasklists_delete - Added
tasks_tasklists_get - Added
tasks_tasklists_insert - Added
tasks_tasklists_list - Added
tasks_tasklists_update - Added
tasks_tasks_clear - Added
tasks_tasks_delete - Added
tasks_tasks_get - Added
tasks_tasks_insert - Added
tasks_tasks_list - Added
tasks_tasks_move - Added
tasks_tasks_update
2 tool updates
v0.1.2- Added
gmail_drafts_create - Added
gmail_threads_modify
25 tool updates
v1.0.0- First observed
calendar_events_delete - First observed
calendar_events_get - First observed
calendar_events_insert - First observed
calendar_events_list - First observed
calendar_events_update - First observed
docs_batchUpdate - First observed
docs_create - First observed
docs_get - First observed
drive_files_copy - First observed
drive_files_create - First observed
drive_files_delete - First observed
drive_files_download - First observed
drive_files_export - First observed
drive_files_get - First observed
drive_files_list - First observed
drive_files_update - First observed
drive_permissions_create - First observed
gmail_messages_get - First observed
gmail_messages_list - First observed
gmail_threads_get - First observed
gmail_threads_list - First observed
sheets_get - First observed
sheets_values_append - First observed
sheets_values_get - First observed
sheets_values_update
TDQS
Scored across 39 tools
Tools are clearly separated by service prefix (calendar_events_, docs_, drive_files_, etc.) and each has a distinct purpose. The few pairs that could be confused (e.g., drive_files_download vs. drive_files_export) are well-differentiated by their descriptions.
All tools follow a consistent verb_noun pattern with service prefix (e.g., calendar_events_list, drive_files_create). The naming convention is uniform and predictable across all services.
39 tools cover multiple Google Workspace services (Calendar, Docs, Drive, Gmail, Sheets, Tasks) with essential CRUD and some extra operations. While on the higher end, the count is justified by the breadth of the domain and each tool serves a clear function.
The tool surface covers the full lifecycle for each service: create, read, update, delete, plus service-specific actions like move, export, and modify. There are no obvious dead ends, and any gaps (e.g., docs deletion) are handled by other tools (drive_files_delete).
Maintenance
Related MCP Connectors
Your workspace as agent tools — docs, canvases, slides, sheets, projects, tickets, and a shell.
Provides tools for searching Google Workspace documentation and much more.
Give Claude only the Google Drive files you choose. Every action logged.
Connect AI assistants to Google Sheets through controlled tools for reading and updating rows.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables interaction with Google Drive files and Google Sheets through search, read, and write operations. Supports automatic conversion of Google Workspace files to readable formats and direct spreadsheet cell updates.1,026 npmMIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to control Google Workspace services (Slides, Docs, Sheets, Drive) with granular tools and provides a universal CLI escape hatch for all Workspace APIs.MIT
- AlicenseNot gradedqualityDmaintenanceProvides unified access to Google Workspace APIs including Gmail, Drive, Sheets, Calendar, Docs, Forms, and Chat through a single interface, enabling email management, file operations, spreadsheet editing, event scheduling, and more via natural language.MIT
- AlicenseNot gradedqualityCmaintenanceEnables MCP clients like Claude Desktop and Cursor to interact with Google Docs, Sheets, and Drive, providing tools for reading, writing, formatting documents, managing spreadsheets, and searching Drive files.MIT