# Agent readiness > Score how ready a storefront or API is to sell to AI agents. Point it at a > domain and it probes what an agent would actually encounter — then runs a real > buying agent against the site and grades what happened. This is a diagnostic, not a product you buy. Every stored report is readable with no credential at all, as are the rubric, this file and the verification recipe; starting a scan, minting a share link and listing a domain's runs need one. The exact boundary and handshake are published at https://zeroclick.ai/readiness/auth.md, which is readable without one. ## What it measures Five weighted pillars: can an agent get in (access), understand what is for sale (legibility), pay and provision without a human (transactability), decide the site is safe to transact with (trust), and actually finish the job (outcome). The full rubric — every check, its points, and what it looks for — is published and generated from the same file the scorer loads, so it cannot drift from the implementation. - [The rubric as markdown](https://zeroclick.ai/readiness/spec.md): every scored check, ordered by how much it moves the grade — start here if you want to know what to implement - [Machine-readable rubric](https://zeroclick.ai/readiness/api/v1/spec): the same content as JSON - [OpenAPI description](https://zeroclick.ai/readiness/openapi.json): every endpoint below, with its query parameters and response content type - [How to authenticate](https://zeroclick.ai/readiness/auth.md): the accepted credentials, and everything readable without one - [How to verify a run](https://zeroclick.ai/readiness/verify.md): the signature and hash-chain mechanics, including the canonicalization rule ## API Every route below is free. The only route that charges is `POST /api/v1/scans`, reached through the signed ZeroClick payment proxy (see /auth.md). Slow work streams as Server-Sent Events. - `GET /api/v1/scan/stream?url=` — static probes, streamed as Server-Sent Events. Returns a scored report in seconds. Read-only: it fetches published surfaces and records payment hints as diagnostics; it never signs or settles anything. - `GET /api/v1/agent?url=` — the deep scan. Runs a real buying agent against the site, grades the transcript into the outcome pillar, asks a three-vendor trust panel whether it would proceed, and records a correlated 402 when the agent selects and probes a documented purchase operation. The current arm cannot authorize payment, retry with payment or verify delivery. Slow and expensive; streamed. Every scan collects fresh — there is no observation cache, so `&refresh=1` is accepted and does nothing. `report.provenance` is the authoritative record of what each stage cost. The stream's final `report` event carries `runId` and `reportUrl`: **use `reportUrl`** — it is the public, shareable permalink. A scan is started on the operator surface (a tailnet host), so a URL built from wherever you connected is one only the tailnet can open. - `GET /api/v1/spec` — the published rubric as JSON. Public. - `GET /api/v1/rubric` — the rubric version, config hash and pillar weights. Public. - `GET /api/v1/runs/` — a stored report, immutable, with the rubric version and config hash that produced it, plus `reportUrl`: the public permalink to share. Public, as are its `/events`, `/session`, `/judge`, `/frames` and `/peers`: the id is the capability. - `GET /api/v1/runs//markdown` (also `/r/.md`) — the report as portable Markdown, with the evidence chain root. Public. - `GET /api/v1/domains//runs` — the append-only, hash-linked index of every stored run for a domain. Credentialed: this one enumerates. ## Reading a score Scores compare only within one config hash. Changing a weight, a point value or the set of checks produces a new hash and a new ruler, and two numbers from two hashes are two different measurements. Points normalise within a pillar before weighting, so do not sum the points column across pillars — the heaviest pillar carries the fewest raw points. A check that could not be evaluated shrinks the denominator rather than scoring zero. A site is never marked down for evidence the scanner failed to gather. Reused evidence is still re-scored under today's rubric: a replayed static report carries the current `rubricVersion` with the ruler it was collected under beside it as `originRubricVersion`. Evidence is cached; interpretation never is.