---
title: "Next.js: agent-ready recipes | Agent Ready Checklist"
description: "Every agent-ready recipe for Next.js: 31 rows of the checklist, the version read, the date and the vendor documentation each step came from."
canonical: https://agentreadychecklist.com/platforms/nextjs-app-router
site: "Agent Ready Checklist"
last_updated: 2026-11-05
section: "Platforms"
---

# Next.js: agent-ready recipes | Agent Ready Checklist

> Every agent-ready recipe for Next.js: 31 rows of the checklist, the version read, the date and the vendor documentation each step came from.

Source: https://agentreadychecklist.com/platforms/nextjs-app-router
Site: Agent Ready Checklist
Last reviewed: 2026-11-05
Agent endpoints: https://agentreadychecklist.com/llms.txt (index), https://agentreadychecklist.com/openapi.json (API), https://agentreadychecklist.com/mcp (MCP server), https://agentreadychecklist.com/ask (search)
Access: https://agentreadychecklist.com/auth.md (no key). Pricing: https://agentreadychecklist.com/pricing.md (free).

# Next.js: agent-ready recipes

Next.js (App Router): 31 recipes against the 31 checklist rows, read on 2026-11-04. Next.js: 29 are direct, 2 are workarounds. Next.js recipes cite the page they were derived from, or the specification when the step is generic. A Next.js workaround names the real route: a proxy, an edge function or a domain you control. Version read for Next.js: Next.js 16.x.

## Version and documentation read

Version

Next.js 16.x (npm latest 16.4.5, read 2026-11-04); docs at nextjs.org/docs/app

Read on

2026-11-04

Recipes

29 direct, 2 workaround, 0 not possible on the platform

robots.txt

[nextjs.org/docs/app/api-reference/file-conventions/metadata/robots](https://nextjs.org/docs/app/api-reference/file-conventions/metadata/robots). app/robots.ts returning MetadataRoute.Robots generates /robots.txt.

Sitemap

[nextjs.org/docs/app/api-reference/file-conventions/metadata/sitemap](https://nextjs.org/docs/app/api-reference/file-conventions/metadata/sitemap). app/sitemap.ts returning MetadataRoute.Sitemap generates /sitemap.xml.

Structured data

[nextjs.org/docs/app/guides/json-ld](https://nextjs.org/docs/app/guides/json-ld). Render a script type application/ld+json in a Server Component, escaping < as \\u003c.

Status codes

[nextjs.org/docs/app/api-reference/functions/not-found](https://nextjs.org/docs/app/api-reference/functions/not-found). notFound() renders the not-found UI and injects a noindex robots meta tag; custom UI in not-found.js.

Headers and redirects

[nextjs.org/docs/app/api-reference/config/next-config-js/headers](https://nextjs.org/docs/app/api-reference/config/next-config-js/headers). headers() in next.config.js, with has conditions on request headers.

Content negotiation

[nextjs.org/docs/app/api-reference/file-conventions/proxy](https://nextjs.org/docs/app/api-reference/file-conventions/proxy). proxy.ts (middleware.ts renamed in v16.0.0) can read the Accept header and rewrite to a markdown route.

llms.txt

[nextjs.org/docs/app/api-reference/file-conventions/route](https://nextjs.org/docs/app/api-reference/file-conventions/route). No built-in llms.txt; serve it from public/ or an app/llms.txt/route.ts Route Handler.

OpenAPI

[nextjs.org/docs/app/api-reference/file-conventions/public-folder](https://nextjs.org/docs/app/api-reference/file-conventions/public-folder). No built-in OpenAPI generator; put openapi.json in public/ so it is served from the root.

[The checklist table for Next.js (App Router)](https://agentreadychecklist.com/platform/nextjs-app-router/checklist/) shows every row with its first step.

## Verify with Ora

Next.js (App Router) has a direct recipe for 29 rows, and Ora's catalogue (read 2026-11-05) names a matching check for 26 of them, among them AR-FIND-01, AR-FIND-03, AR-FIND-04. After the steps are live, one audit shows which of those fixes the score picks up.

```bash
npx ax@0.10 audit https://example.com --min-score 70
```

Run it again with `--force` after a deploy, so the audit skips Ora's cache. [Gate deploys on it in CI](https://agentreadychecklist.com/guides/gate-deploys-on-agent-readiness-in-ci/), [why this site recommends Ora](https://agentreadychecklist.com/verify-with-ora/), [the crosswalk of rows and checks](https://agentreadychecklist.com/checklist/ora-checks/).

## Recipes, row by row

### [AR-FIND-01](https://agentreadychecklist.com/checklist/ar-find-01/): Do not block agentsrecipe

In app/robots.ts return rules: \[{ userAgent: "\*", allow: "/" }\] and add a sitemap URL. Do not add per-bot disallow groups for GPTBot or ClaudeBot unless you mean to opt out of training. Check the WAF on your host separately.

Read 2026-11-04. [nextjs.org/docs/app/api-reference/file-conventions/metadata/robots](https://nextjs.org/docs/app/api-reference/file-conventions/metadata/robots)

### [AR-FIND-02](https://agentreadychecklist.com/checklist/ar-find-02/): Answers on one first-party pagerecipe

Publish each answer once, as a page on your own domain. Put the fact (price, limit, version) in the page text, give the page one stable address, and link it from the home page and from llms.txt. Keep the page current: a second, older copy elsewhere on the site is the usual way an agent cites the wrong figure.

Generic step from the AgentReady specification; not platform-specific. [github.com/agentready-org/standard/blob/main/spec/spec.md](https://github.com/agentready-org/standard/blob/main/spec/spec.md)

### [AR-FIND-03](https://agentreadychecklist.com/checklist/ar-find-03/): Sitemap listed in robots.txtrecipe

Create app/sitemap.ts exporting a default function that returns MetadataRoute.Sitemap entries ({ url, lastModified }). Reference it from app/robots.ts with sitemap: "https://example.com/sitemap.xml".

Read 2026-11-04. [nextjs.org/docs/app/api-reference/file-conventions/metadata/sitemap](https://nextjs.org/docs/app/api-reference/file-conventions/metadata/sitemap)

### [AR-FIND-04](https://agentreadychecklist.com/checklist/ar-find-04/): AI Catalog at .well-knownrecipe

Add app/.well-known/ai-catalog.json/route.ts exporting GET that returns Response.json({ specVersion: "1.0", host: {…}, entries: \[…\] }), or place the static file at public/.well-known/ai-catalog.json.

Read 2026-11-04. [nextjs.org/docs/app/api-reference/file-conventions/route](https://nextjs.org/docs/app/api-reference/file-conventions/route)

### [AR-READ-01](https://agentreadychecklist.com/checklist/ar-read-01/): Answer in the initial HTMLrecipe

Keep pages as Server Components (the App Router default) so content is in the HTML response. Fetch data in the page, not in a useEffect. For fully static output set output: "export" in next.config.js.

Read 2026-11-04. [nextjs.org/docs/app/getting-started/server-and-client-components](https://nextjs.org/docs/app/getting-started/server-and-client-components)

### [AR-READ-02](https://agentreadychecklist.com/checklist/ar-read-02/): Real HTTP status codesrecipe

Call notFound() from next/navigation when a record is missing; Next.js renders not-found.js with a 404. For throttling, return new Response("Too Many Requests", { status: 429, headers: { "Retry-After": "60" } }) from proxy.ts or a Route Handler.

Read 2026-11-04. [nextjs.org/docs/app/api-reference/functions/not-found](https://nextjs.org/docs/app/api-reference/functions/not-found)

### [AR-READ-03](https://agentreadychecklist.com/checklist/ar-read-03/): Home page with real linksrecipe

Render the home page as a Server Component and use next/link Link components, which output real a href anchors to /docs, /pricing and product pages.

Read 2026-11-04. [nextjs.org/docs/app/getting-started/server-and-client-components](https://nextjs.org/docs/app/getting-started/server-and-client-components)

### [AR-READ-04](https://agentreadychecklist.com/checklist/ar-read-04/): Docs that answer agent tasksrecipe

For each of your top five agent tasks, write a page that holds the steps as text, in order, with the exact names of the buttons, fields and settings. Steps that exist only in an image, a video or a script-built widget are not in the response a plain fetch receives. Fetch the page with curl and grep for the step.

Generic step from the AgentReady specification; not platform-specific. [github.com/agentready-org/standard/blob/main/spec/spec.md](https://github.com/agentready-org/standard/blob/main/spec/spec.md)

### [AR-READ-05](https://agentreadychecklist.com/checklist/ar-read-05/): Fenced, language-tagged coderecipe

In MDX pages write fenced blocks with a language (\`\`\`ts). With @next/mdx add a rehype highlighter; the language tag stays in the class name of the code element.

Read 2026-11-04. [nextjs.org/docs/app/guides/mdx](https://nextjs.org/docs/app/guides/mdx)

### [AR-READ-06](https://agentreadychecklist.com/checklist/ar-read-06/): Link the discovery filesrecipe

In app/layout.tsx export metadata with alternates: { types: { "text/markdown": "/index.md" } } and render footer links to /llms.txt and /openapi.json.

Read 2026-11-04. [nextjs.org/docs/app/api-reference/functions/generate-metadata](https://nextjs.org/docs/app/api-reference/functions/generate-metadata)

### [AR-READ-07](https://agentreadychecklist.com/checklist/ar-read-07/): Ship llms.txtrecipe

Write public/llms.txt (H1, summary blockquote, link lists) or generate it in app/llms.txt/route.ts with export const dynamic = "force-static" and Content-Type text/plain.

Read 2026-11-04. [nextjs.org/docs/app/api-reference/file-conventions/route](https://nextjs.org/docs/app/api-reference/file-conventions/route)

### [AR-READ-08](https://agentreadychecklist.com/checklist/ar-read-08/): JSON-LD on key pagesrecipe

In the page component render <script type="application/ld+json" dangerouslySetInnerHTML={{ \_\_html: JSON.stringify(jsonLd).replace(/</g, "\\\\u003c") }} />. Repeat key facts in visible text.

Read 2026-11-04. [nextjs.org/docs/app/guides/json-ld](https://nextjs.org/docs/app/guides/json-ld)

### [AR-READ-09](https://agentreadychecklist.com/checklist/ar-read-09/): Advertise a markdown mirrorrecipe

Use generateMetadata to emit alternates.types\["text/markdown"\] per page, or add a Link header in next.config.js headers(): { key: "Link", value: "</docs/x.md>; rel=\\"alternate\\"; type=\\"text/markdown\\"" }.

Read 2026-11-04. [nextjs.org/docs/app/api-reference/functions/generate-metadata](https://nextjs.org/docs/app/api-reference/functions/generate-metadata)

### [AR-READ-11](https://agentreadychecklist.com/checklist/ar-read-11/): Pricing as first-party HTMLrecipe

Build app/pricing/page.tsx as a Server Component with plans and limits as text in table markup; do not render prices only in a client-side calculator.

Read 2026-11-04. [nextjs.org/docs/app/getting-started/server-and-client-components](https://nextjs.org/docs/app/getting-started/server-and-client-components)

### [AR-ACT-01](https://agentreadychecklist.com/checklist/ar-act-01/): Auth an agent can finishrecipe

Run an authorization server, or an identity provider, that issues scoped tokens, and serve its RFC 8414 metadata from the app as the CF-OAUTH-DISCOVERY recipe shows (/platforms/nextjs-app-router/#cf-oauth-discovery). Also offer self-serve API keys with documented scopes.

Generic step from the AgentReady specification; not platform-specific. [github.com/agentready-org/standard/blob/main/spec/spec.md](https://github.com/agentready-org/standard/blob/main/spec/spec.md)

### [AR-ACT-02](https://agentreadychecklist.com/checklist/ar-act-02/): OpenAPI contractrecipe

Commit openapi.json to public/ (served at /openapi.json) or return it from app/openapi.json/route.ts. Link it from the footer and from llms.txt.

Read 2026-11-04. [nextjs.org/docs/app/api-reference/file-conventions/public-folder](https://nextjs.org/docs/app/api-reference/file-conventions/public-folder)

### [AR-ACT-03](https://agentreadychecklist.com/checklist/ar-act-03/): MCP over Streamable HTTPrecipe

Add a Route Handler at app/mcp/route.ts that exports POST and returns the MCP server over Streamable HTTP (a POST answered with JSON or an event stream). Keep a docs MCP public and gate a product MCP with OAuth and PKCE.

Derived from Next.js's documentation read on 2026-11-04. [nextjs.org/docs/app/api-reference/file-conventions/route](https://nextjs.org/docs/app/api-reference/file-conventions/route) and [github.com/agentready-org/standard/blob/main/spec/spec.md](https://github.com/agentready-org/standard/blob/main/spec/spec.md)

### [AR-ACT-04](https://agentreadychecklist.com/checklist/ar-act-04/): MCP server cardrecipe

Place the card at /.well-known/mcp/server-card.json the same way the AR-FIND-04 recipe places the AI Catalog (/platforms/nextjs-app-router/#ar-find-04), and give it a serverInfo.name that matches your MCP server. Publish it only if you run an MCP server.

Generic step from the AgentReady specification; not platform-specific. [github.com/agentready-org/standard/blob/main/spec/spec.md](https://github.com/agentready-org/standard/blob/main/spec/spec.md)

### [AR-ACT-05](https://agentreadychecklist.com/checklist/ar-act-05/): MCP Apps viewrecipe

An MCP Apps view is a ui:// resource listed by resources/list on your MCP server. Add it to the server built for AR-ACT-03 (/platforms/nextjs-app-router/#ar-act-03); the platform adds no step of its own. Publish it only if the product has a UI to hand back.

Generic step from the AgentReady specification; not platform-specific. [github.com/agentready-org/standard/blob/main/spec/spec.md](https://github.com/agentready-org/standard/blob/main/spec/spec.md)

### [AR-ACT-06](https://agentreadychecklist.com/checklist/ar-act-06/): SDKs and a CLIrecipe

Publish the SDK and the CLI from the product's own repository to npm or PyPI; the website platform is not involved. Then show the install command and a first call on a page of your own site so that agents reading the site find them. Verify with curl -s https://registry.npmjs.org/<cli-name>/latest.

Generic step from the AgentReady specification; not platform-specific. [github.com/agentready-org/standard/blob/main/spec/spec.md](https://github.com/agentready-org/standard/blob/main/spec/spec.md)

### [AR-ACT-07](https://agentreadychecklist.com/checklist/ar-act-07/): WebMCP toolsrecipe

In a "use client" component call document.modelContext?.registerTool({ name, description, inputSchema, execute }) inside useEffect, or load a script with next/script strategy="afterInteractive". Feature-detect first.

Read 2026-11-04. [nextjs.org/docs/app/api-reference/components/script](https://nextjs.org/docs/app/api-reference/components/script)

### [AR-ACT-08](https://agentreadychecklist.com/checklist/ar-act-08/): Agent paymentsrecipe

Add a Route Handler at app/paid/route.ts that exports GET and returns HTTP 402 with a payment payload on the paid path only (x402 or MPP), or a checkout handler. Put no CAPTCHA in front of a verified agent.

Derived from Next.js's documentation read on 2026-11-04. [nextjs.org/docs/app/api-reference/file-conventions/route](https://nextjs.org/docs/app/api-reference/file-conventions/route) and [github.com/agentready-org/standard/blob/main/spec/spec.md](https://github.com/agentready-org/standard/blob/main/spec/spec.md)

### [AR-ACT-09](https://agentreadychecklist.com/checklist/ar-act-09/): NLWeb /ask endpointrecipe

Add a Route Handler at app/ask/route.ts that exports GET and returns schema.org-shaped JSON for the query parameter. Mirror the same ask tool over MCP.

Derived from Next.js's documentation read on 2026-11-04. [nextjs.org/docs/app/api-reference/file-conventions/route](https://nextjs.org/docs/app/api-reference/file-conventions/route) and [github.com/agentready-org/standard/blob/main/spec/spec.md](https://github.com/agentready-org/standard/blob/main/spec/spec.md)

### [AR-ACT-10](https://agentreadychecklist.com/checklist/ar-act-10/): An MCP server or a CLIrecipe

A CLI meets AR-ACT-10 on any platform: publish it as described in the AR-ACT-06 recipe (/platforms/nextjs-app-router/#ar-act-06). An MCP server also meets it; how Next.js hosts one is in the AR-ACT-03 recipe (/platforms/nextjs-app-router/#ar-act-03). Do not ship an empty surface to tick the box.

Generic step from the AgentReady specification; not platform-specific. [github.com/agentready-org/standard/blob/main/spec/spec.md](https://github.com/agentready-org/standard/blob/main/spec/spec.md)

### [CF-CONTENT-SIGNALS](https://agentreadychecklist.com/checklist/cf-content-signals/): Content-Signal lineworkaround

MetadataRoute.Robots has no Content-Signal field. Serve robots.txt from public/robots.txt (delete app/robots.ts) or from app/robots.txt/route.ts returning text with a Content-Signal: ai-train=no, search=yes, ai-input=yes line.

Read 2026-11-04. [nextjs.org/docs/app/api-reference/file-conventions/route](https://nextjs.org/docs/app/api-reference/file-conventions/route)

### [CF-MARKDOWN-NEGOTIATION](https://agentreadychecklist.com/checklist/cf-markdown-negotiation/): Markdown by Acceptrecipe

In proxy.ts check request.headers.get("accept")?.includes("text/markdown") and return NextResponse.rewrite(new URL(pathname + ".md", request.url)) to a Route Handler that serves the markdown twin.

Read 2026-11-04. [nextjs.org/docs/app/api-reference/file-conventions/proxy](https://nextjs.org/docs/app/api-reference/file-conventions/proxy)

### [CF-PAY-PER-CRAWL](https://agentreadychecklist.com/checklist/cf-pay-per-crawl/): Pay per crawl, HTTP 402workaround

Pay per crawl is a feature of Cloudflare AI Crawl Control, set per Cloudflare zone and in closed beta on 2026-11-04, so Next.js does not set it, and a crawler is answered 402 only on a zone that has it. The documentation read lists no built-in feature for this row. Workaround: put the domain on a Cloudflare zone, where Next.js allows a proxy or custom DNS in front, and set the price there. Test with curl -A "GPTBot/1.0".

Derived from Cloudflare's pay per crawl documentation read on 2026-11-04. [developers.cloudflare.com/ai-crawl-control/features/pay-per-crawl/what-is-pay-per-crawl/](https://developers.cloudflare.com/ai-crawl-control/features/pay-per-crawl/what-is-pay-per-crawl/) and [developers.cloudflare.com/ai-crawl-control/features/pay-per-crawl/what-is-pay-per-crawl/](https://developers.cloudflare.com/ai-crawl-control/features/pay-per-crawl/what-is-pay-per-crawl/)

### [CF-OAUTH-DISCOVERY](https://agentreadychecklist.com/checklist/cf-oauth-discovery/): OAuth discovery filesrecipe

Return the RFC 8414 JSON (issuer, authorization\_endpoint, token\_endpoint, jwks\_uri) from app/.well-known/oauth-authorization-server/route.ts.

Read 2026-11-04. [nextjs.org/docs/app/api-reference/file-conventions/route](https://nextjs.org/docs/app/api-reference/file-conventions/route)

### [CF-AGENT-SKILLS](https://agentreadychecklist.com/checklist/cf-agent-skills/): Agent Skills indexrecipe

Place public/.well-known/agent-skills/index.json with $schema, and a skills array of { name, type, description, url, digest }.

Read 2026-11-04. [nextjs.org/docs/app/api-reference/file-conventions/public-folder](https://nextjs.org/docs/app/api-reference/file-conventions/public-folder)

### [VERCEL-NEGOTIATION-HEADERS](https://agentreadychecklist.com/checklist/vercel-negotiation-headers/): Markdown headersrecipe

In the markdown Route Handler return headers { "Content-Type": "text/markdown; charset=utf-8", "Vary": "Accept" }; add Vary: Accept to the HTML route as well via next.config.js headers().

Read 2026-11-04. [nextjs.org/docs/app/api-reference/config/next-config-js/headers](https://nextjs.org/docs/app/api-reference/config/next-config-js/headers)

### [VERCEL-ROBOTS-EXCLUSIONS](https://agentreadychecklist.com/checklist/vercel-robots-exclusions/): Robots exclusionsrecipe

Open the robots.txt that Next.js serves for your site and read every Disallow; each one must have a reason you can state. How the file is produced here: app/robots.ts returning MetadataRoute.Robots generates /robots.txt.

Derived from Next.js's documentation read on 2026-11-04. [nextjs.org/docs/app/api-reference/file-conventions/metadata/robots](https://nextjs.org/docs/app/api-reference/file-conventions/metadata/robots) and [vercel.com/kb/guide/make-your-site-readable-by-ai-agents](https://vercel.com/kb/guide/make-your-site-readable-by-ai-agents)

## Vendors on this platform

-   [Medusa](https://agentreadychecklist.com/vendors/medusa/)Commerce platform, 0 of 3 checklist rows read met by default
-   [Next.js](https://agentreadychecklist.com/vendors/nextjs/)Framework, 2 of 11 checklist rows read met by default
-   [Payload](https://agentreadychecklist.com/vendors/payload/)CMS, 0 of 3 checklist rows read met by default
-   [Vercel](https://agentreadychecklist.com/vendors/vercel/)Host or CDN, 2 of 5 checklist rows read met by default

## Sources

-   [ora.ai/api/checks, contract 1.38.0](https://ora.ai/api/checks?utm_source=agentreadychecklist.com&utm_medium=referral&utm_campaign=platform)read 2026-11-05
-   [registry.npmjs.org/ax, the ax README](https://registry.npmjs.org/ax)read 2026-11-05
-   [nextjs.org/docs/app/api-reference/file-conventions/metadata/robots](https://nextjs.org/docs/app/api-reference/file-conventions/metadata/robots)read 2026-11-04
-   [nextjs.org/docs/app/api-reference/file-conventions/metadata/sitemap](https://nextjs.org/docs/app/api-reference/file-conventions/metadata/sitemap)read 2026-11-04
-   [nextjs.org/docs/app/guides/json-ld](https://nextjs.org/docs/app/guides/json-ld)read 2026-11-04
-   [nextjs.org/docs/app/api-reference/functions/not-found](https://nextjs.org/docs/app/api-reference/functions/not-found)read 2026-11-04
-   [nextjs.org/docs/app/api-reference/config/next-config-js/headers](https://nextjs.org/docs/app/api-reference/config/next-config-js/headers)read 2026-11-04
-   [nextjs.org/docs/app/api-reference/file-conventions/proxy](https://nextjs.org/docs/app/api-reference/file-conventions/proxy)read 2026-11-04
-   [nextjs.org/docs/app/api-reference/file-conventions/route](https://nextjs.org/docs/app/api-reference/file-conventions/route)read 2026-11-04
-   [nextjs.org/docs/app/api-reference/file-conventions/public-folder](https://nextjs.org/docs/app/api-reference/file-conventions/public-folder)read 2026-11-04
-   [github.com/agentready-org/standard/blob/main/spec/spec.md](https://github.com/agentready-org/standard/blob/main/spec/spec.md)read 2026-11-04
-   [nextjs.org/docs/app/getting-started/server-and-client-components](https://nextjs.org/docs/app/getting-started/server-and-client-components)read 2026-11-04
-   [nextjs.org/docs/app/guides/mdx](https://nextjs.org/docs/app/guides/mdx)read 2026-11-04
-   [nextjs.org/docs/app/api-reference/functions/generate-metadata](https://nextjs.org/docs/app/api-reference/functions/generate-metadata)read 2026-11-04
-   [nextjs.org/docs/app/api-reference/components/script](https://nextjs.org/docs/app/api-reference/components/script)read 2026-11-04
-   [developers.cloudflare.com/ai-crawl-control/features/pay-per-crawl/what-is-pay-per-crawl/](https://developers.cloudflare.com/ai-crawl-control/features/pay-per-crawl/what-is-pay-per-crawl/)read 2026-11-04
-   [vercel.com/kb/guide/make-your-site-readable-by-ai-agents](https://vercel.com/kb/guide/make-your-site-readable-by-ai-agents)read 2026-11-04

Edition

Data

2026-11-04

Reviewed

2026-11-05

Spec

AgentReady v2.0, 273d2d7

Crawl

13,071 rows, 2026-11-04

Ora

132 checks, contract 1.38.0, 2026-11-05

Verify with Ora

The scanner this site recommends for the whole checklist. 132 checks, a score out of 100, no account.

`npx ax@0.10 audit <url> --min-score <n>`

[Why Ora, and its limits](https://agentreadychecklist.com/verify-with-ora/)

Method

-   [How rows, commands and rates are made](https://agentreadychecklist.com/method/)
-   [How an Ora check is matched to a row](https://agentreadychecklist.com/checklist/ora-checks/)
-   [Pass rates by rank band](https://agentreadychecklist.com/data/by-rank/)

Sources and read dates sit at the foot of the page.

Last reviewed 2026-11-05. AgentReady v2.0, read 2026-11-04.
