MCP server for Fastmail — enables AI assistants to read, search, send, and manage emails, calendars, and contacts via the JMAP protocol
Server has 33 tools with consistent naming (verb_noun pattern) and descriptions present for all. Input schemas are visible and typed. However, descriptions are often generic (10-50 chars) and lack LLM-optimized guidance on WHEN to use each tool. Parameter descriptions exist but are minimal. Output schemas are not documented. Error handling is absent from tool definitions. No tool annotations (readOnlyHint/destructiveHint) despite clear risk levels. Sampling tool (#32) is a deprecated pattern (server-initiated sampling). Overall: solid foundation but lacks depth in description quality and error guidance expected of production tools.
Add a flag/label to one or more emails (e.g. starred, important, junk)
Create a new calendar event. Use list_calendars first to get calendar IDs.
Create a new contact in the Fastmail address book
Create a new mailbox (folder) in the Fastmail account
Delete a calendar event
Delete a contact from the address book
Delete one or more emails permanently
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk levels declared. Tools like delete_mailbox, delete_emails, delete_contact are marked DESTRUCTIVE but lack schema annotations to guide agent behavior.
Output schemas not documented. Tool definitions show input schemas but no description of what fields are returned. LLMs cannot plan downstream calls or extract required data without knowing response structure.
Descriptions are generic and lack LLM-optimized guidance. Most descriptions are 30-80 chars and do not explain WHEN to use the tool vs similar ones (e.g., search_emails vs get_email, list_calendars vs get_calendar_events). Baseline for A+ tools is 50-200 chars with clear selection criteria.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 53 | <=2025-11-25 | v2 |
Delete a mailbox (folder) from the Fastmail account
Create a draft email without sending it. Can be edited and sent later.
Get the full details of a specific calendar event by its ID
Get calendar events within a date range. Optionally filter by calendar ID or search text.
Get full details of a specific contact by their ID
Get diagnostic information about the MCP server connection and Fastmail API status
Get the full details of a specific email by its ID, including body, attachments, and headers
Download an email attachment by email ID and attachment name. Returns the file content as base64.
Get details of a specific email identity by ID
Get details of a specific mailbox by ID, including email and thread counts
Get all emails in a conversation thread by thread ID
List all address books (contact groups) in the Fastmail account
List all calendars in the Fastmail account with their names, colors, and visibility status
List all email identities (sender addresses) configured in the Fastmail account
List all mailboxes (folders) in the Fastmail account with their names, unread counts, and hierarchy
Mark one or more emails as read
Mark one or more emails as unread
Move one or more emails to a different mailbox
Remove a flag/label from one or more emails
Rename an existing mailbox
Request an LLM completion from the client (sampling capability). Used internally for AI-assisted operations.
Search contacts by name, email, or other criteria. Returns a summary list of matching contacts.
Search emails by subject, sender, recipient, date range, or mailbox. Returns a summary list of matching emails.
Send an email via Fastmail. Supports plain text and HTML bodies, attachments, and multiple recipients.
Update an existing calendar event
Update an existing contact
sample_completion tool (#32) implements deprecated server-initiated sampling pattern. Per MCP spec 2026-07-28, sampling is removed. Integrate directly with LLM provider API instead of exposing as a tool.
No error handling guidance in tool definitions. Tools lack descriptions of failure modes, recovery steps, or actionable error messages. E.g., delete_emails should document what happens if an email ID is invalid or already deleted.