Multi-account email MCP server for SMTP sending, IMAP search, replies, attachments, and inbox organization
This MCP server demonstrates solid foundational quality with well-structured tool definitions, clear descriptions, and comprehensive parameter schemas. All 6 tools are explicitly registered with names, descriptions, and detailed input schemas. Descriptions are LLM-optimized (45-280 chars, averaging ~140), well above the 10-char minimum. All parameters have type definitions and descriptions. The server follows verb_noun naming convention (list, search, send, modify, respond). Key strengths: rich parameter constraints (enums, min/max ranges), dependency hints (account_name defaults to server's default), and multi-step tool composition patterns (accounts_list → emails_find → emails_modify). Weaknesses: no visible output schemas in source code (only input schemas shown), missing error handling guidance/recovery paths, and no documented constraints on operation categories (read vs write risks noted but not in descriptions). Tools use consistent naming and parameter conventions across the suite, enabling clean composition.
List every configured email account and show which account is the default. Use this before other tools when multiple SMTP/IMAP accounts are configured.
Reply to or forward an existing email. Use this to continue email conversations, respond to messages, or forward information to others.
Send a new email with HTML support and file attachments. Use this to send messages, project updates, or any new email conversation.
Search for emails in your inbox with flexible filters. Optionally get full email content and attachments. Use this to find specific emails, check for unread messages, or browse your inbox.
Change email states like read/unread, flagged, or move between folders. Use this to organize your inbox, mark emails as read, archive messages, or flag important emails.
No output schemas documented in source. Tools return results but expected response structure (fields, types) is not visible. LLMs cannot plan downstream tool calls without knowing what fields to extract.
Error handling guidance missing. Tools document no recovery paths (e.g., 'if email not found, try emails_find with broader query'). Error responses will not guide LLM recovery.
Mutually exclusive parameters not documented. emails_modify has mark_read and mark_unread which conflict; emails_modify also has flag and unflag. Descriptions do not state 'use only one' or behavior if both passed.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 66 | 2026-07-28+ | v2 |
List all available email folders/labels in your account. Use this to see your folder structure and organize emails.
No confirmation/dry-run pattern for destructive operations. email_send, email_respond, and emails_modify (move_to_folder=Trash) perform irreversible actions without offering a pre-execution check.
Pagination not visible for emails_find. The tool accepts limit (1-100, default 20) but no cursor, offset, or next_token field is shown in schema. Large result sets may not be pageable.
Response field naming may not match parameter naming. If emails_find returns 'sender' but emails_modify requires 'from_email', chaining is broken. No visible output schema to verify consistency.