MCP server that gives Claude Desktop full access to your email through Mozilla Thunderbird. 12 high-level tools: search, read, compose, reply, attachments, folders.
15 tools with complete schemas and descriptions. Naming follows verb_noun pattern consistently (email_search, email_compose, email_mark_read). Descriptions are substantive (avg ~150 chars) and explain WHEN to use each tool. Parameters are typed and described. However, output schemas are NOT documented, LLMs cannot see what fields to expect from responses. Error handling guidance is absent. No tool annotations (readOnlyHint/destructiveHint) despite clear risk levels. Composition is strong: tools chain well (search → read → reply). Defaults are safe (mode='draft' prevents accidental sends). Missing: per-parameter constraints (e.g., limit bounds), recovery guidance in error cases, and output schema documentation.
List all configured email accounts.
Compose a new email. Default mode is 'draft' (saved to Drafts folder, not sent). Use mode='send' to send immediately, mode='open' to open in Thunderbird's compose window for human review. ALWAYS prefer draft mode unless the human explicitly asked to send.
Delete one or more messages. Moves to Trash folder (or permanently deletes if already in Trash).
Flag (star) or unflag one or more messages.
List all folders for an account, or all accounts if no accountId specified.
Forward an email message. Default mode is 'draft'. Automatically includes the original message.
List messages in a specific folder. Use email_folders first to get folder IDs. Supports pagination and sorting.
Output schemas not documented. LLMs cannot see what fields email_search, email_read, email_thread return. Forces agents to guess structure and risks parsing failures.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Tools are marked with Risk levels (READ_ONLY, WRITE, DESTRUCTIVE) in comments but not exposed to MCP clients. Agents cannot distinguish safe reads from destructive deletes.
No error recovery guidance. Descriptions lack 'If X fails, try Y' hints. email_search has no guidance on handling zero results or malformed queries.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 60 | 2026-07-28+ | v2 |
Mark one or more messages as read or unread.
Move one or more messages to a different folder.
Read a specific email message. Modes: 'default' (headers + text body), 'headers' (cheapest), 'full' (with HTML), 'raw' (RFC822). Use maxBody to truncate long messages.
Reply to an email message. Default mode is 'draft'. Automatically includes the original message in the reply thread.
Search for emails across all accounts. Supports filters by sender, recipient, subject, date range, attachments, tags. Excludes junk by default. Use --fields to minimize token cost.
Get an overview of all email accounts: total accounts, unread counts, message totals. Optionally filter to a single account or include per-folder breakdown.
Add or remove tags (labels) on one or more messages.
Get the full conversation thread for a message — all related messages sorted chronologically, resolved across accounts via References/In-Reply-To headers.
Parameter constraints incomplete. email_search limit defaults to 25 but no min/max documented. email_read maxBody has no bounds. Unbounded numeric params risk API abuse.
Destructive operations (email_delete) lack confirmation pattern. No dry-run or confirmation step before permanent deletion. Agents can accidentally delete messages.