MCP server for email compatibility analysis: preview, analyze, fix, diff and capture screenshots across 21 email clients, from HTML, MJML, Maizzle or React Email sources, via Claude or any MCP-compatible tool.
Two well-defined tools with strong schemas, detailed descriptions, and proper annotations. Both tools have comprehensive input schemas with typed parameters and clear descriptions. Tool names are action-verb based and specific. However, output schemas are not explicitly documented in the visible code, and error handling recovery guidance is minimal. The tools handle complex domain concepts (email compatibility, CSS analysis) with appropriate parameter constraints (enums for format/clients, size validation). Descriptions are detailed and appropriately scoped (194 and 242 chars respectively, within the 10-1024 baseline). Both tools properly use zod for schema validation and include tool annotations (readOnlyHint, idempotentHint, destructiveHint). The email domain requires context about clients and formats, which is well-captured in descriptions and parameter docs.
Quick CSS compatibility analysis, returns per-client scores and one finding per problem, listing the clients it affects. For HTML input each finding carries loc (line, column, offset) and alsoAtLines, so you can edit the exact source. Narrow with clients, or pass detail:'full' for the per-client breakdown with fix snippets. Use audit_email for a full quality report (spam, links, a11y, images, etc.).
Full email compatibility preview, transforms HTML for 21 email clients (Gmail, Outlook, Apple Mail, Yahoo, Samsung, Thunderbird, HEY, Proton Mail, AOL, Fastmail, Superhuman), analyzes CSS, generates scores, simulates dark mode, checks inbox preview and email size.
Output schemas not explicitly documented in tool definitions. While the code shows response construction (compatibilityPayload, withPositions functions), the tool registration does not declare structured output schema types, forcing LLMs to infer response structure.
Error recovery guidance is minimal. While validateClients() and validateHtmlSize() return mcpError() calls with actionable messages, most tool documentation lacks recovery hints (e.g., 'If clients filter returns empty, call list_clients()'). Error responses tell the LLM what failed but not always what to try next.
Parameter 'format' accepts jsx/mjml/maizzle but descriptions do not specify system requirements or compilation behavior. The code shows toHtml() compilation, but parameter docs do not explain that compilation can fail or what errors might be returned.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | B | 72 | 2026-07-28+ | v2 |
Missing discovery tool for listing valid client IDs. The code calls knownClientIds() internally and validateClients() references 'Call list_clients for the valid IDs', but no list_clients tool is registered. This forces users to know valid client names or face validation errors.