AgentProbe
Status

The Score is under development and nothing is scored yet. The weights described on this page are asserted rather than measured: they follow published evidence, but no experiment of ours has yet shown that changing an attribute changes what an engine can do. The validation study that would establish it is designed, costed, piloted and unrun.

Validating it is what the measurement programme is for. This page documents the model as it stands, in full, so that when a number does appear the thing that produced it was written down first — and so that the gap between what is specified and what is built is visible rather than implied.

AIGuardian scoring model v11 · 13 attributes · 4 dimensions · measured on the rendered document

One crawl,
two questions.

An AI system can read your site without being able to use it. Those are different capabilities, they fail for different reasons, and only one of them has evidence behind it today. So we score one and observe the other — and say which is which.

The split

Two kinds of agent want two different things.

Every page is examined twice, against two constructs. The distinction is not a matter of degree — a page can be excellent for one and poor for the other, and the fixes have almost nothing in common.

Information agents

Retrievability

Whether an engine can obtain and use the information on the page.
  • Can I fetch the content?
  • Is it there without executing JavaScript?
  • Can I tell what the page is about?
  • Does an extracted passage still make sense alone?

This is what search and answer engines do when they cite you. It is the construct the validation programme is built around, and the only one that produces a number.

13 attributes · 3 dimensions · 1 gate → a 0–100 Score
Action agents

Interface operability

Whether an agent can perceive, navigate and interact with the interface.
  • Can I identify the controls?
  • Do I know what they do?
  • Can I navigate without hovering?
  • Did the task actually complete?

These are measured on every page and reported alongside the Score. They carry no weight in the Score, because nothing yet demonstrates that changing them changes what an agent can do.

4 attributes · recorded → Observations, no weight
one crawlper page
static HTMLbefore JavaScript
rendered DOMafter JavaScript

Both documents are stored byte-exact for every page. Scoring v11 declares that its page-grain attributes are measured on the rendered document, and a page missing that document is unmeasurable rather than quietly measured on the other one.

The score

4 dimensions, 3 of them still asking questions.

The Score is a weighted composite over 4 dimensions. Some have handed weight back — attributes found to carry no information were removed, and the allocation they held was retired rather than redistributed. That distinction is the point: a reader can see how much of each dimension is doing work.

Governance & Agent Access
2 active, 70% retired
Semantic Clarity & Machine Readability
7 attributes, all active
RAG & Token Efficiency
4 active, 18% retired
Agentic Operability
0 attributes active
active — still asked of every siteretired — the question is no longer asked of anyone

Retired weight leaves the sum, not just the numerator

When an attribute is removed, its share is not written onto the survivors. If it were, you would meet a healthy-looking dimension with no way to learn that most of its allocation had been withdrawn. Retired weight leaves both numerator and denominator, so the dimension still spans 0–1 and no site is charged a constant it cannot influence. The percentages on the right are what each dimension is worth after the fully retired one leaves the denominator — which is why they do not match the weights the config declares.

The gate

One condition multiplies instead of contributing.

Share of OAI-SearchBot, ChatGPT-User, Claude-SearchBot, Claude-User and PerplexityBot permitted at /. These are the crawlers that decide whether an engine can find and cite the page. Training crawlers (GPTBot, ClaudeBot, CCBot, Bytespider, Google-Extended) are deliberately NOT counted here — blocking them has no effect on citation, and penalising it would score a commercial decision as a technical defect. See ADR 0006.

Blocking a retrieval crawler is not a weighted shortfall — the engine will never fetch the page, and its heading order and structured data become irrelevant. So it multiplies, per engine, with a floor of 0.25: a blocked origin is still read by people, still driven by an agent with a browser, and still fetched when someone points something at it directly.

openai
OAI-SearchBot
anthropic
Claude-SearchBot, Claude-User
perplexity
PerplexityBot
gemini
unmeasurable — no isolating directive

An engine with no parseable token is recorded as unmeasurable rather than open, and engines are averaged over the ones that could be measured. A site invisible to one engine and open to another is not “60% gated” — those are different facts about different products, and different fixes.

The action agent space

Well measured is not the same as validated.

Agentic Operability retired its whole allocation. Its measures are well defined, they vary widely across the population, and they are plainly relevant. They are Observations anyway, on the criterion that decides everything here: the construct they belong to has not been shown to predict the outcome it claims to predict. Nothing establishes that an agent fails more often on a div carrying a click handler than on a button — and a weight follows published evidence or it is not a weight.

interactive_accessible_name_coverage
observation

Controls carrying an accessible name

native_semantic_control_share
observation

Controls that are native elements

form_field_label_coverage
observation

Form fields carrying a label

nav_reachable_without_hover
observation

Navigation reachable without hover

The route back is an experiment, not an argument: Observation → experimental validation → Signal → evidence-backed weight. A page can be excellent for retrieval and poor to operate, so the two are never averaged.

What is measured

Every attribute, and what it costs to fix.

Governance & Agent Access

29.4% of the Score
cors_readable
0.15 · origin · trivial

Access-Control-Allow-Origin permits cross-origin reads.

sitemap_present
0.15 · origin · trivial

A sitemap is discoverable via robots.txt or a conventional path.

Semantic Clarity & Machine Readability

29.4% of the Score
heading_no_skipped_levels
0.2 · page · moderate

Share of heading transitions that descend by at most one level.

jsonld_present
0.15 · page · moderate

At least one syntactically valid JSON-LD block.

heading_single_h1
0.15 · page · moderate

Exactly one H1.

image_alt_coverage
0.15 · page · moderate

Share of content images carrying a non-empty alt. Anchored at 0.95 rather than 1.0 because decorative images correctly carry empty alt.

title_meta_present
0.15 · page · trivial

Both a non-empty <title> and a meta description.

jsonld_type_coverage
0.1 · page · moderate

Share of JSON-LD blocks declaring a recognised schema.org type (Product, FAQPage, Article, Organization, HowTo, BreadcrumbList).

text_to_code_ratio
0.1 · page · substantial

Visible text bytes over total HTML bytes.

RAG & Token Efficiency

41.2% of the Score
static_content_completeness
0.35 · page · architectural

Visible-text tokens in the static HTML over those in the rendered DOM. Low means the content exists only after JS execution and is invisible to every crawler that does not render — the delta that makes storing both Passes worthwhile. Deliberately built on visible text rather than extracted content: the extractor's main-content detection differs between the static and rendered forms of the same page, so an extraction-based ratio measured trafilatura rather than JavaScript.

dom_noise_ratio
0.2 · page · architectural

Raw HTML tokens over extracted-content tokens, o200k_base. Log-scaled because the observed range spans nearly three orders of magnitude (3.9x to 1,599x across a 59-page sample). Unmeasurable when extraction falls below the word floor — a failed extraction produces a spectacular-looking ratio that is a bug, not a finding. Anchors are set for reachability at both ends. The best anchor sits just above the leanest pages actually observed (3.9x), so excellence is attainable rather than theoretical. The worst anchor marks 99.75% markup overhead, which is unambiguously bad while leaving all but the most extreme pages inside the measurable range.

token_waste_share
0.15 · page · substantial

Share of raw tokens attributable to ablatable constructs — inline SVG, script, style, comments, data-* attributes, class soup. Measured by stripping each category independently so the result is a ranked remediation list rather than a single opaque number.

section_heading_coverage
0.125 · page · moderate

Share of non-empty sections carrying a heading that names their topic. Measured on the document's own sections, so it does not assume a consumer's chunk size.

Missing numbers

Three ways a number can be missing. None of them mean zero.

Not applicable

The page has no forms, so form-field labelling has nothing to describe. The attribute leaves that page's denominator.

Unmeasurable

We meant to look and could not — the document was missing, or extraction fell below its floor. Coverage falls and says so.

Retired

This version no longer asks the question of anyone. The weight left both numerator and denominator, and the model records that it did.

A score of 61 at full coverage and a score of 61 at quarter coverage are different claims, so coverage is published beside every Score rather than behind it. An origin with no audited page carries no comparable Score at all — it keeps its disposition and every origin-grain attribute that was measured, and the composite is withheld rather than guessed. Page-grain attributes are combined by median.

← the studies these methods were used for