Agent Onboarding
Nitrosend is built MCP-first, so an AI agent can run the whole email stack — campaigns, flows, contacts, transactional sends, deliverability — as native tools. This page is the human-readable overview. The full, machine-readable onboarding skill lives in a single file your agent can fetch and follow:
The canonical agent onboarding skill: vocabulary, every public `nitro_*` tool, send modes, the response envelope, the delivery lifecycle, and the headless signup-to-send path. Point your agent here.Two ways in
MCP (recommended)
Connect the MCP server and the agent gets the full public tool set. Best for Claude, ChatGPT, Cursor, Codex, Gemini, and any MCP client.
Headless REST
For builder stacks with no MCP client (Replit, Lovable, v0, Bolt) or CI runners: sign up, mint a key, and send over plain HTTP.
MCP path
One command (or a custom connector) plus OAuth sign-in:
claude mcp add --transport http nitrosend https://api.nitrosend.com/mcpCall nitro_get_status first for account context, then read the nitro://guide resource. Full per-client setup is in the Quickstart and MCP integrations.
Headless path (no dashboard, no MCP client)
Create an account
POST /v1/signup with { "user": { "email", "password" } }. Returns a 15-day JWT in the Authorization response header.
Mint an API key
POST /v1/my/api_keys with that JWT returns nskey_live_.... Store it as a secret.
Activate the reserved sender
Complete the Brand Kit company identity, then get the brand SID from GET /v1/my/brands. The response shows the protected hello@<brand-slug>.nitrosend.net address derived from that company name. Call POST /v1/my/brands/{sid}/prepare_sending to materialize its local Domain and sending-identity rows synchronously under Nitrosend's verified shared root. It creates no per-brand DNS, DKIM, provider identity, tenant resource, or background job. When no sender is selected, the same transaction selects this sender; otherwise it preserves the existing selection.
Send once ready
POST /v1/my/messages with { "channel": "email", "to", "subject", "html" } and an Idempotency-Key header. An eligible first request can perform the same local materialization before admission. If the shared root is unavailable, the API returns retryable hosted_sender_root_unavailable, stores no message, reservation, charge, or provider capability, and the same request is safe to retry.
Choose optional production upgrades
A customer-owned sending subdomain builds portable reputation and never consumes the reserved Nitrosend brand-subdomain sender. Paid plans and checkout remain optional; $0 plans need no card.
Node and Python fetch / requests calls work as-is. Only the bare Python-urllib user agent is blocked by the WAF.
For the complete reference, always defer to nitrosend.com/skill.md and the REST API docs.
