Give your agent its own email address.
Agents claim a free, receive-only address on agents.mailpipe.dev in one API call. Turn on sending for $14 a month.
$ curl -X POST https://api.mailpipe.dev/v1/agents/provision \
-H "Authorization: Bearer $MAILPIPE_OPERATOR_TOKEN" \
-d '{"handle":"scout-7","agent_name":"Scout"}'
{
"status": "active",
"address": "scout-7@agents.mailpipe.dev",
"api_key": "mp_live_…",
"receive_only": true
}A real inbox the agent can use on its own.
An address it owns
No borrowed human inbox and no burner that bounces. The agent reads its own mail over the API.
Receive-only to begin with
Free keys can read mail but never send, so a new agent cannot spam or hurt your sending reputation.
Sending when it needs it
One call and an operator payment let the same address send. No new domain and no DNS.
A human in charge
The operator approves the signup, pays for sending and can log in to see what the agent sent.
Claim an address from wherever your agent runs.
Every path calls the same endpoints. Snippets use api.mailpipe.dev/v1, and www.mailpipe.dev/api/v1 works the same way.
With an operator token, the key comes back in the same call
# Provision an Agent ID, key returned inline, once. Pipe out address + key.
curl -s -X POST https://api.mailpipe.dev/v1/agents/provision \
-H "Authorization: Bearer $MAILPIPE_OPERATOR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"handle":"scout-7","agent_name":"Scout"}' | jq -r '.address, .api_key'
# -> scout-7@agents.mailpipe.dev
# mp_live_...
# That read-only key works on the inbox immediately (mail:read):
curl -s https://api.mailpipe.dev/v1/messages \
-H "Authorization: Bearer mp_live_..." | jq '.data[] | {from, subject}'Without a token, a human operator approves by email
# (optional) precheck the handle to avoid a 409
curl -s "https://api.mailpipe.dev/v1/agents/handle-available?handle=scout-7" | jq
# {"handle":"scout-7","normalized":"scout-7","available":true,"suggestions":[]}
# 1. claim (pre-auth), capture the signup id
ID=$(curl -s -X POST https://api.mailpipe.dev/v1/agents/signup \
-H "Content-Type: application/json" \
-d '{"handle":"scout-7","agent_name":"Scout","operator_email":"human@example.com"}' \
| jq -r '.id')
# 2. operator clicks the 24h email link, meanwhile poll for the one-time key
# (sleep >=5s; honor Retry-After on 429)
until KEY=$(curl -s https://api.mailpipe.dev/v1/agents/signup/$ID | jq -r '.api_key // empty') && [ -n "$KEY" ]; do
sleep 5
done
echo "$KEY" # mp_live_..., shown exactly once, store it nowNothing to install. Every call above is plain HTTPS.
Free to receive. $14 to send.
The paid tier turns on sending for the same address, with an operator login to audit it.
- Address
- Free<handle>@agents.mailpipe.dev
- SendingThe same address
- FreeReceive only
- SendingSend to anyone and receive
- API key
- FreeRead-only, pinned to the mailbox
- SendingFull send key on the same mailbox
- Turned on
- FreeAs soon as the operator verifies
- SendingAs soon as payment clears
- Operator
- FreeApproves by email
- SendingGets a receipt and a login to audit mail
- Limits
- FreeAbout 200 inbound a month, 30-day retention, 50 MB
- SendingAdds about 100 sends a day, 1,000 a month
- Price
- FreeFree
- Sending$14 a month, paid by the operator
Agent questions
Read the agent docsDoes my agent need an account to sign up?
Can a free address send email?
Who approves the signup?
What if my agent loses its key?
How does payment work?
Does the agent get its own domain?
Building the agent itself?
Add the MCP server with npx @mailpipe/mcp-server and your agent can sign itself up.