AgentPass

How ARI-100 is computed

One fetch per surface, no browser, no model in the scoring path. The same response always produces the same score, which is what makes the number usable as a regression test.

By · Updated · ARI-100 v1.0

Domain weights

Eight domains, weights fixed at 100 in total. A domain's score is the weighted share of points it earned over the checks that applied to it.

Weight and check count per domain. Checks per domain vary in weight from 1 to 5.
DomainWeightChecksScored on
Reachability & Access2015robots.txt policy, live reachability for 32 named AI crawlers, indexability, interstitial and edge-block detection.
Render & Delivery1011Server-rendered text before scripts run, status codes, soft-404 detection, TTFB, payload weight and text-to-markup ratio.
Structure & Semantics1214Title, description, a single H1, heading order, self-canonical, language, social tags and control names.
Structured Data1212JSON-LD that parses, page and entity types, sameAs identity, dates, breadcrumbs and price-vs-page agreement.
Discovery Files1418Sitemap, llms.txt shape, llms-full.txt, Markdown mirrors, Accept negotiation, Link headers and the AGENTS.md build guide.
Agent Interfaces1427OpenAPI, RFC 9727 catalog, RFC 9728 and RFC 8414 metadata, MCP card plus a live MCP handshake, A2A and error shapes.
Operability & Commerce1013Search, cart form semantics, variant controls, price in server HTML, guest checkout and policy links.
Trust & Authority810Author, visible dates, outbound sources, about/contact reachability, legal name, HTTPS hygiene and broken links.

Check states

Every check resolves to exactly one state. Points are fixed per state, never tuned per site.

State, points and what it does to the denominator.
StatePointsMeaning
pass1.0The required artefact exists and satisfies the rule on the live response.
partial0.5Present but incomplete, or reached through a redirect, or declared without being verifiable.
fail0Missing, malformed, or contradicted by the live response.
inconclusivenullThe probe could not decide; the check leaves the domain denominator.
not_applicablenullGated out for this site shape; the check leaves the domain denominator too.

inconclusive exists so a timeout or an unverifiable crawler never reads as a failure. not_applicable exists so a site without a product page is not scored on product markup.

Applicability gating

Two gates change which checks count. The commerce gate applies when the site shows no product surface, no cart path and no product markup: every commerce check except site search becomes not applicable. The interfaces gate applies when there is no development surface at all — no OpenAPI, no MCP card, no API link, nothing about an API in robots.txt — and the whole interfaces domain leaves the denominator rather than scoring zero.

Gating shrinks denominators; it never adds points. A five-page brochure site can reach 100 without a checkout, and a shop with a broken cart cannot.

The emerging-signal bonus

Nine optional signals — an MCP registration, an A2A card, an interface index, a machine payment profile, DNS discovery, a skills index, Markdown negotiation, a full-text mirror — are scored outside the eight domains. Each one that passes adds a point, and the sum is capped at 5. The cap keeps a site from buying a grade with periphery: five bonus points move a 90 to 95, not an 70 to 100.

Grade bands and levels

Grade thresholds. A+ additionally requires an accessibility sub-score of 80 or better.
MinimumGradeLabel
95A+Exemplary
90AAgent-native
75BAgent-aware
60CPartly readable
40DLargely invisible
0FUnreadable
Levels are a ladder of capability, not a restatement of the score.
LevelNameRequires
L0Hiddenrobots.txt and a sitemap
L1CrawlableAI crawlers named with a deliberate policy
L2Agent-readableMarkdown on request and discovery files
L3Agent-discoverablean index of machine interfaces
L4Agent-operablea callable interface: MCP, A2A or API
L5Agent-commercea checkout an agent can complete

Levels are computed from specific checks, not from the total: a site can score 88 and sit at L3 because it has no callable interface, or score 74 and sit at L5 because it has a checkout an agent can finish.

Access and accessibility sub-scores

The access score is the weighted share of testable crawlers that were allowed: a crawler that could not be tested leaves the denominator, a crawler blocked by robots.txt or an edge rule counts against it. The accessibility sub-score is the share of applicable static checks on the home page — image alternatives, control names, heading order, landmark structure, viewport and language. It is a floor test, not an audit.

Stated limits

Read a clean score as "no affordance is obviously missing", never as "an agent understood the page".

Reproducing a scan

Every report is available as JSON and Markdown, and the same engine is reachable from a coding agent over MCP. To reproduce by hand:

curl -s "https://agentpass.dev/api/scan?url=https://example.com" | tee report.json
curl -s https://agentpass.dev/report/example.com.md

Engine version 1.0 · 120 checks · 9 bonus signals · report cache TTL 6 hours.