Skip to main content
Glama
aaronsb

Google Workspace MCP Server

by aaronsb

Google Workspace MCP-Server

Ermöglichen Sie KI-Agenten den vollständigen Zugriff auf Google Workspace – Gmail, Kalender, Drive und mehr – über einen einzigen MCP-Server, der das Routing von Anmeldeinformationen für mehrere Konten, die Formatierung von Antworten für die KI-Verarbeitung und kontextbezogene Anleitungen übernimmt.

Basiert auf Googles offiziellem Workspace CLI (gws), wodurch die API-Abdeckung mit Google mitwächst. Der Server verwendet eine manifestgesteuerte Factory, die deklaratives YAML in voll funktionsfähige MCP-Tools umwandelt – das Hinzufügen einer neuen Google API-Operation ist eine Konfigurationsänderung, keine Codeänderung.

Warum dieser MCP-Server?

Für Benutzer: Eine einzige Installation gibt Ihrem KI-Agenten echten, authentifizierten Zugriff auf Ihre Google-Konten. Durchsuchen Sie E-Mails, überprüfen Sie Ihren Kalender, verwalten Sie Drive-Dateien, verketten Sie mehrstufige Workflows – alles durch natürliche Konversation.

Für Teams: Die Unterstützung mehrerer Konten bedeutet, dass Ihr Agent gleichzeitig über private und geschäftliche Konten hinweg arbeiten kann, mit Isolierung der Anmeldeinformationen pro Konto und XDG-konformer Speicherung.

Für Entwickler: Die Factory-Architektur bedeutet, dass die Abdeckung schnell erweitert werden kann. Googles Workspace CLI unterstützt bereits über 15 Dienste und Hunderte von API-Operationen. Das Manifest kuratiert, welche davon verfügbar gemacht werden, Patches fügen domänenspezifische Formatierungen hinzu und die Standardeinstellungen erledigen den Rest.

Related MCP server: google-mcp

Was ist verfügbar?

5 Tools, über 32 Operationen in 3 Kerndiensten:

Tool

Operationen

Was es tut

manage_email

search, read, send, reply, replyAll, forward, triage, trash, untrash, modify, labels, threads, getThread

Vollständiges Gmail – Suchen, Lesen, Verfassen, Thread-Verwaltung, Label-Verwaltung

manage_calendar

list, agenda, get, create, quickAdd, update, delete, calendars, freebusy

Kalender-CRUD, Erstellung von Ereignissen in natürlicher Sprache, Verfügbarkeitsprüfungen

manage_drive

search, get, upload, download, copy, delete, export, listPermissions, share, unshare

Dateiverwaltung, Google Docs-Export, Freigaben und Berechtigungen

manage_accounts

list, authenticate, remove, status, refresh, scopes

Multi-Account-Lebenszyklus – Konten hinzufügen, Anmeldeinformationen und Scopes verwalten

queue_operations

Verketten von Operationen nacheinander mit $N.field Ergebnisreferenzen

Jede Antwort enthält Anleitungen für nächste Schritte – der Agent weiß immer, was er als Nächstes tun kann.

Funktionsweise

                          ┌─────────────────────────┐
MCP Client ──stdio──▶     │  manifest.yaml           │
                          │  (52 operations declared) │
                          └────────┬────────────────┘
                                   │
                          ┌────────▼────────────────┐
                          │  Factory Generator       │
                          │  schemas + handlers      │
                          └────────┬────────────────┘
                                   │
                    ┌──────────────┼──────────────┐
                    ▼              ▼              ▼
              ┌──────────┐  ┌──────────┐  ┌──────────┐
              │  Gmail   │  │ Calendar │  │  Drive   │
              │  Patch   │  │  Patch   │  │  Patch   │
              └────┬─────┘  └────┬─────┘  └────┬─────┘
                   │             │             │
                   └──────┬──────┘──────┬──────┘
                          ▼             ▼
                    Account Router ──▶ gws CLI ──▶ Google APIs

Die Factory liest ein YAML-Manifest und generiert beim Start MCP-Tool-Schemas und Request-Handler. Patches fügen bei Bedarf domänenspezifisches Verhalten hinzu – Gmail-Such-Hydrierung, Kalenderformatierung, Erkennung von Drive-Dateitypen. Operationen ohne Patches erhalten automatisch sinnvolle Standardeinstellungen.

Die zugrunde liegende Engine ist Googles @googleworkspace/cli – eine Rust-Binärdatei, die die gesamte Google Workspace API-Oberfläche umschließt. Der MCP-Server kuratiert, welche Operationen verfügbar gemacht werden, und formatiert die Antworten für die KI-Verarbeitung.

Installation

MCPB-Bundle (Claude Desktop und andere MCP-Clients)

Laden Sie das .mcpb-Bundle für Ihre Plattform von der neuesten Version herunter:

Plattform

Datei

macOS (Apple Silicon)

google-workspace-mcp-darwin-arm64.mcpb

macOS (Intel)

google-workspace-mcp-darwin-x64.mcpb

Linux x64

google-workspace-mcp-linux-x64.mcpb

Linux ARM64

google-workspace-mcp-linux-arm64.mcpb

Windows x64

google-workspace-mcp-windows-x64.mcpb

Ziehen Sie in Claude Desktop die .mcpb-Datei in die App – Sie werden zur Eingabe Ihrer Google OAuth-Anmeldeinformationen aufgefordert, dann sind Sie startklar. Andere MCP-Clients, die .mcpb-Erweiterungen unterstützen, können es auf die gleiche Weise installieren. Das Bundle enthält alles: den Server, die gws-Binärdatei und alle Abhängigkeiten.

Claude Code / npm

npm install @aaronsb/google-workspace-mcp

Oder führen Sie es direkt aus:

npx @aaronsb/google-workspace-mcp

Voraussetzungen

  1. Node.js 18+

  2. Google Cloud OAuth-Anmeldeinformationen – erstellen Sie diese unter console.cloud.google.com/apis/credentials:

    • Erstellen Sie eine OAuth 2.0-Client-ID (Desktop-Anwendung)

    • Aktivieren Sie die gewünschten APIs (Gmail, Kalender, Drive, Sheets, etc.)

  3. Umgebungsvariablen festlegen:

export GOOGLE_CLIENT_ID="your-client-id"
export GOOGLE_CLIENT_SECRET="your-client-secret"

MCP-Client-Konfiguration

Claude Desktop

Fügen Sie dies zu claude_desktop_config.json hinzu:

{
  "mcpServers": {
    "google-workspace": {
      "command": "npx",
      "args": ["@aaronsb/google-workspace-mcp"],
      "env": {
        "GOOGLE_CLIENT_ID": "your-client-id",
        "GOOGLE_CLIENT_SECRET": "your-client-secret"
      }
    }
  }
}

Claude Code

Fügen Sie dies zu .mcp.json hinzu:

{
  "mcpServers": {
    "google-workspace": {
      "command": "npx",
      "args": ["@aaronsb/google-workspace-mcp"],
      "env": {
        "GOOGLE_CLIENT_ID": "your-client-id",
        "GOOGLE_CLIENT_SECRET": "your-client-secret"
      }
    }
  }
}

Verwendung

Fügen Sie ein Konto hinzu (öffnet den Browser für OAuth):

manage_accounts { "operation": "authenticate" }

Verwenden Sie dann ein beliebiges Tool mit Ihrer Konto-E-Mail-Adresse:

manage_email    { "operation": "triage", "email": "you@gmail.com" }
manage_calendar { "operation": "agenda", "email": "you@gmail.com" }
manage_drive    { "operation": "search", "email": "you@gmail.com", "query": "quarterly report" }

Mehrstufige Workflows

Verketten Sie Operationen mit Ergebnisreferenzen – die Ausgabe eines Schrittes speist den nächsten:

{
  "operations": [
    { "tool": "manage_email", "args": { "operation": "search", "email": "you@gmail.com", "query": "from:boss subject:review" }},
    { "tool": "manage_email", "args": { "operation": "read", "email": "you@gmail.com", "messageId": "$0.messageId" }}
  ]
}

Erweiterung der Abdeckung

Der Server erkennt Operationen aus der gws CLI, die bereits über 15 Google-Dienste unterstützt (Sheets, Docs, Tasks, People, Chat und mehr). Das Hinzufügen von Abdeckung ist eine Manifest-Bearbeitung:

make manifest-discover   # Find all 287+ available operations
make manifest-lint       # Validate the curated manifest
make test                # Verify everything works

Neue Operationen erhalten automatisch eine Standardformatierung. Fügen Sie nur dann einen Patch hinzu, wenn Sie eine domänenspezifische Darstellung benötigen.

Datenspeicherung

Folgt der XDG Base Directory Specification:

Daten

Speicherort

Kontoregister

~/.config/google-workspace-mcp/accounts.json

Anmeldeinformationen

~/.local/share/google-workspace-mcp/credentials/

Anmeldeinformationen sind kontospezifische Dateien mit Standard-OAuth-Tokens. Im Projektverzeichnis werden keine Geheimnisse gespeichert.

Lizenz

MIT

Available Tools

13 tools
bulk_operationsA

Do many things in one call, two ways. mode:'queue' (default) runs different operations in sequence, chaining results with $N.field — works for every tool. mode:'batch' does ONE operation across many resources in a single Google request — far fewer round trips, but only where Google publishes a batch method.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoqueue (default): N operations, N API calls, in order, with $N.field references between them. batch: ONE operation across many resources in a single API call — no $N references, because there is no 'between'.
toolNobatch only — the tool to call, e.g. 'manage_contacts'.
emailNobatch only — the account to act as.
itemsNobatch only — one entry per resource. A bare id string is enough when that is all that differs, e.g. ['people/c1', 'people/c2']; use objects when items carry more, e.g. [{name: 'Ada Lovelace', contactEmail: 'ada@example.com'}]. Anything shared by the WHOLE batch — labels to add, a field mask — goes at the top level of this call, not in here.
detailNosummary: one-line status per operation (default) | full: include complete output from each operation
operationNobatch only — the operation to apply to every item, e.g. 'delete'. Ask for one that cannot batch and the error names the ones that can.
operationsNoOperations to execute sequentially

TDQS

A4/5.0
Behavior4/5

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

With no annotations provided, the description carries the behavioral disclosure burden. It explains that queue mode executes operations sequentially, supports $N.field chaining, and that batch mode reduces round trips but only where Google publishes a batch method. This is meaningful behavioral context, though it does not discuss side effects, error behavior beyond the schema's onError field, or return shape.

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

Conciseness5/5

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

The description is two sentences, front-loads the core purpose, and packs the essential mode distinction into a compact, readable form. Every clause earns its place, and the queue/batch contrast is immediately clear.

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

Completeness4/5

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

For a complex 7-parameter tool with no output schema and no annotations, the description plus a 100%-covered input schema is nearly complete. It explains the two modes, sequencing, chaining, and the batch limitation. It does not warn about destructive side effects or enumerate which Google operations have batch support, but the schema's operation description points to the error message for that.

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

Parameters3/5

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

Schema coverage is 100%, so the baseline is 3. The description reinforces the mode distinction and the 'one call' semantics, but it does not add parameter-level information beyond what the input schema already provides for tool, email, items, detail, operation, and operations.

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

Purpose4/5

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

The description clearly states the tool's function: perform many operations in a single call, with two distinct modes. It differentiates the internal modes (queue vs batch) but does not explicitly distinguish itself from its sibling queue_operations, so it stops just short of full sibling differentiation.

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

Usage Guidelines4/5

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

The description gives practical guidance: queue is the default and works for every tool, while batch is appropriate when one operation applies across many resources and Google exposes a batch method. It clearly contrasts the two modes, though it does not explicitly state when to prefer individual sibling tools over this bulk tool.

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

manage_accountsA

Manage Google Workspace account lifecycle: list, authenticate, check status, refresh credentials, update scopes, or remove accounts.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailNoRequired for remove, status, refresh, scopes
accessNoHow much this account may do. 'readwrite' (default) is full access. 'read' asks Google for read-only permissions instead, so the account can look things up but cannot send, edit or delete. Some services have no read-only option — you will be told which before the browser opens, and nothing is authorized until you confirm.
categoryNoFor authenticate (default: personal)
servicesNoFor scopes — comma-separated service names (e.g. gmail,drive,calendar,sheets)
operationYeslist: show all accounts | authenticate: add new account (opens browser) | remove: delete account and credentials | status: check token validity and scopes | refresh: renew credentials | scopes: re-auth with different services | capabilities: show available services, safety policies, and workspace status
descriptionNoFor authenticate — optional label
confirmWriteAccessNoSet true to go ahead when 'read' was asked for but some services can only be granted full access. Only needed after a first call has told you which ones.

TDQS

A3.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries full responsibility for disclosing behavioral traits. It names operations like 'authenticate' and 'remove accounts' but does not mention that authentication opens a browser, removal deletes credentials, or that read-only access has caveats. Some of these details appear in the schema parameter descriptions, but the tool description itself is thin on side effects.

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

Conciseness4/5

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

A single front-loaded sentence that names the resource and immediately lists the supported operations. It is efficient and scannable, though the list is somewhat dense and could be broken out for easier parsing.

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

Completeness3/5

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

The input schema is rich and compensates for much of the missing operational detail, so the overall tool definition is usable. However, with no annotations and no output schema, the description leaves workflow-level behavior such as the browser-based auth flow, return values, and removal consequences implicit rather than explicit.

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

Parameters3/5

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

Schema description coverage is 100%, and the schema provides rich detail for every parameter, including the operation enum, access modes, and confirmWriteAccess flow. The description adds no parameter-level meaning itself, so it earns the baseline but no extra credit.

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

Purpose5/5

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

States a specific resource and scope: Google Workspace account lifecycle, and enumerates distinct operations (list, authenticate, status, refresh, scopes, remove). This clearly distinguishes it from sibling resource tools like manage_calendar or manage_drive without needing to open the schema.

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

Usage Guidelines4/5

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

The description gives clear contextual scope: account lifecycle management, and the operation list implies the concrete cases where this tool is appropriate. It does not explicitly name alternatives or state when not to use this tool, but the scope is unambiguous enough for an agent to route correctly.

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

manage_calendarB

List events, view agenda, check availability, or manage calendar events.

ParametersJSON Schema
NameRequiredDescriptionDefault
endNoEnd time (ISO 8601) — or, when allDay is true, a DATE (YYYY-MM-DD) that is the INCLUSIVE last day; the exclusive end date the Calendar API requires is computed for you. Optional for all-day events: a missing end (or one equal to start) makes a one-day event.
daysNoNumber of days ahead to show (default: today only)
meetNoAdd a Google Meet video conference link. On `update`, true adds a link and false REMOVES an existing one; omit it to leave the link as it is.
textNoNatural language event description
weekNoShow this week's events
emailYesAccount email address
queryNoFree-text search terms to filter events
startNoStart time (ISO 8601) — or a DATE (YYYY-MM-DD) when allDay is true
allDayNoWhether the event is all-day. When true, start and end are DATES (YYYY-MM-DD — an ISO datetime's date part is used) and end, if given, is the INCLUSIVE last day; the exclusive end date the Calendar API requires is computed for you. Omit it (or pass false) for a timed event with start/end as dateTime — pass false with new datetimes to convert an all-day event back to a timed one. On `update`, converting TO all-day needs only one of start/end; the other is derived from the event on record. Converting FROM all-day needs both, because the missing one would need a time of day only you can choose.
eventIdNoEvent ID
summaryNoEvent title
timeMaxNoEnd of range (ISO 8601)
timeMinNoStart of range (ISO 8601). On `list`, defaults to today.
locationNoEvent location
tomorrowNoShow tomorrow's events instead of today
attendeesNoComma-separated email addresses. On `update`, whatever you pass REPLACES the existing list — addresses you leave out are removed, and an empty string clears everyone. OMIT the parameter to leave the attendee list untouched while changing other fields. On `freebusy`, the addresses whose availability to check.
operationYeslist: upcoming events — defaults to primary calendar, use calendarId to target a specific calendar (use 'calendars' operation to discover IDs) | agenda: today's schedule at a glance (all calendars). Returns calendarId per event for follow-up get calls. | get: full event details by ID. For shared calendar events, calendarId is required (use agenda or list to discover it). | create: create a new calendar event | quickAdd: create event from natural language (e.g. 'Lunch with Alice tomorrow at noon') | update: update an existing event (patch semantics — only changed fields needed) | delete: delete an event | calendars: list all calendars the user has access to | freebusy: check availability (free/busy) for a time range. Automatically includes own calendar; add attendees to check others.
calendarIdNoCalendar ID. Use the `calendars` operation to list available IDs; required for events on shared calendars. Defaults to 'primary' on the event operations (`list`, `get`, `create`, `quickAdd`, `update`, `delete`). On `agenda`, a calendar name or ID to filter to — OMIT it to span all calendars, and do not pass 'primary', which is an API alias rather than an id agenda matches on. On `freebusy`, a comma-separated list of calendar IDs to check IN ADDITION to your own.
maxResultsNoMax events (default: 10, max: 50)
descriptionNoEvent description or notes

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description itself must disclose behavioral traits. It only lists broad capabilities and never mentions that create/update/delete mutate data, that update uses patch semantics, that attendees are replaced, or that deleting is irreversible. Some behavioral detail appears in the parameter descriptions, but the main description does not carry the burden for an unannotated tool.

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

Conciseness4/5

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

The description is one short sentence with no fluff and front-loads concrete capabilities. The trailing phrase 'or manage calendar events' is redundant and generic, preventing a 5, but the overall text is concise and readable.

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

Completeness4/5

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

This is a complex tool with 20 parameters, 9 operations, and no output schema, yet the schema parameter descriptions cover almost all invocation concerns: per-operation behavior, default calendars, shared-calendar requirements, patch semantics, and availability ranges. The top-level description is thin, but the definition as a whole is sufficiently complete for an agent to select and call the tool safely.

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

Parameters3/5

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

Schema description coverage is 100%, so the input schema already documents all 20 parameters in detail. The description text adds no parameter-level meaning, meeting the baseline for high coverage. The schema's own descriptions are unusually rich (e.g., allDay boundary handling, attendee replacement), but that is schema content, not description-added value.

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

Purpose4/5

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

The description clearly identifies the resource (calendar events, agenda, availability) and gives concrete verbs: list, view, check, manage. It is not a mere tautology, though 'manage calendar events' is broad and duplicates the tool name rather than enumerating the create/update/delete operations explicitly.

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

Usage Guidelines3/5

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

The description does not explicitly state when to use this tool instead of alternatives such as manage_meet or manage_tasks, but the calendar resource and availability/agenda wording imply its scope. The operation parameter descriptions provide detailed internal routing (e.g., use 'calendars' to discover IDs, 'agenda' for shared calendars), so usage guidance is partially covered within the schema rather than the top-level description.

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

manage_contactsA

Search, read, create, update and delete Google Contacts: your saved contacts, the addresses you have corresponded with but never saved, and your organization's directory.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoFull name, e.g. `Ada Lovelace`. Split into given and family name on the way in; a single word becomes the given name.
emailYesAccount email address
notesNoFree-text note stored on the contact
phoneNoPhone number, in whatever form you have it — Google normalizes it. On `update` this REPLACES every number the contact has — pass an empty string to clear them.
queryNoText to match against names, email addresses, nicknames and phone numbers. Matching is by PREFIX: `ann` finds Anna, `nna` finds nobody.
companyNoOrganization name
jobTitleNoJob title within the organization
contactIdNoPerson id as `list` or `search` printed it (e.g. `people/c1234567890`). A bare id without the `people/` prefix is accepted.
operationYeslist: list your saved contacts | search: search your saved contacts by name, email, nickname or phone | get: get one person in full — addresses, birthday, notes, relations | create: create a new contact | update: change an existing contact (only the fields you pass; pass an empty string to clear one) | delete: delete a contact | listOther: list 'other contacts' — addresses you have corresponded with but never saved | searchOther: search 'other contacts' by name or email | listDirectory: list people in your organization's directory (Workspace accounts only) | searchDirectory: search your organization's directory by name or email (Workspace accounts only)
pageTokenNoContinue from where a previous page stopped — pass the token that response printed
sortOrderNoOrder for `list` — by first name, by last name, or most recently changed first
maxResultsNoMax people to return (default 25). Capped per operation: 30 for `search` and `searchOther`, 100 for everything else.
contactEmailNoThe contact's email address. (`email` is the account making the call, not the person being saved.) On `update` this REPLACES every address the contact has — pass an empty string to clear them.

TDQS

A4/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden for behavioral disclosure. It does convey the high-level mutability (create/update/delete) and the meaningful scope of 'addresses you have corresponded with but never saved' and 'organization's directory.' However, it does not disclose important behavioral traits such as update replacing existing phone/email values, directory operations being Workspace-only, or pagination behavior; some of this is delegated to schema property descriptions.

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

Conciseness5/5

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

The description is a single well-structured sentence that front-loads the action verbs and uses a colon to enumerate the three data scopes. Every word earns its place, and there is no redundant or filler language.

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

Completeness4/5

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

For a tool with 13 parameters, 10 operations, and no output schema, the description provides a solid orientation while the rich input schema carries the operational detail. The only notable gap is that return-value structure is not described anywhere, but it is not heavily needed given the schema's references to pagination tokens and printed ids.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3 even though the main description contributes no parameter-level meaning. The schema descriptions themselves are detailed and clarify subtle distinctions like `email` being the account email versus `contactEmail` being the contact's email, which is valuable. The description adds no extra parameter context beyond that.

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

Purpose5/5

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

The description opens with a specific verb set — search, read, create, update, delete — tied to Google Contacts, and then distinguishes three data scopes: saved contacts, unsaved 'other contacts', and the organization directory. This makes the tool's purpose unmistakable and clearly separates it from sibling domain tools like manage_calendar or manage_email.

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

Usage Guidelines4/5

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

The description provides clear context for when the tool applies by naming the resource and the three contact scopes it covers. It does not explicitly state when not to use it or name alternatives, but the sibling tools cover different domains, so ambiguity is low.

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

manage_docsC

Read, write, insert, and find-replace text in Google Docs documents.

ParametersJSON Schema
NameRequiredDescriptionDefault
textNoText to write (plain text) — appended to the end by write, inserted at `index` by insertText
emailYesAccount email address
indexNoCharacter index to insert at (1 = start of the tab's body)
tabIdNoTab to act on — a tabId from a previous get's tabIndex. Scopes the read on get; targets the edit on write/insertText/replaceText, which act on the FIRST tab when it is omitted (replaceText spans every tab). Character indices are per-tab.
titleNoDocument title (default: 'Untitled document')
findTextNoText to find
matchCaseNoCase-sensitive match (default: true)
operationYesget: get document content and metadata | create: create a new document | write: append text to the end of a document | insertText: insert text at a specific position in a document | replaceText: find and replace text in a document
documentIdNoDocument ID
replaceWithNoReplacement text

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure, and it only names the operations. Critical mutation traits are absent: write appends rather than overwrites, edits without tabId target the FIRST tab while replaceText spans every tab, character indices are per-tab, and an email is required for authentication. These nuances exist in the schema's parameter text, not in the tool description, so the agent gets no behavioral warning before invoking.

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

Conciseness4/5

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

A 12-word single sentence with no wasted words, and the verb list is front-loaded so the agent immediately knows the operation families. However, the brevity veers toward under-specification; it reads as a tagline rather than a specification, which is acceptable for conciseness but shifts substance burdens to other dimensions.

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

Completeness2/5

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

This is a five-operation, 10-parameter, mutation-heavy tool with no annotations and no output schema, yet it gets only a one-line summary. The schema compensates with detailed operation and parameter text, but the tool-level description still omits what get returns, create's default behaviors, per-tab indexing pitfalls, and auth expectations. Not complete enough for an agent to select and call it correctly without deep schema parsing.

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

Parameters3/5

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

Schema coverage is 100% with strong per-parameter descriptions (tabId explains first-tab targeting, operation explains each enum value, text explains append vs insert semantics), so the baseline of 3 applies. The tool description itself adds zero parameter meaning, but the schema carries the load thoroughly, so no penalty beyond baseline is warranted.

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

Purpose4/5

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

The description names specific verbs (read, write, insert, find-replace) and a concrete resource (Google Docs documents), making the tool's domain unmistakable and distinct from siblings like manage_sheets or manage_tasks. It does not differentiate at the operation level, but the operation enum in the schema fills that role. The one-line headline is accurate, if minimal.

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

Usage Guidelines2/5

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

Nowhere does the description say when to choose manage_docs over siblings such as manage_drive or manage_sheets, nor does it give selection criteria among the five internal operations. The schema's operation descriptions explain mechanics (append, insert, replace) but offer no when-to-use or when-not-to-use guidance. An agent must infer the intended use case.

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

manage_driveB

Search, upload, download, share, comment on, or manage files in Google Drive.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoFile name in Drive. On `upload`, defaults to the local file's name. On `copy`, the name for the copy — without it Drive names it 'Copy of <original>'. On `update`, the new name (a rename). On `createFolder`, the folder name.
roleNoPermission level. On `share`, the level to grant — defaults to `reader`. On `setRole`, the new level, and it is REQUIRED there: with no default to fall back on, an omitted role would silently demote the collaborator, and setRole sends no notification.
typeNoPermission type (default: 'user'). Use 'group' for Google Groups, 'domain' to share with an entire G Suite domain, 'anyone' for public links.
emailYesAccount email address
queryNoDrive search query (e.g. "name contains 'budget'" or "mimeType='application/pdf'")
domainNoDomain name (required when type is 'domain').
fileIdNoFile ID
contentNoComment text. On `replyToComment`, the reply text.
filePathNoLocal file path to upload
folderIdNoFolder ID (pass the id returned by createFolder or search)
maxDepthNoHow many folder levels to descend (default 10). The tree is labelled partial when this limit stops the walk.
mimeTypeNoTarget format (e.g. application/pdf, text/csv, text/plain, application/vnd.openxmlformats-officedocument.wordprocessingml.document)
resolvedNotrue to resolve, false to reopen
commentIdNoComment ID
operationYessearch: find files by query | get: get file metadata | upload: upload a local file to Drive | viewImage: view an image file inline without saving to workspace (png, jpg, gif, webp). Use for quick preview — use download to save. | download: download file content to local path | copy: create a copy of a file (set name to rename the copy; parentFolderId to place it in a folder) | update: rename a file (set name) and/or move it between folders (addParents / removeParents — to move, set both) | delete: permanently delete a file (cannot be undone) | trash: move a file or folder to trash (recoverable for 30 days — use instead of delete when you only need to remove it) | export: export a Google Workspace document (Docs, Sheets, Slides) to a file format | createFolder: create a new folder (optionally nested under a parent folder) | listFolder: list the files and subfolders directly inside a folder | tree: print a recursive folder tree and count the files (subfolders excluded from the count) | listPermissions: list sharing permissions on a file | share: share a file with a user, group, domain, or anyone | unshare: remove sharing permission from a file | setRole: change an existing collaborator's role (no notification email is sent) | listComments: list comments on a file | getComment: get a specific comment by ID | addComment: add a comment to a file (optionally anchored to quoted text) | resolveComment: resolve or reopen a comment | replyToComment: reply to an existing comment
addParentsNoComma-separated folder ID(s) to add as parents (move into a folder)
maxResultsNoMax results (default: 10, max: 50)
outputPathNoLocal path to save the file
quotedTextNoText to anchor the comment to (optional — if provided, comment is anchored to first occurrence)
shareEmailNoEmail address of the collaborator. On `share`, required when type is 'user' or 'group'; omit for 'domain' (use the `domain` param) or 'anyone'. On `setRole`, the existing collaborator whose role to change.
permissionIdNoPermission ID to remove (from listPermissions)
removeParentsNoComma-separated folder ID(s) to remove as parents (move out of a folder)
includeDeletedNoInclude deleted comments (default: false)
parentFolderIdNoDestination folder ID. On `upload`, places the file in this folder. On `copy`, defaults to the source file's folder. On `createFolder`, nests the new folder under this parent.

TDQS

B3.4/5.0
Behavior3/5

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

No annotations are present, and the description alone does not disclose side effects such as permanent deletes, 30-day trash recovery, missing setRole notifications, or partial tree results. Those traits are documented in the schema's operation enum, which mitigates the transparency gap, but the description field itself carries little behavioral weight.

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

Conciseness4/5

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

The description is a single front-loaded sentence with a clear verb series and no significant waste. The final 'or manage files' is somewhat redundant and vague, but overall the length is appropriate given that the schema carries the detailed operational semantics.

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

Completeness3/5

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

For a 24-parameter tool with no output schema and no annotations, a high-level verb list is not fully complete on its own; the agent must rely on the schema's extensive operation enum to understand per-operation behavior and outputs. The schema is rich enough to make the definition usable, but the description leaves the tool's full behavioral surface to be discovered elsewhere.

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

Parameters3/5

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

Schema description coverage is 100%, so the input schema already documents all 24 parameters, including operation-specific meanings, defaults, and required conditions. The description adds no parameter-level meaning, so the baseline of 3 applies even though it does not compensate for anything.

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

Purpose4/5

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

The description lists specific actions (search, upload, download, share, comment) and names Google Drive as the resource, so an agent can tell this is a Drive file-management tool. It lacks explicit differentiation from siblings like manage_docs or manage_sheets, and the trailing 'or manage files' is generic, so it is a clear but not exceptional purpose statement.

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

Usage Guidelines3/5

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

The Google Drive scope and operation list imply when this tool is useful, but the description gives no explicit when-to-use or when-not-to-use guidance and never names alternatives. The useful operational tips (viewImage vs download, trash vs delete, setRole no-notification) live in the schema's operation enum rather than in the description itself.

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

manage_emailA

Search, read, send, forward, or manage emails in a Google Workspace account. Supports Gmail search syntax.

ParametersJSON Schema
NameRequiredDescriptionDefault
ccNoCC email(s), comma-separated. On `replyAll` these are ADDITIONAL — they do not replace the recipients already on the thread.
toNoRecipient email(s), comma-separated
bccNoBCC email(s), comma-separated
bodyNoEmail body text. On `forward`, an optional note prepended ABOVE the forwarded message.
fromNoSender email or RFC 2822 mailbox for a verified Gmail Send As alias
htmlNoTreat body as HTML content (default: plain text)
draftNoSave as draft instead of sending (default: false, forced true when attachments present)
emailYesAccount email address
queryNoGmail search query (e.g. "from:alice subject:meeting has:attachment")
subjectNoEmail subject line
filenameNoAttachment filename, exactly as it appears in the `read` response (e.g. 'invoice_template.md')
threadIdNoThread ID to retrieve
messageIdNoEmail message ID
operationYessearch: find emails by query | read: get full email by ID. Pass bodyFormat: 'html' when the plain-text part is a stub (marketing email, invitations, booking confirmations) and the dates/codes you need only exist in the HTML — returned HTML is sanitized and wrapped in a Spotlighting block (ADR-305). | archive: save an email's headers and body to a markdown file in the workspace — a LOCAL archive, not Gmail's 'remove from inbox' (attachments are listed, not downloaded) | send: compose and send a new email (creates draft when attachments present, 35MB attachment limit via upload endpoint) | reply: reply to a message (thread-aware, creates draft when attachments present) | replyAll: reply-all to a message (thread-aware, includes all recipients, creates draft when attachments present) | forward: forward a message to new recipients (includes original attachments by default) | triage: unread inbox summary (sender, subject, date) | trash: move a message to trash | untrash: restore a message from trash | getAttachment: download an email attachment to workspace directory (use read first to see attachment list) | viewAttachment: view an image attachment inline without saving to workspace (png, jpg, gif, webp). Use for quick preview — use getAttachment to save. | modify: add or remove labels on a message (e.g. archive, mark read/unread) | labels: list all labels in the mailbox | threads: list email threads by query | getThread: get all messages in a thread
bodyFormatNoHow to render the message body. 'plain' (default) returns text/plain or a crude HTML-strip fallback. 'html' returns the text/html part sanitized — useful when the plain-text part is empty/stub.
maxResultsNoMax results (default: 10, max: 50)
outputPathNoLocal path to save the markdown file (workspace-relative; defaults to a slug from the message date and subject)
addLabelIdsNoComma-separated label IDs to add (e.g. STARRED, IMPORTANT, Label_123)
attachmentsNoWorkspace filenames to attach, comma-separated (files must exist in workspace via manage_workspace). Creates draft when present.
removeLabelIdsNoComma-separated label IDs to remove (e.g. UNREAD, INBOX to archive)

TDQS

A4.6/5.0
Behavior5/5

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

No annotations are provided, so the description carries the full burden. It discloses meaningful behavioral details: returned HTML is sanitized and wrapped in a Spotlighting block, archive saves locally without downloading attachments, attachments force draft mode, uploads are capped at 35MB, forward includes original attachments, and replyAll treats cc as additional recipients. This is unusually transparent for an email tool.

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

Conciseness5/5

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

The tool description is a single front-loaded sentence naming the resource, major actions, and search syntax support. The operation enum descriptions are long, but each clause is operation-specific and earns its place across 16 distinct operations, with no filler.

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

Completeness4/5

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

Given the high complexity — 20 parameters, 16 operations, no annotations, and no output schema — the description is substantially complete. It covers operation behaviors, attachment handling, draft behavior, and limits. It falls just short of fully complete because return shapes for operations like search, labels, and threads are not described, and no auth/account prerequisites are stated beyond the required email parameter.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3 and the schema already documents all 20 parameters. The tool-level description adds no parameter-level semantics. The operation enum clarifies behavior, but that detail is part of the schema rather than something the description contributes beyond it.

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

Purpose5/5

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

The description opens with explicit actions on a concrete resource: 'Search, read, send, forward, or manage emails in a Google Workspace account.' It also adds a distinguishing capability, Gmail search syntax support. Sibling tools are calendar/drive/tasks, so this is unambiguously the email tool.

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

Usage Guidelines5/5

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

The operation enum provides detailed routing guidance: read says to pass bodyFormat 'html' when the plain-text part is a stub; viewAttachment says use it for quick preview and use getAttachment to save; archive clarifies it is a local archive, not Gmail's remove-from-inbox. This gives the agent explicit context for choosing among operations.

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

manage_meetB

Browse past Google Meet conferences, participants, transcripts, recordings, and AI-generated smart notes. Requires Workspace Business Standard+ for transcripts/recordings.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailYesAccount email address
spaceNoMeeting code (the abc-mnop-xyz part of a Meet link) or a full spaces/... resource name
filterNoEBNF filter. On `listConferences`, e.g. 'space.meeting_code = "abc-mnop-xyz"' or 'start_time>="2026-01-01T00:00:00Z"'. On `listParticipants`, e.g. 'latest_end_time IS NULL' for active participants.
operationYeslistConferences: list recent meeting conferences (default: descending by start time) | getConference: get details of a specific conference | listParticipants: list who attended a conference | listTranscripts: list transcripts for a conference (requires Workspace Business Standard+) | getTranscript: get transcript metadata including Google Docs destination | listTranscriptEntries: get structured transcript text — who said what, with timestamps | listRecordings: list recordings for a conference (saved as MP4 in Drive) | getRecording: get recording metadata including Drive file ID and playback link | getFullTranscript: get the full who-said-what transcript for a conference (chains transcripts + entries + participant names automatically). Use pageToken to continue reading. | listSmartNotes: list Gemini-generated smart notes for a conference | getSmartNote: get smart note metadata including Google Docs destination | createSpace: create a standalone Google Meet link (not attached to a calendar event) | activeConferences: list conferences happening RIGHT NOW across your meetings | getSpace: look up a meeting space by its meeting code or resource name | updateSpace: change who can join a meeting space, or turn host controls on or off | endActiveConference: end the call happening in a space right now, disconnecting everyone in it
pageTokenNoPage token from a previous getFullTranscript call to continue reading
accessTypeNoWho can join without knocking. OPEN: anyone with the link. TRUSTED (default): people in your organization, plus invited guests. RESTRICTED: invited guests only.
maxResultsNoMax results per page, as default/ceiling. Differs by operation: `listConferences` 25/100, `listParticipants` 100/250, `listTranscriptEntries` 100/100. (Google's own default for transcript entries is 10; this tool raises it.)
moderationNoTurn on host controls — the host admits guests and manages who can present or chat.
conferenceIdNoConference record ID (from `listConferences`)
recordingNameNoRecording resource name (from listRecordings)
smartNoteNameNoSmart note resource name (from listSmartNotes)
transcriptNameNoTranscript resource name (from `listTranscripts`, e.g. conferenceRecords/.../transcripts/...)

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description carries the full burden; it adds one useful behavioral fact (Workspace Business Standard+ required for transcripts/recordings) but otherwise frames the tool as read-only. It does not disclose that operations like updateSpace and endActiveConference mutate or terminate live meetings, which is material behavior for an agent to know.

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

Conciseness4/5

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

Both sentences earn their place and front-load the domain plus the license caveat. It is compact and free of filler, though the brevity contributes to under-specifying active-management capabilities.

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

Completeness2/5

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

For a 16-operation tool with 12 parameters, no output schema, and no annotations, two sentences about browsing and licensing are insufficient. The definition omits entire categories of behavior, such as active conferences, creating/updating spaces, and ending calls, and gives no account of mutation effects or required permissions. The rich operation enum in the schema compensates only partially.

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

Parameters3/5

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

The input schema covers 100% of parameters with descriptions and detailed enum explanations, so the baseline is 3. The prose description adds only the licensing constraint tied to transcripts/recordings, not parameter-level semantics beyond what the schema already provides.

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

Purpose4/5

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

The core read/browse function is explicit: 'Browse past Google Meet conferences, participants, transcripts, recordings, and AI-generated smart notes,' and 'Google Meet' clearly distinguishes this from sibling tools. However, the description understates the full operation set, which also includes createSpace, updateSpace, and endActiveConference, so the purpose is not fully represented.

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

Usage Guidelines3/5

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

The description gives a clear context for historical reads and a hard licensing prerequisite for transcripts/recordings, so an agent can infer when browsing Meet data is appropriate. It offers no guidance about when to prefer this over sibling tools or when to use the mutation operations, leaving that entirely to the schema.

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

manage_scratchpadA

Compose, edit, and deliver text content. Use for any multi-line content: emails, documents, descriptions. Compose in the scratchpad, edit by line or JSON path, attach files, then send to any target. For short one-liners, use the service tool directly instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
keepNoFor send: keep scratchpad after successful send (default: true)
pathNoFor json_* ops: JSON path (e.g., $.config.name, $.items[0].value)
labelNoFor create: optional human-readable label
refIdNoFor detach: attachment reference ID (att-1, att-2, etc.)
valueNoFor json_set, json_insert: value to set or insert (any JSON type)
fileIdNoFor attach (drive source): Drive file ID
formatNoFor create: content format (default: text). Controls validation and addressing mode.
sourceNoFor attach: file source (workspace or drive). For import: resource type (doc, email, sheet, drive_file).
targetNoFor send: delivery target
contentNoText content. For create (pre-fill), insert_lines, append_lines, replace_lines.
endLineNoEnd of line range (inclusive). For replace_lines, remove_lines, copy_lines, view.
filenameNoFor attach (workspace source): filename in workspace
afterLineNoInsert after this line number (0 = prepend). For insert_lines, copy_lines, attach.
operationYescreate: new buffer | view: show content | discard: free buffer | list: show all | insert_lines/append_lines/replace_lines/remove_lines: line editing | copy_lines: copy from another scratchpad | json_get/json_set/json_delete/json_insert: path-addressed JSON editing | attach/detach: file references | import: load from Google Workspace resource | send: deliver to target
startLineNoStart of line range (1-based). For replace_lines, remove_lines, copy_lines, view.
scratchpadIdNoScratchpad ID (sp-XXXX). Required for all operations except create and list.
sourceParamsNoFor import: source-specific parameters (e.g., { documentId, mode } for doc, { messageId } for email)
targetParamsNoFor send: target-specific parameters (e.g., { email, to, subject } for email, { filename } for workspace)
fromScratchpadIdNoFor copy_lines: source scratchpad ID

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the burden of behavioral disclosure. It usefully states the workflow: compose, edit by line or JSON path, attach files, and send to any target. However, it does not disclose side effects, irreversibility of sends, lifecycle/destruction of scratchpads, auth requirements, or error behavior, so important behavioral context is left to the schema.

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

Conciseness5/5

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

Three tightly packed sentences: purpose, workflow, and a functional exclusion. Every sentence earns its place, the main payload is front-loaded, and there is no fluff or repetition that wastes an agent's context window.

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

Completeness4/5

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

For a 19-parameter tool with 17 operations and no output schema, the description supplies a clear mental model that the schema cannot provide, and the schema supplies the per-operation and per-parameter detail. The main gap is that the generic 'service tool' alternative is not mapped to a concrete sibling, and import/copy/list/discard aspects are only discoverable from the schema.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all 19 parameters. The description adds a useful high-level grouping (line editing, JSON path, attachment, delivery) but does not add syntactic or semantic detail beyond what the parameter descriptions already provide; baseline 3 is appropriate.

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

Purpose4/5

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

The description clearly identifies the tool as composing, editing, and delivering multi-line text content, and ties it to a distinct scratchpad workflow (edit by line/JSON path, attach, send). It does not explicitly differentiate among the named sibling tools beyond pointing to a generic 'service tool', so it misses the strongest sibling-differentiation credit.

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

Usage Guidelines4/5

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

It gives an explicit when-to-use signal ('any multi-line content: emails, documents, descriptions') and an explicit when-not-to-use signal ('short one-liners... use the service tool directly'). The alternative is named only generically, not tied to a specific sibling, which is a partial gap.

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

manage_sheetsB

Read, write, and manage Google Sheets spreadsheets.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailYesAccount email address
indexNoPosition among tabs (0-based). Appended at the end if omitted.
rangeNoA1 notation range (e.g. 'Sheet1!A1:D10', or just 'Sheet1' for a whole tab). On `append`, the target tab — defaults to 'Sheet1'; use 'MyTab' or 'MyTab!A:Z' to append to a specific one.
titleNoOn `create`, the spreadsheet title (defaults to 'Untitled spreadsheet'); on `renameSpreadsheet`, its new title. On `addSheet`, the name of the new TAB; on `renameSheet`, that tab's new title; on `duplicateSheet`, the name for the copy (defaults to 'Copy of <source>').
valuesNoComma-separated values for a single row (e.g. 'Alice,100,true')
sheetIdNoSheet ID of the tab, from `manage_sheets get`. On `duplicateSheet` and `copySheetTo`, the SOURCE tab to copy.
rowCountNoInitial row count (default 1000)
operationYesget: get spreadsheet metadata and sheet names | create: create a new spreadsheet (optionally with a title) | read: read cell values from a range; rendered rows are prefixed with their sheet row number (e.g. 'R3: …') since blank rows are otherwise invisible | append: append rows to a spreadsheet (rows land after the last row of existing data in the target range) | getValues: get values from a specific range (raw API); rendered rows are prefixed with their sheet row number (e.g. 'R3: …') | updateValues: write values to a specific range | clearValues: clear cell values from a range (structure preserved) | addSheet: add a new tab (sheet) to the spreadsheet | renameSheet: rename a tab (sheet) within a spreadsheet | deleteSheet: delete a tab (sheet) from the spreadsheet — irreversible | duplicateSheet: duplicate a tab within the same spreadsheet | renameSpreadsheet: rename the spreadsheet (the document title, not a tab) | copySheetTo: copy a tab from this spreadsheet into another spreadsheet
jsonValuesNoJSON 2D array of rows (e.g. '[["a","b"],["c","d"]]'). Use for bulk and multi-row writes.
columnCountNoInitial column count (default 26)
spreadsheetIdNoSpreadsheet ID. On `copySheetTo`, the SOURCE spreadsheet.
valueInputOptionNoHow input is interpreted: USER_ENTERED (default, parses formulas/types) or RAW
destinationSpreadsheetIdNoDestination spreadsheet ID

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure, but 'read, write, and manage' only vaguely signals mutation. It does not mention side effects, irreversibility like deleteSheet, creation behavior, or output shape; those details appear later in the schema but are absent from the description itself.

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

Conciseness4/5

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

The description is a single front-loaded sentence with no filler, and every word earns its place. It is appropriately terse given the schema's rich parameter and operation documentation, though it offers no structured guidance for the many operations.

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

Completeness3/5

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

The input schema is rich and covers all parameters and operation semantics, so the generic description is not fatal. However, with no output schema and no usage direction beyond 'Google Sheets,' an agent must rely almost entirely on the schema to understand call patterns, operation selection, and expected results.

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

Parameters3/5

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

Schema description coverage is 100%, and every parameter has a detailed description, so the baseline is 3. The tool description adds no parameter-level meaning beyond identifying the domain, but the schema fully compensates.

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

Purpose4/5

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

The description, 'Read, write, and manage Google Sheets spreadsheets,' names a specific resource and clear high-level verbs. It distinguishes the tool from sibling manage_* tools by explicitly targeting Google Sheets, though it does not enumerate the 13 operations or contrast directly with tools like manage_docs or manage_drive.

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

Usage Guidelines3/5

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

Use is implied by the resource phrase 'Google Sheets spreadsheets,' which gives basic context among the manage_* sibling suite. There is no explicit when-to-use/when-not-to-use guidance, and no alternatives are mentioned.

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

manage_tasksC

Manage task lists and tasks in Google Tasks.

ParametersJSON Schema
NameRequiredDescriptionDefault
dueNoDue date (RFC 3339, e.g. 2026-07-20T00:00:00.000Z — Google stores the date, not the time)
emailYesAccount email address
notesNoTask notes / details
titleNoOn `createTaskList`, the task list name. On `create` and `update`, the task title.
statusNoTask status
taskIdNoTask ID
operationYeslistTaskLists: list all task lists | getTaskList: get a task list by ID | createTaskList: create a new task list | deleteTaskList: delete a task list and all its tasks | list: list tasks in a task list | get: get a specific task | create: create a new task | update: update a task (patch semantics — only the fields you pass are changed) | complete: mark a task as completed | delete: delete a task
maxResultsNoMax tasks to return (default: 20, max: 100)
taskListIdNoTask list ID (use `listTaskLists` to find)
showCompletedNoInclude completed tasks (default: true)

TDQS

C2.9/5.0
Behavior2/5

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

There are no annotations, so the description carries the full burden of behavioral disclosure. 'Manage' implies mutation and side effects but does not state that deletions are destructive, updates use patch semantics, or that operations may permanently remove tasks. The schema's operation descriptions contain some of this, but the description itself does not.

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

Conciseness4/5

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

The description is a single short sentence with no filler or redundant content. It is front-loaded with the domain and resource type, though it may be too terse to be fully useful on its own, the conciseness itself is appropriate.

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

Completeness2/5

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

This is a complex tool with 10 parameters, 10 distinct operations, no annotations, and no output schema. A one-sentence overview is insufficient context for an agent to safely select and invoke operations, understand return values, or know prerequisites. The description leaves substantial gaps that the schema alone only partially fills.

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

Parameters3/5

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

Schema description coverage is 100%, so the input schema already documents every parameter in detail, including enum meanings, defaults, and special notes like due-date storage. The description adds no parameter-level meaning beyond what the schema provides, which matches the baseline of 3.

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

Purpose4/5

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

The description names the specific resource domain — 'task lists and tasks in Google Tasks' — which distinguishes it from sibling tools like manage_calendar or manage_drive. The verb 'Manage' is generic, but the object is clear enough for an agent to identify the tool's scope.

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

Usage Guidelines2/5

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

No guidance is provided about when to use this tool versus alternatives, when not to use it, or which operation to choose in a given situation. The operation enum does provide choices, but the description itself offers no selection criteria or prerequisites.

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

manage_workspaceB

Manage files and directories in the workspace sandbox. Supports nested paths (e.g. "reports/q1/summary.csv"). The workspace is the exchange point for file operations (attachments, downloads, exports).

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNoDirectory path (for list: scope to subdirectory, for mkdir: directory to create)
sourceNoSource path (for move)
contentNoFile content to write (for write)
filenameNoFile path, may include directories (for read, write, delete, compress, decompress). E.g. "reports/q1/summary.csv"
operationYeslist: show files (recursive) | read: get file content | write: save content to file | delete: remove file or directory | move: move or rename a file/directory | mkdir: create a directory | compress: gzip a file | decompress: gunzip a file
destinationNoDestination path (for move, compress, decompress). Defaults to filename.gz for compress, strips .gz for decompress.

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description must carry behavioral disclosure. It only mentions nested-path support and the file-exchange context. It does not disclose that operations like delete, move, or write are mutating or potentially destructive, nor any overwrite semantics, irreversibility, or permission requirements.

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

Conciseness5/5

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

Three short sentences with no filler: purpose, path capability, and integration context are each stated once and front-loaded. The example path 'reports/q1/summary.csv' is concrete and earns its place.

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

Completeness3/5

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

The workspace-scope and nested-path context combine well with a high-coverage schema that spells out operations and defaults. However, with no annotations and no output schema, the description leaves destructive-operation caveats, expected return shapes, and path-boundary limits implicit, making it adequate but not fully complete.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all six parameters and explains each operation enum value and destination default. The description adds the nested-path convention and workspace role, but this is contextual rather than necessary parameter semantics.

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

Purpose4/5

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

The description opens with 'Manage files and directories in the workspace sandbox,' naming a concrete resource and scope that separates it from siblings like manage_drive or manage_docs. The nested-path example further clarifies the file-operation role. 'Manage' is somewhat broad, but the schema's operation enum removes ambiguity.

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

Usage Guidelines3/5

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

It says the workspace is 'the exchange point for file operations (attachments, downloads, exports),' which implies use when exchanging files with the workspace. However, it does not explicitly state when to prefer this over alternatives such as manage_drive, nor does it mention exclusions.

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

queue_operationsA

RENAMED to bulk_operations, which does the same thing. This name still works and will be removed in a future release. Do many things in one call, two ways. mode:'queue' (default) runs different operations in sequence, chaining results with $N.field — works for every tool. mode:'batch' does ONE operation across many resources in a single Google request — far fewer round trips, but only where Google publishes a batch method.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoqueue (default): N operations, N API calls, in order, with $N.field references between them. batch: ONE operation across many resources in a single API call — no $N references, because there is no 'between'.
toolNobatch only — the tool to call, e.g. 'manage_contacts'.
emailNobatch only — the account to act as.
itemsNobatch only — one entry per resource. A bare id string is enough when that is all that differs, e.g. ['people/c1', 'people/c2']; use objects when items carry more, e.g. [{name: 'Ada Lovelace', contactEmail: 'ada@example.com'}]. Anything shared by the WHOLE batch — labels to add, a field mask — goes at the top level of this call, not in here.
detailNosummary: one-line status per operation (default) | full: include complete output from each operation
operationNobatch only — the operation to apply to every item, e.g. 'delete'. Ask for one that cannot batch and the error names the ones that can.
operationsNoOperations to execute sequentially

TDQS

A4.1/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It discloses the two execution modes, the default mode, result chaining with $N.field, and the deprecation status. However, it does not mention potential side effects, permissions required, or what the operation result/return shape looks like, which are relevant for a tool that can execute arbitrary operations.

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

Conciseness5/5

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

The description is compact and front-loaded with the most important information: the rename and deprecation. Each sentence earns its place by explaining mode selection, sequencing, chaining, and batch limitations without repetition or fluff.

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

Completeness4/5

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

For a complex tool with seven parameters, two modes, and no output schema, the description covers the core decision points: mode choice, chaining mechanics, batch constraints, and deprecation. The parameter schema fills the remaining details. It is slightly incomplete only because it does not discuss output/return behavior or authorization/side-effect considerations, but overall it is sufficient for correct invocation.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3. The text adds meaningful context beyond the schema by explaining that 'queue' works for every tool, that 'batch' is beneficial due to fewer round trips but only where batch methods exist, and that $N.field references chain results. This goes beyond the enum descriptions in the schema.

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

Purpose4/5

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

The description clearly states that the tool does many things in one call and explains the two modes ('queue' and 'batch'). It also identifies this as a deprecated alias of 'bulk_operations', which gives the agent a concrete point of reference, though it does not distinguish itself from that sibling because it is the same tool.

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

Usage Guidelines5/5

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

The description explicitly says when to use each mode: 'queue' for sequential operations with chaining, 'batch' for one operation across many resources with fewer round trips. It also warns that batch is only available where Google publishes a batch method, and it tells the agent the preferred alternative name is 'bulk_operations' since this name will be removed.

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

Tool Schema Changelog

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

  1. 13 tool updatesv4.5.0
    • First observedbulk_operations
    • First observedmanage_accounts
    • First observedmanage_calendar
    • First observedmanage_contacts
    • First observedmanage_docs
    • First observedmanage_drive
    • First observedmanage_email
    • First observedmanage_meet
    • First observedmanage_scratchpad
    • First observedmanage_sheets
    • First observedmanage_tasks
    • First observedmanage_workspace
    • First observedqueue_operations

TDQS

A3.5/5.0

Scored across 13 tools

Disambiguation4/5

Most tools map cleanup to a distinct Google Workspace service, but queue_operations is a direct duplicate/alias of bulk_operations, and manage_workspace vs manage_drive could require careful reading. Descriptions are strong enough to resolve most ambiguity.

Naming Consistency4/5

The dominant manage_<service> pattern is clear and consistent across Calendar, Drive, Email, Docs, Sheets, Tasks, etc. bulk_operations and queue_operations break that prefix pattern but are internally consistent; the deprecated queue_operations alias is a minor naming inconsistency.

Tool Count4/5

13 tools is well within the ideal range for a multi-service Workspace server and the breadth is justified. The redundant queue_operations alias makes the count slightly less clean than it could be.

Completeness4/5

The set covers core CRUD/lifecycle workflows for Calendar, Drive, Email, Contacts, Docs, Sheets, and Tasks, plus Meet viewing and account management. Obvious gaps remain for other Workspace apps like Slides, Forms, or Chat, but common workflows are well supported.

Maintenance

ActivityMaintained
ResponsivenessSlow

Related MCP Connectors

Related MCP Servers

  • -
    license
    Not graded
    quality
    Not graded
    maintenance
    Enables AI assistants to securely manage Google Workspace services (Gmail, Calendar, Drive, Sheets, Contacts) with persistent multi-account OAuth. Uses OS keychain for credential storage with health monitoring and granular business rules for enterprise security.
    -
  • A
    license
    B
    quality
    C
    maintenance
    Multi-account Google MCP server providing read access to Gmail and Calendar via stdio. Supports secure authentication for personal and work accounts with OAuth and keychain token storage.
    4
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables natural language control over Google Workspace (Gmail, Drive, Calendar, Sheets, Slides, Tasks) through secure OAuth 2.1 authentication, with vault-level security and multi-user isolation.
    221 npm
    7
    -