Nitrosend MCP Server

Widget generated by MCP Showcase

Introduction

Nitrosend is an AI-native email platform that brings full-stack email automation directly into your AI agent of choice—Claude, ChatGPT, Codex, Cursor, or any MCP-compatible tool. Rather than an email tool with AI bolted on, Nitrosend is built AI-first, letting you compose, manage, and send transactional emails, marketing campaigns, and automation flows entirely through natural-language prompts with human approval gates.

The MCP server exposes a comprehensive set of tools spanning the entire email lifecycle. These include account and brand management, audience and contact operations, segment definition, campaign and flow composition, reusable template management, and one-off transactional message sending. Emails are designed to be pixel-perfect and on-brand automatically, using each brand's own Brand Kit (colors, fonts, logo), domains, and audience context.

Beyond content creation, the tools cover the operational backbone of email: sending domain setup and DNS verification, sender-default configuration, deliverability review and spam scoring, test sends, and full delivery lifecycle control (draft → approve → schedule/send → pause/archive). Additional tooling handles analytics and insights (via NitroWheel LLM), BYO email provider credentials (Mailgun, SES, Postmark, Resend, SendGrid), billing, AI memory management, and documentation search. Built by a team behind two prior email platforms that have sent over 6 billion emails, Nitrosend emphasizes enterprise-grade deliverability with separated transactional and marketing streams.

Use Cases

1. Composing and sending on-brand marketing campaigns Draft a full newsletter or promotional email from a single prompt, with the AI writing copy and generating a brand-matched design before you approve and send.

  • Sample prompt: Draft a February newsletter campaign for our subscribed audience announcing our new AI segments feature, then show me a preview before sending.

2. Building multi-step automation flows Create event-triggered sequences like welcome series, cart abandonment, or password reset flows with waits, splits, and conditional branches.

  • Sample prompt: Create a 3-email welcome flow triggered when a contact is added to the "New Signups" list, with a 1-day wait between each email.

3. Sending transactional messages instantly Fire off receipts, OTPs, order confirmations, or password resets to a single recipient using merge variables—no campaign or approval needed.

  • Sample prompt: Send a transactional order confirmation email to jane@example.com using the order_confirmation template with order ID #10482 and total $89.00.

4. Setting up and verifying sending domains Add a sending domain, retrieve the required DNS records, and verify propagation to unlock sending.

  • Sample prompt: Add send.acme.com as a sending domain and show me all the DNS records I need to configure, then check whether they've propagated.

5. Managing audiences, lists, and subscriptions Create or update contacts, manage list membership, record events, and handle opt-in/opt-out states.

  • Sample prompt: Add contacts john@acme.com and sara@acme.com to the "VIP Customers" list and tag them both as "high-value".

6. Defining targeted contact segments Build dynamic segments with attribute and event-based filters, preview matching contacts, then persist them for campaign targeting.

  • Sample prompt: Create a segment of email-subscribed contacts who performed "checkout" at least twice in the last 30 days and preview how many match.

7. Importing contacts in bulk Import contacts from inline records or a CSV upload, mapping custom fields and adding them to lists.

  • Sample prompt: Import this CSV of 5,000 contacts and add them all to the "Q1 Prospects" list, mapping the "company" column to a custom field.

8. Setting up a Brand Kit from a website Auto-scrape brand colors, fonts, and logo from a URL so all generated emails match your brand automatically.

  • Sample prompt: Set up our Brand Kit by scraping https://acme.com and set our corner radius to 4px with spacious section spacing.

9. Reviewing deliverability and sending test messages Check spam scores, validation, and preflight readiness, then send a real test to yourself before launching.

  • Sample prompt: Review the deliverability of my latest campaign, check its spam score, then send a test to me@acme.com.

10. Analyzing email performance Pull analytics with trends, benchmarks, and recommendations at the account, campaign, or flow level.

  • Sample prompt: Show me the open and click rates for all my campaigns over the last 90 days with recommendations to improve.

11. Managing the delivery lifecycle Approve, schedule, pause, or cancel campaigns and flows with explicit control over when messages go out.

  • Sample prompt: Schedule my "Spring Sale" campaign to send on March 1st at 10am UTC.

12. Bringing your own email provider Connect your existing SendGrid, Postmark, Resend, Mailgun, or SES credentials for sending.

  • Sample prompt: Configure my Postmark account as the sending provider using my API key and check that it's healthy.

13. Managing multi-brand operations Switch between brands and accounts to run email for multiple clients or products from one connection.

  • Sample prompt: Switch to the "Obooko" brand and show me its current campaigns and readiness status.

14. Searching product documentation Look up authoritative setup, API, CLI, or integration instructions instead of guessing.

  • Sample prompt: Search the Nitrosend docs for how to connect Cursor via MCP and walk me through the setup.

15. Managing reusable email templates Create, clone, or make targeted edits to reusable templates that apply your brand theme automatically.

  • Sample prompt: Clone our "Product Update" template and change the header CTA button text from "Learn more" to "Get started".

Details

MCP Server URL:
https://api.nitrosend.com/mcp
Type:
HTTP Stream
Authentication:
API Key (Bearer Token)

Tools

nitro_get_status
Get current account context, sender identity, dashboard links, readiness, onboarding status, and recommendations.
nitro_select_account
Switch the current Nitrosend account for this OAuth MCP connection. Use when the task is for a different account than the one shown in nitro_get_status. The switch takes effect on the next tool call. Credential-authenticated connections are pinned to one account and cannot switch.
nitro_select_brand
Select the current brand for this OAuth MCP connection. Use this instead of passing brand_sid to other tools. Credential-authenticated connections are pinned to one brand and cannot switch.
nitro_query
Query any Nitrosend entity. Returns paginated results.
nitro_search_contacts
Search contacts by email, name, or phone. Returns summary list or full profile.
nitro_set_brand_kit
Set up Brand Kit identity from website URL or direct fields. Provide url to auto-scrape brand colors/fonts, or fields to set values directly, or both (fields override scraped values). For local logo files, upload via nitro_ingest first and pass the returned media_url/image_url as logo_url. Sync mode (default) returns results immediately — best when you need Brand Kit data now for composing. Async mode (mode: 'async') accepts url only and runs scraping in the background — use when deferred completion is acceptable.
nitro_ingest
Ingest a local or remote asset into Nitrosend-hosted storage and return URLs you can place directly into email design fields. V1 supports kind=image only. Use image_data only for small local/chat-attached images. For larger local image files, call this tool with upload={kind: 'image', filename, content_type, byte_size, checksum} to create a direct upload reservation, PUT bytes to the returned direct_upload.url, then call this tool again with signed_id. Email drafts need durable images: pass newly found vendor-site or free-stock URLs as image_url here so Nitrosend validates the bytes and stores a Nitro-hosted brand-library copy before composition.
nitro_manage_audience
Create or update contacts, manage subscriptions, lists, events, segments, and tags. Custom contact fields belong in attributes.data. For more than 100 contact writes, use nitro_import_contacts with CSV.
nitro_define_segment
Define a contact segment with explicit filters and preview. Defaults to preview_only: true (dry preview without saving). Set preview_only: false and provide a name to persist.
nitro_import_contacts
Import contacts and custom fields from inline records (< 100), reserve an authorized CSV upload link, finalize an uploaded signed_id, or process an existing import_id. New email contacts are auto-subscribed by default; existing subscription state is preserved unless opt_in is explicit. For SMS-only contacts, set opt_in: true explicitly (TCPA compliance). For large local CSVs, call this tool with upload={filename, content_type, byte_size, checksum}, PUT bytes to the returned direct_upload.url, then call this tool again with signed_id. Large CSV imports use the same async pipeline as app/API/CLI: up to 250k rows self-serve, with sends held for review above 20k; larger files return contact_sales.
nitro_manage_template
Create, update, or clone a reusable email template. Brand theme applied automatically. For composing new emails to send, use nitro_compose_campaign instead. For edits to existing sections, prefer section_updates: target by section id, use text_patch for exact literal copy changes, and shallow-merge props/styles for visual or non-copy attribute changes. Copy changes and full sections enter the composition contract before persistence. New copy and full redesigns always enter the composition contract before persistence. composition_mode="intent" returns the current intent-scoped brand, memory, source, binding, and design context; the calling agent writes the sections, can validate without persistence, then calls this same tool with composition_mode="draft". The returned optional_server_authoring_call explicitly requests metered composition_mode="generate", which composes, validates, and persists one draft only. Contract-loop states return as normal tool results with composition_status and isError=false. For a fresh reusable design, next_call.input is the selected complete baseline and composition_contract.creative_routes is the one compact route menu. Preserve and fill that baseline by default. To select another ready route, start a fresh intent with its creative_route_id; a route missing frozen evidence returns the exact facts it needs instead of substituting another layout. Full section authoring remains an intentional escape hatch under the same bindings and validator. For image-led routes, follow next_call.image_choice exactly. Prefer a described brand-library asset, then an exact operator asset or verified vendor-site asset. If no suitable first-party image exists, retrieve an exact public free-stock image such as Unsplash. Pass every newly found external or host-generated asset through nitro_ingest with an honest description before composing; Nitrosend validates the image bytes, stores a durable Nitro-hosted copy in the brand library, and returns the URL to bind. Reissue intent after ingest. Brand memory may guide tone and search terms but never proves an image URL or its contents; Nitrosend never browses or invents one during composition. Modes (auto-detected): - **Create/redesign** — complete the returned authoring contract with subject and sections. - **Targeted update** — provide template_id + section_updates for an exact mechanical edit. Use if_version for optimistic concurrency. - **Clone unchanged** — provide based_on to copy an existing template. Creative overrides enter the authoring contract. Mutation safety: every create, clone, targeted update, and full update persistence call requires idempotency_key. Every contract draft next_call carries one stable persistence key; use it unchanged through draft repairs and exact persistence retries. Validate next_calls may carry rotating validation-round keys. Reuse a contract-free caller key only for an exact retry.
nitro_compose_flow
Create or replace an automation flow from trigger + steps array. Creates a draft — use nitro_control_delivery to approve and activate. Any newly authored email step always enters the composition contract before persistence. composition_mode="intent" returns the current intent-scoped brand, memory, lifecycle, source, binding, and design context; the calling agent writes the steps, can validate without persistence, then calls this same tool with composition_mode="draft". The returned optional_server_authoring_call explicitly requests metered composition_mode="generate", which composes, validates, and persists one draft only. Contract-loop states return as normal tool results with composition_status and isError=false. For fresh flow emails, each next_call.input email design uses a selected complete baseline and composition_contract.creative_routes is the one compact route menu. Preserve and fill those email baselines by default while authoring the required flow graph. For a multi-email flow, use email_baseline_selections to assign a suitable listed route and its frozen image binding ids to each email action_name; use top-level creative_route_id only when one route is deliberately right for the whole sequence. A route missing frozen evidence returns the exact facts it needs instead of substituting another layout. Full section authoring remains an intentional escape hatch under the same bindings and validator. For image-led routes, follow next_call.image_choice exactly. Prefer a described brand-library asset, then an exact operator asset or verified vendor-site asset. If no suitable first-party image exists, retrieve an exact public free-stock image such as Unsplash. Pass every newly found external or host-generated asset through nitro_ingest with an honest description before composing; Nitrosend validates the image bytes, stores a durable Nitro-hosted copy in the brand library, and returns the URL to bind. Reissue intent after ingest. Brand memory may guide tone and search terms but never proves an image URL or its contents; Nitrosend never browses or invents one during composition. SMS-only flows and rename-only patches do not need email authoring context. Modes: create (author a complete new graph), replace (author the complete graph of an existing draft; requires confirm, flow_id, and expected_draft_revision_id), patch (rename and/or update selected email actions by action_name + if_version). A patch preserves every unmentioned node and operational field. Create and replace contracts expose a complete authorable graph: their lifecycle scaffold is guidance, not a frozen section count, cadence, or topology. Step types: email (subject + design or body), sms (body), wait (duration in seconds), split (filters + yes/no branches, nested splits allowed), emit_event (fire event for contact to trigger other flows), webhook (url + optional method/headers/body), subscribe (opt-in contact to channel), unsubscribe (opt-out contact from channel). Mutation safety: create, rename patch, and replace persistence all require idempotency_key. Use the exact stable key supplied by every draft next_call through repairs and exact persistence retries. Validate next_calls may carry rotating validation-round keys. Reuse a contract-free caller key only for an exact retry.
nitro_compose_campaign
Compose an email or SMS campaign draft. This is the default tool when users want to draft or write a campaign; delivery is a separate explicit action. Creates a draft — use nitro_control_delivery to approve and send. Modes: create (new campaign), patch (update provided fields on an existing draft campaign), replace (replace draft campaign content/audience/schedule — requires confirm: true + campaign_id). Replace clears omitted audience and schedule instead of preserving stale targeting. Patch/replace cannot change the campaign channel; create a new campaign to switch between email and SMS. Campaigns are broadcasts to subscribed audiences. For receipts, confirmations, password resets, OTPs, or one-off lifecycle notifications, use nitro_send_message with data.* merge tags. For repeatable lifecycle automation, use nitro_compose_flow with a real event trigger. Newly authored email copy or design always enters the composition contract before persistence. composition_mode: "intent" returns the current intent-scoped brand, memory, source, binding, and design context. Fill next_call, optionally check it with composition_mode: "validate", then persist with composition_mode: "draft". Or explicitly use the returned optional_server_authoring_call for metered composition_mode: "generate"; Nitrosend then composes, validates, and persists one draft without sending or scheduling. Supplying creative fields without a contract returns that intent contract instead of silently bypassing it. For fresh marketing email, next_call.input is the selected complete baseline and composition_contract.creative_routes is the one compact route menu. Preserve and fill that baseline by default. To select another ready route, start a fresh intent with its creative_route_id; a route missing frozen evidence returns the exact facts it needs instead of substituting another layout. Full section authoring remains an intentional escape hatch under the same bindings and validator. For image-led routes, follow next_call.image_choice exactly. Prefer a described brand-library asset, then an exact operator asset or verified vendor-site asset. If no suitable first-party image exists, retrieve an exact public free-stock image such as Unsplash. Pass every newly found external or host-generated asset through nitro_ingest with an honest description before composing; Nitrosend validates the image bytes, stores a durable Nitro-hosted copy in the brand library, and returns the URL to bind. Reissue intent after ingest. Brand memory may guide tone and search terms but never proves an image URL or its contents; Nitrosend never browses or invents one during composition. Cloning an existing template without creative overrides preserves its already-authored content and does not require recomposition. State-free dry_run previews and non-creative operational edits do not create a contract. SMS mode: channel: "sms" + body (required) Nitrosend compiles the brief and validates/persists, while the calling agent writes the draft. Contract-loop states return as normal tool results with composition_status and isError=false. Preserve explicit user constraints: exact copy requests, URLs, offers, product details, sender fields, audience, schedule, tone, and legal copy. Each composition_contract.bindings entry teaches whether a typed value is required or available, its allowed semantic paths, and its exact preferred_reference. Copy that preferred_reference object unchanged when using the binding; only required bindings must appear. SMS campaigns are exempt from email composition contracts. Mutation safety: every non-dry-run persistence call requires an idempotency_key. Reuse the same key only for an exact retry; changed input with the same key is rejected.
nitro_manage_domains
Manage sending domains — add, verify, check DNS, list, and remove. Add returns every required customer-facing sending record. Apex receiving MX is exposed only after a forward-all route exists, so one-click setup cannot replace an existing mailbox provider without downstream delivery. check_dns validates customer-facing sending records, Nitro-owned delegate targets, and tracking HTTPS readiness.
nitro_configure_account
Read or configure sender defaults (from_name, from_email, reply_to) and test email recipients. Use nitro_get_status for account identity, dashboard links, readiness, and blockers. from_email must be authorized by a verified sending domain.
nitro_review_delivery
Read-only review of email/SMS content and delivery readiness for templates, flows, and campaigns. Returns validation, spam score for email, SMS segment info, preflight checks, and editor/preview URLs. Flow review requires an exact revision_id. This never approves delivery and never sends test messages.
nitro_send_test_message
Send a real test message for an existing template, campaign, or flow step. Supports email and SMS targets. This never sends to a campaign audience, never approves delivery, and never schedules or launches a campaign. For the common "send a test of the last campaign" workflow, pass latest_campaign: true. If a flow has multiple message steps, pass action_id or template_id from nitro_review_delivery review_steps. Retry safety: pass the same idempotency_key on retry to avoid duplicate test messages.
nitro_control_delivery
Manage delivery lifecycle for flows and campaigns. State: draft -> approve -> live/schedule <> pause, cancel -> archive. Flow approve/reject/live require exact revision_id; resume never publishes a draft. Use archive for cleanup history, or delete confirmed never-sent drafts.
nitro_get_insights
Get email analytics with trends, benchmarks, and recommendations.
nitro_configure_providers
Configure BYO email provider credentials or check provider status.
nitro_set_memory
Read or update the AI memory document. Operations: read (get current), update (replace entirely), patch (replace a ## section by heading), append (add text to end).
nitro_manage_billing
Manage subscription billing and Nitrosend balance — check status, start a human checkout, poll payment, and list plans. - **status** — no params. Returns current subscription, plan, and account tier. - **checkout** — params: {plan_id (required)}. Creates the account provider's human approval URL. The agent CANNOT pay or approve directly — tell the operator to open the URL. - **checkout_status** — no params. Poll whether subscription is active after checkout. - **plans** — no params. Lists available paid plans with pricing. - **add_funds** — params: {amount_cents, currency, idempotency_key}. Creates a one-time checkout URL for the operator. It does not charge. - **funding_purchase_status** — params: {purchase_id}. Reads one local Add funds purchase.
nitro_send_message
Send a transactional email or SMS to a single recipient immediately. No campaign, no audience, no approval required. Use for: receipts, password resets, OTPs, order confirmations, system notifications. NOT for marketing broadcasts to lists/segments — use nitro_compose_campaign. NOT for automated sequences triggered by events — use nitro_compose_flow. Retry safety: pass the same idempotency_key on retry to avoid duplicate sends.
nitro_request_support
Submit a support request to the Nitrosend team. Only call when the user explicitly asks to contact support or when you have exhausted other options and cannot resolve their issue. Never suggest or mention this tool proactively. Before calling, summarize the issue and attempt to resolve it with available tools first. Write `message` as a COMPLETE, self-contained summary of the issue that fits within 1500 characters — do not rely on truncation.
nitro_search_docs
Search the Nitrosend product documentation: guides, integrations, CLI, concepts, authentication, and the REST API and MCP reference. Use this whenever you need authoritative product information you do not already have — how a feature works, setup or verification steps, API/SDK usage, CLI commands, integration instructions — instead of guessing or saying you don't know. Returns the most relevant documentation sections with titles, links, and excerpts. Treat those excerpts as the source for Nitrosend product claims; if they do not establish an answer, search again or say what is not verified rather than adding inferred product details.

Want to create a similar playground for your MCP?