Skip to content

An inbox and a verified domain in 60 seconds.

Mailbay is email for AI agents and apps. Create inboxes, send and receive mail, and wait for sign in codes from one API, a CLI or MCP.

Private beta, free while it lasts: 3 inboxes, 3,000 emails a month and custom domains, no card.

zshCopy command
$ mailbay inbox create support✓ Created inbox ibx_01jbz8w4k2q9  address support@k7m3qz.mailbay.email$ mailbay wait ibx_01jbz8w4k2q9 --subject code● Waiting for mail to support@k7m3qz.mailbay.email✓ Received 1 message  from    auth@yourapp.dev  subject Your sign in code  code    482913$ 
support@k7m3qz.mailbay.email

No mail yet

Send anything to support@k7m3qz.mailbay.email

Y
auth@yourapp.devnow

Your sign in code

spfpassdkimpassdmarcpass

Use this code to finish signing in. It expires in 10 minutes.

Extracted code

Codes and links are extracted for your agent

Three commands from nothing to receiving mail.

The same action has the same name everywhere: the API, the CLI, the MCP server and the dashboard all call one function.

  1. 1

    Sign in

    Sign in with your email, no password and no card. Create an API key in the dashboard and hand it to the CLI once.

    $ mailbay login
  2. 2

    Create an inbox

    Every workspace gets a private address space on mailbay.email. A new address receives mail the moment the command returns.

    $ mailbay inbox create support
  3. 3

    Wait for mail

    Blocks until the message you need arrives and prints the codes and links in it. Agents get the same as the MCP tool wait_for_email.

    $ mailbay wait <inbox id> --subject code

Your agent signs up for things. Give it an inbox.

Create an address, hand it to a sign up form, and block until the code arrives. One long poll replaces your polling loop and your regex.

  • wait_for_email returns the message with codes and links already extracted
  • SPF, DKIM and DMARC results on every inbound message
  • Cursor pagination and idempotency keys on every create

Every error says how to fix it.

402 Payment Required
{
  "error": {
    "code": "inbox_limit_reached",
    "message": "the free plan allows 3 inboxes",
    "fix": "Delete an inbox with `mailbay inbox delete <id>` or upgrade your plan"
  }
}
# 1. Create an inbox on your free subdomain
curl -X POST https://api.mailbay.dev/v1/inboxes \
  -H "Authorization: Bearer $MAILBAY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"local_part": "signup-bot", "display_name": "Signup bot"}'

# {"id": "ibx_01jbz8w4k2q9...", "address": "signup-bot@k7m3qz.mailbay.email", ...}

# 2. Block until the sign in code arrives (long poll, up to 60s)
curl "https://api.mailbay.dev/v1/inboxes/ibx_01jbz8w4k2q9/wait?subject=code&timeout=60" \
  -H "Authorization: Bearer $MAILBAY_API_KEY"

Built for the email your agents actually handle.

Each flow below is a real sequence of MCP tool calls or API requests.

Sign up and verify

Your agent creates a fresh address, signs up for a service with it, and waits for the one time code. Two tool calls, no inbox polling.

  1. create_inbox{ "local_part": "signup-bot" }
    signup-bot@k7m3qz.mailbay.email
  2. wait_for_email{ "subject": "code", "timeout": 60 }
    codes: ["482913"]

Run a support inbox

Point support@ on your own domain at Mailbay. The agent reads whole threads and replies in them, with headers that keep the thread intact in Gmail and Outlook.

  1. list_threads{ "inbox": "support@acme.com" }
    3 threads with new mail
  2. get_thread{ "id": "thr_01jc0f..." }
    4 messages, oldest first
  3. reply{ "message_id": "msg_01jc0g...", "text": "..." }
    queued, In-Reply-To set

Take in documents

Invoices, receipts and contracts arrive as attachments. Wait for the email, read each attachment's name and type, and fetch the full original message with the files inside.

  1. wait_for_email{ "inbox": "invoices@acme.com" }
    1 attachment: invoice-0142.pdf
  2. GET/v1/messages/msg_01jc1a.../raw
    the original .eml, attachment included

Built on our own mail servers.

No third party relay sits between you and the inbox. We run the MX servers that receive your mail and the MTA that sends it, so we can tell you exactly what happened to every message.

Inbound

  1. senderAny mail server on the internetDelivers to our MX like it would to any other
  2. mx1.mailbay.devOur Rust SMTP serverUnknown addresses are refused during the SMTP session
  3. checksSPF, DKIM, DMARC, spam scorespfdkimdmarcResults ship on every message object
  4. your agentAPI, webhook or wait_for_emailStored before we answer 250, then handed to you

Outbound

  1. your appPOST /v1/inboxes/{id}/messagesIdempotency keys make retries safe
  2. coreLimits, suppressions, MIMEA suppressed address fails fast, with the fix
  3. KumoMTADKIM signed, on our IPsFree and paid sending leave from separate IP pools
  4. recipientGmail, Outlook, Yahoo and the restBounces and complaints become suppressions
Rejected at the door
Mail for an address that does not exist is refused during the SMTP session, so nobody receives backscatter from us.
Accepted means stored
Our server answers 250 only after the message is committed to the database. A crash cannot lose mail we accepted.
Checked on arrival
SPF, DKIM and DMARC are verified on every inbound message and the results ship on the message object.
Separate reputations
Free inboxes live on mailbay.email, apart from mailbay.dev, and free and paid sending leave from separate IP pools.
Bounces handled
Hard bounces and complaints become suppressions for your account, so a bad address fails fast instead of hurting delivery.
Your mail stays yours
Message bodies are read only by your keys and your agents. No third party analytics anywhere in the product.

How Mailbay compares.

AgentMail and OpenMail are good products for agent inboxes. Here is where we differ.

FeatureMailbayAgentMailOpenMail
Free inboxes on your own private domain (k7m3qz.mailbay.email)
Custom domains on the free planFrom the $20 planPaid plans
One click DNS setup on Vercel and Cloudflare
MCP server
Free plan with 3 inboxes and 3,000 emails a month

From each product's public pages, October 2026 (AgentMail plans: agentmail.to/pricing). A dash means we could not confirm it either way. Spot a mistake? Tell us and we will fix it.

Start free. Stay free while you build.

Every plan is the whole product: API, CLI, MCP and the dashboard. Upgrade when you need more inboxes or volume.

  • Free

    Free during beta

    $0a month

    • 3 inboxes
    • 3,000 emails a month
    • 3 custom domains
  • Pro

    Recommended

    $9a month

    • 25 inboxes
    • 50,000 emails a month
    • 10 custom domains
  • Scale

    $99a month

    • 250 inboxes
    • 250,000 emails a month
    • Unlimited custom domains
  • Enterprise

    Custom

    • Dedicated IPs
    • Priority support
    • Volume pricing

No card for the free plan. New accounts send up to 100 emails a day for their first 7 days.

See full pricing

Questions, answered.

What is mailbay.email?
Our shared domain for instant inboxes. Each workspace gets a private random code, so your first inbox is something like support@k7m3qz.mailbay.email and works before you touch DNS. Any other address under your code lands in a Catch-all inbox. It is kept apart from mailbay.dev so abuse on free inboxes cannot affect our own reputation.
Can I use my own domain on the free plan?
Yes. Add it with one API call or the add_domain MCP tool. If it is on Vercel or Cloudflare, we write the records for you. Anywhere else you copy them and the dashboard checks each one live.
My domain already receives email. Will you break it?
No. We never delete existing MX records. If your domain already receives mail elsewhere, we suggest a subdomain such as agents.acme.com instead.
How does my agent use it?
Through the MCP server: the remote server at mcp.mailbay.dev/mcp with your API key as a bearer token (OAuth sign in is coming), or mailbay-mcp stdio locally. Tools include create_inbox, send_email, reply, get_thread and wait_for_email.
Do I need a credit card?
No. The free plan has no card and no trial period.
Do you read or track my email?
No. Message bodies are read only by your own keys and agents. There are no third party analytics or trackers in the site, the dashboard or the API.
Why do new accounts have a daily send limit?
We send from our own IPs, so we protect them. New accounts send up to 100 emails a day for their first 7 days. When a limit applies, the API error says exactly what it is and when it resets.

Create your first inbox.

$ mailbay inbox create support