Every agent gets a real, catch-all inbox — it receives mail sent to any address on the domain and sends from any of them, over MCP, SDKs, or REST. Inbound arrives as structured JSON your agent can reason over. No OAuth, no mail server, no human in the loop.
Sign-ups, verification, and 2FA codes all land in an inbox your agent owns and reads — not a human's. Spin up a fresh address per agent, per task, per tenant — or point a whole domain at one agent and it catches every address, in and out.
In Claude Code, /plugin install mailkite@mailkite and authenticate — no key to copy. Any other client points at the hosted remote server at mcp.mailkite.dev/mcp. Your agent gets tools to send, list, read, and reply — inbound included, which most email MCPs don't expose.
Received mail is parsed to clean JSON and delivered as a webhook and kept in a queryable store. Your agent (or RAG pipeline) reads the full message — body, headers, attachments — and replies in-thread.
One host, every MCP client. OAuth in the browser — no key to copy in Claude Code, Cursor, Claude Desktop, Cline, or a chat prompt.
Run both in Claude Code, one after the other. Then /mcp → mailkite signs you in. You also get the /mailkite:* commands and the setup skill.
/plugin marketplace add mailkite/claude-code /plugin install mailkite@mailkite Any MCP client — Cursor, Claude Desktop, Cline, Roo, Zed. Paste the block, restart, and sign in on first connect.
{
"mcpServers": {
"mailkite": {
"type": "http",
"url": "https://mcp.mailkite.dev/mcp"
}
}
} Using a chat-based agent (claude.ai, ChatGPT, your own assistant)? Paste this into the prompt — it adds the server and walks you through browser sign-in.
Connect to the MailKite MCP server (Streamable HTTP) at
https://mcp.mailkite.dev/mcp and authenticate in the browser when prompted.
Then use the mailkite_* tools to send, read inbound, and reply to email. Prefer SDKs or REST? Official libraries for Node, Python, PHP, Java, Go, and Ruby — plus the CLI and SMTP relay.
Your agent sends a verify link, the user replies, and the reply lands back as a structured payload — ready to act on, not parse.
import { MailKite } from "mailkite";
const mk = new MailKite(process.env.MAILKITE_API_KEY);
await mk.send({
from: "agent@myapp.ai",
to: "user@example.com",
subject: "Your verify link",
text: "https://myapp.ai/verify?token=…",
}); // POST https://myapp.ai/hooks/mailkite
{
"from": "user@example.com",
"to": "agent@myapp.ai",
"subject": "Re: your verify link",
"text": "this didn't work — try again?",
"attachments": []
} The agent loop closes itself: send → receive → reply, no human in the middle.
Three grants, from the whole account down to a single address — each one revocable on its own.
*
Every domain, every mailbox
One key runs all your email: the agent can create domains, set webhooks, send and read everywhere — unlimited domains and mailboxes. For your own trusted automation.
*@agents.yourapp.com
Every mailbox on one domain
The agent sends, reads, and replies on that domain and nothing else — the rest of your account is out of reach. Mint one per agent; revoke one without disturbing the others.
support@yourapp.com
One mailbox
A route hands one address's mail to your agent — that inbox is all it sees and all it replies from. The narrowest grant: the agent never holds a key at all.
Email for AI agents means giving an autonomous or semi-autonomous agent its own inbox it can read from and send to — over MCP, an SDK, or REST — so sign-ups, verification links, replies, and 2FA codes become part of the agent's loop instead of a human's. MailKite is built for this: every agent gets a real catch-all address on a domain you control, inbound arrives as parsed JSON, and outbound goes fully authenticated.
Point a MailKite inbound route (or a whole catch-all domain) at a webhook URL. Inbound messages are parsed — body, headers, attachments — and POSTed as structured JSON. The same message is also kept in a queryable store your agent can list and search via MCP tools or the SDK, so a webhook blip doesn't lose context.
One SDK call or MCP tool. From any address on a verified domain, with SPF, DKIM, and DMARC handled by MailKite. In Claude Code: install the plugin, then ask the agent to send — it'll use the mailkite_send tool. Anywhere else, call mk.send() in Node, Python, PHP, Java, Go, or Ruby, or POST /v1/send.
Yes. Run /plugin marketplace add mailkite/claude-code, then /plugin install mailkite@mailkite in Claude Code. /mcp → mailkite signs you in over OAuth — no API key to copy. Claude gets mailkite_send, mailkite_list, mailkite_read, and mailkite_reply tools, plus the /mailkite:* slash commands. Inbound and outbound both work.
Yes. Unlimited domains and addresses are free until volume, no credit card required. A fleet of agents can each have their own inbox without a per-domain tax. You pay only when sending scales past the free threshold — and the beta rate is 50% off your first year for the first 1,000 customers.