---
title: "Agent ready checklist: Remix and React Router | Agent Ready Checklist"
description: "The agent readiness checklist for Remix and React Router. All 31 rows, with a verify command for each. The first step of its recipe sits beside each row."
canonical: https://agentreadychecklist.com/platform/remix-react-router/checklist
site: "Agent Ready Checklist"
last_updated: 2026-11-05
section: "Platforms"
---

# Agent ready checklist: Remix and React Router | Agent Ready Checklist

> The agent readiness checklist for Remix and React Router. All 31 rows, with a verify command for each. The first step of its recipe sits beside each row.

Source: https://agentreadychecklist.com/platform/remix-react-router/checklist
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).

# Agent ready checklist: Remix and React Router

The checklist for Remix and React Router (framework mode): all 31 rows, with the first step of the recipe where one exists. Versions were read on 2026-11-04; the verify command sits beside each row. The first recipe, for AR-FIND-01, begins: Write public/robots.txt with "User-agent: \*" and "Allow: /", or return it from a robots\[.\]txt resource route.

## Verify with Ora

Remix and React Router (framework mode) has a direct recipe for 29 rows, and Ora's catalogue (read 2026-11-05) names a matching check for 25 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/).

## All 31 rows on Remix and React Router

| Identifier | Level | Layer | What it asks | Verify command | On Remix and React Router (framework mode) |
| --- | --- | --- | --- | --- | --- |
| AR-FIND-01 | MUST | Find | Do not block agents | verify.sh --only=reach-as-agent,robots-verdicts | recipe: Write public/robots.txt with "User-agent: *" and "Allow: /", or return it from a… |
| AR-FIND-02 | SHOULD | Find | Answers on one first-party page | manual check, see the page | recipe: Publish each answer once, as a page on your own domain. |
| AR-FIND-03 | SHOULD | Find | Sitemap listed in robots.txt | verify.sh --only=sitemap-listed | recipe: Add app/routes/sitemap[.]xml.ts with export async function loader() { return new… |
| AR-FIND-04 | MAY | Find | AI Catalog at .well-known | verify.sh --only=ai-catalog | recipe: Add a resource route for /.well-known/ai-catalog.json whose loader returns… |
| AR-READ-01 | MUST | Read | Answer in the initial HTML | verify.sh --only=initial-html | recipe: Keep ssr: true in react-router.config.ts (the default) and load data in loader, not… |
| AR-READ-02 | MUST | Read | Real HTTP status codes | verify.sh --only=status-codes | recipe: In a loader throw data("Not Found", { status: 404 }) when the record is missing; add a… |
| AR-READ-03 | SHOULD | Read | Home page with real links | verify.sh --only=initial-html | recipe: Use Link from react-router on the home page; it renders a href anchors in the server HTML. |
| AR-READ-04 | SHOULD | Read | Docs that answer agent tasks | manual check, see the page | recipe: For each of your top five agent tasks, write a page that holds the steps as text, in… |
| AR-READ-05 | SHOULD | Read | Fenced, language-tagged code | verify.sh --only=code-fences | workaround: No Markdown pipeline in the framework. |
| AR-READ-06 | SHOULD | Read | Link the discovery files | verify.sh --only=llms-linked,openapi | recipe: Export links() from root.tsx returning [{ rel: "alternate", type: "text/markdown", href:… |
| AR-READ-07 | SHOULD | Read | Ship llms.txt | verify.sh --only=llms-linked | recipe: Add app/routes/llms[.]txt.ts with a loader returning new Response(text, { headers: {… |
| AR-READ-08 | SHOULD | Read | JSON-LD on key pages | verify.sh --only=json-ld | recipe: Render <script type="application/ld+json" dangerouslySetInnerHTML={{ __html:… |
| AR-READ-09 | MAY | Read | Advertise a markdown mirror | verify.sh --only=markdown-negotiation | recipe: Add the alternate link via links(), or return a Link header from the route headers export. |
| AR-READ-11 | SHOULD | Read | Pricing as first-party HTML | verify.sh --only=initial-html | recipe: Render the pricing route server side with prices from its loader, as HTML text. |
| AR-ACT-01 | SHOULD | Act | Auth an agent can finish | verify.sh --only=oauth-metadata | recipe: Run an authorization server, or an identity provider, that issues scoped tokens, and serve… |
| AR-ACT-02 | SHOULD | Act | OpenAPI contract | verify.sh --only=openapi | recipe: Place openapi.json in public/ or return it from a resource route loader with… |
| AR-ACT-03 | SHOULD | Act | MCP over Streamable HTTP | verify.sh --only=mcp-or-cli | recipe: Add a resource route at /mcp with an action that returns the MCP server over Streamable… |
| AR-ACT-04 | MAY | Act | MCP server card | verify.sh --only=mcp-or-cli | recipe: Place the card at /.well-known/mcp/server-card.json the same way the AR-FIND-04 recipe… |
| AR-ACT-05 | MAY | Act | MCP Apps view | manual check, see the page | recipe: An MCP Apps view is a ui:// resource listed by resources/list on your MCP server. |
| AR-ACT-06 | SHOULD | Act | SDKs and a CLI | verify.sh --only=mcp-or-cli | recipe: Publish the SDK and the CLI from the product's own repository to npm or PyPI; the website… |
| AR-ACT-07 | SHOULD | Act | WebMCP tools | verify.sh --only=webmcp | recipe: In a route component register tools in useEffect after feature-detecting… |
| AR-ACT-08 | MAY | Act | Agent payments | curl -s -o /dev/null -w "%{http_code}" <paid-endpoint> | recipe: Add a resource route at /paid with a loader that returns HTTP 402 with a payment payload… |
| AR-ACT-09 | MAY | Act | NLWeb /ask endpoint | curl -s "<origin>/ask?query=pricing" \| jq -e "." | recipe: Add a resource route at /ask with a loader that returns schema.org-shaped JSON for the… |
| AR-ACT-10 | MUST | Act | An MCP server or a CLI | verify.sh --only=mcp-or-cli | recipe: A CLI meets AR-ACT-10 on any platform: publish it as described in the AR-ACT-06 recipe… |
| CF-CONTENT-SIGNALS | CLOUDFLARE | Find | Content-Signal line | verify.sh --only=robots-verdicts | recipe: Add a Content-Signal line under User-agent: * in public/robots.txt or in the robots… |
| CF-PAY-PER-CRAWL | CLOUDFLARE | Find | Pay per crawl, HTTP 402 | curl -s -o /dev/null -w "%{http_code}" -A "GPTBot/1.0" <url> | workaround: Pay per crawl is a feature of Cloudflare AI Crawl Control, set per Cloudflare zone and in… |
| VERCEL-ROBOTS-EXCLUSIONS | VERCEL | Find | Robots exclusions | verify.sh --only=robots-verdicts | recipe: Open the robots.txt that Remix and React Router serves for your site and read every… |
| CF-MARKDOWN-NEGOTIATION | CLOUDFLARE | Read | Markdown by Accept | verify.sh --only=markdown-negotiation | recipe: In server middleware check request.headers.get("accept") for text/markdown and return a… |
| VERCEL-NEGOTIATION-HEADERS | VERCEL | Read | Markdown headers | verify.sh --only=markdown-negotiation | recipe: Set Content-Type: text/markdown; charset=utf-8 and Vary: Accept on the markdown response;… |
| CF-OAUTH-DISCOVERY | CLOUDFLARE | Act | OAuth discovery files | verify.sh --only=oauth-metadata | recipe: Return RFC 8414 JSON from a resource route at /.well-known/oauth-authorization-server. |
| CF-AGENT-SKILLS | CLOUDFLARE | Act | Agent Skills index | verify.sh --only=agent-skills | recipe: Place public/.well-known/agent-skills/index.json or return it from a resource route. |

## Sources

-   [ora.ai/api/checks, contract 1.38.0](https://ora.ai/api/checks?utm_source=agentreadychecklist.com&utm_medium=referral&utm_campaign=platform-checklist)read 2026-11-05
-   [registry.npmjs.org/ax, the ax README](https://registry.npmjs.org/ax)read 2026-11-05
-   [reactrouter.com/how-to/resource-routes](https://reactrouter.com/how-to/resource-routes)read 2026-11-04
-   [reactrouter.com/start/framework/route-module](https://reactrouter.com/start/framework/route-module)read 2026-11-04
-   [reactrouter.com/how-to/status](https://reactrouter.com/how-to/status)read 2026-11-04
-   [reactrouter.com/how-to/headers](https://reactrouter.com/how-to/headers)read 2026-11-04
-   [reactrouter.com/how-to/middleware](https://reactrouter.com/how-to/middleware)read 2026-11-04

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