mcp-google-multi
It is an MCP server that exposes Google Workspace APIs as tools across multiple Google accounts.
Covers 29 Google services (Gmail, Drive, Calendar, Sheets, Docs, Slides, Forms, Contacts, Tasks, Chat, Meet, GA4, Search Console, Classroom, Vault, Admin, etc.) with 940 tools.
Multi-account support: use account aliases, fan out calls across accounts, and list account health via
account_list.Discover and call hidden service-specific operations via
*_discovertools (e.g.,gmail_discover,drive_discover,sheets_discover).Read, create, update, delete, and search across email, docs, spreadsheets, calendars, contacts, tasks, and more.
Send/read email in Markdown, manage attachments, drafts, labels, threads, and vacation settings.
Manage Drive files, folders, permissions, comments, revisions, shared drives, transfers, and downloads/exports.
Use Sheets for ranges, formatting, filters, validation, named ranges, and batch operations.
Use Docs for text insertion/replacement, styles, tables, headers/footers, tabs, and batch updates.
Use Calendar events, free/busy, ACLs, and calendar management.
Access Meet recordings, transcripts, participants, and conference spaces.
Query Search Console, Tasks, Contacts, and Workspace Events.
Escape hatch:
google_api_searchfinds any Workspace REST method, andgoogle_api_callinvokes it by Discovery ID with full parameters.Designed for privacy: local OAuth, encrypted tokens, deny-by-default writes, no telemetry.
Can run locally over stdio or remotely over HTTP with built-in OAuth server and Docker support.
Allows reading and managing Gmail messages, including sending emails, searching, and managing labels across multiple Google accounts.
Provides integration with Google Workspace services (Gmail, Drive, Calendar, Sheets, Docs, Contacts, Tasks, Meet, Search Console, plus optional Forms, Chat, Workspace Admin) across multiple Google accounts, with read-only by default and configurable write permissions.
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., "@mcp-google-multishow my upcoming events from my work calendar"
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.
mcp-google-multi
The most complete local Google Workspace MCP server: Gmail, Drive, Calendar, Sheets, Docs, Slides, Forms, Contacts, Tasks, Chat, Meet, Analytics (GA4), Search Console, Classroom, Vault, Admin and more โ every OAuth-reachable API method as a tool, across multiple Google accounts at once, from Claude Code or any MCP client.
๐งฐ Exhaustive โ 940 tools across 29 services, now including Google Analytics (GA4), + an escape hatch for anything else โ COVERAGE.md
๐ Multi-account โ drive any number of Google accounts by alias, or fan one call out across all of them
๐ Private by design โ your own OAuth app, tokens encrypted at rest (AES-256-GCM), writes deny-by-default, no telemetry, no metering โ it talks only to Google
๐ Local or remote โ runs locally over stdio, or self-hosted over HTTP with its own built-in OAuth 2.1 server (Claude Code's
/mcplogin and the claude.ai connector, zero custom UI). Pull-and-up Docker Compose with optional automatic HTTPS โ remote setupโ๏ธ Built for real work โ send and read email in Markdown with attachments and one-call replies, an interactive setup wizard with a
doctorself-check, and per-account scope profiles โ features tour
Quick setup
New to all this? It's written for someone who just installed Claude Code and has never made an API key. Copy-paste each step; it says what you'll see. (Already technical? The Configuration reference is the terse version.)
Install it. Get Node.js (the green "LTS" button, version 22 or newer), then run:
npm install -g mcp-google-multiClaude Desktop user? You can skip npm entirely: download the
mcp-google-multi.mcpbbundle from the latest release, double-click it (or drag it into Claude Desktop โ Settings โ Extensions), and fill in the values from step 2 when prompted.Make your Google key (the one manual part, a few minutes, because Google has no way to script it). Follow the step-by-step Google Cloud setup, or just ask Claude Code: "walk me through creating a Google OAuth Desktop client for mcp-google-multi." You finish with two values, a Client ID and a Client Secret. It's free and private to you.
Put them in a file. In the folder you'll run from, make a file named
.envand paste this, filling in your values:GOOGLE_CLIENT_ID=paste-your-client-id GOOGLE_CLIENT_SECRET=paste-your-client-secret # any short nickname, then your Gmail address: GOOGLE_ACCOUNTS=me:you@gmail.comNo encryption key to make: the server generates and stores one for you.
Sign in. A browser opens; pick your account and click Allow:
mcp-google-multi auth --account meAdd it to Claude Code, then restart Claude Code:
claude mcp add google-multi -s user -- npx -y mcp-google-multi
Stuck at any point? Run mcp-google-multi doctor. It inspects every part and prints the exact fix for anything wrong (a missing sign-in, a Google API you still need to switch on, and so on). Once it reads all-green, just talk to Claude: "summarize my unread email."
Got more than one Google account? Add them together, like GOOGLE_ACCOUNTS=me:you@gmail.com,work:you@company.com, and run step 4 once per nickname.
On a server or from claude.ai? Advanced path: Remote / HTTP setup. Coming from v5? v6 migration guide.
Go deeper: Configuration reference ยท What's covered ยท Features tour ยท Remote / HTTP setup ยท Secrets in a vault ยท Local usage metrics ยท Migrating to v6 ยท Security policy ยท Roadmap
Related MCP server: google-workspace-mcp
Maintainer & credits
Built and maintained by Abdelbaki Berkati โ berkati.xyz ยท @bakissation. Read the case study โ
Development is funded by IdeaCrafters (@IdeaCraftersHQ) โ the studio that pays for this OSS to exist.
Thanks to contributors @obatried, @trevor-commits, and @mjreddy. The project is maintainer-led (roadmap on Milestones; bug reports welcome, feature PRs by prior agreement โ see CONTRIBUTING.md). Feedback shapes the roadmap: open an issue with bugs, pain points, or what you wish it did. Security reports go to SECURITY.md, never a public issue.
License
Available Tools
19 toolsaccount_addARead-onlyIdempotent
Add a new Google account: pass alias + email directly (plus optional bundles/allBundles/admin), or pass nothing for an interactive form where the client supports elicitation. Writes the registry and runs Google consent in the browser. No file editing or restart needed to use the account (tools of a service it newly enables register at the next restart). Requires GOOGLE_CLIENT_ID/SECRET (run the setup prompt first if missing).
| Name | Required | Description | Default |
|---|---|---|---|
| admin | No | Grant Workspace admin scopes (super-admin accounts only) | |
| alias | No | Account alias (letters, digits, _ or -). Pass with email to add directly, skipping the form. | |
| No | The account's Google address (used as the login hint) | ||
| account | No | Alias for the new account (same as `alias`; every other tool spells it `account`) | |
| bundles | No | Optional scope bundles, comma-separated (e.g. "forms,chat"); blank = base scopes only | |
| allBundles | No | Grant every optional bundle (biggest consent screen); overrides bundles |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description describes an add/mutate operation that 'Writes the registry and runs Google consent in the browser', yet the annotations declare readOnlyHint=true. Adding an account and writing the registry modifies state, so the description directly contradicts the readOnlyHint annotation. Otherwise the disclosure of side effects and restart behavior would be strong, but the contradiction forces a 1.
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?
Front-loads the action and the two usage modes, then adds side effects and prerequisites. Dense but every sentence carries information; no wasted filler, though the parenthetical about restart timing is a bit packed.
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 scope/side-effect-heavy account tool with no output schema, it discloses the mutation (registry write), the browser consent step, restart timing, and env prerequisites. What is missing is coherence with the annotations rather than raw content, and return-value detail is not strictly required.
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 schema already documents all six parameters (including the alias-vs-account synonym and optional bundles/admin). The description reiterates the key inputs ('alias + email', 'bundles/allBundles/admin') but adds no syntax or semantics beyond the schema. 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?
States a specific verb+resource ('Add a new Google account') and distinguishes the two invocation modes (direct args vs interactive form), which separates it from siblings like account_list, account_reauth, and account_write_config. An agent can identify the tool's role without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clearly explains the two paths: pass alias+email to skip the form, or pass nothing for elicitation-capable clients. It also names a prerequisite (GOOGLE_CLIENT_ID/SECRET, run the `setup` prompt). It stops short of explicitly naming alternative tools (e.g. account_reauth) for related tasks, so not a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
account_listARead-onlyIdempotent
List the configured Google accounts: alias, email, admin flag, token health (ok / expired_refreshable / needs_reauth / missing / decrypt_error), and granted vs configured scopes. Use this to see which account aliases are available and healthy.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so safety is covered. The description adds genuinely new behavior context, spelling out the token-health state machine (ok / expired_refreshable / needs_reauth / missing / decrypt_error) and the granted-vs-configured scope comparison that the caller will observe.
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 filler, and the payload/what-you-get content is front-loaded before the single usage sentence. The inline enum list is compact rather than sprawling.
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 input parameters and no output schema, the description must carry the return-value burden, and it does: it names every field and interprets the health enum values. Nothing an agent needs to correctly call and interpret this tool is missing.
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?
There are zero parameters, so the baseline of 4 applies โ there is nothing for the description to disambiguate. The description instead adds value by defining the output fields, which it is not strictly required to do.
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 gives a specific verb and resource ('List the configured Google accounts') and enumerates the returned fields, so the resource scope is unambiguous. It never names or contrasts itself with the account_add / account_reauth / account_write_config siblings, which is the only thing keeping it from a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Use this to see which account aliases are available and healthy' supplies a clear selection context for the tool. It stops short of an explicit exclusion ('to modify an account use account_write_config') so the routing guidance is implicit rather than complete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
account_reauthARead-onlyIdempotent
Re-authenticate an existing Google account (recover a dead refresh token, or grant scopes after a profile change). Runs Google consent in the browser. Pass the account alias.
| Name | Required | Description | Default |
|---|---|---|---|
| alias | No | Existing account alias to re-authenticate | |
| account | No | Alias of the account to re-authenticate (same as `alias`) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already supply the safety profile (readOnly, idempotent, non-destructive, open-world), so the description's added value is genuinely non-obvious behavioral context: this launches Google consent in a browser, meaning an interactive, user-present flow that cannot be silently automated. It also states the effect (refreshing tokens / granting scopes). It does not say whether old credentials are replaced or what happens if consent is abandoned, and there is mild tension with readOnlyHint=true given scope grants change account state.
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 short sentences, each earning its place: purpose/conditions first, the key operational trait (browser consent) second, the call directive last. Zero filler.
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, triggers, mechanism and the parameter to pass, which is sufficient for a single-param auth tool with no output schema. Minor gaps: no statement of post-success guarantees (token verified? account state after scope grant) or failure 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?
Schema coverage is 100% and the schema already explains that 'account' is the same as 'alias', so the baseline is 3. 'Pass the account alias' adds a small routing hint on which parameter to use, but the description never addresses the duplicate alias/account pair or why neither is required.
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?
Specific verb + resource ('Re-authenticate an existing Google account') with the two motivating conditions spelled out (dead refresh token, scopes after a profile change). 'Existing' implicitly separates it from the sibling account_add, so an agent can route between them without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear triggering conditions: the refresh token is dead, or scopes must be granted after a profile change. It does not explicitly say when to prefer account_add/account_write_config, but 'existing account' makes the boundary inferable. No exclusions or prerequisites (e.g. browser availability) are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
account_write_configARead-onlyIdempotent
Register this server with your MCP client (Claude Code / Claude Desktop / Cursor) so you don't hand-edit JSON. Default: returns the exact snippet/command to add. Pass write:true to write detected file-based configs in place (backs up first, never clobbers a malformed file). Secrets are never inlined.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Server name in the client config (default mcp-google-multi) | |
| write | No | Write file-based configs in place (default false = show the snippet only) | |
| client | No | Target one client; default = all detected |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description states that write:true 'write[s] detected file-based configs in place', i.e. it mutates files on disk, while the annotations declare readOnlyHint=true and destructiveHint=false. An agent trusting the annotations would assume this tool has no side effects, which is false for the documented write path. This is a direct contradiction (though the description's own safety notes โ 'backs up first, never clobbers a malformed file', 'Secrets are never inlined' โ are genuinely informative and align with idempotentHint/destructiveHint=false).
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 tight sentences, front-loaded with the purpose ('Register this server with your MCP client') before mode details and safety guarantees. Every clause earns its place: the default behavior, the opt-in write path, and the backup/non-clobber promise.
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, the description correctly tells the agent what the default return is ('the exact snippet/command to add') and covers the risky write path's guarantees. It omits what happens for undetected/unsupported clients or on write failure, but for a zero-required-parameter helper on a fully documented schema this is nearly complete.
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 schema already documents name (default mcp-google-multi), write (default false = snippet only) and the client enum with 'default = all detected'. The description repeats the write-mode semantics without adding format, precedence, or resolution details beyond the schema. Baseline 3 is correct when the schema carries the load.
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 states a specific verb and resource: 'Register this server with your MCP client ... returns the exact snippet/command to add.' It is immediately distinguishable from siblings like account_add/account_reauth, which concern accounts rather than client-side config generation. The two operating modes (emit snippet vs. write in place) are named up front.
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 clearly prescribes when to use each mode: default returns the snippet, 'Pass write:true to write detected file-based configs in place.' Concrete client targets (Claude Code / Claude Desktop / Cursor) are given. However, it never routes the agent away from adjacent tools (e.g., account_add) or states prerequisites, so it stops short of the explicit when/when-not/alternatives bar.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calendar_discoverARead-onlyIdempotent
Discover calendar: lists the catalog and reveals its hidden tools; call first, then call the tool by name. Ops: list_calendars, list_events, get_event, create_event, update_event, delete_event, quick_add, move_event, list_instances, get_freebusy +1 more; 27 generated ops: acl, calendar, calendars, events, settings, channels +1 areas.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Filter keyword |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark it read-only, idempotent, and non-destructive. The description adds that it reveals hidden tools and must be called before invoking them, which is useful behavioral context, but it omits return format, pagination, or auth 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?
Front-loads purpose and usage in the first sentence, then lists available operations. The enumeration is long but informative for a discovery tool; the '+1 more' phrasing is slightly messy but not severely wasteful.
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 discovery tool with no output schema, it explains that it returns a catalog of hidden tools and how to invoke them. It does not cover the query parameter behavior or relationship to sibling discovery tools, but core invocation is addressed.
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% and the single query parameter is already documented in the schema as 'Filter keyword'. The description does not mention the query filter or add meaning beyond the schema, so the baseline 3 applies.
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?
States a specific verb 'Discover' and resource 'calendar', and clarifies it lists the catalog and reveals hidden tools. It does not explicitly differentiate from sibling discovery tools like discover_all or google_api_search, though the calendar scope is clear.
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 says 'call first, then call the tool by name', giving clear ordering context. It does not mention when not to use it or name an alternative such as discover_all, so it is not a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
contacts_discoverARead-onlyIdempotent
Discover contacts: lists the catalog and reveals its hidden tools; call first, then call the tool by name. Ops: search, resolve, get, list, create, update, delete, groups_list, group_members, group_create; 14 generated ops: people, contact, other.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Filter keyword |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description usefully adds that this is a discovery/meta step that 'reveals hidden tools' and must be invoked first. However, enumerating 'create, update, delete' as ops alongside a readOnly annotation creates real potential for the agent to mistake this for a mutating call, and the return structure of the catalog is never characterized.
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 core instruction is front-loaded in the first clause, and the workflow ordering follows immediately. The long semicolon-delimited ops enumeration is dense and its value is questionable, but the description is not padded with filler.
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, the description carries the burden of explaining what discovery returns, and 'lists the catalog and reveals its hidden tools' plus the ops enumeration gives the agent a usable roadmap. It still does not describe the shape of the catalog response or how a 'hidden tool' is addressed by name, leaving a modest gap for a meta-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% ('query: Filter keyword'), so the schema already documents the single optional parameter. The description never mentions that query filters the catalog listing, so it adds no semantic value beyond the structured field; baseline 3 applies.
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 states a specific action ('lists the catalog and reveals its hidden tools') on a specific resource (contacts), and distinguishes itself from siblings like discover_all and gmail_discover by scoping to the contacts domain. The trailing 'Ops' enumeration is confusing because it lists downstream operations (create/update/delete) rather than what this call does, muddying the otherwise clear purpose.
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?
Explicit sequencing guidance is given: 'call first, then call the tool by name.' That tells the agent exactly when this tool belongs in the workflow and what follows it. It does not name a competing sibling (e.g., discover_all) or state when not to use it, keeping it short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
diagnoseARead-onlyIdempotent
Health report for this server: runtime, config, keys, per-account token status, scope grants, and API enablement. Read-only; returns copy-pasteable fixes for anything wrong. Call this to diagnose auth/config failures.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, and open-world behavior. The description adds useful output context ('returns copy-pasteable fixes for anything wrong') and the report scope, though it repeats the read-only hint and omits auth prerequisites 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?
Two tightly written sentences: the report contents are front-loaded in a colon list, followed by safety/output note and the call-to-action. No filler or repetition.
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 input parameters and no output schema, the description must carry the return-value burden, and it does: it lists the report sections and says it returns copy-pasteable fixes. Annotations cover safety and idempotency, so an agent has enough to call 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?
The tool has zero input parameters, so parameter semantics are not applicable; the baseline for 0 params is 4. The description does not need to explain any 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?
States a specific diagnostic resource (server health report) and enumerates the covered areas (runtime, config, keys, token status, scope grants, API enablement). It does not explicitly name or differentiate from sibling tools, but the diagnostic purpose is clear against the discover/account-management siblings.
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 says 'Call this to diagnose auth/config failures', giving a clear trigger context. It does not list exclusions or alternative tools for related but different diagnostics, so it falls short of full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discover_allARead-onlyIdempotent
Reveal ALL curated Google tools at once (instead of per-service discovery). Use when starting substantial Google work; prefer these over google_api_call. Pair with discover_reset.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/idempotentHint true and destructiveHint false, so the safety profile is covered. The description adds real behavioral context beyond that: this bulk-reveals the curated toolset rather than a single service, and it should be paired with discover_reset, implying a persistent discovery state. It does not explain whether already-discovered tools are duplicated, but the gap is minor given 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?
Two tight sentences; the action and bulk scope are front-loaded, followed by usage conditions. No filler or restated title.
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 parameters, no output schema, and annotations covering the safety profile, the description carries everything an agent needs: what is revealed, when to prefer it, and the companion reset tool. Nothing material is missing.
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 tool takes zero parameters, so parameter semantics are trivially satisfied and the baseline is 4. Nothing in the description is needed to clarify inputs.
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?
States a specific verb ('Reveal') and resource ('ALL curated Google tools'), with the scope ('at once, instead of per-service discovery') that separates it from the gmail_discover/drive_discover family. An agent can distinguish it from every sibling without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly prescribes when to use it ('when starting substantial Google work'), names the alternative it replaces (per-service discovery) and the downstream preference over google_api_call, and pairs it with discover_reset. When-to-use, alternative, and follow-up are all present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discover_resetARead-onlyIdempotent
Collapse the tool surface back to the configured default, reclaiming context budget after heavy Google work. All tools remain callable by name after collapsing.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover the read-only/idempotent safety profile; the description adds the non-obvious behavior that collapsing does not unload tools permanently โ they remain callable by name. That is real context beyond structured fields, though it omits what the call returns or whether it is a no-op when already at default.
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 tight sentences with the action front-loaded and no filler; the payoff (all tools still callable) follows immediately. Minor: neither sentence is wasteful.
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 parameters, no output schema, and annotations already carrying the safety profile, the description supplies enough for correct invocation. A note on idempotent/no-op behavior or confirmation output would close the remaining 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?
The tool takes zero parameters, so there is nothing for the description to disambiguate. Baseline 4 applies.
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?
States a concrete verb and effect: collapse the tool surface back to the configured default. It is clearly the inverse of the *_discover / discover_all siblings, though it never names one explicitly to sharpen the contrast.
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?
"Reclaiming context budget after heavy Google work" gives a clear triggering condition for when to call it, and the second sentence sets expectations afterward. It stops short of stating when not to use it or naming an alternative tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
docs_discoverARead-onlyIdempotent
Discover docs: lists the catalog and reveals its hidden tools; call first, then call the tool by name. Ops: create, get, read, insert_text, replace_text, delete_range, update_style, insert_table, create_named_range, delete_named_range +17 more.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Filter keyword |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, covering safety. The description adds that the tool 'reveals its hidden tools' and must be called first, which is key behavioral context. Auth and rate limits are not covered, but with annotations that is acceptable.
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?
Front-loaded with purpose and sequence in two compact clauses. The trailing 'Ops:' list is long but informative and earns space by enumerating available hidden tools; there is no filler.
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 discovery tool with one optional parameter and no output schema, the description provides the essential call-first workflow and reveals that a catalog and hidden tools are returned. Nothing critical for invocation is missing, though it could clarify what 'Ops' refers to.
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 sole optional parameter 'query' is documented as 'Filter keyword'. The description does not mention the query parameter or add syntax/format details, so it adds no value beyond the schema. Baseline 3 applies.
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?
States a specific verb and resource ('Discover docs') and describes output: 'lists the catalog and reveals its hidden tools'. The docs domain distinguishes it from sibling discover tools like drive_discover, though no sibling is named explicitly in the text.
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 explicit sequencing: 'call first, then call the tool by name.' This tells the agent when to use it (first) and what to do next. No when-not or alternative discovery tools are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drive_discoverARead-onlyIdempotent
Discover drive: lists the catalog and reveals its hidden tools; call first, then call the tool by name. Ops: search, read, list, upload, download, export, create_folder, update, delete, trash +26 more; 35 generated ops: approvals, files, drives, teamdrives, changes, apps +6 areas.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Filter keyword |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so safety is covered. The description adds genuinely useful context beyond that: this is a meta-discovery step that must precede invoking any drive tool, and it signals the breadth of the hidden catalog. It omits return shape/pagination details, but with annotations doing that work a 4 is warranted.
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?
Purpose and call-order are front-loaded, which is good, but the long op enumeration ('search, read, list, upload... delete, trash +26 more; 35 generated ops...') is filler that describes the discovered catalog rather than this tool and risks confusing the agent about scope.
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?
There is no output schema, but the description conceptually explains the return (a catalog of drive tools and op areas) and the required call order, which is the key information an agent needs. The misleading op list is the main residual 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 description coverage is 100% for the single 'query' filter parameter, so the schema already documents it fully. The description never mentions filtering by keyword, adding no meaning beyond the schema; per the coverage rule, baseline 3 is correct.
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 first clause states a specific verb and resource ('lists the catalog and reveals its hidden tools') and the 'drive' scope distinguishes it from gmail_discover, calendar_discover, and the other domain discover tools. The trailing enumeration of downstream ops (upload, delete, trash) muddies what this tool itself does, keeping it short of a clean 5.
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?
'call first, then call the tool by name' gives an explicit usage order and makes clear this is the entry point for the drive domain. It does not, however, mention sibling entry points like discover_all or google_api_call as alternatives, so the routing guidance is incomplete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gmail_discoverARead-onlyIdempotent
Discover gmail: lists the catalog and reveals its hidden tools; call first, then call the tool by name. Ops: search, read, read_thread, read_batch, send, download_attachment, create_draft, modify_labels, trash, delete +12 more; 58 generated ops: users.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Filter keyword |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is already covered. The description adds valuable behavioral context: it reveals hidden tools, requires being called first, and lists the operation names that become available, which is more than the annotations provide.
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 core purpose is front-loaded and clear, but the trailing operation list is long and ends with a confusing fragment ('+12 more; 58 generated ops: users'). It could be trimmed without losing essential meaning, though the operation names do provide useful context.
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 discovery tool with no output schema, the description is nearly complete: it explains the first-call requirement, the catalog reveal, and the tools it exposes. It does not explain the return format of the catalog or how the query parameter affects results, leaving minor gaps.
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 single parameter 'query' is fully described in the schema as 'Filter keyword'. The description does not add any meaning about how the query filters the catalog, so the schema carries the full semantic burden. This matches the baseline of 3 when 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 names the specific verb and resource ('Discover gmail') and states exactly what it does: lists the catalog and reveals hidden tools. It distinguishes itself from other service discovery tools by naming Gmail, and the instruction to call it first before invoking tools by name makes 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?
It gives clear sequencing guidance: 'call first, then call the tool by name.' This tells the agent when to use it relative to the hidden tools it reveals. However, it does not compare against sibling discovery tools like discover_all or explain when to use a service-specific discover instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_api_callADestructive
Invoke any Google Workspace REST method by Discovery id (escape hatch for operations without a dedicated tool). Find methods with google_api_search first. Subject to the same write-control policy as named tools. On reads, pass a fields query param (Google partial response) to keep the payload small. Returns JSON only โ for binary/file content (media downloads, drive.files.export) use drive_download / drive_export instead.
| Name | Required | Description | Default |
|---|---|---|---|
| api | Yes | API alias: gmail, drive, calendar, sheets, docs, slides, forms, people, searchconsole, tasks, chat, meet, driveactivity, drivelabels, admin_directory, admin_reports, admin_datatransfer, groupssettings, analyticsadmin, analyticsdata, appsmarket, classroom, cloudidentity, cloudsearch, groupsmigration, keep, licensing, postmaster, reseller, script, vault, workspaceevents | |
| body | No | JSON request body | |
| account | No | Google account alias (omit for the default account) | |
| methodId | Yes | Discovery method id, e.g. "drive.revisions.list" | |
| pathParams | No | Values for {placeholders} in the method path | |
| queryParams | No | Query-string parameters; use an array for repeated params (e.g. resourceNames) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare destructive/openWorld/idempotent hints, so the safety profile is largely covered; the description still adds meaningful context the annotations don't โ the tool is 'subject to the same write-control policy as named tools', returns 'JSON only', and advises a `fields` param on reads to limit payload. It stops short of permissions/error/rate-limit detail, so not a 5.
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?
Four tight sentences, all load-bearing: capability, discovery routing, policy note, read optimization, and output-type boundary. Front-loaded with the core purpose and no filler.
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 6-parameter, open-world mutation tool with no output schema, the description covers the key gaps: return format is JSON-only, the binary case is redirected, and the write-control policy is stated. It could say more about how methodId maps to path/query/body, but nothing essential is missing.
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 parameters (api alias, methodId, pathParams, queryParams, body, account) are already documented in-schema. The description only adds the optional `fields` partial-response tip, which is helpful but marginal; 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?
States a specific verb (invoke) and resource (any Google Workspace REST method) plus the selection mechanism (Discovery method id), and explicitly frames itself as the escape hatch for operations without a dedicated tool. An agent can distinguish it from the *_discover and google_api_search siblings without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent: 'Find methods with google_api_search first' for discovery, and 'for binary/file content (media downloads, drive.files.export) use drive_download / drive_export instead'. Both the when-to-use and the when-not-to-use alternative are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_api_searchARead-onlyIdempotent
Search the Google API Discovery index for any Workspace REST method, including ones with no dedicated tool here. Returns method ids + parameters to invoke via google_api_call. APIs: gmail, drive, calendar, sheets, docs, slides, forms, people, searchconsole, tasks, chat, meet, driveactivity, drivelabels, admin_directory, admin_reports, admin_datatransfer, groupssettings, analyticsadmin, analyticsdata, appsmarket, classroom, cloudidentity, cloudsearch, groupsmigration, keep, licensing, postmaster, reseller, script, vault, workspaceevents.
| Name | Required | Description | Default |
|---|---|---|---|
| api | No | Restrict the search to one API alias | |
| query | Yes | Keywords, e.g. "slides create presentation" or "drive revisions" | |
| maxResults | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld and non-destructive, so safety is covered. The description adds real value beyond that by describing what is returned (method ids and parameters) and the workflow it feeds into, plus the full alias vocabulary. It does not mention result caps or pagination, so it is not fully transparent.
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?
Purpose and behavior are front-loaded in the first sentence, with the alias list trailing as reference data. The ~30-item alias list is long but functional since no enum is defined in the schema; it is justifiable rather than padding.
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 exists, so the description carries the return-value burden and does describe the shape ('method ids + parameters'). Combined with full annotation coverage and documented parameters, an agent has enough to invoke correctly, though result-count and ranking behavior are unaddressed.
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 67% (api and query documented, maxResults not). The description compensates by enumerating the accepted API aliases for the `api` filter, which the schema does not provide, and reinforces the query intent with 'method ids + parameters' output framing. It adds genuine meaning over 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?
Names the specific verb and resource ('Search the Google API Discovery index for any Workspace REST method') and immediately scopes it to methods with no dedicated tool. This distinguishes it from both the per-service *_discover siblings and google_api_call, which it explicitly hands off to.
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?
Explains the discovery-to-invocation workflow ('Returns method ids + parameters to invoke via google_api_call') and that it covers methods lacking a dedicated tool, which implicitly tells the agent when a dedicated sibling is preferable. It stops short of naming a specific alternative tool or stating exclusions explicitly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
meet_discoverARead-onlyIdempotent
Discover meet: lists the catalog and reveals its hidden tools; call first, then call the tool by name. Ops: conference_records_list, conference_record_get, recordings_list, transcripts_list, transcript_entries_list; 13 generated ops: conference, spaces.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Filter keyword |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/idempotentHint true and destructiveHint false, so safety is covered. The description adds genuine behavioral context beyond them: that it enumerates a catalog plus hidden tools, and that it is the prerequisite entry point for named tool calls.
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?
Front-loads the purpose before the op enumeration, and every clause carries information. The long semicolon-delimited ops list is useful but slightly dense.
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 discovery tool with no output schema, the description adequately explains what it returns (catalog + hidden tools) and the follow-up workflow. It could note polling/refresh behavior or relationship to discover_reset, but nothing critical is missing.
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?
Only one parameter (query) with 100% schema description coverage, so the schema already documents it as a 'filter keyword.' The description adds no further semantics about its matching or format, which is the expected baseline when the schema fully covers the parameter.
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?
States a specific verb and scoped resource: 'Discover meet: lists the catalog and reveals its hidden tools.' The 'meet' scoping distinguishes it from gmail_discover/drive_discover siblings by resource, though it never contrasts with discover_all or discover_reset.
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?
Gives clear sequencing guidance ('call first, then call the tool by name'), telling the agent this must precede invocation of the enumerated ops. It stops short of explaining when to prefer it over discover_all or other parallel discover tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchconsole_discoverARead-onlyIdempotent
Discover searchconsole: lists the catalog and reveals its hidden tools; call first, then call the tool by name. Ops: sites_list, sites_get, sites_add, sites_delete, sitemaps_list, sitemaps_get, sitemaps_submit, sitemaps_delete, searchanalytics_query, url_inspect; 1 generated ops: url.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Filter keyword |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly, idempotent, and non-destructive behavior. The description adds meaningful behavioral context by stating that it reveals hidden tools and by enumerating the available operations, which helps the agent understand the effect and scope of the call beyond the safety 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 front-loaded with the core action and sequencing instruction, then supplies the operation list compactly. The list is long, but every item is useful for understanding what the tool reveals, and there is no redundant prose.
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 discovery tool with no output schema, the description gives an adequate sense of what is returned: a catalog and hidden tools, including the named operations. Combined with annotations covering safety, this is nearly complete, though it could clarify how to invoke the revealed operations by name.
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% description coverage, and the single parameter is documented there as a 'Filter keyword.' The description does not add any additional meaning about the query parameter, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Discover searchconsole'), explains that it lists a catalog and reveals hidden tools, and identifies itself as the required first call. It clearly differentiates itself from sibling discovery tools such as gmail_discover and drive_discover by naming the searchconsole domain.
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 gives explicit sequencing guidance: 'call first, then call the tool by name.' This tells the agent when to use it relative to the hidden tools it reveals. It does not compare itself to discover_all or explain when not to use it, so it falls just short of full alternative coverage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sheets_discoverARead-onlyIdempotent
Discover sheets: lists the catalog and reveals its hidden tools; call first, then call the tool by name. Ops: create, get, read_range, write_range, append_rows, clear_range, batch_read, batch_write, add_sheet, delete_sheet +19 more; 7 generated ops: spreadsheets.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Filter keyword |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly and idempotent, so the safety bar is low. The description adds genuinely useful behavior beyond that: this tool reveals hidden tools and must be called before the real operation, which is non-obvious discovery semantics.
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 lead sentence is front-loaded and earns its place, but the semicolon-delimited op enumeration trails off with '+19 more; 7 generated ops: spreadsheets', which is cryptic and partially incomplete noise rather than actionable 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?
For a single-param, read-only discovery tool with no output schema, the description covers what it returns (a catalog), how to use it (call first), and what it unlocks. The truncated op list is the only rough edge.
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?
One optional parameter with 100% schema description coverage ('Filter keyword'), so the schema already carries the semantics. The description adds nothing about how the query filter works, so baseline 3 is correct.
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?
States a specific verb and resource ('Discover sheets: lists the catalog and reveals its hidden tools') and its scope is clear versus sibling discovery tools by naming the domain. It doesn't explicitly differentiate itself from discover_all, which is the nearest alternative.
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?
'call first, then call the tool by name' gives explicit sequencing guidance for how this tool fits into a workflow. It stops short of stating when NOT to use it or how it differs from discover_all/discover_reset.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tasks_discoverARead-onlyIdempotent
Discover tasks: lists the catalog and reveals its hidden tools; call first, then call the tool by name. Ops: lists_list, list_get, list_insert, list_update, list_delete, list, get, insert, update, delete +2 more; 2 generated ops: tasklists, tasks.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Filter keyword |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint, idempotentHint, and non-destructive behavior. The description adds meaningful behavioral context by stating that the tool reveals hidden tools and must be invoked before calling those tools by name, though it does not cover return format, pagination, or auth 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?
The description is front-loaded with the core purpose and usage rule. The operation list is dense but useful for discovery; however, the inclusion of '+2 more' and generated ops adds minor clutter without fully earning 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?
For a simple read-only discovery tool with one optional filter parameter and no output schema, the description is largely complete: it explains what the tool does and when to call it. It could better clarify how the 'query' filter relates to the catalog, but the schema already covers that parameter.
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%, and the sole parameter 'query' is already documented as 'Filter keyword'. The description adds no additional meaning about the parameter, so the baseline of 3 applies.
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 names a specific verb and resource, 'Discover tasks', and explains the outcome: 'lists the catalog and reveals its hidden tools'. It also distinguishes the tool from the hidden tools it exposes by instructing the agent to 'call first, then call the tool by name'.
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 clear sequencing guidance: 'call first, then call the tool by name'. It does not explicitly mention when not to use this tool or name alternatives such as discover_all, so it falls short of full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
workspaceevents_discoverARead-onlyIdempotent
Discover workspaceevents: lists the catalog and reveals its hidden tools; call first, then call the tool by name. Ops: 15 generated ops: tasks, subscriptions, message, operations.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Filter keyword |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered. The description adds that it reveals hidden tools (useful), but says nothing about return shape, pagination, or how the revealed tools are surfaced. Modest added value over the 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 compact sentences, front-loaded with the purpose and the sequencing instruction. The trailing 'Ops:' fragment is slightly garbled (claims 15 ops but lists four), though it stays brief.
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 single-parameter discovery tool with no output schema and annotations covering safety, the description is adequate: it names the resource and explains the call-first workflow. The incomplete/ambiguous ops enumeration 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?
Only one optional 'query' parameter, and the schema already documents it as a 'Filter keyword' at 100% coverage. The description adds nothing about filter syntax, matching behavior, or empty-query semantics, so baseline 3 applies.
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?
Clear verb+resource: it lists a catalog and reveals hidden tools for the 'workspaceevents' service. The 'call first, then call the tool by name' line plus the ops list distinguishes it from direct action tools, though it does not distinguish it from its many *_discover siblings beyond the resource name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives one useful instruction ('call first'), implying a discovery-before-invocation workflow. But it offers no guidance on when to use this vs. discover_all or the other service-specific discover tools, and no exclusions.
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.
18 tool updates
v5.4.1- Added
account_add - Added
account_reauth - Added
account_write_config - Changed
calendar_discover1 field changed- changed
Input schema / properties / query / descriptionPrevious value: -"Keyword to filter the returned operations"New value: +"Filter keyword"
- Changed
contacts_discover1 field changed- changed
Input schema / properties / query / descriptionPrevious value: -"Keyword to filter the returned operations"New value: +"Filter keyword"
- Added
diagnose - Added
discover_all - Added
discover_reset - Changed
docs_discover1 field changed- changed
Input schema / properties / query / descriptionPrevious value: -"Keyword to filter the returned operations"New value: +"Filter keyword"
- Changed
drive_discover1 field changed- changed
Input schema / properties / query / descriptionPrevious value: -"Keyword to filter the returned operations"New value: +"Filter keyword"
- Changed
gmail_discover1 field changed- changed
Input schema / properties / query / descriptionPrevious value: -"Keyword to filter the returned operations"New value: +"Filter keyword"
- Changed
google_api_call9 fields changed- changed
Input schema / properties / account / descriptionPrevious value: -"Google account alias"New value: +"Google account alias (omit for the default account)" - changed
Input schema / properties / api / descriptionPrevious value: -"API alias: gmail, drive, calendar, sheets, docs, slides, forms, people, searchconsole, tasks, chat, meet, driveactivity, drivelabels, admin_directory, admin_reports, admin_datatransfer, groupssettings, appsmarket, classroom, cloudidentity, cloudsearch, groupsmigration, keep, licensing, postmaster, reseller, script, vault, workspaceevents"New value: +"API alias: gmail, drive, calendar, sheets, docs, slides, forms, people, searchconsole, tasks, chat, meet, driveactivity, drivelabels, admin_directory, admin_reports, admin_datatransfer, groupssettings, analyticsadmin, analyticsdata, appsmarket, classroom, cloudidentity, cloudsearch, groupsmigration, keep, licensing, postmaster, reseller, script, vault, workspaceevents" - added
Input schema / properties / api / maxLengthAdded value: +64 - added
Input schema / properties / methodId / maxLengthAdded value: +256 - added
Input schema / properties / methodId / minLengthAdded value: +1 - removed
Input schema / properties / pathParams / additionalProperties / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "number" - } -] - added
Input schema / properties / pathParams / additionalProperties / typeAdded value: +[ + "string", + "number" +] - changed
Input schema / properties / queryParams / additionalProperties / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "number" - }, - { - "type": "boolean" - }, - { - "items": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "number" - }, - { - "type": "boolean" - } - ] - }, - "type": "array" - } -]New value: +[ + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "items": { + "type": [ + "string", + "number", + "boolean" + ] + }, + "type": "array" + } +] - changed
Input schema / requiredPrevious value: -[ - "account", - "api", - "methodId" -]New value: +[ + "api", + "methodId" +]
- Changed
google_api_search2 fields changed- added
Input schema / properties / api / maxLengthAdded value: +64 - added
Input schema / properties / query / maxLengthAdded value: +500
- Changed
meet_discover1 field changed- changed
Input schema / properties / query / descriptionPrevious value: -"Keyword to filter the returned operations"New value: +"Filter keyword"
- Changed
searchconsole_discover1 field changed- changed
Input schema / properties / query / descriptionPrevious value: -"Keyword to filter the returned operations"New value: +"Filter keyword"
- Changed
sheets_discover1 field changed- changed
Input schema / properties / query / descriptionPrevious value: -"Keyword to filter the returned operations"New value: +"Filter keyword"
- Changed
tasks_discover1 field changed- changed
Input schema / properties / query / descriptionPrevious value: -"Keyword to filter the returned operations"New value: +"Filter keyword"
- Changed
workspaceevents_discover1 field changed- changed
Input schema / properties / query / descriptionPrevious value: -"Keyword to filter the returned operations"New value: +"Filter keyword"
13 tool updates
v0.0.0-semantically-released- First observed
account_list - First observed
calendar_discover - First observed
contacts_discover - First observed
docs_discover - First observed
drive_discover - First observed
gmail_discover - First observed
google_api_call - First observed
google_api_search - First observed
meet_discover - First observed
searchconsole_discover - First observed
sheets_discover - First observed
tasks_discover - First observed
workspaceevents_discover
TDQS
Scored across 19 tools
Each discover tool targets a distinct Google service, and the search/call/account tools have clearly separate roles. There is minor overlap between account_list and diagnose, which both surface token-health information, but their overall scopes differ enough for an agent to select correctly.
The tool names are consistently snake_case and use recognizable prefixes for accounts and raw API access. The discovery naming is slightly uneven: per-service tools use service_discover while the aggregate helpers use discover_all and discover_reset, but the pattern remains readable.
With 19 visible tools, the surface falls into the heavy range even though each service discover tool has a clear purpose. A multi-service Google server can justify some breadth, but the count is above the typical 3-15 sweet spot and could be reduced with more generic discovery.
The server covers major Google Workspace services and provides an escape hatch for any missing REST method, plus account add/list/reauth/config and diagnostics. Minor gaps exist around account removal or disablement, but most lifecycle and API-access needs are addressed.
Maintenance
Related MCP Connectors
Permissioned access to Gmail, Drive and Calendar via the user's own Google account
Gmail, Outlook, Drive, OneDrive and calendars for AI agents. Many accounts, one endpoint, audit log.
Your Gmail, Calendar, Drive, GitHub, Oura, wallet and confirmed profile facts in any MCP client.
Multiple Google accounts (Gmail, Calendar, Drive, Contacts, Tasks) in one Claude connector.
Related MCP Servers
- AlicenseAqualityDmaintenanceMCP server for Google Workspace APIs - Docs, Sheets, Drive, Gmail, and Calendar. Enables reading, creating, and editing Google Docs and Sheets, managing comments, reading emails, and viewing calendar events.3422 npm17MIT
- AlicenseCqualityAmaintenanceA multi-account Google Workspace MCP server that drives Gmail, Google Calendar, and Google Drive across any number of Google accounts in parallel from one server.422MIT
- FlicenseBqualityDmaintenanceMCP server providing full access to Google Workspace services (Gmail, Drive, Calendar, Docs, Sheets, Slides, Forms, Tasks, Contacts) using OAuth authentication.1001-
- AlicenseAqualityBmaintenanceEnables natural language interaction with multiple Google accounts (Gmail, Drive, Calendar) from MCP-compatible clients like Claude.6330 npm2MIT