Emailens MCP

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

Should I use this

Quality & Safety

A
Description quality
96%
Schema completeness
92%
Naming quality
96%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,468Tokens (tool definitions)
~1.0 KBTypical response size
Moderate attention impact (1.15% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "mcp": {
      "command": "npx",
      "args": [
        "@emailens/mcp"
      ]
    }
  }
}

Runnable packages

npm@emailens/mcp0.6.2stdio

Remote endpoints

https://emailens.dev/api/mcpstreamable-http

What it can do

Tool inventory

Tools (9)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢preview_email(html, clients, format)

Full email compatibility preview , transforms HTML for 21 email clients, analyzes CSS, generates scores, simulates dark mode, checks inbox preview and email size.

Input Schema

{
  "type": "object",
  "properties": {
    "html": {
      "type": "string",
      "description": "The email HTML source code"
    },
    "clients": {
      "description": "Optional client ID filter",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "format": {
      "description": "Input format: 'html' (default), 'jsx', 'mjml', or 'maizzle'",
      "type": "string",
      "enum": [
        "html",
        "jsx",
        "mjml",
        "maizzle"
      ]
    }
  },
  "required": [
    "html"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢analyze_email(html, format)

Quick CSS compatibility analysis , returns warnings and per-client scores.

Input Schema

{
  "type": "object",
  "properties": {
    "html": {
      "type": "string",
      "description": "The email HTML source code"
    },
    "format": {
      "description": "Input format for framework-specific fix snippets",
      "type": "string",
      "enum": [
        "html",
        "jsx",
        "mjml",
        "maizzle"
      ]
    }
  },
  "required": [
    "html"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢audit_email(html, format, skip)

Comprehensive quality audit , CSS compatibility, spam, links, accessibility, images, inbox preview, size, templates, content overflow, visual bugs.

Input Schema

{
  "type": "object",
  "properties": {
    "html": {
      "type": "string",
      "description": "The email HTML source code"
    },
    "format": {
      "description": "Input format",
      "type": "string",
      "enum": [
        "html",
        "jsx",
        "mjml",
        "maizzle"
      ]
    },
    "skip": {
      "description": "Checks to skip",
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "spam",
          "links",
          "accessibility",
          "images",
          "compatibility",
          "inboxPreview",
          "size",
          "templateVariables",
          "overflow",
          "visual"
        ]
      }
    }
  },
  "required": [
    "html"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢fix_email(html, format, scope, selectedClientId)

Generate a structured fix prompt for email compatibility issues.

Input Schema

{
  "type": "object",
  "properties": {
    "html": {
      "type": "string",
      "description": "The email HTML source code to fix"
    },
    "format": {
      "description": "Input format , controls fix syntax",
      "type": "string",
      "enum": [
        "html",
        "jsx",
        "mjml",
        "maizzle"
      ]
    },
    "scope": {
      "description": "Fix scope",
      "type": "string",
      "enum": [
        "all",
        "current"
      ]
    },
    "selectedClientId": {
      "description": "Client ID for scoped fixes",
      "type": "string"
    }
  },
  "required": [
    "html"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢list_clients

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.

Input Schema

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢diff_emails(before, after, format)

Compare two email HTML versions , shows score changes, fixed issues, and regressions per client.

Input Schema

{
  "type": "object",
  "properties": {
    "before": {
      "type": "string",
      "description": "Original email HTML"
    },
    "after": {
      "type": "string",
      "description": "Modified email HTML"
    },
    "format": {
      "description": "Input format",
      "type": "string",
      "enum": [
        "html",
        "jsx",
        "mjml",
        "maizzle"
      ]
    }
  },
  "required": [
    "before",
    "after"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢check_deliverability(domain)

Check email deliverability for a domain , SPF, DKIM, DMARC, MX, BIMI.

Input Schema

{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "minLength": 3,
      "pattern": "^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)+$",
      "description": "Domain to check (e.g. 'company.com')"
    }
  },
  "required": [
    "domain"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢build_email(intent, format, seedHtml, threshold, maxIterations)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "intent": {
      "type": "string",
      "description": "What the email should be and contain , the brief to build from"
    },
    "format": {
      "description": "Output framework: 'html' (default), 'jsx', 'mjml', or 'maizzle'",
      "type": "string",
      "enum": [
        "html",
        "jsx",
        "mjml",
        "maizzle"
      ]
    },
    "seedHtml": {
      "description": "Optional existing code to improve from instead of starting blank",
      "type": "string"
    },
    "threshold": {
      "description": "Target compatibility score, 50-100 (default 90)",
      "type": "number"
    },
    "maxIterations": {
      "description": "Max repair rounds, 1-8 (default 5)",
      "type": "number"
    }
  },
  "required": [
    "intent"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_build_status(runId)

Check a build_email run by runId , returns status, iteration, best compatibility score, and the current best source once available.

Input Schema

{
  "type": "object",
  "properties": {
    "runId": {
      "type": "string",
      "description": "The runId returned by build_email"
    }
  },
  "required": [
    "runId"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded9 tools
verifiedversion not recorded9 tools