Migrate from Postmark.
You already like the deliverability discipline. We borrowed the same approach — per-sender complaint cron, auto-suspend at 0.3%. What's new: typed reply events, native injection scanning, MCP-native distribution, and a self-serve Metered tier (coming soon) that extends past Postmark's "contact sales" gate.
Philosophical alignment
What's the same, what's different.
Postmark and mails.ai share the same deliverability philosophy. Both suspend bad senders early. Both treat transactional email seriously. The difference is what happens when your agent reads a reply.
| Dimension | Postmark | Mails.ai | Notes |
|---|---|---|---|
| Per-sender complaint cron | Yes (Message Streams) | Yes (architectural primitive) | Both auto-suspend bad actors before AWS sees them. Same philosophy. |
| Transactional vs broadcast isolation | Message Streams | Single product (transactional only) | Mails.ai is pure transactional + agent inbox. We don't sell broadcast. |
| Sender reputation tracking | Per-Stream | Per-agent (one identity, many recipients) | Agent-level granularity instead of stream-level. |
| Webhook structure | Inbound Stream → parsed JSON | Typed reply event with intent + entities + injection_score | Mails.ai adds a classifier layer Postmark doesn't have. |
| Dedicated IP | $50/mo per IP (Pro tier) | $50/mo per IP (on request, Scale+) | Same price, same reputation-isolation model (on request, Scale+). |
| Big-sender pricing | Contact sales | Metered tier (coming soon) extends to any volume, no contact-sales gate | 100% self-serve once Metered lands. |
Code diff
Send + receive, side by side.
Before — Postmark
// Postmark — send via Server API + Inbound Stream parse
import { ServerClient } from "postmark";
const client = new ServerClient(process.env.POSTMARK_TOKEN);
await client.sendEmail({
From: "sarah@yourcompany.com",
To: "user@example.com",
Subject: "Demo",
TextBody: "...",
MessageStream: "transactional",
});
// Inbound Stream webhook delivers parsed JSON — but no intent classification.
app.post("/inbound", (req, res) => {
const { From, Subject, TextBody } = req.body;
// Classify intent + extract entities yourself
});After — Mails.ai
// Mails.ai — typed reply event with intent + entities pre-computed
import { mails } from "@mailsai/sdk";
const agent = mails.agent("sarah", { domain: "yourcompany.com" });
await agent.send({ to: "user@example.com", subject: "Demo", body: "..." });
agent.onReply((event) => {
// event.intent => "schedule_demo"
// event.entities => { date, time }
// event.injection_score => 0.02
});Closed betaBuilt for agents.
Built for agents.
Self-serve in minutes.
Public API opens Q3 2026. Drop ~6 lines into your agent and ship.
npmpnpmbunpip
$ npm install @mailsai/sdkPackages publish with cohort 1 · Q3 2026