◎ Discry Score
copper.com
crm · API
D
0 / 100
DISCOVERY0
COMPREHENSION0
Category leader: 89 (B)
Discry your API →
CRM · RANK #13 OF 13

Copper is Poor to agents.

Discry independently scored how well an AI agent can discover and understand the Copper 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 · 17/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.Fail
llms.txt qualityThe llms.txt is focused, current, and well under the size budget.Fail
llms-full.txtA full-text bundle agents can load in one request.Fail
AGENTS.mdAn AGENTS.md that tells coding agents how to build on the API.Fail
.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.Fail
SitemapA sitemap so agents can enumerate the docs surface.Fail

Comprehension

55% of score · 60/100
Task-oriented descriptionsEndpoints described by what they accomplish, not just their shape.Partial
Realistic examplesRunnable, real-world request/response examples.Partial
Multi-step workflowsDocs that chain calls into complete jobs an agent can follow.Partial
Error-recovery guidanceDocumented failure modes and how to recover from them.Partial
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.Partial
Token efficiencyDocs are concise enough to fit an agent context window.Partial

What we found

  • An agent looking for Copper's API would struggle to discover it programmatically: there is no robots.txt, no llms.txt/llms-full.txt, an empty sitemap.xml, and no .well-known/mcp.json — the only machine-readable surface is a publicly downloadable Postman collection (no native OpenAPI/Swagger spec).
  • Once an agent reaches the docs, comprehension is solid: the MkDocs site has a clean, resource-organized hierarchy (people, leads, companies, opportunities, projects, tasks, activities, webhooks), endpoint pages lead with the HTTP method and URL, and headings nest logically — agents can parse structure reliably.
  • Code examples use realistic values (real-looking IDs like 27140448, plausible emails, addresses, phone numbers) and are copy-pasteable, but they are curl-only — an agent generating client code in Python or JS gets no language-native sample.
  • Capability boundaries are unusually well-covered for a CRM API: explicit rate limits, a 100k-record search cap, a documented 'no file uploads' limitation with a workaround, and team-permission caveats all appear — an agent can anticipate limits rather than discovering them by failing.
  • Error recovery is the weak point of an otherwise usable reference: the Responses page lists bare HTTP codes (400, 422, 429, 500) with only their generic meanings — no guidance on which parameter failed a 422 or how to back off from a 429 — so a self-correcting agent has little to act on.

What to change

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

  1. 01Publish an llms.txt at the domain root that names the API, summarizes the core CRM resources (people, leads, companies, opportunities, tasks, activities), and links to the authentication, pagination, and key endpoint pages — the single highest-impact discovery fix.
  2. 02Add a robots.txt that explicitly allows AI crawlers (GPTBot, ClaudeBot, Google-Extended, CCBot) and populate the currently-empty sitemap.xml with the full set of documentation URLs so agents and crawlers can enumerate the docs.
  3. 03Ship a native OpenAPI 3.x spec (the existing Postman collection can be converted as a starting point) and link it prominently — this turns the API from 'human-readable only' into something an agent can ingest as a tool schema.
  4. 04Document the error-response JSON body shape and add per-error recovery guidance: show the actual error payload, explain what triggers a 422 and which field to fix, and tell agents to honor the rate-limit window on a 429.
  5. 05Expand examples beyond curl to at least one language-native SDK sample (Python/JS) and add 2–3 end-to-end workflow guides (e.g., 'lead intake → convert to person + opportunity → log activity') so agents can chain operations for real tasks.

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 keyOAuth2.0 Error format documented Rate limits documented Pagination documented Idempotency documented

Copper documents two auth methods (API key via X-PW-AccessToken headers, and OAuth2.0 for partners), explicit rate limits (180 requests/minute on a rolling window plus a 3 requests/second cap on bulk APIs, returning 429 when exceeded), and page-number pagination with the X-PW-TOTAL response header and a 100,000-record search ceiling. However, the error-response JSON body schema is undocumented (only generic HTTP status codes are tabled, with no Copper-specific error payload or messages), and there is no idempotency-key support.

See your own Discry Score.

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

Discry your API — free