Give your agent a real email inbox.
Modern agents need to sign up for services, confirm accounts, and handle email-based workflows. catchotp exposes inboxes as a first-class MCP tool — structured JSON in, real-time waiters out.
- MCP-native
- Works with Claude, OpenAI, LangGraph
- Per-agent isolation
The problem agents hit at email
The first non-trivial task an autonomous agent runs into is account creation. Almost every useful service on the internet requires an email address, then sends a verification code or magic link, then refuses to proceed until that flow is closed. Without a programmable receive-side, the agent is stuck — it cannot create the account it needs to do the work it was given.
Existing options are uncomfortable. Disposable-inbox sites have no API and are aggressively blocked. Wiring the agent into your personal Gmail via OAuth gives it your real inbox and an alarming blast radius. Self-hosting an SMTP catcher is a week of work for what should be a tool call.
Anthropic's Model Context Protocol made this a first-class category: agent tools defined once and reusable across every MCP-aware host. catchotp is built for that surface.
An MCP-native inbox
Drop-in MCP server
npx @catchotp/mcp runs a
stdio MCP server that exposes the inbox API as agent-callable tools. Add it to Claude
Code, Cursor, or any MCP host.
Structured JSON responses
Every message returns parsed text, HTML, headers, deduped links, and detected OTPs as structured JSON. No HTML parsing in the model.
Long-poll waiters
Agents can yield on wait_for_otp
instead of busy-looping. The waiter resolves the moment the code lands.
Without catchotp vs with catchotp
| Concern | Without catchotp | With catchotp |
|---|---|---|
| Account creation | Blocked at email step | One tool call |
| Blast radius | Personal Gmail | Per-task disposable inbox |
| Wait pattern | Polling loop in tokens | Single yield on long-poll |
| Body parsing | Model parses raw HTML | Structured JSON, OTP pre-extracted |
| Auditability | Implicit in transcripts | Audit log per inbox |
A complete agent example
Three views of the same workflow: the MCP host configuration, the user prompt the agent will act on, and the bare-metal Anthropic SDK loop if you want to build it without MCP.
// Claude Desktop · ~/.config/claude/claude_desktop_config.json
{
"mcpServers": {
"catchotp": {
"command": "npx",
"args": ["-y", "@catchotp/mcp"],
"env": {
"CATCHOTP_API_KEY": "sk_live_..."
}
}
}
} AI agent email FAQ
What is MCP?
Do I have to use Anthropic models?
Is this safe? What stops an agent from reading other users' inboxes?
How does this compare to giving the agent a Gmail OAuth token?
Can I use webhooks instead of waiters?
Related use cases
Burner addresses
Programmable burner inboxes on a real domain — not on disposable-email blocklists.
OTP testing
Drop-in waiters for one-time codes in your existing test runner.
Read the SDK reference or jump straight to pricing.
Wire your agent into a real inbox.
The MCP server is one config block away. Free tier covers most agents.