Published 2026-09-27 · Tested 2026-09-27
Courier
ACourier received 10 PASS votes and passed 5 of five agent surface checks. The clearest finding came from the find the exact limits task.
Three AI models, GPT 5.6 Sol, Claude Opus 5, and DeepSeek v4 Flash, each read Courier’s public documentation independently and attempted five first-hour developer jobs: send the first message, find the exact limits, recover from a 429, verify a webhook, use the Node SDK.
No accounts, API calls, or code execution were used. Every verdict came from public pages and every published quotation passed a live verification check.
Freshness
How rechecks work- Category
- Email & messaging
- Tested
- Quotes verified
- Surface rechecked
- Not yet rechecked
93.8% · 75/80 · AI Agent Readiness Score · reading 30 pts · surface 50 pts
Agent surface checks · 50/50
The Reading Test
| Task | GPT 5.6 Sol | Opus 5 | DeepSeek v4F | Consensus |
|---|---|---|---|---|
| Send the first message | PASS | PARTIAL | PASS | PASS |
| Find the exact limits | PARTIAL | PARTIAL | PASS | PARTIAL |
| Recover from a 429 | PARTIAL | PARTIAL | PASS | PARTIAL |
| Verify a webhook | PASS | PASS | PASS | PASS |
| Use the Node SDK | PASS | PASS | PASS | PASS |
docs platform: Mintlify (unscored) · verified 2026-09-27
What to fix first
These 2 fixes could add up to 4 points to the AI Agent Readiness Score. The list ranks each fix by the points it would add. How the ranking works
- 1
Found: Per-user, topic, and tenant send limits are described as a concept with no documented values, windows, or defaults.
Fix: Add the default value, time window, and configuration location for each send-limit scope to the limits table.
Evidence: www.courier.com/
docs/ reference/ api-overview (opens in a new tab) - 2
Found: The 429 docs give X-RateLimit headers and idempotency keys, but no Retry-After or reset signal to time a retry.
Fix: Document a retry-after or rate-limit reset header and a concrete backoff schedule for 429 responses.
Evidence: www.courier.com/
docs/ reference/ api-overview (opens in a new tab)
What the docs get right
- Verify a webhook: 3 PASS votes. The outbound guide covers creation and the whsec_ secret and hands off to the security page, which gives the header format, the <t>.<raw_body> signed payload, runnable Node verification code, and explicit warnings to hash the raw body and compare in constant time.
- Use the Node SDK: 3 PASS votes. The SDK quick start uses client.send.message({ message: ... }), matching the API reference's JavaScript request shape.
- 5 of 5 agent surface checks. Present: llms.txt, llms-full.txt, markdown mirrors, an MCP server, docs AI.
Send the first message
PASSPASS consensus from 2 PASS, 1 PARTIAL.
The quickstart links the Test key, gives a complete POST /send request, and directs users to Test Logs. The quickstart gives a clean three-step path from Test key to a verified delivery timeline, but the docs state two different success status codes for POST /send, so an agent cannot write a correct success check. The quickstart walks from zero to a delivered message in three steps with a working code example for every major SDK.
Find the exact limits
PARTIALPARTIAL consensus from 1 PASS, 2 PARTIAL.
The rate table is specific, but the old send-limits Markdown URL failed and current pages disagree on 1 MB versus 6 MB payload caps. Request-count limits and the 6 MB payload cap are stated exactly and consistently, but the per-user, topic, and tenant send limits are only described as a concept with no documented values, defaults, or configuration location. The rate-limit table and payload limits are identical on both the statuses and API overview pages.
Recover from a 429
PARTIALPARTIAL consensus from 1 PASS, 2 PARTIAL.
The docs identify the cause and generic action but give no Retry-After or reset header for a complete retry decision. The docs name the cause, the affected endpoints with exact limits, the X-RateLimit-Limit and X-RateLimit-Remaining headers, and Idempotency-Key for safe retries, but no Retry-After or reset header and no backoff parameters, so an agent cannot compute how long to wait. The docs name the cause, the retry signal (429 + rate_limit_error), and the recovery path. The SDK retries 429s up to 2 times with exponential backoff.
Verify a webhook
PASSPASS consensus from 3 PASS.
The outbound guide covers dashboard setup and secret storage, while the security page provides matching raw-body HMAC verification code. The outbound guide covers creation and the whsec_ secret and hands off to the security page, which gives the header format, the <t>.<raw_body> signed payload, runnable Node verification code, and explicit warnings to hash the raw body and compare in constant time. The outbound webhooks guide links to the security page, which documents the full HMAC-SHA256 verification including splitting the courier-signature header, constant-time comparison, and requiring the raw body.
Use the Node SDK
PASSPASS consensus from 3 PASS.
The SDK quick start uses client.send.message({ message: ... }), matching the API reference's JavaScript request shape. The Node SDK page and the Send a message reference use the same constructor option apiKey, the same message wrapper around to and template, and the same response.requestId field, so the SDK example matches the API form. The SDK's client.send.message() parameter shape is the same message object that POST /send accepts in the API reference.
The receipt
Request bodies cap at 6 MB on all endpoints.
The rate table is specific, but the old send-limits Markdown URL failed and current pages disagree on 1 MB versus 6 MB payload caps.
Agent surface notes
Initialize returned JSON-RPC protocol 2025-06-18 and serverInfo name Courier version 1.0.0 (docs search/retrieval server, no key). A separate public API MCP server at https://mcp.courier.com also answers initialize with serverInfo @trycourier/courier-mcp version 1.3.7.
After hydration the docs header shows a Toggle assistant panel control; one click opened the Mintlify assistant panel with an Ask a question... input.
Show the score
Paste this into a readme:
[](https://docsforagents.com/reports/courier-docs-ai-agent-readiness/) Method note
This is a reading test of public documentation, not an execution test. No accounts were created and no API calls were run. The AI Agent Readiness Score counts fifteen reading votes at PASS 2, PARTIAL 1, and FAIL 0, for 30 possible points. Five agent surface checks add 10 points each. The total is 80. Consensus chips show each row majority and do not affect scoring. The panel split on 3 of five tasks. Quotes shown here were re-fetched and confirmed verbatim on 2026-09-27.
Put another docs site through the battery.
Nominate a docs site