# Agent Native Mail: What It Means and How to Run It

Published: October 30, 2026

Agent native mail is email built for programs, not people: API mailboxes, inbound webhooks, per-agent identity. What it requires and how to set it up.

Agent native mail is email infrastructure designed to be operated by software rather than a human in a client. Instead of a person opening an inbox and reading threads, an agent gets its own address, receives inbound mail as an HTTP webhook, and replies through an API call that keeps threading intact. The distinction matters because almost every mainstream email product assumes a human is in the loop, and that assumption leaks into the auth model, the rate limits, and the data shapes.

If you are building an agent that needs to talk to vendors, customers, or other agents over email, the practical question is whether your mail layer was built for that or retrofitted into it. This post defines agent native mail, lists the properties that actually matter, and shows the shortest path to a working mailbox.

## What makes mail "agent native"

Four things, in rough order of how often teams get burned by missing them.

### 1. Mailboxes are a provisioned resource

An agent native system treats a mailbox like a database row or a container: you create it with one call, it exists immediately, and you can create a thousand more. No signup form, no phone verification, no human clicking a consent screen.

```bash
npx @robotomail/cli mailbox create shopping-agent
```

Or over HTTP:

```bash
curl -X POST https://api.robotomail.com/v1/mailboxes \
  -H "Authorization: Bearer rm_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{"address": "shopping-agent"}'
```

That is the whole provisioning step. If your current plan for giving an agent an address involves creating a consumer account and storing a password, you do not have agent native mail, you have a human account being driven by a robot. We wrote about why [Gmail and Outlook don't work](/blog/gmail-outlook-dont-work) for this pattern in more detail.

### 2. Inbound is a push, not a poll

Agents are event driven. They should wake up when mail arrives, not loop over IMAP on a timer. Agent native mail delivers a parsed message to your endpoint:

```json
{
  "event": "message.received",
  "data": {
    "message_id": "...", "mailbox_id": "...", "mailbox_address": "shopping-agent@robotomail.co",
    "from": "vendor@example.com", "subject": "Re: Order #A-4521", "body_text": "...",
    "thread_id": "...", "received_at": "2026-04-17T10:00:00.000Z"
  }
}
```

Two details in that payload do real work. `body_text` means you are not writing a MIME parser or stripping HTML before you can prompt a model. `thread_id` means you know which conversation this belongs to without reconstructing `References` headers yourself. Polling-based setups give you neither for free, which is most of the reason [IMAP for AI agents](/blog/imap-for-ai-agents) ends up being more code than people expect.

### 3. Identity is per agent, not per account

One address per agent is the default, not a workaround. That gives you isolation (a compromised agent cannot read another agent's mail), clean audit trails, and sane reply routing in multi-agent systems where a coordinator and three workers all correspond with different external parties. It also means recipients see a stable, honest sender rather than a shared alias that no one owns.

### 4. Sending and receiving are the same primitive

Bulk sending APIs are optimized for outbound volume and treat inbound as an add-on, often a single catch-all route you parse yourself. Agent conversations are symmetric: send, get a reply, read it, reply again. Agent native mail puts both on the same mailbox object.

```bash
curl -X POST https://api.robotomail.com/v1/mailboxes/mbx_shopping/messages \
  -H "Authorization: Bearer rm_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{"to": ["vendor@example.com"], "subject": "Order #A-4521 delivery update?", "bodyText": "Hi, checking on the status of order A-4521."}'
```

To reply inside an existing thread, include `inReplyTo` with the inbound `message_id`. The provider sets the headers so the recipient's client nests it correctly.

## Agent native mail vs. human-first email, side by side

| Concern | Human-first email | Agent native mail |
| --- | --- | --- |
| Creating an address | Signup flow, verification, consent | One API or CLI call |
| Auth | OAuth per user, refresh tokens, consent screens | Service API key |
| Inbound | Poll IMAP or subscribe to a user's mailbox | Webhook with parsed fields |
| Threading | You reconstruct from headers | `thread_id` on every message |
| Scale unit | One mailbox per person | One mailbox per agent, created on demand |
| Failure mode | Token expiry, UI-coupled rate limits | HTTP errors you can retry |

The OAuth row is the one that quietly decides architectures. A provider-hosted mailbox tied to a human identity requires that human to stay in the loop for token lifecycle, and it ties the agent's ability to work to someone else's session. Our [comparison with the Gmail API](/compare/gmail-api) walks through where that boundary sits.

## When you actually need it

Not every automation does. A nightly job that emails a report is a transactional send; a bulk API handles that fine. You want agent native mail when at least one of these is true:

- The agent needs to **receive** mail and act on it, not just send.
- Conversations span multiple turns and you need thread context.
- You are provisioning addresses dynamically, for example one per customer ticket or one per deployed agent.
- Each agent needs its own identity for isolation or audit reasons.

Typical shapes: a support agent that owns an inbox and answers tickets, an invoice chaser that follows up until it gets a reply, a research assistant that subscribes to sources and summarizes them, and [multi-agent workflows](/use-cases/multi-agent-workflows) where agents hand work to each other over email because email is the one protocol every external party already speaks.

## Setting it up in practice

1. **Create a mailbox** for the agent, one call as above. Use a descriptive local part: `support-intake`, `billing-agent`, `recruiter-01`. Recipients read it.
2. **Register a webhook** as its own resource and point it at an endpoint you control. Return 2xx quickly and process asynchronously; see [/docs/concepts/webhooks](/docs/concepts/webhooks) for the exact shape and retry behavior.
3. **Handle the inbound event.** Look up the agent by `mailbox_id`, load thread state by `thread_id`, feed `body_text` to your model.
4. **Reply with `inReplyTo`** set to the inbound `message_id` so the thread stays intact on the other side.
5. **Add a custom domain** when you are ready for the sender to carry your brand. DNS records, verification, then pass that domain's UUID as `domainId` at mailbox creation.
6. **Treat inbound as untrusted input.** Anyone can email your agent. Keep tool permissions narrow, and do not let email body text authorize actions on its own. The [agent email security guide](/docs/guides/agent-email-security) covers the specific failure modes.

Step six is where most teams underinvest. An agent with an inbox and a payments tool is a prompt injection target with a public endpoint. Decide what the agent may do before it reads anything.

## What agent native mail is not

It is not an AI writing assistant. The term shows up near tools that draft email copy for people, and those solve a different problem. Agent native mail is plumbing: addresses, delivery, inbound parsing, threading. What the agent says is your model's job.

It is also not a bulk sender. Reputation, deliverability, and volume shaping for marketing campaigns are a separate discipline. Agent mailboxes are conversational, low volume per address, and high in number of addresses, which is close to the opposite profile.

If the vocabulary around this space is still fuzzy, [what is agentic mail](/blog/what-is-agentic-mail) and the breakdown of the [agentic inbox](/blog/agentic-inbox) cover adjacent ground without repeating the setup detail here.

## FAQ

### Is agent native mail just an email API?

An email API is usually a send endpoint. Agent native mail adds the pieces an autonomous program needs on top: programmatic mailbox provisioning, parsed inbound webhooks, per-agent identity, and thread continuity. You can build those on a send-only API, but you will be writing the mailbox layer yourself.

### Can one agent use several addresses?

Yes. Create as many mailboxes as the workflow needs and route them to the same webhook, then branch on `mailbox_id`. A common pattern is one address per customer or per case so replies land pre-segmented.

### Do I need my own domain?

No. Platform-domain mailboxes work immediately, which is the right choice for internal tooling and prototypes. Use a custom domain when the agent corresponds with customers and the sender address should be yours.

### How is this different from giving an agent access to my Gmail?

Access to a human mailbox means OAuth consent, token refresh, shared history the agent can read, and limits tuned for one person's usage. A dedicated mailbox gives the agent its own identity, an API key instead of a user session, and inbound as events. The practical walkthrough is in [how to give your AI agent an email address](/how-to-give-your-ai-agent-email-address).

Ready to build it? Create a mailbox, point a webhook at your handler, and your agent is sending and receiving in a few minutes. Start at [robotomail.com](https://robotomail.com) or read the [quickstart](/docs/quickstart).
