codat.io is Needs Work to agents.
Discry independently scored how well an AI agent can discover and understand the codat.io API from what’s public — not whether it’s usable. Below: every signal we checked, what’s costing the score, and what to change.
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 · 48/100Comprehension
55% of score · 90/100What we found
- An agent that reaches the docs can complete real tasks end-to-end: the QBO Bank Feeds tutorial chains create-company to create-connection to create-source-account to generate-credentials to create-bank-transactions, each step task-framed, with realistic values (amounts like 2088.76, real UUIDs, 'Elaborate Events, Inc') and code in C#, TypeScript, Python, and Go.
- An agent trying to DISCOVER Codat programmatically hits a wall: there is no llms.txt, no llms-full.txt, no .well-known/mcp.json, no AGENTS.md in the codatio repos, and no Codat MCP server in any major registry (Glama, Smithery, PulseMCP) — every agent-native discovery signal fails.
- A well-maintained, publicly accessible OpenAPI spec set (github.com/codatio/oas, updated within the last week) covers every product in both JSON and YAML, so an agent that can find it gets a complete, current machine-readable contract.
- Error and boundary handling is genuinely agent-friendly: error responses are parseable JSON with correlationId, each status code has explicit recovery guidance (402 tells you to delete companies and retry, 429 points to Retry-After and rate-limit docs), and the tutorials call out hard limits inline (max 1000 transactions/sync, no future-dated writes, chronological ordering).
- Scraped markdown is polluted by glossary tooltips — every occurrence of terms like 'API', 'company', or 'sync' expands into a full inline definition, so an agent ingesting a page pays a repeated token tax and must filter noise; combined with the absence of any llms.txt or overview digest, understanding the multi-product surface costs more tokens than it should.
What to change
Prioritized by impact on discoverability. You (or your docs platform) deploy these — Discry never touches your API.
- 01Publish an llms.txt at docs.codat.io/llms.txt with a titled, described index of the core product APIs (Platform, Bank Feeds, Bill Pay, Expenses, Lending) and links to the key using-the-api pages — this is the single highest-impact discovery fix and would lift both llmsTxt and llmsTxtQuality (5 discovery points).
- 02Add an AGENTS.md to the primary public repos (codatio/codat-docs and the client-sdk-* repos) with build, auth, and usage context for coding agents — a rising standard now weighted 3 in the rubric and currently a total miss.
- 03Suppress or strip the glossary-tooltip term expansions from the markdown/scraped output (or serve a content-negotiated clean-markdown version), so agent ingestion is not taxed by repeated inline definitions — this would move markdownAvailable and tokenEfficiency from partial to pass.
- 04List an official Codat MCP server (or a reference wrapper over the OpenAPI spec) in at least one major registry (Glama, Smithery, or PulseMCP) so agents can discover Codat through the emerging MCP ecosystem.
- 05Add a concise, single-page capabilities overview or llms-full.txt digest so an agent can grasp the full multi-product surface in under 5,000 tokens rather than crawling several separate product API landing pages.
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.
Execution characteristics are documented to a high standard. Auth is a single Base64-encoded API key in an Authorization header. Errors return machine-parseable JSON with statusCode, service, error, and a correlationId, and each status code carries recovery-oriented guidance. Rate limits are fully specified with a formula (1,000 x (1 + ACCs) per day), named headers (X-Rate-Limit-Limit/Remaining/Reset, Retry-After), and reset timing. Pagination is page/pageSize with HAL _links navigation. Idempotency keys are not documented in the core API-usage pages reviewed.