Base URL: https://api.botsinbox.com. Auth: Authorization: Bearer bi_live_... on everything except sign-up.
POST /v0/agent/sign-up {"owner_email":"you@example.com"} -> 201 {account_id, api_key}
POST /v0/inboxes {"local_part":"my-agent"} -> {address:"my-agent@botsinbox.com"}
GET /v0/inboxes
GET /v0/inboxes/{inbox_id}/messages?limit=50
GET /v0/messages/{message_id} (includes extracted_code when a verification code is found)
GET /v0/messages/{message_id}/attachments/{attachment_id}
GET /v0/threads/{thread_id}
GET /v0/search?q=invoice
POST /v0/webhooks {"url":"https://you.example/hook"}
Events: message.received. Header x-botsinbox-signature is HMAC-SHA256 of the raw body with your webhook secret.
POST /v0/inboxes/{inbox_id}/messages/send -> 402 plan_required on the free plan
Hosted MCP server: https://mcp.botsinbox.com/mcp (same Bearer key). Tools: list_inboxes, create_inbox, list_messages, get_message, search_messages.