Multi-account IMAP/SMTP email MCP server for reading, sending, moving, deleting, and managing emails with support for drafts and folder operations
17 tools with complete schemas and descriptions. Naming follows verb_noun convention (list_, get_, search_, send_, etc.). Descriptions are adequate (50-150 chars typical) but lack LLM-optimized guidance on WHEN to use each tool vs. similar ones. Parameters are typed and described, but many lack constraints (enums, ranges). Output schemas are not documented in the source. Error handling is present but generic. No tool annotations (readOnlyHint/destructiveHint) despite clear risk stratification (READ_ONLY, WRITE, DESTRUCTIVE). Composition is sound, tools are single-responsibility and chainable via message IDs.
Copy a message to a different folder
Create a draft email message
Create a new folder in an email account
Delete a draft email message
Delete a message, optionally permanently
Download a specific attachment from a message
Get list of attachments for a message
Retrieve a specific message by ID
Missing tool annotations (readOnlyHint, destructiveHint, idempotentHint). Tools are risk-stratified (READ_ONLY, WRITE, DESTRUCTIVE) but not exposed to LLM via MCP annotations. LLMs cannot infer safety properties and may misuse destructive tools.
Output schemas not documented. Tool descriptions state what they return (e.g., 'List messages') but do not specify the structure of returned objects (fields, types, pagination). LLMs cannot plan downstream calls without knowing response shape.
Parameter constraints missing. 'limit' is clamped 1-500 in description but not enforced via JSON Schema minValue/maxValue. 'folder' accepts free-form strings instead of enum of valid folders. LLMs may pass invalid values.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 52 | <=2025-11-25 | v2 |
List all folders in an email account
List messages in a folder with optional filtering and pagination
List unread messages in a folder
Mark a message as read or unread
Move a message to a different folder
Search messages across folders with multiple filter criteria
Send a draft email message
Send an email message
Set or unset a flag on a message (e.g., starred, important)
Descriptions lack WHEN-to-use guidance. 'List messages in a folder' does not explain when to use list_messages vs list_unread vs search_messages. LLMs must guess which tool fits the user intent.
No confirmation or dry-run for destructive operations. delete_message and delete_draft lack a confirmation step. Agents may accidentally delete messages without user approval.