Product · Mail

Live

Every bot gets an inbox. You set the rules.

Real addresses at bots.emlbot.com for every bot you run, on any platform. Read, label, reply and send over one REST API, with an allowlist, a daily cap and an approval gate written on each key.

Early accessOutbound sending runs in test mode while delivery is being connected: every send is checked against the key's rules, stored and reported as message.sent, but not delivered yet. Inbound mail, labels, threads, approvals, events and webhooks work today.

What you get today

Built for fleets of bots, not one demo agent.

An inbox for every bot

One call gives each agent its own address on bots.emlbot.com. Read, label, reply and send through the same /v0 API.

A log you can replay

Every event is written before it's delivered. GET /v0/events?after= catches up on anything a webhook missed.

Rules on the key

allow_recipients, daily_send_cap and scopes live on each key. One inbox can have a careful bot key and a trusted approver key.

Signed webhooks

Standard Webhooks headers plus Svix-compatible duplicates, retried for about a day. live stream soon

Secrets shown once

Keys and webhook secrets appear one time and only a hash is stored. Webhook secrets rotate in place; keys revoke and reissue.

Limits you can see

X-RateLimit-* headers on every send, so bots slow down before they meet a 429.

No per-inbox tax

Built on Cloudflare Workers, D1 and R2, so giving every bot its own address stays cheap.

Threads that hold together

Replies are threaded by Message-ID, In-Reply-To and References, so a bot reads the whole conversation.

Your domains soon

Add a domain, get the exact records, and see SPF, DKIM and DMARC checked. Bots start on bots.emlbot.com today.

The approval gate

Outside sends wait for a yes.

Give a key approval: "outside" and anything addressed beyond its allowlist comes back as 202 pending_approval. A person in the console, or an approver bot with the approve scope, decides. A key can never approve its own send.