The gap How it works Capabilities Attribution Inbox Pricing Docs Follow on X Get API access

Every agent
flies a flag.

Defeat gives every AI agent a real mailbox and a verified identity card. Recipients see who wrote, who operates it, and that the address is not a throwaway.

POST api.defeatemail.net/v1/messages

ops@acme.defeatemail.net 5 new
review-botacme.co Invoice 4471 needs a second approver Verified
triagehelpdesk.io Ticket 88213 escalated to a human Verified
scheduleracme.co Thursday sync moved to 14:30 Verified
unknown senderno flag Urgent: confirm the wire details Unsigned
payroll-updateacme.co.invalid Action required on your bank record Quarantined
policy: hold unsigned · quarantine failed signature

The gap · 01

An inbox cannot tell an agent from a person.

Agents already send mail. They borrow a founder address, a shared no-reply, or a mailbox nobody owns. The recipient is left guessing and the sender is left with no record.

01

No identity

A message lands from support@. It could be a person, a cron job, or a model on its fourth retry. Nothing in the envelope says which, or whether the address was minted an hour ago.

02

No reply path

Replies arrive where no agent is listening. The thread dies quietly, or a person inherits a conversation they never opened.

03

No record

When an agent sends the wrong thing there is no signed trail from the message back to the run, the model, and the operator who answers for it.

How it works · 02

Mail in, identity attached, everything logged.

Defeat sits between the run and the recipient. It signs what leaves, resolves what arrives, and keeps a record either side can hold up later.

1

Give the agent an address

Create a mailbox from the API or the dashboard. Point a subdomain at Defeat, or borrow one of ours while you build.

2

Send through the relay

Outbound mail is signed with the agent key and stamped with its operator, its model, and the task it is working.

3

Receive on a webhook

Inbound mail arrives as structured JSON with the thread, the attachments, and the sender verdict already resolved.

Capabilities · 03

Mail that behaves like infrastructure.

Every part of the mailbox is addressable from code, and every part of it leaves a trace.

Programmable mailboxes

Addresses you create, scope, and destroy from code. Wildcards, plus-addressing, and per-run inboxes that expire on their own.

POST /v1/mailboxes

Flags

The signed identity record carried by every message. Who ran it, on what model, for which task, and the key that proves all three.

X-Agent-Flag

Routing rules

Match on sender, flag state, header, or body. Forward, hold, quarantine, or hand the thread to a person.

rules.yaml

Threads that survive handoff

Conversation state stays intact when one agent passes the thread to another agent, or out to a human, and back again.

thread_id

Webhooks and streams

Signed delivery with retries and idempotency keys, or hold a stream open and read events the moment they land.

events.stream()

The ledger

An append-only record of every send, receipt, and verdict. Export it whenever you like and the signatures travel with it.

GET /v1/ledger

Send limits

Per-agent rate caps, recipient allowlists, and a hard ceiling on volume. An agent stuck in a loop stops at the wall instead of the inbox.

policy.limits

Human approval

Route a draft to a person before it leaves. They approve in one click and the flag records exactly who did.

mode: review

Attribution · 04

The person on the other side gets to check.

A flag is the agent’s identity card. It is signed, it rides in the message headers, it survives forwarding, and it resolves to a public page anyone can open without an account.

  • Who wrote it. The agent by name, the model it ran on, and the task it was working when it sent the message.
  • Who operates it. The company behind the agent and the person accountable for it, not just the mailbox the mail came from.
  • That the address is not a throwaway. The card carries when the address was first seen and how long the operator has been signing from it. A mailbox minted this morning cannot pretend otherwise.
  • Checkable by anyone, refusable by anyone. Signatures are Ed25519 against a key on the operator domain. A recipient with no account still gets a plain link, and can stand down agents entirely.
review-bot agent_7Kq4x1 Verified
Operator
acme.co
Accountable
jordan@acme.co
Model
claude-opus-5
Task
run_88213
Signing key
ed25519:9f3c41ab
First seen
4 Mar 2026 · 202 days
flag v1 · defeatemail.net/f/agent_7Kq4x1 signature valid
X-Agent-Flag: v1; id=agent_7Kq4x1; alg=ed25519 X-Agent-Operator: acme.co X-Agent-Accountable: jordan@acme.co X-Agent-Model: claude-opus-5 X-Agent-Task: run_88213 X-Agent-First-Seen: 2026-03-04 X-Agent-Signature: 6lQ2r8…wA==

The inbox · 05

See what the recipient sees.

One mailbox, five messages, three verdicts. Pick any of them.

ops@acme.defeatemail.net 5 messages

Quickstart · 06

Three calls to a working mailbox.

No DNS on day one. Take a subdomain of defeatemail.net, ship the integration, and move to your own domain when you are ready.

# 1 · a mailbox that lives as long as the run
curl -X POST https://api.defeatemail.net/v1/mailboxes \
  -H "Authorization: Bearer $DEFEAT_KEY" \
  -d '{"address":"triage@acme.defeatemail.net","flag":"agent_7Kq4x1","expires_in":"24h"}'

# 2 · send it, signed
curl -X POST https://api.defeatemail.net/v1/messages \
  -H "Authorization: Bearer $DEFEAT_KEY" \
  -d '{
       "from": "triage@acme.defeatemail.net",
       "to":   "jordan@acme.co",
       "subject": "Ticket 88213 needs a human",
       "text": "The refund is above my agent limit.",
       "flag": { "task": "run_88213", "model": "claude-opus-5" }
     }'

# 3 · read the thread back
curl https://api.defeatemail.net/v1/messages?thread=thr_4b21 \
  -H "Authorization: Bearer $DEFEAT_KEY"

The full API surface is documented.

Mailboxes, signed sends, webhooks, the flag record, verdicts, errors and rate limits.

Read the docs Request API access

Pricing · 07

Priced per mailbox, not per seat.

Agents outnumber people. Charging by the human made sense for the last inbox, not this one.

· Solo

$0

One domain, three mailboxes, and the whole flag spec.

  • 1 domain, 3 mailboxes
  • 1,000 messages a month
  • Signed flags and public flag pages
  • Webhooks and the REST API
Start free

· Studio

$39 per month

For teams running agents against real people.

  • 5 domains, unlimited mailboxes
  • 50,000 messages a month
  • Routing rules and human approval
  • Ledger export and retention controls
  • MCP server for agent frameworks
Get API access

· Scale

Custom

Your keys, your region, your terms.

  • Bring your own signing keys
  • Dedicated IPs and region pinning
  • SSO, audit roles, and retention policy
  • Priority routing with an SLA
Talk to us

Give your agents an address.

Pick a subdomain now and keep it when you move to your own.

.defeatemail.net

No card needed. Keep the subdomain when you move to your own.

Need a key instead? Request API access