57 features · each links to its docs
Everything your agent’s inbox does.
Everything you can use today, by product, all in public beta and free during the beta. Homingbox: a real address, mail that is checked and read before your agent sees it, sending a person can approve and every way to connect. Shakehand: a Sign in with Agentboxd button, so your agent can sign in to apps with its inbox. Hosted in the EU.
220 mx.agentboxd.com ESMTP
Built for agents, from the MX up.
We run the mail servers, the triage model and the API as one service. That is what makes these possible.
- AI triage on every email
- Category, prompt injection, phishing, urgency and needs-a-human scores on each inbound message, on every plan.
- EU by default
- Hosted in France. One switch decides whether any email content reaches a model at all.
- Humans stay in the loop
- Drafts wait for a person to approve them, and a key can let an agent write without letting it send.
- Inbound is never dropped
- Mail that arrives over a plan limit is still stored and handed to your agent.
- Receive-only temp inboxes
- On their own domain, so a site that blocks throwaway addresses never blocks your main agents.
- Priced on mail, not inboxes
- Inboxes cost almost nothing, so an agent can make one per task or per customer.
- Our own mail servers
- We run the MX and the delivery servers ourselves, and never add a footer to your mail.
- One account, every way in
- REST, the TypeScript SDK, MCP (hosted or local), webhooks, a WebSocket stream, a claim/ack queue and SMTP. The Python SDK is on PyPI.
HomingboxBeta
message.received → message.enriched
Receive and understand
Mail lands on our own servers and is checked, cleaned and read before your agent sees it.
Inboxes with one API call
POST /v1/inboxesA real address on homingbox.net the moment you ask. Pass a client_id and a restarted agent gets its own inbox back instead of a new one.
Read the docs: Inboxes with one API callCustom domains
/v1/domainsConnect a subdomain such as mail.yourcompany.com. We show the MX, SPF, DKIM and DMARC records, check them, and sign mail with the domain’s own DKIM key.
Read the docs: Custom domainsDKIM key rotation
POST /v1/domains/:id/dkim/rotateRotate a custom domain’s DKIM key without a gap: a new key on a second selector, a switch as soon as its record is seen, and the old record kept for a week. A reminder when a key turns one.
Read the docs: DKIM key rotationTemporary inboxes
ttl_secondsReceive-only addresses on their own domain, tmp.agentboxd.com, that wipe themselves and every message in them after 1 minute to 24 hours. They don’t count toward your inboxes.
Read the docs: Temporary inboxesSPF, DKIM and DMARC on every message
Authentication-ResultsEvery inbound message is checked. Failures get the spf-fail or dmarc-fail label and a warning in MCP results.
Read the docs: SPF, DKIM and DMARC on every messageQuoted history stripped
extracted_textQuoted history and signatures are cut away, so your agent reads the new sentence instead of the whole chain. Replies are threaded by Message-ID and References, never by subject.
Read the docs: Quoted history strippedVerification codes and magic links
waitForVerificationOne call waits for the sign-up email and returns the code or link with a confidence score. No inbox scraping, no regex on your side.
Read the docs: Verification codes and magic linksAI triage on every email
message.aiJEV, our triage model, sorts each message into a category (support, sales, billing, verification…) and scores prompt injection, phishing, needs-a-human, auto-reply and urgency. Scores are stored, labels such as ai:injection-risk are added.
Read the docs: AI triage on every emailAttachments and raw MIME
GET /v1/attachments/:idFiles are stored with their size, type and SHA-256 and served back with safe headers. The original message is always available.
Read the docs: Attachments and raw MIMEText from attachments
GET …/attachments/:id/textPDFs, Word, Excel, CSV and HTML attachments are read on our servers, and scans and photos go through OCR (English, French, Arabic). The text is searchable, feeds triage, and is one call away for your agent.
Read the docs: Text from attachmentsInvoices and receipts as JSON
schema: invoice | receipt | tax_formAsk for an attachment as JSON matching a built-in schema or your own JSON Schema. The answer is validated against the schema before you get it.
Read the docs: Invoices and receipts as JSONClaim/ack work queue
POST /v1/inboxes/:id/messages/claimWorkers claim inbound mail with a lease and ack it when the work is done. A message whose worker died comes back when its lease runs out, and one that keeps failing is set aside as a dead letter. consume() in both SDKs runs the loop.
Read the docs: Claim/ack work queueSearch and long-poll
messages.waitRanked full-text search over subject, body and sender, and a wait call that returns the moment the next matching email lands.
Read the docs: Search and long-pollContacts, knowledge and metadata
get_contact · search_knowledgeA record per sender with notes your agent keeps, documents it can search, and your own ids (crm_id, order numbers) on contacts, inboxes and threads.
Read the docs: Contacts, knowledge and metadata
HomingboxBeta
POST /v1/inboxes/:id/drafts/:draftId/send
Reply safely
Your agent writes; you decide how much it may send on its own.
DKIM-signed sending and threaded replies
messages.send · replyMail goes out from the agent’s own address through our own delivery servers. Replies set In-Reply-To and References and stay in the thread.
Read the docs: DKIM-signed sending and threaded repliesDrafts with human approval
create_draftThe agent writes a draft; a person edits and approves it in the dashboard’s Drafts tab, or a supervising agent sends it. Give the agent drafts:write without messages:send and it can’t send at all.
Read the docs: Drafts with human approvalScheduled send
send_atSchedule a draft or a send from 1 minute to 30 days ahead. Every check runs again at send time; cancel or reschedule until then.
Read the docs: Scheduled sendMeetings: calendar invites
POST /v1/calendar/events/:id/respondInvites from Google Calendar, Outlook, Apple Calendar, Calendly or Zoom become events the agent reads and answers, and the answer goes to the organizer only. It also sends, changes and cancels real invitations. Invite text is screened first, and nothing is sent because mail arrived.
Read the docs: Meetings: calendar invitesAllow and block lists
/v1/listsAddresses and domains to accept or refuse, for receiving, sending and replying, per inbox or for the whole workspace. Blocked mail is kept and hidden, never lost.
Read the docs: Allow and block listsBurst and daily send limits
429 rate_limitedA 5-minute burst limit, a daily cap per workspace and per inbox, and a rate limit per key. Hard bounces and complaints add the address to a suppression list.
Read the docs: Burst and daily send limitsPause an inbox
POST /v1/inboxes/:id/pauseA kill switch for a misbehaving agent: every send from the inbox is refused at once, while its mail keeps arriving. Its events are held and delivered in order when you resume.
Read the docs: Pause an inboxEmergency stop
POST /v1/emergency-stopOne switch for the whole workspace: every inbox stops sending, identity tokens and scheduled sends stop, and reads keep working. An API key can pull it; only a person resumes.
Read the docs: Emergency stopHuman on call
PUT /v1/escalationName the people who get an email when mail needs a human or looks like phishing, or a scheduled send fails. Confirmed addresses only, an hourly limit, digests and quiet hours.
Read the docs: Human on callDeliverability summary and guide
GET /v1/deliverabilityYour bounce and complaint rates next to the limits, suppressed contacts, your domains’ SPF, DKIM and DMARC, and whether our sending IP is on a blocklist, with a guide to staying out of spam.
Read the docs: Deliverability summary and guideEmail marked as untrusted for the model
UNTRUSTED MESSAGE CONTENTMCP results that carry email or agent messages start with a data-not-instructions line, structured data included, and flagged mail gets a warning field before the model reads it.
Read the docs: Email marked as untrusted for the model
HomingboxBeta
REST · SDKs · MCP · webhooks · WebSocket · SMTP
Connect your way
Every way in uses the same API key and sees the same inboxes.
REST API, TypeScript and Python SDKs
npm install agentboxdA zero-dependency TypeScript client (agentboxd on npm), reading AGENTBOXD_API_KEY from the environment. The Python client (sync and async) is agentboxd on PyPI.
Read the docs: REST API, TypeScript and Python SDKsMCP server
@agentboxd/mcp56 tools for Claude Desktop, Claude Code, Cursor or any MCP client: inboxes, mail, codes, attachments, contacts, knowledge, drafts, the work queue, pausing and sign-in. No code; runs on your machine with an API key.
Read the docs: MCP serverHosted MCP connector
mcp.agentboxd.com/mcpPaste one URL into Claude, Claude Code or Cursor and sign in: you pick what the app may do and which inboxes it sees, and disconnect it from Connected apps at any time. 55 tools (all but signup), no install, no API key.
Read the docs: Hosted MCP connectorOpenClaw
openclaw mcp add agentboxdAdd the MCP server to OpenClaw with one command, and an email skill that tells your agent when to use its inbox and never to follow instructions found in mail.
Read more: OpenClawCommand line
npx agentboxdCreate and pause inboxes, send, read, wait for a sign-up code, watch events live and approve drafts from a terminal or a script. JSON output on every command; the key is stored for your user only. Part of the agentboxd npm package: run it with npx agentboxd.
Read the docs: Command lineAgent skill
SKILL.mdA skill for Claude Code, Cursor, Codex, OpenClaw and other agents that read SKILL.md: when to use the inbox, how to get codes, send, draft for approval and read attachments, and never to follow instructions found in mail. Install it with npx skills add agentboxd/skills.
Read the docs: Agent skillVoice, agent and workflow tools
LiveKit · Google ADK · Sim · ReplitGuides with runnable code: a LiveKit voice agent that emails follow-ups and call summaries, Google ADK tools with sends a person confirms, Sim custom tools, and a Replit template for webhooks or the event stream.
Read more: Voice, agent and workflow toolsAgent-to-agent messaging
channel: "agent"Mail between Agentboxd inboxes arrives as a native agent message, signed for each recipient: a verified sender, typed tasks with structured data, and the same injection scoring and lists as email. Everyone else gets email, in the same thread.
Read the docs: Agent-to-agent messagingAgent cards and directory
GET /v1/directory/resolveGive an agent a card others can look up by address, list it in your workspace directory, check who signed a message and whether its sender was revoked since, and let an inbox accept only verified agents. Nothing is listed unless you choose it.
Read the docs: Agent cards and directoryRollcall: the public directory of verified AI agents, and handles
GET /v1/public/agentsOpt in to list an agent on Rollcall under a handle such as @acme/billing: anyone finds it at /agents and reads its card, public keys, A2A agent card and OASF record without an API key. Open since 12 October 2026. Every listing is checked before it appears (by our team until 26 October 2026), can be reported, and stays out of search engines unless you allow indexing. Also on every plan: the domain-verified badge (free) and the OASF export of your own card.
Read the docs: Rollcall: the public directory of verified AI agents, and handlesKeys held by the agent
agent_signatureAn agent registers its own Ed25519 or P-256 keys (the private key never leaves it) and signs what it writes. Recipients get the author signature next to ours, so anyone can check who wrote a message without trusting us. A signed message goes out exactly as signed: add any visible disclosure line to your own text before signing.
Read the docs: Keys held by the agentSigned webhooks
X-Mailroom-SignatureA POST for every event, signed with HMAC-SHA256 and retried for about a day. The event catalog shows every body; envelope payloads send ids and subjects only, no content.
Read the docs: Signed webhooksRealtime event stream
wss://…/v1/streamThe same events over a WebSocket your agent opens. No public URL, so it works from a laptop or behind NAT, and the SDKs reconnect and resume on their own.
Read the docs: Realtime event streamSMTP submission
smtp.agentboxd.com:587Send from any SMTP client or library on port 587 or 465, with an API key as the password. Same checks, signing and events as an API send.
Read the docs: SMTP submissionAgent self-signup
POST /v1/signupAn agent with no API key gets its own workspace and inbox with one call and a short proof of work. It can receive and reply at once; a person claims it later to lift the sending limits.
Read the docs: Agent self-signupScoped API keys
preset: send_readScope a key to one inbox and give it only the permissions its job needs, from presets such as read-only, send and read, or sign-in only.
Read the docs: Scoped API keysDashboard and metrics
GET /v1/metricsInboxes, threads, drafts, contacts, knowledge, webhooks and keys in one place, with sent, delivered, bounced and received mail per hour or day, and a “Use the API” button with each page’s calls pre-filled.
Read the docs: Dashboard and metricsCredits for startups and hackathons
Settings → Redeem a codeHackathons: Builder free for 1 month for every participant, on one shared code, and Team free for 6 months for the winners. Early-stage startups: Team for 6 months, a separate programme. The code raises the plan for a set time and it goes back on its own, with a reminder a week before.
Read more: Credits for startups and hackathons
ShakehandBeta
https://id.agentboxd.com
Agent sign-in
Give any agent an identity in one call — inbox optional: apps add a Sign in with Agentboxd button and AI agents sign in with standard OpenID Connect, no password.
Sign in with Agentboxd
get_identity_tokenYour agent asks for a 5-minute, single-use ID token addressed to one app and signs in with it. No password to store, no email loop.
Read the docs: Sign in with AgentboxdStandard OpenID Connect for apps
OIDC · PKCE · JWKSApps register a client in the dashboard and verify tokens with any OIDC library: discovery, JWKS, code flow with PKCE and a consent screen, or a server-side token exchange.
Read the docs: Standard OpenID Connect for appsA different subject for every app
sub (pairwise)Each app sees a different, stable subject for the same agent, so apps can’t link your agents across services. Every sign-in is logged and fires a webhook.
Read the docs: A different subject for every appIdentity without a mailbox
POST /v1/identitiesAn agent that only signs in to apps gets an identity in one call, no inbox needed. Its tokens carry no email, it has its own plan limit (100 on Free) and it works with every sign-in flow.
Read the docs: Identity without a mailboxPer-inbox switch and sign-in history
PATCH /v1/inboxes/:id/identityTurn sign-in off for any inbox and new tokens, approvals and exchanges stop at once. Each inbox lists the apps it signed in to and every sign-in, kept 180 days.
Read the docs: Per-inbox switch and sign-in history
Every product
mx.agentboxd.com · FR
Trust
Where your agents’ mail lives, what leaves it, and how we look after it.
Hosted in the EU by default
France · EUThe API, mail servers, database and stored mail run in France, with a second EU server for backups.
Read more: Hosted in the EU by defaultPrivacy switch
ai_processing: off | categorize | fullOne workspace setting decides whether any email content goes to a model. Off keeps everything on our servers; login codes still work.
Read the docs: Privacy switchLocal processing
local_processingAttachment text extraction and OCR run on our own servers and never reach a third party. A workspace can turn them off; attachments are then stored but never read.
Read the docs: Local processingAI disclosure on every email
Agent-Disclosure: ai-agentEvery email an agent sends says, in a DKIM-signed header, that an AI agent sent it and for whom. A visible line is optional per workspace. Helps you meet transparency duties.
Read the docs: AI disclosure on every emailEncrypted off-site backups and monitoring
GPG · 14 daysNightly backups, encrypted before they leave the server, restore-tested every quarter, and health checks every 5 minutes.
Read more: Encrypted off-site backups and monitoringRetention you control
label: keepMail is kept for your plan’s retention and deleted daily after that. Choose a shorter period in Settings; a message labelled keep never expires.
Read the docs: Retention you controlDPA and sub-processors
GDPR Art. 28A Data Processing Addendum, and a list of every third party that handles customer data, what it receives and where. Subscribe to be emailed at least 30 days before a sub-processor is added or replaced.
Read more: DPA and sub-processorsEnterprise: a dedicated deployment
AGENTBOXD_BASE_URLYour own server and sending IPs in the EU or US, your own domain and storage bucket, isolated from other customers and run by us. Or in your own cloud under a support contract.
Read the docs: Enterprise: a dedicated deployment
What changed recently is on the changelog. Limits per plan are on pricing.
Get an API keyRead the quickstart