Agent Native Mail: What It Means and How to Run It
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.
John Joubert
Founder, Robotomail

Table of contents
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.
npx @robotomail/cli mailbox create shopping-agent
Or over HTTP:
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 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:
{
"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 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.
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 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 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
- Create a mailbox for the agent, one call as above. Use a descriptive local part:
support-intake,billing-agent,recruiter-01. Recipients read it. - 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 for the exact shape and retry behavior.
- Handle the inbound event. Look up the agent by
mailbox_id, load thread state bythread_id, feedbody_textto your model. - Reply with
inReplyToset to the inboundmessage_idso the thread stays intact on the other side. - 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
domainIdat mailbox creation. - 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 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 and the breakdown of the 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.
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 or read the quickstart.
Give your AI agent a real email address
Create a mailbox, connect your agent and test a conversation. Send, receive and retrieve the thread through one API.
Related posts
Top Email API Services With Webhook Event Tracking
Compare the top email API services with webhook event tracking: inbound events, delivery and bounce payloads, signing, retries, and agent-ready setup.
Read post
AI Email Agent: Build One That Sends and Receives
What an AI email agent is, and how to build one with its own mailbox, inbound webhook, reply loop, and correct threading. With working code.
Read post
Best Email APIs With Webhook Events for AI Agents
A webhook-first comparison of email APIs: inbound events, payload shape, signing, retries, ordering and replay for agents that react to incoming mail.
Read post