Scovant Core — https://example.com/

Profile: saas (requested auto, confidence 80%)

Core version: 0.2.1

20 PASS, 8 WARN, 0 FAIL, 17 N/A, 0 ERROR (45 checks)

Scovant Core Static Signal Score

80 / 100

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

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

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

Categories

CategoryWeightScoreEvaluated / applicable
Access & Discovery258121 / 21
Machine Understanding259212 / 12
Agent Interfaces20504 / 4
Trust & Commerce1510011 / 11
Operability & Efficiency158113 / 13

Findings

StatusIDTitleSeveritySummary
WARNCORE-ACCESS-003AI search crawler policyhighrobots.txt declares PerplexityBot as disallowed.
WARNCORE-ACCESS-004Training vs. search crawler separationlowSearch/retrieval crawlers are restricted together with training crawlers — intent unclear.
WARNCORE-ACCESS-006Sitemap freshnesslowThe newest lastmod in the sitemap is over 730 days old.
WARNCORE-INTERFACE-006OAuth authorization-server metadatamediumAn authorization-server metadata document was found but is incomplete or does not parse.
WARNCORE-INTERFACE-007OAuth protected-resource metadatamediumA protected-resource metadata document was found but is incomplete or does not parse.
WARNCORE-MACHINE-002Organization entitymediumAn Organization entity is missing url.
WARNCORE-OPERABILITY-001Server-rendered core contentmediumThe entry page's static HTML carries only 90 chars of visible text (< 200).
WARNCORE-OPERABILITY-006Form/control labelsmedium1 control(s) across 1 form(s) lack a label or accessible name.
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-005Sitemap availabilityinfoA valid urlset sitemap was found at https://example.com/sitemap.xml.
PASSCORE-ACCESS-007Canonical URL integrityinfoThe canonical URL matches the entry URL.
PASSCORE-ACCESS-008IndexabilityinfoThe entry page does not declare noindex.
PASSCORE-MACHINE-001JSON-LD parseabilityinfoEvery JSON-LD block on the sampled pages parses as valid JSON.
PASSCORE-MACHINE-003WebSite/WebPage entityinfoA WebSite or WebPage entity was found on the sampled pages.
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-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 4 checked machine-consumable reference(s) resolve.
PASSCORE-OPERABILITY-005Agent parse costinfoThe entry page's estimated parse cost is ~22 tokens (low).
PASSCORE-TRUST-001Contact/support discoverabilityinfoA contact or support link was found on the entry page.
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 discoverabilityinfoA pricing page was found with a readable price.
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-INTERFACE-005OpenAPI discoveryinfoNo OpenAPI document discovered at the conventional paths.
N/ACORE-MACHINE-004Product structured datainfoNot applicable to the saas profile.
N/ACORE-MACHINE-005Offer price, currency, and availabilityinfoNot applicable to the saas profile.
N/ACORE-MACHINE-006Product identifier countinfoNot applicable to the saas profile.
N/ACORE-MACHINE-011Image alt coverageinfoNot applicable to the saas profile.
N/ACORE-TRUST-002Shipping policy discoverabilityinfoNot applicable to the saas profile.
N/ACORE-TRUST-003Returns/refund policy discoverabilityinfoNot applicable to the saas profile.

Experimental checks: not scored (run with --experimental)

N/A: CORE-INTERFACE-004, CORE-INTERFACE-008, CORE-INTERFACE-009, CORE-MACHINE-012, CORE-OPERABILITY-007

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": "3986b6edab342dfd005c7e59bf3e6876ce79173402727d30bb6c632805c1a1da",
  "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": false
  },
  "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": [
    "PerplexityBot"
  ],
  "training_blocked": []
}
CORE-ACCESS-005 — Sitemap availability
{
  "entry_count": 4,
  "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": 4,
  "entry_count": 4,
  "newest": "2020-01-01",
  "oldest": "2020-01-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": 4,
  "pages_with_marker": []
}
CORE-INTERFACE-005 — OpenAPI discovery
{
  "candidates_checked": 5,
  "found_url": null,
  "openapi_version": null,
  "parseable": false
}
CORE-INTERFACE-006 — OAuth authorization-server metadata
{
  "has_endpoints": false,
  "http_status": 200,
  "parseable": true,
  "resource": "https://example.com/.well-known/oauth-authorization-server",
  "served_as_html": false
}
CORE-INTERFACE-007 — OAuth protected-resource metadata
{
  "http_status": 200,
  "parseable": true,
  "resource": "https://example.com/.well-known/oauth-protected-resource",
  "served_as_html": false
}
CORE-MACHINE-001 — JSON-LD parseability
{
  "pages": [
    {
      "parsed": 2,
      "raw": 2,
      "url": "https://example.com/"
    },
    {
      "parsed": 0,
      "raw": 0,
      "url": "https://example.com/pricing"
    },
    {
      "parsed": 1,
      "raw": 1,
      "url": "https://example.com/docs"
    },
    {
      "parsed": 0,
      "raw": 0,
      "url": "https://example.com/signup"
    }
  ],
  "parsed_total": 3,
  "raw_total": 3
}
CORE-MACHINE-002 — Organization entity
{
  "found": true,
  "missing": [
    "url"
  ],
  "pages_parsed": 4
}
CORE-MACHINE-003 — WebSite/WebPage entity
{
  "found": true,
  "pages_parsed": 4
}
CORE-MACHINE-007 — Breadcrumbs
{
  "has_breadcrumb": true,
  "non_entry_pages": [
    "https://example.com/pricing",
    "https://example.com/docs",
    "https://example.com/signup"
  ],
  "non_entry_parsed": 3
}
CORE-MACHINE-008 — Metadata quality
{
  "entry_url": "https://example.com/",
  "issues": [],
  "meta_description": "Example SaaS is a synthetic subscription service used to exercise agent-readiness checks.",
  "missing": [],
  "title": "Example SaaS"
}
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": 90
}
CORE-OPERABILITY-002 — Redirect chain complexity
{
  "redirect_chain": [],
  "redirect_count": 0
}
CORE-OPERABILITY-003 — Cache validators
{
  "cache_control": null,
  "etag": "\"abc\"",
  "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": 26,
  "estimated_tokens": 22,
  "html_bytes": 1278,
  "level": "LOW",
  "link_count": 7,
  "script_bytes": 218,
  "script_ratio": 0.1705790297339593,
  "structured_bytes": 218,
  "text_chars": 90,
  "token_chars_ratio": 4
}
CORE-OPERABILITY-006 — Form/control labels
{
  "totals": {
    "forms": 1,
    "inputs": 2,
    "unlabeled_inputs": 1,
    "unlabeled_selects": 0,
    "unnamed_buttons": 0
  }
}
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": 342,
  "url": "https://example.com/privacy"
}
CORE-TRUST-005 — Terms/conditions discoverability
{
  "served_as_html": true,
  "status": 200,
  "text_chars": 324,
  "url": "https://example.com/terms"
}
CORE-TRUST-006 — security.txt discoverability
{
  "contact": true,
  "expires": null,
  "expires_valid": null,
  "found_url": "https://example.com/.well-known/security.txt",
  "status": 200
}
CORE-TRUST-007 — Pricing discoverability
{
  "has_price_text": true,
  "has_structured_price": false,
  "status": 200,
  "url": "https://example.com/pricing"
}

Remediation

Limitations

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.0
core_version
0.2.1
profile_detector_version
1.0
ruleset_version
2026.09
ruleset_digest
ea4ada4fffbf
python
<runtime>
platform
<runtime>
user_agent
ScovantCore/0.2.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>