# Mailgun inbound routes for AI agents: what they do and don't give you

Mailgun can receive email for an AI agent with inbound routes: a filter that
matches incoming mail and an action that forwards it to a URL or another
address, or stores it for up to three days. That makes Mailgun a good
trigger for an agent that runs on your server. It doesn't give the agent a
mailbox to search or come back to. Botmail does, and an agent can set it up
without a domain.

## How Mailgun routes work

A route is a priority, a filter and one or more actions:

- **Filters:** `match_recipient()`, `match_header()` or `catchall()`
- **Actions:** `forward()` to an email address or URL, `store()` to keep the
  message on Mailgun for up to 3 days (optionally notifying a URL), and
  `stop()` to skip lower-priority routes

A route for an agent might be:

```text
match_recipient("agent@mg.example.com")  ->  forward("https://example.com/hooks/mail"), stop()
```

Mailgun POSTs the parsed message to your URL, including `stripped-text` (the
reply without quoted history and signature), which is handy for agents.
Spam filtering on inbound mail is **disabled by default**; you can choose to
delete spam or mark it with headers. Mailgun now also offers a simpler
Forwards API for plain forwarding.

Mailgun's MCP server (`@mailgun/mcp-server`) runs locally with an API key;
Mailgun says it doesn't offer a hosted version. It can manage routes, send
mail and read stats, and deliberately exposes no delete operations.

## The plan limits that matter here

| Mailgun plan | Price | Inbound routes | Sending |
| --- | --- | --- | --- |
| Free | $0 | 1 | 100 emails a day, 1 custom sending domain |
| Basic | $15/month | 5 | 10,000 a month |
| Foundation | $35/month (first month free) | Full inbound routing | 50,000 a month |

Message retention is 1 day on Foundation and up to 7 days on Scale. Sources:
Mailgun's [pricing](https://www.mailgun.com/pricing/),
[route actions](https://documentation.mailgun.com/docs/mailgun/user-manual/receive-forward-store/route-actions),
[storing messages](https://documentation.mailgun.com/docs/mailgun/user-manual/receive-forward-store/storing-and-retrieving-messages)
and [MCP server](https://documentation.mailgun.com/docs/mailgun/mcp) docs,
checked in October 2026.

## What you still build

Routes deliver mail; they don't keep it. For an agent you'd add:

- a public HTTPS endpoint that verifies Mailgun's signature
- your own storage, since `store()` keeps mail for 3 days at most
- threading and search, so the agent can find "the invoice from last month"
- tools the agent calls, and spam filtering you turn on yourself

## Side by side

| | Botmail | Mailgun routes |
| --- | --- | --- |
| What the agent gets | A mailbox with threads, labels, search and drafts | A POST per message, or 3-day storage |
| Domain needed | No, `name@botmail.pro` | Yes, a domain you verify with Mailgun |
| Setup | The agent claims an address; you approve one email | DNS records, a route and a webhook endpoint |
| Free plan | 1 mailbox, 100 MB; 100 sends a day at first, up to 1,000 with trust | 1 inbound route, 100 emails a day |
| How long mail is kept | Until you delete it | Up to 3 days with `store()` |
| Agent without a public URL | Long-poll `GET /v1/events` or `wait_for_mail` | Needs an endpoint, or polling stored events |
| MCP | Hosted, OAuth, mailbox tools | Local, API key, account management tools |
| Spam filtering | First-contact sends checked for spam and phishing | Inbound filter off by default |

## When Mailgun is the better choice

- you already send through Mailgun and want replies routed into your app
- the agent must send and receive on your own domain
- one route triggering a server-side agent is all you need
- you want Mailgun's sending scale, mailing lists and analytics

## When Botmail is the better choice

- the agent needs to remember and search its mail, not just react to it
- it runs on a laptop or in a sandbox without a public URL
- you don't want to manage DNS, routes or a webhook server
- you'd like a human to approve the address and review drafts

The same "new mail" step on Botmail, with no endpoint:

```sh
curl -s "https://botmail.pro/v1/events?after=0&wait=30" \
  -H "Authorization: Bearer $BOTMAIL_KEY"
```

Botmail isn't affiliated with Mailgun.

## Try Botmail

Paste this into your agent:

```text
Read https://botmail.pro/skill.md and claim a mailbox for yourself. Send the invite to my email, then wait for me to approve it.
```

Or compare other sending APIs: [SendGrid](https://botmail.pro/compare/sendgrid) and
[Resend](https://botmail.pro/compare/resend).

## Questions

### Can Mailgun receive email for an AI agent?

Yes, with inbound routes. A route matches a recipient or header and forwards the message to a URL or address, or stores it on Mailgun for up to 3 days. Your app keeps the mail and gives the agent tools.

### How many inbound routes does Mailgun's free plan include?

One. Mailgun's free plan includes 1 inbound route and 100 emails a day. Basic includes 5 routes, and Foundation includes full inbound routing.

### Does Mailgun have a hosted MCP server?

No. Mailgun's MCP server, @mailgun/mcp-server, runs locally with an API key. It can manage routes, send mail and read stats. Botmail's MCP server is hosted at https://botmail.pro/mcp.

---

Source: https://botmail.pro/compare/mailgun
Agent instructions: https://botmail.pro/skill.md
All guides: https://botmail.pro/llms.txt
