Scovant Core — https://example.com/step4

Profile: commerce (requested auto, confidence 85%)

Core version: 0.20.1

12 PASS, 26 WARN, 10 FAIL, 20 N/A, 0 ERROR (68 checks)

Technical Readiness

57 / 100

Grade: D · Status: OK · Coverage: 100% · Model: R2.1@7389c208c89e

Diagnostics (50 readiness checks): 4 pass · 24 warn · 8 fail

Capabilities detected (descriptive, not scored): mcp: absent · webmcp: absent · ucp: invalid · llms_txt: invalid · openapi: not_checked · oauth: not_checked · content_signal: invalid · security_txt: invalid

Standards: AgentReady v1.0 (descriptive, not scored): MUST 3/3 measured — 1 warn, 2 fail · SHOULD 4/12 measured — 3 warn, 1 fail · MAY none measured (0/3) — Mapping: docs/standards/agentready.md

Findings

StatusIDTitleSeveritySummary
FAILCORE-ACCESS-002robots.txt availability and syntaxmediumrobots.txt disallows all crawlers from the entire site.
FAILCORE-ACCESS-003AI search crawler policyhighrobots.txt declares every major search and answer-engine crawler as disallowed. User-triggered fetch agents blocked: ChatGPT-User, Claude-User, Perplexity-User, DuckAssistBot.
FAILCORE-ACCESS-005Sitemap availabilitymediumNo sitemap was found.
FAILCORE-ACCESS-007Canonical URL integritymediumThe canonical URL points off-host.
FAILCORE-ACCESS-008IndexabilityhighThe entry page declares noindex.
FAILCORE-MACHINE-005Offer price, currency, and availabilityhighThe Product entity has no Offer with price, currency, or availability.
FAILCORE-OPERABILITY-004Broken machine-consumable endpointshigh2 of 2 machine-consumable reference(s) do not resolve.
FAILCORE-SECURITY-003Content-Security-Policy / framing policymediumNeither Content-Security-Policy nor X-Frame-Options is sent.
FAILCORE-SECURITY-006security.txt validity (RFC 9116)mediumExpires is in the past.
FAILCORE-TRUST-004Privacy policy discoverabilityhighNo privacy policy page was found linked from the entry page.
WARNCORE-ACCESS-001HTTPS reachabilitylowThe entry URL redirects 4 times before settling.
WARNCORE-ACCESS-004Training vs. search crawler separationlowSearch/retrieval crawlers are restricted together with training crawlers — intent unclear.
WARNCORE-ACCESS-009llms.txt presence and integritylowllms.txt references 1 link(s) that do not resolve.
WARNCORE-ACCESS-010Content-Signal declarationlowContent-Signal is declared but has syntax error(s).
WARNCORE-MACHINE-001JSON-LD parseabilitymediumSome JSON-LD blocks on the sampled pages fail to parse as valid JSON.
WARNCORE-MACHINE-002Organization entitymediumNo Organization entity was found on the sampled pages.
WARNCORE-MACHINE-003WebSite/WebPage entitylowNo WebSite or WebPage entity was found on the sampled pages.
WARNCORE-MACHINE-004Product structured datahighA Product entity exists but carries no identifiers.
WARNCORE-MACHINE-006Product identifier countmediumProduct entities declare no stable identifiers.
WARNCORE-MACHINE-008Metadata qualitylowThe entry page's metadata has issues: og:title, og:description.
WARNCORE-MACHINE-009Heading structurelowThe entry page's heading structure has issues: multiple H1.
WARNCORE-MACHINE-010Language declarationlowThe entry page's `lang` attribute is absent or invalid.
WARNCORE-MACHINE-011Image alt coveragemediumOnly 0/1 images have an alt attribute (ratio 0%).
WARNCORE-OPERABILITY-001Server-rendered core contentmediumThe entry page's static HTML carries only 148 chars of visible text (< 200).
WARNCORE-OPERABILITY-002Redirect chain complexitylowThe entry URL redirects 4 times before settling.
WARNCORE-OPERABILITY-003Cache validatorsinfoThe entry response carries no cache validator (ETag, Last-Modified, or Cache-Control).
WARNCORE-OPERABILITY-006Form/control labelsmedium1 control(s) across 1 form(s) lack a label or accessible name.
WARNCORE-SECURITY-002HSTS presencelowNo Strict-Transport-Security header.
WARNCORE-SECURITY-005Referrer / MIME hygiene headerslowMissing: referrer-policy, x-content-type-options.
WARNCORE-TRUST-001Contact/support discoverabilitylowNo contact or support link found on the entry page.
WARNCORE-TRUST-002Shipping policy discoverabilitymediumNo shipping policy page was found linked from the entry page.
WARNCORE-TRUST-003Returns/refund policy discoverabilitymediumNo returns/refund policy page was found linked from the entry page.
WARNCORE-TRUST-005Terms/conditions discoverabilitymediumNo terms/conditions page was found linked from the entry page.
WARNCORE-TRUST-006security.txt discoverabilitymediumsecurity.txt was found but has no Contact field.
PASSCORE-OPERABILITY-005Agent parse costinfoThe entry page's estimated parse cost is ~37 tokens (low).
PASSCORE-OPERABILITY-008Unknown paths return 404infoUnknown paths answer with a real 404.
PASSCORE-OPERABILITY-010Challenge pages are not served as 200infoNo challenge page is served with HTTP 200.
PASSCORE-SECURITY-001HTTPS baselineinfoServed over https; http:// redirects to https.
PASSCORE-SECURITY-007Credential-like value exposed in a machine-facing surfaceinfoNo credential-like values in the gathered machine-facing surfaces.
PASSCORE-SECURITY-008Internal network reference exposedinfoNo internal network references found.
N/ACORE-ACCESS-006Sitemap freshnessinfoNo valid sitemap to evaluate freshness for.
N/ACORE-INTERFACE-001MCP discovery presenceinfoNo MCP discovery file is published.
N/ACORE-INTERFACE-002MCP server declaration qualityinfoNo MCP server is declared.
N/ACORE-INTERFACE-003WebMCP static presenceinfoNo static WebMCP marker was found on the sampled pages.
N/ACORE-INTERFACE-005OpenAPI discoveryinfoNot applicable to the commerce profile.
N/ACORE-INTERFACE-006OAuth authorization-server metadatainfoNot applicable to the commerce profile.
N/ACORE-INTERFACE-007OAuth protected-resource metadatainfoNot applicable to the commerce profile.
N/ACORE-MACHINE-007BreadcrumbsinfoOnly the entry page was sampled; there are no additional pages to check for breadcrumbs.
N/ACORE-OPERABILITY-009Rate limiting is signalledinfoNo 429 response was observed during this scan.
N/ACORE-SECURITY-004Security-relevant cookie attributesinfoNo cookies set on the entry response.
N/ACORE-TRUST-007Pricing discoverabilityinfoNo pricing signal (a pricing page or a structured product price) was found.

Experimental (not scored)

N/A: CORE-INTERFACE-004, CORE-INTERFACE-009, CORE-MACHINE-012, CORE-OPERABILITY-007, CORE-SECURITY-009, CORE-SECURITY-010, CORE-SECURITY-016, CORE-SECURITY-017, CORE-SECURITY-018

Evidence

CORE-ACCESS-001 — HTTPS reachability
{
  "final_url": "https://example.com/step4",
  "input_url": "https://example.com/",
  "redirect_chain": [
    "https://example.com/",
    "https://example.com/step1",
    "https://example.com/step2",
    "https://example.com/step3"
  ],
  "redirect_count": 4,
  "status": 200
}
CORE-ACCESS-002 — robots.txt availability and syntax
{
  "error": null,
  "resource": "https://example.com/robots.txt",
  "served_as_html": false,
  "sha256": "901c28336f0ee2ceb8b00545721bc3a75c09d539b54d031ab78f34d43f7e5294",
  "sitemap_count": 0,
  "status": 200,
  "unknown_directives": []
}
CORE-ACCESS-003 — AI search crawler policy
{
  "declared_policy": {
    "Applebot": false,
    "Bingbot": false,
    "Claude-SearchBot": false,
    "Googlebot": false,
    "OAI-SearchBot": false,
    "PerplexityBot": false
  },
  "http_status": 200,
  "resource": "https://example.com/robots.txt",
  "robots_present": true,
  "user_fetch_policy": {
    "ChatGPT-User": false,
    "Claude-User": false,
    "DuckAssistBot": false,
    "Perplexity-User": false
  }
}
CORE-ACCESS-004 — Training vs. search crawler separation
{
  "explicit_separation": false,
  "http_status": 200,
  "resource": "https://example.com/robots.txt",
  "search_blocked": [
    "OAI-SearchBot",
    "Claude-SearchBot",
    "PerplexityBot",
    "Applebot",
    "Googlebot",
    "Bingbot"
  ],
  "training_blocked": [
    "GPTBot",
    "ClaudeBot",
    "Applebot-Extended",
    "CCBot",
    "Google-Extended"
  ]
}
CORE-ACCESS-005 — Sitemap availability
{
  "entry_count": 0,
  "exists": false,
  "kind": null,
  "parse_error": null,
  "probe_error": null,
  "probe_status": 404,
  "served_as_html": false,
  "url": null,
  "valid": false
}
CORE-ACCESS-006 — Sitemap freshness
{
  "url": null
}
CORE-ACCESS-007 — Canonical URL integrity
{
  "canonical_url": "https://example.org/elsewhere",
  "entry_url": "https://example.com/step4"
}
CORE-ACCESS-008 — Indexability
{
  "robots_meta": "noindex",
  "x_robots_tag": null
}
CORE-ACCESS-009 — llms.txt presence and integrity
{
  "errors": [],
  "references_broken": [
    "https://example.com/does-not-exist"
  ],
  "references_checked": 1,
  "references_unresolved": [],
  "resource": "https://example.com/llms.txt",
  "valid": true
}
CORE-ACCESS-010 — Content-Signal declaration
{
  "declared": true,
  "dimensions": {
    "ai-input": "unset",
    "ai-train": "unset",
    "search": "unset"
  },
  "syntax_errors": [
    "unrecognized value for 'search': 'maybe' (expected yes|no)"
  ]
}
CORE-INTERFACE-001 — MCP discovery presence
{
  "exists": false,
  "http_status": 404,
  "resource": "https://example.com/.well-known/mcp.json",
  "server_card": false,
  "valid": false
}
CORE-INTERFACE-003 — WebMCP static presence
{
  "pages_scanned": 1,
  "pages_with_marker": []
}
CORE-MACHINE-001 — JSON-LD parseability
{
  "pages": [
    {
      "parsed": 1,
      "raw": 2,
      "url": "https://example.com/step4"
    }
  ],
  "parsed_total": 1,
  "raw_total": 2
}
CORE-MACHINE-002 — Organization entity
{
  "found": false,
  "pages_parsed": 1
}
CORE-MACHINE-003 — WebSite/WebPage entity
{
  "found": false,
  "pages_parsed": 1
}
CORE-MACHINE-004 — Product structured data
{
  "has_identifiers": false,
  "pages_parsed": 1,
  "product_pages": [
    "https://example.com/step4"
  ]
}
CORE-MACHINE-005 — Offer price, currency, and availability
{
  "availability": null,
  "currency": null,
  "missing": [
    "price",
    "priceCurrency",
    "availability"
  ],
  "price": null,
  "url": "https://example.com/step4"
}
CORE-MACHINE-006 — Product identifier count
{
  "count": 0,
  "identifier_keys": [],
  "pages_parsed": 1
}
CORE-MACHINE-008 — Metadata quality
{
  "entry_url": "https://example.com/step4",
  "issues": [
    "og:title",
    "og:description"
  ],
  "meta_description": "A synthetic fixture site with several broken agent-readiness signals.",
  "missing": [
    "og:title",
    "og:description"
  ],
  "title": "Example Bad Shop"
}
CORE-MACHINE-009 — Heading structure
{
  "entry_url": "https://example.com/step4",
  "h1_count": 2,
  "heading_count": 2,
  "issues": [
    "multiple H1"
  ],
  "levels": [
    "h1",
    "h1"
  ]
}
CORE-MACHINE-010 — Language declaration
{
  "entry_url": "https://example.com/step4",
  "html_lang": null
}
CORE-MACHINE-011 — Image alt coverage
{
  "covered": 0,
  "empty_alt": 0,
  "pages_parsed": 1,
  "ratio": 0.0,
  "total": 1,
  "with_alt": 0
}
CORE-OPERABILITY-001 — Server-rendered core content
{
  "entry_url": "https://example.com/step4",
  "spa_shell_marker": false,
  "visible_text_chars": 148
}
CORE-OPERABILITY-002 — Redirect chain complexity
{
  "redirect_chain": [
    "https://example.com/",
    "https://example.com/step1",
    "https://example.com/step2",
    "https://example.com/step3"
  ],
  "redirect_count": 4
}
CORE-OPERABILITY-003 — Cache validators
{
  "cache_control": null,
  "etag": null,
  "last_modified": null
}
CORE-OPERABILITY-004 — Broken machine-consumable endpoints
{
  "broken": [
    {
      "source": "canonical",
      "status": 404,
      "url": "https://example.org/elsewhere"
    },
    {
      "source": "llms",
      "status": 404,
      "url": "https://example.com/does-not-exist"
    }
  ],
  "broken_count": 2,
  "inconclusive": [],
  "refs_checked": 2,
  "refs_resolved": 2,
  "unresolved": []
}
CORE-OPERABILITY-005 — Agent parse cost
{
  "dom_nodes": 16,
  "estimated_tokens": 37,
  "html_bytes": 725,
  "level": "LOW",
  "link_count": 0,
  "script_bytes": 88,
  "script_ratio": 0.12137931034482759,
  "structured_bytes": 88,
  "text_chars": 148,
  "token_chars_ratio": 4
}
CORE-OPERABILITY-006 — Form/control labels
{
  "totals": {
    "forms": 1,
    "inputs": 1,
    "unlabeled_inputs": 1,
    "unlabeled_selects": 0,
    "unnamed_buttons": 0
  }
}
CORE-OPERABILITY-008 — Unknown paths return 404
{
  "final_url": "https://example.com/scovant-core-probe-9b580505",
  "probed_url": "https://example.com/scovant-core-probe-9b580505",
  "redirected": false,
  "served_html": false,
  "status": 404
}
CORE-OPERABILITY-009 — Rate limiting is signalled
{
  "observed": []
}
CORE-OPERABILITY-010 — Challenge pages are not served as 200
{
  "honest_challenges": 0,
  "pages": [],
  "pages_checked": 2
}
CORE-SECURITY-001 — HTTPS baseline
{
  "downgrade_attempted": true,
  "downgrade_status": 301,
  "final_scheme": "https",
  "redirected_to_https": true
}
CORE-SECURITY-002 — HSTS presence
{
  "header": null,
  "max_age": null
}
CORE-SECURITY-003 — Content-Security-Policy / framing policy
{
  "csp_present": false,
  "csp_report_only": false,
  "frame_ancestors": false,
  "x_frame_options": null
}
CORE-SECURITY-005 — Referrer / MIME hygiene headers
{
  "missing": [
    "referrer-policy",
    "x-content-type-options"
  ],
  "referrer_policy": null,
  "x_content_type_options": null
}
CORE-SECURITY-006 — security.txt validity (RFC 9116)
{
  "canonical_location": true,
  "canonical_uris": [],
  "contact": false,
  "expired": true,
  "expires": "2020-01-01T00:00:00Z",
  "found_url": "https://example.com/.well-known/security.txt"
}
CORE-SECURITY-007 — Credential-like value exposed in a machine-facing surface
{
  "hit_count": 0,
  "hits": [],
  "surfaces_scanned": 4
}
CORE-SECURITY-008 — Internal network reference exposed
{
  "hits": [],
  "surfaces_scanned": 4
}
CORE-TRUST-001 — Contact/support discoverability
{
  "contact_url": null,
  "kind": null
}
CORE-TRUST-006 — security.txt discoverability
{
  "contact": false,
  "expires": "2020-01-01T00:00:00Z",
  "expires_valid": false,
  "found_url": "https://example.com/.well-known/security.txt",
  "status": 200
}

Remediation

Limitations

Agentic Security & Trust

PASSIVE SIGNALS ONLY

SignalValue
Critical0
High0
Medium2
Low2
Web baselinePASS 1 WARN 2 FAIL 1
DisclosurePASS 0 WARN 0 FAIL 1
Data exposurePASS 2 WARN 0 FAIL 0
Prompt surfacePASS 5 WARN 0 FAIL 0
authPASS 0 WARN 0 FAIL 0
CORE-SECURITY-002 (SEC-WEB-002) — HSTS presence PASSIVE_OBSERVED

Status: WARN · Severity: low · Confidence: high

Fix owner: edge_cdn · Domain: web_baseline

No Strict-Transport-Security header.

Remediation: Send Strict-Transport-Security: max-age=31536000 (add includeSubDomains once every subdomain is https).

Limitations: Passive signal only. Scovant Core did not authenticate, submit forms or invoke tools; observed authorization behaviour is not tested.

CORE-SECURITY-003 (SEC-WEB-003) — Content-Security-Policy / framing policy PASSIVE_OBSERVED

Status: FAIL · Severity: medium · Confidence: high

Fix owner: frontend · Domain: web_baseline

Neither Content-Security-Policy nor X-Frame-Options is sent.

Remediation: Send a Content-Security-Policy with frame-ancestors, or at least X-Frame-Options: DENY.

Limitations: Passive signal only. Scovant Core did not authenticate, submit forms or invoke tools; observed authorization behaviour is not tested.

CORE-SECURITY-005 (SEC-WEB-005) — Referrer / MIME hygiene headers PASSIVE_OBSERVED

Status: WARN · Severity: low · Confidence: high

Fix owner: edge_cdn · Domain: web_baseline

Missing: referrer-policy, x-content-type-options.

Remediation: Send Referrer-Policy: strict-origin-when-cross-origin and X-Content-Type-Options: nosniff.

Limitations: Passive signal only. Scovant Core did not authenticate, submit forms or invoke tools; observed authorization behaviour is not tested.

CORE-SECURITY-006 (SEC-TXT-001) — security.txt validity (RFC 9116) DECLARED

Status: FAIL · Severity: medium · Confidence: high

Fix owner: security · Domain: disclosure

Expires is in the past.

Remediation: Set Expires to a future date (RFC 3339) and keep it fresh.

Limitations: Passive signal only. Scovant Core did not authenticate, submit forms or invoke tools; observed authorization behaviour is not tested.

This section evaluates tested AI-agent security controls and machine-facing security signals. It is not an overall website or application security rating.

Not tested by Scovant Core

Core vs Cloud

CapabilityCoreCloud
HTTP reachability✅✅
robots.txt✅✅
Sitemap✅✅
llms.txt✅✅
Structured data (JSON-LD)✅✅
Product/Offer data✅✅
Static crawler policy✅✅
Content-Signal✅✅
MCP discovery✅✅
WebMCP static presence✅✅
OpenAPI presence✅✅
OAuth authorization-server / protected-resource metadata✅✅
UCP profile validity✅ (experimental)✅
Agent discovery surface (A2A cards, AI-plugin, agents.json, Agent Skills)✅ (experimental)✅
Technical Readiness from Core's own sampled evidence✅—
Cloud = observed, reproducible, cross-provider, longitudinal——
Cloud's full compatibility score❌✅
Cloud's full production ruleset❌✅
Observed WAF/bot-firewall behavior❌✅
Real crawler network access❌✅
Browser-based agent simulation❌✅
Multi-model execution❌✅
MCP tool invocation❌✅
WebMCP tool execution/state parity❌✅
Tool/UI parity checking❌✅
Checkout/task completion❌✅
CAPTCHA/challenge behavior❌✅
Verified-agent access❌✅
Failure attribution❌✅
Temporal stability / regressions❌✅
Scheduled monitoring❌✅
Alerts/webhooks❌✅
Hosted, shareable reports❌✅
Contextual fix plan❌✅

Scovant Core measures passive, machine-facing signals. Scovant Cloud verifies how real agents actually behave, across providers, browser runtimes, security layers and time.

Methodology

Technical Readiness is the open R2 rating over the passive evidence Core gathered. Each rule outcome counts PASS = 1, WARN = 0.5, FAIL = 0 within its category, and the categories combine into a 0–100 rating. Coverage is the severity-adjusted share of the applicable rules Core could measure. A rule Core could not measure is listed as not measured, with a reason, and lowers coverage; it is never a FAIL. Below the coverage floor there is no number (INSUFFICIENT_EVIDENCE); an under-covered or errored measurement is DEGRADED (a number, no grade). Formula, category shares and outcome states: docs/r2.md. Checks are diagnostics: each reports its own verdict and evidence and none feeds the rating.

Provenance

scan_id
local-golden
started_at
2026-09-04T00:00:00Z
completed_at
2026-09-04T00:00:00Z
schema_version
2.1
core_version
0.20.1
profile_detector_version
1.0
ruleset_version
2026.10
ruleset_digest
e7426fb13abe
python
<runtime>
platform
<runtime>
user_agent
ScovantCore/0.20.1 (+https://github.com/Scovant/scovant-core)
timeout
60.0
max_pages
5
network_mode
fixture
experimental
False
allow_private_networks
False
scan_scope
CANONICAL
included_checks
[]
excluded_checks
[]
error_count
0
dependencies
<runtime>
environment_digest
<runtime>