Gmail MCP Server
Provides tools for searching, reading, sending, and organizing emails, managing labels, extracting addresses, and handling attachments through the Gmail API.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Gmail MCP Serverfind emails from my boss about meeting"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
⚡ Quick Start
# One-command setup — auto-configures your AI client
npx gmail-mcp-server setupThat's it. The setup wizard will:
Check your Google OAuth credentials
Let you choose your AI client (Claude Desktop, Claude Code, Cursor, Windsurf)
Auto-write the config file
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 setupdetects 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), andget_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 with Gmail query syntax ( |
Read |
| Full email content — body, headers, attachments |
| All messages in a thread | |
Compose |
| Send a new email |
| Reply (or reply-all) keeping the thread | |
| Forward with optional note | |
| Save a draft (optionally in a thread) | |
Organize |
| Add/remove labels, mark read/unread |
| Bulk modify up to 1000 emails | |
| Move to trash | |
| Restore from trash | |
| Bulk trash | |
| Mark as spam | |
| Search + bulk action (archive, label, etc.) with dry-run | |
Labels |
| List all labels with IDs |
| Create new label (supports nesting) | |
| Delete user-created label | |
Extract |
| Extract unique addresses from search results |
| Filter, sort, reformat email data | |
Profile |
| Your email address, message/thread counts |
| Most-contacted addresses from sent mail | |
Attachments |
| 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
Open the Google Cloud Console.
Create a New Project: Click the project dropdown (top left) → "New Project" → Name it
Gmail MCP→ "Create".Enable Gmail API: Search for "Gmail API" in the search bar → Click it → Click Enable.
2. Configure OAuth Consent Screen
Go to APIs & Services → OAuth consent screen.
Select User Type: "External" (or "Internal" if you have a Google Workspace) → Click Create.
App Information: Fill in "App name" (e.g.,
Gmail MCP) and "User support email".Developer Contact: Fill in your email address.
Click Save and Continue until you reach the Summary.
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
Go to APIs & Services → Credentials.
Click + CREATE CREDENTIALS → Select OAuth client ID.
Application type: Select Desktop app.
Name: Give it a name (e.g.,
Gmail MCP Client).Click Create.
Download JSON: In the "OAuth 2.0 Client IDs" list, click the download icon (↓) for your new client.
Rename & Move: Save this file as
credentials.jsonin 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 setupThe 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:
Run the Doctor:
npx gmail-mcp-server doctorwill diagnose common problems with your credentials, tokens, and system.Missing
credentials.json: Ensure you've downloaded the file from Google Cloud Console and it's named exactlycredentials.jsonin your current directory.Invalid Grant / Expired Token: If the server can't connect, try running
npx gmail-mcp-server authto reset your OAuth tokens.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.json— never committed (in.gitignore)Tokens stored in
~/.gmail-mcp/token.json— outside the project, auto-refreshedOAuth scope:
gmail.modify(read + modify, no permanent delete or admin)All data stays local — no external servers, no telemetry
🌍 Environment Variables
Variable | Default | Description |
|
| Path to your OAuth credentials file |
|
| 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 toolsadvanced_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.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Gmail search query (e.g. 'is:unread older_than:30d label:newsletters') | |
| maxResults | No | Max emails to process | |
| action | No | Bulk action to apply to all matched emails | none |
| labelId | No | Label ID required for applyLabel / removeLabel actions | |
| dryRun | No | If true, only list matching emails without applying the action |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| ids | Yes | List of Gmail message IDs | |
| addLabelIds | No | Label IDs to add | |
| removeLabelIds | No | Label IDs to remove |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| ids | Yes | List of Gmail message IDs to trash |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Recipient(s) | |
| subject | Yes | Email subject | |
| body | Yes | Email body | |
| cc | No | CC recipients | |
| bcc | No | BCC recipients | |
| isHtml | No | Set true if body is HTML | |
| threadId | No | Thread ID to attach draft reply to |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Label name (use / for nesting, e.g. 'Work/Invoices') | |
| messageListVisibility | No | Whether to show in message list | show |
| labelListVisibility | No | Whether to show in label list | labelShow |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| labelId | Yes | Label ID to delete (get IDs from list_labels) |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Gmail search query to find messages | |
| maxMessages | No | Maximum messages to scan | |
| fields | No | Which header fields to extract addresses from |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| emails | Yes | Array of email objects to format | |
| fields | No | Fields to include in output (omit to include all) | |
| filterBy | No | Filter emails by a field value | |
| sortBy | No | Sort emails by a field | |
| outputFormat | No | Output format | json |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Gmail message ID to forward | |
| to | Yes | Forward recipient(s) | |
| note | No | Optional note to prepend above the forwarded message | |
| cc | No | CC recipients | |
| isHtml | No | Set true if note is HTML |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| messageId | Yes | Gmail message ID that contains the attachment | |
| attachmentId | Yes | Attachment ID from the get_email response |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Gmail message ID | |
| preferHtml | No | Return HTML body instead of plain text when available |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| maxSent | No | Number of recent sent emails to scan |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| threadId | Yes | Gmail thread ID | |
| preferHtml | No | Return HTML body instead of plain text |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| ids | Yes | Gmail message ID(s) to mark as spam |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Gmail message ID | |
| addLabelIds | No | Label IDs to add (e.g. 'STARRED', 'IMPORTANT', or custom label ID) | |
| removeLabelIds | No | Label IDs to remove (e.g. 'UNREAD', 'INBOX') |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Gmail message ID to reply to | |
| body | Yes | Reply body (plain text or HTML) | |
| replyAll | No | Reply to all recipients (To + CC) | |
| isHtml | No | Set true if body is HTML | |
| cc | No | Additional CC recipients |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Gmail search query | |
| maxResults | No | Maximum number of results | |
| pageToken | No | Token for next page of results |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Recipient email address(es) | |
| subject | Yes | Email subject | |
| body | Yes | Email body (plain text or HTML) | |
| cc | No | CC recipient(s) | |
| bcc | No | BCC recipient(s) | |
| isHtml | No | Set true if body is HTML |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Gmail message ID |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Gmail message ID |
TDQS
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.
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.
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.
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.
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.
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.
22 tool updates
v2.0.0- First observed
advanced_filter - First observed
batch_modify_emails - First observed
batch_trash_emails - First observed
create_draft - First observed
create_label - First observed
delete_label - First observed
extract_addresses - First observed
format_emails - First observed
forward_email - First observed
get_attachment - First observed
get_email - First observed
get_frequent_contacts - First observed
get_profile - First observed
get_thread - First observed
list_labels - First observed
mark_spam - First observed
modify_email - First observed
reply_email - First observed
search_emails - First observed
send_email - First observed
trash_email - First observed
untrash_email
TDQS
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.
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.
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.
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
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
Email infrastructure for AI agents — send, receive, search, and reply to email over MCP.
Email inboxes for AI agents: send, receive, reply, search, and manage threaded email over MCP.
Hosted email MCP for AI agents with inboxes, send/receive, memory, recovery, and credits.
Hosted email for AI agents: create inboxes, send, receive, and reply over MCP with scoped API keys
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables users to manage Gmail accounts using AI agent-assisted operations via an MCP protocol, supporting email search, reading, deletion, and sending with a voice-powered interface.4412Apache 2.0
- AlicenseNot gradedqualityDmaintenanceEnables interaction with Gmail through the MCP protocol, supporting sending, reading, searching, replying, forwarding, managing drafts and labels, and saving attachments.153MIT
- FlicenseNot gradedqualityDmaintenanceEnables AI agents to interact with Gmail through a standardized MCP server interface, allowing for natural language email management and automation.-
- FlicenseNot gradedqualityCmaintenanceFull Gmail control for any MCP-compatible AI agent. Exposes ~40 tools for reading, composing, labeling, filtering, threading, and account management.-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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