Documentation
Libraries & CLI
Official Node and Python SDKs, a CLI, and an MCP server — all published and ready to install.
Node SDK
Install
npm install mailsteinConstruct a client with your key (or set MAILSTEIN_API_KEY) and use resource methods: emails, domains, contacts, contactBooks, campaigns, analytics, webhooks.
Node.js
import { Mailstein } from "mailstein"; const mailstein = new Mailstein("ms_your_api_key"); const { data, error } = await mailstein.emails.send({ from: "[email protected]", to: "[email protected]", subject: "Hi", html: "<p>Hello</p>", });
Python SDK
Install
pip install mailsteinMethods return a (result, error) tuple.
Python
from mailstein import Mailstein client = Mailstein("ms_your_api_key") email, err = client.emails.send({ "from": "[email protected]", "to": "[email protected]", "subject": "Hi", "html": "<p>Hello</p>", }) if err: raise RuntimeError(err)
CLI
Install
npm install -g mailstein-cliThe mailstein CLI reads MAILSTEIN_API_KEY from the environment.
Shell
export MAILSTEIN_API_KEY=ms_your_api_key mailstein whoami # show the authenticated account mailstein domains # list sending domains mailstein emails # list recent emails mailstein emails send \ --from [email protected] \ --to [email protected] \ --subject "Hi" --html "<p>Hello</p>"
MCP server
The MCP server lets an AI assistant (e.g. Claude) send and inspect mail through mailstein. It exposes three tools: send_email, list_domains, and get_email.
claude mcp add
claude mcp add mailstein \ -e MAILSTEIN_API_KEY=ms_your_api_key \ -- npx mailstein-mcp
All of the above authenticate with the same
ms_ API key and hit the same live API, so quotas, suppression and analytics stay consistent no matter how you send.