MCP server for multiple Gmail accounts. Per-account permission tiers, two-phase confirmation on every send, and prompt-injection defenses on untrusted mail content.
Strong foundation with clear naming conventions (verb_noun pattern), comprehensive parameter descriptions, and explicit input schemas across all 21 tools. Two-phase confirmation pattern is well-designed for safety. However, output schemas are not documented in the source code, and descriptions lack LLM-optimized length guidance. Tool descriptions average ~80 chars (below the 194-char baseline for A+ tools), missing context on WHEN to use each tool and dependencies between preview/confirm pairs. Error handling is present but recovery guidance is minimal.
Confirm and apply labels (second phase of two-phase label operation)
Preview label changes before applying (first phase of two-phase label operation)
Set up Google OAuth client credentials for the server
Begin OAuth flow to connect a new Gmail account. Opens browser for user authorization.
Check status of an in-progress account connection
Confirm and create a draft (second phase of two-phase draft creation)
Preview a draft before creating (first phase of two-phase draft creation)
Output schemas not documented in source code. No visible return type definitions for any tool. LLMs cannot plan downstream calls or extract required fields without knowing response structure.
gmail_setup_status has no visible input schema. Tool definition inferred from description only. Cannot verify parameter types or constraints.
Tool descriptions are brief (avg 70 chars) and lack WHEN/WHY context. Missing dependency hints between preview and confirm tools. LLMs may not understand that gmail_send_preview must precede gmail_send_confirm.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 53 | 2026-07-28+ | v2 |
Retrieve the full content of a specific message
Retrieve all messages in a thread
List all connected Gmail accounts with their tiers and metadata
List all labels in a Gmail account
Confirm and remove labels (second phase of two-phase label operation)
Preview label removal before applying (first phase of two-phase label operation)
Search for messages in a Gmail account using Gmail search syntax
Confirm and send a message (second phase of two-phase send)
Preview a message before sending (first phase of two-phase send)
Explain what setup steps remain before the server is fully operational
Confirm and trash messages (second phase of two-phase trash operation)
Preview message deletion before applying (first phase of two-phase trash operation)
Confirm and update a draft (second phase of two-phase draft update)
Preview draft updates before applying (first phase of two-phase draft update)
No visible error handling or recovery guidance in tool definitions. LLMs cannot self-correct on invalid account names, malformed queries, or permission failures.
confirmToken parameter in confirm tools lacks format/length constraints. No guidance on token lifetime, reusability, or what happens if token is invalid or expired.