Disposable email inboxes for AI agents — OTPs and magic links auto-extracted. No signup needed.
Email verification for AI agents — an MCP server that gives Claude, Cursor, Claude Code, and any MCP client disposable email inboxes with auto-extracted OTPs and magic links.
Your agent signs up for a service. The service sends a verification code. Without an inbox it can read, the agent is stuck. With zerodrop-mcp:
Agent: generate_inbox()
→ swift-x7k29ab@zerodrop-sandbox.online
Agent: [fills the signup form with that address]
Agent: wait_for_email(inbox, require_otp: true)
→ { "otp": "847291", "subject": "Verify your email", ... }
Agent: [enters 847291 — flow complete]
No Docker. No SMTP. No API key. No signup. Free tier works out of the box.
claude mcp add zerodrop -- npx -y zerodrop-mcp
Add to claude_desktop_config.json:
{
"mcpServers": {
"zerodrop": {
"command": "npx",
"args": ["-y", "zerodrop-mcp"]
}
}
}
Add to .cursor/mcp.json (project) or ~/.cursor/mcp.json (global):
{
"mcpServers": {
"zerodrop": {
"command": "npx",
"args": ["-y", "zerodrop-mcp"]
}
}
}
generate_inboxCreates a disposable email address. Local and instant — no network request.
| Param | Type | Description |
|---|---|---|
prefix | string, optional | Prefix for the inbox name, e.g. your app name |
Returns the inbox address and a live watch URL.
wait_for_emailBlocks until a matching email arrives, then returns it with the OTP and magic link already extracted — the agent never parses HTML or regexes a body.
| Param | Type | Description |
|---|---|---|
inbox | string | Address from generate_inbox |
timeout_seconds | number, optional | Default 30, max 120 |
from_contains | string, optional | Filter by sender |
subject_contains | string, optional | Filter by subject |
require_otp | boolean, optional | Only match emails with an OTP |
require_magic_link | boolean, optional | Only match emails with a magic link |
Returns:
{
"from": "noreply@yourapp.com",
"subject": "Your verification code",
"received_at": "2026-07-18T12:34:56Z",
"otp": "847291",
"magic_link": null,
"body_preview": "Your code is: 847291..."
}
check_inboxNon-blocking snapshot of the inbox — recent emails with extracted fields, or an empty list.
Emails sent to a generated inbox are caught at Cloudflare's edge by ZeroDrop's open-source worker. OTPs and magic links are extracted at the edge before your agent reads them. Inboxes auto-delete after 30 minutes on the free tier.
Environment variables (set in your MCP client config):
| Variable | Default | Description |
|---|---|---|
ZERODROP_API_KEY | — | Workspace key. Omit for free sandbox mode. |
ZERODROP_BASE_URL | https://zerodrop.dev | Self-hosted instance URL |
{
"mcpServers": {
"zerodrop": {
"command": "npx",
"args": ["-y", "zerodrop-mcp"],
"env": { "ZERODROP_API_KEY": "your-key" }
}
}
}
If you're generating test code rather than driving flows live, use the SDKs directly:
npm · PyPI · Go · RubyGems · Packagist · JitPack · GitHub Action
AI coding assistant context: docs.zerodrop.dev/ai-coding
ZERODROP_BASE_URL (zerodrop.dev by default) — nothing elseMIT — zerodrop.dev
Source-derived launch command. Check the maintainer’s required arguments and credentials before running:
npx -y zerodrop-mcpMerge this template into ~/Library/Application Support/Claude/claude_desktop_config.json. Keep existing servers. Add any arguments, credentials, and permissions required by the maintainer; this template has not been install-tested.
{
"mcpServers": {
"dev-zerodrop-zerodrop-mcp": {
"command": "npx",
"args": [
"-y",
"zerodrop-mcp"
]
}
}
}Restart Claude Desktop completely for changes to take effect. Confirm the server appears connected in the client’s tool list, then try a read-only example from its documentation.
Claude Desktop setup referencezerodrop-mcpnpmZeroDrop works with any MCP-compatible client. Copy the config snippet from the Configuration section above and add it to the file shown for your client, then restart the application.
~/Library/Application Support/Claude/claude_desktop_config.jsonRestart Claude Desktop completely for changes to take effect.~/.cursor/mcp.jsonRestart Cursor for changes to take effect..vscode/mcp.jsonReload VS Code window for changes to take effect.~/.codeium/windsurf/mcp_config.jsonRestart Windsurf for changes to take effect..mcp.jsonSave at the project root, then start Claude Code in that project and review the MCP server approval prompt. Keep real credentials out of shared files.