Model Context Protocol server for reading and sending emails via IMAP and SMTP with OAuth 2.0 authentication
Strong schema definitions with comprehensive input validation and clear parameter constraints. Tool naming follows verb_noun convention consistently. Descriptions are present and actionable (avg ~150 chars). However, output schemas are not explicitly documented in the source, and some parameter descriptions lack actionable guidance on constraints. Error handling is present but recovery guidance is minimal. 19 tools with well-structured inputs; most critical gap is lack of documented output structure for agents to plan downstream calls.
Copy an email message from one folder to another
Create a new mailbox folder
Permanently delete an email message
Delete a mailbox folder
Permanently delete all messages in the trash folder
Download and retrieve the content of a specific email attachment
Get the raw email headers for a message
Output schemas not documented in source code. Agents cannot plan downstream tool calls or extract required fields (e.g., does read_email return attachment IDs for get_email_attachment?). Dataclasses exist (EmailSummary, ReadEmailResult) but are not exposed in tool registration.
Destructive tools (delete_folder, delete_email_permanent, empty_trash) lack confirmation/dry-run support. Agents can permanently delete mailboxes or messages without a safety gate. No recovery guidance in error responses.
Folder operation descriptions (create_folder, rename_folder, delete_folder) are generic (75 chars). Missing guidance on folder naming rules, special folder handling (Trash, Sent, Drafts), or error cases (folder exists, folder not found).
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | A | 82 | <=2025-11-25 | v2 |
Get recent email summaries from a mailbox folder with pagination
Get the authenticated sender's email address and display name from OAuth credentials
List email summaries from a mailbox folder with pagination support
List all mailbox folders available in the IMAP account
Mark an email message as read or unread
Move an email message from one folder to another
Move an email message to the trash folder
Read the full content of a single email message including subject, sender, recipients, date, body text, and attachment summaries
Rename an existing mailbox folder
Search emails using structured IMAP SEARCH criteria with support for text, date, flag, header, size, UID, and keyword searches with logical operators (and, or, not)
Search emails using a simple text query with optional filters for folder, sender, recipient, subject, date range, and read status
Send an email message via SMTP with optional attachments and reply-to address
Error handling present but lacks recovery guidance. Code shows InvalidInputError, NotFoundError, PermissionDisabledError but tool descriptions do not explain what to do on failure (e.g., 'If folder not found, call list_folders() first').
search_emails criteria parameter is complex (recursive schema with 9 variants) but lacks examples in description. LLMs may struggle to construct valid criteria objects without concrete examples of text search vs. header search vs. logical operators.