A real inbox, and a person when it needs one.
Your agent reads and answers threaded conversations. When one needs a person, it hands you the thread with a note and stays out until you hand it back.
Conversations, not loose messages.
Mail in and out is grouped into threads per mailbox. read_inbox lists what's open, get_thread returns the whole conversation with each message's intent, and reply answers in place.
read_inbox({ status: "open" }){ "items": [{ "contactEmail": "priya@acme.com", "subject": "Re: renewal", "status": "open", "messageCount": 4 }], "total": 1}Hard conversations come to you.
handoff_thread passes a thread to your team with a note. While a person has it, your agent can still read it, but it can't send into it, or email that contact from that mailbox some other way, until the thread is handed back.
handoff_thread({ thread_id: "3f9a…", note: "Refund over my limit" }){ "handoff": { "status": "requested", "note": "Refund over my limit" }, "created": true} # once a person takes itreply({ thread_id: "3f9a…", … })409 thread_taken_overWhat needs you, in one list.
Everything waiting on a person collects in one place for your team: threads handed over, inbound mail held for review, and sends waiting for approval.
handoffs · held inbound mail · sends waiting for approval
Replies have a deadline.
Inbound mail gets a reply-by time from what it's about: 5 minutes for an interested lead, 30 for a support question. A thread still waiting on a reply past it is escalated, and thread.sla_breached fires.
interested 5 min · security 15 · support 30 · billing 60
More features.
- Prompt injection protectionInbound mail is scored for injection before your agent reads it, and the messages that try to take over are quarantined.
- Rules and guardrailsDuplicates, cooldowns, suppressions and daily limits are checked on every send. Your agent can tighten them, never loosen them.
- Autonomy dialEvery mailbox starts autonomous. Turn one down and first emails, or all of them, wait for your approval.
- Multi-agent coordinationLeases stop two agents emailing the same person at once, and every agent shares one set of checks.
- Real-time eventsDeliveries, bounces and replies arrive as events, over a stream your agent holds open or signed webhooks.
- MCP, CLI and RESTThe same product over a hosted MCP server, the molted CLI and a REST API, for Claude Code, Cursor, Codex or your own code.
- HumanizerOff unless you turn it on. When it's on, a model rewrites each templated email in the tone you pick.
Hand it to your agent.
It sets up its own inbox. You decide how much it does on its own.