Skip to main content
Glama
neutral-Stage

Gmail MCP Server


⚡ Quick Start

# One-command setup — auto-configures your AI client
npx gmail-mcp-server setup

That's it. The setup wizard will:

  1. Check your Google OAuth credentials

  2. Let you choose your AI client (Claude Desktop, Claude Code, Cursor, Windsurf)

  3. Auto-write the config file

  4. Run the OAuth authentication flow


Related MCP server: Gmail MCP Server

✨ Why choose this MCP?

While Google provides workspace integrations and generic email readers exist, this MCP is explicitly built for AI Agents acting autonomously:

  • Zero-Config Setup: npx gmail-mcp-server setup detects your OS and AI client, automatically editing your local configuration JSON. No manual path mapping required.

  • Built for AI Agents: Includes tools like advanced_filter (search + bulk actions with LLM-friendly dry-runs), batch_modify_emails (modify 1000 emails at once), and get_frequent_contacts (turn an inbox into a CRM context).

  • 100% Local & Private: Bring-your-own-credentials. Tokens remain strictly on your machine. No proxy servers, no telemetry, and no third-party email routing.

  • Modular & Extensible: Clean, deeply typed domain-driven structure (e.g., src/tools/compose.ts, src/tools/search.ts) making it extremely easy for developers to fork and extend.


🔧 Tools (20 tools)

Category

Tool

Description

Search

search_emails

Search with Gmail query syntax (from:, is:unread, subject:, etc.)

Read

get_email

Full email content — body, headers, attachments

get_thread

All messages in a thread

Compose

send_email

Send a new email

reply_email

Reply (or reply-all) keeping the thread

forward_email

Forward with optional note

create_draft

Save a draft (optionally in a thread)

Organize

modify_email

Add/remove labels, mark read/unread

batch_modify_emails

Bulk modify up to 1000 emails

trash_email

Move to trash

untrash_email

Restore from trash

batch_trash_emails

Bulk trash

mark_spam

Mark as spam

advanced_filter

Search + bulk action (archive, label, etc.) with dry-run

Labels

list_labels

List all labels with IDs

create_label

Create new label (supports nesting)

delete_label

Delete user-created label

Extract

extract_addresses

Extract unique addresses from search results

format_emails

Filter, sort, reformat email data

Profile

get_profile

Your email address, message/thread counts

get_frequent_contacts

Most-contacted addresses from sent mail

Attachments

get_attachment

Download attachment content


🚀 Step-by-Step Setup Guide

Follow these steps to get your Gmail MCP server running in less than 5 minutes.

1. Create Google Cloud Project & Enable API

  1. Open the Google Cloud Console.

  2. Create a New Project: Click the project dropdown (top left) → "New Project" → Name it Gmail MCP → "Create".

  3. Enable Gmail API: Search for "Gmail API" in the search bar → Click it → Click Enable.

  1. Go to APIs & ServicesOAuth consent screen.

  2. Select User Type: "External" (or "Internal" if you have a Google Workspace) → Click Create.

  3. App Information: Fill in "App name" (e.g., Gmail MCP) and "User support email".

  4. Developer Contact: Fill in your email address.

  5. Click Save and Continue until you reach the Summary.

  6. Add Test Users: Go back to the "OAuth consent screen" tab → Under "Test users" → Click + ADD USERS → Enter your Gmail address → Click Save.

3. Generate Credentials

  1. Go to APIs & ServicesCredentials.

  2. Click + CREATE CREDENTIALS → Select OAuth client ID.

  3. Application type: Select Desktop app.

  4. Name: Give it a name (e.g., Gmail MCP Client).

  5. Click Create.

  6. Download JSON: In the "OAuth 2.0 Client IDs" list, click the download icon (↓) for your new client.

  7. Rename & Move: Save this file as credentials.json in your project folder (or keep it ready for the setup wizard).

4. Run the Setup Wizard

Open your terminal and run:

npx gmail-mcp-server setup

The wizard will guide you through:

  • Finding your credentials.json.

  • Selecting your AI client (Claude, Cursor, etc.).

  • Authorizing the app via your browser.


🖥️ Client Configuration

Claude Desktop

npx gmail-mcp-server setup   # Select "Claude Desktop"

Or manually add to ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "gmail": {
      "command": "npx",
      "args": ["-y", "gmail-mcp-server"]
    }
  }
}

Claude Code

npx gmail-mcp-server setup   # Select "Claude Code"

Or add to ~/.claude/mcp.json:

{
  "mcpServers": {
    "gmail": {
      "command": "npx",
      "args": ["-y", "gmail-mcp-server"]
    }
  }
}

Cursor

npx gmail-mcp-server setup   # Select "Cursor"

Or add to .cursor/mcp.json:

{
  "mcpServers": {
    "gmail": {
      "command": "npx",
      "args": ["-y", "gmail-mcp-server"]
    }
  }
}

Windsurf

npx gmail-mcp-server setup   # Select "Windsurf"

🛠️ CLI Commands

npx gmail-mcp-server setup      # Interactive setup wizard
npx gmail-mcp-server auth       # Run OAuth flow
npx gmail-mcp-server serve      # Start MCP server (default)
npx gmail-mcp-server doctor     # Diagnose issues
npx gmail-mcp-server --help     # Show help
npx gmail-mcp-server --version  # Show version

🩺 Troubleshooting

If you run into issues, try the following:

  1. Run the Doctor: npx gmail-mcp-server doctor will diagnose common problems with your credentials, tokens, and system.

  2. Missing credentials.json: Ensure you've downloaded the file from Google Cloud Console and it's named exactly credentials.json in your current directory.

  3. Invalid Grant / Expired Token: If the server can't connect, try running npx gmail-mcp-server auth to reset your OAuth tokens.

  4. Port 3000 Busy: The auth flow uses port 3000. If it's busy, the flow might fail. Ensure no other apps are using port 3000 during setup.


💬 Usage Examples

Once configured, ask your AI agent:

  • "Search my emails for unread messages from GitHub"

  • "Get the full content of email ID 18abc123"

  • "Show me the whole thread for this conversation"

  • "Reply to that email saying thanks"

  • "Forward the invoice to accounting@company.com"

  • "Create a draft reply for that message"

  • "Mark all newsletters from last month as read"

  • "Extract all email addresses from my last 50 emails"

  • "Who do I email most frequently?"

  • "Download the PDF attachment from that email"


🔒 Security

  • credentials.jsonnever committed (in .gitignore)

  • Tokens stored in ~/.gmail-mcp/token.json — outside the project, auto-refreshed

  • OAuth scope: gmail.modify (read + modify, no permanent delete or admin)

  • All data stays local — no external servers, no telemetry


🌍 Environment Variables

Variable

Default

Description

GMAIL_CREDENTIALS_PATH

./credentials.json

Path to your OAuth credentials file

GMAIL_MCP_DIR

process.cwd()

Base directory for credentials lookup


🤝 Contributing

We welcome contributions! See CONTRIBUTING.md for guidelines.

git clone https://github.com/neutral-Stage/gmail-mcp-server.git
cd gmail-mcp-server
npm install
npm run build

📄 License

MIT — use it however you want.

Available Tools

22 tools
advanced_filterA

Search emails with multiple criteria and optionally apply a bulk action to all matching results. Useful for inbox cleanup, bulk labeling, or archiving by rule.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesGmail search query (e.g. 'is:unread older_than:30d label:newsletters')
maxResultsNoMax emails to process
actionNoBulk action to apply to all matched emailsnone
labelIdNoLabel ID required for applyLabel / removeLabel actions
dryRunNoIf true, only list matching emails without applying the action

TDQS

A3.5/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 mentions optional bulk action and a dryRun parameter (via schema) but doesn't explain action effects, reversibility, or limits. The description adds minimal behavioral context beyond 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?

Two sentences, front-loaded with purpose and use cases. No unnecessary words or repetition.

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?

Given the complexity (5 parameters, enum, conditional field), no output schema, and no annotations, the description is adequate but lacks details on return values and conditional dependencies. It doesn't explain what happens when action is applyLabel without labelId.

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

Parameters3/5

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

Schema description coverage is 100%, so baseline is 3. The description does not add extra meaning beyond what the schema already provides for each parameter.

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 searches emails with multiple criteria and optionally applies a bulk action. It distinguishes from siblings like search_emails (which likely lacks bulk actions) and batch_modify_emails (which might not include search).

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 suggests use cases like inbox cleanup and bulk labeling, providing context but no explicit exclusions or comparisons to alternatives. It doesn't clarify when to use this versus batch_modify_emails or search_emails.

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

batch_modify_emailsA

Apply the same label modifications to multiple emails at once (up to 1000 IDs).

ParametersJSON Schema
NameRequiredDescriptionDefault
idsYesList of Gmail message IDs
addLabelIdsNoLabel IDs to add
removeLabelIdsNoLabel IDs to remove

TDQS

A3.8/5.0
Behavior3/5

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

No annotations exist, so the description carries full burden. It mentions the batch limit (1000 IDs), but does not disclose error handling, atomicity, partial success, or other behavioral traits. Adequate but not rich.

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, front-loaded, no wasted words. Every word earns its place.

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?

No output schema. The description omits return value, side effects, and failure behavior. For a batch operation with 3 parameters, it lacks completeness regarding what happens after execution.

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 parameters are documented. The description adds value by stating 'same label modifications' and the batch size limit, but this is minimal beyond the schema. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the verb 'apply' and resource 'label modifications to multiple emails', with a specific scope 'up to 1000 IDs'. It distinguishes from sibling tools like modify_email (single) and batch_trash_emails (different action).

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 batch usage and the limit, but does not explicitly state when to use this tool versus alternatives like modify_email for single emails or other batch operations. However, the context from sibling tools makes the distinction clear.

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

batch_trash_emailsA

Move multiple emails to Trash at once by adding the TRASH label and removing INBOX.

ParametersJSON Schema
NameRequiredDescriptionDefault
idsYesList of Gmail message IDs to trash

TDQS

A3.6/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 disclose behavioral traits. It explains the core action (label manipulation), but lacks details on side effects (e.g., reversibility, impact on other labels), permissions needed, or error handling.

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, efficient, front-loaded with the purpose. No redundant information.

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 simple tool with one parameter and no output schema, the description covers the essential action. Minor gap: no mention of return value or atomicity, but overall adequate.

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

Parameters3/5

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

Schema coverage is 100% and the schema describes the 'ids' parameter well. The description adds no further meaning beyond the schema, so baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the action ('Move multiple emails to Trash') and the mechanism ('adding the TRASH label and removing INBOX'). It is specific and distinguishes from siblings like 'trash_email' (singular) and 'batch_modify_emails' (generic).

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 versus alternatives such as 'trash_email' for single emails or 'batch_modify_emails' for other modifications. Missing exclusions or prerequisites.

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

create_draftA

Create a draft email (not sent). Optionally attach it to an existing thread for a draft reply.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesRecipient(s)
subjectYesEmail subject
bodyYesEmail body
ccNoCC recipients
bccNoBCC recipients
isHtmlNoSet true if body is HTML
threadIdNoThread ID to attach draft reply to

TDQS

A3.9/5.0
Behavior3/5

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

Discloses that email is not sent and optional threading. No annotations present, so description carries full burden; lacks details on storage, permissions, or lifecycle of the draft.

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

Conciseness5/5

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

Two concise sentences with no extraneous information. Front-loaded with key action and state (not sent).

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?

Covers creation and threading but lacks explanation of how other parameters like cc, bcc, isHtml are used. No output schema leads to missing return value details.

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 baseline applies. Description adds minimal meaning beyond schema, only hinting at threadId usage for draft reply. No format or behavior specifics for parameters.

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 it creates a draft email that is not sent, and optionally attaches to a thread. This distinguishes it from send_email and reply_email among siblings.

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?

Implies use when a draft is needed, not sent. Mentions thread attachment option but lacks explicit comparison to reply_email or send_email for deciding between draft or direct send.

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

create_labelB

Create a new Gmail label (folder).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesLabel name (use / for nesting, e.g. 'Work/Invoices')
messageListVisibilityNoWhether to show in message listshow
labelListVisibilityNoWhether to show in label listlabelShow

TDQS

B3.2/5.0
Behavior2/5

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

No annotations provided; description lacks disclosure of behavioral traits such as duplicate label handling, naming conventions beyond schema, 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.

Conciseness4/5

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

Single concise sentence; efficient but could benefit from a slightly fuller description of usage context.

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?

Simple tool but missing information about behavior on duplicate label creation, label limits, or output. Adequate for minimal viability.

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 parameter descriptions; the description adds minimal value ('folder') but not beyond the schema.

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

Purpose5/5

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

The description clearly states 'Create a new Gmail label (folder)' using a specific verb and resource, and distinguishes from siblings like 'delete_label' and 'list_labels'.

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 create a label versus using alternatives like filters, or any prerequisites or restrictions.

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

delete_labelA

Delete a user-created Gmail label. System labels (INBOX, SENT, etc.) cannot be deleted.

ParametersJSON Schema
NameRequiredDescriptionDefault
labelIdYesLabel ID to delete (get IDs from list_labels)

TDQS

A4.3/5.0
Behavior3/5

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

With no annotations, the description carries full burden. It mentions the constraint on system labels but does not disclose consequences like irreversible deletion or removal from messages. Minimal behavioral context.

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

Conciseness5/5

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

Two sentences with no redundancy. Every word adds value, front-loading the main purpose and critical constraint.

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 simple delete tool with one parameter and no output schema, the description covers what it does, constraints, and parameter source. No gaps.

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

Parameters4/5

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

Schema coverage is 100%, baseline 3. The description adds value by specifying how to obtain the labelId ('get IDs from list_labels'), which aids correct invocation.

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 ('Delete a user-created Gmail label') and distinguishes it from system labels, which cannot be deleted. This differentiates it from sibling tools like 'create_label' or 'list_labels'.

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 states when to use (delete user-created labels) and when not (system labels). It implies that for system labels, an alternative action is not available, providing clear context.

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

extract_addressesB

Extract unique email addresses from messages matching a Gmail query. Useful for building contact lists.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesGmail search query to find messages
maxMessagesNoMaximum messages to scan
fieldsNoWhich header fields to extract addresses from

TDQS

B3.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 carries full burden. It implies a non-destructive read operation by saying 'extract', but does not explicitly disclose behavioral traits such as required permissions, side effects, or rate limits. The mention of 'unique' is helpful but insufficient.

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

Conciseness5/5

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

Two sentences, no waste. The key action is front-loaded. Every part earns its place.

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?

Tool has 3 parameters and no output schema. Description does not mention what is returned (e.g., array of strings), performance considerations, or whether results are deduplicated. For a tool without output schema, more context is needed.

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?

Input schema covers all parameters with descriptions (100% coverage). The description adds no new parameter semantics beyond reinforcing the query parameter's role. Baseline 3 is appropriate since schema does the heavy lifting.

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 verb 'extract', the resource 'unique email addresses', and the scope 'from messages matching a Gmail query'. It distinguishes from siblings like search_emails (which returns messages) and get_frequent_contacts (which likely returns contacts, not extracted from query). The specific phrase 'building contact lists' adds context.

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 provides a use case hint ('useful for building contact lists') but does not explicitly state when to use this tool versus alternatives like get_frequent_contacts or search_emails. No when-not-to-use guidance or alternative tool names are mentioned.

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

format_emailsA

Re-format and filter a list of email objects (previously fetched) into a custom structure. Supports field selection, filtering by field value, and sorting.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailsYesArray of email objects to format
fieldsNoFields to include in output (omit to include all)
filterByNoFilter emails by a field value
sortByNoSort emails by a field
outputFormatNoOutput formatjson

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It states the tool supports field selection, filtering, and sorting, but does not disclose whether the operation is read-only or if it modifies the original data. For a non-destructive transform, additional clarity on side effects would improve 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 two sentences long, front-loaded with the main purpose, and contains no unnecessary words. Every sentence adds value.

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 tool has 5 parameters (including nested objects) and no output schema, the description is fairly complete. It explains the core operations (field selection, filtering, sorting) but could be enhanced by briefly describing the output format options or clarifying that original emails remain unchanged.

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% (all parameters have descriptions). The description adds minimal extra meaning beyond the schema, such as 'custom structure' but no specific details. The baseline of 3 is appropriate.

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 specifies the verb ('Re-format and filter'), the resource ('email objects'), and the context ('previously fetched'). It distinguishes this tool from sibling tools that perform different actions (e.g., search, modify, send).

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 mentions 'previously fetched' implying use after fetching, but does not explicitly state when to avoid using this tool or list alternatives. It relies on contextual inference from sibling names.

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

forward_emailB

Forward an existing email to new recipients, optionally adding a note above the original message.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesGmail message ID to forward
toYesForward recipient(s)
noteNoOptional note to prepend above the forwarded message
ccNoCC recipients
isHtmlNoSet true if note is HTML

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 full burden but only mentions the optional note. It does not disclose whether the original email is modified, permissions needed, or other behavioral traits.

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

Conciseness4/5

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

The description is a single clear sentence, but could be slightly more structured (e.g., mentioning required fields first). It is appropriately sized.

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?

No output schema, no behavioral details beyond forwarding. The description is too minimal given the tool's complexity (5 params, 2 required) and no annotations.

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 schema already documents all parameters. The description adds minimal value beyond restating the 'note' parameter.

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 (forward) and resource (existing email), and differentiates from sibling tools like send_email and reply_email by specifying 'forward' and 'new recipients'.

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 versus alternatives like reply_email or send_email. No mention of prerequisites or limitations.

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

get_attachmentA

Download an email attachment by message ID and attachment ID. Returns base64-encoded content with metadata. Use get_email first to find attachment IDs.

ParametersJSON Schema
NameRequiredDescriptionDefault
messageIdYesGmail message ID that contains the attachment
attachmentIdYesAttachment ID from the get_email response

TDQS

A3.7/5.0
Behavior2/5

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

No annotations provided, so description must bear full burden. Mentions return format (base64-encoded with metadata) but omits permissions, rate limits, or size constraints.

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

Conciseness5/5

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

Two sentences, front-loaded with action and return type, followed by a concise usage instruction. No wasted words.

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

Completeness3/5

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

Lacks output schema so description should detail return values; mentions base64 content and metadata but not specifics (e.g., metadata fields, error cases). Adequate but not rich.

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 covers both parameters with clear descriptions; description adds minimal extra meaning beyond what schema provides (e.g., 'by message ID and attachment ID').

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 specific verb 'Download' and resource 'email attachment', clearly distinguishes from siblings like get_email by focusing on attachment retrieval.

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 instructs to use get_email first to find attachment IDs, providing clear context for correct usage.

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

get_emailB

Get the full content of an email by its ID, including body text and attachment info.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesGmail message ID
preferHtmlNoReturn HTML body instead of plain text when available

TDQS

B3.3/5.0
Behavior2/5

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

No annotations provided, so description carries full burden. It mentions return content but does not disclose side effects (e.g., mark as read), permissions required, error handling for missing emails, or rate limits.

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

Conciseness5/5

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

Single sentence with clear verb and resource. Front-loaded and concise with no extraneous information.

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

Completeness3/5

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

No output schema. Description lacks details on return format (headers, sender, date) and behavior for edge cases (large attachments, missing IDs). Adequate for a simple read tool but incomplete.

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 baseline is 3. Description adds 'including body text and attachment info' but does not clarify what 'attachment info' entails (e.g., names, sizes). Minimal added value.

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 verb (Get), resource (email content), and scope (by ID, including body and attachment info). It distinguishes from siblings like get_attachment and get_thread.

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 over alternatives (e.g., get_attachment for specific attachments, get_thread for thread context). Lacks when-not-to-use or prerequisites.

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

get_frequent_contactsB

Analyze recent sent emails to find your most frequently contacted email addresses. No extra API scope needed.

ParametersJSON Schema
NameRequiredDescriptionDefault
maxSentNoNumber of recent sent emails to scan

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden. It only mentions no extra API scope, but does not disclose if it reads/modifies data, performance implications, or authentication requirements. The tool name suggests read-only, but description does not confirm.

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

Conciseness5/5

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

Two concise sentences (19 words) with no redundant information. Front-loaded with the main 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?

For a simple tool with one optional parameter and no output schema, the description covers the main purpose but omits output format (e.g., list of emails, counts) and any side effects.

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% (maxSent has description). The description does not add additional meaning beyond what the schema already provides, but it is adequate.

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 analyzes recent sent emails to find frequently contacted email addresses, with a specific verb 'Analyze' and resource 'sent emails'. It distinguishes from sibling tools by its unique frequency analysis purpose.

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. 'No extra API scope needed' is a hint but does not exclude other tools like search_emails or extract_addresses. Missing when-not-to-use and alternative suggestions.

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

get_profileA

Get the authenticated user's Gmail profile: email address, total messages, total threads, and history ID.

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 must disclose behavior. It accurately describes a read-only operation returning specific profile data. It does not mention authentication or rate limits, but for a simple get, it is sufficient.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no wasted words. It efficiently conveys purpose and output.

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 zero parameters and no output schema, the description completely covers what the tool does and returns. No gaps remain.

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?

No parameters exist, and schema coverage is 100%. The description adds meaning by listing the returned fields. Baseline 4 is appropriate.

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 retrieves the authenticated user's Gmail profile, listing specific fields (email address, total messages, total threads, history ID). It distinguishes itself from sibling tools that deal with emails, drafts, labels, etc.

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 when to use: when needing profile info of the authenticated user. No explicit alternatives, but given sibling tools are all about email manipulation, context is clear. A slight step from 5 due to no explicit exclusions.

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

get_threadB

Get all messages in an email thread by thread ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
threadIdYesGmail thread ID
preferHtmlNoReturn HTML body instead of plain text

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations, the description carries full burden. It states reading behavior but omits details like potential large data volume, permission requirements, or output format. The minimal description leaves behavioral uncertainty.

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 with key action and identifying parameter. No extraneous text. Efficiently front-loaded.

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?

No output schema, so description should outline return values. It fails to specify the format or structure of the returned messages, such as whether they are full email objects or summaries. The description is incomplete for a tool retrieving a list of messages.

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 descriptions for both parameters. The description adds no additional semantic meaning beyond restating 'by thread ID'. It could clarify the effect of preferHtml but does not.

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 (get), resource (messages in a thread), and identifier (thread ID). It distinguishes from sibling tools like get_email (single email) and search_emails (search queries).

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 implies usage when the thread ID is known but lacks explicit guidance on when to use this tool versus alternatives like get_email or search_emails. No exclusions or comparisons provided.

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

list_labelsA

List all Gmail labels (system and user-created), including their IDs needed for modify operations.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/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 full burden. It accurately describes the read-only nature of listing labels and adds context about IDs for modifications. It does not mention permissions or rate limits, but for a list operation, the transparency is sufficient.

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, front-loading the purpose. 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.

Completeness4/5

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

The description explains the return includes IDs, which is key context for using the output. However, it does not specify other fields like label name or type. Given no output schema, slightly more detail would improve completeness.

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 no parameters, so baseline score 4 applies. The description does not need to add parameter information since there are none.

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 lists all Gmail labels, both system and user-created, and specifies that it includes IDs for modify operations. This is a specific verb+resource, and it distinguishes from sibling tools like create_label or delete_label.

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 usage for obtaining label IDs needed for modify operations, but does not explicitly state when not to use it or provide alternatives. However, the context is clear enough given the sibling tools.

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

mark_spamB

Mark one or more emails as spam (moves to Spam folder).

ParametersJSON Schema
NameRequiredDescriptionDefault
idsYesGmail message ID(s) to mark as spam

TDQS

B3.3/5.0
Behavior2/5

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

The description mentions the effect (moves to Spam folder) but fails to disclose any other behavioral traits such as whether it affects spam training, if it's reversible, or any authorization requirements. With no annotations, this is insufficient.

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, no wasted words. Front-loaded with the core action and effect.

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?

Adequate for a simple tool with one parameter, but lacks usage guidelines and deeper behavioral context. The description is incomplete when considering sibling tools that perform similar actions.

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 the 'ids' parameter already described well. The description adds no additional semantic meaning beyond what's in the schema, so baseline 3 is appropriate.

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 (mark as spam) and the resource (emails), and adds the detail that it moves to the Spam folder. This distinguishes it from sibling tools like batch_trash_emails.

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 like trash or modify. The description does not provide any when-to-use or when-not-to-use context.

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

modify_emailB

Modify a single email: add/remove labels, mark as read/unread, archive, or move to trash.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesGmail message ID
addLabelIdsNoLabel IDs to add (e.g. 'STARRED', 'IMPORTANT', or custom label ID)
removeLabelIdsNoLabel IDs to remove (e.g. 'UNREAD', 'INBOX')

TDQS

B3.4/5.0
Behavior3/5

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

The description implies a write operation and lists actions, but does not disclose side effects (e.g., reversibility, notification behavior) or explain that marking as read/unread and archiving are achieved via label manipulation. With no annotations, the description carries the burden but only partially addresses it.

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 that is front-loaded with the action and immediately conveys the tool's purpose. Every phrase earns its place with no unnecessary 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?

The description covers the main operations for a single email modification tool. It lacks explanation of how operations map to label IDs but remains adequate given the schema's clarity. No output schema is provided, but that is acceptable for a mutation tool.

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

Parameters3/5

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

Schema coverage is 100% and parameters are well-described with examples. The description adds value by enumerating high-level actions (mark as read/unread, archive, trash) but does not explicitly map them to label IDs, so it provides moderate additional meaning.

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

Purpose4/5

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

The description clearly states the verb 'modify' and resource 'single email', listing specific operations like add/remove labels, mark as read/unread, archive, or move to trash. It distinguishes from batch tools and specific operations like trash_email, but does not explicitly differentiate from all siblings.

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 versus alternatives. It does not mention that for moving to trash, a dedicated tool exists, or when to prefer batch_modify_emails. The agent receives no usage context.

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

reply_emailA

Reply to an existing email. Automatically sets In-Reply-To and References headers and keeps the thread.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesGmail message ID to reply to
bodyYesReply body (plain text or HTML)
replyAllNoReply to all recipients (To + CC)
isHtmlNoSet true if body is HTML
ccNoAdditional CC recipients

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It discloses automatic header management and thread continuity, which are key behavioral traits. Does not mention sending behavior or rate limits, but provides sufficient transparency for a reply operation.

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

Conciseness5/5

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

Two sentences front-load purpose and add detail. No wasted words. Very concise and well-structured.

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 5 parameters and no output schema, the description covers essential behavior (reply, headers, threading). Could mention that it sends the email and not just drafts, but overall adequate.

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 schema fully documents parameters. The description adds context about automatic header setting related to the 'id' parameter but does not significantly enhance understanding of individual parameters beyond the schema.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Reply to an existing email.' It also specifies automatic header setting ('In-Reply-To and References') and thread preservation, distinguishing it from siblings like 'send_email' (new email) and 'forward_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 implies use for replying to existing emails but does not explicitly exclude scenarios or mention alternatives. However, the context is clear enough for an agent to infer when to use this tool.

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

search_emailsA

Search Gmail using Gmail query syntax (e.g. 'from:alice@example.com', 'is:unread', 'subject:invoice'). Returns message summaries.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesGmail search query
maxResultsNoMaximum number of results
pageTokenNoToken for next page of results

TDQS

A3.5/5.0
Behavior2/5

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

No annotations provided, so description must cover behavior. Only states it returns summaries; does not mention pagination, max results, or rate limits, which are important for an agent.

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 with examples, no wasted words. Efficient and front-loaded.

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?

Adequate for basic use but lacks details on result structure, pagination, and output format. With no output schema, more guidance would be beneficial.

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 descriptions for all parameters. Description adds query syntax examples, but does not significantly extend schema information.

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 it searches Gmail using Gmail query syntax and returns message summaries, with specific examples. Differentiates from siblings like get_email or advanced_filter.

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?

Provides query examples but no explicit when-to-use or alternatives. Sibling tools like advanced_filter exist but no guidance on selection.

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

send_emailC

Compose and send a new email.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesRecipient email address(es)
subjectYesEmail subject
bodyYesEmail body (plain text or HTML)
ccNoCC recipient(s)
bccNoBCC recipient(s)
isHtmlNoSet true if body is HTML

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 must disclose behavioral traits. It only says 'send' but does not mention that sending is irreversible, requires authentication, or may have rate limits. This is a significant gap for a mutation tool.

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 extremely concise at six words, but it may be under-specified for a tool with multiple optional parameters. It qualifies as adequately sized for a simple action but lacks structural details like usage examples.

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?

The description fails to cover context such as return values, side effects, or prerequisites. Given the absence of an output schema and annotations, the description should provide more completeness to guide the agent.

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 parameters. The tool description adds no extra meaning beyond what is in the schema, warranting the baseline score.

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 composes and sends a new email. However, it does not distinguish from sibling tools like create_draft (which only composes) or reply_email (which sends a reply), missing the opportunity to clarify 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 on when to use this tool versus alternatives such as create_draft or reply_email. There are no exclusions or context cues to help the agent choose correctly.

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

trash_emailA

Move an email to Trash (recoverable for 30 days).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesGmail message ID

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations provided, the description carries full burden. It discloses the key behavior of 30-day recoverability, which is useful. However, it does not mention authorization requirements (e.g., OAuth scopes), side effects (e.g., labels removed), or that the email is still accessible via search. The 30-day note adds value, but additional context would improve 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 a single sentence of 10 words, front-loaded with the core action. No filler, no redundancy. Every word contributes to understanding. Perfect conciseness.

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 tool's simplicity (one required parameter, no output schema, no nested objects), the description provides sufficient context: action, resource, and recovery window. It does not need to explain return values. Sibling tools cover batch and reverse operations. Completeness is high for this scope.

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 only parameter is 'id' with schema description 'Gmail message ID'. Since schema coverage is 100%, the description adds no extra meaning beyond the schema. The tool description does not elaborate on the format or source of the ID. Baseline of 3 is appropriate.

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 'Move an email to Trash (recoverable for 30 days)' clearly states the verb (move), resource (email), and destination (Trash). It also specifies the recovery period, which distinguishes it from permanent deletion. The tool name 'trash_email' aligns with siblings like 'batch_trash_emails' and 'untrash_email', so purpose is unambiguous.

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

Usage Guidelines3/5

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

The description implies usage: you have a single email to move to trash. However, it does not explicitly state when to use this tool over alternatives like 'batch_trash_emails' (for multiple emails) or 'untrash_email' (to reverse). No context about prerequisites or permissions is provided, so guidance is only implied.

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

untrash_emailB

Restore an email from Trash back to the inbox.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesGmail message ID

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations, the description must fully disclose behavior. It only states the action, but does not mention side effects (e.g., overwriting inbox order), required permissions, or behavior if the email is not in Trash. Provides minimal 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?

A single, concise sentence with no wasted words. It efficiently captures the tool's purpose, earning 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?

For a simple tool with one parameter and no output schema, the description is minimally complete. However, it could include more context about the result or error states, such as what happens if the email is not in Trash.

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 a clear parameter description ('Gmail message ID'). The tool description adds no extra meaning beyond the schema, so baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the action 'Restore an email from Trash back to the inbox.' It uses a specific verb ('restore') and resource ('email'), and distinctly differentiates from sibling tools like trash_email.

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 versus alternatives. For example, it does not mention that the email must already be in Trash, or that modify_email could be used instead. Lacks context about when not to use.

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. Dates show when Glama detected each change.

  1. 22 tool updatesv2.0.0
    • First observedadvanced_filter
    • First observedbatch_modify_emails
    • First observedbatch_trash_emails
    • First observedcreate_draft
    • First observedcreate_label
    • First observeddelete_label
    • First observedextract_addresses
    • First observedformat_emails
    • First observedforward_email
    • First observedget_attachment
    • First observedget_email
    • First observedget_frequent_contacts
    • First observedget_profile
    • First observedget_thread
    • First observedlist_labels
    • First observedmark_spam
    • First observedmodify_email
    • First observedreply_email
    • First observedsearch_emails
    • First observedsend_email
    • First observedtrash_email
    • First observeduntrash_email

TDQS

A3.7/5.0
Disambiguation5/5

Each tool has a distinct purpose: email CRUD, label management, batch operations, search with bulk actions, etc. Even similar tools like send_email vs create_draft vs reply_email are clearly differentiated by their descriptions.

Naming Consistency4/5

Most tools follow a verb_noun pattern in snake_case (e.g., create_draft, send_email). However, 'advanced_filter' breaks the pattern as an adjective_noun, and 'batch_modify_emails' uses a prefix, but overall the naming is largely consistent.

Tool Count4/5

With 22 tools, the server covers a comprehensive set of Gmail operations. While slightly above the typical 3-15 range, each tool appears justified and contributes to the complete email management workflow.

Completeness5/5

The tool set covers the full lifecycle of emails: create, send, receive, reply, forward, trash, untrash, label management, batch operations, attachment handling, search with advanced filtering, and contacts. No obvious gaps.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables interaction with Gmail through the MCP protocol, supporting sending, reading, searching, replying, forwarding, managing drafts and labels, and saving attachments.
    15
    3
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    Full Gmail control for any MCP-compatible AI agent. Exposes ~40 tools for reading, composing, labeling, filtering, threading, and account management.
    -

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/neutral-Stage/gmail-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server