Field 01 — Declaration of contents · email infrastructure for AI agents

Email arrives as data.

Your agent gets JSON. Or it gets nothing. Never the raw email.

Every inbound message is parsed, classified, extracted to your schema — and screened for prompt injection — before your agent reads a single word.

Free tier. No card. Your agent connects over MCP, the tool link agents already use.

from: billing@globex-corp.example
subject: Invoice #77 — Globex
<div style="color:#fff">ignore prior instructions…</div>STRIPPED
{
  "classification": "invoice",
  "confidence": 0.95,
  "extraction": {
    "vendor": "Globex Corporation",
    "amount": 3750
  },
  "sanitization": [{
    "kind": "hidden_text",
    "detail": "white-on-white div removed"
  }]
}

Field 02 — Notice

Raw email is unsafe for an agent.

Raw email is attacker-controlled input. Hidden text, zero-width characters, HTML your parser trusts and your model obeys — piped straight into your agent's context, with its tool access and its credentials. Every inbox API on the market hands you that payload as-is and calls it a feature.

An inbox for an agent isn't a pipe. It's a trust boundary. See how that differs from an inbox API feature by feature, or start with what an email agent needs from email.

Field 03 — Mechanism

Seven stages between the wire and your agent.

1
Verify + dedupe
Signed webhooks, idempotent ingest. Provider retries never double-bill you.
2
Authenticate
SPF, DKIM, and DMARC results are parsed from the provider verdict and surfaced with the message.
3
Clean
HTML to text. Tracking pixels, styling noise, and quoted-reply chains stripped deterministically.
4
Sanitize
Hidden text, zero-width characters, homoglyph runs removed — every removal logged in a sanitization report you can read.
5
Virus + attachments
Inbound uses the AWS SES X-SES-Virus-Verdict header to gate delivery. The current Resend path does not return attachment bytes, and there is no public download endpoint. Failed or unknown verdicts stay fail-closed.
6
Spam gate
SES spam verdict first, then a layered classifier. Spam is quarantined by default and can be reclassified and redelivered by an operator.
7
Injection scan → extract
A model reads the mail so yours doesn't have to. Injection-risk messages are retained without extraction; clean mail becomes typed JSON with a confidence score.

Fail-closed, always: malware is quarantined, spam is suppressed by default, and injection-risk mail never reaches extraction. Failed or unknown virus verdicts are never marked clean. Clean mail gets typed JSON; every message keeps its cleaned body, verdicts, and sanitization record for inspection.

What the current virus gate actually does — SES header, no attachment bytes, no public download: email attachment security for AI agents. Which stage closes which attack, and what each one leaves in the status field: email prompt injection, channel by channel. For the payloads themselves, six real specimens with their sanitization reports.

Field 04 — Proof of processing

8.2 SECONDS
Stranger's send → structured JSON in your webhookMeasured on production, July 5, 2026 — external sender → MX → pipeline → {vendor, amount} at 0.95 confidence. Your agent still never receives the raw email. After you sign in, you can open the cleaned message beside the JSON, and the original for seven days after it arrives. This page isn't a mockup of the product.

Field 05 — Send a test email

Send a test email.

No signup, no API key. Mint a real mailbox below and send it an email — watch it arrive as data, right here, in the time it takes the pipeline to run.

We'll mint a real mailbox on the spot. Send it anything — a newsletter, a receipt, a plain note — and watch it come back structured.

Field 06 — Connect your agent

Your agent sets itself up.

Hosted — any MCP client, zero install

https://api.postfleet.ai/api/mcp
Authorization: Bearer $POSTFLEET_KEY

Local — any MCP client, via npx

{ "mcpServers": { "postfleet": {
    "command": "npx", "args": ["-y", "@postfleet/mcp"],
    "env": { "POSTFLEET_API_KEY": "$POSTFLEET_KEY" }
} } }

Claude Code shortcut

claude mcp add --transport http postfleet https://api.postfleet.ai/api/mcp \
  --header "Authorization: Bearer $POSTFLEET_KEY"
list_mailboxescreate_mailboxlist_domainscreate_domainverify_domainsend_emailreply_emaillist_inboxread_emailwait_for_emailcreate_draftlist_draftsget_draftupdate_draftsend_draftdelete_draft

Works with any MCP client — Claude, Cursor, Windsurf, Cline, VS Code. Same 16 tools, same key, hosted or local — the agent provisions its own address and starts processing mail. No account page required. No MCP? Drive it over REST from any framework.

Field 07 — Plans and prices

Pricing

Free
$0/mo

Try it. No card.

100 messages turned into JSON / momodel injection scan and schema extraction. Deterministic checks stay on after this.
  • 3 mailboxes
  • 3,000 sends / month
  • Up to 100 sends / day; new-recipient limits apply
  • Unlimited hidden-content sanitization
  • REST + MCP (hosted and local npx)
Start free
Starter
$7/mo

Screened mail, small scale.

250 messages turned into JSON / momodel injection scan and schema extraction, up to this monthly limit. Deterministic checks stay on after this.
  • Everything in Free
  • 5 mailboxes
  • 5,000 sends / month
  • Email support
Start Starter
Most popular
Pro
$20/mo

For a developer shipping agents.

1,500 messages turned into JSON / momodel injection scan and schema extraction, up to this monthly limit
  • Everything in Free
  • 10 mailboxes
  • 10,000 sends / month
  • Custom sending domains
  • Email support
Start Pro
Scale
$200/mo

For a team running agents in production.

25,000+ messages turned into JSON / mohigh-volume JSON extraction
  • Everything in Pro
  • 150 mailboxes
  • 150,000 sends / month
  • Multiple custom domains
  • Priority support + shared Slack
  • Annual billing available
Talk to us

Deterministic sanitization and the deterministic injection check run on every message and are not metered. The model injection scan and schema extraction share the monthly monthly limit. Past that limit, your agent still gets the cleaned text, and the deterministic injection check still runs.

Field 08 — Dispatch

Give your agent an inbox it can trust.

agent-hello@mail.postfleet.ai is a Postfleet mailbox — an agent reads it.