Built on
Drop-in API
Same API shape as Resend or Postmark. Migrate in an afternoon, not a sprint.
curl -X POST https://api.mailgrid.space/api/emails \ -H "Authorization: Bearer $MAILGRID_KEY" \ -H "Content-Type: application/json" \ -d '{ "from": "hello@yourdomain.com", "to": "user@example.com", "subject": "Order confirmed", "html": "<p>Thanks for your order!</p>" }'
import { Mailgrid } from '@mailgrid/sdk'; const mg = new Mailgrid(process.env.MAILGRID_KEY); await mg.emails.send({ from: 'hello@yourdomain.com', to: 'user@example.com', subject: 'Order confirmed', html: '<p>Thanks for your order!</p>', });
from mailgrid import Mailgrid mg = Mailgrid(api_key=os.environ["MAILGRID_KEY"]) mg.emails.send( from_="hello@yourdomain.com", to="user@example.com", subject="Order confirmed", html="<p>Thanks for your order!</p>", )
mg := mailgrid.New(os.Getenv("MAILGRID_KEY")) _, err := mg.Emails.Send(ctx, &mailgrid.SendRequest{ From: "hello@yourdomain.com", To: []string{"user@example.com"}, Subject: "Order confirmed", HTML: "<p>Thanks for your order!</p>", })
let mg = Mailgrid::new(env::var("MAILGRID_KEY")?); mg.send(SendRequest { from: "hello@yourdomain.com".into(), to: vec!["user@example.com".into()], subject: "Order confirmed".into(), html: Some("<p>Thanks for your order!</p>".into()), ..Default::default() }).await?;
Capabilities
We shipped the entire feature matrix on day one — no paywalled "Enterprise" buckets.
Idempotent single sends with bounce/complaint suppression, open + click tracking, and full event log.
100-message batch endpoint, list segmentation, RFC 8058 one-click unsubscribe headers.
HTTP-based SMTP relay endpoint. Pair with any legacy MTA sidecar for real SMTP over TCP.
Per-tenant IP pools with automated warmup. Routes traffic by email stream.
SES SNS → automatic suppression list updates. Webhooks for every lifecycle event.
Schedule sends minutes or months ahead. Smart-send computes optimal time from open patterns.
Upload once, attach by id in every send. R2-backed, 25 MB per file. No payload bloat.
Separate transactional, marketing, notifications. Independent analytics, IPs, suppressions.
Owner / admin / developer / viewer roles. Invite teammates, audit who sent what.
Summarize, Ask AI, Voice & Tone match, Knowledge base, Auto-label. Workers AI on every plan.
30-day rollups, daily metrics, structured audit log of every admin action.
MCP-native
Mailgrid speaks the Model Context Protocol natively. Drop one config block into Claude Code, Cursor, or your custom harness — every API capability becomes a first-class tool call.
No glue scripts. No prompt-engineered "you have an email API" hacks. Eighteen typed tools, full Zod validation, same source of truth as REST.
// Drop this in. That's the whole setup. { "mcpServers": { "mailgrid": { "url": "https://api.mailgrid.space/api/mcp", "headers": { "Authorization": "Bearer mb_live_..." } } } } // 18 tools your agent can call: send_email send_batch create_template generate_template verify_domain get_event_log summarize ask_ai auto_label smart_send_at create_stream upload_file invite_user register_dedicated_ip ... and 4 more
vs the competition
| Mailgrid | Resend | Postmark | ZeptoMail | |
|---|---|---|---|---|
| Price per 1k emails | $0.40 | $1.00 | $1.25 | $0.40 |
| MCP server | ✓ 18 tools | ✗ | ✗ | ✗ |
| Email streams | ✓ 3 types | ✗ | ✓ | ✓ |
| File Cache / attach-by-id | ✓ | ✗ | ✗ | ✓ |
| SMTP relay | ✓ | ✗ | ✓ | ✓ |
| Dedicated IPs (cost) | $24.95/mo | $30/mo | $50/mo | Enterprise only |
| Open-source | ✓ MIT | ✗ | ✗ | ✗ |
| Built-in AI | ✓ All plans | ✗ | ✗ | ✗ |
| Edge-deployed | ✓ 300+ POPs | ✓ | ✗ | ✗ |
No demo call. No sales-assisted onboarding. Just a key and an endpoint.