# Agent readiness, measured from the outside

> Find out whether AI agents can read your site. AgenticWebScore runs 61 checks from the outside and gives a fix for every failure.

- Source: /
- Site: AgenticWebScore
- Language: English

---
AgenticWebScore measures agent readiness: how well a website serves an agent that has no browser. It fetches a public domain from the outside, the way an agent would. It scores what it observed against a versioned rubric of 61 checks in 5 dimensions. Every failed check comes with a fix.

Lighthouse runs in a browser. This scanner uses a plain HTTP client, and it gives no score to a site it cannot measure.

## The problem

The web was built for people with screens. An agent fails on it in ways a browser never shows:

| Failure | The agent's experience |
| --- | --- |
| No /llms.txt, no /AGENTS.md | Must crawl everything to learn anything |
| Client-side rendering only | 200 OK and almost no readable text |
| SPA wildcard fallback | 200 OK plus HTML for /llms.txt: silent, confident, wrong |
| Parked domain | Every path returns 200 with a parking page |
| No API contract | The agent guesses endpoints and produces broken calls |
| No bot identity | The site cannot tell a signed agent from a scraper |
| No agent payment declaration | The agent finds no declared way to pay |
| IP-level blocking | Nobody can measure the site at all |

## The dimensions

| Dimension | Weight | Question |
| --- | --- | --- |
| Protocol Discovery | 25% | Do you expose your service as a callable tool and an authorisable API? |
| Content Accessibility | 22% | Is your content genuinely readable as markdown, semantic structure and structured data? |
| Discoverability | 20% | Can an agent find you, reach the right page and understand what you offer? |
| Bot Access Control | 18% | Can you tell agent traffic apart by identity? |
| Commerce Protocols | 15% (conditional) | Which standard do you accept agent-initiated transactions over? |

> Commerce is conditional: its checks leave the denominator unless the site shows a commercial signal. A site with no commercial signal is not penalised for having no payment standard.

## How it works

1. Fetch public paths only: a fixed list of 103, plus a capped set of URLs the site's own documents name. Each response is read to at most 3 MB, and no JavaScript is executed.
2. Run the 61 checks against what was fetched. No check makes a request of its own.
3. Weight and combine. Tier pools of 80 / 20 / up to 5 points produce a score, a grade, and a readiness level.
4. Fingerprint the result with SHA-256. The fingerprint binds the host, the rubric version, and each check's id, status, rounded points, and counted flag. /verify recomputes the score, grade, and level from those and reports a mismatch as tamper evidence. The detail and evidence text and the site profile are not bound.

The commercial signal and the out-of-scope or not-measured label are not bound either, so only an edit that the bound outcomes contradict is caught.

## This site's own surfaces

This site publishes the surfaces below. Each is served now and generated from one content source. It does not pass every check in its own rubric.

- `/llms.txt` — llms.txt: Structured summary for language models

- `/llms-full.txt` — llms-full.txt: Every page in the page registry and every learn article, in one markdown document

- `/AGENTS.md` — AGENTS.md: Build, test and contribution contract for coding agents

- `/sitemap.md` — sitemap.md: Every page as a markdown link list

- `/sitemap.xml` — sitemap.xml: Machine sitemap with lastmod

- `/index.json` — index.json: Typed index of every page and surface

- `/rubric.json` — rubric.json: The complete rubric, machine-readable

- `/robots.txt` — robots.txt: Named AI crawler rules plus Content-Signal

- `/ai.txt` — ai.txt: Plain-language access declaration

- `/auth.md` — auth.md: How an agent authenticates (and what is public)

- `/ai-policy` — AI policy: Crawling, training, commercial use, contact

- `/bot` — Agent policy: Bot identity, rates and contact

- `/privacy` — Privacy: What is stored, how long it stays, and what is not collected

- `/terms` — Terms of use: What a measurement is, what the API allows, and what the badge licence grants

- `/abuse` — Abuse and removal: What the scanner requests, how to block it, and how to request removal

- `/.well-known/agent-permissions.json` — agent-permissions.json: Allow, deny and human-approval rules

- `/.well-known/mcp/server-card.json` — MCP server card: A declaration only: the planned transport and tools are recorded in x-planned fields, no /mcp endpoint is running, and the scanner reads the card as partial rather than as a server an agent can call

- `/.well-known/api-catalog` — api-catalog: RFC 9727 catalog of callable APIs. Its targets are absolute URLs on the canonical origin, so a scan of any other host reports them as declared rather than observed, and the scanner scores it partial

- `/openapi.json` — openapi.json: OpenAPI description of the API endpoints that answer today

- `/.well-known/agent-skills/index.json` — agent-skills index: 60 publishable skill packs covering all 61 checks

- `/.well-known/security.txt` — security.txt: RFC 9116 vulnerability disclosure

- `/.well-known/dns-aid.json` — dns-aid.json: The DNS-AID records this domain declares, documented in this file and not yet in the zone

## Questions

### What is agent readiness?

It is whether an autonomous agent can find your site, read it, trust it, and act on it without a human in the loop. That is narrower than SEO and different from AI visibility: it measures the machine-facing contract, not your ranking or your brand mentions.

### How is this different from Lighthouse?

Lighthouse runs in a browser and audits one page at a time, its agentic browsing audits included. This scanner uses a plain HTTP client and no browser.

The scanner requests a fixed list of 103 paths, plus a capped set of URLs the site's documents name. It scores what it observed against a published rubric and publishes a record with a fingerprint. A site can use both.

### Why does a blocked site get no score instead of a low one?

A site that returns 403 or 429 to every automated client has told us nothing about itself. It has told us something about our vantage point. So the result is no score, with an explanation, rather than a number.

### Will it tell me to fix things that do not apply to my site?

No. The scanner decides what kind of site it is looking at before it scores anything. Checks that apply only to other kinds of site are reported as out of scope, not as failures. If the site profile cannot be confirmed, those checks leave the denominator, and the report says so.

### Can I verify a score someone shows me?

Yes, within limits: every record carries a fingerprint. The fingerprint binds the host, the rubric version, and each check's id, status, rounded points, and counted flag. /verify recomputes the score, grade, and level from those and reports a mismatch as tamper evidence. The detail and evidence text and the site profile are not bound.

The commercial signal and the out-of-scope or not-measured label are not bound either, so only an edit that the bound outcomes contradict is caught. A record from an earlier rubric is reported as superseded, not recomputed.

## Current state

The rubric is published as `/rubric.json`, the surfaces above are served, and the scanner runs. This site's own score is read from its scan record, as any other site's is.

When a record of this site is stored, it is at `/aws/<host>` for this site's host, with a markdown copy at `/aws/<host>/status.md`. No score is published for this site without one.

## Scan, fix, re-scan

Every failed check comes with what the scanner observed and a fix to ship.

Ship the fixes, then press Re-scan now on your report. Entering your domain again within 6 hours opens the stored report instead.
