Scovant Core — https://example.com/

Profile: commerce (requested auto, confidence 85%)

Core version: 0.20.0

51 PASS, 3 WARN, 1 FAIL, 13 N/A, 0 ERROR (68 checks)

Technical Readiness

82 / 100

Grade: B · Status: OK · Coverage: 97% · Model: R2.1@939b502f6bc2

Not measured by Core: MCP_DISCOVERY_INVALID (handshake_not_performed)

Diagnostics (50 readiness checks): 40 pass · 1 warn · 0 fail

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

Standards: AgentReady v1.0 (descriptive, not scored): MUST 3/3 measured — 3 pass · SHOULD 5/12 measured — 5 pass · MAY none measured (0/3) — Mapping: docs/standards/agentready.md

Findings

StatusIDTitleSeveritySummary
FAILCORE-SECURITY-003Content-Security-Policy / framing policymediumNeither Content-Security-Policy nor X-Frame-Options is sent.
WARNCORE-SECURITY-002HSTS presencelowNo Strict-Transport-Security header.
WARNCORE-SECURITY-005Referrer / MIME hygiene headerslowMissing: referrer-policy, x-content-type-options.
PASSCORE-ACCESS-001HTTPS reachabilityinfoHTTPS entry URL answered 200.
PASSCORE-ACCESS-002robots.txt availability and syntaxinforobots.txt answered 200 with a well-formed policy.
PASSCORE-ACCESS-003AI search crawler policyinforobots.txt declares all major search and answer-engine crawlers as allowed.
PASSCORE-ACCESS-004Training vs. search crawler separationinfoTraining/content-use crawler(s) GPTBot, Google-Extended are restricted while search/retrieval crawlers remain allowed.
PASSCORE-ACCESS-005Sitemap availabilityinfoA valid urlset sitemap was found at https://example.com/sitemap.xml.
PASSCORE-ACCESS-006Sitemap freshnessinfoSitemap lastmod values look plausible.
PASSCORE-ACCESS-007Canonical URL integrityinfoThe canonical URL matches the entry URL.
PASSCORE-ACCESS-008IndexabilityinfoThe entry page does not declare noindex.
PASSCORE-ACCESS-009llms.txt presence and integrityinfollms.txt is well-formed and its 2 checked references resolve.
PASSCORE-ACCESS-010Content-Signal declarationinfoContent-Signal is declared and internally consistent.
PASSCORE-INTERFACE-001MCP discovery presenceinfoAn MCP discovery file is published and well-formed.
PASSCORE-INTERFACE-002MCP server declaration qualityinfoEvery declared MCP server has a name, url, transport, and a real description.
PASSCORE-MACHINE-001JSON-LD parseabilityinfoEvery JSON-LD block on the sampled pages parses as valid JSON.
PASSCORE-MACHINE-002Organization entityinfoAn Organization entity declares name and url.
PASSCORE-MACHINE-003WebSite/WebPage entityinfoA WebSite or WebPage entity was found on the sampled pages.
PASSCORE-MACHINE-004Product structured datainfoA sampled product page exposes a Product entity with an identifier.
PASSCORE-MACHINE-005Offer price, currency, and availabilityinfoThe product's Offer declares price, currency, and availability.
PASSCORE-MACHINE-006Product identifier countinfoProduct entities declare two or more stable identifiers.
PASSCORE-MACHINE-007BreadcrumbsinfoA sampled non-entry page declares a BreadcrumbList.
PASSCORE-MACHINE-008Metadata qualityinfoThe entry page declares title, description, and Open Graph tags.
PASSCORE-MACHINE-009Heading structureinfoThe entry page has a single H1 and no skipped heading levels.
PASSCORE-MACHINE-010Language declarationinfoThe entry page declares a valid `lang` attribute.
PASSCORE-MACHINE-011Image alt coverageinfo1/1 images have an alt attribute (ratio 100%).
PASSCORE-OPERABILITY-001Server-rendered core contentinfoThe entry page's static HTML carries 337 chars of visible text.
PASSCORE-OPERABILITY-002Redirect chain complexityinfoThe entry URL redirects 0 time(s) before settling.
PASSCORE-OPERABILITY-003Cache validatorsinfoThe entry response carries an ETag or Last-Modified validator.
PASSCORE-OPERABILITY-004Broken machine-consumable endpointsinfoAll 6 checked machine-consumable reference(s) resolve.
PASSCORE-OPERABILITY-005Agent parse costinfoThe entry page's estimated parse cost is ~84 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-006security.txt validity (RFC 9116)infosecurity.txt is at the canonical location, has Contact and a future Expires.
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.
PASSCORE-TRUST-001Contact/support discoverabilityinfoA contact or support link was found on the entry page.
PASSCORE-TRUST-002Shipping policy discoverabilityinfoA shipping policy page was found with substantive content.
PASSCORE-TRUST-003Returns/refund policy discoverabilityinfoA returns/refund policy page was found with substantive content.
PASSCORE-TRUST-004Privacy policy discoverabilityinfoA privacy policy page was found with substantive content.
PASSCORE-TRUST-005Terms/conditions discoverabilityinfoA terms/conditions page was found with substantive content.
PASSCORE-TRUST-006security.txt discoverabilityinfoA valid security.txt was found with a contact method.
PASSCORE-TRUST-007Pricing discoverabilityinfoPrices are exposed as structured product data.
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-OPERABILITY-006Form/control labelsinfoNo forms were found on any sampled page.
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.

Experimental (not scored)

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

Evidence

CORE-ACCESS-001 — HTTPS reachability
{
  "final_url": "https://example.com/",
  "input_url": "https://example.com/",
  "redirect_chain": [],
  "redirect_count": 0,
  "status": 200
}
CORE-ACCESS-002 — robots.txt availability and syntax
{
  "error": null,
  "resource": "https://example.com/robots.txt",
  "served_as_html": false,
  "sha256": "a3b24ab6056572a5c127bc7a4dba409e656da1245ef936633bab52b8b395efcf",
  "sitemap_count": 1,
  "status": 200,
  "unknown_directives": []
}
CORE-ACCESS-003 — AI search crawler policy
{
  "declared_policy": {
    "Applebot": true,
    "Bingbot": true,
    "Claude-SearchBot": true,
    "Googlebot": true,
    "OAI-SearchBot": true,
    "PerplexityBot": true
  },
  "http_status": 200,
  "resource": "https://example.com/robots.txt",
  "robots_present": true,
  "user_fetch_policy": {
    "ChatGPT-User": true,
    "Claude-User": true,
    "DuckAssistBot": true,
    "Perplexity-User": true
  }
}
CORE-ACCESS-004 — Training vs. search crawler separation
{
  "explicit_separation": true,
  "http_status": 200,
  "resource": "https://example.com/robots.txt",
  "search_blocked": [],
  "training_blocked": [
    "GPTBot",
    "Google-Extended"
  ]
}
CORE-ACCESS-005 — Sitemap availability
{
  "entry_count": 3,
  "exists": true,
  "kind": "urlset",
  "parse_error": null,
  "probe_error": null,
  "probe_status": 200,
  "served_as_html": false,
  "url": "https://example.com/sitemap.xml",
  "valid": true
}
CORE-ACCESS-006 — Sitemap freshness
{
  "dated_entry_count": 3,
  "entry_count": 3,
  "newest": "2026-08-15",
  "oldest": "2026-07-01",
  "url": "https://example.com/sitemap.xml"
}
CORE-ACCESS-007 — Canonical URL integrity
{
  "canonical_url": "https://example.com/",
  "entry_url": "https://example.com/"
}
CORE-ACCESS-008 — Indexability
{
  "robots_meta": null,
  "x_robots_tag": null
}
CORE-ACCESS-009 — llms.txt presence and integrity
{
  "errors": [],
  "references_broken": [],
  "references_checked": 2,
  "references_unresolved": [],
  "resource": "https://example.com/llms.txt",
  "valid": true
}
CORE-ACCESS-010 — Content-Signal declaration
{
  "declared": true,
  "dimensions": {
    "ai-input": "yes",
    "ai-train": "no",
    "search": "yes"
  },
  "syntax_errors": []
}
CORE-INTERFACE-001 — MCP discovery presence
{
  "declared_name": "example-shop",
  "endpoints": [
    "https://example.com/mcp"
  ],
  "exists": true,
  "http_status": 200,
  "resource": "https://example.com/.well-known/mcp.json",
  "server_card": false,
  "valid": true
}
CORE-INTERFACE-002 — MCP server declaration quality
{
  "servers_count": 1
}
CORE-INTERFACE-003 — WebMCP static presence
{
  "pages_scanned": 3,
  "pages_with_marker": []
}
CORE-MACHINE-001 — JSON-LD parseability
{
  "pages": [
    {
      "parsed": 2,
      "raw": 2,
      "url": "https://example.com/"
    },
    {
      "parsed": 2,
      "raw": 2,
      "url": "https://example.com/products/widget"
    },
    {
      "parsed": 0,
      "raw": 0,
      "url": "https://example.com/contact"
    }
  ],
  "parsed_total": 4,
  "raw_total": 4
}
CORE-MACHINE-002 — Organization entity
{
  "found": true,
  "has_description": false,
  "has_logo": true,
  "has_sameAs": false,
  "name": "Example Shop",
  "pages_parsed": 3,
  "url": "https://example.com/"
}
CORE-MACHINE-003 — WebSite/WebPage entity
{
  "found": true,
  "pages_parsed": 3
}
CORE-MACHINE-004 — Product structured data
{
  "has_identifiers": true,
  "pages_parsed": 3,
  "product_pages": [
    "https://example.com/products/widget"
  ]
}
CORE-MACHINE-005 — Offer price, currency, and availability
{
  "availability": "https://schema.org/InStock",
  "currency": "USD",
  "missing": [],
  "price": 19.99,
  "url": "https://example.com/products/widget"
}
CORE-MACHINE-006 — Product identifier count
{
  "count": 2,
  "identifier_keys": [
    "brand",
    "sku"
  ],
  "pages_parsed": 3
}
CORE-MACHINE-007 — Breadcrumbs
{
  "has_breadcrumb": true,
  "non_entry_pages": [
    "https://example.com/products/widget",
    "https://example.com/contact"
  ],
  "non_entry_parsed": 2
}
CORE-MACHINE-008 — Metadata quality
{
  "entry_url": "https://example.com/",
  "issues": [],
  "meta_description": "Example Shop sells widgets.",
  "missing": [],
  "title": "Example Shop — Widgets"
}
CORE-MACHINE-009 — Heading structure
{
  "entry_url": "https://example.com/",
  "h1_count": 1,
  "heading_count": 2,
  "issues": [],
  "levels": [
    "h1",
    "h2"
  ]
}
CORE-MACHINE-010 — Language declaration
{
  "entry_url": "https://example.com/",
  "html_lang": "en"
}
CORE-MACHINE-011 — Image alt coverage
{
  "covered": 1,
  "empty_alt": 0,
  "pages_parsed": 3,
  "ratio": 1.0,
  "total": 1,
  "with_alt": 1
}
CORE-OPERABILITY-001 — Server-rendered core content
{
  "entry_url": "https://example.com/",
  "spa_shell_marker": false,
  "visible_text_chars": 337
}
CORE-OPERABILITY-002 — Redirect chain complexity
{
  "redirect_chain": [],
  "redirect_count": 0
}
CORE-OPERABILITY-003 — Cache validators
{
  "cache_control": null,
  "etag": "\"commerce-good-v1\"",
  "last_modified": null
}
CORE-OPERABILITY-004 — Broken machine-consumable endpoints
{
  "broken": [],
  "broken_count": 0,
  "inconclusive": [
    {
      "source": "mcp_endpoint",
      "status": 404,
      "url": "https://example.com/mcp"
    }
  ],
  "refs_checked": 7,
  "refs_resolved": 6,
  "unresolved": []
}
CORE-OPERABILITY-005 — Agent parse cost
{
  "dom_nodes": 24,
  "estimated_tokens": 84,
  "html_bytes": 1315,
  "level": "LOW",
  "link_count": 7,
  "script_bytes": 247,
  "script_ratio": 0.18783269961977186,
  "structured_bytes": 247,
  "text_chars": 337,
  "token_chars_ratio": 4
}
CORE-OPERABILITY-006 — Form/control labels
{
  "totals": {
    "forms": 0,
    "inputs": 0,
    "unlabeled_inputs": 0,
    "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": 4
}
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": true,
  "expired": false,
  "expires": "2030-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": 7
}
CORE-SECURITY-008 — Internal network reference exposed
{
  "hits": [],
  "surfaces_scanned": 7
}
CORE-TRUST-001 — Contact/support discoverability
{
  "contact_url": "https://example.com/contact",
  "kind": "page"
}
CORE-TRUST-002 — Shipping policy discoverability
{
  "served_as_html": true,
  "status": 200,
  "text_chars": 300,
  "url": "https://example.com/shipping"
}
CORE-TRUST-003 — Returns/refund policy discoverability
{
  "served_as_html": true,
  "status": 200,
  "text_chars": 312,
  "url": "https://example.com/returns"
}
CORE-TRUST-004 — Privacy policy discoverability
{
  "served_as_html": true,
  "status": 200,
  "text_chars": 303,
  "url": "https://example.com/privacy"
}
CORE-TRUST-005 — Terms/conditions discoverability
{
  "served_as_html": true,
  "status": 200,
  "text_chars": 334,
  "url": "https://example.com/terms"
}
CORE-TRUST-006 — security.txt discoverability
{
  "contact": true,
  "expires": "2030-01-01T00:00:00Z",
  "expires_valid": true,
  "found_url": "https://example.com/.well-known/security.txt",
  "status": 200
}
CORE-TRUST-007 — Pricing discoverability
{
  "structured_price": 19.99,
  "url": "https://example.com/products/widget"
}

Remediation

Limitations

Agentic Security & Trust

PASSIVE SIGNALS ONLY

SignalValue
Critical0
High0
Medium1
Low2
Web baselinePASS 1 WARN 2 FAIL 1
DisclosurePASS 1 WARN 0 FAIL 0
Data exposurePASS 3 WARN 0 FAIL 0
Prompt surfacePASS 6 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.

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.0
profile_detector_version
1.0
ruleset_version
2026.10
ruleset_digest
e7426fb13abe
python
<runtime>
platform
<runtime>
user_agent
ScovantCore/0.20.0 (+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>