agent-readiness-scan skill gives your GEO audit an independent external benchmark. It connects to Cloudflare’s public isitagentready.com scanner, runs a corroboration matrix of curl probes alongside the official API, captures the 0 to 100 score from the web UI via Playwright, and converts everything into a fixed-schema CSV you can track across re-audits. The delta between audit runs (not the first number) is the proof that your fixes are working.
The 0 to 100 score is only available in the
isitagentready.com web UI, rendered in an SVG dial. The JSON API returns detailed per-check findings but not the composite score. The Playwright capture step is not optional if you want to track deltas.How It Works
The scan runs in two scripts that work together:1
run_scan.sh: Official API + Corroboration Matrix
run_scan.sh POSTs to the isitagentready.com API and then runs a series of curl probes to corroborate the findings independently:The script writes all raw artefacts to the output directory:
iar_scan.json, homepage_headers.txt, accept_markdown_headers.txt, robots.txt, supplementary.json, and more.2
Playwright: Capture the 0 to 100 Score
After the API scan completes, navigate to A fresh “Last scanned” timestamp on the page confirms the results are rendered. Save the page snapshot to your output directory as
https://isitagentready.com/<your-domain> in a Playwright-controlled browser and read the score from the SVG dial:isitagentready_<client-slug>_snapshot.txt.3
scan_to_csv.py: Convert to Fixed-Schema CSV
Pass the scan JSON and the captured score to The script maps Cloudflare’s check keys to fixed display names and emits a CSV with consistent category headers across every client and every re-audit.
scan_to_csv.py:Using from Claude Code
Ask for it in plain language from your Claude Code session:Output CSV Schema
The CSV uses a fixed schema so results stay comparable across clients and re-audits:
The first data row is always the OVERALL row:
- Discoverability
- Content Accessibility
- Bot Access Control
- API Auth MCP & Skill Discovery
- Commerce (marked
NOT CHECKEDunlessisCommerceis true)
run_scan.sh curl probes, not scored by Cloudflare):
llms.txt,PRESENTorABSENTllms-full.txt,PRESENTorABSENT/.well-known/security.txt,PRESENTorABSENT
Common Mistakes to Avoid
Reporting only the Level, not the 0 to 100 score
Reporting only the Level, not the 0 to 100 score
The Cloudflare level name (e.g., “Discoverable”) does not encode the numeric score precisely enough to track deltas. Always capture the 0 to 100 value from the web UI dial via Playwright. A site improving from 21 to 43 after fixes is the evidence your client wants to see.
Using WebFetch to scrape isitagentready.com
Using WebFetch to scrape isitagentready.com
The site is a JavaScript app, a WebFetch or plain curl returns only an empty shell with no results. Use the official
POST https://isitagentready.com/api/scan API for check data, and Playwright for the score dial.Renaming or inventing category names
Renaming or inventing category names
Cross-client comparability depends on exact category labels. Use the fixed names in
scan_to_csv.py (e.g., API Auth MCP & Skill Discovery, not Protocol Discovery). The scanner adds new checks over time, emit whatever .checks returns, mapped through the fixed schema.Placing This in the THL Method
The agent-readiness scan is the second layer of the three-layer THL GEO Method, sitting between the dimensionalgeo-audit and the client deliverable from audit-report-kit. Its purpose is specifically to provide a score that your own dimensional audit cannot give itself, an independent external benchmark from Cloudflare’s infrastructure. Record both scores (your dimensional composite and the Cloudflare 0 to 100), and on every re-audit, track the delta on each.