Skip to main content
Glama
travisthetrashpanda

multi-google-calendar-gmail-mcp

multi-google-calendar-gmail-mcp

One small Python file that gives Claude (or any MCP client) Gmail and Google Calendar across as many Google accounts as you want — a personal Gmail, three Workspace domains, whatever. Each account gets a nickname; every tool takes a nickname or "all" to sweep the whole fleet in one call.

"find every unread invoice across all five inboxes and label them Bookkeeping" — one tool call.

Why this one

  • Multi-account is the whole design, not a bolt-on. Most self-hosted Gmail MCPs authenticate one account. Here, connecting another account is one command + one browser click, and cross-account operations are native.

  • Minimal. One readable server.py, three dependencies. If you want to know what it does, you can just read it.

  • Bring your own credentials. Nothing is hosted, nothing phones home. You create your own (free) Google Cloud OAuth client, and your account keys live in a git-ignored folder on your machine. This repo never sees them.

Pairs naturally with apple-suite-mcp: that one reads whatever your Mac's built-in apps already see (zero setup, macOS only); this one speaks Google's APIs directly (real labels, batch operations up to 500 messages, drafts, calendar invites with attendees) and runs anywhere Python runs — including a headless Linux box.

Related MCP server: mcp-google-multi

Setup

Easy mode — let your AI install it

If you use Claude Code (or any coding agent), paste this and let it drive:

Read https://github.com/travisthetrashpanda/multi-google-calendar-gmail-mcp and install it for me: clone it, walk me through the one-time Google Cloud credential setup in its SETUP.md, help me connect my accounts with its connect command, and register it with my MCP client.

The agent handles the fiddly parts and can diagnose failures with the built-in check command; you just click Allow in the browser when Google asks. (Sensible to read what you're installing first — it's one Python file.)

Manual mode

Requires uv (brew install uv on macOS).

git clone https://github.com/travisthetrashpanda/multi-google-calendar-gmail-mcp.git ~/multi-google-calendar-gmail-mcp
  1. One-time Google Cloud setup (~15 min, free): follow SETUP.md — create a Cloud project, enable the Gmail and Calendar APIs, publish the consent screen (avoids 7-day token expiry), create a Desktop-app OAuth client, and drop credentials.json in this folder. Heads-up: Google rejects app names containing the word "Google".

  2. Connect the accounts you choose (repeat per account, any alias you like — only accounts you connect are ever visible):

    cd ~/multi-google-calendar-gmail-mcp
    uv run python server.py connect work
    uv run python server.py connect personal

    Changed your mind? uv run python server.py disconnect work deletes that account's key.

  3. Verify: uv run python server.py check

  4. Register with your MCP client — e.g. Claude Code:

    claude mcp add --scope user google -- uv run --directory ~/multi-google-calendar-gmail-mcp python server.py

    or in a JSON MCP config:

    {
      "mcpServers": {
        "google": {
          "command": "uv",
          "args": ["run", "--directory", "/Users/YOU/multi-google-calendar-gmail-mcp", "python", "server.py"]
        }
      }
    }

Tools

Area

Tools

Accounts

accounts_list, check

Gmail

gmail_search (full Gmail query syntax), gmail_read, gmail_labels, gmail_modify (batch label/archive/mark-read, ≤500 ids), gmail_draft, gmail_send

Calendar

calendar_list, calendar_events, calendar_create_event (with attendee invitations)

Test any tool from the command line:

uv run python server.py test gmail_search '{"query": "is:unread", "account": "all", "limit": 5}'

Scoping access (optional)

You already control access by choosing what to connect — but if you want a client to see only a subset of connected accounts (or to remove tools entirely), copy config.example.json to config.json:

{
  "accounts": ["work", "personal"],
  "disabled_tools": ["gmail_send"]
}

Accounts not listed become invisible to every tool; tools in disabled_tools are never even registered with the MCP client. Omit a key (or the whole file) to allow everything. check reports active scoping.

Safety notes

  • There is deliberately no delete/trash tool — the most destructive operation is archiving (removing from inbox), which is reversible.

  • gmail_send and attendee invitations send real email; MCP clients should confirm with the user first.

  • credentials.json and tokens/ are git-ignored. Treat the tokens/ folder like passwords — don't put it in cloud-synced directories.

Credits

Sibling project of apple-suite-mcp; the two split the work of giving an AI assistant a complete view of your accounts — locally-visible vs. API-native.

Say thanks

This project is free to use, no strings attached. If it's useful to you, a ⭐ on this repo or a shout-out to @travisthetrashpanda is always appreciated — and if you build something on top of it, a link back here helps others find it.

License

MIT

Available Tools

11 tools
accounts_listA

List connected Google accounts (alias -> email).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior3/5

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

No annotations are provided, so the description must carry the burden. It implies a read-only operation ('list'), but does not disclose any potential behavioral traits (e.g., no mention of caching, authentication, or output limitations). Given the simplicity, a 3 is adequate.

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

Conciseness5/5

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

The description is a single sentence with 6 words, front-loading the essential information. Every word is necessary and no waste.

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

Completeness5/5

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

For a tool with no parameters, no output schema, and a simple read purpose, the description is complete. It specifies what is returned (alias -> email mapping).

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?

There are zero parameters, and schema coverage is 100% (empty schema). The description adds no extra parameter meaning, which is acceptable as there is nothing to document. The baseline for 0 params is 4.

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

Purpose5/5

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

The description clearly states 'List connected Google accounts (alias -> email)' using a specific verb and resource, and the tool name 'accounts_list' matches this purpose. It distinguishes itself from sibling tools which are all calendar and Gmail related.

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?

No explicit use cases or alternatives are given, but the context of sibling tools (calendars, gmail) makes it obvious that this tool is for account listing. A slightly higher score would require explicit when-not guidance, which is unnecessary here.

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

calendar_create_eventA

Create an event, optionally inviting attendees by email (Google sends real invitations — confirm with the user first when inviting).

ParametersJSON Schema
NameRequiredDescriptionDefault
endYes
startYes
titleYes
accountYes
locationNo
attendeesNo
calendar_idNoprimary
descriptionNo
send_invitesNo

TDQS

A3.6/5.0
Behavior3/5

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

Discloses invitation behavior (Google sends real invites). No annotations exist, so description carries burden. Missing details on other behaviors (e.g., date format, defaults).

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

Conciseness4/5

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

Single sentence with front-loaded action. Concise but could be slightly more structured. No wasted words.

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

Completeness2/5

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

Lacks detail on required parameters (datetime format, account selection), no output schema info. Incomplete for a 9-parameter tool with no annotations.

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

Parameters2/5

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

With 0% schema description coverage, description only clarifies 'attendees' and 'send_invites' via 'optionally inviting'. No explanation for 7 other parameters (account, start, etc.).

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?

Clear verb 'Create' and resource 'event'. Distinguishes from sibling tools like calendar_events (read) and calendar_list (list calendars) by being the only creation tool.

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

Usage Guidelines4/5

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

Explicitly warns about real invitations, advising user confirmation. Provides context-sensitive guidance, though lacks explicit alternative conditions.

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

calendar_eventsA

List events between two ISO dates/datetimes across one or all accounts. calendar_id defaults to each account's primary calendar.

ParametersJSON Schema
NameRequiredDescriptionDefault
endYes
startYes
accountNoall
calendar_idNoprimary

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior2/5

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

No annotations provided; description lacks behavioral details such as pagination, rate limits, authorization, or handling of recurring events. Only mentions ISO date format. Inadequate for a listing tool without annotation safety net.

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

Conciseness5/5

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

Single sentence efficiently conveys core purpose and key details. No filler or redundancy.

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

Completeness4/5

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

Given output schema exists, description covers main behavior: date range, account scope, calendar default. Could mention sorting, limits, or filtering, but not essential for basic use.

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

Parameters2/5

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

Schema coverage 0%; description adds minimal meaning: only clarifies that calendar_id defaults to primary and that dates are ISO format. Other parameters (account, start, end) are not elaborated beyond their names and schema defaults.

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

Purpose5/5

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

Description clearly states 'List events' with specifics: between two ISO dates/datetimes, across one or all accounts, and calendar_id defaults to primary. Distinguishes from siblings like calendar_create_event (create) and calendar_list (list calendars).

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?

Implies usage for listing events but provides no explicit guidance on when to use vs alternatives, nor when not to use. Sibling names suggest distinct purposes but no explicit context.

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

calendar_listC

List calendars for one or all connected accounts.

ParametersJSON Schema
NameRequiredDescriptionDefault
accountNoall

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations, the description should disclose behavioral traits. It does not mention side effects, authentication, or output format. The presence of an output schema mitigates but does not replace description context.

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

Conciseness3/5

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

The description is a single front-loaded sentence with no waste. However, it is under-specified, sacrificing completeness for brevity.

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

Completeness2/5

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

Given the simple single-parameter schema and output schema, the description still lacks context on when to use this tool (e.g., to get calendar IDs for events), and does not explain the 'all' default behavior.

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

Parameters3/5

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

Description adds meaning by stating 'for one or all connected accounts', linking the 'account' parameter to accounts. However, it does not specify value format or how to specify a single account. Schema coverage is 0% so description is essential.

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 uses a specific verb (list) and resource (calendars), and distinguishes from siblings like calendar_events and calendar_create_event. However, it lacks title and could clarify that these are calendar objects, not events.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs alternatives like calendar_events or accounts_list. The agent is left to infer from sibling names.

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

checkA

Diagnose setup: credentials file, connected accounts, and whether each account's Gmail API actually responds.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It discloses that the tool checks credentials, accounts, and API responsiveness, which is sufficient for a diagnostic tool. However, it does not describe output format or behavior on failure, leaving minor ambiguity.

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, clear sentence with no extraneous words. It effectively conveys the tool's function without waste.

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

Completeness5/5

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

Given the tool has no parameters, no output schema, and a simple diagnostic function, the description is fully complete. It covers what the tool checks without needing additional detail.

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

Parameters4/5

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

The tool has zero parameters, and schema coverage is 100%. The description adds no parameter information, but none is needed. Baseline for 0 params is 4.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Diagnose setup: credentials file, connected accounts, and whether each account's Gmail API actually responds.' It uses a specific verb (diagnose) and resource (setup), and distinguishes itself from sibling tools that perform other actions like sending or reading emails.

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 implies the tool is for verifying setup before using other Gmail tools, but does not explicitly state when to use it vs. alternatives or include exclusions. The context makes it clear, but a more explicit guideline would improve it.

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

gmail_draftA

Create a draft (does NOT send). Safer default than gmail_send.

ParametersJSON Schema
NameRequiredDescriptionDefault
ccNo
toYes
bodyYes
accountYes
subjectYes

TDQS

A3.5/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. It discloses the key trait that the tool does not send, which is critical for safe usage. However, it omits other behavioral aspects such as authentication requirements, rate limits, or where drafts are stored, leaving gaps in transparency.

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 extremely concise—two short clauses that front-load the main purpose ('Create a draft') and add a critical safety note. Every word contributes value, with no wasted text.

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

Completeness2/5

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

Given the tool's low complexity (5 parameters, no output schema), the description is too minimal. It does not explain return values, side effects beyond not sending, or any post-creation behavior. A more complete description would mention what happens after draft creation (e.g., draft ID returned, stored in drafts folder).

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

Parameters1/5

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

Schema description coverage is 0%, and the description provides no additional meaning beyond the input schema. It does not explain any parameter, such as the required 'account', 'to', 'subject', or 'body', nor the optional 'cc'. The description fails to compensate for the lack of schema documentation.

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

Purpose5/5

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

The description clearly states the action ('Create a draft') and explicitly distinguishes it from the sibling tool 'gmail_send' by noting it does not send. This combination of specific verb and resource with sibling differentiation earns a top score.

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 by labeling it as the 'Safer default than gmail_send,' implying its use when avoiding immediate sending. However, it lacks explicit exclusions or alternative tools beyond gmail_send, which prevents a perfect score.

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

gmail_labelsC

List label names for one account.

ParametersJSON Schema
NameRequiredDescriptionDefault
accountYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description must disclose behavioral traits but only states the action. It does not mention authentication needs, rate limits, or what happens if the account is invalid.

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

Conciseness5/5

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

The description is a single concise sentence with no wasted words, front-loading the core purpose.

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 tool is simple with one parameter and an output schema, so the description suffices for basic understanding. However, it lacks context on error handling and parameter format, leaving gaps for complete invocation.

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

Parameters2/5

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

The schema has 0% description coverage; the only parameter 'account' is not explained in the description (e.g., format as email). The description adds no semantic value beyond the schema title.

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 verb 'list' and the resource 'label names for one account', distinguishing it from sibling tools like gmail_read or gmail_search.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives such as gmail_search or gmail_read. The description does not mention any context or exclusions.

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

gmail_modifyA

Batch-modify up to 500 messages in one account: add/remove labels (created automatically if new), archive (leave the inbox), mark read. Reversible — nothing is deleted.

ParametersJSON Schema
NameRequiredDescriptionDefault
accountYes
archiveNo
mark_readNo
add_labelsNo
message_idsYes
remove_labelsNo

TDQS

A4.2/5.0
Behavior4/5

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

No annotations are provided, so the description fully bears the transparency burden. It discloses reversibility ('nothing is deleted') and automatic label creation, which are key behavioral traits. Missing details on rate limits, auth scopes, or error handling for exceeding 500 messages.

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

Conciseness5/5

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

A single sentence that is front-loaded with the core action ('Batch-modify up to 500 messages') and efficiently lists operations. No wasted words.

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

Completeness4/5

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

Given 6 parameters, no output schema, and no annotations, the description covers the main actions and reversibility. It lacks details on return values, error cases, and parameter constraints (e.g., message_ids format). Overall sufficient for common use.

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?

With 0% schema description coverage, the description must compensate. It explains the effects of archive, mark_read, add_labels, remove_labels, but does not detail the format of message_ids or label strings. It adds some meaning beyond the schema's property titles but not comprehensively.

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

Purpose5/5

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

The description clearly states it batch-modifies messages with specific actions (add/remove labels, archive, mark read). It distinguishes from siblings like gmail_read (reading) and gmail_search (searching) by focusing on modification operations.

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 explicitly mentions 'batch-modify up to 500 messages' and lists the actions, implying use for bulk modifications. However, it does not provide explicit 'when to use vs when not' or compare to single-message operations.

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

gmail_readC

Read one message's full body by the id from gmail_search.

ParametersJSON Schema
NameRequiredDescriptionDefault
accountYes
max_charsNo
message_idYes

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are provided, so the description bears full burden. It claims to read the 'full body', but the input schema includes a max_chars parameter (default 20000) that truncates the content, contradicting 'full body'. This important behavioral trait is not disclosed.

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

Conciseness3/5

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

The description is a single concise sentence with no waste, but it sacrifices clarity for brevity. It could include essential details like the max_chars limitation without being verbose.

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

Completeness2/5

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

Given no output schema, 0% parameter coverage, and no annotations, the description is incomplete. It fails to mention the truncation behavior, output format, or any prerequisites. A read tool with these features requires more information to be fully usable.

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

Parameters1/5

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

Schema description coverage is 0%, so the description must add meaning. It only mentions 'id' (message_id), ignoring account and the critical max_chars parameter (which limits the body). No explanation of how parameters affect behavior.

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

Purpose4/5

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

The description clearly states the verb 'read' and the resource 'one message's full body', and it references the source ('by the id from gmail_search'), which distinguishes it from sibling tools like gmail_search (list) and gmail_send (send). However, it could be more precise about what 'full body' includes (e.g., attachments, headers).

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 explicit guidance on when to use this tool vs alternatives. It implicitly suggests use after gmail_search, but lacks when-not conditions or prerequisites. No mention of alternatives.

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

gmail_sendC

Send an email from one account. Always confirm with the user first.

ParametersJSON Schema
NameRequiredDescriptionDefault
ccNo
toYes
bodyYes
accountYes
subjectYes

TDQS

C2.7/5.0
Behavior3/5

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

With no annotations, the description adds the confirmation requirement but does not disclose other behavioral traits like permissions, rate limits, or side effects of sending. The confirmation directive is useful but insufficient for full transparency.

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 concise with two sentences, but the second sentence is a guideline rather than structural content. It is front-loaded but sacrifices completeness for brevity.

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

Completeness1/5

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

Given 5 parameters with 0% schema coverage and no output schema, the description is severely incomplete. It fails to explain required fields, account context, or body/cc/subject semantics.

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

Parameters1/5

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

Schema description coverage is 0%, and the description provides no additional meaning for any of the 5 parameters. The agent must rely solely on parameter names in the schema, which lack detail.

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 verb 'Send' and the resource 'email from one account', but does not differentiate from sibling tools like gmail_draft or gmail_modify. It is adequate but not distinctive.

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

Usage Guidelines2/5

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

The description includes a confirmation directive but fails to specify when to use this tool versus alternatives such as gmail_draft or gmail_modify. No context on prerequisites or excluded use cases.

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. 11 tool updatesv0.1.0
    • First observedaccounts_list
    • First observedcalendar_create_event
    • First observedcalendar_events
    • First observedcalendar_list
    • First observedcheck
    • First observedgmail_draft
    • First observedgmail_labels
    • First observedgmail_modify
    • First observedgmail_read
    • First observedgmail_search
    • First observedgmail_send

TDQS

B3.4/5.0

Scored across 11 tools

Disambiguation5/5

Each tool has a clear, distinct purpose. Calendar and Gmail tools are separated by prefixes (calendar_, gmail_), and actions like create, list, search, read, send are unique. No two tools overlap in functionality.

Naming Consistency4/5

Most tools follow a (prefix)_verb_noun pattern (e.g., calendar_create_event, gmail_search). However, 'accounts_list' and 'check' break the pattern by lacking a service prefix, creating a minor inconsistency.

Tool Count5/5

11 tools is well-scoped for a combined Calendar+Gmail server. It covers essential operations for both services without being excessive or too sparse.

Completeness3/5

Gmail side is fairly complete (search, read, send, draft, modify labels). Calendar side has significant gaps: it lacks update and delete for events, which would be needed for full lifecycle management.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers