Live · free tier, no card

Give your agent its own inbox.

A real address in one API call — send, receive, reply. You decide what it’s allowed to send; cold email is blocked at the API, not in the fine print.

inbound · arrivingon the wire
from: user@acme.com
to: sarah@yourcompany.com
subject: Re: demo on Tuesday?
“Hi! Tuesday 10am works — can you send a calendar invite?”
01 · What it's allowed to send

Every sanctioned agent path stops at a draft — Google’s own Gmail MCP ships eleven tools and no send. Here your agent sends for real, and the rule for what it may send is enforced at the API.

transactional201 sent
POST /v1/messages
{
  "agent": "support",
  "to": ["sam@acme.com"],
  "subject": "Your booking is confirmed"
}

201  status: sent
     routing_pool: clean
cold outreach422 refused
POST /v1/messages
{
  "subject": "Quick question",
  "body_text": "Worth a 15-min call?"
}

422  cold_email_prohibited
     cold_outreach
     confidence 0.98 — not sent

Not a setting you can forget to switch on, and not a clause in an acceptable-use policy. The refusal happens in the send call, it tells your agent exactly why, and it offers a sandbox to test against and a second review if you think it got it wrong. Your reputation cannot be spent by a prompt you did not write.

02 · Injection scan

Every inbound is scored for prompt injection and flagged before your agent acts on it. Try it — this demo is the real thing.

inbound · raw body191 chars
reply.eventVerified · low injection
parsed
intent: "schedule_demo"entities: {  date: "tuesday"  time: "10am"  from_email: "jordan@stripe.com"}urgency: 0.53injection_score: 0.01sender_reputation: 0.91quarantined: false
// live production scanner · real injection score
03 · Structured event

The email leaves the scanner as data — injection score and sender reputation on every event, intent and entities when you opt in.

reply.eventverified
{
  "id": "rep_01H8...",
  "agent": "sarah",
  "from": "user@example.com",
  "subject": "Re: Demo",
  "body": "Tuesday at 10am ET works...",
  "injection_score": 0.02,
  "sender_reputation": 0.91,

  // Only present when classification is enabled on this agent:
  "intent": "schedule_demo",
  "entities": {
    "date": "2026-05-14",
    "time": "10:00",
    "timezone": "America/New_York"
  },
  "urgency": 0.8
}
04 · Your code

Six lines, and the wire runs through your function. Same shape in TypeScript, Python, and MCP.

live
agent.ts
import { mails } from "@mailsai/sdk";

const sarah = mails.agent("sarah"); // sarah@yourcompany.mails.ai

await sarah.send({
  to: "user@example.com",
  subject: "Your password reset code",
  body: "Your verification code is 481920. It expires in 10 minutes.",
});

sarah.onReply((reply) => {
  // reply.injection_score   → 0.02
  // reply.sender_reputation → 0.91
  // reply.intent   → "schedule_demo"
  // reply.entities → { date, time }
  // You decide what to send next.
});
05 · Reputation & suppression

Every sender is scored; bad actors get paused at 0.3% — before the network ever feels them.

user@stripe.comschedule_demo·inj 0.02·rep 0.91
ops@brex.compricing_inquiry·inj 0.05·rep 0.88
<redacted>injection_attempt·inj 0.97·rep 0.12
noreply@vercel.comsystem_notification·inj 0.01·rep 0.95
billing@aws.cominvoice_received·inj 0.02·rep 0.94
<unsubscribe>unsubscribe·inj 0.04·rep 0.62
<spam>spam_detected·inj 0.81·rep 0.18
user@stripe.comschedule_demo·inj 0.02·rep 0.91
ops@brex.compricing_inquiry·inj 0.05·rep 0.88
<redacted>injection_attempt·inj 0.97·rep 0.12
noreply@vercel.comsystem_notification·inj 0.01·rep 0.95
billing@aws.cominvoice_received·inj 0.02·rep 0.94
<unsubscribe>unsubscribe·inj 0.04·rep 0.62
<spam>spam_detected·inj 0.81·rep 0.18
0.3%
complaint auto-pause
auto
reputation-based throttle
per-agent
reputation, queryable at launch
06 · The meter

You pay per event, not per month. Quiet months cost zero.

usage meter · metered ratessimulated · coming soon
  • send$0.001
  • inbound$0.002
  • send$0.001
  • inbound +classify$0.005
  • inbound$0.002
  • send$0.001
running total$0.012
  • $0.001 per send · $0.002 per inbound (delivery + injection scan + reputation)
  • +$0.003 per classify — opt-in intent + entities
  • Metered is coming soon. Monthly tiers today: Free $0 · Pro $20 · Scale $99.
Full pricing
06 · End of the wire

Built for agents. Self-serve in minutes.

No fake customer logos — the machine you just scrolled through is the pitch. Sign up free and send your first message in minutes.

$ npm install @mailsai/sdk
Live on npm today · @mailsai/sdk + @mailsai/mcp-server
Works with your runtime · via MCP
Claude Code
Cursor
Cline
Windsurf
OpenAI Agents
LangGraph