Provider-agnostic MCP server for email (IMAP/SMTP)
Server has 14 tools with complete schemas and descriptions. Naming follows verb_noun convention (list_, get_, send_, mark_, delete_, move_, add_, remove_, search_, validate_). Descriptions are present and substantive (avg ~120 chars), exceeding the 10-char minimum. However, several parameter descriptions lack specificity about constraints, formats, and error conditions. Output schemas are not documented. Error handling is minimal, no recovery guidance or actionable error messages visible in code. Security is strong (credentials via env/config, no secrets in params). Composition is good, tools are single-responsibility and chainable. Overall: solid foundation with gaps in error guidance and output documentation.
Add a flag (label) to one or more messages.
Delete one or more messages by moving them to the Trash folder.
Create a draft email without sending it. Useful for review before sending with confirmation code.
Retrieve the full content of a specific message including headers, body, and attachments.
List all configured email accounts with their settings and validation status.
List all mailboxes (folders) in an email account.
List messages in a mailbox with optional filtering by sender, subject, or date range.
Output schemas not documented. Tools return results but LLMs cannot plan downstream calls without knowing field names and types. E.g., list_messages returns message objects but structure is not declared.
Error handling lacks recovery guidance. Code validates inputs but returns generic errors without actionable next steps. E.g., invalid account name should suggest 'Call list_accounts() to see available accounts.'
Parameter constraints not fully specified in descriptions. E.g., 'limit' in list_messages has no min/max bounds; 'since'/'before' accept ISO 8601 but format not stated; 'flag' in add_flag accepts custom labels but no enum or pattern guidance.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 55 | 2026-07-28+ | v2 |
Mark one or more messages as read.
Mark one or more messages as unread.
Move one or more messages to a different mailbox.
Remove a flag (label) from one or more messages.
Search for messages using IMAP search criteria.
Send an email message with optional attachments and calendar invites. Requires confirmation code if configured.
Validate the email server configuration and report any errors or warnings.
Destructive operations (delete_message) lack confirmation or dry-run support. Agents can delete messages without review. Consider adding a 'confirm' parameter or separate 'preview_delete' tool.
send_email requires confirmation_code parameter when send_code is configured, but description does not explain when/why or how to obtain the code. LLMs will not know to ask the user for it.