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

Profile: commerce (requested auto, confidence 85%)

Core version: 0.5.1

12 PASS, 26 WARN, 10 FAIL, 18 N/A, 0 ERROR (66 checks)

Scovant Core Static Signal Score

38 / 100

Grade: F · Scope: CANONICAL · Status: OK · Coverage: 100% · Errors: 0

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

Categories

CategoryWeightScoreEvaluated / applicable
Access & Discovery251723 / 23
Machine Understanding254122 / 22
Agent Interfaces20n/a0 / 0
Trust & Commerce154212 / 12
Operability & Efficiency156418 / 18

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

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
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)
Core Score
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

Category weights are 25/25/20/15/15. Each check contributes PASS = 1, WARN = 0.5, FAIL = 0 to its category; ERROR lowers coverage (a document that could not be read counts against evidence), and N/A is excluded entirely. A scan scores INSUFFICIENT_EVIDENCE below a 60% coverage floor of its applicable weight. A full-selection scan that clears that floor but falls short of 85% coverage, or that hit any ERROR, is reported as DEGRADED (a score, no letter grade) rather than being silently graded on incomplete evidence. Running with checks narrowed or widened via --include/--exclude/--experimental instead reports a NOT_CANONICAL Subset Diagnostic Score over that subset, not the full Core Score. Full reference: docs/methodology.md.

Provenance

scan_id
local-golden
started_at
2026-09-04T00:00:00Z
completed_at
2026-09-04T00:00:00Z
schema_version
1.1
core_version
0.5.1
profile_detector_version
1.0
ruleset_version
2026.10
ruleset_digest
fd062c67627f
python
<runtime>
platform
<runtime>
user_agent
ScovantCore/0.5.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
evidence_min_coverage
0.6
canonical_min_coverage
0.85
dependencies
<runtime>
environment_digest
<runtime>