emailmd

dev.emailmdPublished by emailmd.devOfficial publisherv0.13.2Updated Oct 25, 2026

Render markdown into email-safe HTML, lint drafts for deliverability problems, and preview emails.

VerifiedStreamable HTTPWeb executableDeveloper ToolsCommunication & Collaboration

Overview

AI-generated overview

emailmd turns markdown into email-safe HTML, lints drafts for deliverability issues, and gives a shareable preview, all from an AI assistant.

What you can do
Render emailmd markdown into a complete email-safe HTML document plus a plain-text part, frontmatter metadata, warnings, byte size and a live preview link. Lint drafts without rendering to flag missing alt text, insecure links, Gmail size limits, generic link text and spam-trigger phrases. Look up emailmd documentation pages, such as buttons, frontmatter, theme or directives, to check syntax before writing.
When to use it
Useful when an assistant drafts or edits marketing, transactional or newsletter emails in markdown and you want valid cross-client HTML, a plain-text version and a quick check for deliverability problems before sending.
Requirements
Runs as a hosted remote endpoint or locally over stdio via the npm package, which needs Node 20 or later. No accounts, API keys or environment variables are declared.
Before you install
The render tool returns a preview link to the exact document, so anyone with that link may see the email content. Lint only reports problems; fixing them is up to you, and some flagged suggestions may be intentional.

Installation

In SourceWeft

  1. Open emailmd in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/dev.emailmd%2Femailmd/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "emailmd": {
      "type": "http",
      "url": "https://www.emailmd.dev/api/mcp"
    }
  }
}

README

emailmd

Write markdown. Ship emails. No HTMHELL.

emailmd converts markdown into responsive, email-safe HTML that works across Gmail, Outlook, Apple Mail, Yahoo, and every other client.

[emailmd]

Install

bash
npm install emailmd

Quick Start

typescript
import { render } from "emailmd";
const { html, text } = await render(`# Welcome!
Thanks for signing up.
[Get Started](https://example.com){button}`);
// html → complete email-safe HTML// text → plain text version for text/plain MIME part

v0.3.0 migration: render() is now async. Update calls from render(md) to await render(md). Requires Node 20+ (MJML 5).

Charts & Data

Bar charts, progress meters, sparklines, KPI tiles, step trackers, and star ratings, each written as a plain markdown list:

markdown
::: chart- Spotify: 16,900- Apple Podcasts: 12,400- Web player: 6,200- RSS: 2,900:::

[KPI tiles, a bar chart and a sparkline, rendered by emailmd from plain markdown lists]

They are drawn from table cells and text glyphs rather than images or SVG, so they still render when the client blocks remote images, and they redraw themselves in the plain-text part instead of collapsing to a list of numbers. See the directives reference.

CLI

emailmd also ships with a command-line interface.

bash
# Render to HTMLemailmd input.md
# Write to fileemailmd input.md -o output.html
# Plain text outputemailmd input.md --text
# Pipe from another commandecho "# Hello" | emailmd

Run emailmd --help for all options.

React

@emailmd/react provides a live-preview hook (useEmailmd), an <EmailPreview /> iframe component, and <EmailmdBuilder /> — the full builder as a drop-in component for your own app.

bash
npm install @emailmd/react emailmd

Learn More

  • Docs — full syntax reference, theming, frontmatter, directives, and API
  • Templates — ready-made email templates you can copy and customize
  • Builder — live editor to write and preview emails in your browser

MCP

emailmd ships a Model Context Protocol server, so an AI assistant can render, lint, and preview emails for you. It exposes three tools — render (markdown to email-safe HTML), lint (flag deliverability problems without rendering), and read_docs (look up emailmd syntax) — over either transport:

bash
# Hosted (Streamable HTTP)https://www.emailmd.dev/api/mcp
# Or run it locally over stdionpx emailmd mcp

Published to the official MCP registry as dev.emailmd/emailmd. See the MCP docs for per-client setup.

AI

Prefer plain context over tools? emailmd is just markdown, so AI is great at writing templates. Feed the full docs to your AI tool:

https://www.emailmd.dev/llms-full.txt

Contributing

Contributions are welcome! Feel free to open an issue or submit a pull request.

emailmd is under active development. The API may change between minor versions until we hit 1.0 — breaking changes are always called out in the changelog. See Stability & Versioning for what the semver contract covers.

Acknowledgements

License

MIT

Source: README.md at commit db9d638

Tools

3

render

Render an email

Render emailmd markdown into email-safe HTML. Returns html (the complete email document), text (the plain-text MIME part), meta (frontmatter), warnings (non-fatal repairs made while rendering; aim for none), htmlBytes, and previewUrl (a live browser preview of this exact document to share with the user).

Parametersminifymarkdownrequiredpartials

lint

Lint an email

Check emailmd markdown for deliverability, accessibility, and readability problems without rendering it: missing alt text, http:// links, Gmail's 102KB clip limit, generic link text, spam-trigger phrases, and more. Fix warnings before sending; suggestions are sometimes intentional (e.g. transactional emails without an unsubscribe link).

Parametersmarkdownrequiredpartials

read_docs

Read emailmd docs

Fetch emailmd documentation from emailmd.dev. Call with no arguments for the index of all pages; pass page to read one (e.g. 'buttons', 'frontmatter', 'theme', 'directives/hero'). Read the relevant page before using syntax you are not sure about.

Parameterspage

Version history

4
  1. v0.13.2LatestOct 6, 2026
  2. v0.12.0Oct 6, 2026
  3. v0.11.1Oct 2, 2026
  4. v0.11.0Sep 16, 2026

Score

100% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts