Email addresses for your AI agents.
coss.com Inboxes give every AI agent its own email address. Mail arrives as threads with a webhook per message, and the agent replies from the same address.
How it works
Create an address, get a webhook when mail arrives, reply from the same address. The thread keeps the whole conversation.
// 1. Give the agent an address.
const { : } = await ..({
: "support-agent",
: "agent-42", // creating it again returns the same inbox
});
// 2. When mail arrives, read the thread and reply.
const = await (await .(), ., );
if (. === "inbox.message.received" && !..) {
const { , , } = .;
const { : } = await ...(, );
const = (?. ?? []).(() => .).("\n\n");
await ...(
,
,
{ : await () },
{ : `reply-${}` },
);
}Built for agents
Everything an agent needs to hold a conversation over email, and nothing it has to parse itself.
An address per agent
One call creates username@domain. A client_id makes creating idempotent, so every agent, user or task can get its own address without a lookup table. Mail to username+anything@ reaches the same inbox.
Threads, not raw mail
Messages are grouped by In-Reply-To and References, or by subject and participants within 30 days. Each thread lists its participants, a preview and when the last inbound message arrived.
Just the new words
Every message has text, html and extracted_text: the sender's own words without the quoted conversation and the signature, ready for a prompt.
Replies that thread
coss.inboxes.messages.reply() answers the sender (or everyone, with reply_all) with Re: and the headers every mail client threads by. The answer to it lands in the same thread.
A webhook per message
inbox.message.received carries the inbox, thread and message ids, whether it started a thread, and a spam verdict. Signed like every coss.com webhook, retried until your endpoint takes it.
Your domain or ours
Without DNS, an inbox receives at your environment's subdomain of coss.com's inbound domain. On a receiving domain under one of your verified domains, it also sends from live environments.
Specifications
The numbers your agent can rely on. The docs list each one in context.
- Thread matching
- headers, or subject within 30 days
- Messages per thread read
- latest 50, oldest first
- Body size kept
- 2 MB each, text and HTML
- Address aliases
- username+anything@
- Inboxes on Free
- 3
- Inboxes on Pro
- 1,000
- Tracking on inbox mail
- never
- Sandbox inboxes
- free, deliver nothing
Pricing
Inboxes are billed per day they exist, mail by the message. Sandbox inboxes are free.
Every plan includes 3 inboxes a month. Mail an inbox sends is billed like any email. See pricing for the plans.
Questions
- What is an inbox for an AI agent?
- An email address your agent owns. coss.com receives the mail sent to it, groups it into threads, calls your webhook for each message, and sends the agent's replies from the same address, so the conversation continues in the sender's mail client.
- Do I need to set up DNS to create an inbox?
- No. Without a domain, an inbox gets an address at your environment's own subdomain of coss.com's inbound domain, which receives mail straight away. To send from a live inbox, create it on a receiving domain under one of your verified domains, such as agents.example.com.
- How does the agent know a new email arrived?
- Each message that arrives sends an inbox.message.received webhook, signed with Standard Webhooks, with the inbox, thread and message ids. During development, coss listen forwards those events to localhost.
- How are emails grouped into threads?
- A message joins a thread when its In-Reply-To or References header names a message of the thread, or when it has the thread's subject, its sender is already in the thread and the thread had a message in the last 30 days. Otherwise it starts a new thread.
- Can an agent safely act on what an email says?
- Treat every message as untrusted input, never as instructions. Each message carries a spam verdict, and the text is given both whole and as extracted_text, the sender's own words without quoted history or signature. Risk can classify the content before your agent acts on it.
- How much do inboxes cost?
- A live inbox is billed per day it exists, mail it receives like any received email, and mail it sends like any email. Every plan includes a few inboxes, and inboxes in sandbox environments are free. The pricing page lists the current rates.
Works with
- Inbound emailcoss.com Inbound email receives mail at your domain or at an address coss.com gives each environment, and calls your webhook with every message, parsed.
- Emailcoss.com Email is a transactional email API. Send single, batch and scheduled email from your domains, with templates, tracking and per-recipient webhooks.
- Coding agentscoss.com for coding agents is a one-line setup for Claude Code, Cursor and Codex. Markdown docs, a sandbox key, an MCP server and an Agent Skill.
- Riskcoss.com Risk is a fraud and abuse API. It scores sign-ups, logins, checkouts and messages and answers allow, review or block, with the reasons why.
- AI agentscoss.com gives AI agents their own email addresses, threads and replies, checks untrusted mail with Risk, and lets coding agents set it all up from one prompt.
Compared
- coss.com vs ResendResend and coss.com cover much of the same email ground. coss.com puts sub-accounts, sandbox environments and SMS on the same key.
- coss.com vs AgentMailAgentMail is a fuller email client for agents. coss.com Inboxes gives agents threads and replies on the platform that also sends your email and SMS.
Start with Inboxes today.
Development keys record every request and event and deliver nothing, so you can build and test before you verify a domain. Hand your coding agent this prompt:
Add coss.com to this project: read https://coss.com/llms.txt, get a development key with `npx coss-cli init --agents`, and build and test with it.