A read-and-draft-only MCP server for Proton Mail, via Proton Mail Bridge and himalaya. Cannot send, cannot delete.
Proton Mail MCP has well-structured tool definitions with consistent naming (verb_noun pattern: mailbox_list, envelope_search, message_read, flag_add, etc.). All 12 tools have descriptions and input schemas with typed parameters. However, descriptions are terse (10-50 chars for most tools), parameter descriptions lack actionable detail (e.g., 'flag to add' without enum constraint), and output schemas are not documented. Error handling is present but generic. The server correctly avoids exposing secrets and implements input validation via himalaya subprocess isolation. STDIO-only transport caps protocol readiness at 50.
Download an attachment from a message.
List attachments of a message.
List the envelopes of a folder (subject, sender, flags). If the answer contains "soft": true, the mailbox is currently unreachable and the list is incomplete. That is NOT "no mail".
Search for envelopes matching a query in a folder.
Add a flag to a message.
Remove a flag from a message.
List all folders of the mailbox.
Flag parameter lacks enum constraint. 'flag_add' and 'flag_remove' accept a free-form string 'flag' with description 'flag to add (seen, answered, flagged)' but no enum schema. LLMs may hallucinate invalid flag values like 'starred' or 'important'.
Output schemas not documented. Tools return JSON via himalaya subprocess, but the response structure (fields, types, pagination) is not declared in tool definitions. LLMs cannot plan downstream calls or extract required IDs without trial-and-error.
Parameter descriptions are generic and lack actionable constraints. 'mailbox' param described as 'folder, e.g. inbox, Drafts' (example in description, not enum). 'pageSize' has min/max but no guidance on typical values. 'body' param in message_compose/forward/reply has no length limit or format guidance.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 55 | <=2025-11-25 | v2 |
Compose a new message draft.
Create a forward draft of a message.
Move a message to a folder.
Read a message by ID.
Create a reply draft to a message. Only creates a draft if the original message was addressed to the account's own address.
Tool descriptions are too brief (10-50 chars). 'Read a message by ID' and 'List attachments of a message' lack context on when to use them vs similar tools, what data they return, or prerequisites. Baseline for A+ tools is 50-200 chars.
No error recovery guidance. Error responses from himalaya are redacted and returned as plain text. LLMs receive 'himalaya exited with code 1' but no actionable next step (retry? check config? ask user?).