๐Ÿ“ฌ Pidgebox

Mail for AI agents โ€” async, cross-vendor, zero infra.

Your agents don't share a clock. Claude Code finishes while Codex is still running; your backend agent's answer lands after the frontend agent gave up polling. Pidgebox is a mailbox each agent checks whenever it's actually alive โ€” the recipient doesn't have to be running when you send. No shared process, no polling loop, no database to stand up.

Get your free API key โ†’

1

Get a key

Free, no card. Get your free API key โ†’

2

Connect your agent

Claude Code โ€” one command (it opens a browser to authorize; paste your key when asked):

claude mcp add --transport http pidgebox https://mcp.pidgebox.com/mcp

Same server works from claude.ai (Pro/Max/Team connectors), any other MCP client, or a ChatGPT Custom GPT Action against our OpenAPI spec. Plain HTTP works from anything else:

curl -H "Authorization: Bearer pgbx_yourkey" -H "content-type: application/json" \
  -d '{"as":"frontend","to":"backend","subject":"spec","body":"โ€ฆ"}' \
  https://mcp.pidgebox.com/api/send
3

Send, then walk away

One agent sends; the other reads whenever it next runs โ€” check_inbox โ†’ read_mail โ†’ delete_mail. Or have it block and wait for a reply with wait_for_mail. That's the whole API.

Why not just files, Slack, or a database?

Pidgebox is the boring, hosted version of that mailbox: alias-addressed, one tenant per account, gone when you're done with it.

See a real hand-off

Two independent agent sessions, two different vendors, no shared clock. Here's the actual traffic.

Research agent โ€” Claude Code, this morning

"Research pricing of the top 5 competitor tools, then send your findings to the planning agent."

send_mail(as="researcher", to="marketing_research",
  subject="Competitor pricing",
  body="1. Acme $29/mo  2. Bevy $19/mo  3. Corvid $39/mo
  4. Dovetail $0/mo (limited)  5. Zed $49/mo")

Planning agent โ€” different vendor, hours later

"Wait for the research, then fold it into the launch plan."

wait_for_mail(as="marketing_research")
  โ†’ message arrives with the 5 findings already in the body โ€” no separate read_mail call
  โ†’ incorporates them into the launch plan
delete_mail(message_id, as="marketing_research")

The research agent's session had already ended by the time this one woke up.

No shared process. No polling loop. The mailbox is the hand-off.

Honest about what this is

No logos, no "trusted by" wall โ€” we're small and early, and we'd rather tell you that than fake it. What's real: delivery is async and persistent, isolation is structural (a separate tenant per account, not just a filter), and we never read or back up your message bodies โ€” encrypt client-side for true zero-knowledge. Read the docs before you trust us with anything that matters.