Email MCP server for Codex and Claude with IMAP, SMTP, Apple Mail, Microsoft, and Mailtrap
Mail MCP has 3 tools with clear verb-noun naming (list_accounts, mail_query, mail_mutate) and documented descriptions. However, critical gaps exist: mail_query and mail_mutate accept a generic 'input' object with no schema definition visible for operation-specific parameters. The 'input' field is described only as 'Operation-specific input parameters', LLMs cannot validate what fields each operation requires. Parameter descriptions are minimal. Error handling and recovery guidance are absent from tool definitions. The server lacks output schema documentation, making it impossible for LLMs to plan downstream calls. Tool composition is reasonable (separate read/write), but the lack of per-operation schema definitions violates the constrained-input pattern.
List configured mail accounts, backends, and capabilities. Call this before mail_query or mail_mutate.
Write mail through IMAP, Apple Mail, Microsoft, or Mailtrap. Choose an operation and pass its fields in input. Provider operations use apple.*, microsoft.*, or mailtrap.*. Requires confirmation unless --confirm flag is set.
Read mail through IMAP, Apple Mail, Microsoft, or Mailtrap. Choose an operation and pass its fields in input. Provider operations use apple.*, microsoft.*, or mailtrap.*. Read mail://agent-guide for input shapes.
mail_query and mail_mutate accept a generic 'input' object with no visible schema for operation-specific parameters. LLMs cannot determine what fields each operation (e.g., listMessages, sendMessage) requires.
No output schema documented for any tool. LLMs cannot plan downstream calls or extract required fields (e.g., does list_accounts return account IDs? What fields?). Violates response-shaper pattern.
Tool descriptions lack WHEN-to-use guidance and prerequisites. mail_query description mentions 'Read mail://agent-guide' but this is not a standard MCP resource reference. Descriptions are 60-80 chars, below the 194-char baseline for production tools.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 59 | 2026-07-28+ | v2 |
No error handling or recovery guidance in tool definitions. If a mail operation fails, LLMs have no guidance on whether to retry, ask the user, or try an alternative operation.
mail_mutate requires accountId but mail_query makes it optional for some operations. This inconsistency is not documented in parameter descriptions, risking silent misuse.