API v1Private beta. The API is stable; send limits are low while the shared domain warms up.

Reference

MCP tools

@send0/mcp: the tools, their arguments, and configuration.

Two ways to run it, with the same tools. See the MCP quickstart for client setup. The same tools are also available for the Vercel AI SDK and LangChain.

Remote

https://api.send0.dev/mcp, Streamable HTTP, stateless.

Authorization: Bearer s0_…Required. The tools act as this key, with its scopes and inbox limits.
?inbox_id=ibx_… or x-send0-inbox headerDefault inbox, so tools don't need inbox_id

A self-hosted send0 serves the same endpoint at https://<your domain>/mcp.

Requests without a valid key get 401 with a WWW-Authenticate: Bearer header. Browser-based clients are allowed (CORS).

Local

Run with npx -y @send0/mcp over stdio.

Variable
SEND0_API_KEYRequired. Prefer a read+send key limited to the agent's inbox.
SEND0_INBOX_IDDefault inbox, so tools don't need inbox_id
SEND0_BASE_URLYour self-hosted send0, like https://mail.example.com

Tools

ToolArgumentsNotes
create_inboxname?, display_name?Returns the address and id
list_inboxesnoneInboxes this key can use
wait_for_emailinbox_id?, from?, subject?, timeout? (s, default 60, max 600)Returns the code and action link first. Read-only.
search_messagesinbox_id?, query?, from?, direction?, limit?One line per message. Read-only.
get_messagemessage_id, full_text?New text only unless full_text. Read-only.
list_threadsinbox_id?, limit?Read-only
get_threadinbox_id?, thread_id, full_text?Oldest first. Read-only.
send_emailinbox_id?, to, subject, text, cc?New thread. Marked as acting on the outside world.
replymessage_id, text, reply_all?Same thread. Marked as acting on the outside world.

Read-only tools carry readOnlyHint. send_email and reply carry openWorldHint, so clients can ask before sending. API errors come back as tool errors the model can act on, for example send0 error recipient_not_allowed: ….

In your own server

import { createSend0Server } from "@send0/mcp";
import { Send0 } from "@send0/sdk";

const server = createSend0Server({ client: new Send0(apiKey), defaultInboxId: "ibx_…" });
await server.connect(transport); // any MCP transport

On this page