MailKite for AI agents

Give your agents their own inbox.

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.

Claude Your agent REST API MailKite API · MCP @support read · replied @agent sent · archived @alerts active · monitored

Email is your agent's identity

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.

MCP-native

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.

Inbound your agent can act on

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.

Connect your agent

Three lines to a working inbox.

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 /mcpmailkite signs you in. You also get the /mailkite:* commands and the setup skill.

Claude Code — run first
/plugin marketplace add mailkite/claude-code
Claude Code — run next
/plugin install mailkite@mailkite

Prefer SDKs or REST? Official libraries for Node, Python, PHP, Java, Go, and Ruby — plus the CLI and SMTP relay.

Send · Receive · Reply

Outbound is one call. Inbound is JSON.

Your agent sends a verify link, the user replies, and the reply lands back as a structured payload — ready to act on, not parse.

send.ts — agent sends Outbound
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=…",
});
inbound webhook — agent reads Inbound
// 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.

Scoped access

You decide how much email your agent controls.

Three grants, from the whole account down to a single address — each one revocable on its own.

Account key

*

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.

Domain-scoped key

*@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.

Agent route

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.

Set up scoped access →

Email for AI agents, in plain terms

What is email for AI agents?

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.

How does my AI agent receive email?

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.

How does my AI agent send email?

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.

Can Claude Code send and receive email?

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.

Is MailKite free for AI agents?

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.

Your agents are ready for email. Is your email ready for them?