Multi-service email platform supporting SMTP/IMAP, SendGrid, Mailgun, Resend, local testing, and webhook integrations (FastMCP 3.2, Prefab UI)
Email-MCP demonstrates moderate definition quality with significant strengths and notable gaps. Tools have descriptions and most parameters are typed, but several critical tools lack input schema documentation, error handling guidance is minimal, and parameter descriptions often lack specificity about constraints. The server uses FastMCP 3.2+ with HTTP transport. Tool definitions show inconsistent schema rigor: send_email and check_inbox have detailed parameter documentation with types and descriptions, but configure_service shows no visible input schema in the source excerpt, and several tools (suggest_email_subject, email_agentic_assist) rely on LLM sampling which indicates stateful patterns being phased out per spec 2026-07-28. Error handling is present but generic, tools return success/failure responses without actionable recovery guidance. Naming is consistently verb-driven (send_, check_, list_, configure_), which is positive. Descriptions average 100-200 chars and cover the basic purpose, but lack dependency hints and specific constraint documentation. Parameter descriptions exist but often lack enum constraints (service parameter accepts freeform strings with examples rather than a strict enum). The sanitization layer (sanitize_text, wrap_untrusted_dict) shows security awareness for agent input, but no evidence of permission gates or scope declarations per pattern:scope-declaration.
Check inbox via specified email service. Retrieves emails from the specified service and folder. Supports IMAP-based services, local testing services with web APIs, and service-specific inbox checking.
Configure additional email services. Allows dynamic configuration of new email services or updating existing service configurations at runtime.
Agentic email assistance tool using LLM sampling. Provides multi-step assistance for complex email tasks using Claude or fallback Anthropic model.
Get help and usage information for email tools. Provides guidance on using Email-MCP tools and services.
Check service configuration and connectivity. Returns the status of configured email services including their type, configuration, and current connectivity state.
List available email services. Returns a comprehensive list of all configured and available email services with their names and types.
configure_service has no visible input schema in source code. Critical tool for runtime service configuration lacks parameter documentation, violating pattern:tool requirement for complete tool definitions.
service parameter across multiple tools (send_email, check_inbox, email_status) accepts freeform strings without strict enum constraints. Description lists examples ('default', 'sendgrid', 'mailgun', 'resend', 'mailhog', 'slack', 'discord') but no formal enum prevents LLM hallucination of invalid service names like 'service_custom_xyz'.
suggest_email_subject and email_agentic_assist both leverage LLM sampling, a deprecated pattern in MCP spec 2026-07-28. These tools should integrate directly with the LLM provider API or be refactored to use Multi Round-Trip Requests instead of relying on server-side sampling.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 60 | <=2025-11-25 | v2 |
Get latest emails from a mailing list. Retrieves the most recent emails from a specified mailing list.
Get catalog of available mailing lists. Returns metadata about configured mailing lists that can be queried and managed.
Send an email via specified email service. Sends an email using the specified email service. Supports SMTP, API-based services, local testing services, and webhook integrations. Automatically detects service capabilities and uses the appropriate sending method.
Suggest email subject lines using LLM sampling. Generates creative and relevant subject line suggestions based on email context and content.
Error handling across all tools is minimal. Tool descriptions mention success states but provide no error classification (retryable vs user-fixable vs fatal) and no recovery guidance per pattern:recovery-guide. Example: send_email may fail due to invalid recipient, misconfigured service, or network timeout, LLM receives no guidance on what to do next.
Output schemas not documented. Tools like list_services and mailing_lists_catalog have no visible description of what fields they return. LLMs cannot plan downstream tool calls without knowing if responses include service_id, service_type, connection_status, or other chaining IDs per pattern:response-shaper.
No visible tool annotations (readonly, destructive, idempotent hints) in registration despite FastMCP 3.2+ supporting them. Tool definitions show _READ_ONLY, _MUTATING, _DESTRUCTIVE constants declared but tool metadata at registration time is not visible. Spec 2026-07-28 requires per-tool annotations to be present in tool definitions.
Mailing list tools (mailing_lists_catalog, mailing_list_latest) lack clear dependency documentation. LLM may not understand that mailing_lists_catalog must be called first to discover valid list_id values for mailing_list_latest, leading to wasted calls per pattern:tool-description.
No scope declarations visible (e.g., 'read:email', 'write:email', 'admin:config'). Tools lack explicit permission requirements, making least-privilege agent configuration impossible and audit trails unclear per pattern:scope-declaration.