Email Without Static Templates

AI agents write in markdown. MultiMail renders consistent, branded HTML and routes sends through your approval workflow before delivery.


Why this matters

Static email templates assume you know every variation in advance. For AI agents, that assumption breaks immediately — agents need to personalize subject lines, restructure content, add or omit sections based on context, and vary tone by recipient segment. Template libraries built for human marketers don't accommodate that flexibility. But unconstrained generation produces inconsistent formatting: mismatched heading levels, raw markdown appearing in HTML contexts, missing unsubscribe footers, brand colors applied incorrectly. The result is emails that look unfinished or fail deliverability checks.


How MultiMail solves this

MultiMail accepts markdown from your agent and converts it to a consistent, email-safe HTML template server-side, appending the required AI-disclosure footer. Agents never handle HTML directly. Under gated_send the rendered output goes into the approval queue before delivery, giving your team a chance to review at high volume without blocking every message. Agents compose with structure; MultiMail enforces visual consistency.

1

Agent generates markdown content

Your agent produces the email body in standard markdown — headings, lists, code blocks, links. No HTML, no inline styles. Subject line and recipient are passed as structured fields alongside the markdown body in the send_email call.

2

MultiMail renders consistent, email-safe HTML

The send API converts your markdown to a consistent, email-safe HTML template server-side before the message enters any queue, and appends the locked-on AI-disclosure footer. Raw HTML in the markdown is sanitized and escaped — not rendered — to prevent prompt injection via generated content. Agents never handle HTML directly.

3

Message queues for approval

With gated_send oversight, the rendered message enters the pending queue. Your team retrieves it via list_pending and reviews the final HTML output — not raw markdown — before approving or canceling via decide_email.

4

Delivery and webhook confirmation

Approved messages are delivered and a webhook fires with delivery status. Your agent can call get_thread to confirm receipt and update downstream state — closing the loop between generation and confirmed delivery.


Try it with your agent

Pick your platform, copy the prompt, and paste it to your AI agent — it sets up MultiMail and builds the whole flow. Nothing to fill in.

1. Read https://multimail.dev/llms.txt, connect the MultiMail MCP server, create a free inbox, and set up a verified sender for our brand. 2. In HubSpot, use Workflows as the trigger source: enroll contacts when they join the target list, submit the selected form, reach a lifecycle stage, or update the campaign property that marks them ready for a dynamic email. 3. For each enrolled contact, read their HubSpot contact, company, list membership, lifecycle stage, and recent engagement fields, then draft a markdown email with a personalized subject line, the right sections for that segment, our brand tone, and a clear unsubscribe footer request in the copy brief. 4. Send each draft through MultiMail in gated_send mode so the email-safe rendered version enters the approval queue before delivery; do not write HTML yourself. 5. Ask me only for HubSpot access, the workflow/list or property to use, brand voice rules, and approval contacts needed to go live.

What you get

No template maintenance

Agents compose from context, not templates. When onboarding steps change, update the agent's prompt — not an HTML file. There is no template library to version or synchronize with generation logic.

Consistent brand output regardless of generation variance

The HTML template is applied server-side at render time. Agents cannot produce malformed or unsafe output because they never write HTML — they write markdown, and MultiMail adds the consistent visual layer deterministically.

Reviewers see exactly what recipients see

Under gated_send, the operator approval page shows the final rendered HTML — including the disclosure footer — so reviewers inspect the formatted email exactly as the recipient will see it before approving delivery.

Scales without template sprawl

A single agent can generate thousands of distinct, personalized emails without a corresponding library of templates. Content variety is the agent's job; visual consistency is MultiMail's.

Deliverability-safe by construction

The rendering pipeline applies required compliance footers, validates HTML structure, and escapes raw HTML from agent output before queuing. Malformed markup from generation edge cases cannot reach recipients.


Recommended oversight mode

Recommended
gated_send
Dynamically generated content varies by design — that is the point. But high-volume personalized email at scale carries real risk if generation regresses: a bad prompt, a context join error, or a data access fault could queue thousands of incorrect messages before anyone notices. gated_send lets agents compose freely and queue in bulk while giving a reviewer a final check on the rendered output before delivery. For mature pipelines with well-tested generation logic, move to monitored to retain the notification trail without requiring explicit approval on every send.

Common questions

Which markdown features does the rendering pipeline support?
MultiMail supports CommonMark plus GitHub Flavored Markdown (GFM) tables and task lists. Raw HTML passthrough is disabled — HTML tags in the markdown body are escaped, not rendered. This prevents agents from inadvertently passing prompt-injected HTML through to recipients.
How is the rendered HTML styled?
MultiMail wraps your markdown in a consistent, email-safe HTML template server-side and appends the required AI-disclosure footer. The styling is applied for you — agents pass only markdown and never write or configure HTML at send time. To control content (headings, lists, links, emphasis), use standard markdown in the body.
Can agents include images or attachments in generated emails?
Yes. Reference images with standard markdown syntax (`![alt](https://cdn.acme.com/image.png)`). For file attachments, pass them inline in the attachments array of the send call as { name, content_base64, content_type } objects. The rendering pipeline handles the markdown-to-HTML conversion for email client compatibility.
What happens if the approval queue grows faster than reviewers can process it?
Messages stay queued until acted on — there is no automatic expiry. You can call cancel_message to clear stale messages individually, or switch the mailbox to monitored oversight to allow delivery while retaining a notification trail. Call list_pending (GET /v1/oversight/pending) to retrieve the queue for triage at volume.
Does dynamic generation work with reply threads, not just new messages?
Yes. reply_email accepts a markdown body just like send_email, and renders it the same way. The rendered reply is inserted into the existing thread with correct In-Reply-To and References headers so it appears in-thread in the recipient's email client.
How do I vary the look of different message types?
MultiMail applies a consistent, email-safe HTML template to every markdown-rendered send, so the look stays uniform across mailboxes. Vary the content itself — headings, sections, emphasis, links — with standard markdown in the body. Agents select the sending mailbox (which sets the from identity and oversight mode); the rendered styling is applied for them.

Explore more use cases

The only agent email with a verifiable sender

Email infrastructure built for AI agents. Verifiable identity, graduated oversight, and a hosted MCP server. Formally verified in Lean 4.