Mailersend vs Mailgun
Mailgun scores higher on the AgentReady, 58/100 against 47/100. They differ on 10 of the 41 signals. Which ones decides whether an agent can adopt them without a person watching.
What each one is
Mailersend. MailerSend is an intuitive email API and SMTP service for sending transactional emails with high deliverability, easy integration, and a robust API supported by extensive documentation.
Mailgun. Transactional Email Delivery Service & API for Developers.
Where Mailersend is ahead
Mailersend passes llms.txt published, and Mailgun does not. That is discover, whether an agent can find the product at all without being told it exists.
It also holds adopt: no mandatory sales call and cli available. Mailgun misses those.
Where Mailgun is ahead
Mailgun passes clear canonical domain, clear product positioning and machine-readable metadata, and Mailersend does not. That is discover, whether an agent can find the product at all without being told it exists.
It also holds adopt: agent-compatible signup flow, fast time to first request and copyable quickstart. Mailersend misses those.
And on operate, agent compatibility verified. Mailersend misses it.
What neither does
Both fail public docs discoverable, llms-full.txt / full agent docs, structured api reference, openapi / spec quality, request examples provided, response examples provided, errors and status codes documented, limits / constraints documented, programmatic credential creation, structured, predictable output, machine-readable errors, retry behavior documented, idempotency support, rate-limit behavior predictable. If your agent needs any of those, you will be building it yourself either way.
Score, pillar by pillar
The AgentReady splits into four pillars, scored separately, because a product can be easy to find and still impossible to adopt.
Discover is whether an agent can find the product at all without being told it exists. Mailgun leads 73 to 53. Mailersend misses clear canonical domain, clear product positioning, public docs discoverable, llms-full.txt / full agent docs, machine-readable metadata; Mailgun misses public docs discoverable, llms.txt published, llms-full.txt / full agent docs.
Understand. Both sit at 31/100 here. Mailersend misses structured api reference, openapi / spec quality, request examples provided, response examples provided, errors and status codes documented, limits / constraints documented; Mailgun misses structured api reference, openapi / spec quality, request examples provided, response examples provided, errors and status codes documented, limits / constraints documented.
Adopt. Mailgun leads 75 to 70. Mailersend misses agent-compatible signup flow, programmatic credential creation, fast time to first request, copyable quickstart; Mailgun misses no mandatory sales call, programmatic credential creation, cli available.
Operate. Mailgun leads 53 to 35. Mailersend misses structured, predictable output, machine-readable errors, retry behavior documented, idempotency support, rate-limit behavior predictable, agent compatibility verified; Mailgun misses structured, predictable output, machine-readable errors, retry behavior documented, idempotency support, rate-limit behavior predictable.
Pricing
Mailersend does not publish a machine-readable starting price and has a free tier. Mailgun does not publish one and has a free tier.
| Mailersend plans | Mailgun plans |
|---|---|
| Free $0/mo | - |
| Professional 14-day free trial | - |
Signal by signal
| Signal | Mailersend | Mailgun |
|---|---|---|
| AgentReady | 47 | 58 |
| Discovery | 53 | 73 |
| Understanding | 31 | 31 |
| Adoption | 70 | 75 |
| Operability | 35 | 53 |
| Public API | Yes | Yes |
| MCP server | Yes | Yes |
| OpenAPI spec | Unknown | Unknown |
| CLI | Yes | Unknown |
| llms.txt | Yes | Unknown |
| Self-serve signup | Yes | Yes |
| Free tier | Yes | Yes |
Which to pick
Mailgun clears more of the signals an agent needs, so it is the safer default for unattended use. Full profiles: Mailersend and Mailgun. Alternatives to each: Mailersend, Mailgun.
An agent can fetch this as data: POST /v1/compare {"slugs": ["mailersend", "mailgun"]}