Skip to main content
Glama
zerodrop-dev

zerodrop-mcp

by zerodrop-dev

zerodrop-mcp

npm CI license

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.

Install

Claude Code

claude mcp add zerodrop -- npx -y zerodrop-mcp

Claude Desktop

Add to claude_desktop_config.json:

{
  "mcpServers": {
    "zerodrop": {
      "command": "npx",
      "args": ["-y", "zerodrop-mcp"]
    }
  }
}

Cursor

Add to .cursor/mcp.json (project) or ~/.cursor/mcp.json (global):

{
  "mcpServers": {
    "zerodrop": {
      "command": "npx",
      "args": ["-y", "zerodrop-mcp"]
    }
  }
}

Related MCP server: courier-mcp

Tools

generate_inbox

Creates 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_email

Blocks 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_inbox

Non-blocking snapshot of the inbox — recent emails with extracted fields, or an empty list.

What agents use this for

  • Testing auth flows end to end — signup → OTP → verified, driven entirely by the agent

  • QA automation — Claude Code writing and running Playwright tests that need real inboxes

  • Autonomous workflows — any agent task that hits an email-verification wall

  • Development — "sign up for my own app and tell me if the verification email works"

How it works

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.

Configuration

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" }
    }
  }
}

Writing tests instead?

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

Security

  • The server makes requests only to ZERODROP_BASE_URL (zerodrop.dev by default) — nothing else

  • Inbox generation is fully local

  • Two runtime dependencies: the official MCP SDK and zod

  • Report issues: founder@zerodrop.dev

License

MIT — zerodrop.dev

Available Tools

3 tools
check_inboxA

Check a ZeroDrop inbox right now without waiting. Returns the most recent emails with OTPs and magic links already extracted, or an empty list if nothing has arrived yet.

ParametersJSON Schema
NameRequiredDescriptionDefault
inboxYesThe inbox address (or name) returned by generate_inbox

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Without annotations, the description provides key behavioral traits: it is non-waiting, returns extracted data, and returns empty if no emails. Additional details like error handling are absent but acceptable for a simple check tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, first sentence states action, second defines result. No wasted words, front-loaded with critical info.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with one parameter and no output schema, the description adequately explains return format and usage. It is sufficient given the sibling context, though lacks details on handling non-existent inboxes.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema already describes the single required parameter. The tool description adds no extra detail about the parameter beyond repurposing the tool's context.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool checks a ZeroDrop inbox and returns recent emails with extracted OTPs/magic links or an empty list, distinguishing it from siblings like generate_inbox and wait_for_email.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It implies use for immediate polling ('right now without waiting'), which contrasts with the likely waiting behavior of sibling wait_for_email, but does not explicitly state when not to use or mention alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_inboxA

Generate a disposable email inbox for testing signups, OTP verification, magic links, and password resets. Instant and local — no network request. Use the returned address wherever an email is required, then call wait_for_email to read what arrives. Free tier: 30-minute retention, no signup needed.

ParametersJSON Schema
NameRequiredDescriptionDefault
prefixNoOptional prefix for the inbox name, e.g. your app or test name

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It discloses key behaviors: instant, local, no network request, and free tier limits. This provides good transparency for a simple tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences that front-load purpose and provide essential usage guidance. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description still explains how to use the result (call wait_for_email) and mentions limitations (30-minute retention). Could explicitly state return format but is sufficient for a simple tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one optional parameter 'prefix' with schema description. The tool description does not add extra meaning beyond the schema. Since schema coverage is 100%, baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool generates a disposable email inbox for testing signups, OTP verification, etc. It distinguishes from sibling tools by indicating that after generating, one should call wait_for_email to read what arrives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains when to use it (testing signups, etc.) and explicitly references wait_for_email for reading. It also mentions free tier details (30-minute retention, no signup). It does not explicitly state when not to use it, but context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wait_for_emailA

Wait for an email to arrive in a ZeroDrop inbox and return it with the OTP and magic link already extracted — no parsing needed. Blocks until an email matching the filters arrives or the timeout is reached. Use after triggering a signup, login, or password-reset flow.

ParametersJSON Schema
NameRequiredDescriptionDefault
inboxYesThe inbox address (or name) returned by generate_inbox
require_otpNoOnly match emails with an extracted OTP code
from_containsNoOnly match emails whose sender contains this text
timeout_secondsNoHow long to wait before giving up (default 30, max 120)
subject_containsNoOnly match emails whose subject contains this text
require_magic_linkNoOnly match emails with an extracted magic link

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, description carries full burden. It discloses blocking behavior, email extraction, and timeout, providing full transparency for an agent to predict behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, no fluff, front-loaded with core functionality. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema, but description explains return value (email with extracted OTP/magic link). Also covers blocking and timeout, making it complete for a polling tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. Description adds value by noting return behavior (OTP/magic link extraction) but does not elaborate on individual parameters beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool waits for an email, returns it with OTP and magic link extracted, and distinguishes itself from siblings like check_inbox (non-blocking) and generate_inbox (creation).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says 'Use after triggering a signup, login, or password-reset flow', providing clear context. It implies blocking behavior and mentions timeout, but does not explicitly state when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 3 tool updatesv0.1.2
    • First observedcheck_inbox
    • First observedgenerate_inbox
    • First observedwait_for_email

TDQS

A4.4/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose: generate_inbox creates an inbox, wait_for_email blocks for incoming emails, and check_inbox polls immediately. There is no overlap in functionality.

Naming Consistency4/5

Tools generally follow a verb_noun pattern (generate_inbox, check_inbox), but wait_for_email deviates slightly with a preposition. Overall, names are intuitive and consistent in style.

Tool Count5/5

Three tools is well-scoped for a disposable email service. It covers creation, polling, and blocking waiting without unnecessary extras.

Completeness5/5

The set covers the essential lifecycle for email testing: create an inbox, wait for an email, and check for emails instantly. Missing operations like deletion are handled automatically by the service, so no gaps.

Maintenance

ActivitySlowing
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Create disposable email inboxes, extract OTP codes in 15 languages, and receive webhooks — all from your AI agent. One call: create inbox → wait for email → get the verification code. Supports 7 domains, email forwarding, and HMAC-signed webhooks with OTP included in payload. Free tier available.
    8
    16
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to create disposable email inboxes and automatically extract OTPs, magic links, and verification codes from incoming emails.
    24
    MIT
  • A
    license
    A
    quality
    F
    maintenance
    Enables AI agents to create temporary email addresses, receive confirmation emails, and extract verification links, automating sign-up and email verification workflows without manual intervention.
    6
    32
    61
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Email for AI agents. Create inboxes, send and receive emails without phone or CAPTCHA.
    22
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/zerodrop-dev/zerodrop-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server