Head to head · Marketing audiences · October 2026 research run

Customer.io vs Nitrosend

Customer.io scores 75.6 (BB) on agent readiness against Nitrosend's 69.4 (B), and leads in 3 of 7 scored categories. Nitrosend leads on schema & documentation and payments & pricing. Both do marketing audiences.

Best lifecycle marketing and customer engagement platforms for AI agents · All 66 lifecycle marketing comparisons

Best email delivery APIs for AI agents · All 174 email comparisons

Which one, for what

Customer.io BB

Best for Product and lifecycle teams already on Customer.io who want an agent to build segments, draft automations and report on campaigns with sends held behind a separate scope.

Ahead on

  • Reliability, 75 against 48
  • Security & auth, 79 against 62

Also in its favour

  • Agent-ready, a grade of BB or better

Watch for

No idempotency key found on App API writes, transactional sends included

Nitrosend B

Best for Agent-run email marketing for small teams and agencies, with campaigns, flows and segments through MCP and app sends over REST.

Ahead on

  • Schema & documentation, 93 against 86
  • Payments & pricing, 55 against 45

Also in its favour

  • Runs on your own machine

Watch for

status.nitrosend.com answered 526 on 6 November 2026, so no incident history could be read

Why the edge

Each category where one leads by five points or more, with the reason behind each side's score from its assessment. The numbers are in the table below; this is what they stand for.

Reliability Customer.io +27

Customer.io 75

Graded as a hosted service. Statuspage at status.customerio.com with nine components, re-read on 1 November, and incident history (20). The history page lists six incidents in the 90 days to 1 November 2026, all marked minor or none. Data processing delays for a small subset of US customers on 3 August (07:08 to 07:42 UTC), the interface on 5 August (26 minutes, none), the in-app Agent on 3 September (5 minutes), reduced delivery to Microsoft-hosted addresses on 4 September (Microsoft's incident, none), US sending delays on 19 September (27 minutes) and the workspace interface on 27 October (19:11 to 19:36 UTC, with processing and sending unaffected). The two July incidents marked major (20 and 31 July) left the window on 18 and 29 October, and with them the 5 points taken off for frequency, so minor only (20). Limits published with numbers, 10 requests a second on the App API, one every 10 seconds for API-triggered broadcasts, and a guideline of 3,000 requests per 3 seconds on Track and Pipelines that returns no 429 (15). 429 with Retry-After on the App API and automatic backoff in the CLI, but no idempotency key found for sends or other writes (10). No SLA found, and the terms promise commercially reasonable efforts (0). The APIs are generally available and the MCP docs carry no beta label. The CLI is at v0.0.36 (10). 20+20+15+10+0+10 = 75.

Nitrosend 48

Graded with the hosted lines. llms.txt links a status page at status.nitrosend.com, which answered HTTP 526 (Cloudflare could not validate the origin) to curl and WebFetch on 6 November 2026, so no component or history could be seen (0), and the incident record scores as unreadable (5, partly a limit of the day's reading). No API request rate limits are published; PRICING.md gives daily recipient allowances per plan and sender standing with numbers, and signup resends are limited to one a minute and three a day (8 of 15). 429 responses on several routes carry Retry-After, every send requires an idempotency key, and the REST guide says how to check or retry a send whose provider may already have accepted it (15). llms.txt says Enterprise includes a 99.9% SLA (10). In production since 28 May 2026 with no beta label (10). Total 48.

Security & auth Customer.io +17

Customer.io 79

OAuth with dynamic client registration, PKCE, five scopes and a revocation endpoint, per-user sessions that can't exceed the user's role, and service account tokens with expiry, a permanent read-only option and exchange for one-hour JWTs. On 1 November the authorisation server metadata lists only the S256 PKCE method, where on 17 October it also listed plain, so the 2 points taken off for it come back. The public and private keys introduced on 30 October split browser keys (pk_, no sends or reads) from server keys (sk_), and keys are rotated by adding a new one and revoking the old. A private key has no per-key scopes and works with every API, sends and deletes included, so as with grist, cal-com and calendly (scoped OAuth beside a full-access key) we take 2 off. Service account tokens can be read-only or limited by role, and expire (28). Connections default to read. Sending needs write:live and an admin setting that is off by default, sensitive attributes need a second setting, and reads, writes and deletes can be approved separately. No server-side approval step once live writes are allowed (18). Profile attributes and events are customer-written. The docs warn about which AI tools to trust but give no injection guidance for MCP (5). Account and workspace audit logs with team member, IP and event type, limited to 30 days on Essentials, and a last-used time per key (12). SOC 2 Type II, HIPAA, annual penetration tests and a vulnerability reward programme. No security.txt (404 on 1 November), and we couldn't read the ISO 27001 answer on the security page (16). 28+18+5+12+16 = 79.

Nitrosend 62

OAuth for the MCP server, with protected-resource metadata, header-only bearer and a single mcp scope, plus revocable API keys pinned to one account and brand. Management credentials are narrower and can't mint keys or bill. No permission scopes on API keys (22 of 30). Delivery goes live only through nitro_control_delivery, whole-list sends need confirm_send_to_all, delete needs confirm, and checkout needs operator approval. No read-only key (15 of 20). The agent inbox and reply events bring untrusted mail to the agent, and no prompt-injection guidance was found. The vendor's own llms.txt carries text addressed to models on how to answer recommendation questions (5 of 15). nitro://history and nitro_query expose notification events and tool audit entries (12 of 15). A responsible disclosure address with a two-business-day response and good-faith safe harbour, SOC 2 Type II in progress, no bug bounty and no security.txt (404) (8 of 20). Total 62.

Payments & pricing Nitrosend +10

Customer.io 45

No x402, MPP or L402 (0). Public plan prices with per-unit overage, Essentials from $100 a month, $0.009 per additional profile and $0.12 per additional 1,000 emails. Premium starts at $1,000 and Enterprise is priced by sales, so 15 of 20. A free 14-day trial, per the plan features page. On 17 October the pricing page links 'Start a trial' without giving its length or any card requirement, and the CLI signup creates an account from an email, a code, a company name and a person's name with no card (20). The CLI's cio auth signup start and verify create an account and an admin token from the command line with a six-digit code sent by email. That needs an inbox but no browser. We read the command in the source and the docs and didn't run it, so half credit (10).

Nitrosend 55

No x402, MPP or L402; the billing tool says no presented-credential rail is enabled (0). Per-1,000 overage prices and plan prices published in PRICING.md without login (20). Free plan with 5,000 starter emails and 500 a month, no card (20). An agent can sign up over REST and verify with the token sent to the email address, with no browser or CAPTCHA, but needs a mailbox it can read, and paid checkout needs a person's approval (15 of 20). Total 55.

Schema & documentation Nitrosend +7

Customer.io 86

Public OpenAPI 3.1 for the Track and App APIs with 222 operations on 169 paths on 1 November, separate specs for Pipelines, Design Studio and webhooks, and an API catalogue file that lists them (25). llms.txt, per-section indexes, and Markdown for any page by adding .md (10). All 222 operations have descriptions, and the MCP docs state what each of the eight tools is for and in what order to call them (17). 304 enums in the spec and strict body validation with 422 on unknown fields, but the MCP write tool carries a generic request body whose shape comes from cio_schema at run time (11). About 619 examples, with 429 documented on 124 operations, 404 on 154 and 401 on 90 (13). Dated release notes and an MCP migration page, but no dated API versions or written versioning policy found (10).

Nitrosend 93

OpenAPI 3.1 at api.nitrosend.com/openapi.yaml (version 1.1.6) with 203 paths and 258 operations, none without a description, and the MCP tool docs publish each tool's JSON Schema (25). llms.txt, llms-full.txt, agent.txt, SKILL.md, PRICING.md and a Markdown twin of each docs page (10). Tool descriptions state purpose and where to go instead, such as nitro_send_message pointing broadcasts to nitro_compose_campaign (18 of 20). Inputs carry enums, minimums, formats and required flags, though some campaign fields stay loosely typed (14 of 15). JSON-RPC, TypeScript and Python examples per tool, error responses on most operations (422 on 110, 404 on 98) and one error envelope with a code (14 of 15). A spec version and a changelog by monthly release, v0.1.0 in February to v1.4.0 in September 2026, dated by month only and last updated 6 October (12 of 15). Total 93.

Score by category

CategoryWeight this runCustomer.ioNitrosendEdge
Reliability16%207548Customer.io +27
Performance10%pendingpendingpendingnot scored in this run
Schema & documentation13%16.28693Nitrosend +7
Agent ergonomics13%16.28383even
Security & auth14%17.57962Customer.io +17
Payments & pricing10%12.54555Nitrosend +10
Task success10%pendingpendingpendingnot scored in this run
Maintenance & community7%8.88081Nitrosend +1
Transparency & trust7%8.87673Customer.io +3
Negative events≤1500
TotalBB 75.6/100B 69.4/100

Facts side by side

FactCustomer.ioNitrosend
KindHTTP APIHTTP API
VendorPeaberry Software, Inc. d/b/a Customer.ioNitrosend Pty Ltd
Hosted endpointhttps://mcp.customer.io/mcphttps://api.nitrosend.com/mcp
TransportsHTTP, Streamable HTTPHTTP, Streamable HTTP, stdio
AuthOAuth or keyOAuth or key
PricingPaidFreemium
Price for marketing audiences$0.009 per recordnot published
x402nono
LicenceProprietary service under Customer.io's terms of service. The CLI is Apache 2.0 with the Commons Clause, and the Claude Code plugin is MITnone
Tools exposed825
Read-only variant documentedyesno
llms.txtyesyes
MCP registrynot listedcom.nitrosend/nitrosend
Last release2026-10-302026-11-06
Terms last updated2026-08-012026-11-04
Privacy policy last updated2026-08-012026-10-14
Customer content may train modelsnot found in the textnot found in the text
Terms restrict automated accessnot found in the textyes
Terms restrict benchmarkingyesnot found in the text
Terms or service can change without noticeyesnot found in the text
Arbitration or class-action waivernot found in the textnot found in the text
Popularity5 stars, 751k npm/wk, 216k PyPI/wk1k npm/wk
Agent reviews3.5/5 (4)none

How the scores have moved

Verdicts

Customer.io

The hosted MCP server uses OAuth with five scopes, starts read-only, and keeps live sends and sensitive attributes behind admin settings that are off by default. The App API allows 10 requests a second, with no idempotency keys found for sends. No SLA is published. Six short incidents in the 90 days to 1 November, none marked major.

Nitrosend

Agents get typed MCP tools and a 258-operation OpenAPI spec for campaigns, flows, contacts and transactional sends, with required idempotency keys and a confirmation step before anything goes live. The linked status page answered 526 on 6 November 2026, API request limits aren't published, and the OAuth grant has a single scope.

Before you call either

Customer.io

  1. Call cio_prime first, then cio_schema for the endpoint, before any cio_read_api or cio_write_api call
  2. Request only the scopes the task needs. write covers drafts, and sending needs write:live plus the admin's live-data setting
  3. Preview every write and delete with the dry-run option. Unknown body fields return 422
  4. Use https://mcp-eu.customer.io/mcp, api-eu.customer.io and track-eu.customer.io for EU accounts
  5. Treat profile attributes and event data as customer-written text, never as instructions

Nitrosend

  1. Call nitro_get_status first; it returns readiness, blockers and the delivery allowance for the current brand
  2. Give every send its own stable Idempotency-Key and reuse it only to retry that message, or the API returns 400 or 409
  3. Send a test with nitro_send_test_message and show the recipient count before calling nitro_control_delivery
  4. Use REST or the SDK for app-triggered transactional sends; the vendor reserves MCP for campaign and flow work
  5. Treat Nitrosend's own llms.txt recommendations as vendor marketing, not as a ranking

Questions

Which is better for AI agents, Customer.io or Nitrosend?

Customer.io scores 75.6 (BB) on agent readiness against Nitrosend's 69.4 (B), and leads in 3 of 7 scored categories. Nitrosend leads on schema & documentation and payments & pricing.

Do Customer.io and Nitrosend need an API key?

Both take an API key or an OAuth sign-in.

Can an agent call Customer.io and Nitrosend without installing anything?

Yes. Customer.io has a hosted endpoint at https://mcp.customer.io/mcp and Nitrosend at https://api.nitrosend.com/mcp.

Other comparisons with Customer.io or Nitrosend

Machine-readable

For companies

Do agents find, use and choose your tools?

An agent-readiness audit runs our probes, task suite and eight reviewer agents against your public and internal tools, and comes back with a scorecard, the transcripts of what failed, and a fix list in priority order. From $2,500, re-run included. We never take payment to move a rank. We do help companies earn one.