MCP server for Fastmail email operations using JMAP. Supports email management, masked emails, calendars, and contacts.
Fastmail MCP has 12 tools with consistent naming (verb_noun pattern) and basic descriptions. However, critical gaps undermine quality: (1) Parameter descriptions are minimal or absent, most lack detail on format, constraints, or valid values. (2) Output schemas are not documented anywhere; LLMs cannot predict response structure. (3) Error handling is absent, no recovery guidance, no categorization of retryable vs fatal errors. (4) No input validation rules stated (e.g., email format, array bounds, enum constraints). (5) Destructive tools (delete_emails, delete_masked_email) lack confirmation/dry-run patterns. Tool names are clear (fastmail_get_account, fastmail_send_email), but parameter quality is well below production baseline (94% of A+ tools have full param descriptions; this server ~20%).
Create a new masked email address
Delete emails permanently
Delete a masked email address
Get account information and session details
Get full email details by IDs
List all mailboxes (folders) in the account
List all masked email addresses
Output schemas completely undocumented. No tool returns a documented response structure. LLMs cannot predict what fields to expect or plan downstream tool calls. This violates pattern:tool and pattern:response-shaper.
Parameter descriptions are minimal or missing constraints. 'filter' in fastmail_query_emails says 'JMAP filter object' but does not explain valid keys, format, or examples. 'flags' in fastmail_set_email_flags lacks detail on valid flag names (isRead, isFlagged, etc.). LLMs cannot infer valid values without explicit constraints or enums.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 51 | 2026-07-28+ | v2 |
Move emails to a different mailbox
Query emails with filters and return matching email IDs
Send an email or save as draft
Set flags on emails (read, starred, etc.)
Update a masked email address settings
Destructive tools (fastmail_delete_emails, fastmail_delete_masked_email) lack confirmation or dry-run patterns. No recovery guidance in error responses. Agents can permanently delete data without safeguards. Violates pattern:confirmation-request.
No error handling guidance. Tools do not document what errors are retryable, user-fixable, or fatal. No recovery hints (e.g., 'If email not found, try fastmail_query_emails first'). Violates pattern:recovery-guide and pattern:error-classification.
No pagination or result limits documented. fastmail_list_mailboxes and fastmail_list_masked_emails do not specify max results or pagination support. Large result sets could exhaust context window. Violates pattern:paginated-result.