Agent Check

WS Agent Check

Methodology

WS Agent Check uses the independent ws-core-1.0.0 model: Find 30, Read 50 and Trust 20. The chosen profile is recorded. Current checks evaluate the same core, documentation and interface modules for every profile; core weights stay the same.

A score is shown only when coverage is at least 90%, critical checks were observed and the entry is accessible. Otherwise the report shows known findings and a possible interval, not a score.

The assessment is bounded and read-only. It observes the exact final entry origin, not all subdomains. Known shared path-tenancy hosts are unsupported, and isolation between arbitrary same-origin paths is not guaranteed. It is not certification, a search ranking prediction or a recommendation guarantee.

Offering, contact and privacy link discovery uses English and Croatian terms. When no candidate is found and the declared language is outside those dictionaries, the finding remains unverified rather than failing on that basis. A recognized candidate is still evaluated.

How the score is calculated

For applicable rules, A is total weight, O is the weight of observed pass, partial and fail outcomes, and E is the sum of weight × credit fraction (1, 0.5 or 0). Coverage is O/A. The score is round(100 × E/O) only with at least 90% coverage, observed critical checks and an accessible entry.

Otherwise there is no score; the possible interval is 100 × E/A to 100 × (E + A − O)/A. It expresses uncertainty, not statistical confidence. Incomplete probes remain unverified.

Rules and weights

Find 30 · Read 50 · Trust 20. Optional modules do not change the core score.

F01 · 10 points · critical

Pass: final 2xx HTML without a detected login, challenge or interstitial. Blocking, DNS/timeout or an ambiguous challenge is unverified and makes the check incomplete.

F02 · 6 points

For OAI-SearchBot, Claude-SearchBot and PerplexityBot, RFC 9309 rules on the submitted path: all allowed = pass, mixed = partial, all disallowed = fail. Missing robots (404) declares no restriction; inaccessible or malformed policy = unverified. Training-only blocks do not lose points.

F03 · 4 points

The same robots rules as F02 apply to ChatGPT-User, Claude-User and Perplexity-User. This records declared permission, not whether a provider obeys it or passes a WAF.

F04 · 4 points

Valid linked sitemap with at least one absolute same-origin URL = pass; valid conventional sitemap not advertised by robots = partial; both completed probes absent or invalid = fail; cap or timeout = unverified.

F05 · 3 points

One valid HTTP(S) canonical with a checked reachable in-scope target = pass; absent canonical or checked reachable out-of-scope canonical = partial with external warning. Conflicting or invalid canonical or observed dead target = fail; unprobed target = unverified.

F06 · 3 points

No applicable noindex/none in HTML or X-Robots-Tag = pass; present = fail; incomplete response = unverified. This measures a directive, not actual indexing.

R01 · 15 points · critical

At least 200 extracted letters/digits = pass; 80–199 = partial; below 80 = fail. This is a WS sampling heuristic, not a universal definition of meaningful content.

R02 · 10 points · critical

A random missing same-origin path returns 404/410, including a safe redirect ending there = pass; 2xx = fail; other status, redirect to home or ambiguous challenge = unverified. HTML errors are accepted; Markdown is optional.

R03 · 6 points

At least two valid same-origin content hrefs excluding legal/contact/login anchors = pass; one = partial; zero = fail. Presence does not mean every destination was fetched.

R04 · 4 points

Nonempty H1 with no skipped descending heading level = pass; H1 with skips = partial; no nonempty H1 = fail. Multiple H1s do not automatically fail.

R05 · 3 points

Recognized BCP 47 language on html = pass; missing or malformed = fail. This does not verify the text language.

R06 · 4 points

Extracted text ≤32 KiB = pass; >32 to ≤64 KiB = partial; >64 KiB = fail. If the body cap prevents extraction, unverified. This is a truncation-risk signal.

R07 · 4 points

Reachable llms.txt with H1, description and a valid public link, advertised from sampled first-party HTML/Link headers = pass; same valid file only found conventionally = partial; completed probes establish absent/invalid = fail.

R08 · 4 points

Valid JSON-LD with a named Organization, Person, LocalBusiness, Product, SoftwareApplication or WebSite = pass; parseable JSON-LD without one = partial; absent or all malformed = fail. Facts are not verified.

T01 · 6 points

Nonempty title and named site/entity visible in extracted HTML = pass; title only = partial; neither = fail. Matching normalizes case and whitespace.

T02 · 6 points

A same-site service/product/about link with observed 2xx target and ≥200 extracted characters = pass; observed shorter target = partial; no candidate or dead target after completed probes = fail; unprobed target = unverified. Link classification uses versioned English/Croatian URL and label dictionaries.

T03 · 4 points

Reachable contact page with ≥80 extracted characters or a valid visible mailto/tel link = pass; discoverable contact page without observed contact content = partial if fetched, unverified if unfetched; no route after completed discovery = fail. No messages or calls are made.

T04 · 4 points

Same-site privacy link and observed 2xx page with ≥200 extracted characters = pass; fetched shorter page = partial; absent/dead after completed probes = fail; unprobed = unverified. Presence is not a legal assessment.

Start another check →