Scovant Core — https://example.com/

Profile: api (requested auto, confidence 90%)

Core version: 0.20.1

32 PASS, 9 WARN, 1 FAIL, 26 N/A, 0 ERROR (68 checks)

Technical Readiness

91 / 100

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

Diagnostics (50 readiness checks): 23 pass · 6 warn · 0 fail

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

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

Findings

StatusIDTitleSeveritySummary
FAILCORE-SECURITY-003Content-Security-Policy / framing policymediumNeither Content-Security-Policy nor X-Frame-Options is sent.
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-OPERABILITY-001Server-rendered core contentmediumThe entry page's static HTML carries only 155 chars of visible text (< 200).
WARNCORE-OPERABILITY-003Cache validatorsinfoThe entry response carries no cache validator (ETag, Last-Modified, or Cache-Control).
WARNCORE-SECURITY-002HSTS presencelowNo Strict-Transport-Security header.
WARNCORE-SECURITY-005Referrer / MIME hygiene headerslowMissing: referrer-policy, x-content-type-options.
WARNCORE-TRUST-004Privacy policy discoverabilityhighA privacy policy page was found but has too little text (135 chars) to be a real policy document.
WARNCORE-TRUST-005Terms/conditions discoverabilitymediumNo terms/conditions page was found linked from the entry page.
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 separationinfoNo training restriction is declared; search and retrieval 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-INTERFACE-005OpenAPI discoveryinfoAn OpenAPI/Swagger document was discovered and parses.
PASSCORE-INTERFACE-006OAuth authorization-server metadatainfoOAuth authorization-server metadata is published and complete.
PASSCORE-INTERFACE-007OAuth protected-resource metadatainfoOAuth protected-resource metadata is published and complete.
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-OPERABILITY-002Redirect chain complexityinfoThe entry URL redirects 0 time(s) before settling.
PASSCORE-OPERABILITY-004Broken machine-consumable endpointsinfoAll 4 checked machine-consumable reference(s) resolve.
PASSCORE-OPERABILITY-005Agent parse costinfoThe entry page's estimated parse cost is ~38 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-006security.txt discoverabilityinfoA valid security.txt was found with a contact method.
N/ACORE-ACCESS-009llms.txt presence and integrityinfoNo llms.txt is published.
N/ACORE-ACCESS-010Content-Signal declarationinfoNo Content-Signal directive is declared.
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-MACHINE-001JSON-LD parseabilityinfoNo JSON-LD blocks were found on the sampled pages.
N/ACORE-MACHINE-004Product structured datainfoNot applicable to the api profile.
N/ACORE-MACHINE-005Offer price, currency, and availabilityinfoNot applicable to the api profile.
N/ACORE-MACHINE-006Product identifier countinfoNot applicable to the api profile.
N/ACORE-MACHINE-007BreadcrumbsinfoNot applicable to the api profile.
N/ACORE-MACHINE-011Image alt coverageinfoNot applicable to the api profile.
N/ACORE-OPERABILITY-006Form/control labelsinfoNot applicable to the api profile.
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-002Shipping policy discoverabilityinfoNot applicable to the api profile.
N/ACORE-TRUST-003Returns/refund policy discoverabilityinfoNot applicable to the api profile.
N/ACORE-TRUST-007Pricing discoverabilityinfoNot applicable to the api profile.

Experimental (not scored)

N/A: CORE-ACCESS-011, CORE-INTERFACE-004, CORE-INTERFACE-008, CORE-MACHINE-012, CORE-OPERABILITY-007, CORE-SECURITY-009, CORE-SECURITY-010, CORE-SECURITY-015, CORE-SECURITY-016

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": "b87966e58d2e52aaf3d52e0e5308a67505c7b1015c2fa7f772d1ecc327c4082f",
  "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": false,
  "http_status": 200,
  "resource": "https://example.com/robots.txt",
  "search_blocked": [],
  "training_blocked": []
}
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-01",
  "oldest": "2026-08-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
{
  "http_status": 404,
  "resource": "https://example.com/llms.txt"
}
CORE-ACCESS-010 — Content-Signal declaration
{
  "declared": false,
  "dimensions": {
    "ai-input": "unset",
    "ai-train": "unset",
    "search": "unset"
  },
  "syntax_errors": []
}
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": 3,
  "pages_with_marker": []
}
CORE-INTERFACE-005 — OpenAPI discovery
{
  "candidates_checked": 5,
  "found_url": "https://example.com/openapi.json",
  "openapi_version": "3.1.0",
  "parseable": true
}
CORE-INTERFACE-006 — OAuth authorization-server metadata
{
  "has_endpoints": true,
  "http_status": 200,
  "issuer": "https://example.com",
  "parseable": true,
  "resource": "https://example.com/.well-known/oauth-authorization-server",
  "served_as_html": false
}
CORE-INTERFACE-007 — OAuth protected-resource metadata
{
  "authorization_servers": [
    "https://example.com"
  ],
  "dpop_bound_access_tokens_required": false,
  "http_status": 200,
  "jwks_uri": null,
  "matches_issuer": true,
  "parseable": true,
  "resource": "https://example.com/.well-known/oauth-protected-resource",
  "resource_matches_origin": true,
  "resource_value": "https://example.com",
  "scopes_supported": [],
  "served_as_html": false
}
CORE-MACHINE-001 — JSON-LD parseability
{
  "pages": [
    {
      "parsed": 0,
      "raw": 0,
      "url": "https://example.com/"
    },
    {
      "parsed": 0,
      "raw": 0,
      "url": "https://example.com/docs"
    },
    {
      "parsed": 0,
      "raw": 0,
      "url": "https://example.com/contact"
    }
  ],
  "parsed_total": 0,
  "raw_total": 0
}
CORE-MACHINE-002 — Organization entity
{
  "found": false,
  "pages_parsed": 3
}
CORE-MACHINE-003 — WebSite/WebPage entity
{
  "found": false,
  "pages_parsed": 3
}
CORE-MACHINE-008 — Metadata quality
{
  "entry_url": "https://example.com/",
  "issues": [],
  "meta_description": "Example API is a synthetic HTTP API used to exercise agent-readiness checks.",
  "missing": [],
  "title": "Example API"
}
CORE-MACHINE-009 — Heading structure
{
  "entry_url": "https://example.com/",
  "h1_count": 1,
  "heading_count": 1,
  "issues": [],
  "levels": [
    "h1"
  ]
}
CORE-MACHINE-010 — Language declaration
{
  "entry_url": "https://example.com/",
  "html_lang": "en"
}
CORE-OPERABILITY-001 — Server-rendered core content
{
  "entry_url": "https://example.com/",
  "spa_shell_marker": false,
  "visible_text_chars": 155
}
CORE-OPERABILITY-002 — Redirect chain complexity
{
  "redirect_chain": [],
  "redirect_count": 0
}
CORE-OPERABILITY-003 — Cache validators
{
  "cache_control": null,
  "etag": null,
  "last_modified": null
}
CORE-OPERABILITY-004 — Broken machine-consumable endpoints
{
  "broken": [],
  "broken_count": 0,
  "inconclusive": [],
  "refs_checked": 4,
  "refs_resolved": 4,
  "unresolved": []
}
CORE-OPERABILITY-005 — Agent parse cost
{
  "dom_nodes": 18,
  "estimated_tokens": 38,
  "html_bytes": 753,
  "level": "LOW",
  "link_count": 4,
  "script_bytes": 0,
  "script_ratio": 0.0,
  "structured_bytes": 0,
  "text_chars": 155,
  "token_chars_ratio": 4
}
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": 3
}
CORE-SECURITY-008 — Internal network reference exposed
{
  "hits": [],
  "surfaces_scanned": 3
}
CORE-TRUST-001 — Contact/support discoverability
{
  "contact_url": "https://example.com/contact",
  "kind": "page"
}
CORE-TRUST-004 — Privacy policy discoverability
{
  "served_as_html": true,
  "status": 200,
  "text_chars": 135,
  "url": "https://example.com/privacy"
}
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
}

Remediation

Limitations

Agentic Security & Trust

PASSIVE SIGNALS ONLY

SignalValue
Critical0
High0
Medium1
Low3
Web baselinePASS 1 WARN 2 FAIL 1
DisclosurePASS 1 WARN 0 FAIL 0
Data exposurePASS 2 WARN 0 FAIL 0
Prompt surfacePASS 4 WARN 0 FAIL 0
authPASS 1 WARN 1 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-018 (MCP-AUTH-012) — OAuth authorization-server metadata consistency PASSIVE_OBSERVED

Status: WARN · Severity: low · Confidence: high

Fix owner: identity · Domain: auth

PKCE with S256 is not advertised in `code_challenge_methods_supported` (the server may still enforce it; agents cannot discover that it does). The RFC 9207 `iss` authorization-response parameter is not advertised (the server may still enforce it; agents cannot discover that it does).

Remediation: Require PKCE and list "S256" in `code_challenge_methods_supported`. Return `iss` in authorization responses and set `authorization_response_iss_parameter_supported: true`.

Mapped to OWASP Agentic Top 10 (not a compliance claim): ASI03 Identity & Privilege Abuse (partial)

Limitations: Passive signal only. Scovant Core reads the published metadata documents at the origin of the site itself; it never authenticates, registers a client or runs an OAuth flow, so it cannot see what the server enforces beyond what it advertises.

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>