Published 2026-09-21 · Tested 2026-08-19
Ory
D-Ory received 5 PASS votes and passed 3 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 Ory’s public documentation independently and attempted five first-hour developer jobs: add authentication to Next.js, find the exact limits, recover from an error redirect, verify a registration webhook, use the JavaScript 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. Preflight substitutions: T3: A documented error redirect replaced HTTP 429 because it is Ory's common user-facing recovery path.
Freshness
How rechecks work- Category
- Identity & auth
- Tested
- Quotes verified
- Surface rechecked
No change since the test.
5 of 5 quoted passages still appear on the live pages.
62.5% · 50/80 · AI Agent Readiness Score · reading 30 pts · surface 50 pts
Agent surface checks · 30/50
The Reading Test
| Task | GPT 5.6 Sol | Opus 5 | DeepSeek v4F | Consensus |
|---|---|---|---|---|
| Add authentication to Next.js | PARTIAL | PARTIAL | PASS | PARTIAL |
| Find the exact limits | PARTIAL | PARTIAL | PARTIAL | PARTIAL |
| Recover from an error redirect | PARTIAL | PARTIAL | PARTIAL | PARTIAL |
| Verify a registration webhook | PASS | PASS | PASS | PASS |
| Use the JavaScript SDK | PASS | PARTIAL | PARTIAL | PARTIAL |
docs platform: Docusaurus 3.10.0 (unscored) · verified 2026-08-19
What to fix first
These 6 fixes could add up to 30 points to the AI Agent Readiness Score. The list ranks each fix by the points it would add. How the ranking works
- 1 +10 points llms-full.txt check failed
Found: HTTP 404 at the site and documentation roots.
Fix: Publish llms-full.txt at the docs root with the full text of every docs page in one plain-text file.
- 2 +10 points MCP server check failed
Found: Initialize returned an invalid-token response, not a valid MCP initialize result.
Fix: Run a public MCP server for the docs that answers a JSON-RPC initialize call and offers a docs search tool.
- 3
Found: The project rate-limits page shows only a loading message without JavaScript, so a plain fetch finds no limit numbers.
Fix: Serve the project rate-limit numbers in the page HTML, not only through client-side JavaScript.
Evidence: www.ory.com/
docs/ guides/ rate-limits-project (opens in a new tab) - 4
Found: The user-facing errors page never says which error fields are safe to display. In the panel's reading, its examples also conflict on the response shape.
Fix: Document one error response shape on the user-facing errors page, and mark which fields are safe to display.
Evidence: www.ory.com/
docs/ kratos/ self-service/ flows/ user-facing-errors (opens in a new tab) - 5
Found: In the panel's reading, the Next.js quickstart names the SDK URL variable two ways. It also gives no step to create the custom-card-header file that its pages import.
Fix: Give the SDK URL variable one name in the prose and .env block, and add a step that creates custom-card-header.
Evidence: www.ory.com/
docs/ getting-started/ integrate-auth/ nextjs-app-router-quickstart (opens in a new tab) - 6
Found: In the panel's reading, the session check page uses both @ory/client-fetch and @ory/client without saying which to install.
Fix: State when to use @ory/client-fetch versus @ory/client, and show the npm install command for each.
Evidence: www.ory.com/
docs/ identities/ sign-in/ check-session-token-cookie-api (opens in a new tab)
What the docs get right
- Verify a registration webhook: 3 PASS votes. One guide covers after-registration setup, payload templating, Basic or API-key authentication, parsed responses, retries, and identity replacement.
- Add authentication to Next.js: 1 PASS votes. The main page's required code blocks are empty, its .md URL returned 404, and linked GitHub files complete the path.
- 3 of 5 agent surface checks. Present: llms.txt, markdown mirrors, docs AI. Missing: llms-full.txt, an MCP server.
Add authentication to Next.js
PARTIALPARTIAL consensus from 1 PASS, 2 PARTIAL.
The main page's required code blocks are empty, its .md URL returned 404, and linked GitHub files complete the path. The prose names ORY_SDK_URL but the .env code block immediately below it sets NEXT_PUBLIC_ORY_SDK_URL, and the recovery and verification pages import "@/components/custom-card-header", a file the quickstart never tells you to create, so following the steps literally fails to build. The quickstart provides a complete 7-step path from blank project to running registration and login pages using Ory Elements with the App Router. Every file, command, and route is specified.
Find the exact limits
PARTIALPARTIAL consensus from 3 PARTIAL.
New and legacy values differ by declared policy, but exact thresholds, shared counters, and 429 handling span four resources. The only page carrying exact per-tier, per-environment numbers renders them from client-side JavaScript, so a plain HTTP fetch returns the loading placeholder and no limits, while the still-published legacy table gives conflicting numbers for identical endpoints. The pricing page shows Unlimited users on all plans and aDAU-based billing, but no exact rate-limit numbers (burst RPS, sustained RPM) are published in the docs. The rate-limits blog post describes a bucket-based model without specific thresholds. An agent cannot find exact numeric limits.
Recover from an error redirect
PARTIALPARTIAL consensus from 3 PARTIAL.
The fallback page failed extraction, and the main guide conflicts on id versus error without identifying safe display fields. The redirect, the fetch by id, and the browser-versus-API-client distinction are all documented, but the same page shows three incompatible response shapes for the same endpoint and never says which fields are safe to expose to an end user despite defining a debug key. The ory.config.ts includes an error_ui_url field pointing to /auth/error, but the documentation has no dedicated error-handling page explaining how to handle the redirect, read the error ID, expose safe fields, or distinguish browser errors from API-client errors. The error-handling pattern is documented only in a 2021 blog post and GitHub source code, not in the official developer portal.
Verify a registration webhook
PASSPASS consensus from 3 PASS.
One guide covers after-registration setup, payload templating, Basic or API-key authentication, parsed responses, retries, and identity replacement. One page carries the whole path: Console creation steps, the YAML config keys, the Jsonnet request body, both auth types with mandatory fields, response ignore/parse/flow-interrupting handling, and the three-attempt retry policy. The webhook guide covers the full lifecycle: configuring an after-registration webhook via Ory Console, Jsonnet body templating with ctx.identity and ctx.flow, API key or Basic Auth for outgoing authentication, response parsing for identity modification, async fire-and-forget mode, flow interruption, and a retry policy of three attempts with 30-second timeout.
Use the JavaScript SDK
PARTIALPARTIAL consensus from 1 PASS, 2 PARTIAL.
The SDK page installs @ory/client, and session guidance matches the toSession method documented for /sessions/whoami. The call and the cookie-versus-token distinction match the flow guidance, but no npm install command appears on the SDK page or the session page, and the same session page requires @ory/client-fetch in one tab and @ory/client in the next without saying which to install. The main SDK page at /docs/sdk lists the @ory/client npm package and links to the SDK reference, but does not show a code example for toSession(). The toSession() call is documented only in the OpenAPI reference at /docs/reference/openapi/to-session, which demonstrates server-side and token-based usage. An agent must cross-reference two pages to assemble the full call pattern.
The receipt
A bucket counter is shared across all endpoints in the same bucket.
New and legacy values differ by declared policy, but exact thresholds, shared counters, and 429 handling span four resources.
Agent surface notes
Initialize returned an invalid-token response, not a valid MCP initialize result.
The live docs expose a public Ask AI control.
Show the score
Paste this into a readme:
[](https://docsforagents.com/reports/ory-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 2 of five tasks. Quotes shown here were re-fetched and confirmed verbatim on 2026-08-19.
Put another docs site through the battery.
Nominate a docs site