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 login

login 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-code

Commands

CommandWhat it does
login, logout, whoamiSave a key after checking it, forget it, show the key and API in use
connections list, getSES: 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, verifycreate 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, getsend 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, replyRead threads and reply
contacts list, get, add, import, importsadd 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, removeLists and membership; add --pending sends the double opt-in confirmation
segments list, templates listFind segment and template ids
campaigns list, create, status, test, send, pause, resume, cancelcreate 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, statsstats 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 urlConfigure 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.

On this page