# AI Inbx vs AgentMail: inboxes vs addresses (2026)

AgentMail bills per inbox; on AI Inbx every address works and the bill follows email. Threads, out-of-office dates, opt-outs, pacing and three worked bills.

[Pau Kraft](https://paukraft.com)

Founder, AI Inbx · [@paukraft on X](https://x.com/paukraft)

5 November 2026 · 15 min read Updated 6 November 2026

TL;DR

In my view, AgentMail is made for personal assistants. It is the [official email plugin for OpenClaw](https://www.agentmail.to/build/openclaw), and much of its site is about giving your own OpenClaw [an inbox](https://www.agentmail.to/blog/openclaw-agent-email-inbox). AgentMail puts an inbox on top of an email API: you create one per address, mail is threaded by reply headers, and the agent reads it over the API, IMAP or WebSockets. I think that serves a personal assistant well and misses the hard part of email agents in production, which is the mail that isn't a clean reply. AgentMail's docs leave most of that to your code.

I think AI Inbx is the better choice for agents in production, and for any product that sends and receives email for its customers. It handles that mail in the API:

-   **Every address works.** AI Inbx accepts mail for any address on a verified domain, with nothing created first. AgentMail needs an inbox created for each address. More
-   **Your users' Gmail and Outlook.** AI Inbx connects them to the same API as your domains. AgentMail's docs describe no way to connect an existing mailbox. More
-   **Threads that hold.** On AI Inbx a reply without reply headers still joins its conversation. AgentMail's docs describe threading by reply headers only. More
-   **Automated mail read for you.** Every inbound email on AI Inbx has a category, so an agent skips out-of-office replies, and return dates, verification codes and opt-out replies arrive as fields and events. AgentMail's docs show no auto-reply flag. More
-   **Scanned documents read.** On AI Inbx a scanned PDF arrives as text with the email. AgentMail's docs say scanned or image-only PDFs have no text. More
-   **Sending rules.** On AI Inbx you set sending hours and send limits, and each customer sends on its own reputation. AgentMail's docs describe neither setting. More
-   **One meter, not two.** Past the plan, AgentMail charges $2 a month for every extra inbox and $2 for every extra 1,000 sends, so growth costs you twice. AI Inbx charges $1 per extra 1,000 emails and nothing per address. More
-   **Built for volume.** Up to 1,000 pacing rules on Growth and no limit on Scale, under workspace-wide rules that cap every customer. More

AgentMail is the better pick when something must use the mailbox over IMAP or SMTP, you want WebSocket events, or you need a free plan or a SOC 2 report. It also costs less when a few inboxes receive far more mail than they send, because AI Inbx counts received mail too.

*I'm Pau, and I founded AI Inbx, so I'm not neutral, and I've tried to say where AgentMail is the better pick. Everything said here about AgentMail is from its public docs, terms and pricing as of 5 November 2026, linked where it's used.*

My view comes from running agents on email in production. The email agents I built run for enterprises in the sourcing industry and process thousands of emails a month, and threading alone cost me weeks: a supplier's colleague answers from their own address, a client drops the reply headers, a subject picks up a ticket number, and the conversation splits. In those environments one reply on the wrong thread is a no-go. AI Inbx is built on what fixing those cases taught me.

## An inbox per address, or every address works?

**On AgentMail**, every address is an [inbox](https://docs.agentmail.to/knowledge-base/what-is-agentmail) you create with an API call before it can send or receive, on `@agentmail.to` or a verified custom domain. Plans include 3, 10 or 150 inboxes ([pricing](https://www.agentmail.to/pricing)). AgentMail's blog says it [does not offer catch-all](https://www.agentmail.to/blog/catch-all-vs-inbox-per-agent), and [pods](https://docs.agentmail.to/documentation/core-concepts/pods) group each customer's inboxes.

**On AI Inbx**, an address needs nothing. Once the domain's MX record resolves, mail to `reply+ord_8812@mail.yourapp.com` is accepted. Verify `*.saas.com` once and each customer gets `acme.saas.com` from the API with no DNS of their own ([wildcard domains](/features/wildcard-domains)). Every workspace also gets a `<slug>.aiinbx.app` domain that works without DNS, capped at 100 emails a day. Domains and mailboxes are unlimited from $29 a month (Growth).

For a platform, I think the inbox is a cost, not a feature. Your backend already knows which address belongs to which customer, and inboxes copy that mapping to the provider: a create call per new agent, a delete per removed one, and a call before each made-up address (one per ticket or order) can receive. On top, the bill counts customers, not just mail (costs below). The inbox adds nothing an address filter doesn't give: on AI Inbx, `threads.list({ mailbox: "agent@acme.com" })` returns that address's conversations ([listing threads](https://docs.aiinbx.com/guides/threads#listing-threads)), and your own auth decides which customer may see them. The full argument is in [why inboxes are the wrong primitive](/blog/why-inboxes-are-the-wrong-primitive).

The inbox does fit one agent with one owner and no backend in between. There, a credential limited to one address keeps the agent to its own mail. AI Inbx covers that case: connect the inbox MCP server or run `aiinbx login --inbox`, and the agent sends as one address and reads only its threads ([agent inbox](https://docs.aiinbx.com/guides/agent-inbox)).

### Keys for your customers

AgentMail's [multi-tenancy guide](https://docs.agentmail.to/multi-tenancy) says to "create a `Pod` per customer, give them a scoped API key". AgentMail's [Terms of Service](https://www.agentmail.to/legal/terms) (§8(l), updated 12 October 2026) forbid making "your API keys or account credentials" available to any third party. Ask AgentMail which of the two applies before you hand a key to a customer.

Either way, I think a platform shouldn't give its customers keys to its email provider. Your customers call your API, and the email provider is a subprocessor behind it. Provider keys in your customers' hands tie their integrations to your vendor, so changing providers breaks them, and the line that decides who sees which mail moves from your auth into someone else's system. AI Inbx API keys act for the whole workspace: your backend holds them, and your auth scopes each customer.

## Your users' Gmail and Outlook

**On AI Inbx**, your users connect Gmail or Google Workspace and Outlook or Microsoft 365 over OAuth, through your own Google or Microsoft app ([mailboxes guide](https://docs.aiinbx.com/guides/mailboxes)). Their mail arrives as the same `email.received` events and threads as mail on your domains, and replies go out from their own account.

**AgentMail's** [docs](https://docs.agentmail.to/knowledge-base/what-is-agentmail) describe no way to connect an existing Gmail or Outlook mailbox. If your users want your product to answer from the address their customers already know, that decides it.

## What happens to the mail you receive

Most of the work in an email product starts when mail comes back: replies that lose their thread, answers typed into the quote, autoresponders, opt-outs and scanned documents. AI Inbx turns each of these into a field or an event.

### Threads without reply headers

**AgentMail** threads mail [using the standard headers](https://docs.agentmail.to/knowledge-base/threaded-conversations) `Message-ID`, `In-Reply-To` and `References`. Its docs don't say what happens to a reply without them. Real mail often arrives that way, in the cases above. Threading on headers alone splits those replies off, and the agent answers them without the conversation.

**On AI Inbx** those replies still land on their conversation ([threading](https://docs.aiinbx.com/guides/receiving#threading)). A shared subject alone never merges two conversations, so two unrelated "Re: Invoice" emails stay apart, and a reply that could belong to either starts a thread of its own.

Think of how a person files mail. Shown a reply with no reply headers, they read it, recognise the conversation it continues and put it there. AI Inbx does that for every inbound email, before your code sees it. With threading on reply headers alone, that work moves to your agent: for each reply that arrives without them, it has to search earlier mail to find out whether a conversation already exists, and that costs tokens and time on every message.

To answer, `threads.reply` takes the thread ID and the text and fills in sender, recipients, subject and reply headers. It follows Reply-To, keeps colleagues on a reply-all, and fails with `no_recipients` when the Reply-To names only your own addresses instead of mailing yourself ([replying](https://docs.aiinbx.com/guides/threads#replying)).

### Answers typed inside the quote

**On AI Inbx**, `stripped_text` keeps each answer under the line it answers and drops the rest of the quote. `stripped_html` makes the same cut in HTML, so a view of the reply keeps the answers too. A sender's signature stays the first time they use it in a thread and is dropped after that, so the agent knows who is writing without reading it again on every reply. `segments` lists the written, quoted and signature parts in order ([what was written](https://docs.aiinbx.com/guides/receiving#what-was-written)).

**AgentMail's** `extracted_text` removes the quote from a normal reply. When the sender answers between your lines, AgentMail keeps the whole message, quoted history included, so the agent reads the old conversation again; `extracted_html` cuts at the first quote and loses those answers ([reply extraction](https://docs.agentmail.to/reply-extraction)).

### Out-of-office replies and verification codes

**On AI Inbx** every inbound email has a `category`, such as `human`, `out_of_office` or `auto_reply`, so an agent that answers only `human` mail skips out-of-office and auto-replies. An away reply also carries `unavailable`, so a sequence can pause until `back_on` or turn to the colleague the reply names ([what automated mail asks for](https://docs.aiinbx.com/guides/receiving#what-automated-mail-asks-for)):

```
{
  "category": "out_of_office",
  "unavailable": {
    "reason": "absent",
    "back_on": "2026-11-13",
    "contacts": ["anna.wright@hartley-steel.co.uk"]
  }
}
```

A sign-up confirmation carries `verification.code` and `verification.link`, so an agent signing up for a service finishes without parsing the email.

**AgentMail's** [message schema](https://docs.agentmail.to/api-reference/inboxes/messages/get) has no auto-reply flag, no return date and no verification field; its [AgentID guide](https://docs.agentmail.to/agentid-in-assistants) has the assistant read the verification email itself. None of the other 14 email APIs we compared documents a return date as a field.

### Opt-out replies

**On AI Inbx**, a recipient who writes back asking you to stop is suppressed for you and reported as `email.unsubscribed` with `source: "reply"`, next to link and one-click unsubscribes ([suppressions](https://docs.aiinbx.com/guides/suppressions#reacting-to-the-events)).

**AgentMail's** [cold-outreach page](https://docs.agentmail.to/knowledge-base/cold-outreach) tells you to read each reply, decide whether it is an opt-out and block the address yourself. An opt-out nobody reads means you keep mailing someone who asked you to stop. None of the other 14 APIs we compared documents opt-out replies being suppressed for you.

### Scanned attachments

**On AI Inbx**, PDFs, documents and spreadsheets are read as the email arrives, scanned pages included, so the text is normally there by the time `email.received` reaches you ([timing](https://docs.aiinbx.com/guides/attachments#timing)). Fetch the email with `include: ["attachment_content"]` and each attachment carries its Markdown or text in `preparation.text`, with `preparation.status` saying whether the whole document came through ([prepared text](https://docs.aiinbx.com/guides/attachments#prepared-text)). Scanned pages use a monthly allowance of 100, 500 or 2,000 by plan, then cost $0.01 a page; PDFs with a text layer and office documents don't count against it.

**AgentMail** extracts text from a PDF's text layer only, and its [docs](https://docs.agentmail.to/reply-extraction) say scanned or image-only PDFs have no text. The text comes from a separate Get Attachment call, and right after `message.received` it can still be missing. A scanned invoice, a signed contract or a photographed delivery note reaches your agent with no text, and reading it is left to your code.

## Sending hours and send limits

**On AI Inbx**, hours rules set weekly sending windows in a timezone, for example weekdays 9:00 to 17:00 in Europe/London ([sending hours](https://docs.aiinbx.com/guides/pacing#sending-hours)). Limit rules cap sends per rolling window for each sending address, sending domain, recipient or recipient domain, for example one email a day to the same person. Mail outside a window or over a limit waits instead of failing, in a queue you can release by hand ([pacing](https://docs.aiinbx.com/guides/pacing)). Without limits like these, one customer's burst can get a mailbox throttled or flagged, and in my experience building them per customer yourself takes weeks.

**AgentMail** documents plan caps per day and per 5 minutes and a [warm-up schedule](https://docs.agentmail.to/email-deliverability) to follow yourself. Its docs describe no limits you set and no sending hours; the [drafts guide](https://docs.agentmail.to/drafts) suggests scheduling each draft with `send_at` instead. None of the other 14 APIs we compared documents sending hours that hold mail outside a window.

### A reputation for each customer

**On AI Inbx**, a [space](https://docs.aiinbx.com/guides/spaces#one-reputation-per-space) holds one customer's domains, mailboxes, pacing rules, suppression lists and sending reputation. Bounces and complaints count against the space the mail left from, and a space over the line is paused alone while every other customer keeps sending. Gmail and Outlook judge the signing domain, so they still see every subdomain of `*.saas.com` as `saas.com`; a customer who wants a reputation wholly their own connects their own domain.

**AgentMail** can [suspend a single inbox or pod](https://docs.agentmail.to/knowledge-base/account-suspended), and it also weighs bounces and complaints across the whole organisation and can suspend the account. Its [subdomain inboxes](https://docs.agentmail.to/knowledge-base/subdomain-inboxes) sign with the parent domain, and AgentMail's blog says they [share one reputation](https://www.agentmail.to/blog/custom-domains-for-thousands-of-agent-inboxes); a subdomain registered as its own domain gets its own reputation and counts as one more domain on the plan.

## Bot opens and scanner clicks

**On AI Inbx**, opens and clicks carry `bot` and `bot_reason`, marking Apple Mail Privacy Protection fetches and security scanners, so a scanner's click doesn't trigger a follow-up. **AgentMail** [reports first opens](https://docs.agentmail.to/knowledge-base/open-tracking) on custom domains, lists click tracking as not available yet, and advises treating a very fast open with suspicion.

## Built for agents at volume

I built AI Inbx for email agents at scale. The same API serves an agent that sends a few emails a day and a platform whose agents send thousands, and the sections above keep the work per email small: the agent reads only the new text, gets the thread without searching, skips automated mail without a model call and never parses an attachment twice.

Pacing rules are checked on every send, up to 100 on Developer, 1,000 on Growth and no limit on Scale. A rule or suppression list can belong to one customer's [space](https://docs.aiinbx.com/guides/spaces), while your workspace-wide rules apply to every customer.

## Feature by feature

Each cell links its source.

### Where they differ

| Feature | AI Inbx | AgentMail |
| --- | --- | --- |
| Receiving |
| **Threads that hold without reply headers** Replies join their conversation even when they arrive without reply headers: a colleague answering from another address, a client that drops them, a changed subject. Partial: threads are grouped by reply headers, or by the mailbox provider's own threading, and nothing more is documented. | **Yes** Every email belongs to a thread, including replies that arrive without reply headers, from a colleague's address or under a changed subject; threads are listed, read and replied to through the API. Replies join their conversation even when a client mangles or drops the reply headers, a colleague answers from another address or the subject changes; a shared subject alone never merges two conversations. [1](https://docs.aiinbx.com/guides/threads) [2](https://docs.aiinbx.com/guides/receiving#threading) [3](https://aiinbx.com/features/threading) | **Partial** Threads are created automatically and can be listed, searched and read per inbox, per pod or across the organization. Replies without reply headers are not described as joining their thread. [1](https://docs.agentmail.to/threads) [2](https://docs.agentmail.to/knowledge-base/threaded-conversations) |
| **Reply text, inline answers kept** Each inbound message comes with the newly written text separated from quoted history and signatures, and answers typed inside the quote are kept. Partial: the quote is removed or marked, but answers inside it are not kept or not documented as kept. | **Yes** Each email carries stripped\_text and stripped\_html without the quoted conversation, keeping answers typed inline into the quote, and segments marking written, quoted and signature parts; a sender's signature is kept the first time they use it in a thread. stripped\_text keeps answers typed into the quote next to the lines they answer, also when the mail client leaves the quote unmarked, as long as the answered message is on the thread. [1](https://docs.aiinbx.com/guides/receiving#what-was-written) [2](https://aiinbx.com/solutions/email-reply-parser) | **Partial** Every message has extracted\_text and extracted\_html without quoted history and trailing boilerplate; the sender's own signature is kept. When the sender answers between quoted lines, extracted\_text keeps the message whole so the answers are not lost; extracted\_html still cuts at the first quote. [1](https://docs.agentmail.to/reply-extraction) |
| **Out-of-office with return date** Out-of-office and other automatic replies are flagged on the message, with the day the sender is back and the colleague they name as fields. Partial: automatic replies are flagged, without those details. | **Yes** Every inbound email has a category such as human, out\_of\_office or auto\_reply, and an away reply carries the reason, return day and named contacts when it states them. An out\_of\_office or auto\_reply email carries unavailable with the reason (absent, left or unmonitored), back\_on for the first day back and the contacts the reply names, each when the reply states it. [1](https://docs.aiinbx.com/guides/receiving#categories) [2](https://aiinbx.com/solutions/auto-reply-detection) [3](https://docs.aiinbx.com/guides/receiving#what-automated-mail-asks-for) | **Not documented** The docs and message schema do not mention flagging out-of-office or other automatic replies. [1](https://docs.agentmail.to/api-reference/inboxes/messages/get) [2](https://docs.agentmail.to/events) |
| **Verification codes as fields** A verification email comes with its one-time code or confirmation link as fields on the message. | **Yes** A verification email carries verification.code and verification.link, both written in the email, on the email and its email.received event. [1](https://docs.aiinbx.com/guides/receiving#what-automated-mail-asks-for) | **No** The documented Get Message response has no field for a code or confirmation link; with AgentID, an assistant reads the verification email itself or signs the agent in without one. [1](https://docs.agentmail.to/api-reference/inboxes/messages/get) [2](https://docs.agentmail.to/agentid-in-assistants) |
| **Attachments as text, scans included** PDFs, documents and spreadsheets arrive with their content as text or Markdown, ready for an LLM, and scanned or image-only PDF pages are read too. Partial: text is extracted only from a PDF's text layer, only for some file types, or only on a separate request. | **Yes** PDFs, documents and spreadsheets come with prepared Markdown or text; scanned pages are read too and count against a monthly page allowance. [1](https://docs.aiinbx.com/guides/attachments) [2](https://docs.aiinbx.com/guides/billing#advanced-attachment-processing) | **Partial** Get Attachment returns a text\_url with text extracted from PDF, Word, Excel and text files up to 10 MB; PDF text comes from the text layer only, and the docs say scanned or image-only PDFs have no text. [1](https://docs.agentmail.to/reply-extraction) |
| Mailboxes |
| **Any address on a domain** Mail to any address on a receiving domain is accepted without creating each address first. | **Yes** Once the inbound MX record resolves, mail to any address on the domain is accepted, plus addresses such as reply+ord\_8812@ included, with nothing registered per address. [1](https://docs.aiinbx.com/guides/receiving#receiving-on-a-domain) | **No** AgentMail's blog states it does not offer catch-all; each receiving address needs an inbox. [1](https://www.agentmail.to/blog/catch-all-vs-inbox-per-agent) [2](https://docs.agentmail.to/google-workspace) |
| **Connect users' Gmail** Read and send from a user's existing Gmail or Google Workspace mailbox after they grant access. | **Yes** Users connect Gmail or Google Workspace over OAuth through your own Google OAuth app, from a hosted page, a link or the API; mail syncs in and can be sent as the account and its Send-as aliases. [1](https://docs.aiinbx.com/guides/mailboxes) [2](https://aiinbx.com/features/mailboxes) | **No** AgentMail gives each agent its own inbox; its docs describe no way to connect an existing Gmail or Google Workspace mailbox. [1](https://docs.agentmail.to/knowledge-base/what-is-agentmail) [2](https://www.agentmail.to/blog/best-email-api-for-ai-agents-2026) |
| **Connect users' Outlook** Read and send from a user's existing Outlook or Microsoft 365 mailbox after they grant access. | **Yes** Users connect Outlook or Microsoft 365 over OAuth through your own Microsoft Entra app, from a hosted page, a link or the API; mail syncs in and can be sent as the account. [1](https://docs.aiinbx.com/guides/mailboxes) [2](https://aiinbx.com/features/mailboxes) | **No** AgentMail gives each agent its own inbox; its docs describe no way to connect an existing Outlook or Microsoft 365 mailbox. [1](https://docs.agentmail.to/knowledge-base/what-is-agentmail) [2](https://www.agentmail.to/blog/best-email-api-for-ai-agents-2026) |
| **IMAP and SMTP** Connect mailboxes over IMAP, or send and read through SMTP/IMAP credentials. | **No** AI Inbx is an HTTP API with no SMTP relay, and mailboxes connect over Google and Microsoft OAuth, not IMAP. [1](https://aiinbx.com/solutions/send-email-api) [2](https://docs.aiinbx.com/guides/mailboxes) | **Yes** AgentMail inboxes can be read over IMAP and sent from over SMTP, with the inbox address as username and an API key as password. [1](https://docs.agentmail.to/imap-smtp) |
| Sending |
| **Configurable send limits** You set limits such as N per hour per sending address or per recipient domain, and the provider holds mail back to keep to them. | **Yes** Limit rules cap sends per rolling window for the rule, each sending address, sending domain, recipient or recipient domain, and hold the rest until there is room; plans set how many active rules a workspace holds. [1](https://docs.aiinbx.com/guides/pacing#rate-limits) [2](https://aiinbx.com/features/pacing) | **Not documented** Docs describe plan send limits per day and per 5 minutes and a warm-up schedule to follow yourself; limits you set per address or recipient domain are not documented. [1](https://docs.agentmail.to/knowledge-base/rate-limits) [2](https://docs.agentmail.to/email-deliverability) |
| **Sending hours** You set the hours mail may go out, for example weekdays 9–17 in a timezone, and mail outside them waits. | **Yes** Hours rules set weekly sending windows in an IANA timezone, optionally opening and closing at a varying minute each day; mail outside them waits. [1](https://docs.aiinbx.com/guides/pacing#sending-hours) [2](https://aiinbx.com/features/sending-hours) | **Not documented** Docs suggest sending drafts at a chosen time with send\_at; account-wide sending hours are not documented. [1](https://docs.agentmail.to/drafts) |
| **Opt-out replies suppressed** A reply asking not to be emailed again is recognised and the address is suppressed without your code reading it. | **Yes** A reply asking to stop is recognised as an opt-out and suppressed automatically, reported as email.unsubscribed with source reply. [1](https://docs.aiinbx.com/guides/suppressions#reacting-to-the-events) [2](https://docs.aiinbx.com/webhooks/events/email-unsubscribed) | **No** The docs tell you to read a reply's extracted\_text to decide whether it is an opt-out and then add the address to the send block list yourself. [1](https://docs.agentmail.to/knowledge-base/cold-outreach) [2](https://docs.agentmail.to/knowledge-base/account-suspended) |
| **Bot opens filtered** Opens from privacy proxies and security scanners (such as Apple Mail Privacy Protection) are marked or separated from human opens. | **Yes** Every open and click event carries bot and bot\_reason, marking Apple Mail Privacy Protection fetches, security scanners and other automated hits. [1](https://docs.aiinbx.com/webhooks/events/email-opened#bot-detection) [2](https://docs.aiinbx.com/webhooks/events/email-clicked) [3](https://aiinbx.com/solutions/email-open-tracking) | **No** The docs say proxy and security-scanner image loads can register an open and advise treating very fast opens with suspicion. [1](https://docs.agentmail.to/knowledge-base/open-tracking) |
| Platform |
| **Sending reputation per customer** Each of your customers' sending reputation is kept apart, so one customer's bounces or complaints don't pause another's mail. | **Yes** Each space sends on its own reputation: bounces and complaints count against the space the mail left from, and a space over the line is paused by itself; mailbox providers still judge every subdomain of one wildcard as that one domain. [1](https://docs.aiinbx.com/guides/spaces#one-reputation-per-space) [2](https://docs.aiinbx.com/concepts#space) | **Partial** AgentMail can suspend a single inbox or pod while the rest of the account keeps sending, but it weighs bounce and complaint signals across the organization's mail and can also suspend the whole account. [1](https://docs.agentmail.to/knowledge-base/account-suspended) |
| **Self-hosting** Can be run on your own infrastructure. | **No** AI Inbx is a hosted service reached at api.aiinbx.com; there is no self-hosted edition. [1](https://docs.aiinbx.com/api) [2](https://aiinbx.com/terms#service) | **Partial** AgentMail Outposts run in the customer's AWS account on the Enterprise tier, with AgentMail maintaining the software. [1](https://www.agentmail.to/blog/agentmail-outposts-byoc) [2](https://www.agentmail.to/pricing) |
| **SOC 2 report** A SOC 2 Type II report is available to customers. | **No** No SOC 2 report is published; the DPA offers security documentation, questionnaire responses and one customer audit a year. [1](https://aiinbx.com/dpa#assistance) | **Yes** AgentMail completed a SOC 2 Type II audit in 2025; the report is shared through its Trust Center after access approval, and the pricing page lists it on Startup and Enterprise. [1](https://docs.agentmail.to/documentation/resources/security-privacy/soc-2-compliance) [2](https://www.agentmail.to/pricing) |
| Policy |
| **No charge per address** The price doesn't depend on how many addresses, inboxes or mailboxes you use; it follows email volume or a flat fee. | **Yes** Price follows emails per month; addresses are never counted or charged. Developer ($5/month) caps custom domains at 50 and connected mailboxes at 100; both are unlimited from Growth ($29/month). [1](https://aiinbx.com/pricing) [2](https://docs.aiinbx.com/guides/billing#domains-mailboxes-and-pacing-rules) | **No** Plans include 3, 10 or 150 inboxes, and on Developer and Startup each extra inbox is a $2/month add-on. [1](https://www.agentmail.to/pricing) |
| **Cold outreach allowed** The terms or acceptable use policy allow sending unsolicited B2B outreach, within the law. | **Yes** The Acceptable Use Policy allows marketing email that the applicable law permits and bans unlawful unsolicited email, stating that a public address, a scraped list or legitimate interest alone is not permission. [1](https://aiinbx.com/acceptable-use#permission) [2](https://aiinbx.com/use-cases/cold-outreach) | **No** The docs state AgentMail does not support cold outreach, and Terms §8(h) prohibit unsolicited email. [1](https://docs.agentmail.to/knowledge-base/cold-outreach) [2](https://www.agentmail.to/legal/terms) |

Checked 5 November 2026 from each product's public docs and pricing. Spotted a mistake? Email [me@paukraft.com](mailto:me@paukraft.com).

### Where they match

| Feature | AI Inbx | AgentMail |
| --- | --- | --- |
| Mailboxes |
| **Your own domains** Send and receive on domains you own, verified through DNS. | **Yes** Domains are added through the API and verified through SPF, DKIM, DMARC, return-path and inbound MX records, with a diagnostics call that reports what the live DNS zone is missing. [1](https://docs.aiinbx.com/guides/domains) | **Yes** Custom domains are verified through DNS records (SPF, DKIM, DMARC, MX), with a Domain Connect setup link for supported DNS providers; the number of domains depends on the plan. [1](https://docs.agentmail.to/custom-domains) [2](https://docs.agentmail.to/api-reference/domains/get-setup-link) [3](https://www.agentmail.to/pricing) |
| **Subdomains for each customer** Each of your customers can get their own subdomain to send and receive on, without them editing DNS. | **Yes** After one wildcard domain such as \*.saas.com is verified, each customer's subdomain is created through the API with no DNS of its own, and can be placed in that customer's space. [1](https://docs.aiinbx.com/guides/domains#wildcards-and-subdomains) [2](https://aiinbx.com/features/wildcard-domains) | **Yes** With subdomains\_enabled and one wildcard MX record on a parent domain, inboxes can be created on any subdomain; they share the parent domain's DKIM key and sending identity. [1](https://docs.agentmail.to/knowledge-base/subdomain-inboxes) [2](https://www.agentmail.to/blog/custom-domains-for-thousands-of-agent-inboxes) |
| Sending |
| **Reply by thread** Reply to a conversation by its ID; recipients, subject and reply headers are filled in for you. | **Yes** threads.reply takes a thread ID and the text; sender, recipients (following Reply-To), subject and In-Reply-To/References are filled in from the thread, and email\_id pins the reply to one message. [1](https://docs.aiinbx.com/guides/threads#replying) | **Yes** Reply and Reply All take a message ID and fill in recipients, subject and threading headers; the reply joins the same thread. [1](https://docs.agentmail.to/api-reference/inboxes/messages/reply) [2](https://docs.agentmail.to/threads) |
| **Scheduled sends** Schedule an email for later, and change or cancel it before it goes. | **Yes** Sends, replies and forwards take scheduled\_at up to 30 days ahead; until it goes, a scheduled email can be moved, edited or cancelled. [1](https://docs.aiinbx.com/guides/scheduling) [2](https://aiinbx.com/solutions/scheduled-email-api) | **Yes** A draft with send\_at is sent at that time; updating send\_at reschedules it and setting it to null cancels the send. [1](https://docs.agentmail.to/drafts) |
| **Drafts for approval** Create a draft through the API that a person or process approves before it is sent. | **Yes** draft: true stores a send, reply or forward unsent with a review\_url; it can be edited and sent from the console or through the API. [1](https://docs.aiinbx.com/guides/drafts) | **Yes** Drafts can be created, edited, listed across the organization and sent later, for human-in-the-loop review. [1](https://docs.agentmail.to/drafts) [2](https://docs.agentmail.to/knowledge-base/human-in-the-loop) |
| **Suppression lists** Addresses that bounced, complained or unsubscribed are blocked from later sends, manageable through the API. | **Yes** Bounces that show an address is dead, complaints and unsubscribes (link, one-click or a reply asking to stop) are suppressed automatically, on named lists per campaign and per space, managed through the API. [1](https://docs.aiinbx.com/guides/suppressions) [2](https://aiinbx.com/features/suppressions) | **Yes** Sends to addresses that bounced, were rejected or complained are blocked automatically, and send block lists at organization, pod or inbox level are managed through the Lists API. [1](https://docs.agentmail.to/knowledge-base/emails-bouncing) [2](https://docs.agentmail.to/lists) |
| Platform |
| **Separation per customer** Your customers' domains, mailboxes and settings are kept apart inside one account (sub-accounts, pods, spaces or similar). | **Yes** Spaces keep each customer's domains, mailboxes, mail, pacing rules, suppression lists and sending reputation apart inside one workspace; API keys and webhook endpoints are workspace-wide. [1](https://docs.aiinbx.com/guides/spaces) [2](https://aiinbx.com/features/spaces) | **Yes** Pods isolate each customer's inboxes, domains, threads and drafts, with pod-scoped API keys and webhooks; Terms §4(c) make integrating into your own app subject to your subscription tier, and §8(l) forbid making API keys or account credentials available to any third party. [1](https://docs.agentmail.to/documentation/core-concepts/pods) [2](https://docs.agentmail.to/multi-tenancy) [3](https://www.agentmail.to/legal/terms) |
| **MCP server** An official MCP server so AI assistants and agents can use the product directly. | **Yes** Two remote MCP servers: one runs the whole workspace, the other gives an agent one address to send from and read. [1](https://docs.aiinbx.com/mcp) [2](https://docs.aiinbx.com/guides/agent-inbox) | **Yes** A hosted MCP server at mcp.agentmail.to/mcp with inbox, message, thread, draft and attachment tools, using OAuth or an API key. [1](https://docs.agentmail.to/integrations/mcp) |
| **CLI** An official command-line tool. | **Yes** The aiinbx CLI runs every API operation, forwards webhook events to localhost and waits for an email to arrive. [1](https://docs.aiinbx.com/cli) [2](https://aiinbx.com/features/cli) | **Yes** The agentmail CLI ships as a native binary through npm or an install script. [1](https://docs.agentmail.to/integrations/cli) |

Checked 6 November 2026 from each product's public docs and pricing. Spotted a mistake? Email [me@paukraft.com](mailto:me@paukraft.com).

## How much does each cost?

**AI Inbx** bills one thing: email. Past the plan, extra usage is $1 per 1,000 emails, sent or received, and nothing per address, inbox or domain, so an idle agent costs nothing. Every plan has every feature; plans differ only in how many emails, scanned pages, domains, mailboxes and pacing rules they include ([billing](https://docs.aiinbx.com/guides/billing)).

I don't pitch AI Inbx as the cheap option. I think our pricing is fair: it follows what email costs to send, receive and store, and at these prices AI Inbx runs as a healthy business. An extra inbox costs a provider close to nothing, so in my view a monthly fee per inbox is margin, not cost.

**AgentMail** charges on two meters past the plan. On Developer and Startup each extra inbox is $2 a month, idle or busy, and each extra 1,000 sends is $2, plus $2 for each extra domain. Its pricing page lists white-label on Enterprise only. Monthly prices in USD as of November 2026:

| Plan | Price a month | Included | Extras |
| --- | --- | --- | --- |
| AgentMail Free | $0 | 3 inboxes, 3,000 emails (100 a day), 3 GB | None; footer on mail |
| AgentMail Developer | $20 | 10 inboxes, 10,000 emails (1,000 a day), 10 domains | $2 per inbox, $2 per domain, $2 per 1,000 sends, $5 per seat |
| AgentMail Startup | $200 | 150 inboxes, 15,000 emails a day, 150 domains, SOC 2 report | Same as Developer |
| AgentMail Enterprise | On request | Up to unlimited inboxes, usage-based pricing | Set in contract |
| AI Inbx Developer | $5 | 5,000 emails, 50 domains, 100 connected mailboxes | $1 per 1,000 emails |
| AI Inbx Growth | $29 | 30,000 emails, unlimited domains and mailboxes | $1 per 1,000 emails |
| AI Inbx Scale | $99 | 100,000 emails, unlimited domains and mailboxes | $1 per 1,000 emails |

From [AgentMail's pricing](https://www.agentmail.to/pricing) and [rate limits](https://docs.agentmail.to/knowledge-base/rate-limits), and [AI Inbx's pricing](/pricing), 5 November 2026. AgentMail's rate-limits page lists different Free and Startup caps from its pricing page; none of the bills below depend on them.

Two things decide the bill. AgentMail's plan limits count [sends](https://docs.agentmail.to/knowledge-base/rate-limits), while AI Inbx counts every email, [inbound or outbound](https://docs.aiinbx.com/guides/billing). And AI Inbx's extra emails are opt-in: until you turn them on, sending stops at the allowance and receiving carries on. The AI Inbx bills below assume extra usage is on.

### 10 agents, 1,000 emails each a month

Half sent, half received: 10,000 emails, 5,000 of them sends, on one domain.

```
AI Inbx Developer                                         $5.00
Extra emails: 10,000 - 5,000 = 5,000 x $0.001             $5.00
Total                                                    $10.00

AgentMail Developer (10 inboxes, 5,000 of 10,000 sends)  $20.00
Total                                                    $20.00
```

### 200 agents, 300 emails each a month

Half sent, half received: 60,000 emails, 30,000 of them sends.

```
AI Inbx Growth                                            $29.00
Extra emails: 60,000 - 30,000 = 30,000 x $0.001           $30.00
Total                                                    $59.00

AgentMail Startup (150 inboxes)                          $200.00
Extra inboxes: 200 - 150 = 50 x $2                       $100.00
Total                                                   $300.00
```

On AgentMail Developer the same month comes to $440: $20, plus 190 extra inboxes at $2, plus 20,000 extra sends at $2 per 1,000.

### 2,000 customer mailboxes, 100 emails each a month

Half sent, half received: 200,000 emails, 100,000 of them sends. On AI Inbx these can be addresses on customer subdomains, customers' own domains or their connected Gmail and Outlook inboxes, at the same price. On AgentMail they are inboxes on subdomains of one parent domain.

```
AI Inbx Scale                                             $99.00
Extra emails: 200,000 - 100,000 = 100,000 x $0.001       $100.00
Total                                                   $199.00

AgentMail Startup (150 inboxes)                          $200.00
Extra inboxes: 2,000 - 150 = 1,850 x $2                $3,700.00
Total                                                 $3,900.00
```

If each customer brings their own domain, AgentMail adds 1,850 domains at $2, for $7,600; at this size AgentMail Enterprise, priced on request, is the likelier route. On AI Inbx each new customer costs nothing until it sends or receives mail.

### Where AgentMail costs less

```
Up to 3 inboxes, 3,000 emails a month
AgentMail Free                                             $0.00
AI Inbx Developer                                          $5.00

10 inboxes receiving 40,000 and sending 5,000 a month
AgentMail Developer (5,000 sends)                         $20.00
AI Inbx Growth                                            $29.00
Extra emails: 45,000 - 30,000 = 15,000 x $0.001           $15.00
AI Inbx total                                             $44.00
```

The second case assumes the stored mail stays within AgentMail Developer's 10 GB.

## When is AgentMail the better pick?

If one of these decides it, AgentMail does it today and AI Inbx doesn't:

-   **IMAP and SMTP.** An AgentMail inbox can be read over IMAP and sent from over SMTP, with the inbox address as username and an API key as password ([IMAP and SMTP](https://docs.agentmail.to/imap-smtp)).
-   **WebSockets.** AgentMail streams events over [WebSockets](https://docs.agentmail.to/websockets). AI Inbx pushes webhooks to a public HTTPS endpoint; without one, an agent reads `GET /events` or runs [`aiinbx wait`](https://docs.aiinbx.com/cli).
-   **A free plan.** [AgentMail Free](https://www.agentmail.to/pricing) is $0 for 3 inboxes and 3,000 emails a month, with a "Sent via AgentMail" footer. AI Inbx starts at $5.
-   **A SOC 2 report.** AgentMail completed a [SOC 2 Type II audit](https://docs.agentmail.to/documentation/resources/security-privacy/soc-2-compliance). AI Inbx has no SOC 2 report.
-   **The rest.** [Outposts](https://www.agentmail.to/blog/agentmail-outposts-byoc) in your own AWS account (Enterprise), [AgentID](https://docs.agentmail.to/agentid-in-assistants) for creating accounts at other apps, and [Agent Armor](https://docs.agentmail.to/agent-armor) for scanning received mail for prompt injection (in AgentMail Labs).

AI Inbx also has no templates or email builder and can't be self-hosted. Connected mailboxes are Gmail and Outlook, through your own OAuth app, and SDKs are TypeScript and Python.

## Moving from AgentMail to AI Inbx

Most of an AgentMail integration maps one to one, and the inbox create call goes away.

| AgentMail | AI Inbx |
| --- | --- |
| `inboxes.create` per agent | Nothing to create: send from any address on a verified domain |
| `inboxes.messages.send` | `emails.send` |
| Reply by message ID | `threads.reply` by thread ID, with `email_id` to answer one message |
| `message.received` webhook | `email.received` webhook |
| `extracted_text` | `stripped_text` |
| Draft with `send_at` | `scheduled_at` on a send, or `draft: true` |
| Pods | Spaces |

A webhook handler that answers human replies and leaves auto-replies alone, from the [quickstart](https://docs.aiinbx.com/quickstart) and [threads guide](https://docs.aiinbx.com/guides/threads#replying):

```
import AIInbx from "aiinbx"
import { verifyWebhookRequest, WebhookSignatureError } from "aiinbx/webhooks"

import { draftAnswer } from "./agent"

const aiinbx = new AIInbx()

export async function POST(request: Request) {
  let event
  try {
    event = await verifyWebhookRequest(
      request,
      process.env.AI_INBX_WEBHOOK_SECRET!
    )
  } catch (error) {
    if (error instanceof WebhookSignatureError) {
      return new Response("Invalid signature", { status: 400 })
    }
    throw error
  }

  // Out-of-office and other automatic replies arrive with another category.
  if (event.type === "email.received" && event.data.category === "human") {
    const email = await aiinbx.emails.retrieve(event.data.email_id)
    await aiinbx.threads.reply(
      event.data.thread_id,
      {
        email_id: event.data.email_id,
        text: await draftAnswer(email.stripped_text),
      },
      { idempotencyKey: `reply-${event.data.email_id}` }
    )
  }
  return new Response(null, { status: 204 })
}
```

-   `email_id` pins the reply to the message the event named, so an auto-reply arriving while the agent writes doesn't change whom it answers.
-   The idempotency key means a webhook delivered twice, or a handler retried after a timeout, still sends one reply ([idempotency](https://docs.aiinbx.com/guides/sending#idempotency)).
-   For conversations that started on AgentMail, send with `in_reply_to` and `references` set to the original Message-IDs, and the reply threads in the recipient's mail client ([sending guide](https://docs.aiinbx.com/guides/sending#replying-to-mail-ai-inbx-hasnt-seen)).
-   Receiving moves when you point a domain's MX record at AI Inbx, so move one domain at a time.

To try it, start with the [quickstart](https://docs.aiinbx.com/quickstart). For more options, read [AgentMail alternatives](/blog/agentmail-alternatives), [email APIs for AI agents](/blog/best-email-api-for-ai-agents) and [email APIs for cold outreach tools](/blog/email-api-for-cold-outreach-tools).

*Last checked: 6 November 2026. Work at AgentMail and spotted something wrong? Email [pau@aiinbx.com](mailto:pau@aiinbx.com) with a link and I'll correct it.*

Written by

[Pau Kraft](https://paukraft.com)

[@paukraft on X](https://x.com/paukraft)

Before AI Inbx, Pau built email agents that run in production for enterprises in the sourcing industry, processing thousands of emails a month, where a single reply filed on the wrong conversation is not acceptable. AI Inbx is built on what those systems taught him: the threading edge cases, the replies cut in the wrong place, the email that went out at 02:30 on a Sunday.

## Questions

### Does AI Inbx replace AgentMail?

For a product that sends and receives email for its customers or agents, yes. On AI Inbx every address on your domains works without creating an inbox, your users' Gmail and Outlook connect to the same API, replies without reply headers stay on their thread, and out-of-office return dates, opt-out replies, pacing and sending hours are handled for you. AI Inbx does not replace AgentMail's IMAP and SMTP access, WebSockets, AgentID, SOC 2 report or free plan.

### How much does AgentMail cost?

As of November 2026, AgentMail Free is $0 for 3 inboxes and 3,000 emails a month. Developer is $20 a month for 10 inboxes, 10,000 emails and 10 custom domains. Startup is $200 a month for 150 inboxes and 150 custom domains, with a SOC 2 report. On Developer and Startup each extra inbox or domain is $2 a month and extra sends are $2 per 1,000. Enterprise is priced on request.

### Can AgentMail connect to a user's Gmail or Outlook account?

Not as far as AgentMail's docs show. AgentMail gives each agent an inbox of its own, on @agentmail.to or your domain. AI Inbx connects Gmail and Outlook over OAuth through your own Google or Microsoft app, and their mail arrives through the same events and threads as mail on your domains.

### Does AgentMail detect out-of-office replies?

Not as far as AgentMail's docs show: its message schema has no flag for automatic replies and no field for a return date. On AI Inbx every inbound email has a category such as human or out\_of\_office, and an away reply carries unavailable.back\_on, the first day the sender is back, and the colleagues the reply names.

### Can I use AgentMail or AI Inbx for cold email?

AgentMail's docs say it does not support cold outreach, and its terms prohibit unsolicited email. AI Inbx's Acceptable Use Policy allows marketing email that the applicable law permits and bans unlawful unsolicited email.

### Does AI Inbx support IMAP or SMTP?

No. AI Inbx is an HTTP API with TypeScript and Python SDKs, a CLI and MCP servers. If a mail client or a tool that speaks SMTP has to use the inbox directly, AgentMail supports IMAP and SMTP.

### Do received emails count towards an AI Inbx plan?

Yes. On AI Inbx every email counts as one, inbound or outbound. Receiving never stops: without extra usage turned on, sending stops at the plan's allowance and mail keeps arriving.

### Does AI Inbx have a SOC 2 report?

No. AI Inbx's DPA offers security documentation, questionnaire answers and one customer audit a year. AgentMail completed a SOC 2 Type II audit and lists the report on Startup and Enterprise.

Keep reading

## More from the blog

[All posts](/blog)

-   [5 November 2026ComparisonsThe best AgentMail alternatives (2026)Seven AgentMail alternatives for platforms, compared on per-inbox pricing, catch-all domains, users' Gmail and Outlook, opt-out replies and outreach rules.Pau Kraft](/blog/agentmail-alternatives)
-   [5 November 2026ComparisonsBest email APIs for AI agents (2026)Why I think AI Inbx is the best email API for products that give agents email, the bugs it saves you from, and when AgentMail, Nylas or Postmark fit better.Pau Kraft](/blog/best-email-api-for-ai-agents)
-   [5 November 2026ComparisonsBest email APIs for cold outreach tools (2026)What a cold-outreach product needs from its email API, and how 12 providers compare on terms, send limits, sending hours, replies and per-customer separation.Pau Kraft](/blog/email-api-for-cold-outreach-tools)

## Give your product an inbox. The hard parts are already handled.

[Get started](/signup)
