Skip to main content
Agent Mailbox speaks the Model Context Protocol at:
Point an MCP client at it with your key and the agent gets twelve tools: read inboxes, threads and messages, send, reply, search, and write drafts.
Skill or MCP? A skill is markdown that teaches an agent to use tools it already has — it needs a shell and gives you full control of the API. MCP delivers the tools themselves, which is the only option for a client that cannot run curl. For Claude Code either works; for Cursor and Grok, MCP is the way in.

Connect

Your existing Waterr wai_ developer key works, as does a native aik_ mailbox key — see Authentication. The server is scoped exactly as the key is: a workspace key reaches that workspace’s inboxes and nothing else.

The tools

Every tool carries annotations, so a client that asks before acting can tell a search from something that mails a real person. The three marked openWorldHint are the ones that put a message in front of someone; a draft stays local until send_draft.

You can usually omit inbox_id

Every tool takes an inbox_id — the inbox’s address, which is also its id. Leave it out and the server uses the only inbox your key can see. With more than one it refuses to guess and tells the agent to call list_inboxes, rather than picking one and silently mailing from the wrong address.

Errors reach the model, not the transport

A rejected call comes back as a tool result with isError: true and the API’s own message, not a JSON-RPC error:
The call itself was well-formed; it is the model that needs to read what went wrong and change course. Reserved JSON-RPC errors are only for genuine protocol faults — malformed JSON, an unknown method, an unknown tool.

Instructions worth adding

The server sends its own guidance on initialize, but clients differ in how much of it they surface. If yours ignores it, put this in your system prompt:

Limits

Stateless: there are no sessions and no server-initiated messages, so GET /mcp returns 405 rather than opening an SSE stream that would carry nothing. Notifications are accepted and acknowledged with 202. There is no tool for inbound events. MCP is request/response, so an agent sees mail when it looks. For one that reacts on its own, use webhooks or the WebSocket from your own backend. The general limits apply here too — cold outbound is unreliable, and attachment bodies are not stored.
Once an MCP client can both read your mail and send it, message bodies become untrusted input that reaches a model with tools. Instructions hidden in an email can be followed. Set a send allow-list on the inbox so the API refuses anything outside it regardless of what the model was persuaded to do — that control holds where prompting does not.