Skip to content

ZeroMail preview

This deployment is temporarily gated while we finish testing the production setup.

ZeroMail
How it works Use cases API OTP relay Addresses
Read the docs Get early access
How it works Use cases API OTP relay Addresses Read the docs Get early access
Free to start · built for the Zero ecosystem

Give your agent an inbox it can only read.

Email is where useful updates still arrive. ZeroMail gives your agent a safe place to receive codes, receipts, newsletters, store deals, alerts, price changes, and more.

Create the inbox first. If you do not already have a wallet, your agent can create an unfunded one for free, then upgrade it through Zero later when you want a nicer address or forwarding.

Get early access View the API

Receive-only by design — safe to share, because it can never send.

agent — inbox setup
$ create inbox wallet # unfunded, local → 0x8a4e...91c2 # saved as the inbox key $ POST api.withzero.com/auth/nonce → sign message # creates the inbox { "address": "q7m2...@withzero.com", "receive_only": true, "reads": "free" } ✓ ready

The free setup needs only a local wallet signature. Zero funding comes later, only for vanity addresses or forwarding.

Codes & confirmations. Built to receive.
Wallet included. Create one unfunded during setup.
Deals & alerts. Store email becomes useful data.
Instant push. Webhooks + SSE.

Why receive-only

Agents don't need to send. They need to listen.

Email is still where the outside world sends important things: login codes, receipts, newsletters, sale notices, shipping updates, alerts, and competitor changes. ZeroMail gives your agent that inbox without giving it a way to send mail.

What your agent can receive

  • 2FA codes, confirmations, resets, and receipts
  • Newsletters, digests, launches, and market updates
  • Store deals, price drops, and back-in-stock notices
  • Alerts, status changes, invoices, and routine updates

And the parts it can skip

  • No send, compose, or reply to set up
  • No deliverability, SPF/DKIM, or sender reputation
  • Nothing the agent can be tricked into sending
  • Safe to hand out — it can only ever receive

Use cases

Give your agent email it can watch.

ZeroMail is useful anywhere you want an agent to notice new mail, pull out the important parts, and kick off the next step.

Newsletter monitoring

Subscribe an agent to product, market, policy, or research newsletters and turn each issue into summaries, tags, and follow-up tasks.

Store deal inboxes

Give your agent a dedicated address for store emails so it can spot discounts, coupon codes, loyalty offers, and shipping updates.

Competitive monitoring

Track competitor newsletters, launch announcements, pricing emails, changelogs, webinars, and customer-facing updates in one place.

Price & availability tracking

Route back-in-stock, waitlist, renewal, and price-change emails into agents that can compare, notify, or purchase when conditions match.

Alerting pipelines

Turn alerts from SaaS tools, banks, vendors, infrastructure, or support systems into trusted webhook calls for your agent.

Receipts & account state

Keep a clean record of receipts, invoices, renewal notices, verification emails, password resets, and account status changes.

How it works

From inbox request to usable address.

Start with the email address your agent needs. Wallet setup happens inside that same flow, then the agent can read new mail through the API or receive it by webhook.

1

Create the inbox

Ask for a ZeroMail address. That is the main action; wallet setup is part of getting it.

2

Create or connect a wallet

If the user does not have one yet, the agent creates a fresh unfunded EVM wallet locally and saves the key securely.

3

Verify once

The wallet signs a short message. ZeroMail uses that signature to create the inbox and issue an API token.

4

Read mail

List, get, and search messages with filters and pagination. Free, with no per-read metering.

4

Or subscribe

New mail pushed via signed webhooks or SSE — ideal for alerts, monitoring, and code relay.

Features

An inbox made for agents.

ZeroMail keeps the useful part of email — receiving and reading — and leaves out the risky part: sending.

Made for incoming mail

Codes, confirmations, newsletters, receipts, alerts, and deal emails all arrive by email. ZeroMail lets agents read them without adding send risk.

Wallet-native identity

Create an unfunded inbox wallet or connect an existing one. A signature gives your agent a short-lived token. No email password, no send permission.

Push when it matters

Subscribe to signed webhooks or SSE and get mail the instant it arrives. No polling.

List, get & search

A simple read API with filters and pagination. Your agent gets structured message data it can classify, summarize, and act on.

Use the address you want

Start with the free address created for your wallet. Later, choose something easier to share, like name@withzero.com, or forward mail from an address you already use.

Ephemeral by default

Mail sticks around for 30 days by default: long enough to process, short enough to avoid becoming a permanent archive.

The API

Read new mail in one request.

Point any HTTP client at api.withzero.com. Authenticate with a signed token, then list, get, search, or subscribe. Unlimited reads, clean JSON.

POST /send · /reply · /compose  do not exist

There is no send API to disable or misconfigure. ZeroMail was built to receive only.

  • Cursor pagination — stable, resumable list and search across incoming mail.
  • Wallet auth — a signature gives your agent a short-lived token; the private key stays local.
  • Zero upgrade path — fund or import the same wallet through Zero when you want paid address features.
Read the docs GitHub repo
# List incoming deal and alert messages $ curl -s https://api.withzero.com/v1/mailboxes/me/messages \ --get -d "limit=10" -d "subject_contains=back in stock" \ -H "Authorization: Bearer $ZERO_TOKEN" { "messages": [ { "message_id": "msg_2t8f...a91", "from": "alerts@store.example", "subject": "Back in stock: size M", "received_at": "2026-06-18T14:02:11Z" } ], "next_cursor": "c_8Kd0..." }
// Create or load a local inbox wallet import { generatePrivateKey, privateKeyToAccount } from "viem/accounts"; const key = process.env.ZEROMAIL_PRIVATE_KEY || generatePrivateKey(); const account = privateKeyToAccount(key); const wallet = "eip155:8453:" + account.address; const post = (path, body) => fetch("https://api.withzero.com" + path, { method: "POST", headers: { "content-type": "application/json" }, body: JSON.stringify(body) }).then(r => r.json()); const nonce = await post("/auth/nonce", { wallet, rail: "evm" }); const signature = await account.signMessage({ message: nonce.message }); const auth = await post("/auth/verify", { wallet, rail: "evm", nonce: nonce.nonce, message: nonce.message, signature }); const res = await fetch( "https://api.withzero.com/v1/mailboxes/me/messages?limit=1", { headers: { Authorization: `Bearer ${auth.access_token}` } } ); const { messages } = await res.json(); console.log(messages[0].snippet);
# Subscribe to a stream of new mail (SSE) $ curl -N https://api.withzero.com/v1/mailboxes/me/stream \ -H "Authorization: Bearer $ZERO_TOKEN" event: ready data: {"mailbox_id":"mbx_..."} # Or register an HMAC-signed webhook: # every push carries X-Zero-Signature so you # can verify it really came from ZeroMail. ✓ verified → deliver to agent

See the docs for auth, exact response bodies, and the current v1 reference.

One high-frequency use case

OTP & 2FA relay, the instant the code lands.

No polling— pushed, not pulled

Agents constantly hit verification walls — sign-ups, logins, resets. The code lands in a wallet-owned inbox and is pushed to your agent over webhook or SSE, parsed and ready.

The same push path works for any email-triggered workflow: alerts, newsletters, store updates, receipts, competitor changes, or anything else your agent should notice.

Get early access
Agent requests a loginService emails a verification code
Lands in ZeroMailWallet-owned, receive-only inbox
Pushed over webhook / SSEParsed, HMAC-verified, instant
Agent enters the codeVerified — no human in the loop
481209

Addresses

Use the free address now. Pick a nicer one later.

Every inbox wallet gets an address automatically. Use it for codes, receipts, alerts, newsletters, store deals, and anything else your agent should watch. If you want an address that is easier to remember or share, you can add one later.

Included address

Free to use

An inbox created for a local wallet, ready in seconds. Good for codes, receipts, alerts, newsletters, store emails, and monitoring feeds.

  • An email address for your wallet
  • Free reads, search, and API access
  • Webhooks + SSE push
  • 30 days of message history
Get started free
$1 / month

Nicer address

$1 / month, in USDC

Choose an address that looks better, is easier to remember, or is dedicated to a specific workflow. The API is still free.

  • Everything in the free address
  • A custom handle like name@withzero.com
  • Forward newsletters, deals, alerts, or receipts
  • Bring your own domain via MX
Get early access

The API is free either way. The monthly charge only applies if you want the nicer address. Get started.

Early access

Give your agent an inbox in seconds.

ZeroMail is in active development. Tell us what email workflows you want your agent to monitor — we'll get you in early.

Get early access View on GitHub

No public signup yet · receive-only, always

ZeroMail

Receive-only email for AI agents — codes, receipts, newsletters, alerts, deals, and other mail your agent should read. Built for the Zero ecosystem.

Early access · in development

Product

How it works Use cases OTP relay Addresses

Developers

API overview Documentation GitHub repo api.withzero.com

Connect

withzero.com Get early access hello@withzero.com
© 2026 ZeroMail · withzero.com Receive-only by design.