Skip to content

Emailens MCP

by emailens · remote · local (npm) · no sign-in to list tools · v0.12.0 · published by GitHub user emailens

Analyze, audit, fix and diff HTML, MJML, Maizzle and React Email across 21 email clients.

Changes · 5

13 tools: 5 change things and 8 only read.

Scanned Oct 21, 2026

2 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http emailens https://emailens.dev/api/mcp

Findings

Matches of fixed checks, with the text they matched.

2 warn
  • The server marks "fix_email" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "generate": a word for a change.

    What this check looks for
  • The server marks "sandbox_get_inbox" as not read-only (readOnlyHint: false), and its words say it reads.

    Matched text

    annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "sandbox_get_inbox" says "get": a word for reading.

    What this check looks for

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

13 tools

Changes things 5Claude Code: ask
  • audit_emailComprehensive quality audit , CSS compatibility, spam, links, accessibility, images, inbox preview, size, templates, content overflow, visual bugs.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Comprehensive quality audit , CSS compatibility, spam, links, accessibility, images, inbox preview, size, templates, content overflow, visual bugs.

    Annotations the server declares

    • title: Audit Email
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • build_emailGenerate a cross-client-compatible email from a brief using Emailens's self-healing loop (generate → score across 21 clients → repair).No findings

    Why it is in this group

    • The description's first verb is "generate": a word for a change.
    Description, as the server wrote it
    Generate a cross-client-compatible email from a brief using Emailens's self-healing loop (generate → score across 21 clients → repair). Output stays in the framework you choose. Returns a runId immediately , poll get_build_status for progress and the final code. Requires a Pro/Team API key.

    Annotations the server declares

    • title: Build Email
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • check_deliverabilityCheck email deliverability for a domain , SPF, DKIM, DMARC, MX, BIMI.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Check email deliverability for a domain , SPF, DKIM, DMARC, MX, BIMI.

    Annotations the server declares

    • title: Check Deliverability
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • fix_emailGenerate a structured fix prompt for email compatibility issues.1 finding

    Why it is in this group

    • The description's first verb is "generate": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "fix_email" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "generate": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Generate a structured fix prompt for email compatibility issues.

    Annotations the server declares

    • title: Fix Email
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • sandbox_get_inboxRetrieve or auto-create your Emailens sandbox test email address for capturing test emails.1 finding

    Why it is in this group

    • The name "sandbox_get_inbox" says "get": a word for reading.
    • The server marks it as not read-only (readOnlyHint: false).

    Findings

    • Warn

      The server marks "sandbox_get_inbox" as not read-only (readOnlyHint: false), and its words say it reads.

      Matched text

      annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "sandbox_get_inbox" says "get": a word for reading.

      What this check looks for
    Description, as the server wrote it
    Retrieve or auto-create your Emailens sandbox test email address for capturing test emails.

    Annotations the server declares

    • title: Get Sandbox Inbox
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
Only reads 8Claude Code: allow
  • analyze_emailQuick CSS compatibility analysis , returns warnings and per-client scores.No findings

    Why it is in this group

    • The name "analyze_email" says "analyze": a word for reading.
    Description, as the server wrote it
    Quick CSS compatibility analysis , returns warnings and per-client scores.

    Annotations the server declares

    • title: Analyze Email
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • diff_emailsCompare two email HTML versions , shows score changes, fixed issues, and regressions per client.No findings

    Why it is in this group

    • The name "diff_emails" says "diff": a word for reading.
    Description, as the server wrote it
    Compare two email HTML versions , shows score changes, fixed issues, and regressions per client.

    Annotations the server declares

    • title: Diff Emails
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_build_statusCheck a build_email run by runId , returns status, iteration, best compatibility score, and the current best source once available.No findings

    Why it is in this group

    • The name "get_build_status" says "get": a word for reading.
    Description, as the server wrote it
    Check a build_email run by runId , returns status, iteration, best compatibility score, and the current best source once available.

    Annotations the server declares

    • title: Get Build Status
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_clientsList all 21 supported email clients with IDs, names, rendering engines, dark mode support, and deprecation status.No findings

    Why it is in this group

    • The name "list_clients" says "list": a word for reading.
    Description, as the server wrote it
    List all 21 supported email clients with IDs, names, rendering engines, dark mode support, and deprecation status. Use the returned IDs to filter other tools like preview_email or capture_screenshots.

    Annotations the server declares

    • title: List Email Clients
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • preview_emailFull email compatibility preview , transforms HTML for 21 email clients, analyzes CSS, generates scores, simulates dark mode, checks inbox preview and email size.No findings

    Why it is in this group

    • The name "preview_email" says "preview": a word for reading.
    Description, as the server wrote it
    Full email compatibility preview , transforms HTML for 21 email clients, analyzes CSS, generates scores, simulates dark mode, checks inbox preview and email size.

    Annotations the server declares

    • title: Preview Email
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • sandbox_get_messageGet complete email details: HTML/text body, parsed headers, spam score, SPF/DKIM/DMARC auth status, and validated links.No findings

    Why it is in this group

    • The name "sandbox_get_message" says "get": a word for reading.
    Description, as the server wrote it
    Get complete email details: HTML/text body, parsed headers, spam score, SPF/DKIM/DMARC auth status, and validated links.

    Annotations the server declares

    • title: Get Sandbox Message
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • sandbox_list_messagesList recently captured test emails in the Emailens sandbox.No findings

    Why it is in this group

    • The name "sandbox_list_messages" says "list": a word for reading.
    Description, as the server wrote it
    List recently captured test emails in the Emailens sandbox.

    Annotations the server declares

    • title: List Sandbox Messages
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • sandbox_wait_for_emailPoll and wait for a matching incoming test email in the sandbox (ideal for auth OTPs, magic links, transactional email assertions).No findings

    Why it is in this group

    • The name "sandbox_wait_for_email" says "wait": a word for reading.
    Description, as the server wrote it
    Poll and wait for a matching incoming test email in the sandbox (ideal for auth OTPs, magic links, transactional email assertions).

    Annotations the server declares

    • title: Wait for Sandbox Email
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 0.12.0. Values in angle brackets are yours to fill in.

claude mcp add --transport http emailens https://emailens.dev/api/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__emailens__preview_email",
      "mcp__emailens__analyze_email",
      "mcp__emailens__list_clients",
      "mcp__emailens__diff_emails",
      "mcp__emailens__get_build_status",
      "mcp__emailens__sandbox_list_messages",
      "mcp__emailens__sandbox_wait_for_email",
      "mcp__emailens__sandbox_get_message"
    ],
    "ask": [
      "mcp__emailens__audit_email",
      "mcp__emailens__fix_email",
      "mcp__emailens__check_deliverability",
      "mcp__emailens__build_email",
      "mcp__emailens__sandbox_get_inbox"
    ],
    "deny": []
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as emailens. Review it before you use it.