An email API that knows
your agent isn't human

Existing email APIs were designed for apps that send on behalf of people. MultiMail was built from scratch for autonomous agents — with oversight controls, approval queues, and identity headers baked into every request.

Get Started Free Read the Docs

Email APIs weren't built for agents

SendGrid, Resend, and Postmark are great tools. They assume a human decided what to send before the API call was made. Agents don't work that way.

No oversight layer

Traditional APIs fire and forget. There's no concept of "hold this email for human review before it goes out." If your agent hallucinates a reply to a client, it's already in their inbox.

No agent identity

Recipients can't tell if an email was written by a human or an agent. There's no standard header declaring who built the agent, who operates it, or what oversight is in place.

HTML in, HTML out

Agents think in text. Existing APIs require you to construct HTML templates or parse raw MIME. That's wasted tokens and wasted context window on formatting your agent doesn't need.


A trust ladder, not an on/off switch

Every mailbox has an oversight mode. Start restrictive, upgrade as your agent earns trust. Your operator stays in control the whole way.

1. read_only
Agent can read email but not send. Good for testing.
2. gated_all
Every email — inbound and outbound — needs human approval.
3. gated_send  DEFAULT
Outbound held for approval. Inbound delivered immediately. The right starting point for most agents.
4. monitored
Agent sends freely. Copies go to the oversight address.
5. autonomous
Full send and receive. No gates, no copies. Earned trust.
Set oversight mode via API
// Start with gated sends PATCH /v1/mailboxes/{mailbox_id} { "oversight_mode": "gated_send" } // Agent sends an email POST /v1/mailboxes/{mailbox_id}/send { "to": ["[email protected]"], "subject": "Weekly report", "markdown": "## Summary\n\nAll tasks complete." } // Response: 202 Accepted (held for review) { "id": "em_abc123", "status": "pending_send_approval", "thread_id": "th_xyz789" }

Everything an agent needs in one place

Send markdown, receive markdown. Threading is automatic. Attachments are stored separately — no base64 blobs in your context window.

POST
/v1/mailboxes/:id/send
Send email as markdown. Returns 202 if gated.
GET
/v1/mailboxes/:id/emails
List inbox with filters: status, sender, date, direction.
GET
/v1/mailboxes/:id/emails/:eid
Read full email as markdown with metadata and tags.
POST
/v1/mailboxes/:id/reply/:eid
Reply in-thread. Threading headers set automatically.
GET
/v1/threads/:id
Get full conversation thread, ordered chronologically.
POST
/v1/contacts
Add contacts to address book with tags.
POST
/v1/emails/:id/tags
Set key-value tags on emails. Persist across sessions.
POST
/v1/pending/:id/decide
Approve or reject emails held by oversight gates.
POST
/v1/webhooks
Subscribe to real-time email events via HTTPS.
GET
/v1/mailboxes/:id/emails/:eid/attachments/:file
Download attachments on demand. No inline base64.

Works with the stack you already use

MCP server with 40 tools, REST API, or use our SDK. Connects to every major agent framework in minutes.

LangChain
MCP tool adapter or direct API calls
CrewAI
Custom tool wrapping MultiMail endpoints
AutoGen
Function calling with oversight-aware sends
LlamaIndex
Tool spec for email retrieval and sending
Vercel AI SDK
Server actions with approval queue support
OpenAI Agents
Function tools compatible with Responses API
npm npx -y @multimail/mcp-server
mcp mcp.multimail.dev/mcp
langchain_example.py
from langchain_core.tools import tool import requests BASE = "https://api.multimail.dev/v1" HEADERS = {"Authorization": f"Bearer {API_KEY}"} @tool def send_email(to: str, subject: str, body: str): """Send an email. Returns 202 if held for approval.""" r = requests.post( f"{BASE}/mailboxes/{MAILBOX}/send", json={"to": [to], "subject": subject, "markdown": body}, headers=HEADERS ) return r.json()

Start free. Scale when you're ready.

Every plan includes the full API, oversight modes, identity headers, and MCP server access. No feature gates.

Starter
Free
  • 2 mailboxes
  • 200 emails/mo
  • 100 MB storage
Pro
$29 /mo
  • 25 mailboxes
  • 30,000 emails/mo
  • 50 GB storage
Scale
$99 /mo
  • 100 mailboxes
  • 150,000 emails/mo
  • 150 GB storage
Get started

Your agent is one API call away from email

Free tier. No credit card. Full API access from day one.

Get Started Free