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.

DimensionPostmarkMails.aiNotes
Per-sender complaint cronYes (Message Streams)Yes (architectural primitive)Both auto-suspend bad actors before AWS sees them. Same philosophy.
Transactional vs broadcast isolationMessage StreamsSingle product (transactional only)Mails.ai is pure transactional + agent inbox. We don't sell broadcast.
Sender reputation trackingPer-StreamPer-agent (one identity, many recipients)Agent-level granularity instead of stream-level.
Webhook structureInbound Stream → parsed JSONTyped reply event with intent + entities + injection_scoreMails.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 pricingContact salesMetered tier (coming soon) extends to any volume, no contact-sales gate100% 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 beta

Built for agents.
Self-serve in minutes.

Public API opens Q3 2026. Drop ~6 lines into your agent and ship.

npmpnpmbunpip
$ npm install @mailsai/sdk
Packages publish with cohort 1 · Q3 2026