Early access is open

The inbox built for
AI agents

Typed messages, webhooks, email, and SMS in one durable inbox. Your agent reads state as data — not prose — and never loses an event while it's offline.

agent — zsh
$ npx @agent-inbox/cli skill install
✓ skill installed — your agent now has an inbox

$ npx @agent-inbox/cli messages list --channel webhook
┌──────────────┬──────────────────┬─────────────┐
│ schema       │ thread           │ received    │
├──────────────┼──────────────────┼─────────────┤
│ task/result  │ job-1842         │ 12s ago     │
│ stripe/event │ in_1QKx…         │ 2m ago      │
│ task/result  │ job-1841         │ 9m ago      │
└──────────────┴──────────────────┴─────────────┘

$ # webhooks landed while the agent was offline. nothing lost.

One inbox, every channel

Stop rebuilding transport for every agent

Agent Inbox replaces the pile of glue code between your agents and the outside world with a single durable, typed message log.

Typed messages

Schema-tagged payloads with threads, metadata, and attachments. State arrives as data your agent can act on immediately — no context window wasted reconstructing it from prose.

POST /v1/messages
{
  "recipient_account_id": "acc_target",
  "schema_id": "task/result@v1",
  "thread_key": "job-1842",
  "metadata": { "status": "completed", "latency_ms": 284 },
  "parts": [{
    "kind": "inline_json",
    "name": "result",
    "value": { "summary": "done" }
  }]
}

Webhook ingress

Hosted endpoints catch external traffic around the clock. Events wait in the inbox until your agent reconnects.

POST https://api.agent-inbox.co/i/{address}
→ 202 accepted — held until your agent syncs

Email

Managed mailboxes out of the box. Bring your own domain on paid plans.

SMS

Provision numbers and send or receive texts through the same API.

CLI and agent skill

Deterministic, scriptable, agent-first. Install the skill once and every workflow has an inbox primitive.

npx @agent-inbox/cli skill install

Durable sync

Cursor-based catch-up and long-poll subscribe. No public callback URLs, no missed deliveries.

GET /v1/sync?cursor=CURSOR
GET /v1/inbox/subscribe?cursor=CURSOR&timeout_seconds=20

How it works

Three commands to a working inbox

01

Install the skill

One command gives your agent an inbox, an API key, and a CLI it already knows how to drive.

npx @agent-inbox/cli skill install
npx @agent-inbox/cli schema
02

Send typed messages

Move structured state between agents instead of re-deriving it from prose every time.

curl -s https://api.agent-inbox.co/v1/messages \
  -H 'authorization: Bearer aix_[workspace_token]' \
  -d '{ "schema_id": "task/result@v1", … }'
03

Catch everything else

Webhooks, email, and SMS land in the same inbox — held durably while your agent is offline.

npx @agent-inbox/cli ingress create \
  --json '{ "channel": "webhook", "auth_mode": "bearer_secret" }'

Guarantees

Built so agents can rely on it

Transport is the least interesting part of an agent — and the first thing to break. These are the properties we hold fixed.

API keys stay the agent interface

Agents authenticate with keys and the CLI. No browser flows, no session juggling.

Nothing is lost while you're offline

Webhooks and messages persist in a durable log. Reconnect, sync from your cursor, continue.

One model for every channel

Typed messages, webhook events, email, and SMS share the same inbox, threads, and contacts.

Humans and agents share the system

Owners get a clean control plane over the exact same data their agents operate on.

Give your agents an inbox

We're onboarding teams from the waitlist. Tell us which channels matter first and what your agents should do with them.