◎ Discry Score
courier.com
communication · API
A
0 / 100
DISCOVERY0
COMPREHENSION0
Category leader: 98 (A)
Discry your API →
COMMUNICATION · RANK #3 OF 24

Courier is Agent-Ready to agents.

Discry independently scored how well an AI agent can discover and understand the Courier API from what’s public — not whether it’s usable. Below: every signal we checked, what’s costing the score, and what to change.

Discry your API — freeView the docs ↗

SCORED UNDER RUBRIC 1.2 · A full re-launch under Discry Score 2.5 — a new behavioral instrument, not comparable to these scores — is in progress.

Discovery

45% of score · 83/100
OpenAPI specA machine-readable OpenAPI/Swagger spec agents can parse.Partial
llms.txtAn llms.txt index that points agents to the docs that matter.Pass
llms.txt qualityThe llms.txt is focused, current, and well under the size budget.Pass
llms-full.txtA full-text bundle agents can load in one request.Pass
AGENTS.mdAn AGENTS.md that tells coding agents how to build on the API.Pass
.well-known/mcp.jsonA discoverable MCP manifest at a well-known path.Fail
MCP registryThe API is listed in a public MCP registry.Pass
robots.txt AI directivesrobots.txt allows (or explicitly guides) AI crawlers.Pass
SitemapA sitemap so agents can enumerate the docs surface.Pass

Comprehension

55% of score · 96/100
Task-oriented descriptionsEndpoints described by what they accomplish, not just their shape.Pass
Realistic examplesRunnable, real-world request/response examples.Pass
Multi-step workflowsDocs that chain calls into complete jobs an agent can follow.Pass
Error-recovery guidanceDocumented failure modes and how to recover from them.Pass
Answer-first formatThe answer leads; preamble does not bury it.Pass
Capability boundariesClear limits — what the API can and cannot do.Pass
Naming consistencyConsistent, predictable naming across endpoints.Partial
Heading hierarchyClean heading structure agents can navigate.Pass
Markdown docsDocs available as clean markdown, not JS-rendered HTML only.Pass
Token efficiencyDocs are concise enough to fit an agent context window.Pass

What we found

  • Courier is built deliberately for agents: a dedicated /docs/tools/agent-quickstart page written 'for AI coding agents', a first-party remote MCP server at mcp.courier.com, an AGENTS.md in the courier-go SDK, and a courier-skills repo. An agent landing here finds purpose-built onboarding rather than human-only reference.
  • Machine-readable docs are first-class: /docs/llms.txt (a curated, agent-routing index with a data model, intent→endpoint table, and 'Critical Gotchas') and a 2MB /docs/llms-full.txt covering the full surface. An agent can understand core capabilities in a few thousand tokens without scraping HTML.
  • Error recovery is exemplary — the responses page gives every status code an explicit Action column, a Common Validation Errors table (Error → Cause → Fix), and concrete 429 backoff steps. An agent that hits an error is told exactly how to self-correct, not just given a code.
  • The biggest gap is the OpenAPI spec: it demonstrably exists (it powers the live 'Try it' reference and the Stainless-generated SDKs, and every page cites /openapi-specs/openapi.documented.yml), but it is not offered as a cleanly downloadable public spec file — an agent can reconstruct the API from llms-full.txt but can't grab a single machine-readable artifact.
  • Minor inconsistency: request/response fields are mostly snake_case (user_id, created_at, phone_number, list_id) but identifiers come back camelCase (requestId, messageId), a small naming seam an agent must account for when parsing responses.

What to change

Prioritized by impact on discoverability. You (or your docs platform) deploy these — Discry never touches your API.

  1. 01Publish the OpenAPI spec at a stable, discoverable public URL (e.g. /docs/openapi.json or a linked download on the API Reference landing). The spec already exists and backs the live reference — exposing it as a downloadable artifact would close the single largest discovery gap and likely move Discovery from B to A.
  2. 02Add /.well-known/mcp.json advertising the existing mcp.courier.com server with its tool declarations and auth, so agents can auto-discover the MCP endpoint without reading the quickstart prose.
  3. 03Mirror llms.txt to the root (/llms.txt) or add a redirect — the file lives at /docs/llms.txt, so an agent probing the conventional root path gets a 404 despite the excellent index existing one level down.
  4. 04Normalize response identifier casing (requestId/messageId) to match the otherwise-consistent snake_case body fields, or document the casing convention explicitly so agents parse responses without surprises.
  5. 05Trim or split the llms.txt index (currently ~62KB) toward the <50KB / ~12K-token sweet spot, keeping the agent-routing table and gotchas while pushing exhaustive prose into llms-full.txt, so the index stays cheap to load.

Execution coverage · INFORMATIONAL, UNSCORED

Whether an agent can actually complete a call and recover from errors is the deeper Audit layer — documented here, but not part of the Discry Score.

API key (Bearer token, workspace-scoped Test/Production)JWT (POST /auth/issue-token, scoped for frontend/inbox) Error format documented Rate limits documented Pagination documented Idempotency documented

Exceptionally complete execution documentation. Errors return machine-parseable JSON with a `message` plus a `type` taxonomy (invalid_request_error, authentication_error, rate_limit_error, api_error) mapped to status-code ranges. Rate limits are specified per management endpoint (20 req/min Lists/Events, 200 req/min Brands) with X-RateLimit-Limit/Remaining headers; Send is throttled by volume guardrails rather than request count. Cursor-based pagination on list endpoints, two auth methods, and an Idempotency-Key header (with an explicit Node SDK gotcha) are all documented.

See your own Discry Score.

Drop your API docs URL. See what an agent sees — in 60 seconds, free.

Discry your API — free