Give your agent its own inbox. Receive, parse, and send email via MCP or API. Unlimited domains, free — no credit card, no mail server.
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./plugin marketplace add mailkite/claude-code
/plugin install mailkite@mailkite{
"mcpServers": {
"mailkite": {
"type": "http",
"url": "https://mcp.mailkite.dev/mcp"
}
}
} Works with Claude, GPT, LangChain, CrewAI, or any MCP-compatible agent. Also available as a REST API for non-MCP agents.
Switched from SendGrid, inbox placement went from ~92% to ~99% in two weeks.
Mark — AdRender.app
Email arrives at your agent's domain. MailKite parses it into clean JSON and delivers it to your endpoint. Your agent processes it and replies with one API call. The full loop, no mail server required.
// POST https://your-agent.com/api/mailkite/webhook
{
"from": "user@example.com",
"to": "agent@my-agent.com",
"subject": "Help me with my task",
"text": "Can you check the status of order #1234?",
"html": "<p>Can you check the status of order #1234?</p>",
"attachments": []
} // Agent processes → replies via MailKite
await mk.send({
"to": "user@example.com",
"subject": "Re: Help me with my task",
"text": "Order #1234 is shipped. ETA: Thursday."
}); The full receive → process → reply loop. Your agent handles email like any other tool — no SMTP, no IMAP, no mail server.
Paste a prompt into your agent — it connects to MailKite and sends. Prefer the raw SDK? Toggle to the code tab.
Send an email to user@example.com with subject "Hello from my agent" and body "Your agent just sent its first email." import { MailKite } from "mailkite";
const mk = new MailKite(process.env.MAILKITE_API_KEY);
await mk.send({
to: "user@example.com",
subject: "Hello from my agent",
text: "Your agent just sent its first email.",
}); Check my MailKite inbox for new emails and show me the latest one. import { MailKite } from "mailkite";
const mk = new MailKite(process.env.MAILKITE_API_KEY);
const emails = await mk.inbound.list({ limit: 5 });
for (const email of emails) {
console.log(email.from, email.subject, email.text);
} Reply to the email from user@example.com with subject "Help needed" — say "Order #1234 is shipped. ETA: Thursday." import { MailKite } from "mailkite";
const mk = new MailKite(process.env.MAILKITE_API_KEY);
await mk.send({
to: "user@example.com",
subject: "Re: Help needed",
text: "Order #1234 is shipped. ETA: Thursday.",
}); When an email arrives at my MailKite webhook, read it, and reply with a helpful response based on what the sender asked. import { MailKite } from "mailkite";
const mk = new MailKite(process.env.MAILKITE_API_KEY);
const emails = await mk.inbound.list({ limit: 5 });
for (const email of emails) {
const response = await agent.process(email.text);
await mk.send({
to: email.from,
subject: "Re: " + email.subject,
text: response,
});
} Every prompt uses the same MCP server your agent connects to once. No per-action setup — just paste and go.
Email that works like a tool, not infrastructure. MCP-native, inbound-first, and zero mail servers to maintain.
MailKite ships as an MCP server. Connect it to Claude, GPT, or any MCP-compatible agent and email becomes a first-class tool — no custom glue code, no API wrappers.
Every email your agent receives is parsed into structured JSON — from, to, subject, text, HTML, attachments. Your agent reads it like any other tool output. No MIME parsing, no multipart decoding.
Each agent gets its own domain and inbox. Add as many agents as you need — no per-domain charges, no per-agent tax. One API key manages everything.
Agent builders comparing MailKite, rolling your own, and generic email APIs. Here's the gap.
| MailKite | Roll your own | Generic email API | |
|---|---|---|---|
| MCP server | Built-in, zero config | Build + maintain yourself | Not available |
| Inbound as JSON | Automatic, clean payload | Parse MIME yourself | Webhook with raw MIME |
| Agent reply loop | One send call, threaded | Build threading + state | Send only, no threading |
| Domains | Unlimited, free | Pay per domain | 1 (free tier) |
| Auth (SPF / DKIM / DMARC) | Configured for you | You publish and maintain | You publish and maintain |
| Time to first inbox | < 5 minutes | Hours to days | 30+ minutes |
| Credit card to start | No | N/A (infra costs) | No (but limited) |
Still deciding? Get your agent an inbox and try it yourself — no credit card.
Point a domain at MailKite and add an inbound route to your agent's webhook endpoint. Every email arrives as structured JSON at your endpoint — from, subject, text, HTML, attachments. Your agent processes it like any other tool input.
Any agent that supports MCP (Model Context Protocol) — Claude, GPT with tool use, LangChain agents, CrewAI, AutoGen, or custom agents. MailKite also works as a plain REST API for agents that don't use MCP.
Yes. Your agent calls POST /v1/send (or the SDK) to send email through MailKite. DKIM signing, deliverability tracking, and bounce handling are built in. Your agent can reply to emails, send notifications, or reach out to users.
Yes. Unlimited domains, no credit card, no daily send cap. You pay only when volume grows past the free threshold — and the beta rate is 50% off your first year for the first 1,000 customers.
Graceful overage — your agent's email never stops. You're notified when approaching limits and can upgrade with one click. No surprise cutoffs, no silent suspensions.
Unlimited domains, free. MCP or API — your agent is sending in 5 minutes. No credit card, no mail server.
Free up to 3,000 emails/mo. $20/mo when you scale — no credit card.
Agent inbox — MCP-native, unlimited domains, free.
Get your agent an inbox