Open-source email API for applications and AI agents. Managed hosting at e2a.dev, or self-host with Docker.
> /plugin marketplace add tokencanopy/e2a> /plugin install e2a@e2a
Send transactional email and give agents real two-way inboxes, with people in control.
We run the email infrastructure. You connect your app or agent.
Self-host with Docker · Documentation · Agent quickstart · Examples
A Token Canopy product · Apache 2.0
Using a coding agent? Paste this prompt into its chat:
Connect this coding agent to hosted e2a MCP at https://api.e2a.dev/mcp and help me sign in via browser OAuth.
Supports coding agents with remote MCP and browser OAuth. Client setup guide.
agents.e2a.dev domain for instant slug-based onboarding (no DNS setup), a dashboard, the hosted MCP server, and managed deliverability.shared_domain in config.yaml.For application email, start with the transactional email guide. For coding agents, use the prompt above or the setup instructions below.
Give your AI agent an inbox directly. Install the e2a plugin — it registers the hosted MCP server and an operate-well skill, so your agent can send, receive, reply in-thread, and hold mail for review out of the box. On first tool use it runs an OAuth flow in your browser — no API key to paste.
Claude Code
claude plugin marketplace add tokencanopy/e2a
claude plugin install e2a@e2a
Codex
codex plugin marketplace add tokencanopy/e2a
Then launch codex, run /plugins, and install e2a.
Cursor — add the MCP server directly. Put this in .cursor/mcp.json (or ~/.cursor/mcp.json to get it in every project); Cursor opens your browser to authorize on first use, no API key to paste:
{
"mcpServers": {
"e2a": { "url": "https://api.e2a.dev/mcp" }
}
}
Other MCP clients (Zed, Goose, Windsurf, Claude Desktop, raw mcp.json) — point straight at https://api.e2a.dev/mcp; ready-to-paste configs are in plugins/e2a/clients/. See plugins/e2a/README.md for the full per-client guide.
e2a is the open-source email API for applications and AI agents. Any product can send transactional email over HTTP, TypeScript, or Python; agent-native systems can also use real two-way inboxes. Inbound mail arrives with structured SPF, DKIM, and DMARC evidence, and outbound mail can use an optional human-in-the-loop approval gate. Use the hosted service or run the Apache-2.0 stack yourself. No AI agent or agent framework is required for application-triggered sending.
Four ways to plug an agent in:
https://api.e2a.dev/mcp) and your agent gets an inbox toolset (list_messages, send_message, reply_to_message, …). The fastest path for agent frameworks. → MCP server@e2a/sdk) and Python (e2a) clients with one-call webhook verification and a WebSocket listen() stream. → SDKse2a listen bridges inbound mail to a local HTTP handler (including an OpenAI Responses auto-reply mode). → CLIWhat you get on top of bare SMTP:
thread_id metadata on message reads; caller-owned conversation_id remains application correlation{{variable}} templates rendered server-side at send time, plus a pre-built starter catalog → docs/templates.mdcontact.due due-queue notification event → docs/api.mdsend_at on send/reply/forward defers submission up to 90 days ahead; a scheduled send is durable acceptance (status=scheduled) and can be canceled by trashing the message before submissione2a is useful anywhere an AI agent needs a real inbox, persistent email threads, and a safe path from inbound message to outbound action. Start with a complete example:
Build an AI support agent — triage customer requests, retrieve context, reply in-thread, and hold sensitive replies for approval.
Build an AI receptionist — answer common inquiries, route messages, and forward conversations to a human team.
Build an AI scheduling agent — coordinate participants, propose times, and preserve state across multi-turn replies.
Build an e-commerce agent — answer order questions, handle returns, and coordinate with vendors through persistent email threads.
Build a sales agent — qualify inbound interest, personalize follow-ups, and keep every conversation moving.
Build a recruiting agent — coordinate candidates, schedule interviews, and keep hiring workflows in one thread.
Build a voice follow-up agent — turn a completed call into an email follow-up and keep the conversation going.
Build a procurement agent — coordinate quotes, purchase orders, and vendor threads with human approval for commitments.
A support inbox for your AI assistant — give an agent support@yourbrand.com, receive customer mail with SPF/DKIM/DMARC already evaluated as structured evidence, and reply in-thread. Add HITL so anything sensitive waits for a human to approve before it goes out.
Email between agents — yours and other organizations' — every agent has a real, verified address, so two companies' agents can exchange mail the same way humans do: no new client, protocol, or shared platform to install.
A personal concierge on your laptop — subscribe over WebSocket (no public URL, no ngrok, no port forwarding), so a local agent can watch an inbox from behind any firewall, triage it, draft replies, and take actions.
Email-triggered workflows — turn inbound mail into structured events: order confirmations, forms, support tickets, notifications, and receipts rendered server-side from templates, with conversation_id correlated back to your app's state.
Autopilot with human oversight — an agent drafts outbound mail (newsletters, outreach, reports) and holds each send for one-click approval via magic-link email or the review queue, with automatic expiry policy if no one reviews in time.
e2a-runbooks builds several of the above as small, complete, runnable projects — one per agent framework, each demonstrating a different use case and a different part of this API:
| Example | Framework | What it shows |
|---|---|---|
| Support agent | Mastra | Threading, memory, and the outbound approval gate |
| Receptionist | OpenAI Agents SDK | forward to a desk allowlist, update_labels |
| AI SRE | Claude Agent SDK | Authentication as a gate; a no-tools agent that can't touch prod |
| Contract review | LangChain | Attachments — including the data-vs-download_url split |
| Escalation desk | CrewAI | Several agent identities; cross-identity conversation_id |
| Scheduling secretary | Pydantic AI | Multi-turn state rebuilt from conversations, no database |
They are examples to copy from rather than services to deploy — each says what it simplifies. For the smallest possible signed-webhook reference instead, see the in-repo minimal examples.
e2a is a Claude Code plugin with 9 hand-picked skills, indexed on Flowy in the Agent Orchestration category. Install it with the command on its page. It includes agentify, runtime-skill, autopilot. Its skills do not fire on their own yet. Request auto-invocation to have Flowy route them as you prompt. Free and open source.
Is this plugin yours?
Claim it with GitHubSubmit a pluginPromote it