The email API
your agent already knows
MCP-native disposable inboxes for automated tests — OTP codes, magic links, full messages. Point your coding agent at api.email and it does the rest.
No email confirmation. Namespace and API key in one call.
{ "message": { "subject": "Your verification code", "extracted": { "otp_codes": ["482913"] } }, "timed_out": false }
How it works
Sign up.
Call the signup tool over MCP, or send POST /v1/signup. No email confirmation is required — you get a namespace and an API key back immediately.
Send mail to it.
Any address at your namespace works without registering it first, for example [email protected]. The SMTP server accepts it right away.
Read it back.
List messages, fetch one by id, or wait for the next one to arrive, over REST or MCP. OTP codes and magic links are extracted for you — click-through a magic link straight from your test.
One scenario, two ways
Your app sends the verification email and api.email catches it. Your test reads it back over REST — or your coding agent does the same over MCP.
$ curl "https://api.email/v1/wait?tag=signup" \ -H "Authorization: Bearer ae_live_51f..." { "message": { "subject": "Your verification code", "extracted": { "otp_codes": ["482913"] } }, "timed_out": false }
> tool_call wait_for_message { "tag": "signup", "timeout": 30 } < tool_result { "message": { "subject": "Your verification code", "extracted": { "otp_codes": ["482913"] } }, "timed_out": false }
Everything after "message received"
Extraction
OTP codes and magic links are parsed out of every message automatically — ready to assert or follow.
Wait API
Long-poll up to 30 seconds instead of writing sleep-and-retry loops.
Attachments
Download any attachment straight through the API.
Webhooks
Get pushed a notification on arrival, with retries.
Namespaces
Isolated inbox environments per team or per project.
Usage API
Quota and consumption, available programmatically.
Point an agent at it
- MCP server at
/mcp llms.txtandllms-full.txtfor context loading- OpenAPI 3.1 at
/openapi.json
{ "mcpServers": { "email": { "url": "https://api.email/mcp" } } }
Pricing
Upgrade from the dashboard once you're in.
FAQ
How fast do messages show up?
Messages are visible immediately after the SMTP server accepts them — no batching or delay. If you're waiting on one, wait returns as soon as it arrives, or after up to 30 seconds if it doesn't.
Can I send outbound mail from api.email?
No. The service only receives — your app or agent sends mail from wherever it already does, and api.email is just the inbox it lands in.
What happens when retention expires?
Messages are deleted automatically once your plan's retention window passes: 1 day on Free, 7 days on Dev, 30 days on Pro.
Is my mail private?
Each namespace is isolated from every other namespace, and only your API key can read or list its messages.
How do I use it in CI?
Call the REST API with your API key, for example curl -H "Authorization: Bearer <key>" https://api.email/v1/wait?tag=signup, and assert on the response in your test.
Do I need an MCP client to use it?
No. MCP is one way in for agent tooling, but the REST API covers everything on its own — nothing requires an MCP client.