Gmail MCP server with auto authentication support for sending, reading, searching, and managing emails
Gmail MCP server has 7 tools with complete input schemas and basic descriptions. However, descriptions are generic and lack actionable context for LLM selection. Parameter descriptions are present but minimal (10-30 chars). No output schemas documented. Error handling is absent, no recovery guidance or categorization. Tool naming is clear (verb_noun pattern), but composition issues exist: send_email and draft_email are near-duplicates; modify_email is vague about what 'modify' means. No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk levels. Missing pagination for search_emails despite maxResults parameter. No guidance on parameter constraints (e.g., valid label IDs, email format validation).
Permanently deletes an email
Draft a new email
Retrieves all available Gmail labels
Modifies email labels (move to different folders)
Retrieves the content of a specific email
Searches for emails using Gmail search syntax
Sends a new email
No output schemas documented. LLMs cannot plan downstream calls or extract required fields (e.g., messageId from search_emails for read_email). Violates pattern:tool requirement.
send_email and draft_email are near-duplicates with identical schemas. Violates pattern:tool (each tool should do exactly one thing). LLM cannot distinguish when to use each.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk levels (delete_email=DESTRUCTIVE, send_email=WRITE). Agents cannot reason about side effects or retry safety.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 48 | 2026-07-28+ | v2 |
search_emails lacks pagination guidance. maxResults parameter present but no cursor/offset, total count, or next_page field documented. Large result sets will blow context window.
modify_email description is vague ('Modifies email labels'). Does it replace all labels or add/remove? Parameter 'labelIds' lacks format guidance (are these Gmail label IDs? How to obtain them?). Violates pattern:tool-description.