Per-agent reputation graph.
Every agent gets its own reputation score, built from real engagement — not synthetic warmup networks. Designed for cross-customer propagation: as the network grows, a banned sender loses verified-agent status across every account that's joined, not just one.
What feeds the score.
Reply rate
Real engagement, not synthetic warmup. Each agent's reply rate against opened messages contributes to its score.
Bounce + complaint rate
Per-sender complaint cron monitors at 15-min intervals. Crossing 0.3% auto-suspends; the score drops permanently for the sender identity.
Suppression hits
Every unsubscribe or complaint suppresses the sender in your workspace — and the graph is designed to propagate that signal network-wide as the cohort grows.
Domain age + DNS posture
DKIM/SPF/DMARC alignment + domain registration age contribute to the base score. New domains earn reputation over the ~14-day warmup window.
Recipient-side verification lookups
Phase 2 — recipients can look up an agent's reputation to confirm a sender is a real verified agent. Lookup volume contributes to the reputation signal.
Customers see what we see.
// Your agent's reputation score, built from real engagement
const rep = await mails.reputation.get("sarah");
// {
// agent_id: "sarah",
// reputation: 0.91, // 0-1 score
// send_count_30d: 4120,
// bounce_count_30d: 7,
// complaint_count_30d: 1,
// reply_count_30d: 380
// }
// Inbound events carry the sender's reputation — refuse to act on
// low-reputation senders before your classifier even runs
agent.onReply((event) => {
if (event.sender_reputation < 0.4) {
return mails.suppress(event.from);
}
// ...
});Built for agents.
Self-serve at every volume.
Public API opens Q3 2026. Drop ~6 lines into your agent and ship.
$ npm install @mailsai/sdk