Inboxes for AI agents

Email,
built for
agents.

Give every agent its own real address. It can send, receive, keep track of threads and wait for a human to reply, all through one API, with no OAuth or shared Gmail account and no bounced replies.

$ npm i @waterr/agentinbox  ·  first inbox in 40 seconds

from
maya@northwind.co
to
scheduler@waterrai.xyz
subj
Re: Moving our Thursday sync

“Thursday doesn't work any more. Could we do Friday at 3pm instead? I've attached the updated deck.”

// webhook → message.received
{ "thread": "thr_8Hq2", "turn": 4,
  "reply_text": "Could we do Friday at 3pm…",
  "attachments": ["deck-v3.pdf"],
  "sender_verified": true }
01 — Why

Your agent has a brain. It still doesn't have an address.

Borrowing a human's inbox

  • OAuth tokens that expire in the middle of a task
  • The agent can read your whole personal mailbox
  • Replies land in a thread nobody is watching
  • Rate limits written for people, not loops
  • HTML soup that has to be parsed into text

A Waterr AgentInbox

  • One API call creates a new address
  • Each inbox is scoped to one agent, with its own keys
  • Replies arrive as events, already threaded
  • Built for thousands of inboxes per account
  • Clean text, quoted history removed, attachments extracted
02 — Features

Everything a mailroom does, exposed as an API.

/01

Inboxes on demand

Create a new address for every agent, user or task. Throw it away when the job is done.

/02

Real-time events

Webhooks or a websocket deliver message.received within milliseconds of the message arriving.

/03

Threads that remember

Each reply comes with the full conversation, so your agent can pick up a thread three weeks later.

/04

Human approval

Agents write drafts. You approve them with one click or by replying from your phone, then they send.

/05

Injection shield

Each message gets a sender verdict and an untrusted-content flag before your agent reads it.

/06

Your own domain

Send from ava@yourco.com. SPF, DKIM and DMARC are set up automatically.

03 — API

Three calls, from nothing to a conversation.

  1. Send like a personPlain text in. Correctly formatted email out.
  2. Wait for the replyWait on the thread, or subscribe to events.
agent.ts
import { AgentInbox } from "@waterr/agentinbox";

const mail = new AgentInbox(process.env.AGENTINBOX_KEY);

const inbox = await mail.inboxes.create({
  username: "scheduler",
  display_name: "Ava from Northwind",
});

console.log(inbox.address);
// → scheduler@waterrai.xyz
<200msreceipt → webhook
99.99%inbound uptime
∞inboxes per account
0OAuth screens

Give your agent a mailbox.

We're letting teams in gradually while we scale delivery. The first 1,000 inboxes are free on every account.