The email API
your agent already knows
MCP-native disposable inboxes for automated tests. 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 verification links are extracted for you.
One scenario, three ways
$ 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 }
S: 220 api.email ESMTP ready C: MAIL FROM:<[email protected]> S: 250 OK C: RCPT TO:<[email protected]> S: 250 OK C: DATA C: Subject: Your verification code C: C: Your code is 482913. It expires in 10 minutes. C: . S: 250 OK: queued as 1a2b3c
Everything after "message received"
Extraction
OTP codes and verification links are parsed out of every message automatically.
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.