Home
Getting Started

Agent Onboarding

How an AI agent connects to Nitrosend and sends its first email — the MCP path, the headless REST path, and the machine-readable skill file

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/mcp

Call 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)

1

Create an account

POST /v1/signup with { "user": { "email", "password" } }. Returns a 15-day JWT in the Authorization response header.

2

Mint an API key

POST /v1/my/api_keys with that JWT returns nskey_live_.... Store it as a secret.

3

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.

4

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.

5

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.

Info

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.