CLI
The stamp0 CLI sets up SES domains, sends test emails, reads inboxes, manages contacts, lists, campaigns and sequences, and installs the Stamp0 MCP server and Agent Skill, from your terminal or CI.
Not on npm yet
The stamp0 package is published to npm with the public launch, so npx stamp0 does not resolve yet. Everything below works the same through the API and the dashboard in the meantime.
Install and sign in
npx stamp0 loginlogin asks for a project API key (s0_…), checks it against the API, and saves it in ~/.config/stamp0/config.json, readable by you only. You can also pipe it (echo "$KEY" | npx stamp0 login). In CI, set STAMP0_API_KEY instead. stamp0 whoami shows which key (masked) and API the CLI uses; stamp0 logout forgets the key.
Common commands
# Status of your connections, Amazon SES and Cloudflare (connect them in the dashboard)
stamp0 connections list
# Add a domain and see the DNS records to publish
stamp0 domains create acme.co --receiving
stamp0 domains get dom_…
stamp0 domains verify dom_…
# A domain on a Cloudflare connection, receiving on it too
stamp0 domains create mail.acme.co --connection con_… --receiving --confirm-dmarc-create
# Send a test email
stamp0 emails send --from "Acme <hello@acme.co>" --to you@example.com \
--subject "Test" --text "Hello from the CLI"
stamp0 emails list
# Read and answer inbound mail
stamp0 inboxes threads ibx_…
stamp0 inboxes reply ibx_… thr_… --text "Thanks, on it."
# Marketing: contacts, a list and a campaign
stamp0 contacts import users.csv --consent "Signed up at acme.co" --list lst_…
stamp0 contacts add bea@example.com --first-name Bea --list lst_… --property plan=pro
stamp0 campaigns create --name October --from "Acme <news@acme.co>" --subject "October news" \
--template tpl_… --list lst_…
stamp0 campaigns test cmp_… --to you@example.com
stamp0 campaigns send cmp_…
stamp0 campaigns status cmp_…
# Add the MCP server to an agent
stamp0 mcp install claude-codeCommands
| Command | What it does |
|---|---|
login, logout, whoami | Save a key after checking it, forget it, show the key and API in use |
connections list, get | SES: region, sandbox and quota. Cloudflare: account, data-plane version and status, token hint and sending limits. Connections are created and verified in the dashboard only |
domains list, get, create, update, verify | create prints the DNS records (to publish on SES; Cloudflare creates its own); --receiving also receives mail, --return-path sets the MAIL FROM label, --connection picks the sending connection and --receiving-connection the receiving one. update turns receiving --receiving on|off or moves it (--receiving-connection). For Cloudflare: --receiving-mode subdomain_rules|apex_catch_all, --confirm-dmarc-create, --confirm-mx-takeover, --keep-email-preview, and --setup-token-stdin to read the setup token from stdin (never an argument; used for that request only) |
emails send, list, get | send repeats --to, --cc, --bcc, --reply-to and --tag name=value; bodies from --text/--html or --text-file/--html-file (- reads stdin); --scheduled-at, --idempotency-key |
inboxes list, threads, messages, reply | Read threads and reply |
contacts list, get, add, import, imports | add creates a contact or updates it by email (--list, --property key=value, --properties '<json>' for numbers and booleans); import <file> uploads a CSV with a required --consent statement and imports [id] follows it |
lists list, create, members, add, remove | Lists and membership; add --pending sends the double opt-in confirmation |
segments list, templates list | Find segment and template ids |
campaigns list, create, status, test, send, pause, resume, cancel | create takes --template or inline --html/--text (or their -file forms) and --list/--segment; status shows progress, stats and why a campaign paused; send --scheduled-at schedules |
sequences list, activate, pause, stats | stats shows per-step counts |
events track <name> | Record a custom event for --email or --contact, with --property/--properties and --idempotency-key |
mcp install <client>, mcp url | Configure claude-code, claude-desktop, cursor, vscode, windsurf or codex. OAuth sign-in by default; --use-api-key uses your key, --write merges into the client's config file, --project prj_… pins a project |
skills install [claude-code|codex] | Install the Stamp0 Agent Skill |
Every command takes --json for scripting, --api-key and --base-url, and --help. Exit codes: 0 success, 1 API or network error, 2 usage error.
campaigns send, campaigns resume, campaigns cancel and sequences activate email an audience or cannot be undone, so they ask you to type yes first. In scripts and CI, where there is no terminal to ask, they are refused unless you pass --yes.
Agent Skill
stamp0 skills install adds the Stamp0 skill to Claude Code (stamp0 skills install codex for Codex, --dir for another location): connecting AWS, setting up a domain, leaving the SES sandbox, debugging deliverability and migrating from Resend, and running marketing (contacts, campaigns, sequences) safely, with the steps and checks our team uses.
MCP server
Connect Claude, ChatGPT, Cursor or your own agent to the remote Stamp0 MCP server at mcp.stamp0.com to send email, set up domains, read inboxes, diagnose SES deliverability and run marketing (contacts, lists, campaigns, sequences).
Security
How Stamp0 holds provider credentials, what it can and cannot do in your AWS or Cloudflare account, and how it decides which inbound mail to trust.