[
 {
  "slug": "airtable",
  "name": "Airtable",
  "domain": "airtable.com",
  "finalUrl": "https://www.airtable.com/",
  "read": "2026-11-09",
  "scannedAt": "2026-11-04T04:53:28.066+00:00",
  "score": 57,
  "max": 100,
  "grade": "C",
  "category": "Productivity",
  "scoringVersion": null,
  "rulesUrl": null,
  "summary": "Airtable provides official SDK packages and MCP registry listings, but lacks a published OpenAPI specification.",
  "layers": [
   {
    "id": "discovery",
    "name": "Discovery",
    "score": 14,
    "max": 18
   },
   {
    "id": "accessibility",
    "name": "Access",
    "score": 32,
    "max": 58
   },
   {
    "id": "usability",
    "name": "Usability",
    "score": 29,
    "max": 60
   },
   {
    "id": "payments",
    "name": "Payments",
    "score": 0,
    "max": 0
   }
  ],
  "checks": {
   "ard-catalog": [
    "fail",
    0,
    1
   ],
   "ai-catalog-published": [
    "na",
    0,
    1
   ],
   "ard-entries-valid": [
    "na",
    0,
    2
   ],
   "ard-trust-manifest": [
    "na",
    0,
    2
   ],
   "agentic-search-usecase": [
    "na",
    0,
    6
   ],
   "agentic-search-specific": [
    "warning",
    2,
    3
   ],
   "brand-search-accuracy": [
    "warning",
    1,
    3
   ],
   "wikipedia-presence": [
    "pass",
    4,
    4
   ],
   "robots-ai-policy-quality": [
    "pass",
    2,
    2
   ],
   "mcp-registry-listed": [
    "pass",
    1,
    1
   ],
   "npm-sdk-package": [
    "pass",
    1,
    1
   ],
   "agent-rules-repo": [
    "fail",
    0,
    1
   ],
   "agent-plugins-repo": [
    "fail",
    0,
    1
   ],
   "registry-branding": [
    "fail",
    0,
    2
   ],
   "chatgpt-app-listed": [
    "pass",
    2,
    2
   ],
   "noindex-directives": [
    "pass",
    1,
    1
   ],
   "sitemap": [
    "pass",
    2,
    2
   ],
   "content-no-js": [
    "warning",
    2,
    3
   ],
   "bot-detection": [
    "pass",
    2,
    2
   ],
   "agent-discovery-file": [
    "fail",
    0,
    2
   ],
   "agent-skills-index-v2": [
    "na",
    0,
    2
   ],
   "a2a-agent-card": [
    "fail",
    0,
    2
   ],
   "skills-sh-listed": [
    "pass",
    1,
    1
   ],
   "pricing-md": [
    "fail",
    0,
    2
   ],
   "nlweb-schema-feeds": [
    "fail",
    0,
    1
   ],
   "mcp-well-known-discovery": [
    "warning",
    1,
    2
   ],
   "agent-mode-view": [
    "fail",
    0,
    2
   ],
   "link-headers-discovery": [
    "fail",
    0,
    1
   ],
   "markdown-url-fallback": [
    "fail",
    0,
    2
   ],
   "modular-llms-txt": [
    "warning",
    0,
    1
   ],
   "sitemap-lastmod": [
    "pass",
    1,
    1
   ],
   "robots-agent-user-policy": [
    "pass",
    2,
    2
   ],
   "llms-txt-exists": [
    "fail",
    0,
    1
   ],
   "llms-txt-formatting": [
    "fail",
    0,
    2
   ],
   "json-ld": [
    "fail",
    0,
    4
   ],
   "pricing-info": [
    "pass",
    3,
    3
   ],
   "public-api-docs": [
    "pass",
    3,
    3
   ],
   "agent-instruction": [
    "fail",
    0,
    3
   ],
   "skills-sh-quality": [
    "pass",
    2,
    2
   ],
   "json-ld-entity-linking": [
    "fail",
    0,
    2
   ],
   "metadata-completeness": [
    "pass",
    2,
    2
   ],
   "org-schema-completeness": [
    "fail",
    0,
    2
   ],
   "schema-type-breadth": [
    "fail",
    0,
    2
   ],
   "trust-anchors": [
    "pass",
    2,
    2
   ],
   "llms-txt-links-resolve": [
    "na",
    0,
    2
   ],
   "markdown-link-alternate": [
    "fail",
    0,
    1
   ],
   "markdown-frontmatter": [
    "na",
    0,
    1
   ],
   "redirect-hygiene": [
    "pass",
    1,
    1
   ],
   "page-token-budget": [
    "pass",
    1,
    1
   ],
   "code-fence-validity": [
    "na",
    0,
    1
   ],
   "docs-auth-gate": [
    "pass",
    2,
    2
   ],
   "openapi-spec": [
    "fail",
    0,
    7
   ],
   "developer-portal": [
    "pass",
    6,
    6
   ],
   "api-catalog-rfc9727": [
    "fail",
    0,
    2
   ],
   "markdown-negotiation": [
    "fail",
    0,
    1
   ],
   "markdown-negotiation-vary": [
    "fail",
    0,
    1
   ],
   "agent-ua-markdown": [
    "fail",
    0,
    1
   ],
   "agent-crawler-reachability": [
    "pass",
    2,
    2
   ],
   "mcp-tool-descriptions": [
    "na",
    0,
    3
   ],
   "mcp-param-schemas": [
    "na",
    0,
    2
   ],
   "mcp-server-identity": [
    "na",
    0,
    1
   ],
   "mcp-tool-listing": [
    "na",
    0,
    3
   ],
   "mcp-tool-naming": [
    "na",
    0,
    2
   ],
   "public-api": [
    "fail",
    0,
    7
   ],
   "oauth-support": [
    "fail",
    0,
    5
   ],
   "scoped-permissions": [
    "fail",
    0,
    5
   ],
   "mcp-auth-mechanism": [
    "warning",
    1,
    2
   ],
   "mcp-oauth-metadata": [
    "fail",
    0,
    2
   ],
   "mcp-pkce-s256": [
    "fail",
    0,
    2
   ],
   "onboarding-friction": [
    "warning",
    1,
    2
   ],
   "web-bot-auth-directory": [
    "fail",
    0,
    2
   ],
   "oauth-protected-resource": [
    "pass",
    2,
    2
   ],
   "auth-md-exists": [
    "fail",
    0,
    2
   ],
   "auth-md-structure": [
    "fail",
    0,
    2
   ],
   "auth-md-walkthrough-simulation": [
    "na",
    0,
    2
   ],
   "agent-auth-discovery-metadata": [
    "warning",
    1,
    3
   ],
   "agent-auth-www-authenticate": [
    "fail",
    0,
    1
   ],
   "agent-auth-endpoints-reachable": [
    "fail",
    0,
    2
   ],
   "pap-discovery": [
    "na",
    0,
    2
   ],
   "pap-issuer-binding": [
    "na",
    0,
    2
   ],
   "pap-auth-config": [
    "na",
    0,
    2
   ],
   "pap-interfaces": [
    "na",
    0,
    2
   ],
   "pap-endpoint-enforcement": [
    "na",
    0,
    2
   ],
   "pap-cross-protocol": [
    "na",
    0,
    2
   ],
   "mcp-server": [
    "warning",
    5,
    6
   ],
   "mcp-error-handling": [
    "na",
    0,
    2
   ],
   "mcp-transport-modern": [
    "na",
    0,
    1
   ],
   "webmcp": [
    "fail",
    0,
    5
   ],
   "rate-limit-headers": [
    "na",
    0,
    2
   ],
   "idempotency-key-support": [
    "na",
    0,
    3
   ],
   "json-error-responses": [
    "pass",
    4,
    4
   ],
   "api-error-model": [
    "na",
    0,
    3
   ],
   "api-versioning-policy": [
    "na",
    0,
    3
   ],
   "pagination-shape": [
    "na",
    0,
    2
   ],
   "async-job-pattern": [
    "na",
    0,
    2
   ],
   "cli-tool": [
    "pass",
    3,
    3
   ],
   "rest-sdk-packages": [
    "warning",
    1,
    3
   ],
   "nlweb-ask": [
    "fail",
    0,
    1
   ],
   "nlweb-streaming": [
    "fail",
    0,
    1
   ],
   "response-schema-coverage": [
    "na",
    0,
    2
   ],
   "mcp-tool-annotations": [
    "na",
    0,
    2
   ],
   "mcp-server-card": [
    "fail",
    0,
    2
   ],
   "mcp-multi-surface-coverage": [
    "fail",
    0,
    2
   ],
   "sandbox-environment": [
    "fail",
    0,
    2
   ],
   "batch-endpoints": [
    "na",
    0,
    2
   ],
   "mcp-resource-listing": [
    "na",
    0,
    3
   ],
   "graphql-error-type-definition": [
    "na",
    0,
    3
   ],
   "graphql-versioning-policy": [
    "na",
    0,
    2
   ],
   "graphql-pagination-pattern": [
    "na",
    0,
    2
   ],
   "graphql-async-job-pattern": [
    "na",
    0,
    2
   ],
   "graphql-schema-completeness": [
    "na",
    0,
    3
   ],
   "graphql-batch-mutations": [
    "na",
    0,
    2
   ],
   "agent-friendly-404": [
    "warning",
    1,
    2
   ],
   "ax-document-structure": [
    "pass",
    3,
    3
   ],
   "ax-native-controls": [
    "pass",
    3,
    3
   ],
   "ax-accessible-names": [
    "pass",
    2,
    2
   ],
   "ax-form-labeling": [
    "na",
    0,
    2
   ],
   "ax-tree-injection-safe": [
    "pass",
    2,
    2
   ],
   "mcp-app-registry": [
    "na",
    0,
    4
   ],
   "a2ui-support": [
    "fail",
    0,
    2
   ],
   "mcp-apps-ui-quality": [
    "na",
    0,
    4
   ],
   "mcp-view-domain": [
    "na",
    0,
    4
   ],
   "mcp-view-csp": [
    "na",
    0,
    4
   ],
   "api-schema-analysis": [
    "fail",
    0,
    2
   ],
   "function-calling-compat": [
    "fail",
    0,
    2
   ],
   "mcp-resource-quality": [
    "na",
    0,
    3
   ],
   "mpp-support": [
    "na",
    0,
    2
   ],
   "x402-support": [
    "na",
    0,
    2
   ],
   "ucp-support": [
    "na",
    0,
    3
   ],
   "acp-support": [
    "na",
    0,
    3
   ],
   "acp-delegate-payment": [
    "na",
    0,
    3
   ],
   "ap2-support": [
    "na",
    0,
    3
   ]
  },
  "flagged": [
   {
    "id": "public-api",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 7,
    "tier": "required",
    "est": 5.2,
    "detail": "No publicly reachable API surface detected (REST and GraphQL both absent or auth-gated)"
   },
   {
    "id": "openapi-spec",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 7,
    "tier": "required",
    "est": 4,
    "detail": "No OpenAPI/Swagger specification found"
   },
   {
    "id": "oauth-support",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 5,
    "tier": "required",
    "est": 3.7,
    "detail": "No OAuth 2.0 or OpenID Connect support detected"
   },
   {
    "id": "scoped-permissions",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 5,
    "tier": "recommended",
    "est": 3.7,
    "detail": "No declared OAuth scopes, security schemes, or scoped-permission documentation found"
   },
   {
    "id": "webmcp",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 5,
    "tier": "required",
    "est": 3.7,
    "detail": "No WebMCP support detected - no document.modelContext / navigator.modelContext usage found (scanned 34 of 34 same-origin script bundle(s) for modelContext registrations)"
   },
   {
    "id": "brand-search-accuracy",
    "layer": "discovery",
    "status": "warning",
    "score": 1,
    "max": 3,
    "tier": "required",
    "est": 2.5,
    "detail": "airtable.com ranks #8 for \"Airtable\" (searched your brand name alone: no main product term from your homepage qualified)"
   },
   {
    "id": "json-ld",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 4,
    "tier": "required",
    "est": 2.3,
    "detail": "No JSON-LD structured data found on homepage"
   },
   {
    "id": "agent-instruction",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "required",
    "est": 1.7,
    "detail": "No agent instruction file with when-to-use guidance found"
   },
   {
    "id": "api-schema-analysis",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.5,
    "detail": "No API schema detected"
   },
   {
    "id": "function-calling-compat",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.5,
    "detail": "No API spec found - function calling requires discoverable endpoints"
   },
   {
    "id": "rest-sdk-packages",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 3,
    "tier": "recommended",
    "est": 1.5,
    "detail": "SDK package found only in npm"
   },
   {
    "id": "agentic-search-specific",
    "layer": "discovery",
    "status": "warning",
    "score": 2,
    "max": 3,
    "tier": "recommended",
    "est": 1.2,
    "detail": "In a search for your API docs, your docs came up at #7 (https://www.airtable.com/developers/web/api/introduction). In a search for your MCP server, SDK or CLI, none of the 10 results is your own, although the scan found one on your site"
   },
   {
    "id": "ard-catalog",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 1.2,
    "detail": "No /.well-known/ard.json, no same-site rel=\"ard\" link, and no legacy /.well-known/ai-catalog.json"
   },
   {
    "id": "agent-discovery-file",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 1.1,
    "detail": "No agent discovery file found"
   },
   {
    "id": "json-ld-entity-linking",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.1,
    "detail": "No JSON-LD found - no entity linking possible"
   },
   {
    "id": "llms-txt-formatting",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.1,
    "detail": "No llms.txt found to evaluate quality"
   },
   {
    "id": "org-schema-completeness",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.1,
    "detail": "No JSON-LD found - Organization schema missing"
   },
   {
    "id": "schema-type-breadth",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.1,
    "detail": "No extended schema types found - AI can only answer basic questions about this entity"
   },
   {
    "id": "agent-auth-discovery-metadata",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 3,
    "tier": "recommended",
    "est": 0.7,
    "detail": "Only PRM present; spec calls for both PRM and AS metadata"
   },
   {
    "id": "agent-auth-endpoints-reachable",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.7,
    "detail": "No agent_auth endpoint URIs found in AS metadata or /auth.md prose; nothing to probe"
   },
   {
    "id": "agent-friendly-404",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.7,
    "detail": "The nonexistent path https://airtable.com/__ora-404-probe-032awz3m correctly returns HTTP 404. Partial credit: no Markdown error body was detected."
   },
   {
    "id": "auth-md-exists",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.7,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "auth-md-structure",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.7,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "mcp-multi-surface-coverage",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.7,
    "detail": "We found an MCP candidate for your product at https://mcp.airtable.com/mcp, but could not verify that agents can use it. This bonus needs two MCP servers: one for your product so agents can take actions,"
   },
   {
    "id": "mcp-oauth-metadata",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.7,
    "detail": "OAuth protected-resource metadata was found for https://mcp.airtable.com/mcp, but its resource field identifies https://mcp.airtable.com/. The resource must exactly match the requested endpoint (RFC 9728)."
   },
   {
    "id": "mcp-pkce-s256",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.7,
    "detail": "No code_challenge_methods_supported in OAuth metadata for product MCP"
   },
   {
    "id": "mcp-server",
    "layer": "usability",
    "status": "warning",
    "score": 5,
    "max": 6,
    "tier": "required",
    "est": 0.7,
    "detail": "MCP server detected at https://mcp.airtable.com/mcp; it requires authentication. Presence is verified (5/6), but Ora could not inspect its tools or verify access scopes without credentials."
   },
   {
    "id": "mcp-server-card",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.7,
    "detail": "No MCP server card found for https://mcp.airtable.com/mcp (checked /.well-known/mcp/server-card.json, the site's ai-catalog.json, servers[].card in mcp.json, and <server>/server-card)"
   },
   {
    "id": "onboarding-friction",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.7,
    "detail": "Onboarding signals described but not verified live: sandbox/test environment"
   },
   {
    "id": "sandbox-environment",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.7,
    "detail": "No sandbox or test environment found"
   },
   {
    "id": "content-no-js",
    "layer": "accessibility",
    "status": "warning",
    "score": 2,
    "max": 3,
    "tier": "required",
    "est": 0.6,
    "detail": "Homepage: 3008 chars with H1, but 5.0% content ratio is below the 5% target. 5 of 5 sampled inner pages have text without JavaScript."
   },
   {
    "id": "llms-txt-exists",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 0.6,
    "detail": "No llms.txt found at /llms.txt or /.well-known/llms.txt."
   },
   {
    "id": "a2a-agent-card",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "No A2A agent card found at /.well-known/agent-card.json"
   },
   {
    "id": "api-catalog-rfc9727",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.5,
    "detail": "No /.well-known/api-catalog found (RFC 9727)"
   },
   {
    "id": "agent-auth-www-authenticate",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.4,
    "detail": "No 401 with WWW-Authenticate: Bearer resource_metadata=... found. Probed [https://airtable.com/api, https://airtable.com/api/v1, https://airtable.com/v1, https://airtable.com/v2, https://airtable.com/agent/identity,"
   },
   {
    "id": "mcp-auth-mechanism",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.4,
    "detail": "product MCP requires authentication but no standard OAuth discovery metadata"
   },
   {
    "id": "link-headers-discovery",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 0.3,
    "detail": "Link header present but no agent-relevant rel values (sitemap, describedby, alternate, service-desc)"
   },
   {
    "id": "markdown-negotiation-vary",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.3,
    "detail": "Homepage https://airtable.com does not meet the Markdown negotiation requirements: Accept: text/markdown returned text/html; charset=utf-8; Vary header missing Accept (got \"rsc, next-router-state-tree, next-router-prefetch,"
   },
   {
    "id": "mcp-well-known-discovery",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.3,
    "detail": "MCP server at https://mcp.airtable.com/mcp - list its server card, hosted on your own domain, in /.well-known/ai-catalog.json so MCP clients can discover it"
   },
   {
    "id": "a2ui-support",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No A2UI or generative UI support detected"
   },
   {
    "id": "agent-mode-view",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "?mode=agent returns same content as homepage (no dedicated agent view)"
   },
   {
    "id": "agent-plugins-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No Agent Plugins manifest (plugin.json) found in discovered repos"
   },
   {
    "id": "agent-rules-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Could not locate a public repo containing agent configs or rules. If our probes missed it, AI coding agents likely will too - link the repo from your homepage or docs so it's discoverable."
   },
   {
    "id": "agent-ua-markdown",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly."
   },
   {
    "id": "markdown-link-alternate",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No sampled page advertises a markdown alternate. Add <link rel=\"alternate\" type=\"text/markdown\" href=\"...\"> (or the equivalent Link response header) pointing at a markdown twin of the page."
   },
   {
    "id": "markdown-negotiation",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Missing markdown content negotiation. Homepage returned text/html when probed with Accept: text/markdown (expected text/markdown), and none of the well-known root paths (/llms.md, /auth.md, /agents.md, /developers.md, /api.md, /index.md,"
   },
   {
    "id": "markdown-url-fallback",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "Homepage does not support the .md suffix. Probed https://airtable.com/index.md and it did not return markdown (expected text/markdown content-type or a heading-led non-HTML body)."
   },
   {
    "id": "modular-llms-txt",
    "layer": "accessibility",
    "status": "warning",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Only 1 section-level llms.txt found (developers). Add one for another section and link it from your root llms.txt to earn this bonus point."
   },
   {
    "id": "nlweb-ask",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No NLWeb-conformant /ask endpoint found via GET or POST"
   },
   {
    "id": "nlweb-schema-feeds",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No schemamap: directive in robots.txt"
   },
   {
    "id": "nlweb-streaming",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "NLWeb /ask does not support SSE streaming via GET or POST"
   },
   {
    "id": "pricing-md",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No pricing.md found - agents need machine-readable pricing to compare products and make purchase recommendations"
   },
   {
    "id": "registry-branding",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No registry branding (name, icon, description) found"
   },
   {
    "id": "web-bot-auth-directory",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No /.well-known/http-message-signatures-directory found"
   }
  ],
  "seen": {
   "brand-search-accuracy": "airtable.com ranks #8 for \"Airtable\" (searched your brand name alone: no main product term from your homepage qualified)",
   "wikipedia-presence": "Wikipedia \"Airtable\" and Wikidata Q23016614 both verified - domain confirmed on both sources",
   "robots-ai-policy-quality": "AI search crawlers: allowed in 3 of 3 checks (3 crawlers on 1 page). AI training crawlers: allowed in 2 of 2 checks (2 crawlers on 1 page), not scored.",
   "noindex-directives": "No noindex on the homepage: no robots, googlebot or bingbot meta tag and no X-Robots-Tag header hides it from search.",
   "sitemap": "Valid sitemap found at https://www.airtable.com/sitemap.xml with 3118 entries",
   "content-no-js": "Homepage: 3008 chars with H1, but 5.0% content ratio is below the 5% target. 5 of 5 sampled inner pages have text without JavaScript.",
   "bot-detection": "Site accessible to 4 agent user-agents (ChatGPT-User, OAI-SearchBot, Claude-User, PerplexityBot).",
   "agent-discovery-file": "No agent discovery file found",
   "a2a-agent-card": "No A2A agent card found at /.well-known/agent-card.json",
   "mcp-well-known-discovery": "MCP server at https://mcp.airtable.com/mcp - list its server card, hosted on your own domain, in /.well-known/ai-catalog.json so MCP clients can discover it",
   "robots-agent-user-policy": "No applicable crawl or usage restriction found for 3 user-triggered agents (chatgpt-user, claude-user, perplexity-user) on 1 public page: https://airtable.com/. Declared policy only;",
   "llms-txt-exists": "No llms.txt found at /llms.txt or /.well-known/llms.txt.",
   "llms-txt-formatting": "No llms.txt found to evaluate quality",
   "json-ld": "No JSON-LD structured data found on homepage",
   "public-api-docs": "API/docs link found on homepage and resolves: https://airtable.com/developers/web/api/introduction",
   "metadata-completeness": "All metadata signals present: canonical URL, lang=\"en\", og:image, og:type",
   "page-token-budget": "All 6 measured pages fit an agent context budget (largest ~3K tokens)",
   "docs-auth-gate": "All 5 sampled pages are publicly readable (5 with substantive content)",
   "openapi-spec": "No OpenAPI/Swagger specification found",
   "developer-portal": "Developer portal found at /developers",
   "markdown-negotiation": "Missing markdown content negotiation. Homepage returned text/html when probed with Accept: text/markdown (expected text/markdown), and none of the well-known root paths (/llms.md, /auth.md, /agents.md, /developers.md,",
   "agent-ua-markdown": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly.",
   "agent-crawler-reachability": "Reachable to every agent we tested - ChatGPT-User: reachable, OAI-SearchBot: reachable, Claude-User: reachable, PerplexityBot: reachable",
   "public-api": "No publicly reachable API surface detected (REST and GraphQL both absent or auth-gated)",
   "oauth-support": "No OAuth 2.0 or OpenID Connect support detected",
   "mcp-server": "MCP server detected at https://mcp.airtable.com/mcp; it requires authentication. Presence is verified (5/6), but Ora could not inspect its tools or verify access scopes without credentials.",
   "webmcp": "No WebMCP support detected - no document.modelContext / navigator.modelContext usage found (scanned 34 of 34 same-origin script bundle(s) for modelContext registrations)",
   "cli-tool": "CLI package found on npm: @airtable/blocks-cli",
   "rest-sdk-packages": "SDK package found only in npm",
   "nlweb-ask": "No NLWeb-conformant /ask endpoint found via GET or POST",
   "mpp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "x402-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "ucp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "acp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "ap2-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites"
  }
 },
 {
  "slug": "amplitude",
  "name": "Amplitude",
  "domain": "amplitude.com",
  "finalUrl": "https://amplitude.com/",
  "read": "2026-11-09",
  "scannedAt": "2026-11-08T00:15:36.245+00:00",
  "score": 91,
  "max": 100,
  "grade": "A",
  "category": "Data & Analytics",
  "scoringVersion": null,
  "rulesUrl": null,
  "summary": "Amplitude offers strong discovery and zero-auth llms.txt access, and returning JSON error responses from its API would round out agent support.",
  "layers": [
   {
    "id": "discovery",
    "name": "Discovery",
    "score": 21,
    "max": 21
   },
   {
    "id": "accessibility",
    "name": "Access",
    "score": 59,
    "max": 64
   },
   {
    "id": "usability",
    "name": "Usability",
    "score": 90,
    "max": 104
   },
   {
    "id": "payments",
    "name": "Payments",
    "score": 0,
    "max": 0
   }
  ],
  "checks": {
   "ard-catalog": [
    "pass",
    1,
    1
   ],
   "ai-catalog-published": [
    "pass",
    1,
    1
   ],
   "ard-entries-valid": [
    "pass",
    2,
    2
   ],
   "ard-trust-manifest": [
    "pass",
    2,
    2
   ],
   "agentic-search-usecase": [
    "na",
    0,
    6
   ],
   "agentic-search-specific": [
    "pass",
    3,
    3
   ],
   "brand-search-accuracy": [
    "pass",
    3,
    3
   ],
   "wikipedia-presence": [
    "warning",
    2,
    4
   ],
   "robots-ai-policy-quality": [
    "pass",
    2,
    2
   ],
   "mcp-registry-listed": [
    "pass",
    1,
    1
   ],
   "npm-sdk-package": [
    "pass",
    1,
    1
   ],
   "agent-rules-repo": [
    "fail",
    0,
    1
   ],
   "agent-plugins-repo": [
    "fail",
    0,
    1
   ],
   "registry-branding": [
    "fail",
    0,
    2
   ],
   "chatgpt-app-listed": [
    "pass",
    2,
    2
   ],
   "noindex-directives": [
    "pass",
    1,
    1
   ],
   "sitemap": [
    "pass",
    2,
    2
   ],
   "content-no-js": [
    "warning",
    2,
    3
   ],
   "bot-detection": [
    "pass",
    2,
    2
   ],
   "agent-discovery-file": [
    "pass",
    2,
    2
   ],
   "agent-skills-index-v2": [
    "pass",
    2,
    2
   ],
   "a2a-agent-card": [
    "fail",
    0,
    2
   ],
   "skills-sh-listed": [
    "pass",
    1,
    1
   ],
   "pricing-md": [
    "pass",
    2,
    2
   ],
   "nlweb-schema-feeds": [
    "fail",
    0,
    1
   ],
   "mcp-well-known-discovery": [
    "pass",
    2,
    2
   ],
   "agent-mode-view": [
    "fail",
    0,
    2
   ],
   "link-headers-discovery": [
    "pass",
    1,
    1
   ],
   "markdown-url-fallback": [
    "pass",
    2,
    2
   ],
   "modular-llms-txt": [
    "pass",
    1,
    1
   ],
   "sitemap-lastmod": [
    "pass",
    1,
    1
   ],
   "robots-agent-user-policy": [
    "pass",
    2,
    2
   ],
   "llms-txt-exists": [
    "pass",
    1,
    1
   ],
   "llms-txt-formatting": [
    "pass",
    2,
    2
   ],
   "json-ld": [
    "pass",
    4,
    4
   ],
   "pricing-info": [
    "pass",
    3,
    3
   ],
   "public-api-docs": [
    "pass",
    3,
    3
   ],
   "agent-instruction": [
    "pass",
    3,
    3
   ],
   "skills-sh-quality": [
    "pass",
    2,
    2
   ],
   "json-ld-entity-linking": [
    "fail",
    0,
    2
   ],
   "metadata-completeness": [
    "pass",
    2,
    2
   ],
   "org-schema-completeness": [
    "pass",
    2,
    2
   ],
   "schema-type-breadth": [
    "warning",
    1,
    2
   ],
   "trust-anchors": [
    "pass",
    2,
    2
   ],
   "llms-txt-links-resolve": [
    "warning",
    1,
    2
   ],
   "markdown-link-alternate": [
    "fail",
    0,
    1
   ],
   "markdown-frontmatter": [
    "pass",
    1,
    1
   ],
   "redirect-hygiene": [
    "pass",
    1,
    1
   ],
   "page-token-budget": [
    "pass",
    1,
    1
   ],
   "code-fence-validity": [
    "pass",
    1,
    1
   ],
   "docs-auth-gate": [
    "pass",
    2,
    2
   ],
   "openapi-spec": [
    "pass",
    7,
    7
   ],
   "developer-portal": [
    "pass",
    6,
    6
   ],
   "api-catalog-rfc9727": [
    "warning",
    1,
    2
   ],
   "markdown-negotiation": [
    "pass",
    1,
    1
   ],
   "markdown-negotiation-vary": [
    "pass",
    1,
    1
   ],
   "agent-ua-markdown": [
    "fail",
    0,
    1
   ],
   "agent-crawler-reachability": [
    "pass",
    2,
    2
   ],
   "mcp-tool-descriptions": [
    "pass",
    3,
    3
   ],
   "mcp-param-schemas": [
    "pass",
    2,
    2
   ],
   "mcp-server-identity": [
    "fail",
    0,
    1
   ],
   "mcp-tool-listing": [
    "warning",
    2,
    3
   ],
   "mcp-tool-naming": [
    "pass",
    2,
    2
   ],
   "public-api": [
    "pass",
    7,
    7
   ],
   "oauth-support": [
    "pass",
    5,
    5
   ],
   "scoped-permissions": [
    "pass",
    5,
    5
   ],
   "mcp-auth-mechanism": [
    "pass",
    2,
    2
   ],
   "mcp-oauth-metadata": [
    "na",
    0,
    2
   ],
   "mcp-pkce-s256": [
    "na",
    0,
    2
   ],
   "onboarding-friction": [
    "warning",
    1,
    2
   ],
   "web-bot-auth-directory": [
    "fail",
    0,
    2
   ],
   "oauth-protected-resource": [
    "pass",
    2,
    2
   ],
   "auth-md-exists": [
    "fail",
    0,
    2
   ],
   "auth-md-structure": [
    "fail",
    0,
    2
   ],
   "auth-md-walkthrough-simulation": [
    "na",
    0,
    2
   ],
   "agent-auth-discovery-metadata": [
    "warning",
    1,
    3
   ],
   "agent-auth-www-authenticate": [
    "pass",
    1,
    1
   ],
   "agent-auth-endpoints-reachable": [
    "fail",
    0,
    2
   ],
   "pap-discovery": [
    "na",
    0,
    2
   ],
   "pap-issuer-binding": [
    "na",
    0,
    2
   ],
   "pap-auth-config": [
    "na",
    0,
    2
   ],
   "pap-interfaces": [
    "na",
    0,
    2
   ],
   "pap-endpoint-enforcement": [
    "na",
    0,
    2
   ],
   "pap-cross-protocol": [
    "na",
    0,
    2
   ],
   "mcp-server": [
    "warning",
    5,
    6
   ],
   "mcp-error-handling": [
    "pass",
    2,
    2
   ],
   "mcp-transport-modern": [
    "pass",
    1,
    1
   ],
   "webmcp": [
    "pass",
    5,
    5
   ],
   "rate-limit-headers": [
    "fail",
    0,
    2
   ],
   "idempotency-key-support": [
    "fail",
    0,
    3
   ],
   "json-error-responses": [
    "fail",
    0,
    4
   ],
   "api-error-model": [
    "pass",
    3,
    3
   ],
   "api-versioning-policy": [
    "warning",
    1,
    3
   ],
   "pagination-shape": [
    "warning",
    1,
    2
   ],
   "async-job-pattern": [
    "pass",
    2,
    2
   ],
   "cli-tool": [
    "pass",
    3,
    3
   ],
   "rest-sdk-packages": [
    "pass",
    3,
    3
   ],
   "nlweb-ask": [
    "fail",
    0,
    1
   ],
   "nlweb-streaming": [
    "fail",
    0,
    1
   ],
   "response-schema-coverage": [
    "pass",
    2,
    2
   ],
   "mcp-tool-annotations": [
    "warning",
    1,
    2
   ],
   "mcp-server-card": [
    "warning",
    1,
    2
   ],
   "mcp-multi-surface-coverage": [
    "pass",
    2,
    2
   ],
   "sandbox-environment": [
    "fail",
    0,
    2
   ],
   "batch-endpoints": [
    "pass",
    2,
    2
   ],
   "mcp-resource-listing": [
    "na",
    0,
    3
   ],
   "graphql-error-type-definition": [
    "na",
    0,
    3
   ],
   "graphql-versioning-policy": [
    "na",
    0,
    2
   ],
   "graphql-pagination-pattern": [
    "na",
    0,
    2
   ],
   "graphql-async-job-pattern": [
    "na",
    0,
    2
   ],
   "graphql-schema-completeness": [
    "na",
    0,
    3
   ],
   "graphql-batch-mutations": [
    "na",
    0,
    2
   ],
   "agent-friendly-404": [
    "pass",
    2,
    2
   ],
   "ax-document-structure": [
    "pass",
    3,
    3
   ],
   "ax-native-controls": [
    "pass",
    3,
    3
   ],
   "ax-accessible-names": [
    "pass",
    2,
    2
   ],
   "ax-form-labeling": [
    "na",
    0,
    2
   ],
   "ax-tree-injection-safe": [
    "pass",
    2,
    2
   ],
   "mcp-app-registry": [
    "na",
    0,
    4
   ],
   "a2ui-support": [
    "na",
    0,
    2
   ],
   "mcp-apps-ui-quality": [
    "na",
    0,
    4
   ],
   "mcp-view-domain": [
    "na",
    0,
    4
   ],
   "mcp-view-csp": [
    "na",
    0,
    4
   ],
   "api-schema-analysis": [
    "pass",
    2,
    2
   ],
   "function-calling-compat": [
    "pass",
    2,
    2
   ],
   "mcp-resource-quality": [
    "na",
    0,
    3
   ],
   "mpp-support": [
    "warning",
    0,
    2
   ],
   "x402-support": [
    "warning",
    0,
    2
   ],
   "ucp-support": [
    "warning",
    0,
    3
   ],
   "acp-support": [
    "warning",
    0,
    3
   ],
   "acp-delegate-payment": [
    "warning",
    0,
    3
   ],
   "ap2-support": [
    "warning",
    0,
    3
   ]
  },
  "flagged": [
   {
    "id": "json-error-responses",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 4,
    "tier": "required",
    "est": 1.7,
    "detail": "API does not return JSON error responses (or no API detected)"
   },
   {
    "id": "idempotency-key-support",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": 1.3,
    "detail": "No REST Idempotency-Key support detected"
   },
   {
    "id": "json-ld-entity-linking",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1,
    "detail": "No sameAs entity linking in JSON-LD - agents cannot disambiguate your brand"
   },
   {
    "id": "api-versioning-policy",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 3,
    "tier": "recommended",
    "est": 0.9,
    "detail": "Deprecation or versioning policy mentioned in prose at https://amplitude.com/docs/llms.txt - formalize in OpenAPI spec for full credit"
   },
   {
    "id": "rate-limit-headers",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.9,
    "detail": "No REST rate-limit headers found on probed endpoints"
   },
   {
    "id": "content-no-js",
    "layer": "accessibility",
    "status": "warning",
    "score": 2,
    "max": 3,
    "tier": "required",
    "est": 0.5,
    "detail": "Homepage: 3989 chars with H1, but 4.9% content ratio is below the 5% target. 5 of 5 sampled inner pages have text without JavaScript."
   },
   {
    "id": "llms-txt-links-resolve",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "2 of 5 probed llms.txt links could not be verified: https://mcp.amplitude.com/mcp (HTTP 401) and https://mcp.eu.amplitude.com/mcp (HTTP 401). This does not confirm that those pages are missing."
   },
   {
    "id": "schema-type-breadth",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "Some extended schema types found: Service, VideoObject - add 1 more type that matches what the homepage shows, for full coverage"
   },
   {
    "id": "mcp-server",
    "layer": "usability",
    "status": "warning",
    "score": 5,
    "max": 6,
    "tier": "required",
    "est": 0.4,
    "detail": "MCP server detected at https://mcp.amplitude.com/mcp; it requires authentication. Presence is verified (5/6), but Ora could not inspect its tools or verify access scopes without credentials."
   },
   {
    "id": "onboarding-friction",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.4,
    "detail": "Verified live: GET https://amplitude.com/llms.txt answered 200 without credentials (zero-auth access). Described but not verified live: free tier available, self-serve key generation, sandbox/test environment"
   },
   {
    "id": "pagination-shape",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.4,
    "detail": "Offset/page-based pagination found in OpenAPI spec - consider migrating to cursor-based pagination for agent friendliness"
   },
   {
    "id": "a2a-agent-card",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.1,
    "detail": "No A2A agent card found at /.well-known/agent-card.json"
   },
   {
    "id": "agent-auth-discovery-metadata",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 3,
    "tier": "recommended",
    "est": 0.1,
    "detail": "PRM + AS metadata both present (PRM discovered at https://mcp.amplitude.com) (AS metadata fetched from advertised origin https://mcp.amplitude.com) but AS metadata has no agent_auth block"
   },
   {
    "id": "agent-auth-endpoints-reachable",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.1,
    "detail": "No agent_auth endpoint URIs found in AS metadata or /auth.md prose; nothing to probe"
   },
   {
    "id": "auth-md-exists",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.1,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "auth-md-structure",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.1,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "mcp-server-card",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.1,
    "detail": "MCP server card found at https://amplitude.com/.well-known/ai-catalog.json but missing fields: version"
   },
   {
    "id": "mcp-server-card",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.1,
    "detail": "MCP server card found at https://amplitude.com/.well-known/ai-catalog.json but missing fields: version"
   },
   {
    "id": "mcp-server-identity",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.1,
    "detail": "docs MCP identity incomplete - missing: instructions"
   },
   {
    "id": "mcp-tool-annotations",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.1,
    "detail": "docs MCP: no tools carry annotations - read-only is implicit but explicit is better for agent ergonomics"
   },
   {
    "id": "mcp-tool-listing",
    "layer": "usability",
    "status": "warning",
    "score": 2,
    "max": 3,
    "tier": "recommended",
    "est": 0.1,
    "detail": "docs MCP exposes 5 tools - consider consolidating to keep agent attention focused on retrieval"
   },
   {
    "id": "sandbox-environment",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.1,
    "detail": "No sandbox or test environment found"
   },
   {
    "id": "acp-delegate-payment",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": null,
    "detail": "OPTIONS allows POST at https://api.amplitude.com/agentic_commerce/delegate_payment but POST 404 returned no ACP response"
   },
   {
    "id": "acp-support",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 3,
    "tier": "required",
    "est": null,
    "detail": "OPTIONS allows POST at https://api.amplitude.com/checkout_sessions but POST 404 returned no ACP response"
   },
   {
    "id": "agent-mode-view",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "?mode=agent returns same content as homepage (no dedicated agent view)"
   },
   {
    "id": "agent-plugins-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No Agent Plugins manifest (plugin.json) found in discovered repos"
   },
   {
    "id": "agent-rules-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Could not locate a public repo containing agent configs or rules. If our probes missed it, AI coding agents likely will too - link the repo from your homepage or docs so it's discoverable."
   },
   {
    "id": "agent-ua-markdown",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly."
   },
   {
    "id": "ap2-support",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": null,
    "detail": "No AP2 (Agent Payments Protocol) signals detected"
   },
   {
    "id": "api-catalog-rfc9727",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "required",
    "est": 0,
    "detail": "api-catalog linkset[0] has no 'item' entries"
   },
   {
    "id": "markdown-link-alternate",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No sampled page advertises a markdown alternate. Add <link rel=\"alternate\" type=\"text/markdown\" href=\"...\"> (or the equivalent Link response header) pointing at a markdown twin of the page."
   },
   {
    "id": "mpp-support",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": null,
    "detail": "No MPP (Machine Payments Protocol) support detected"
   },
   {
    "id": "nlweb-ask",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No NLWeb-conformant /ask endpoint found via GET or POST"
   },
   {
    "id": "nlweb-schema-feeds",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No schemamap: directive in robots.txt"
   },
   {
    "id": "nlweb-streaming",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "NLWeb /ask does not support SSE streaming via GET or POST"
   },
   {
    "id": "registry-branding",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No registry branding (name, icon, description) found"
   },
   {
    "id": "ucp-support",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 3,
    "tier": "required",
    "est": null,
    "detail": "no UCP (Universal Commerce Protocol) signals detected"
   },
   {
    "id": "web-bot-auth-directory",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No /.well-known/http-message-signatures-directory found"
   },
   {
    "id": "wikipedia-presence",
    "layer": "discovery",
    "status": "warning",
    "score": 2,
    "max": 4,
    "tier": "recommended",
    "est": 0,
    "detail": "Wikidata Q81969219 (Amplitude) verified - draft a Wikipedia page with cited references to complete knowledge graph coverage"
   },
   {
    "id": "x402-support",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": null,
    "detail": "No x402 payment protocol support detected"
   }
  ],
  "seen": {
   "brand-search-accuracy": "amplitude.com ranks #3 for \"Amplitude Session Replay\" and #4 for \"Amplitude Product Analytics\"",
   "wikipedia-presence": "Wikidata Q81969219 (Amplitude) verified - draft a Wikipedia page with cited references to complete knowledge graph coverage",
   "robots-ai-policy-quality": "AI search crawlers: allowed in 18 of 18 checks (3 crawlers on 6 pages). AI training crawlers: allowed in 12 of 12 checks (2 crawlers on 6 pages), not scored.",
   "noindex-directives": "No noindex on the homepage: no robots, googlebot or bingbot meta tag and no X-Robots-Tag header hides it from search.",
   "sitemap": "Valid sitemap found at https://amplitude.com/sitemap.xml with multiple sitemaps entries",
   "content-no-js": "Homepage: 3989 chars with H1, but 4.9% content ratio is below the 5% target. 5 of 5 sampled inner pages have text without JavaScript.",
   "bot-detection": "Site accessible to 4 agent user-agents (ChatGPT-User, OAI-SearchBot, Claude-User, PerplexityBot).",
   "agent-discovery-file": "Agent Skills index (agentskills.io) found at /.well-known/agent-skills/index.json with 1 skill(s)",
   "a2a-agent-card": "No A2A agent card found at /.well-known/agent-card.json",
   "mcp-well-known-discovery": "MCP server discoverable via server-card.json at /.well-known/mcp/",
   "robots-agent-user-policy": "No applicable crawl or usage restriction found for 3 user-triggered agents (chatgpt-user, claude-user, perplexity-user) on 1 public page: https://amplitude.com/. Declared policy only;",
   "llms-txt-exists": "Found the llms.txt at https://amplitude.com/llms.txt.",
   "llms-txt-formatting": "The llms.txt is well-formatted: 132 lines with markdown links, 16,613 characters in total.",
   "json-ld": "Rich JSON-LD identity: Organization with name, description, url, and sameAs/logo/address (2 block(s))",
   "public-api-docs": "Documentation site found at https://amplitude.com",
   "metadata-completeness": "All metadata signals present: canonical URL, lang=\"en-US\", og:image, og:type",
   "page-token-budget": "All 8 measured pages fit an agent context budget (largest ~3K tokens)",
   "docs-auth-gate": "All 5 sampled pages are publicly readable (5 with substantive content)",
   "openapi-spec": "OpenAPI spec found at https://amplitude.com/openapi.json (version: 3.1.0)",
   "developer-portal": "Developer portal found at /docs",
   "markdown-negotiation": "Path-suffix markdown docs served with text/markdown content-type: /mcp.md, /index.md",
   "agent-ua-markdown": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly.",
   "agent-crawler-reachability": "Reachable to every agent we tested - ChatGPT-User: reachable, OAI-SearchBot: reachable, Claude-User: reachable, PerplexityBot: reachable",
   "public-api": "REST API documentation found at /docs/api. Best-of-protocols score: 7/7.",
   "oauth-support": "OAuth authorization server metadata at https://mcp.amplitude.com",
   "mcp-server": "MCP server detected at https://mcp.amplitude.com/mcp; it requires authentication. Presence is verified (5/6), but Ora could not inspect its tools or verify access scopes without credentials.",
   "webmcp": "Imperative WebMCP API detected (document.modelContext.registerTool in script bundle /_next/static/immutable/chunks/096gkahozd4jm.js).",
   "cli-tool": "CLI package found on npm: @amplitude/ampli",
   "rest-sdk-packages": "SDK packages found across 3 ecosystems: npm, go, rubygems",
   "nlweb-ask": "No NLWeb-conformant /ask endpoint found via GET or POST",
   "mpp-support": "No MPP (Machine Payments Protocol) support detected",
   "x402-support": "No x402 payment protocol support detected",
   "ucp-support": "no UCP (Universal Commerce Protocol) signals detected",
   "acp-support": "OPTIONS allows POST at https://api.amplitude.com/checkout_sessions but POST 404 returned no ACP response",
   "ap2-support": "No AP2 (Agent Payments Protocol) signals detected"
  }
 },
 {
  "slug": "anthropic",
  "name": "Anthropic",
  "domain": "anthropic.com",
  "finalUrl": "https://www.anthropic.com/",
  "read": "2026-11-09",
  "scannedAt": "2026-11-09T12:01:03.355+00:00",
  "score": 63,
  "max": 100,
  "grade": "C",
  "category": "AI & ML",
  "scoringVersion": 2,
  "rulesUrl": "https://ora.ai/api/ranker/releases/2/rules",
  "summary": "Anthropic offers strong discovery and SDK coverage, but lacks a published OpenAPI specification for agents to consume.",
  "layers": [
   {
    "id": "discovery",
    "name": "Discovery",
    "score": 12,
    "max": 13
   },
   {
    "id": "accessibility",
    "name": "Access",
    "score": 36,
    "max": 59
   },
   {
    "id": "usability",
    "name": "Usability",
    "score": 30,
    "max": 60
   },
   {
    "id": "payments",
    "name": "Payments",
    "score": 0,
    "max": 0
   }
  ],
  "checks": {
   "ard-catalog": [
    "fail",
    0,
    1
   ],
   "ai-catalog-published": [
    "na",
    0,
    1
   ],
   "ard-entries-valid": [
    "na",
    0,
    2
   ],
   "ard-trust-manifest": [
    "na",
    0,
    2
   ],
   "agentic-search-usecase": [
    "na",
    0,
    6
   ],
   "agentic-search-specific": [
    "pass",
    3,
    3
   ],
   "brand-search-accuracy": [
    "pass",
    3,
    3
   ],
   "wikipedia-presence": [
    "warning",
    2,
    4
   ],
   "robots-ai-policy-quality": [
    "pass",
    2,
    2
   ],
   "mcp-registry-listed": [
    "na",
    0,
    1
   ],
   "npm-sdk-package": [
    "pass",
    1,
    1
   ],
   "agent-rules-repo": [
    "pass",
    1,
    1
   ],
   "agent-plugins-repo": [
    "fail",
    0,
    1
   ],
   "registry-branding": [
    "na",
    0,
    2
   ],
   "chatgpt-app-listed": [
    "fail",
    0,
    2
   ],
   "noindex-directives": [
    "pass",
    1,
    1
   ],
   "sitemap": [
    "pass",
    2,
    2
   ],
   "content-no-js": [
    "pass",
    3,
    3
   ],
   "bot-detection": [
    "pass",
    2,
    2
   ],
   "agent-discovery-file": [
    "fail",
    0,
    2
   ],
   "agent-skills-index-v2": [
    "na",
    0,
    2
   ],
   "a2a-agent-card": [
    "fail",
    0,
    2
   ],
   "skills-sh-listed": [
    "pass",
    1,
    1
   ],
   "pricing-md": [
    "fail",
    0,
    2
   ],
   "nlweb-schema-feeds": [
    "fail",
    0,
    1
   ],
   "mcp-well-known-discovery": [
    "fail",
    0,
    2
   ],
   "agent-mode-view": [
    "fail",
    0,
    2
   ],
   "link-headers-discovery": [
    "fail",
    0,
    1
   ],
   "markdown-url-fallback": [
    "fail",
    0,
    2
   ],
   "modular-llms-txt": [
    "fail",
    0,
    1
   ],
   "sitemap-lastmod": [
    "pass",
    1,
    1
   ],
   "robots-agent-user-policy": [
    "pass",
    2,
    2
   ],
   "llms-txt-exists": [
    "pass",
    1,
    1
   ],
   "llms-txt-formatting": [
    "warning",
    1,
    2
   ],
   "json-ld": [
    "fail",
    0,
    4
   ],
   "pricing-info": [
    "warning",
    1,
    3
   ],
   "public-api-docs": [
    "pass",
    3,
    3
   ],
   "agent-instruction": [
    "warning",
    2,
    3
   ],
   "skills-sh-quality": [
    "pass",
    2,
    2
   ],
   "json-ld-entity-linking": [
    "fail",
    0,
    2
   ],
   "metadata-completeness": [
    "pass",
    2,
    2
   ],
   "org-schema-completeness": [
    "fail",
    0,
    2
   ],
   "schema-type-breadth": [
    "fail",
    0,
    2
   ],
   "trust-anchors": [
    "pass",
    2,
    2
   ],
   "llms-txt-links-resolve": [
    "pass",
    2,
    2
   ],
   "markdown-link-alternate": [
    "fail",
    0,
    1
   ],
   "markdown-frontmatter": [
    "na",
    0,
    1
   ],
   "redirect-hygiene": [
    "pass",
    1,
    1
   ],
   "page-token-budget": [
    "pass",
    1,
    1
   ],
   "code-fence-validity": [
    "pass",
    1,
    1
   ],
   "docs-auth-gate": [
    "pass",
    2,
    2
   ],
   "openapi-spec": [
    "fail",
    0,
    7
   ],
   "developer-portal": [
    "pass",
    6,
    6
   ],
   "api-catalog-rfc9727": [
    "fail",
    0,
    2
   ],
   "markdown-negotiation": [
    "fail",
    0,
    1
   ],
   "markdown-negotiation-vary": [
    "fail",
    0,
    1
   ],
   "agent-ua-markdown": [
    "fail",
    0,
    1
   ],
   "agent-crawler-reachability": [
    "pass",
    2,
    2
   ],
   "mcp-tool-descriptions": [
    "na",
    0,
    3
   ],
   "mcp-param-schemas": [
    "na",
    0,
    2
   ],
   "mcp-server-identity": [
    "na",
    0,
    1
   ],
   "mcp-tool-listing": [
    "na",
    0,
    3
   ],
   "mcp-tool-naming": [
    "na",
    0,
    2
   ],
   "public-api": [
    "warning",
    3,
    7
   ],
   "oauth-support": [
    "warning",
    3,
    5
   ],
   "scoped-permissions": [
    "warning",
    2,
    5
   ],
   "mcp-auth-mechanism": [
    "na",
    0,
    2
   ],
   "mcp-oauth-metadata": [
    "na",
    0,
    2
   ],
   "mcp-pkce-s256": [
    "na",
    0,
    2
   ],
   "onboarding-friction": [
    "warning",
    1,
    2
   ],
   "web-bot-auth-directory": [
    "fail",
    0,
    2
   ],
   "oauth-protected-resource": [
    "fail",
    0,
    2
   ],
   "auth-md-exists": [
    "fail",
    0,
    2
   ],
   "auth-md-structure": [
    "fail",
    0,
    2
   ],
   "auth-md-walkthrough-simulation": [
    "na",
    0,
    2
   ],
   "agent-auth-discovery-metadata": [
    "fail",
    0,
    3
   ],
   "agent-auth-www-authenticate": [
    "fail",
    0,
    1
   ],
   "agent-auth-endpoints-reachable": [
    "fail",
    0,
    2
   ],
   "pap-discovery": [
    "na",
    0,
    2
   ],
   "pap-issuer-binding": [
    "na",
    0,
    2
   ],
   "pap-auth-config": [
    "na",
    0,
    2
   ],
   "pap-interfaces": [
    "na",
    0,
    2
   ],
   "pap-endpoint-enforcement": [
    "na",
    0,
    2
   ],
   "pap-cross-protocol": [
    "na",
    0,
    2
   ],
   "mcp-server": [
    "fail",
    0,
    6
   ],
   "mcp-error-handling": [
    "na",
    0,
    2
   ],
   "mcp-transport-modern": [
    "na",
    0,
    1
   ],
   "webmcp": [
    "fail",
    0,
    5
   ],
   "rate-limit-headers": [
    "na",
    0,
    2
   ],
   "idempotency-key-support": [
    "na",
    0,
    3
   ],
   "json-error-responses": [
    "pass",
    4,
    4
   ],
   "api-error-model": [
    "na",
    0,
    3
   ],
   "api-versioning-policy": [
    "na",
    0,
    3
   ],
   "pagination-shape": [
    "na",
    0,
    2
   ],
   "async-job-pattern": [
    "na",
    0,
    2
   ],
   "cli-tool": [
    "pass",
    3,
    3
   ],
   "rest-sdk-packages": [
    "pass",
    3,
    3
   ],
   "nlweb-ask": [
    "fail",
    0,
    1
   ],
   "nlweb-streaming": [
    "fail",
    0,
    1
   ],
   "response-schema-coverage": [
    "na",
    0,
    2
   ],
   "mcp-tool-annotations": [
    "na",
    0,
    2
   ],
   "mcp-server-card": [
    "fail",
    0,
    2
   ],
   "mcp-multi-surface-coverage": [
    "fail",
    0,
    2
   ],
   "sandbox-environment": [
    "warning",
    0,
    2
   ],
   "batch-endpoints": [
    "na",
    0,
    2
   ],
   "mcp-resource-listing": [
    "na",
    0,
    3
   ],
   "graphql-error-type-definition": [
    "na",
    0,
    3
   ],
   "graphql-versioning-policy": [
    "na",
    0,
    2
   ],
   "graphql-pagination-pattern": [
    "na",
    0,
    2
   ],
   "graphql-async-job-pattern": [
    "na",
    0,
    2
   ],
   "graphql-schema-completeness": [
    "na",
    0,
    3
   ],
   "graphql-batch-mutations": [
    "na",
    0,
    2
   ],
   "agent-friendly-404": [
    "warning",
    1,
    2
   ],
   "ax-document-structure": [
    "pass",
    3,
    3
   ],
   "ax-native-controls": [
    "pass",
    3,
    3
   ],
   "ax-accessible-names": [
    "pass",
    2,
    2
   ],
   "ax-form-labeling": [
    "na",
    0,
    2
   ],
   "ax-tree-injection-safe": [
    "pass",
    2,
    2
   ],
   "mcp-app-registry": [
    "fail",
    0,
    4
   ],
   "a2ui-support": [
    "fail",
    0,
    2
   ],
   "mcp-apps-ui-quality": [
    "na",
    0,
    4
   ],
   "mcp-view-domain": [
    "na",
    0,
    4
   ],
   "mcp-view-csp": [
    "na",
    0,
    4
   ],
   "api-schema-analysis": [
    "fail",
    0,
    2
   ],
   "function-calling-compat": [
    "fail",
    0,
    2
   ],
   "mcp-resource-quality": [
    "na",
    0,
    3
   ],
   "mpp-support": [
    "na",
    0,
    2
   ],
   "x402-support": [
    "na",
    0,
    2
   ],
   "ucp-support": [
    "na",
    0,
    3
   ],
   "acp-support": [
    "na",
    0,
    3
   ],
   "acp-delegate-payment": [
    "na",
    0,
    3
   ],
   "ap2-support": [
    "na",
    0,
    3
   ]
  },
  "flagged": [
   {
    "id": "mcp-server",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 6,
    "tier": "required",
    "est": 4.4,
    "detail": "No MCP server or manifest found"
   },
   {
    "id": "openapi-spec",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 7,
    "tier": "required",
    "est": 4,
    "detail": "No OpenAPI/Swagger specification found"
   },
   {
    "id": "webmcp",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 5,
    "tier": "required",
    "est": 3.7,
    "detail": "No WebMCP support detected - no document.modelContext / navigator.modelContext usage found (scanned 40 of 40 same-origin script bundle(s) for modelContext registrations)"
   },
   {
    "id": "mcp-app-registry",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 4,
    "tier": "recommended",
    "est": 3,
    "detail": "No MCP Apps support detected - this product has an in-agent UI surface but exposes no ui:// resources or tool UI metadata for agents to render."
   },
   {
    "id": "public-api",
    "layer": "usability",
    "status": "warning",
    "score": 3,
    "max": 7,
    "tier": "required",
    "est": 3,
    "detail": "API described in documentation at https://platform.claude.com but no machine-verifiable API surface confirmed. Best-of-protocols score: 3/7."
   },
   {
    "id": "json-ld",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 4,
    "tier": "required",
    "est": 2.3,
    "detail": "No JSON-LD structured data found on homepage"
   },
   {
    "id": "scoped-permissions",
    "layer": "usability",
    "status": "warning",
    "score": 2,
    "max": 5,
    "tier": "recommended",
    "est": 2.2,
    "detail": "Scoped permissions described at https://platform.claude.com, but no machine-readable scope declaration found (OpenAPI oauth2 scopes or RFC 9728 scopes_supported)"
   },
   {
    "id": "ard-catalog",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 1.7,
    "detail": "No /.well-known/ard.json, no same-site rel=\"ard\" link, and no legacy /.well-known/ai-catalog.json"
   },
   {
    "id": "api-schema-analysis",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.5,
    "detail": "No API schema detected"
   },
   {
    "id": "function-calling-compat",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.5,
    "detail": "No API spec found - function calling requires discoverable endpoints"
   },
   {
    "id": "oauth-support",
    "layer": "usability",
    "status": "warning",
    "score": 3,
    "max": 5,
    "tier": "required",
    "est": 1.5,
    "detail": "OAuth mentioned in documentation at https://platform.claude.com but no OAuth or OpenID Connect endpoint responded"
   },
   {
    "id": "agent-auth-discovery-metadata",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": 1.1,
    "detail": "Neither /.well-known/oauth-protected-resource nor /.well-known/oauth-authorization-server found. Probed: anthropic.com, api.anthropic.com."
   },
   {
    "id": "agent-discovery-file",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 1.1,
    "detail": "No agent discovery file found"
   },
   {
    "id": "json-ld-entity-linking",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.1,
    "detail": "No JSON-LD found - no entity linking possible"
   },
   {
    "id": "org-schema-completeness",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.1,
    "detail": "No JSON-LD found - Organization schema missing"
   },
   {
    "id": "pricing-info",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 3,
    "tier": "required",
    "est": 1.1,
    "detail": "Pricing link found but no dedicated pricing page at standard path"
   },
   {
    "id": "schema-type-breadth",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.1,
    "detail": "No extended schema types found - AI can only answer basic questions about this entity"
   },
   {
    "id": "agent-auth-endpoints-reachable",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.7,
    "detail": "No agent_auth endpoint URIs found in AS metadata or /auth.md prose; nothing to probe"
   },
   {
    "id": "agent-friendly-404",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.7,
    "detail": "The nonexistent path https://anthropic.com/__ora-404-probe-tubelm0o correctly returns HTTP 404. Partial credit: no Markdown error body was detected."
   },
   {
    "id": "auth-md-exists",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.7,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "auth-md-structure",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.7,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "mcp-multi-surface-coverage",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.7,
    "detail": "This bonus needs two MCP servers: one for your product so agents can take actions, and a separate one for your documentation so agents can answer questions from your docs."
   },
   {
    "id": "mcp-server-card",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.7,
    "detail": "No MCP server card found (checked /.well-known/mcp/server-card.json, the site's ai-catalog.json, servers[].card in mcp.json, and <server>/server-card)"
   },
   {
    "id": "oauth-protected-resource",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.7,
    "detail": "No /.well-known/oauth-protected-resource found (RFC 9728)"
   },
   {
    "id": "onboarding-friction",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.7,
    "detail": "Onboarding signals described but not verified live: free tier available, self-serve key generation, sandbox/test environment"
   },
   {
    "id": "sandbox-environment",
    "layer": "usability",
    "status": "warning",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.7,
    "detail": "Sandbox/test environment mentioned at https://platform.claude.com but no sandbox surface verified"
   },
   {
    "id": "agent-instruction",
    "layer": "accessibility",
    "status": "warning",
    "score": 2,
    "max": 3,
    "tier": "required",
    "est": 0.6,
    "detail": "When-to-use guidance found at https://platform.claude.com"
   },
   {
    "id": "llms-txt-formatting",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "The llms.txt is well-formatted with markdown links, but at 97,938 characters it exceeds the 30,000-character recommendation for a navigation index."
   },
   {
    "id": "a2a-agent-card",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.4,
    "detail": "No A2A agent card found at /.well-known/agent-card.json"
   },
   {
    "id": "agent-auth-www-authenticate",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.4,
    "detail": "No 401 with WWW-Authenticate: Bearer resource_metadata=... found. Probed [https://anthropic.com/api, https://anthropic.com/api/v1, https://anthropic.com/v1, https://anthropic.com/v2, https://anthropic.com/agent/identity,"
   },
   {
    "id": "api-catalog-rfc9727",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.4,
    "detail": "No /.well-known/api-catalog found (RFC 9727)"
   },
   {
    "id": "mcp-well-known-discovery",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.4,
    "detail": "No MCP server URL discovered"
   },
   {
    "id": "chatgpt-app-listed",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.2,
    "detail": "Not found in ChatGPT app directory"
   },
   {
    "id": "link-headers-discovery",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 0.2,
    "detail": "No HTTP Link response headers (RFC 8288) found"
   },
   {
    "id": "markdown-negotiation-vary",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.2,
    "detail": "Homepage https://anthropic.com does not meet the Markdown negotiation requirements: Accept: text/markdown returned text/html; charset=utf-8; Vary header missing Accept (got \"rsc, next-router-state-tree, next-router-prefetch,"
   },
   {
    "id": "wikipedia-presence",
    "layer": "discovery",
    "status": "warning",
    "score": 2,
    "max": 4,
    "tier": "recommended",
    "est": 0.2,
    "detail": "Wikidata Q116758847 (Anthropic) verified - draft a Wikipedia page with cited references to complete knowledge graph coverage"
   },
   {
    "id": "a2ui-support",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No A2UI or generative UI support detected"
   },
   {
    "id": "agent-mode-view",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "?mode=agent returns same content as homepage (no dedicated agent view)"
   },
   {
    "id": "agent-plugins-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No Agent Plugins manifest (plugin.json) found in discovered repos"
   },
   {
    "id": "agent-ua-markdown",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly."
   },
   {
    "id": "markdown-link-alternate",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No sampled page advertises a markdown alternate. Add <link rel=\"alternate\" type=\"text/markdown\" href=\"...\"> (or the equivalent Link response header) pointing at a markdown twin of the page."
   },
   {
    "id": "markdown-negotiation",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Missing markdown content negotiation. Homepage returned text/html when probed with Accept: text/markdown (expected text/markdown), and none of the well-known root paths (/llms.md, /auth.md, /agents.md, /developers.md, /api.md, /index.md,"
   },
   {
    "id": "markdown-url-fallback",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "Homepage does not support the .md suffix. Probed https://anthropic.com/index.md and it did not return markdown (expected text/markdown content-type or a heading-led non-HTML body)."
   },
   {
    "id": "modular-llms-txt",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No section-level llms.txt found. Tried /docs/llms.txt, /api/llms.txt, /developers/llms.txt, /guides/llms.txt, /reference/llms.txt, /news/llms.txt, /search/llms.txt. This is a bonus check: it can add a point and never costs one."
   },
   {
    "id": "nlweb-ask",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No NLWeb-conformant /ask endpoint found via GET or POST"
   },
   {
    "id": "nlweb-schema-feeds",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No schemamap: directive in robots.txt"
   },
   {
    "id": "nlweb-streaming",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "NLWeb /ask does not support SSE streaming via GET or POST"
   },
   {
    "id": "pricing-md",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No pricing.md found - agents need machine-readable pricing to compare products and make purchase recommendations"
   },
   {
    "id": "web-bot-auth-directory",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No /.well-known/http-message-signatures-directory found"
   }
  ],
  "seen": {
   "brand-search-accuracy": "anthropic.com ranks #2 for \"Anthropic\" (searched your brand name alone: no main product term from your homepage qualified)",
   "wikipedia-presence": "Wikidata Q116758847 (Anthropic) verified - draft a Wikipedia page with cited references to complete knowledge graph coverage",
   "robots-ai-policy-quality": "AI search crawlers: allowed in 3 of 3 checks (3 crawlers on 1 page). AI training crawlers: allowed in 2 of 2 checks (2 crawlers on 1 page), not scored.",
   "noindex-directives": "No noindex on the homepage: no robots, googlebot or bingbot meta tag and no X-Robots-Tag header hides it from search.",
   "sitemap": "Valid sitemap found at https://www.anthropic.com/sitemap.xml with 586 entries",
   "content-no-js": "Homepage: 1599 chars, semantic headings (1 H1 + 2 H2s + 7 H3s), 5.9% content ratio. 5 of 5 sampled inner pages have text without JavaScript.",
   "bot-detection": "Site accessible to 4 agent user-agents (ChatGPT-User, OAI-SearchBot, Claude-User, PerplexityBot).",
   "agent-discovery-file": "No agent discovery file found",
   "a2a-agent-card": "No A2A agent card found at /.well-known/agent-card.json",
   "mcp-well-known-discovery": "No MCP server URL discovered",
   "robots-agent-user-policy": "No applicable crawl or usage restriction found for 3 user-triggered agents (chatgpt-user, claude-user, perplexity-user) on 1 public page: https://anthropic.com/. Declared policy only;",
   "llms-txt-exists": "Found the llms.txt at https://platform.claude.com/llms.txt.",
   "llms-txt-formatting": "The llms.txt is well-formatted with markdown links, but at 97,938 characters it exceeds the 30,000-character recommendation for a navigation index.",
   "json-ld": "No JSON-LD structured data found on homepage",
   "public-api-docs": "Documentation site found at https://platform.claude.com",
   "metadata-completeness": "All metadata signals present: canonical URL, lang=\"en\", og:image, og:type",
   "page-token-budget": "All 6 measured pages fit an agent context budget (largest ~4K tokens)",
   "docs-auth-gate": "All 5 sampled pages are publicly readable (5 with substantive content)",
   "openapi-spec": "No OpenAPI/Swagger specification found",
   "developer-portal": "Developer portal found at /docs",
   "markdown-negotiation": "Missing markdown content negotiation. Homepage returned text/html when probed with Accept: text/markdown (expected text/markdown), and none of the well-known root paths (/llms.md, /auth.md, /agents.md, /developers.md,",
   "agent-ua-markdown": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly.",
   "agent-crawler-reachability": "Reachable to every agent we tested - ChatGPT-User: reachable, OAI-SearchBot: reachable, Claude-User: reachable, PerplexityBot: reachable",
   "public-api": "API described in documentation at https://platform.claude.com but no machine-verifiable API surface confirmed. Best-of-protocols score: 3/7.",
   "oauth-support": "OAuth mentioned in documentation at https://platform.claude.com but no OAuth or OpenID Connect endpoint responded",
   "mcp-server": "No MCP server or manifest found",
   "webmcp": "No WebMCP support detected - no document.modelContext / navigator.modelContext usage found (scanned 40 of 40 same-origin script bundle(s) for modelContext registrations)",
   "cli-tool": "CLI package found on npm: @anthropic-ai/sandbox-runtime",
   "rest-sdk-packages": "SDK packages found across 4 ecosystems: npm, pypi, go, rubygems",
   "nlweb-ask": "No NLWeb-conformant /ask endpoint found via GET or POST",
   "mpp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "x402-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "ucp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "acp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "ap2-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites"
  }
 },
 {
  "slug": "asana",
  "name": "Asana",
  "domain": "asana.com",
  "finalUrl": "https://asana.com/",
  "read": "2026-11-09",
  "scannedAt": "2026-10-27T07:50:14.273+00:00",
  "score": 74,
  "max": 100,
  "grade": "B",
  "category": "Productivity",
  "scoringVersion": null,
  "rulesUrl": null,
  "summary": "Asana offers excellent developer discoverability and SDK availability, but lacks an OpenAPI specification.",
  "layers": [
   {
    "id": "discovery",
    "name": "Discovery",
    "score": 17,
    "max": 18
   },
   {
    "id": "accessibility",
    "name": "Access",
    "score": 48,
    "max": 61
   },
   {
    "id": "usability",
    "name": "Usability",
    "score": 43,
    "max": 72
   },
   {
    "id": "payments",
    "name": "Payments",
    "score": 0,
    "max": 0
   }
  ],
  "checks": {
   "ard-catalog": [
    "fail",
    0,
    1
   ],
   "ai-catalog-published": [
    "na",
    0,
    1
   ],
   "ard-entries-valid": [
    "na",
    0,
    2
   ],
   "ard-trust-manifest": [
    "na",
    0,
    2
   ],
   "agentic-search-usecase": [
    "na",
    0,
    6
   ],
   "agentic-search-specific": [
    "pass",
    3,
    3
   ],
   "brand-search-accuracy": [
    "pass",
    3,
    3
   ],
   "wikipedia-presence": [
    "pass",
    4,
    4
   ],
   "robots-ai-policy-quality": [
    "pass",
    2,
    2
   ],
   "mcp-registry-listed": [
    "pass",
    1,
    1
   ],
   "npm-sdk-package": [
    "pass",
    1,
    1
   ],
   "agent-rules-repo": [
    "fail",
    0,
    1
   ],
   "agent-plugins-repo": [
    "fail",
    0,
    1
   ],
   "registry-branding": [
    "fail",
    0,
    2
   ],
   "chatgpt-app-listed": [
    "pass",
    2,
    2
   ],
   "noindex-directives": [
    "pass",
    1,
    1
   ],
   "sitemap": [
    "pass",
    2,
    2
   ],
   "content-no-js": [
    "warning",
    2,
    3
   ],
   "bot-detection": [
    "pass",
    2,
    2
   ],
   "agent-discovery-file": [
    "fail",
    0,
    2
   ],
   "agent-skills-index-v2": [
    "na",
    0,
    2
   ],
   "a2a-agent-card": [
    "fail",
    0,
    2
   ],
   "skills-sh-listed": [
    "pass",
    1,
    1
   ],
   "pricing-md": [
    "pass",
    2,
    2
   ],
   "nlweb-schema-feeds": [
    "fail",
    0,
    1
   ],
   "mcp-well-known-discovery": [
    "warning",
    1,
    2
   ],
   "agent-mode-view": [
    "pass",
    2,
    2
   ],
   "link-headers-discovery": [
    "fail",
    0,
    1
   ],
   "markdown-url-fallback": [
    "pass",
    2,
    2
   ],
   "modular-llms-txt": [
    "fail",
    0,
    1
   ],
   "sitemap-lastmod": [
    "pass",
    1,
    1
   ],
   "robots-agent-user-policy": [
    "pass",
    2,
    2
   ],
   "llms-txt-exists": [
    "pass",
    1,
    1
   ],
   "llms-txt-formatting": [
    "pass",
    2,
    2
   ],
   "json-ld": [
    "pass",
    4,
    4
   ],
   "pricing-info": [
    "pass",
    3,
    3
   ],
   "public-api-docs": [
    "pass",
    3,
    3
   ],
   "agent-instruction": [
    "pass",
    3,
    3
   ],
   "skills-sh-quality": [
    "warning",
    1,
    2
   ],
   "json-ld-entity-linking": [
    "warning",
    1,
    2
   ],
   "metadata-completeness": [
    "pass",
    2,
    2
   ],
   "org-schema-completeness": [
    "warning",
    1,
    2
   ],
   "schema-type-breadth": [
    "warning",
    1,
    2
   ],
   "trust-anchors": [
    "pass",
    2,
    2
   ],
   "llms-txt-links-resolve": [
    "pass",
    2,
    2
   ],
   "markdown-link-alternate": [
    "pass",
    1,
    1
   ],
   "markdown-frontmatter": [
    "fail",
    0,
    1
   ],
   "redirect-hygiene": [
    "pass",
    1,
    1
   ],
   "page-token-budget": [
    "pass",
    1,
    1
   ],
   "code-fence-validity": [
    "pass",
    1,
    1
   ],
   "docs-auth-gate": [
    "pass",
    2,
    2
   ],
   "openapi-spec": [
    "fail",
    0,
    7
   ],
   "developer-portal": [
    "pass",
    6,
    6
   ],
   "api-catalog-rfc9727": [
    "fail",
    0,
    2
   ],
   "markdown-negotiation": [
    "pass",
    1,
    1
   ],
   "markdown-negotiation-vary": [
    "pass",
    1,
    1
   ],
   "agent-ua-markdown": [
    "fail",
    0,
    1
   ],
   "agent-crawler-reachability": [
    "pass",
    2,
    2
   ],
   "mcp-tool-descriptions": [
    "na",
    0,
    3
   ],
   "mcp-param-schemas": [
    "na",
    0,
    2
   ],
   "mcp-server-identity": [
    "na",
    0,
    1
   ],
   "mcp-tool-listing": [
    "na",
    0,
    3
   ],
   "mcp-tool-naming": [
    "na",
    0,
    2
   ],
   "public-api": [
    "pass",
    7,
    7
   ],
   "oauth-support": [
    "pass",
    5,
    5
   ],
   "scoped-permissions": [
    "warning",
    2,
    5
   ],
   "mcp-auth-mechanism": [
    "warning",
    1,
    2
   ],
   "mcp-oauth-metadata": [
    "fail",
    0,
    2
   ],
   "mcp-pkce-s256": [
    "fail",
    0,
    2
   ],
   "onboarding-friction": [
    "warning",
    1,
    2
   ],
   "web-bot-auth-directory": [
    "fail",
    0,
    2
   ],
   "oauth-protected-resource": [
    "pass",
    2,
    2
   ],
   "auth-md-exists": [
    "fail",
    0,
    2
   ],
   "auth-md-structure": [
    "fail",
    0,
    2
   ],
   "auth-md-walkthrough-simulation": [
    "na",
    0,
    2
   ],
   "agent-auth-discovery-metadata": [
    "warning",
    1,
    3
   ],
   "agent-auth-www-authenticate": [
    "pass",
    1,
    1
   ],
   "agent-auth-endpoints-reachable": [
    "fail",
    0,
    2
   ],
   "pap-discovery": [
    "na",
    0,
    2
   ],
   "pap-issuer-binding": [
    "na",
    0,
    2
   ],
   "pap-auth-config": [
    "na",
    0,
    2
   ],
   "pap-interfaces": [
    "na",
    0,
    2
   ],
   "pap-endpoint-enforcement": [
    "na",
    0,
    2
   ],
   "pap-cross-protocol": [
    "na",
    0,
    2
   ],
   "mcp-server": [
    "warning",
    5,
    6
   ],
   "mcp-error-handling": [
    "na",
    0,
    2
   ],
   "mcp-transport-modern": [
    "na",
    0,
    1
   ],
   "webmcp": [
    "fail",
    0,
    5
   ],
   "rate-limit-headers": [
    "warning",
    1,
    2
   ],
   "idempotency-key-support": [
    "fail",
    0,
    3
   ],
   "json-error-responses": [
    "pass",
    4,
    4
   ],
   "api-error-model": [
    "na",
    0,
    3
   ],
   "api-versioning-policy": [
    "na",
    0,
    3
   ],
   "pagination-shape": [
    "na",
    0,
    2
   ],
   "async-job-pattern": [
    "na",
    0,
    2
   ],
   "cli-tool": [
    "fail",
    0,
    3
   ],
   "rest-sdk-packages": [
    "pass",
    3,
    3
   ],
   "nlweb-ask": [
    "fail",
    0,
    1
   ],
   "nlweb-streaming": [
    "fail",
    0,
    1
   ],
   "response-schema-coverage": [
    "na",
    0,
    2
   ],
   "mcp-tool-annotations": [
    "na",
    0,
    2
   ],
   "mcp-server-card": [
    "fail",
    0,
    2
   ],
   "mcp-multi-surface-coverage": [
    "fail",
    0,
    2
   ],
   "sandbox-environment": [
    "fail",
    0,
    2
   ],
   "batch-endpoints": [
    "na",
    0,
    2
   ],
   "mcp-resource-listing": [
    "na",
    0,
    3
   ],
   "graphql-error-type-definition": [
    "fail",
    0,
    3
   ],
   "graphql-versioning-policy": [
    "fail",
    0,
    2
   ],
   "graphql-pagination-pattern": [
    "fail",
    0,
    2
   ],
   "graphql-async-job-pattern": [
    "fail",
    0,
    2
   ],
   "graphql-schema-completeness": [
    "na",
    0,
    3
   ],
   "graphql-batch-mutations": [
    "na",
    0,
    2
   ],
   "agent-friendly-404": [
    "warning",
    1,
    2
   ],
   "ax-document-structure": [
    "na",
    0,
    3
   ],
   "ax-native-controls": [
    "pass",
    3,
    3
   ],
   "ax-accessible-names": [
    "pass",
    2,
    2
   ],
   "ax-form-labeling": [
    "na",
    0,
    2
   ],
   "ax-tree-injection-safe": [
    "pass",
    2,
    2
   ],
   "mcp-app-registry": [
    "na",
    0,
    4
   ],
   "a2ui-support": [
    "fail",
    0,
    2
   ],
   "mcp-apps-ui-quality": [
    "na",
    0,
    4
   ],
   "mcp-view-domain": [
    "na",
    0,
    4
   ],
   "mcp-view-csp": [
    "na",
    0,
    4
   ],
   "api-schema-analysis": [
    "pass",
    2,
    2
   ],
   "function-calling-compat": [
    "fail",
    0,
    2
   ],
   "mcp-resource-quality": [
    "na",
    0,
    3
   ],
   "mpp-support": [
    "na",
    0,
    2
   ],
   "x402-support": [
    "na",
    0,
    2
   ],
   "ucp-support": [
    "na",
    0,
    3
   ],
   "acp-support": [
    "na",
    0,
    3
   ],
   "acp-delegate-payment": [
    "na",
    0,
    3
   ],
   "ap2-support": [
    "na",
    0,
    3
   ]
  },
  "flagged": [
   {
    "id": "openapi-spec",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 7,
    "tier": "required",
    "est": 3.8,
    "detail": "No OpenAPI/Swagger specification found"
   },
   {
    "id": "webmcp",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 5,
    "tier": "required",
    "est": 3.1,
    "detail": "No WebMCP support detected - no document.modelContext / navigator.modelContext usage found (scanned 64 of 64 same-origin script bundle(s) for modelContext registrations)"
   },
   {
    "id": "cli-tool",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": 1.9,
    "detail": "No CLI tool found"
   },
   {
    "id": "graphql-error-type-definition",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": 1.9,
    "detail": "GraphQL introspection auth-gated and no typed graphql error model documentation found on GraphQL-tagged pages"
   },
   {
    "id": "idempotency-key-support",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": 1.9,
    "detail": "GraphQL introspection auth-gated and no idempotency documentation found on GraphQL-tagged pages"
   },
   {
    "id": "scoped-permissions",
    "layer": "usability",
    "status": "warning",
    "score": 2,
    "max": 5,
    "tier": "recommended",
    "est": 1.9,
    "detail": "Scoped permissions described at https://asana.com, but no machine-readable scope declaration found (OpenAPI oauth2 scopes or RFC 9728 scopes_supported)"
   },
   {
    "id": "ard-catalog",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 1.2,
    "detail": "No /.well-known/ard.json, no same-site rel=\"ard\" link, and no legacy /.well-known/ai-catalog.json"
   },
   {
    "id": "function-calling-compat",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.2,
    "detail": "No API spec found - function calling requires discoverable endpoints"
   },
   {
    "id": "graphql-async-job-pattern",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.2,
    "detail": "GraphQL introspection auth-gated and no graphql async-job pattern documentation found on GraphQL-tagged pages"
   },
   {
    "id": "graphql-pagination-pattern",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.2,
    "detail": "GraphQL introspection auth-gated and no graphql pagination pattern documentation found on GraphQL-tagged pages"
   },
   {
    "id": "graphql-versioning-policy",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.2,
    "detail": "GraphQL introspection auth-gated and no graphql versioning / deprecation policy documentation found on GraphQL-tagged pages"
   },
   {
    "id": "agent-discovery-file",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 1.1,
    "detail": "No agent discovery file found"
   },
   {
    "id": "agent-friendly-404",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "The nonexistent path https://asana.com/__ora-404-probe-p8z2pzs4 correctly returns HTTP 404. Partial credit: no Markdown error body was detected."
   },
   {
    "id": "mcp-server",
    "layer": "usability",
    "status": "warning",
    "score": 5,
    "max": 6,
    "tier": "required",
    "est": 0.6,
    "detail": "MCP server detected at https://mcp.asana.com/mcp; it requires authentication. Presence is verified (5/6), but Ora could not inspect its tools or verify access scopes without credentials."
   },
   {
    "id": "onboarding-friction",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "Onboarding signals described but not verified live: free tier available, self-serve key generation, sandbox/test environment"
   },
   {
    "id": "rate-limit-headers",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "The live API at https://developers.asana.com/ returns legacy x-ratelimit-limit, x-ratelimit-remaining, x-ratelimit-reset headers. Adopting the IETF RateLimit-* standard would earn full credit."
   },
   {
    "id": "agent-auth-discovery-metadata",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 3,
    "tier": "recommended",
    "est": 0.5,
    "detail": "PRM + AS metadata both present (PRM discovered at https://mcp.asana.com) (AS metadata fetched from advertised origin https://mcp.asana.com) but AS metadata has no agent_auth block"
   },
   {
    "id": "agent-auth-endpoints-reachable",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "No agent_auth endpoint URIs found in AS metadata or /auth.md prose; nothing to probe"
   },
   {
    "id": "auth-md-exists",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.5,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "auth-md-structure",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "content-no-js",
    "layer": "accessibility",
    "status": "warning",
    "score": 2,
    "max": 3,
    "tier": "required",
    "est": 0.5,
    "detail": "7375 chars with H1, but heading hierarchy skips H1 to H4; 4.6% content ratio is below the 5% target"
   },
   {
    "id": "json-ld-entity-linking",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "Entity linking to linkedin.com - add more authority profiles (Wikipedia, Wikidata, LinkedIn, GitHub)"
   },
   {
    "id": "mcp-multi-surface-coverage",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "We found an MCP candidate for your product at https://mcp.asana.com/mcp, but could not verify that agents can use it. This bonus needs two MCP servers: one for your product so agents can take actions,"
   },
   {
    "id": "mcp-oauth-metadata",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "OAuth protected-resource metadata was found for https://mcp.asana.com/mcp, but its resource field identifies https://mcp.asana.com/. The resource must exactly match the requested endpoint (RFC 9728)."
   },
   {
    "id": "mcp-pkce-s256",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "No code_challenge_methods_supported in OAuth metadata for product MCP"
   },
   {
    "id": "mcp-server-card",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "No MCP server card found for https://mcp.asana.com/mcp (checked /.well-known/mcp/server-card.json, the site's ai-catalog.json, servers[].card in mcp.json, and <server>/server-card)"
   },
   {
    "id": "org-schema-completeness",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "Organization schema found but missing: address"
   },
   {
    "id": "sandbox-environment",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "No sandbox or test environment found"
   },
   {
    "id": "schema-type-breadth",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "Some extended schema types found: BreadcrumbList - add 2 more types that match what the homepage shows, for full coverage"
   },
   {
    "id": "a2a-agent-card",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.2,
    "detail": "No A2A agent card found at /.well-known/agent-card.json"
   },
   {
    "id": "api-catalog-rfc9727",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.2,
    "detail": "No /.well-known/api-catalog found (RFC 9727)"
   },
   {
    "id": "mcp-auth-mechanism",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.2,
    "detail": "product MCP requires authentication but no standard OAuth discovery metadata"
   },
   {
    "id": "link-headers-discovery",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 0.1,
    "detail": "No HTTP Link response headers (RFC 8288) found"
   },
   {
    "id": "mcp-well-known-discovery",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.1,
    "detail": "MCP server at https://mcp.asana.com/mcp - list its server card, hosted on your own domain, in /.well-known/ai-catalog.json so MCP clients can discover it"
   },
   {
    "id": "a2ui-support",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No A2UI or generative UI support detected"
   },
   {
    "id": "agent-plugins-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No Agent Plugins manifest (plugin.json) found in discovered repos"
   },
   {
    "id": "agent-rules-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Could not locate a public repo containing agent configs or rules. If our probes missed it, AI coding agents likely will too - link the repo from your homepage or docs so it's discoverable."
   },
   {
    "id": "agent-ua-markdown",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly."
   },
   {
    "id": "markdown-frontmatter",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "None of the 2 served markdown docs opens with a --- frontmatter block. Add title, description, canonical, and last-updated so agents get metadata without scraping."
   },
   {
    "id": "modular-llms-txt",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No section-level llms.txt found. Tried /docs/llms.txt, /api/llms.txt, /developers/llms.txt, /guides/llms.txt, /reference/llms.txt, /pricing/llms.txt, /sales/llms.txt, /create-account/llms.txt, /apps/llms.txt, /whats-new/llms.txt."
   },
   {
    "id": "nlweb-ask",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No NLWeb-conformant /ask endpoint found via GET or POST"
   },
   {
    "id": "nlweb-schema-feeds",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No schemamap: directive in robots.txt"
   },
   {
    "id": "nlweb-streaming",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "NLWeb /ask does not support SSE streaming via GET or POST"
   },
   {
    "id": "registry-branding",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No registry branding (name, icon, description) found"
   },
   {
    "id": "skills-sh-quality",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "Skills.sh presence exists but limited - 3 skills (goal: 5+), 3 installs (goal: 200+)"
   },
   {
    "id": "web-bot-auth-directory",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No /.well-known/http-message-signatures-directory found"
   }
  ],
  "seen": {
   "brand-search-accuracy": "asana.com ranks #2 for \"Asana work management\"",
   "wikipedia-presence": "Wikipedia \"Asana, Inc.\" and Wikidata Q4468073 both verified - domain confirmed on both sources",
   "robots-ai-policy-quality": "AI search crawlers: allowed in 18 of 18 checks (3 crawlers on 6 pages). AI training crawlers: allowed in 12 of 12 checks (2 crawlers on 6 pages), not scored.",
   "noindex-directives": "No noindex on the homepage: no robots, googlebot or bingbot meta tag and no X-Robots-Tag header hides it from search.",
   "sitemap": "Valid sitemap found at https://asana.com/sitemap-index.xml with multiple sitemaps entries",
   "content-no-js": "7375 chars with H1, but heading hierarchy skips H1 to H4; 4.6% content ratio is below the 5% target",
   "bot-detection": "Site accessible to 4 agent user-agents (ChatGPT-User, OAI-SearchBot, Claude-User, PerplexityBot).",
   "agent-discovery-file": "No agent discovery file found",
   "a2a-agent-card": "No A2A agent card found at /.well-known/agent-card.json",
   "mcp-well-known-discovery": "MCP server at https://mcp.asana.com/mcp - list its server card, hosted on your own domain, in /.well-known/ai-catalog.json so MCP clients can discover it",
   "robots-agent-user-policy": "No applicable crawl or usage restriction found for 3 user-triggered agents (chatgpt-user, claude-user, perplexity-user) on 1 public page: https://asana.com/. Declared policy only;",
   "llms-txt-exists": "Found the llms.txt at https://asana.com/llms.txt.",
   "llms-txt-formatting": "The llms.txt is well-formatted: 55 lines with markdown links, 5,691 characters in total.",
   "json-ld": "Rich JSON-LD identity: Organization with name, description, url, and sameAs/logo/address (1 block(s))",
   "public-api-docs": "Documentation site found at https://asana.com",
   "metadata-completeness": "All metadata signals present: canonical URL, lang=\"en\", og:image, og:type",
   "page-token-budget": "All 8 measured pages fit an agent context budget (largest ~2K tokens)",
   "docs-auth-gate": "All 5 sampled pages are publicly readable (5 with substantive content)",
   "openapi-spec": "No OpenAPI/Swagger specification found",
   "developer-portal": "Developer portal found at /developers",
   "markdown-negotiation": "Path-suffix markdown docs served with text/markdown content-type: /developers.md, /index.md",
   "agent-ua-markdown": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly.",
   "agent-crawler-reachability": "Reachable to every agent we tested - ChatGPT-User: reachable, OAI-SearchBot: reachable, Claude-User: reachable, PerplexityBot: reachable",
   "public-api": "REST API documentation found at https://developers.asana.com/docs/. GraphQL endpoint at https://api.asana.com/graphql is reachable; introspection requires authentication (API key / OAuth),",
   "oauth-support": "OAuth authorization server metadata at https://mcp.asana.com (issuer=https://mcp.asana.com)",
   "mcp-server": "MCP server detected at https://mcp.asana.com/mcp; it requires authentication. Presence is verified (5/6), but Ora could not inspect its tools or verify access scopes without credentials.",
   "webmcp": "No WebMCP support detected - no document.modelContext / navigator.modelContext usage found (scanned 64 of 64 same-origin script bundle(s) for modelContext registrations)",
   "cli-tool": "No CLI tool found",
   "rest-sdk-packages": "SDK packages found across 3 ecosystems: npm, pypi, rubygems",
   "nlweb-ask": "No NLWeb-conformant /ask endpoint found via GET or POST",
   "mpp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "x402-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "ucp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "acp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "ap2-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites"
  }
 },
 {
  "slug": "atlassian",
  "name": "Atlassian",
  "domain": "atlassian.com",
  "finalUrl": "https://www.atlassian.com/",
  "read": "2026-11-09",
  "scannedAt": "2026-11-09T01:12:51.853+00:00",
  "score": 70,
  "max": 100,
  "grade": "B",
  "category": "Productivity",
  "scoringVersion": 2,
  "rulesUrl": "https://ora.ai/api/ranker/releases/2/rules",
  "summary": "Atlassian offers strong developer discoverability and an installable ChatGPT app, but lacks a published OpenAPI specification for agents to integrate against.",
  "layers": [
   {
    "id": "discovery",
    "name": "Discovery",
    "score": 16,
    "max": 17
   },
   {
    "id": "accessibility",
    "name": "Access",
    "score": 41,
    "max": 58
   },
   {
    "id": "usability",
    "name": "Usability",
    "score": 35,
    "max": 62
   },
   {
    "id": "payments",
    "name": "Payments",
    "score": 0,
    "max": 0
   }
  ],
  "checks": {
   "ard-catalog": [
    "fail",
    0,
    1
   ],
   "ai-catalog-published": [
    "na",
    0,
    1
   ],
   "ard-entries-valid": [
    "na",
    0,
    2
   ],
   "ard-trust-manifest": [
    "na",
    0,
    2
   ],
   "agentic-search-usecase": [
    "na",
    0,
    6
   ],
   "agentic-search-specific": [
    "pass",
    3,
    3
   ],
   "brand-search-accuracy": [
    "pass",
    3,
    3
   ],
   "wikipedia-presence": [
    "pass",
    4,
    4
   ],
   "robots-ai-policy-quality": [
    "pass",
    2,
    2
   ],
   "mcp-registry-listed": [
    "na",
    0,
    1
   ],
   "npm-sdk-package": [
    "pass",
    1,
    1
   ],
   "agent-rules-repo": [
    "fail",
    0,
    1
   ],
   "agent-plugins-repo": [
    "fail",
    0,
    1
   ],
   "registry-branding": [
    "na",
    0,
    2
   ],
   "chatgpt-app-listed": [
    "pass",
    2,
    2
   ],
   "noindex-directives": [
    "pass",
    1,
    1
   ],
   "sitemap": [
    "pass",
    2,
    2
   ],
   "content-no-js": [
    "warning",
    1,
    3
   ],
   "bot-detection": [
    "pass",
    2,
    2
   ],
   "agent-discovery-file": [
    "fail",
    0,
    2
   ],
   "agent-skills-index-v2": [
    "na",
    0,
    2
   ],
   "a2a-agent-card": [
    "fail",
    0,
    2
   ],
   "skills-sh-listed": [
    "pass",
    1,
    1
   ],
   "pricing-md": [
    "fail",
    0,
    2
   ],
   "nlweb-schema-feeds": [
    "fail",
    0,
    1
   ],
   "mcp-well-known-discovery": [
    "fail",
    0,
    2
   ],
   "agent-mode-view": [
    "pass",
    2,
    2
   ],
   "link-headers-discovery": [
    "fail",
    0,
    1
   ],
   "markdown-url-fallback": [
    "fail",
    0,
    2
   ],
   "modular-llms-txt": [
    "fail",
    0,
    1
   ],
   "sitemap-lastmod": [
    "warning",
    0,
    1
   ],
   "robots-agent-user-policy": [
    "pass",
    2,
    2
   ],
   "llms-txt-exists": [
    "pass",
    1,
    1
   ],
   "llms-txt-formatting": [
    "pass",
    2,
    2
   ],
   "json-ld": [
    "pass",
    4,
    4
   ],
   "pricing-info": [
    "fail",
    0,
    3
   ],
   "public-api-docs": [
    "pass",
    3,
    3
   ],
   "agent-instruction": [
    "pass",
    3,
    3
   ],
   "skills-sh-quality": [
    "pass",
    2,
    2
   ],
   "json-ld-entity-linking": [
    "pass",
    2,
    2
   ],
   "metadata-completeness": [
    "pass",
    2,
    2
   ],
   "org-schema-completeness": [
    "pass",
    2,
    2
   ],
   "schema-type-breadth": [
    "fail",
    0,
    2
   ],
   "trust-anchors": [
    "warning",
    1,
    2
   ],
   "llms-txt-links-resolve": [
    "pass",
    2,
    2
   ],
   "markdown-link-alternate": [
    "fail",
    0,
    1
   ],
   "markdown-frontmatter": [
    "na",
    0,
    1
   ],
   "redirect-hygiene": [
    "pass",
    1,
    1
   ],
   "page-token-budget": [
    "pass",
    1,
    1
   ],
   "code-fence-validity": [
    "pass",
    1,
    1
   ],
   "docs-auth-gate": [
    "pass",
    2,
    2
   ],
   "openapi-spec": [
    "fail",
    0,
    7
   ],
   "developer-portal": [
    "pass",
    6,
    6
   ],
   "api-catalog-rfc9727": [
    "fail",
    0,
    2
   ],
   "markdown-negotiation": [
    "fail",
    0,
    1
   ],
   "markdown-negotiation-vary": [
    "fail",
    0,
    1
   ],
   "agent-ua-markdown": [
    "fail",
    0,
    1
   ],
   "agent-crawler-reachability": [
    "pass",
    2,
    2
   ],
   "mcp-tool-descriptions": [
    "na",
    0,
    3
   ],
   "mcp-param-schemas": [
    "na",
    0,
    2
   ],
   "mcp-server-identity": [
    "na",
    0,
    1
   ],
   "mcp-tool-listing": [
    "na",
    0,
    3
   ],
   "mcp-tool-naming": [
    "na",
    0,
    2
   ],
   "public-api": [
    "pass",
    7,
    7
   ],
   "oauth-support": [
    "pass",
    5,
    5
   ],
   "scoped-permissions": [
    "fail",
    0,
    5
   ],
   "mcp-auth-mechanism": [
    "na",
    0,
    2
   ],
   "mcp-oauth-metadata": [
    "na",
    0,
    2
   ],
   "mcp-pkce-s256": [
    "na",
    0,
    2
   ],
   "onboarding-friction": [
    "warning",
    1,
    2
   ],
   "web-bot-auth-directory": [
    "fail",
    0,
    2
   ],
   "oauth-protected-resource": [
    "fail",
    0,
    2
   ],
   "auth-md-exists": [
    "fail",
    0,
    2
   ],
   "auth-md-structure": [
    "fail",
    0,
    2
   ],
   "auth-md-walkthrough-simulation": [
    "na",
    0,
    2
   ],
   "agent-auth-discovery-metadata": [
    "fail",
    0,
    3
   ],
   "agent-auth-www-authenticate": [
    "fail",
    0,
    1
   ],
   "agent-auth-endpoints-reachable": [
    "fail",
    0,
    2
   ],
   "pap-discovery": [
    "na",
    0,
    2
   ],
   "pap-issuer-binding": [
    "na",
    0,
    2
   ],
   "pap-auth-config": [
    "na",
    0,
    2
   ],
   "pap-interfaces": [
    "na",
    0,
    2
   ],
   "pap-endpoint-enforcement": [
    "na",
    0,
    2
   ],
   "pap-cross-protocol": [
    "na",
    0,
    2
   ],
   "mcp-server": [
    "warning",
    5,
    6
   ],
   "mcp-error-handling": [
    "na",
    0,
    2
   ],
   "mcp-transport-modern": [
    "na",
    0,
    1
   ],
   "webmcp": [
    "fail",
    0,
    5
   ],
   "rate-limit-headers": [
    "warning",
    1,
    2
   ],
   "idempotency-key-support": [
    "fail",
    0,
    3
   ],
   "json-error-responses": [
    "pass",
    4,
    4
   ],
   "api-error-model": [
    "na",
    0,
    3
   ],
   "api-versioning-policy": [
    "na",
    0,
    3
   ],
   "pagination-shape": [
    "na",
    0,
    2
   ],
   "async-job-pattern": [
    "na",
    0,
    2
   ],
   "cli-tool": [
    "warning",
    2,
    3
   ],
   "rest-sdk-packages": [
    "warning",
    2,
    3
   ],
   "nlweb-ask": [
    "pass",
    1,
    1
   ],
   "nlweb-streaming": [
    "fail",
    0,
    1
   ],
   "response-schema-coverage": [
    "na",
    0,
    2
   ],
   "mcp-tool-annotations": [
    "na",
    0,
    2
   ],
   "mcp-server-card": [
    "fail",
    0,
    2
   ],
   "mcp-multi-surface-coverage": [
    "fail",
    0,
    2
   ],
   "sandbox-environment": [
    "warning",
    0,
    2
   ],
   "batch-endpoints": [
    "na",
    0,
    2
   ],
   "mcp-resource-listing": [
    "na",
    0,
    3
   ],
   "graphql-error-type-definition": [
    "na",
    0,
    3
   ],
   "graphql-versioning-policy": [
    "na",
    0,
    2
   ],
   "graphql-pagination-pattern": [
    "na",
    0,
    2
   ],
   "graphql-async-job-pattern": [
    "na",
    0,
    2
   ],
   "graphql-schema-completeness": [
    "na",
    0,
    3
   ],
   "graphql-batch-mutations": [
    "na",
    0,
    2
   ],
   "agent-friendly-404": [
    "warning",
    1,
    2
   ],
   "ax-document-structure": [
    "na",
    0,
    3
   ],
   "ax-native-controls": [
    "pass",
    3,
    3
   ],
   "ax-accessible-names": [
    "pass",
    2,
    2
   ],
   "ax-form-labeling": [
    "na",
    0,
    2
   ],
   "ax-tree-injection-safe": [
    "pass",
    2,
    2
   ],
   "mcp-app-registry": [
    "fail",
    0,
    4
   ],
   "a2ui-support": [
    "fail",
    0,
    2
   ],
   "mcp-apps-ui-quality": [
    "na",
    0,
    4
   ],
   "mcp-view-domain": [
    "na",
    0,
    4
   ],
   "mcp-view-csp": [
    "na",
    0,
    4
   ],
   "api-schema-analysis": [
    "fail",
    0,
    2
   ],
   "function-calling-compat": [
    "fail",
    0,
    2
   ],
   "mcp-resource-quality": [
    "na",
    0,
    3
   ],
   "mpp-support": [
    "na",
    0,
    2
   ],
   "x402-support": [
    "na",
    0,
    2
   ],
   "ucp-support": [
    "na",
    0,
    3
   ],
   "acp-support": [
    "na",
    0,
    3
   ],
   "acp-delegate-payment": [
    "na",
    0,
    3
   ],
   "ap2-support": [
    "na",
    0,
    3
   ]
  },
  "flagged": [
   {
    "id": "openapi-spec",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 7,
    "tier": "required",
    "est": 4,
    "detail": "No OpenAPI/Swagger specification found"
   },
   {
    "id": "scoped-permissions",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 5,
    "tier": "recommended",
    "est": 3.6,
    "detail": "No declared OAuth scopes, security schemes, or scoped-permission documentation found"
   },
   {
    "id": "webmcp",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 5,
    "tier": "required",
    "est": 3.6,
    "detail": "No WebMCP support detected - no document.modelContext / navigator.modelContext usage found"
   },
   {
    "id": "mcp-app-registry",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 4,
    "tier": "recommended",
    "est": 2.9,
    "detail": "No MCP Apps support detected - this product has an in-agent UI surface but exposes no ui:// resources or tool UI metadata for agents to render."
   },
   {
    "id": "idempotency-key-support",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": 2.2,
    "detail": "No GraphQL idempotency-key signal"
   },
   {
    "id": "pricing-info",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "required",
    "est": 1.7,
    "detail": "No pricing page or pricing data found"
   },
   {
    "id": "api-schema-analysis",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.4,
    "detail": "GraphQL: endpoint detected but no schema reachable"
   },
   {
    "id": "function-calling-compat",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.4,
    "detail": "No API spec found - function calling requires discoverable endpoints"
   },
   {
    "id": "ard-catalog",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 1.3,
    "detail": "No /.well-known/ard.json, no same-site rel=\"ard\" link, and no legacy /.well-known/ai-catalog.json"
   },
   {
    "id": "agent-discovery-file",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 1.1,
    "detail": "No agent discovery file found"
   },
   {
    "id": "content-no-js",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 3,
    "tier": "required",
    "est": 1.1,
    "detail": "Homepage: The homepage has little text without JavaScript (70 chars), though nothing in it shows it needs JavaScript to render. 3 of 3 sampled inner pages have text without JavaScript (2 skipped)."
   },
   {
    "id": "schema-type-breadth",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.1,
    "detail": "No extended schema types found - AI can only answer basic questions about this entity"
   },
   {
    "id": "agent-auth-discovery-metadata",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": 0.9,
    "detail": "Neither /.well-known/oauth-protected-resource nor /.well-known/oauth-authorization-server found. Probed: atlassian.com, api.atlassian.com."
   },
   {
    "id": "agent-friendly-404",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.7,
    "detail": "Nonexistent paths return HTTP 403 instead of 404/410 - agents get a non-200 signal but not the standard not-found semantics"
   },
   {
    "id": "cli-tool",
    "layer": "usability",
    "status": "warning",
    "score": 2,
    "max": 3,
    "tier": "recommended",
    "est": 0.7,
    "detail": "CLI tool mentioned in llms.txt"
   },
   {
    "id": "mcp-server",
    "layer": "usability",
    "status": "warning",
    "score": 5,
    "max": 6,
    "tier": "required",
    "est": 0.7,
    "detail": "First-party MCP server published by product org (npm, @atlassian/mcp-compressor, 13545 score). Add live handshake at /.well-known/mcp for full credit."
   },
   {
    "id": "onboarding-friction",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.7,
    "detail": "Onboarding signals described but not verified live: free tier available, self-serve key generation, sandbox/test environment"
   },
   {
    "id": "rate-limit-headers",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.7,
    "detail": "The live API at https://api.atlassian.com/ returns legacy x-ratelimit-limit, x-ratelimit-remaining, x-ratelimit-reset headers. Adopting the IETF RateLimit-* standard would earn full credit."
   },
   {
    "id": "rest-sdk-packages",
    "layer": "usability",
    "status": "warning",
    "score": 2,
    "max": 3,
    "tier": "recommended",
    "est": 0.7,
    "detail": "SDK packages found in npm, rubygems"
   },
   {
    "id": "agent-auth-endpoints-reachable",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "No agent_auth endpoint URIs found in AS metadata or /auth.md prose; nothing to probe"
   },
   {
    "id": "auth-md-exists",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.6,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "auth-md-structure",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "mcp-multi-surface-coverage",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "This bonus needs two MCP servers: one for your product so agents can take actions, and a separate one for your documentation so agents can answer questions from your docs."
   },
   {
    "id": "mcp-server-card",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "No MCP server card found (checked /.well-known/mcp/server-card.json, the site's ai-catalog.json, servers[].card in mcp.json, and <server>/server-card)"
   },
   {
    "id": "oauth-protected-resource",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.6,
    "detail": "No /.well-known/oauth-protected-resource found (RFC 9728)"
   },
   {
    "id": "sandbox-environment",
    "layer": "usability",
    "status": "warning",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "Sandbox/test environment mentioned at https://developer.atlassian.com/cloud/jira/platform/getting-started-with-connect/ but no sandbox surface verified"
   },
   {
    "id": "trust-anchors",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "required",
    "est": 0.6,
    "detail": "About, Privacy pages verified - missing: Contact"
   },
   {
    "id": "a2a-agent-card",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.3,
    "detail": "No A2A agent card found at /.well-known/agent-card.json"
   },
   {
    "id": "agent-auth-www-authenticate",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.3,
    "detail": "No 401 with WWW-Authenticate: Bearer resource_metadata=... found. Probed [https://atlassian.com/api, https://atlassian.com/api/v1, https://atlassian.com/v1, https://atlassian.com/v2, https://atlassian.com/agent/identity,"
   },
   {
    "id": "api-catalog-rfc9727",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.3,
    "detail": "No /.well-known/api-catalog found (RFC 9727)"
   },
   {
    "id": "mcp-well-known-discovery",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.3,
    "detail": "No MCP server URL discovered"
   },
   {
    "id": "link-headers-discovery",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 0.2,
    "detail": "No HTTP Link response headers (RFC 8288) found"
   },
   {
    "id": "markdown-negotiation-vary",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.2,
    "detail": "Homepage https://atlassian.com does not meet the Markdown negotiation requirements: Accept: text/markdown returned text/html; charset=utf-8; Vary header missing Accept (got \"accept-encoding\")"
   },
   {
    "id": "sitemap-lastmod",
    "layer": "accessibility",
    "status": "warning",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.2,
    "detail": "Only 45% of 500 sampled sitemap entries carry a lastmod date - add it to the rest so agents can prioritize fresh content"
   },
   {
    "id": "a2ui-support",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No A2UI or generative UI support detected"
   },
   {
    "id": "agent-plugins-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No Agent Plugins manifest (plugin.json) found in discovered repos"
   },
   {
    "id": "agent-rules-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Could not locate a public repo containing agent configs or rules. If our probes missed it, AI coding agents likely will too - link the repo from your homepage or docs so it's discoverable."
   },
   {
    "id": "agent-ua-markdown",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly."
   },
   {
    "id": "markdown-link-alternate",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No sampled page advertises a markdown alternate. Add <link rel=\"alternate\" type=\"text/markdown\" href=\"...\"> (or the equivalent Link response header) pointing at a markdown twin of the page."
   },
   {
    "id": "markdown-negotiation",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Missing markdown content negotiation. Homepage returned text/html when probed with Accept: text/markdown (expected text/markdown), and none of the well-known root paths (/llms.md, /auth.md, /agents.md, /developers.md, /api.md, /index.md,"
   },
   {
    "id": "markdown-url-fallback",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "Homepage does not support the .md suffix. Probed https://atlassian.com/index.md and it did not return markdown (expected text/markdown content-type or a heading-led non-HTML body)."
   },
   {
    "id": "modular-llms-txt",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No section-level llms.txt found. Tried /docs/llms.txt, /api/llms.txt, /developers/llms.txt, /guides/llms.txt, /reference/llms.txt, /software/llms.txt, /enterprise/llms.txt, /government/llms.txt, /system-of-work/llms.txt,"
   },
   {
    "id": "nlweb-schema-feeds",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No schemamap: directive in robots.txt"
   },
   {
    "id": "nlweb-streaming",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "NLWeb /ask requires authentication - cannot verify streaming"
   },
   {
    "id": "pricing-md",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No pricing.md found - agents need machine-readable pricing to compare products and make purchase recommendations"
   },
   {
    "id": "web-bot-auth-directory",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No /.well-known/http-message-signatures-directory found"
   }
  ],
  "seen": {
   "brand-search-accuracy": "atlassian.com ranks #1 for \"Atlassian Issue Tracking\" and #3 for \"Atlassian Team Collaboration\"",
   "wikipedia-presence": "Wikipedia \"Atlassian\" and Wikidata Q757307 both verified - domain confirmed on both sources",
   "robots-ai-policy-quality": "AI search crawlers: allowed in 3 of 3 checks (3 crawlers on 1 page). AI training crawlers: allowed in 2 of 2 checks (2 crawlers on 1 page), not scored.",
   "noindex-directives": "No noindex on the homepage: no robots, googlebot or bingbot meta tag and no X-Robots-Tag header hides it from search.",
   "sitemap": "Valid sitemap found at https://www.atlassian.com/sitemap.xml with multiple sitemaps entries",
   "content-no-js": "Homepage: The homepage has little text without JavaScript (70 chars), though nothing in it shows it needs JavaScript to render. 3 of 3 sampled inner pages have text without JavaScript (2 skipped).",
   "bot-detection": "Site accessible to 4 agent user-agents (ChatGPT-User, OAI-SearchBot, Claude-User, PerplexityBot).",
   "agent-discovery-file": "No agent discovery file found",
   "a2a-agent-card": "No A2A agent card found at /.well-known/agent-card.json",
   "mcp-well-known-discovery": "No MCP server URL discovered",
   "robots-agent-user-policy": "No applicable crawl or usage restriction found for 3 user-triggered agents (chatgpt-user, claude-user, perplexity-user) on 1 public page: https://atlassian.com/. Declared policy only;",
   "llms-txt-exists": "Found the llms.txt at https://docs.atlassian.com/llms.txt.",
   "llms-txt-formatting": "The llms.txt is well-formatted: 122 lines with markdown links, 26,567 characters in total.",
   "json-ld": "Rich JSON-LD identity: Organization with name, description, url, and sameAs/logo/address (1 block(s))",
   "public-api-docs": "Documentation site found at https://docs.atlassian.com",
   "metadata-completeness": "All metadata signals present: canonical URL, lang=\"en\", og:image, og:type",
   "page-token-budget": "All 6 measured pages fit an agent context budget (largest ~4K tokens)",
   "docs-auth-gate": "All 5 sampled pages are publicly readable (3 with substantive content)",
   "openapi-spec": "No OpenAPI/Swagger specification found",
   "developer-portal": "Developer portal found at /developers",
   "markdown-negotiation": "Missing markdown content negotiation. Homepage returned text/html when probed with Accept: text/markdown (expected text/markdown), and none of the well-known root paths (/llms.md, /auth.md, /agents.md, /developers.md,",
   "agent-ua-markdown": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly.",
   "agent-crawler-reachability": "Reachable to every agent we tested - ChatGPT-User: reachable, OAI-SearchBot: reachable, Claude-User: reachable, PerplexityBot: reachable",
   "public-api": "REST API documentation found at https://developer.atlassian.com/. GraphQL endpoint at https://api.atlassian.com/graphql reachable but introspection disabled (errors_array). Best-of-protocols score: 7/7.",
   "oauth-support": "OpenID Connect discovery endpoint found at https://auth.atlassian.com",
   "mcp-server": "First-party MCP server published by product org (npm, @atlassian/mcp-compressor, 13545 score). Add live handshake at /.well-known/mcp for full credit.",
   "webmcp": "No WebMCP support detected - no document.modelContext / navigator.modelContext usage found",
   "cli-tool": "CLI tool mentioned in llms.txt",
   "rest-sdk-packages": "SDK packages found in npm, rubygems",
   "nlweb-ask": "NLWeb /ask endpoint exists but requires authentication (HTTP 403, via POST)",
   "mpp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "x402-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "ucp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "acp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "ap2-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites"
  }
 },
 {
  "slug": "aws",
  "name": "Amazon Web Services",
  "domain": "aws.amazon.com",
  "finalUrl": "https://aws.amazon.com/",
  "read": "2026-11-09",
  "scannedAt": "2026-10-30T14:26:36.852+00:00",
  "score": 60,
  "max": 100,
  "grade": "C",
  "category": "Infrastructure",
  "scoringVersion": null,
  "rulesUrl": null,
  "summary": "AWS offers strong developer resource discoverability and SDK packages, but lacks published OpenAPI specifications for agent integration.",
  "layers": [
   {
    "id": "discovery",
    "name": "Discovery",
    "score": 16,
    "max": 17
   },
   {
    "id": "accessibility",
    "name": "Access",
    "score": 38,
    "max": 59
   },
   {
    "id": "usability",
    "name": "Usability",
    "score": 27,
    "max": 68
   },
   {
    "id": "payments",
    "name": "Payments",
    "score": 0,
    "max": 0
   }
  ],
  "checks": {
   "ard-catalog": [
    "fail",
    0,
    1
   ],
   "ai-catalog-published": [
    "na",
    0,
    1
   ],
   "ard-entries-valid": [
    "na",
    0,
    2
   ],
   "ard-trust-manifest": [
    "na",
    0,
    2
   ],
   "agentic-search-usecase": [
    "na",
    0,
    6
   ],
   "agentic-search-specific": [
    "pass",
    3,
    3
   ],
   "brand-search-accuracy": [
    "pass",
    3,
    3
   ],
   "wikipedia-presence": [
    "pass",
    4,
    4
   ],
   "robots-ai-policy-quality": [
    "pass",
    2,
    2
   ],
   "mcp-registry-listed": [
    "na",
    0,
    1
   ],
   "npm-sdk-package": [
    "pass",
    1,
    1
   ],
   "agent-rules-repo": [
    "fail",
    0,
    1
   ],
   "agent-plugins-repo": [
    "fail",
    0,
    1
   ],
   "registry-branding": [
    "na",
    0,
    2
   ],
   "chatgpt-app-listed": [
    "pass",
    2,
    2
   ],
   "noindex-directives": [
    "pass",
    1,
    1
   ],
   "sitemap": [
    "pass",
    2,
    2
   ],
   "content-no-js": [
    "warning",
    2,
    3
   ],
   "bot-detection": [
    "pass",
    2,
    2
   ],
   "agent-discovery-file": [
    "fail",
    0,
    2
   ],
   "agent-skills-index-v2": [
    "na",
    0,
    2
   ],
   "a2a-agent-card": [
    "fail",
    0,
    2
   ],
   "skills-sh-listed": [
    "pass",
    1,
    1
   ],
   "pricing-md": [
    "fail",
    0,
    2
   ],
   "nlweb-schema-feeds": [
    "fail",
    0,
    1
   ],
   "mcp-well-known-discovery": [
    "fail",
    0,
    2
   ],
   "agent-mode-view": [
    "fail",
    0,
    2
   ],
   "link-headers-discovery": [
    "fail",
    0,
    1
   ],
   "markdown-url-fallback": [
    "fail",
    0,
    2
   ],
   "modular-llms-txt": [
    "fail",
    0,
    1
   ],
   "sitemap-lastmod": [
    "pass",
    1,
    1
   ],
   "robots-agent-user-policy": [
    "pass",
    2,
    2
   ],
   "llms-txt-exists": [
    "pass",
    1,
    1
   ],
   "llms-txt-formatting": [
    "warning",
    1,
    2
   ],
   "json-ld": [
    "warning",
    1,
    4
   ],
   "pricing-info": [
    "pass",
    3,
    3
   ],
   "public-api-docs": [
    "pass",
    3,
    3
   ],
   "agent-instruction": [
    "warning",
    2,
    3
   ],
   "skills-sh-quality": [
    "pass",
    2,
    2
   ],
   "json-ld-entity-linking": [
    "fail",
    0,
    2
   ],
   "metadata-completeness": [
    "warning",
    1,
    2
   ],
   "org-schema-completeness": [
    "fail",
    0,
    2
   ],
   "schema-type-breadth": [
    "warning",
    1,
    2
   ],
   "trust-anchors": [
    "pass",
    2,
    2
   ],
   "llms-txt-links-resolve": [
    "pass",
    2,
    2
   ],
   "markdown-link-alternate": [
    "fail",
    0,
    1
   ],
   "markdown-frontmatter": [
    "na",
    0,
    1
   ],
   "redirect-hygiene": [
    "pass",
    1,
    1
   ],
   "page-token-budget": [
    "pass",
    1,
    1
   ],
   "code-fence-validity": [
    "pass",
    1,
    1
   ],
   "docs-auth-gate": [
    "pass",
    2,
    2
   ],
   "openapi-spec": [
    "fail",
    0,
    7
   ],
   "developer-portal": [
    "pass",
    6,
    6
   ],
   "api-catalog-rfc9727": [
    "fail",
    0,
    2
   ],
   "markdown-negotiation": [
    "fail",
    0,
    1
   ],
   "markdown-negotiation-vary": [
    "fail",
    0,
    1
   ],
   "agent-ua-markdown": [
    "fail",
    0,
    1
   ],
   "agent-crawler-reachability": [
    "pass",
    2,
    2
   ],
   "mcp-tool-descriptions": [
    "na",
    0,
    3
   ],
   "mcp-param-schemas": [
    "na",
    0,
    2
   ],
   "mcp-server-identity": [
    "na",
    0,
    1
   ],
   "mcp-tool-listing": [
    "na",
    0,
    3
   ],
   "mcp-tool-naming": [
    "na",
    0,
    2
   ],
   "public-api": [
    "pass",
    7,
    7
   ],
   "oauth-support": [
    "fail",
    0,
    5
   ],
   "scoped-permissions": [
    "fail",
    0,
    5
   ],
   "mcp-auth-mechanism": [
    "na",
    0,
    2
   ],
   "mcp-oauth-metadata": [
    "na",
    0,
    2
   ],
   "mcp-pkce-s256": [
    "na",
    0,
    2
   ],
   "onboarding-friction": [
    "pass",
    2,
    2
   ],
   "web-bot-auth-directory": [
    "fail",
    0,
    2
   ],
   "oauth-protected-resource": [
    "fail",
    0,
    2
   ],
   "auth-md-exists": [
    "fail",
    0,
    2
   ],
   "auth-md-structure": [
    "fail",
    0,
    2
   ],
   "auth-md-walkthrough-simulation": [
    "na",
    0,
    2
   ],
   "agent-auth-discovery-metadata": [
    "fail",
    0,
    3
   ],
   "agent-auth-www-authenticate": [
    "fail",
    0,
    1
   ],
   "agent-auth-endpoints-reachable": [
    "fail",
    0,
    2
   ],
   "pap-discovery": [
    "na",
    0,
    2
   ],
   "pap-issuer-binding": [
    "na",
    0,
    2
   ],
   "pap-auth-config": [
    "na",
    0,
    2
   ],
   "pap-interfaces": [
    "na",
    0,
    2
   ],
   "pap-endpoint-enforcement": [
    "na",
    0,
    2
   ],
   "pap-cross-protocol": [
    "na",
    0,
    2
   ],
   "mcp-server": [
    "warning",
    2,
    6
   ],
   "mcp-error-handling": [
    "na",
    0,
    2
   ],
   "mcp-transport-modern": [
    "na",
    0,
    1
   ],
   "webmcp": [
    "fail",
    0,
    5
   ],
   "rate-limit-headers": [
    "fail",
    0,
    2
   ],
   "idempotency-key-support": [
    "fail",
    0,
    3
   ],
   "json-error-responses": [
    "fail",
    0,
    4
   ],
   "api-error-model": [
    "na",
    0,
    3
   ],
   "api-versioning-policy": [
    "na",
    0,
    3
   ],
   "pagination-shape": [
    "na",
    0,
    2
   ],
   "async-job-pattern": [
    "na",
    0,
    2
   ],
   "cli-tool": [
    "pass",
    3,
    3
   ],
   "rest-sdk-packages": [
    "pass",
    3,
    3
   ],
   "nlweb-ask": [
    "fail",
    0,
    1
   ],
   "nlweb-streaming": [
    "fail",
    0,
    1
   ],
   "response-schema-coverage": [
    "na",
    0,
    2
   ],
   "mcp-tool-annotations": [
    "na",
    0,
    2
   ],
   "mcp-server-card": [
    "fail",
    0,
    2
   ],
   "mcp-multi-surface-coverage": [
    "fail",
    0,
    2
   ],
   "sandbox-environment": [
    "warning",
    0,
    2
   ],
   "batch-endpoints": [
    "na",
    0,
    2
   ],
   "mcp-resource-listing": [
    "na",
    0,
    3
   ],
   "graphql-error-type-definition": [
    "fail",
    0,
    3
   ],
   "graphql-versioning-policy": [
    "fail",
    0,
    2
   ],
   "graphql-pagination-pattern": [
    "fail",
    0,
    2
   ],
   "graphql-async-job-pattern": [
    "fail",
    0,
    2
   ],
   "graphql-schema-completeness": [
    "na",
    0,
    3
   ],
   "graphql-batch-mutations": [
    "na",
    0,
    2
   ],
   "agent-friendly-404": [
    "warning",
    1,
    2
   ],
   "ax-document-structure": [
    "pass",
    3,
    3
   ],
   "ax-native-controls": [
    "pass",
    3,
    3
   ],
   "ax-accessible-names": [
    "na",
    0,
    2
   ],
   "ax-form-labeling": [
    "na",
    0,
    2
   ],
   "ax-tree-injection-safe": [
    "pass",
    2,
    2
   ],
   "mcp-app-registry": [
    "na",
    0,
    4
   ],
   "a2ui-support": [
    "na",
    0,
    2
   ],
   "mcp-apps-ui-quality": [
    "na",
    0,
    4
   ],
   "mcp-view-domain": [
    "na",
    0,
    4
   ],
   "mcp-view-csp": [
    "na",
    0,
    4
   ],
   "api-schema-analysis": [
    "warning",
    1,
    2
   ],
   "function-calling-compat": [
    "fail",
    0,
    2
   ],
   "mcp-resource-quality": [
    "na",
    0,
    3
   ],
   "mpp-support": [
    "warning",
    0,
    2
   ],
   "x402-support": [
    "warning",
    0,
    2
   ],
   "ucp-support": [
    "warning",
    0,
    3
   ],
   "acp-support": [
    "warning",
    0,
    3
   ],
   "acp-delegate-payment": [
    "warning",
    0,
    3
   ],
   "ap2-support": [
    "warning",
    0,
    3
   ]
  },
  "flagged": [
   {
    "id": "openapi-spec",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 7,
    "tier": "required",
    "est": 4,
    "detail": "No OpenAPI/Swagger specification found"
   },
   {
    "id": "oauth-support",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 5,
    "tier": "required",
    "est": 3.3,
    "detail": "No OAuth 2.0 or OpenID Connect support detected"
   },
   {
    "id": "scoped-permissions",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 5,
    "tier": "recommended",
    "est": 3.3,
    "detail": "No declared OAuth scopes, security schemes, or scoped-permission documentation found"
   },
   {
    "id": "webmcp",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 5,
    "tier": "required",
    "est": 3.3,
    "detail": "No WebMCP support detected - no document.modelContext / navigator.modelContext usage found"
   },
   {
    "id": "json-error-responses",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 4,
    "tier": "required",
    "est": 2.6,
    "detail": "API does not return JSON error responses (or no API detected)"
   },
   {
    "id": "mcp-server",
    "layer": "usability",
    "status": "warning",
    "score": 2,
    "max": 6,
    "tier": "required",
    "est": 2.6,
    "detail": "MCP mentioned at https://aws.amazon.com/blogs/aws/the-aws-mcp-server-is-now-generally-available but no standard manifest endpoint found"
   },
   {
    "id": "graphql-error-type-definition",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": 2,
    "detail": "GraphQL introspection auth-gated and no typed graphql error model documentation found on GraphQL-tagged pages"
   },
   {
    "id": "idempotency-key-support",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": 2,
    "detail": "GraphQL introspection auth-gated and no idempotency documentation found on GraphQL-tagged pages"
   },
   {
    "id": "json-ld",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 4,
    "tier": "required",
    "est": 1.7,
    "detail": "JSON-LD found (2 block(s)) but no identity type - use SoftwareApplication, Product, Organization, Person, or Article so agents can tell what this site is"
   },
   {
    "id": "ard-catalog",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 1.3,
    "detail": "No /.well-known/ard.json, no same-site rel=\"ard\" link, and no legacy /.well-known/ai-catalog.json"
   },
   {
    "id": "function-calling-compat",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.3,
    "detail": "No API spec found - function calling requires discoverable endpoints"
   },
   {
    "id": "graphql-async-job-pattern",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.3,
    "detail": "GraphQL introspection auth-gated and no graphql async-job pattern documentation found on GraphQL-tagged pages"
   },
   {
    "id": "graphql-pagination-pattern",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.3,
    "detail": "GraphQL introspection auth-gated and no graphql pagination pattern documentation found on GraphQL-tagged pages"
   },
   {
    "id": "graphql-versioning-policy",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.3,
    "detail": "GraphQL introspection auth-gated and no graphql versioning / deprecation policy documentation found on GraphQL-tagged pages"
   },
   {
    "id": "rate-limit-headers",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.3,
    "detail": "GraphQL introspection auth-gated and no header convention documented on GraphQL-tagged pages"
   },
   {
    "id": "agent-auth-discovery-metadata",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": 1.1,
    "detail": "Neither /.well-known/oauth-protected-resource nor /.well-known/oauth-authorization-server found. Probed: aws.amazon.com, api.aws.amazon.com."
   },
   {
    "id": "agent-discovery-file",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 1.1,
    "detail": "No agent discovery file found"
   },
   {
    "id": "json-ld-entity-linking",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.1,
    "detail": "No sameAs entity linking in JSON-LD - agents cannot disambiguate your brand"
   },
   {
    "id": "org-schema-completeness",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.1,
    "detail": "No Organization type found in JSON-LD"
   },
   {
    "id": "agent-auth-endpoints-reachable",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.8,
    "detail": "No agent_auth endpoint URIs found in AS metadata or /auth.md prose; nothing to probe"
   },
   {
    "id": "auth-md-exists",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.8,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "auth-md-structure",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.8,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "mcp-multi-surface-coverage",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.8,
    "detail": "This bonus needs two MCP servers: one for your product so agents can take actions, and a separate one for your documentation so agents can answer questions from your docs."
   },
   {
    "id": "mcp-server-card",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.8,
    "detail": "No MCP server card found (checked /.well-known/mcp/server-card.json, the site's ai-catalog.json, servers[].card in mcp.json, and <server>/server-card)"
   },
   {
    "id": "oauth-protected-resource",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.8,
    "detail": "No /.well-known/oauth-protected-resource found (RFC 9728)"
   },
   {
    "id": "sandbox-environment",
    "layer": "usability",
    "status": "warning",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.8,
    "detail": "Sandbox/test environment mentioned in llms.txt but no sandbox surface verified"
   },
   {
    "id": "agent-friendly-404",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.7,
    "detail": "The nonexistent path https://aws.amazon.com/__ora-404-probe-3f9xa3rc correctly returns HTTP 404. Partial credit: no Markdown error body was detected."
   },
   {
    "id": "api-schema-analysis",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.7,
    "detail": "GraphQL: schema details documented at https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-import-api.html (introspection auth-gated)"
   },
   {
    "id": "agent-instruction",
    "layer": "accessibility",
    "status": "warning",
    "score": 2,
    "max": 3,
    "tier": "required",
    "est": 0.6,
    "detail": "When-to-use guidance found at https://docs.aws.amazon.com"
   },
   {
    "id": "content-no-js",
    "layer": "accessibility",
    "status": "warning",
    "score": 2,
    "max": 3,
    "tier": "required",
    "est": 0.6,
    "detail": "Homepage: 4564 chars with H1, but 2.7% content ratio is below the 5% target. 5 of 5 sampled inner pages have text without JavaScript."
   },
   {
    "id": "llms-txt-formatting",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "The llms.txt is well-formatted with markdown links, but at 411,652 characters it exceeds the 30,000-character recommendation for a navigation index."
   },
   {
    "id": "metadata-completeness",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "required",
    "est": 0.6,
    "detail": "3/4 metadata signals present - missing: og:image"
   },
   {
    "id": "schema-type-breadth",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "Some extended schema types found: ItemList - add 2 more types that match what the homepage shows, for full coverage"
   },
   {
    "id": "a2a-agent-card",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.4,
    "detail": "No A2A agent card found at /.well-known/agent-card.json"
   },
   {
    "id": "agent-auth-www-authenticate",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.4,
    "detail": "No 401 with WWW-Authenticate: Bearer resource_metadata=... found. Probed [https://aws.amazon.com/api, https://aws.amazon.com/api/v1, https://aws.amazon.com/v1, https://aws.amazon.com/v2, https://aws.amazon.com/agent/identity,"
   },
   {
    "id": "api-catalog-rfc9727",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.4,
    "detail": "No /.well-known/api-catalog found (RFC 9727)"
   },
   {
    "id": "mcp-well-known-discovery",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.4,
    "detail": "No MCP server URL discovered"
   },
   {
    "id": "link-headers-discovery",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 0.2,
    "detail": "No HTTP Link response headers (RFC 8288) found"
   },
   {
    "id": "markdown-negotiation-vary",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.2,
    "detail": "Homepage https://aws.amazon.com does not meet the Markdown negotiation requirements: Accept: text/markdown returned text/html;charset=utf-8; Vary header missing Accept (got \"accept-encoding\")"
   },
   {
    "id": "acp-delegate-payment",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": null,
    "detail": "No ACP Delegate Payment signals detected"
   },
   {
    "id": "acp-support",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 3,
    "tier": "required",
    "est": null,
    "detail": "no ACP (Agentic Commerce Protocol) signals detected"
   },
   {
    "id": "agent-mode-view",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "?mode=agent returns same content as homepage (no dedicated agent view)"
   },
   {
    "id": "agent-plugins-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No Agent Plugins manifest (plugin.json) found in discovered repos"
   },
   {
    "id": "agent-rules-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Could not locate a public repo containing agent configs or rules. If our probes missed it, AI coding agents likely will too - link the repo from your homepage or docs so it's discoverable."
   },
   {
    "id": "agent-ua-markdown",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly."
   },
   {
    "id": "ap2-support",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": null,
    "detail": "No AP2 (Agent Payments Protocol) signals detected"
   },
   {
    "id": "markdown-link-alternate",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No sampled page advertises a markdown alternate. Add <link rel=\"alternate\" type=\"text/markdown\" href=\"...\"> (or the equivalent Link response header) pointing at a markdown twin of the page."
   },
   {
    "id": "markdown-negotiation",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Missing markdown content negotiation. Homepage returned text/html when probed with Accept: text/markdown (expected text/markdown), and none of the well-known root paths (/llms.md, /auth.md, /agents.md, /developers.md, /api.md, /index.md,"
   },
   {
    "id": "markdown-url-fallback",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "Homepage does not support the .md suffix. Probed https://aws.amazon.com/index.md and it did not return markdown (expected text/markdown content-type or a heading-led non-HTML body)."
   },
   {
    "id": "modular-llms-txt",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No section-level llms.txt found. Tried /docs/llms.txt, /api/llms.txt, /developers/llms.txt, /guides/llms.txt, /reference/llms.txt, /contact-us/llms.txt, /marketplace/llms.txt, /start-here/llms.txt, /new/llms.txt, /blogs/llms.txt."
   },
   {
    "id": "mpp-support",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": null,
    "detail": "No MPP (Machine Payments Protocol) support detected"
   },
   {
    "id": "nlweb-ask",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No NLWeb-conformant /ask endpoint found via GET or POST"
   },
   {
    "id": "nlweb-schema-feeds",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No schemamap: directive in robots.txt"
   },
   {
    "id": "nlweb-streaming",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "NLWeb /ask does not support SSE streaming via GET or POST"
   },
   {
    "id": "pricing-md",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No pricing.md found - agents need machine-readable pricing to compare products and make purchase recommendations"
   },
   {
    "id": "ucp-support",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 3,
    "tier": "required",
    "est": null,
    "detail": "no UCP (Universal Commerce Protocol) signals detected"
   },
   {
    "id": "web-bot-auth-directory",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No /.well-known/http-message-signatures-directory found"
   },
   {
    "id": "x402-support",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": null,
    "detail": "No x402 payment protocol support detected"
   }
  ],
  "seen": {
   "brand-search-accuracy": "aws.amazon.com ranks #2 for \"Amazon Web Services, Inc. cloud computing\" (search term updated)",
   "wikipedia-presence": "Wikipedia \"Amazon Web Services\" and Wikidata Q456157 both verified - domain confirmed on both sources",
   "robots-ai-policy-quality": "AI search crawlers: allowed in 18 of 18 checks (3 crawlers on 6 pages). AI training crawlers: allowed in 12 of 12 checks (2 crawlers on 6 pages), not scored.",
   "noindex-directives": "No noindex on the homepage: no robots, googlebot or bingbot meta tag and no X-Robots-Tag header hides it from search.",
   "sitemap": "Valid sitemap found at https://aws.amazon.com/sitemaps/index/ with multiple sitemaps entries",
   "content-no-js": "Homepage: 4564 chars with H1, but 2.7% content ratio is below the 5% target. 5 of 5 sampled inner pages have text without JavaScript.",
   "bot-detection": "Site accessible to 4 agent user-agents (ChatGPT-User, OAI-SearchBot, Claude-User, PerplexityBot).",
   "agent-discovery-file": "No agent discovery file found",
   "a2a-agent-card": "No A2A agent card found at /.well-known/agent-card.json",
   "mcp-well-known-discovery": "No MCP server URL discovered",
   "robots-agent-user-policy": "No applicable crawl or usage restriction found for 3 user-triggered agents (chatgpt-user, claude-user, perplexity-user) on 1 public page: https://aws.amazon.com/. Declared policy only;",
   "llms-txt-exists": "Found the llms.txt at https://docs.aws.amazon.com/llms.txt.",
   "llms-txt-formatting": "The llms.txt is well-formatted with markdown links, but at 411,652 characters it exceeds the 30,000-character recommendation for a navigation index.",
   "json-ld": "JSON-LD found (2 block(s)) but no identity type - use SoftwareApplication, Product, Organization, Person, or Article so agents can tell what this site is",
   "public-api-docs": "Documentation site found at https://docs.aws.amazon.com",
   "metadata-completeness": "3/4 metadata signals present - missing: og:image",
   "page-token-budget": "All 6 measured pages fit an agent context budget (largest ~4K tokens)",
   "docs-auth-gate": "All 5 sampled pages are publicly readable (5 with substantive content)",
   "openapi-spec": "No OpenAPI/Swagger specification found",
   "developer-portal": "Developer portal found at /developers",
   "markdown-negotiation": "Missing markdown content negotiation. Homepage returned text/html when probed with Accept: text/markdown (expected text/markdown), and none of the well-known root paths (/llms.md, /auth.md, /agents.md, /developers.md,",
   "agent-ua-markdown": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly.",
   "agent-crawler-reachability": "Reachable to every agent we tested - ChatGPT-User: reachable, OAI-SearchBot: reachable, Claude-User: reachable, PerplexityBot: reachable",
   "public-api": "API described in documentation at https://docs.aws.amazon.com but no machine-verifiable API surface confirmed. GraphQL endpoint at https://api.amazon.com/graphql is reachable;",
   "oauth-support": "No OAuth 2.0 or OpenID Connect support detected",
   "mcp-server": "MCP mentioned at https://aws.amazon.com/blogs/aws/the-aws-mcp-server-is-now-generally-available but no standard manifest endpoint found",
   "webmcp": "No WebMCP support detected - no document.modelContext / navigator.modelContext usage found",
   "cli-tool": "CLI tool found on PyPI: cloudformation-cli",
   "rest-sdk-packages": "SDK packages found across 4 ecosystems: npm, pypi, go, rubygems",
   "nlweb-ask": "No NLWeb-conformant /ask endpoint found via GET or POST",
   "mpp-support": "No MPP (Machine Payments Protocol) support detected",
   "x402-support": "No x402 payment protocol support detected",
   "ucp-support": "no UCP (Universal Commerce Protocol) signals detected",
   "acp-support": "no ACP (Agentic Commerce Protocol) signals detected",
   "ap2-support": "No AP2 (Agent Payments Protocol) signals detected"
  }
 },
 {
  "slug": "box",
  "name": "Box",
  "domain": "box.com",
  "finalUrl": "https://www.box.com/",
  "read": "2026-11-09",
  "scannedAt": "2026-10-27T12:57:32.252+00:00",
  "score": 80,
  "max": 100,
  "grade": "B",
  "category": "Productivity",
  "scoringVersion": null,
  "rulesUrl": null,
  "summary": "Box offers strong REST API access and comprehensive developer documentation, but lacks machine-readable OAuth2 scope declarations.",
  "layers": [
   {
    "id": "discovery",
    "name": "Discovery",
    "score": 12,
    "max": 16
   },
   {
    "id": "accessibility",
    "name": "Access",
    "score": 38,
    "max": 45
   },
   {
    "id": "usability",
    "name": "Usability",
    "score": 74,
    "max": 93
   },
   {
    "id": "payments",
    "name": "Payments",
    "score": 0,
    "max": 0
   }
  ],
  "checks": {
   "ard-catalog": [
    "fail",
    0,
    1
   ],
   "ai-catalog-published": [
    "na",
    0,
    1
   ],
   "ard-entries-valid": [
    "na",
    0,
    2
   ],
   "ard-trust-manifest": [
    "na",
    0,
    2
   ],
   "agentic-search-usecase": [
    "na",
    0,
    6
   ],
   "agentic-search-specific": [
    "pass",
    3,
    3
   ],
   "brand-search-accuracy": [
    "warning",
    1,
    3
   ],
   "wikipedia-presence": [
    "warning",
    2,
    4
   ],
   "robots-ai-policy-quality": [
    "pass",
    2,
    2
   ],
   "mcp-registry-listed": [
    "fail",
    0,
    1
   ],
   "npm-sdk-package": [
    "pass",
    1,
    1
   ],
   "agent-rules-repo": [
    "fail",
    0,
    1
   ],
   "agent-plugins-repo": [
    "fail",
    0,
    1
   ],
   "registry-branding": [
    "na",
    0,
    2
   ],
   "chatgpt-app-listed": [
    "pass",
    2,
    2
   ],
   "noindex-directives": [
    "pass",
    1,
    1
   ],
   "sitemap": [
    "pass",
    2,
    2
   ],
   "content-no-js": [
    "warning",
    2,
    3
   ],
   "bot-detection": [
    "pass",
    2,
    2
   ],
   "agent-discovery-file": [
    "na",
    0,
    2
   ],
   "agent-skills-index-v2": [
    "na",
    0,
    2
   ],
   "a2a-agent-card": [
    "fail",
    0,
    2
   ],
   "skills-sh-listed": [
    "pass",
    1,
    1
   ],
   "pricing-md": [
    "na",
    0,
    2
   ],
   "nlweb-schema-feeds": [
    "fail",
    0,
    1
   ],
   "mcp-well-known-discovery": [
    "warning",
    1,
    2
   ],
   "agent-mode-view": [
    "pass",
    2,
    2
   ],
   "link-headers-discovery": [
    "fail",
    0,
    1
   ],
   "markdown-url-fallback": [
    "na",
    0,
    2
   ],
   "modular-llms-txt": [
    "na",
    0,
    1
   ],
   "sitemap-lastmod": [
    "na",
    0,
    1
   ],
   "robots-agent-user-policy": [
    "pass",
    2,
    2
   ],
   "llms-txt-exists": [
    "pass",
    1,
    1
   ],
   "llms-txt-formatting": [
    "pass",
    2,
    2
   ],
   "json-ld": [
    "pass",
    4,
    4
   ],
   "pricing-info": [
    "warning",
    2,
    3
   ],
   "public-api-docs": [
    "pass",
    3,
    3
   ],
   "agent-instruction": [
    "na",
    0,
    3
   ],
   "skills-sh-quality": [
    "pass",
    2,
    2
   ],
   "json-ld-entity-linking": [
    "warning",
    1,
    2
   ],
   "metadata-completeness": [
    "pass",
    2,
    2
   ],
   "org-schema-completeness": [
    "pass",
    2,
    2
   ],
   "schema-type-breadth": [
    "fail",
    0,
    2
   ],
   "trust-anchors": [
    "na",
    0,
    2
   ],
   "llms-txt-links-resolve": [
    "pass",
    2,
    2
   ],
   "markdown-link-alternate": [
    "fail",
    0,
    1
   ],
   "markdown-frontmatter": [
    "na",
    0,
    1
   ],
   "redirect-hygiene": [
    "warning",
    0,
    1
   ],
   "page-token-budget": [
    "warning",
    0,
    1
   ],
   "code-fence-validity": [
    "pass",
    1,
    1
   ],
   "docs-auth-gate": [
    "pass",
    2,
    2
   ],
   "openapi-spec": [
    "na",
    0,
    7
   ],
   "developer-portal": [
    "pass",
    6,
    6
   ],
   "api-catalog-rfc9727": [
    "fail",
    0,
    2
   ],
   "markdown-negotiation": [
    "fail",
    0,
    1
   ],
   "markdown-negotiation-vary": [
    "fail",
    0,
    1
   ],
   "agent-ua-markdown": [
    "fail",
    0,
    1
   ],
   "agent-crawler-reachability": [
    "pass",
    2,
    2
   ],
   "mcp-tool-descriptions": [
    "pass",
    3,
    3
   ],
   "mcp-param-schemas": [
    "pass",
    2,
    2
   ],
   "mcp-server-identity": [
    "pass",
    1,
    1
   ],
   "mcp-tool-listing": [
    "pass",
    3,
    3
   ],
   "mcp-tool-naming": [
    "pass",
    2,
    2
   ],
   "public-api": [
    "pass",
    7,
    7
   ],
   "oauth-support": [
    "pass",
    5,
    5
   ],
   "scoped-permissions": [
    "warning",
    2,
    5
   ],
   "mcp-auth-mechanism": [
    "pass",
    2,
    2
   ],
   "mcp-oauth-metadata": [
    "na",
    0,
    2
   ],
   "mcp-pkce-s256": [
    "na",
    0,
    2
   ],
   "onboarding-friction": [
    "warning",
    1,
    2
   ],
   "web-bot-auth-directory": [
    "fail",
    0,
    2
   ],
   "oauth-protected-resource": [
    "pass",
    2,
    2
   ],
   "auth-md-exists": [
    "na",
    0,
    2
   ],
   "auth-md-structure": [
    "fail",
    0,
    2
   ],
   "auth-md-walkthrough-simulation": [
    "na",
    0,
    2
   ],
   "agent-auth-discovery-metadata": [
    "warning",
    1,
    3
   ],
   "agent-auth-www-authenticate": [
    "pass",
    1,
    1
   ],
   "agent-auth-endpoints-reachable": [
    "fail",
    0,
    2
   ],
   "pap-discovery": [
    "na",
    0,
    2
   ],
   "pap-issuer-binding": [
    "na",
    0,
    2
   ],
   "pap-auth-config": [
    "na",
    0,
    2
   ],
   "pap-interfaces": [
    "na",
    0,
    2
   ],
   "pap-endpoint-enforcement": [
    "na",
    0,
    2
   ],
   "pap-cross-protocol": [
    "na",
    0,
    2
   ],
   "mcp-server": [
    "warning",
    5,
    6
   ],
   "mcp-error-handling": [
    "pass",
    2,
    2
   ],
   "mcp-transport-modern": [
    "pass",
    1,
    1
   ],
   "webmcp": [
    "na",
    0,
    5
   ],
   "rate-limit-headers": [
    "na",
    0,
    2
   ],
   "idempotency-key-support": [
    "fail",
    0,
    3
   ],
   "json-error-responses": [
    "na",
    0,
    4
   ],
   "api-error-model": [
    "na",
    0,
    3
   ],
   "api-versioning-policy": [
    "na",
    0,
    3
   ],
   "pagination-shape": [
    "na",
    0,
    2
   ],
   "async-job-pattern": [
    "na",
    0,
    2
   ],
   "cli-tool": [
    "pass",
    3,
    3
   ],
   "rest-sdk-packages": [
    "warning",
    1,
    3
   ],
   "nlweb-ask": [
    "pass",
    1,
    1
   ],
   "nlweb-streaming": [
    "na",
    0,
    1
   ],
   "response-schema-coverage": [
    "na",
    0,
    2
   ],
   "mcp-tool-annotations": [
    "pass",
    2,
    2
   ],
   "mcp-server-card": [
    "pass",
    2,
    2
   ],
   "mcp-multi-surface-coverage": [
    "pass",
    2,
    2
   ],
   "sandbox-environment": [
    "na",
    0,
    2
   ],
   "batch-endpoints": [
    "na",
    0,
    2
   ],
   "mcp-resource-listing": [
    "pass",
    3,
    3
   ],
   "graphql-error-type-definition": [
    "fail",
    0,
    3
   ],
   "graphql-versioning-policy": [
    "fail",
    0,
    2
   ],
   "graphql-pagination-pattern": [
    "fail",
    0,
    2
   ],
   "graphql-async-job-pattern": [
    "fail",
    0,
    2
   ],
   "graphql-schema-completeness": [
    "na",
    0,
    3
   ],
   "graphql-batch-mutations": [
    "na",
    0,
    2
   ],
   "agent-friendly-404": [
    "na",
    0,
    2
   ],
   "ax-document-structure": [
    "pass",
    3,
    3
   ],
   "ax-native-controls": [
    "pass",
    3,
    3
   ],
   "ax-accessible-names": [
    "pass",
    2,
    2
   ],
   "ax-form-labeling": [
    "pass",
    2,
    2
   ],
   "ax-tree-injection-safe": [
    "pass",
    2,
    2
   ],
   "mcp-app-registry": [
    "na",
    0,
    4
   ],
   "a2ui-support": [
    "warning",
    1,
    2
   ],
   "mcp-apps-ui-quality": [
    "na",
    0,
    4
   ],
   "mcp-view-domain": [
    "na",
    0,
    4
   ],
   "mcp-view-csp": [
    "na",
    0,
    4
   ],
   "api-schema-analysis": [
    "na",
    0,
    2
   ],
   "function-calling-compat": [
    "na",
    0,
    2
   ],
   "mcp-resource-quality": [
    "pass",
    3,
    3
   ],
   "mpp-support": [
    "na",
    0,
    2
   ],
   "x402-support": [
    "na",
    0,
    2
   ],
   "ucp-support": [
    "na",
    0,
    3
   ],
   "acp-support": [
    "na",
    0,
    3
   ],
   "acp-delegate-payment": [
    "na",
    0,
    3
   ],
   "ap2-support": [
    "na",
    0,
    3
   ]
  },
  "flagged": [
   {
    "id": "brand-search-accuracy",
    "layer": "discovery",
    "status": "warning",
    "score": 1,
    "max": 3,
    "tier": "required",
    "est": 2.8,
    "detail": "box.com ranks #7 for \"Box content management\""
   },
   {
    "id": "schema-type-breadth",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.5,
    "detail": "No extended schema types found - AI can only answer basic questions about this entity"
   },
   {
    "id": "ard-catalog",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 1.4,
    "detail": "No /.well-known/ard.json, no same-site rel=\"ard\" link, and no legacy /.well-known/ai-catalog.json"
   },
   {
    "id": "graphql-error-type-definition",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": 1.4,
    "detail": "GraphQL introspection auth-gated and no typed graphql error model documentation found on GraphQL-tagged pages"
   },
   {
    "id": "idempotency-key-support",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": 1.4,
    "detail": "GraphQL introspection auth-gated and no idempotency documentation found on GraphQL-tagged pages"
   },
   {
    "id": "mcp-registry-listed",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 1.4,
    "detail": "No bi-directionally verified MCP registry entry found. To pass, either publish the server from a package whose homepage, repository or maintainer email names your domain, get a verified Smithery listing with non-zero usage,"
   },
   {
    "id": "scoped-permissions",
    "layer": "usability",
    "status": "warning",
    "score": 2,
    "max": 5,
    "tier": "recommended",
    "est": 1.4,
    "detail": "Scoped permissions described at https://docs.box.com, but no machine-readable scope declaration found (OpenAPI oauth2 scopes or RFC 9728 scopes_supported)"
   },
   {
    "id": "graphql-async-job-pattern",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1,
    "detail": "GraphQL introspection auth-gated and no graphql async-job pattern documentation found on GraphQL-tagged pages"
   },
   {
    "id": "graphql-pagination-pattern",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1,
    "detail": "GraphQL introspection auth-gated and no graphql pagination pattern documentation found on GraphQL-tagged pages"
   },
   {
    "id": "graphql-versioning-policy",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1,
    "detail": "GraphQL introspection auth-gated and no graphql versioning / deprecation policy documentation found on GraphQL-tagged pages"
   },
   {
    "id": "rest-sdk-packages",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 3,
    "tier": "recommended",
    "est": 1,
    "detail": "SDK package found only in npm"
   },
   {
    "id": "content-no-js",
    "layer": "accessibility",
    "status": "warning",
    "score": 2,
    "max": 3,
    "tier": "required",
    "est": 0.7,
    "detail": "5226 chars with H1, but heading hierarchy skips H1 to H3"
   },
   {
    "id": "json-ld-entity-linking",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.7,
    "detail": "Entity linking to linkedin.com - add more authority profiles (Wikipedia, Wikidata, LinkedIn, GitHub)"
   },
   {
    "id": "page-token-budget",
    "layer": "accessibility",
    "status": "warning",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.7,
    "detail": "1 of 3 measured pages exceed ~25K tokens of extracted text: https://developer.box.com/sample-code/ (~26K tokens). Agents truncate what does not fit - split these into focused pages."
   },
   {
    "id": "pricing-info",
    "layer": "accessibility",
    "status": "warning",
    "score": 2,
    "max": 3,
    "tier": "required",
    "est": 0.7,
    "detail": "Pricing link found but no dedicated pricing page at standard path"
   },
   {
    "id": "redirect-hygiene",
    "layer": "accessibility",
    "status": "warning",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.7,
    "detail": "Redirect hygiene issues: https://www.box.com/customer-success/support-services uses a meta-refresh redirect, https://www.box.com/industries/cpg uses a meta-refresh redirect, and https://www.box.com/overview uses a meta-refresh redirect."
   },
   {
    "id": "wikipedia-presence",
    "layer": "discovery",
    "status": "warning",
    "score": 2,
    "max": 4,
    "tier": "recommended",
    "est": 0.6,
    "detail": "Wikidata Q4951483 (Box) verified - draft a Wikipedia page with cited references to complete knowledge graph coverage"
   },
   {
    "id": "mcp-server",
    "layer": "usability",
    "status": "warning",
    "score": 5,
    "max": 6,
    "tier": "required",
    "est": 0.5,
    "detail": "MCP server detected at https://mcp.box.com; it requires authentication. Presence is verified (5/6), but Ora could not inspect its tools or verify access scopes without credentials."
   },
   {
    "id": "onboarding-friction",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "Onboarding signals described but not verified live: self-serve key generation, sandbox/test environment"
   },
   {
    "id": "a2a-agent-card",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.2,
    "detail": "No A2A agent card found at /.well-known/agent-card.json"
   },
   {
    "id": "agent-auth-discovery-metadata",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 3,
    "tier": "recommended",
    "est": 0.2,
    "detail": "PRM + AS metadata both present (PRM discovered at https://mcp.box.com) (AS metadata fetched from advertised origin https://api.box.com) but AS metadata has no agent_auth block"
   },
   {
    "id": "agent-auth-endpoints-reachable",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.2,
    "detail": "No agent_auth endpoint URIs found in AS metadata or /auth.md prose; nothing to probe"
   },
   {
    "id": "api-catalog-rfc9727",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.2,
    "detail": "No /.well-known/api-catalog found (RFC 9727)"
   },
   {
    "id": "auth-md-structure",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.2,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "mcp-server-card",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.2,
    "detail": "No MCP server card found for https://mcp.box.com (checked /.well-known/mcp/server-card.json, the site's ai-catalog.json, servers[].card in mcp.json, and <server>/server-card)"
   },
   {
    "id": "link-headers-discovery",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 0.1,
    "detail": "Link header present but no agent-relevant rel values (sitemap, describedby, alternate, service-desc)"
   },
   {
    "id": "markdown-negotiation-vary",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.1,
    "detail": "Homepage https://box.com does not meet the Markdown negotiation requirements: Accept: text/markdown returned text/html; charset=utf-8; Vary header missing Accept (got \"cookie,box-country,x-box-geo-country,x-frame-options,accept-encoding\")"
   },
   {
    "id": "mcp-well-known-discovery",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.1,
    "detail": "MCP server at https://mcp.box.com - list its server card, hosted on your own domain, in /.well-known/ai-catalog.json so MCP clients can discover it"
   },
   {
    "id": "a2ui-support",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "A2UI/generative UI mentioned on homepage (ui component)"
   },
   {
    "id": "agent-plugins-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No Agent Plugins manifest (plugin.json) found in discovered repos"
   },
   {
    "id": "agent-rules-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Could not locate a public repo containing agent configs or rules. If our probes missed it, AI coding agents likely will too - link the repo from your homepage or docs so it's discoverable."
   },
   {
    "id": "agent-ua-markdown",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly."
   },
   {
    "id": "markdown-link-alternate",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No sampled page advertises a markdown alternate. Add <link rel=\"alternate\" type=\"text/markdown\" href=\"...\"> (or the equivalent Link response header) pointing at a markdown twin of the page."
   },
   {
    "id": "markdown-negotiation",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Missing markdown content negotiation. Homepage returned text/html when probed with Accept: text/markdown (expected text/markdown), and none of the well-known root paths (/llms.md, /auth.md, /agents.md, /developers.md, /api.md, /index.md,"
   },
   {
    "id": "nlweb-schema-feeds",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No schemamap: directive in robots.txt"
   },
   {
    "id": "web-bot-auth-directory",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No /.well-known/http-message-signatures-directory found"
   }
  ],
  "seen": {
   "brand-search-accuracy": "box.com ranks #7 for \"Box content management\"",
   "wikipedia-presence": "Wikidata Q4951483 (Box) verified - draft a Wikipedia page with cited references to complete knowledge graph coverage",
   "robots-ai-policy-quality": "AI search crawlers: allowed in 3 of 3 checks (3 crawlers on 1 page). AI training crawlers: allowed in 2 of 2 checks (2 crawlers on 1 page), not scored.",
   "noindex-directives": "No noindex on the homepage: no robots, googlebot or bingbot meta tag and no X-Robots-Tag header hides it from search.",
   "sitemap": "Valid sitemap found at https://www.box.com/sitemap.xml with multiple sitemaps entries",
   "content-no-js": "5226 chars with H1, but heading hierarchy skips H1 to H3",
   "bot-detection": "Site accessible to 4 agent user-agents (ChatGPT-User, OAI-SearchBot, Claude-User, PerplexityBot).",
   "agent-discovery-file": "Can't verify: a bot shield answered our request to box.com/agents.md (HTTP 403); box.com/skills.sh (HTTP 403) instead of the site. That is not counted against the site.",
   "a2a-agent-card": "No A2A agent card found at /.well-known/agent-card.json",
   "mcp-well-known-discovery": "MCP server at https://mcp.box.com - list its server card, hosted on your own domain, in /.well-known/ai-catalog.json so MCP clients can discover it",
   "robots-agent-user-policy": "No applicable crawl or usage restriction found for 3 user-triggered agents (chatgpt-user, claude-user, perplexity-user) on 1 public page: https://box.com/. Declared policy only;",
   "llms-txt-exists": "Found the llms.txt at https://docs.box.com/llms.txt.",
   "llms-txt-formatting": "The llms.txt is well-formatted: 56 lines with markdown links, 7,005 characters in total.",
   "json-ld": "Rich JSON-LD identity: Organization with name, description, url, and sameAs/logo/address (1 block(s))",
   "public-api-docs": "Documentation site found at https://docs.box.com",
   "metadata-completeness": "All metadata signals present: canonical URL, lang=\"en\", og:image, og:type",
   "page-token-budget": "1 of 3 measured pages exceed ~25K tokens of extracted text: https://developer.box.com/sample-code/ (~26K tokens). Agents truncate what does not fit - split these into focused pages.",
   "docs-auth-gate": "All 5 sampled pages are publicly readable (1 with substantive content)",
   "openapi-spec": "Can't verify: a bot shield answered our request to box.com/api-docs (HTTP 403); box.com/v2/api-docs (HTTP 403); box.com/v3/api-docs (HTTP 403), and 3 more instead of the site. That is not counted against the site.",
   "developer-portal": "Developer documentation portal found at https://docs.box.com",
   "markdown-negotiation": "Missing markdown content negotiation. Homepage returned text/html when probed with Accept: text/markdown (expected text/markdown), and none of the well-known root paths (/llms.md, /auth.md, /agents.md, /developers.md,",
   "agent-ua-markdown": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly.",
   "agent-crawler-reachability": "Reachable to every agent we tested - ChatGPT-User: reachable, OAI-SearchBot: reachable, Claude-User: reachable, PerplexityBot: reachable",
   "public-api": "REST API documentation found at https://docs.box.com/_llms/en/home.txt. GraphQL endpoint at https://api.box.com/v1/graphql is reachable; introspection requires authentication (API key / OAuth),",
   "oauth-support": "OAuth authorization server metadata at https://api.box.com",
   "mcp-server": "MCP server detected at https://mcp.box.com; it requires authentication. Presence is verified (5/6), but Ora could not inspect its tools or verify access scopes without credentials.",
   "webmcp": "Could not fully read this page (only 0 of 1 same-origin script bundles could be read). Nothing that was read uses WebMCP, but the unread part could, so this check is not scored.",
   "cli-tool": "CLI package found on npm: @box/cli",
   "rest-sdk-packages": "SDK package found only in npm",
   "nlweb-ask": "NLWeb /ask endpoint exists but requires authentication (HTTP 403, via GET)",
   "mpp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "x402-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "ucp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "acp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "ap2-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites"
  }
 },
 {
  "slug": "calendly",
  "name": "Calendly",
  "domain": "calendly.com",
  "finalUrl": "https://calendly.com/",
  "read": "2026-11-09",
  "scannedAt": "2026-11-06T17:33:24.696+00:00",
  "score": 72,
  "max": 100,
  "grade": "B",
  "category": "Productivity",
  "scoringVersion": null,
  "rulesUrl": null,
  "summary": "Calendly offers a published MCP server and passing access controls, but lacks a published OpenAPI specification for agents to discover its endpoints.",
  "layers": [
   {
    "id": "discovery",
    "name": "Discovery",
    "score": 11,
    "max": 18
   },
   {
    "id": "accessibility",
    "name": "Access",
    "score": 44,
    "max": 61
   },
   {
    "id": "usability",
    "name": "Usability",
    "score": 64,
    "max": 83
   },
   {
    "id": "payments",
    "name": "Payments",
    "score": 0,
    "max": 0
   }
  ],
  "checks": {
   "ard-catalog": [
    "fail",
    0,
    1
   ],
   "ai-catalog-published": [
    "na",
    0,
    1
   ],
   "ard-entries-valid": [
    "na",
    0,
    2
   ],
   "ard-trust-manifest": [
    "na",
    0,
    2
   ],
   "agentic-search-usecase": [
    "na",
    0,
    6
   ],
   "agentic-search-specific": [
    "warning",
    1,
    3
   ],
   "brand-search-accuracy": [
    "warning",
    1,
    3
   ],
   "wikipedia-presence": [
    "pass",
    4,
    4
   ],
   "robots-ai-policy-quality": [
    "pass",
    2,
    2
   ],
   "mcp-registry-listed": [
    "fail",
    0,
    1
   ],
   "npm-sdk-package": [
    "fail",
    0,
    1
   ],
   "agent-rules-repo": [
    "fail",
    0,
    1
   ],
   "agent-plugins-repo": [
    "fail",
    0,
    1
   ],
   "registry-branding": [
    "fail",
    0,
    2
   ],
   "chatgpt-app-listed": [
    "pass",
    2,
    2
   ],
   "noindex-directives": [
    "pass",
    1,
    1
   ],
   "sitemap": [
    "pass",
    2,
    2
   ],
   "content-no-js": [
    "warning",
    2,
    3
   ],
   "bot-detection": [
    "pass",
    2,
    2
   ],
   "agent-discovery-file": [
    "fail",
    0,
    2
   ],
   "agent-skills-index-v2": [
    "na",
    0,
    2
   ],
   "a2a-agent-card": [
    "fail",
    0,
    2
   ],
   "skills-sh-listed": [
    "fail",
    0,
    1
   ],
   "pricing-md": [
    "fail",
    0,
    2
   ],
   "nlweb-schema-feeds": [
    "fail",
    0,
    1
   ],
   "mcp-well-known-discovery": [
    "pass",
    2,
    2
   ],
   "agent-mode-view": [
    "fail",
    0,
    2
   ],
   "link-headers-discovery": [
    "fail",
    0,
    1
   ],
   "markdown-url-fallback": [
    "fail",
    0,
    2
   ],
   "modular-llms-txt": [
    "fail",
    0,
    1
   ],
   "sitemap-lastmod": [
    "pass",
    1,
    1
   ],
   "robots-agent-user-policy": [
    "pass",
    2,
    2
   ],
   "llms-txt-exists": [
    "pass",
    1,
    1
   ],
   "llms-txt-formatting": [
    "pass",
    2,
    2
   ],
   "json-ld": [
    "warning",
    2,
    4
   ],
   "pricing-info": [
    "pass",
    3,
    3
   ],
   "public-api-docs": [
    "pass",
    3,
    3
   ],
   "agent-instruction": [
    "warning",
    2,
    3
   ],
   "skills-sh-quality": [
    "fail",
    0,
    2
   ],
   "json-ld-entity-linking": [
    "warning",
    1,
    2
   ],
   "metadata-completeness": [
    "pass",
    2,
    2
   ],
   "org-schema-completeness": [
    "warning",
    1,
    2
   ],
   "schema-type-breadth": [
    "fail",
    0,
    2
   ],
   "trust-anchors": [
    "pass",
    2,
    2
   ],
   "llms-txt-links-resolve": [
    "pass",
    2,
    2
   ],
   "markdown-link-alternate": [
    "fail",
    0,
    1
   ],
   "markdown-frontmatter": [
    "na",
    0,
    1
   ],
   "redirect-hygiene": [
    "pass",
    1,
    1
   ],
   "page-token-budget": [
    "pass",
    1,
    1
   ],
   "code-fence-validity": [
    "pass",
    1,
    1
   ],
   "docs-auth-gate": [
    "pass",
    2,
    2
   ],
   "openapi-spec": [
    "fail",
    0,
    7
   ],
   "developer-portal": [
    "pass",
    6,
    6
   ],
   "api-catalog-rfc9727": [
    "fail",
    0,
    2
   ],
   "markdown-negotiation": [
    "fail",
    0,
    1
   ],
   "markdown-negotiation-vary": [
    "fail",
    0,
    1
   ],
   "agent-ua-markdown": [
    "fail",
    0,
    1
   ],
   "agent-crawler-reachability": [
    "pass",
    2,
    2
   ],
   "mcp-tool-descriptions": [
    "pass",
    3,
    3
   ],
   "mcp-param-schemas": [
    "pass",
    2,
    2
   ],
   "mcp-server-identity": [
    "fail",
    0,
    1
   ],
   "mcp-tool-listing": [
    "pass",
    3,
    3
   ],
   "mcp-tool-naming": [
    "pass",
    2,
    2
   ],
   "public-api": [
    "pass",
    7,
    7
   ],
   "oauth-support": [
    "pass",
    5,
    5
   ],
   "scoped-permissions": [
    "warning",
    2,
    5
   ],
   "mcp-auth-mechanism": [
    "pass",
    2,
    2
   ],
   "mcp-oauth-metadata": [
    "na",
    0,
    2
   ],
   "mcp-pkce-s256": [
    "na",
    0,
    2
   ],
   "onboarding-friction": [
    "warning",
    1,
    2
   ],
   "web-bot-auth-directory": [
    "fail",
    0,
    2
   ],
   "oauth-protected-resource": [
    "pass",
    2,
    2
   ],
   "auth-md-exists": [
    "fail",
    0,
    2
   ],
   "auth-md-structure": [
    "fail",
    0,
    2
   ],
   "auth-md-walkthrough-simulation": [
    "na",
    0,
    2
   ],
   "agent-auth-discovery-metadata": [
    "warning",
    1,
    3
   ],
   "agent-auth-www-authenticate": [
    "fail",
    0,
    1
   ],
   "agent-auth-endpoints-reachable": [
    "fail",
    0,
    2
   ],
   "pap-discovery": [
    "na",
    0,
    2
   ],
   "pap-issuer-binding": [
    "na",
    0,
    2
   ],
   "pap-auth-config": [
    "na",
    0,
    2
   ],
   "pap-interfaces": [
    "na",
    0,
    2
   ],
   "pap-endpoint-enforcement": [
    "na",
    0,
    2
   ],
   "pap-cross-protocol": [
    "na",
    0,
    2
   ],
   "mcp-server": [
    "warning",
    5,
    6
   ],
   "mcp-error-handling": [
    "warning",
    1,
    2
   ],
   "mcp-transport-modern": [
    "pass",
    1,
    1
   ],
   "webmcp": [
    "fail",
    0,
    5
   ],
   "rate-limit-headers": [
    "na",
    0,
    2
   ],
   "idempotency-key-support": [
    "na",
    0,
    3
   ],
   "json-error-responses": [
    "pass",
    4,
    4
   ],
   "api-error-model": [
    "na",
    0,
    3
   ],
   "api-versioning-policy": [
    "na",
    0,
    3
   ],
   "pagination-shape": [
    "na",
    0,
    2
   ],
   "async-job-pattern": [
    "na",
    0,
    2
   ],
   "cli-tool": [
    "warning",
    2,
    3
   ],
   "rest-sdk-packages": [
    "fail",
    0,
    3
   ],
   "nlweb-ask": [
    "fail",
    0,
    1
   ],
   "nlweb-streaming": [
    "fail",
    0,
    1
   ],
   "response-schema-coverage": [
    "na",
    0,
    2
   ],
   "mcp-tool-annotations": [
    "pass",
    2,
    2
   ],
   "mcp-server-card": [
    "fail",
    0,
    2
   ],
   "mcp-multi-surface-coverage": [
    "pass",
    2,
    2
   ],
   "sandbox-environment": [
    "warning",
    0,
    2
   ],
   "batch-endpoints": [
    "na",
    0,
    2
   ],
   "mcp-resource-listing": [
    "na",
    0,
    3
   ],
   "graphql-error-type-definition": [
    "na",
    0,
    3
   ],
   "graphql-versioning-policy": [
    "na",
    0,
    2
   ],
   "graphql-pagination-pattern": [
    "na",
    0,
    2
   ],
   "graphql-async-job-pattern": [
    "na",
    0,
    2
   ],
   "graphql-schema-completeness": [
    "na",
    0,
    3
   ],
   "graphql-batch-mutations": [
    "na",
    0,
    2
   ],
   "agent-friendly-404": [
    "warning",
    1,
    2
   ],
   "ax-document-structure": [
    "pass",
    3,
    3
   ],
   "ax-native-controls": [
    "pass",
    3,
    3
   ],
   "ax-accessible-names": [
    "pass",
    2,
    2
   ],
   "ax-form-labeling": [
    "na",
    0,
    2
   ],
   "ax-tree-injection-safe": [
    "pass",
    2,
    2
   ],
   "mcp-app-registry": [
    "na",
    0,
    4
   ],
   "a2ui-support": [
    "fail",
    0,
    2
   ],
   "mcp-apps-ui-quality": [
    "na",
    0,
    4
   ],
   "mcp-view-domain": [
    "na",
    0,
    4
   ],
   "mcp-view-csp": [
    "na",
    0,
    4
   ],
   "api-schema-analysis": [
    "fail",
    0,
    2
   ],
   "function-calling-compat": [
    "fail",
    0,
    2
   ],
   "mcp-resource-quality": [
    "na",
    0,
    3
   ],
   "mpp-support": [
    "na",
    0,
    2
   ],
   "x402-support": [
    "na",
    0,
    2
   ],
   "ucp-support": [
    "na",
    0,
    3
   ],
   "acp-support": [
    "na",
    0,
    3
   ],
   "acp-delegate-payment": [
    "na",
    0,
    3
   ],
   "ap2-support": [
    "na",
    0,
    3
   ]
  },
  "flagged": [
   {
    "id": "openapi-spec",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 7,
    "tier": "required",
    "est": 3.8,
    "detail": "No OpenAPI/Swagger specification found"
   },
   {
    "id": "webmcp",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 5,
    "tier": "required",
    "est": 2.7,
    "detail": "No WebMCP support detected - no document.modelContext / navigator.modelContext usage found (scanned 1 of 1 same-origin script bundle(s) for modelContext registrations)"
   },
   {
    "id": "agentic-search-specific",
    "layer": "discovery",
    "status": "warning",
    "score": 1,
    "max": 3,
    "tier": "recommended",
    "est": 2.5,
    "detail": "In a search for your API docs, none of the 10 results is your official docs. In a search for your MCP server, SDK or CLI, we found your MCP server at #2 (https://developer.calendly.com/docs/mcp/calendly-mcp-server)"
   },
   {
    "id": "brand-search-accuracy",
    "layer": "discovery",
    "status": "warning",
    "score": 1,
    "max": 3,
    "tier": "required",
    "est": 2.5,
    "detail": "calendly.com ranks #7 for \"Calendly\" (searched your brand name alone: no main product term from your homepage qualified)"
   },
   {
    "id": "rest-sdk-packages",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": 1.6,
    "detail": "No SDK packages found across language ecosystems"
   },
   {
    "id": "scoped-permissions",
    "layer": "usability",
    "status": "warning",
    "score": 2,
    "max": 5,
    "tier": "recommended",
    "est": 1.6,
    "detail": "Scoped permissions described at https://developer.calendly.com, but no machine-readable scope declaration found (OpenAPI oauth2 scopes or RFC 9728 scopes_supported)"
   },
   {
    "id": "ard-catalog",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 1.2,
    "detail": "No /.well-known/ard.json, no same-site rel=\"ard\" link, and no legacy /.well-known/ai-catalog.json"
   },
   {
    "id": "mcp-registry-listed",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 1.2,
    "detail": "No verified entry in the official MCP Registry or on Smithery, and no npm or PyPI package of yours that runs as an MCP server. To pass,"
   },
   {
    "id": "npm-sdk-package",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 1.2,
    "detail": "No NPM or PyPI SDK package found"
   },
   {
    "id": "agent-discovery-file",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 1.1,
    "detail": "No agent discovery file found"
   },
   {
    "id": "api-schema-analysis",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.1,
    "detail": "No API schema detected"
   },
   {
    "id": "function-calling-compat",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.1,
    "detail": "No API spec found - function calling requires discoverable endpoints"
   },
   {
    "id": "json-ld",
    "layer": "accessibility",
    "status": "warning",
    "score": 2,
    "max": 4,
    "tier": "required",
    "est": 1.1,
    "detail": "JSON-LD Organization found - missing description on this entity"
   },
   {
    "id": "schema-type-breadth",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.1,
    "detail": "No extended schema types found - AI can only answer basic questions about this entity"
   },
   {
    "id": "agent-friendly-404",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "The nonexistent path https://calendly.com/__ora-404-probe-l5t47l49 correctly returns HTTP 404. Partial credit: no Markdown error body was detected."
   },
   {
    "id": "agent-instruction",
    "layer": "accessibility",
    "status": "warning",
    "score": 2,
    "max": 3,
    "tier": "required",
    "est": 0.5,
    "detail": "When-to-use guidance found at https://developer.calendly.com"
   },
   {
    "id": "cli-tool",
    "layer": "usability",
    "status": "warning",
    "score": 2,
    "max": 3,
    "tier": "recommended",
    "est": 0.5,
    "detail": "CLI tool mentioned at https://developer.calendly.com"
   },
   {
    "id": "content-no-js",
    "layer": "accessibility",
    "status": "warning",
    "score": 2,
    "max": 3,
    "tier": "required",
    "est": 0.5,
    "detail": "Homepage: 9717 chars with H1, but 1.2% content ratio is below the 5% target. 5 of 5 sampled inner pages have text without JavaScript."
   },
   {
    "id": "json-ld-entity-linking",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "Entity linking to linkedin.com - add more authority profiles (Wikipedia, Wikidata, LinkedIn, GitHub)"
   },
   {
    "id": "mcp-server",
    "layer": "usability",
    "status": "warning",
    "score": 5,
    "max": 6,
    "tier": "required",
    "est": 0.5,
    "detail": "MCP server detected at https://mcp.calendly.com; it requires authentication. Presence is verified (5/6), but Ora could not inspect its tools or verify access scopes without credentials."
   },
   {
    "id": "onboarding-friction",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "Onboarding signals described but not verified live: free tier available, self-serve key generation, sandbox/test environment"
   },
   {
    "id": "org-schema-completeness",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "Organization schema found but missing: contactPoint, address"
   },
   {
    "id": "a2a-agent-card",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.3,
    "detail": "No A2A agent card found at /.well-known/agent-card.json"
   },
   {
    "id": "api-catalog-rfc9727",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.3,
    "detail": "No /.well-known/api-catalog found (RFC 9727)"
   },
   {
    "id": "agent-auth-discovery-metadata",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 3,
    "tier": "recommended",
    "est": 0.2,
    "detail": "PRM + AS metadata both present (PRM discovered at https://mcp.calendly.com) but AS metadata has no agent_auth block"
   },
   {
    "id": "agent-auth-endpoints-reachable",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.2,
    "detail": "No agent_auth endpoint URIs found in AS metadata or /auth.md prose; nothing to probe"
   },
   {
    "id": "auth-md-exists",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.2,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "auth-md-structure",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.2,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "mcp-server-card",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.2,
    "detail": "No MCP server card found for https://mcp.calendly.com (checked /.well-known/mcp/server-card.json, the site's ai-catalog.json, servers[].card in mcp.json, and <server>/server-card)"
   },
   {
    "id": "mcp-server-card",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.2,
    "detail": "No MCP server card found for https://developer.calendly.com/_mcp/server (checked /.well-known/mcp/server-card.json, the site's ai-catalog.json, servers[].card in mcp.json, and <server>/server-card)"
   },
   {
    "id": "sandbox-environment",
    "layer": "usability",
    "status": "warning",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.2,
    "detail": "Testing/staging environment mentioned at https://community.calendly.com/developer-community-60 but no dedicated sandbox found"
   },
   {
    "id": "agent-auth-www-authenticate",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.1,
    "detail": "No 401 with WWW-Authenticate: Bearer resource_metadata=... found. Probed [https://calendly.com/api, https://calendly.com/api/v1, https://calendly.com/v1, https://calendly.com/v2, https://calendly.com/agent/identity,"
   },
   {
    "id": "link-headers-discovery",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 0.1,
    "detail": "No HTTP Link response headers (RFC 8288) found"
   },
   {
    "id": "markdown-negotiation-vary",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.1,
    "detail": "Homepage https://calendly.com does not meet the Markdown negotiation requirements: Accept: text/markdown returned text/html; Vary header missing Accept (got \"origin\")"
   },
   {
    "id": "mcp-error-handling",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.1,
    "detail": "docs MCP returns error for invalid tool call but missing structured code or message"
   },
   {
    "id": "mcp-server-identity",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.1,
    "detail": "docs MCP identity incomplete - missing: instructions"
   },
   {
    "id": "a2ui-support",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No A2UI or generative UI support detected"
   },
   {
    "id": "agent-mode-view",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "?mode=agent returns same content as homepage (no dedicated agent view)"
   },
   {
    "id": "agent-plugins-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No Agent Plugins manifest (plugin.json) found in discovered repos"
   },
   {
    "id": "agent-rules-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Could not locate a public repo containing agent configs or rules. If our probes missed it, AI coding agents likely will too - link the repo from your homepage or docs so it's discoverable."
   },
   {
    "id": "agent-ua-markdown",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly."
   },
   {
    "id": "markdown-link-alternate",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No sampled page advertises a markdown alternate. Add <link rel=\"alternate\" type=\"text/markdown\" href=\"...\"> (or the equivalent Link response header) pointing at a markdown twin of the page."
   },
   {
    "id": "markdown-negotiation",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Missing markdown content negotiation. Homepage returned text/html when probed with Accept: text/markdown (expected text/markdown), and none of the well-known root paths (/llms.md, /auth.md, /agents.md, /developers.md, /api.md, /index.md,"
   },
   {
    "id": "markdown-url-fallback",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "Homepage does not support the .md suffix. Probed https://calendly.com/index.md and it did not return markdown (expected text/markdown content-type or a heading-led non-HTML body)."
   },
   {
    "id": "modular-llms-txt",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No section-level llms.txt found. Tried /docs/llms.txt, /api/llms.txt, /developers/llms.txt, /guides/llms.txt, /reference/llms.txt, /pricing/llms.txt, /contact/llms.txt, /login/llms.txt, /signup/llms.txt, /scheduling/llms.txt."
   },
   {
    "id": "nlweb-ask",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No NLWeb-conformant /ask endpoint found via GET or POST"
   },
   {
    "id": "nlweb-schema-feeds",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No schemamap: directive in robots.txt"
   },
   {
    "id": "nlweb-streaming",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "NLWeb /ask does not support SSE streaming via GET or POST"
   },
   {
    "id": "pricing-md",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No pricing.md found - agents need machine-readable pricing to compare products and make purchase recommendations"
   },
   {
    "id": "registry-branding",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No registry branding (name, icon, description) found"
   },
   {
    "id": "skills-sh-listed",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No official skills self-published on skills.sh (95 community skills with potential relation to this domain found, but only self-published official skills count)"
   },
   {
    "id": "skills-sh-quality",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No official skills on skills.sh to evaluate"
   },
   {
    "id": "web-bot-auth-directory",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No /.well-known/http-message-signatures-directory found"
   }
  ],
  "seen": {
   "brand-search-accuracy": "calendly.com ranks #7 for \"Calendly\" (searched your brand name alone: no main product term from your homepage qualified)",
   "wikipedia-presence": "Wikipedia \"Calendly\" and Wikidata Q111946817 both verified - domain confirmed on both sources",
   "robots-ai-policy-quality": "AI search crawlers: allowed in 18 of 18 checks (3 crawlers on 6 pages). AI training crawlers: allowed in 12 of 12 checks (2 crawlers on 6 pages), not scored.",
   "noindex-directives": "No noindex on the homepage: no robots, googlebot or bingbot meta tag and no X-Robots-Tag header hides it from search.",
   "sitemap": "Valid sitemap found at https://calendly.com/marketing-site/sitemap.xml with 1073 entries",
   "content-no-js": "Homepage: 9717 chars with H1, but 1.2% content ratio is below the 5% target. 5 of 5 sampled inner pages have text without JavaScript.",
   "bot-detection": "Site accessible to 4 agent user-agents (ChatGPT-User, OAI-SearchBot, Claude-User, PerplexityBot).",
   "agent-discovery-file": "No agent discovery file found",
   "a2a-agent-card": "No A2A agent card found at /.well-known/agent-card.json",
   "mcp-well-known-discovery": "MCP server referenced in llms.txt",
   "robots-agent-user-policy": "No applicable crawl or usage restriction found for 3 user-triggered agents (chatgpt-user, claude-user, perplexity-user) on 1 public page: https://calendly.com/. Declared policy only;",
   "llms-txt-exists": "Found the llms.txt at https://developer.calendly.com/llms.txt.",
   "llms-txt-formatting": "The llms.txt is well-formatted: 78 lines with markdown links, 11,889 characters in total.",
   "json-ld": "JSON-LD Organization found - missing description on this entity",
   "public-api-docs": "Documentation site found at https://developer.calendly.com",
   "metadata-completeness": "All metadata signals present: canonical URL, lang=\"en\", og:image, og:type",
   "page-token-budget": "All 6 measured pages fit an agent context budget (largest ~4K tokens)",
   "docs-auth-gate": "All 5 sampled pages are publicly readable (5 with substantive content)",
   "openapi-spec": "No OpenAPI/Swagger specification found",
   "developer-portal": "Developer portal found at /docs",
   "markdown-negotiation": "Missing markdown content negotiation. Homepage returned text/html when probed with Accept: text/markdown (expected text/markdown), and none of the well-known root paths (/llms.md, /auth.md, /agents.md, /developers.md,",
   "agent-ua-markdown": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly.",
   "agent-crawler-reachability": "Reachable to every agent we tested - ChatGPT-User: reachable, OAI-SearchBot: reachable, Claude-User: reachable, PerplexityBot: reachable",
   "public-api": "REST API documentation found at /reference. Best-of-protocols score: 7/7.",
   "oauth-support": "OAuth authorization server metadata at https://calendly.com/",
   "mcp-server": "MCP server detected at https://mcp.calendly.com; it requires authentication. Presence is verified (5/6), but Ora could not inspect its tools or verify access scopes without credentials.",
   "webmcp": "No WebMCP support detected - no document.modelContext / navigator.modelContext usage found (scanned 1 of 1 same-origin script bundle(s) for modelContext registrations)",
   "cli-tool": "CLI tool mentioned at https://developer.calendly.com",
   "rest-sdk-packages": "No SDK packages found across language ecosystems",
   "nlweb-ask": "No NLWeb-conformant /ask endpoint found via GET or POST",
   "mpp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "x402-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "ucp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "acp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "ap2-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites"
  }
 },
 {
  "slug": "canva",
  "name": "Canva",
  "domain": "canva.com",
  "finalUrl": "https://www.canva.com/",
  "read": "2026-11-09",
  "scannedAt": "2026-11-07T21:11:57.386+00:00",
  "score": 42,
  "max": 100,
  "grade": "D",
  "category": "Productivity",
  "scoringVersion": null,
  "rulesUrl": null,
  "summary": "Bot detection turns agents away at the door, and the homepage shows no content without JavaScript.",
  "layers": [
   {
    "id": "discovery",
    "name": "Discovery",
    "score": 12,
    "max": 17
   },
   {
    "id": "accessibility",
    "name": "Access",
    "score": 5,
    "max": 53
   },
   {
    "id": "usability",
    "name": "Usability",
    "score": 35,
    "max": 68
   },
   {
    "id": "payments",
    "name": "Payments",
    "score": 0,
    "max": 0
   }
  ],
  "checks": {
   "ard-catalog": [
    "fail",
    0,
    1
   ],
   "ai-catalog-published": [
    "na",
    0,
    1
   ],
   "ard-entries-valid": [
    "na",
    0,
    2
   ],
   "ard-trust-manifest": [
    "na",
    0,
    2
   ],
   "agentic-search-usecase": [
    "na",
    0,
    6
   ],
   "agentic-search-specific": [
    "warning",
    2,
    3
   ],
   "brand-search-accuracy": [
    "warning",
    1,
    3
   ],
   "wikipedia-presence": [
    "pass",
    4,
    4
   ],
   "robots-ai-policy-quality": [
    "pass",
    2,
    2
   ],
   "mcp-registry-listed": [
    "fail",
    0,
    1
   ],
   "npm-sdk-package": [
    "pass",
    1,
    1
   ],
   "agent-rules-repo": [
    "fail",
    0,
    1
   ],
   "agent-plugins-repo": [
    "fail",
    0,
    1
   ],
   "registry-branding": [
    "fail",
    0,
    2
   ],
   "chatgpt-app-listed": [
    "pass",
    2,
    2
   ],
   "noindex-directives": [
    "na",
    0,
    1
   ],
   "sitemap": [
    "pass",
    2,
    2
   ],
   "content-no-js": [
    "warning",
    0,
    3
   ],
   "bot-detection": [
    "warning",
    0,
    2
   ],
   "agent-discovery-file": [
    "fail",
    0,
    2
   ],
   "agent-skills-index-v2": [
    "na",
    0,
    2
   ],
   "a2a-agent-card": [
    "fail",
    0,
    2
   ],
   "skills-sh-listed": [
    "pass",
    1,
    1
   ],
   "pricing-md": [
    "fail",
    0,
    2
   ],
   "nlweb-schema-feeds": [
    "fail",
    0,
    1
   ],
   "mcp-well-known-discovery": [
    "warning",
    1,
    2
   ],
   "agent-mode-view": [
    "fail",
    0,
    2
   ],
   "link-headers-discovery": [
    "fail",
    0,
    1
   ],
   "markdown-url-fallback": [
    "fail",
    0,
    2
   ],
   "modular-llms-txt": [
    "fail",
    0,
    1
   ],
   "sitemap-lastmod": [
    "na",
    0,
    1
   ],
   "robots-agent-user-policy": [
    "pass",
    2,
    2
   ],
   "llms-txt-exists": [
    "fail",
    0,
    1
   ],
   "llms-txt-formatting": [
    "fail",
    0,
    2
   ],
   "json-ld": [
    "warning",
    0,
    4
   ],
   "pricing-info": [
    "fail",
    0,
    3
   ],
   "public-api-docs": [
    "warning",
    0,
    3
   ],
   "agent-instruction": [
    "fail",
    0,
    3
   ],
   "skills-sh-quality": [
    "pass",
    2,
    2
   ],
   "json-ld-entity-linking": [
    "warning",
    0,
    2
   ],
   "metadata-completeness": [
    "warning",
    0,
    2
   ],
   "org-schema-completeness": [
    "warning",
    0,
    2
   ],
   "schema-type-breadth": [
    "warning",
    0,
    2
   ],
   "trust-anchors": [
    "fail",
    0,
    2
   ],
   "llms-txt-links-resolve": [
    "na",
    0,
    2
   ],
   "markdown-link-alternate": [
    "na",
    0,
    1
   ],
   "markdown-frontmatter": [
    "na",
    0,
    1
   ],
   "redirect-hygiene": [
    "na",
    0,
    1
   ],
   "page-token-budget": [
    "na",
    0,
    1
   ],
   "code-fence-validity": [
    "na",
    0,
    1
   ],
   "docs-auth-gate": [
    "na",
    0,
    2
   ],
   "openapi-spec": [
    "fail",
    0,
    7
   ],
   "developer-portal": [
    "fail",
    0,
    6
   ],
   "api-catalog-rfc9727": [
    "fail",
    0,
    2
   ],
   "markdown-negotiation": [
    "fail",
    0,
    1
   ],
   "markdown-negotiation-vary": [
    "fail",
    0,
    1
   ],
   "agent-ua-markdown": [
    "na",
    0,
    1
   ],
   "agent-crawler-reachability": [
    "warning",
    0,
    2
   ],
   "mcp-tool-descriptions": [
    "na",
    0,
    3
   ],
   "mcp-param-schemas": [
    "na",
    0,
    2
   ],
   "mcp-server-identity": [
    "na",
    0,
    1
   ],
   "mcp-tool-listing": [
    "na",
    0,
    3
   ],
   "mcp-tool-naming": [
    "na",
    0,
    2
   ],
   "public-api": [
    "pass",
    7,
    7
   ],
   "oauth-support": [
    "pass",
    5,
    5
   ],
   "scoped-permissions": [
    "fail",
    0,
    5
   ],
   "mcp-auth-mechanism": [
    "pass",
    2,
    2
   ],
   "mcp-oauth-metadata": [
    "pass",
    2,
    2
   ],
   "mcp-pkce-s256": [
    "pass",
    2,
    2
   ],
   "onboarding-friction": [
    "fail",
    0,
    2
   ],
   "web-bot-auth-directory": [
    "fail",
    0,
    2
   ],
   "oauth-protected-resource": [
    "pass",
    2,
    2
   ],
   "auth-md-exists": [
    "fail",
    0,
    2
   ],
   "auth-md-structure": [
    "fail",
    0,
    2
   ],
   "auth-md-walkthrough-simulation": [
    "na",
    0,
    2
   ],
   "agent-auth-discovery-metadata": [
    "warning",
    1,
    3
   ],
   "agent-auth-www-authenticate": [
    "pass",
    1,
    1
   ],
   "agent-auth-endpoints-reachable": [
    "fail",
    0,
    2
   ],
   "pap-discovery": [
    "na",
    0,
    2
   ],
   "pap-issuer-binding": [
    "na",
    0,
    2
   ],
   "pap-auth-config": [
    "na",
    0,
    2
   ],
   "pap-interfaces": [
    "na",
    0,
    2
   ],
   "pap-endpoint-enforcement": [
    "na",
    0,
    2
   ],
   "pap-cross-protocol": [
    "na",
    0,
    2
   ],
   "mcp-server": [
    "warning",
    5,
    6
   ],
   "mcp-error-handling": [
    "na",
    0,
    2
   ],
   "mcp-transport-modern": [
    "na",
    0,
    1
   ],
   "webmcp": [
    "fail",
    0,
    5
   ],
   "rate-limit-headers": [
    "fail",
    0,
    2
   ],
   "idempotency-key-support": [
    "fail",
    0,
    3
   ],
   "json-error-responses": [
    "pass",
    4,
    4
   ],
   "api-error-model": [
    "na",
    0,
    3
   ],
   "api-versioning-policy": [
    "na",
    0,
    3
   ],
   "pagination-shape": [
    "na",
    0,
    2
   ],
   "async-job-pattern": [
    "na",
    0,
    2
   ],
   "cli-tool": [
    "pass",
    3,
    3
   ],
   "rest-sdk-packages": [
    "warning",
    1,
    3
   ],
   "nlweb-ask": [
    "pass",
    1,
    1
   ],
   "nlweb-streaming": [
    "fail",
    0,
    1
   ],
   "response-schema-coverage": [
    "na",
    0,
    2
   ],
   "mcp-tool-annotations": [
    "na",
    0,
    2
   ],
   "mcp-server-card": [
    "fail",
    0,
    2
   ],
   "mcp-multi-surface-coverage": [
    "fail",
    0,
    2
   ],
   "sandbox-environment": [
    "fail",
    0,
    2
   ],
   "batch-endpoints": [
    "na",
    0,
    2
   ],
   "mcp-resource-listing": [
    "na",
    0,
    3
   ],
   "graphql-error-type-definition": [
    "fail",
    0,
    3
   ],
   "graphql-versioning-policy": [
    "fail",
    0,
    2
   ],
   "graphql-pagination-pattern": [
    "fail",
    0,
    2
   ],
   "graphql-async-job-pattern": [
    "fail",
    0,
    2
   ],
   "graphql-schema-completeness": [
    "na",
    0,
    3
   ],
   "graphql-batch-mutations": [
    "na",
    0,
    2
   ],
   "agent-friendly-404": [
    "na",
    0,
    2
   ],
   "ax-document-structure": [
    "na",
    0,
    3
   ],
   "ax-native-controls": [
    "na",
    0,
    3
   ],
   "ax-accessible-names": [
    "na",
    0,
    2
   ],
   "ax-form-labeling": [
    "na",
    0,
    2
   ],
   "ax-tree-injection-safe": [
    "na",
    0,
    2
   ],
   "mcp-app-registry": [
    "na",
    0,
    4
   ],
   "a2ui-support": [
    "na",
    0,
    2
   ],
   "mcp-apps-ui-quality": [
    "na",
    0,
    4
   ],
   "mcp-view-domain": [
    "na",
    0,
    4
   ],
   "mcp-view-csp": [
    "na",
    0,
    4
   ],
   "api-schema-analysis": [
    "fail",
    0,
    2
   ],
   "function-calling-compat": [
    "fail",
    0,
    2
   ],
   "mcp-resource-quality": [
    "na",
    0,
    3
   ],
   "mpp-support": [
    "na",
    0,
    2
   ],
   "x402-support": [
    "na",
    0,
    2
   ],
   "ucp-support": [
    "na",
    0,
    3
   ],
   "acp-support": [
    "na",
    0,
    3
   ],
   "acp-delegate-payment": [
    "na",
    0,
    3
   ],
   "ap2-support": [
    "na",
    0,
    3
   ]
  },
  "flagged": [
   {
    "id": "openapi-spec",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 7,
    "tier": "required",
    "est": 4.4,
    "detail": "No OpenAPI/Swagger specification found"
   },
   {
    "id": "developer-portal",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 6,
    "tier": "recommended",
    "est": 3.8,
    "detail": "No developer portal found"
   },
   {
    "id": "scoped-permissions",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 5,
    "tier": "recommended",
    "est": 3.3,
    "detail": "No declared OAuth scopes, security schemes, or scoped-permission documentation found"
   },
   {
    "id": "webmcp",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 5,
    "tier": "required",
    "est": 3.3,
    "detail": "No WebMCP support detected - no document.modelContext / navigator.modelContext usage found"
   },
   {
    "id": "brand-search-accuracy",
    "layer": "discovery",
    "status": "warning",
    "score": 1,
    "max": 3,
    "tier": "required",
    "est": 2.6,
    "detail": "canva.com ranks #9 for \"canva\" (searched your brand name alone: we could not read a product term from your site)"
   },
   {
    "id": "json-ld",
    "layer": "accessibility",
    "status": "warning",
    "score": 0,
    "max": 4,
    "tier": "required",
    "est": 2.5,
    "detail": "Homepage blocked by WAF - cannot check structured data"
   },
   {
    "id": "graphql-error-type-definition",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": 2,
    "detail": "GraphQL introspection auth-gated and no typed graphql error model documentation found on GraphQL-tagged pages"
   },
   {
    "id": "idempotency-key-support",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": 2,
    "detail": "GraphQL introspection auth-gated and no idempotency documentation found on GraphQL-tagged pages"
   },
   {
    "id": "agent-instruction",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "required",
    "est": 1.9,
    "detail": "No agent instruction file with when-to-use guidance found"
   },
   {
    "id": "content-no-js",
    "layer": "accessibility",
    "status": "warning",
    "score": 0,
    "max": 3,
    "tier": "required",
    "est": 1.9,
    "detail": "Homepage blocked by WAF/security challenge - content not accessible to agents"
   },
   {
    "id": "pricing-info",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "required",
    "est": 1.9,
    "detail": "No pricing page or pricing data found"
   },
   {
    "id": "public-api-docs",
    "layer": "accessibility",
    "status": "warning",
    "score": 0,
    "max": 3,
    "tier": "required",
    "est": 1.9,
    "detail": "Homepage blocked by WAF - cannot check for docs links"
   },
   {
    "id": "agent-crawler-reachability",
    "layer": "accessibility",
    "status": "warning",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.3,
    "detail": "Bot management challenged ChatGPT-User, OAI-SearchBot, Claude-User, PerplexityBot - a challenge is an identity check verified crawlers pass, so reachability is undetermined rather than blocked (ChatGPT-User: challenged,"
   },
   {
    "id": "agent-discovery-file",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 1.3,
    "detail": "No agent discovery file found"
   },
   {
    "id": "agentic-search-specific",
    "layer": "discovery",
    "status": "warning",
    "score": 2,
    "max": 3,
    "tier": "recommended",
    "est": 1.3,
    "detail": "In a search for your API docs, your docs came up at #6 (https://www.canva.com/developers). In a search for your MCP server, SDK or CLI, none of the 10 results is your own, although the scan found one on your site"
   },
   {
    "id": "api-schema-analysis",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.3,
    "detail": "GraphQL: introspection auth-gated and no schema evidence in docs"
   },
   {
    "id": "ard-catalog",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 1.3,
    "detail": "No /.well-known/ard.json, no same-site rel=\"ard\" link, and no legacy /.well-known/ai-catalog.json"
   },
   {
    "id": "bot-detection",
    "layer": "accessibility",
    "status": "warning",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 1.3,
    "detail": "Bot management challenged ChatGPT-User, OAI-SearchBot, Claude-User, PerplexityBot. A challenge is an identity check that verified crawlers pass, so this is not proof agents are blocked - but unverified agents will not get through."
   },
   {
    "id": "function-calling-compat",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.3,
    "detail": "No API spec found - function calling requires discoverable endpoints"
   },
   {
    "id": "graphql-async-job-pattern",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.3,
    "detail": "GraphQL introspection auth-gated and no graphql async-job pattern documentation found on GraphQL-tagged pages"
   },
   {
    "id": "graphql-pagination-pattern",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.3,
    "detail": "GraphQL introspection auth-gated and no graphql pagination pattern documentation found on GraphQL-tagged pages"
   },
   {
    "id": "graphql-versioning-policy",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.3,
    "detail": "GraphQL introspection auth-gated and no graphql versioning / deprecation policy documentation found on GraphQL-tagged pages"
   },
   {
    "id": "json-ld-entity-linking",
    "layer": "accessibility",
    "status": "warning",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.3,
    "detail": "Homepage blocked by WAF - cannot check entity linking"
   },
   {
    "id": "llms-txt-formatting",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.3,
    "detail": "No llms.txt found to evaluate quality"
   },
   {
    "id": "mcp-registry-listed",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 1.3,
    "detail": "No verified entry in the official MCP Registry or on Smithery, and no npm or PyPI package of yours that runs as an MCP server. To pass,"
   },
   {
    "id": "metadata-completeness",
    "layer": "accessibility",
    "status": "warning",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 1.3,
    "detail": "Homepage blocked by WAF - cannot check metadata"
   },
   {
    "id": "onboarding-friction",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.3,
    "detail": "Insufficient content to evaluate onboarding friction"
   },
   {
    "id": "org-schema-completeness",
    "layer": "accessibility",
    "status": "warning",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.3,
    "detail": "Homepage blocked by WAF - cannot check Organization schema"
   },
   {
    "id": "rate-limit-headers",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.3,
    "detail": "GraphQL introspection auth-gated and no header convention documented on GraphQL-tagged pages"
   },
   {
    "id": "rest-sdk-packages",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 3,
    "tier": "recommended",
    "est": 1.3,
    "detail": "SDK package found only in npm"
   },
   {
    "id": "schema-type-breadth",
    "layer": "accessibility",
    "status": "warning",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.3,
    "detail": "Homepage blocked by WAF - cannot check schema types"
   },
   {
    "id": "trust-anchors",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 1.3,
    "detail": "No trust anchor pages found with sufficient content (About, Contact, Privacy)"
   },
   {
    "id": "a2a-agent-card",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.1,
    "detail": "No A2A agent card found at /.well-known/agent-card.json"
   },
   {
    "id": "api-catalog-rfc9727",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 1.1,
    "detail": "No /.well-known/api-catalog found (RFC 9727)"
   },
   {
    "id": "mcp-server",
    "layer": "usability",
    "status": "warning",
    "score": 5,
    "max": 6,
    "tier": "required",
    "est": 0.7,
    "detail": "MCP server detected at https://mcp.canva.com/mcp; it requires authentication. Presence is verified (5/6), but Ora could not inspect its tools or verify access scopes without credentials."
   },
   {
    "id": "agent-auth-discovery-metadata",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 3,
    "tier": "recommended",
    "est": 0.6,
    "detail": "PRM + AS metadata both present (PRM discovered at https://mcp.canva.com) (AS metadata fetched from advertised origin https://mcp.canva.com) but AS metadata has no agent_auth block"
   },
   {
    "id": "agent-auth-endpoints-reachable",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "No agent_auth endpoint URIs found in AS metadata or /auth.md prose; nothing to probe"
   },
   {
    "id": "auth-md-exists",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.6,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "auth-md-structure",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "link-headers-discovery",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 0.6,
    "detail": "No HTTP Link response headers (RFC 8288) found"
   },
   {
    "id": "llms-txt-exists",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 0.6,
    "detail": "No llms.txt found at /llms.txt or /.well-known/llms.txt."
   },
   {
    "id": "markdown-negotiation-vary",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.6,
    "detail": "Homepage https://canva.com does not meet the Markdown negotiation requirements: Accept: text/markdown returned text/html; charset=utf-8; Vary header missing Accept (got \"accept-encoding\")"
   },
   {
    "id": "mcp-multi-surface-coverage",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "You run an MCP server for your product, but not one for your documentation. This bonus needs two MCP servers: one for your product so agents can take actions,"
   },
   {
    "id": "mcp-server-card",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "No MCP server card found for https://mcp.canva.com/mcp (checked /.well-known/mcp/server-card.json, the site's ai-catalog.json, servers[].card in mcp.json, and <server>/server-card)"
   },
   {
    "id": "mcp-well-known-discovery",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "MCP server at https://mcp.canva.com/mcp - list its server card, hosted on your own domain, in /.well-known/ai-catalog.json so MCP clients can discover it"
   },
   {
    "id": "sandbox-environment",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "No sandbox or test environment found"
   },
   {
    "id": "agent-mode-view",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No agent mode view detected at ?mode=agent (optional)"
   },
   {
    "id": "agent-plugins-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No Agent Plugins manifest (plugin.json) found in discovered repos"
   },
   {
    "id": "agent-rules-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Could not locate a public repo containing agent configs or rules. If our probes missed it, AI coding agents likely will too - link the repo from your homepage or docs so it's discoverable."
   },
   {
    "id": "markdown-negotiation",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Missing markdown content negotiation. Homepage returned text/html when probed with Accept: text/markdown (expected text/markdown), and none of the well-known root paths (/llms.md, /auth.md, /agents.md, /developers.md, /api.md, /index.md,"
   },
   {
    "id": "markdown-url-fallback",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "Homepage does not support the .md suffix. Probed https://canva.com/index.md and it did not return markdown (expected text/markdown content-type or a heading-led non-HTML body)."
   },
   {
    "id": "modular-llms-txt",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No section-level llms.txt found. Tried /docs/llms.txt, /api/llms.txt, /developers/llms.txt, /guides/llms.txt, /reference/llms.txt. This is a bonus check: it can add a point and never costs one."
   },
   {
    "id": "nlweb-schema-feeds",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No schemamap: directive in robots.txt"
   },
   {
    "id": "nlweb-streaming",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "NLWeb /ask requires authentication - cannot verify streaming"
   },
   {
    "id": "pricing-md",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No pricing.md found - agents need machine-readable pricing to compare products and make purchase recommendations"
   },
   {
    "id": "registry-branding",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No registry branding (name, icon, description) found"
   },
   {
    "id": "web-bot-auth-directory",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No /.well-known/http-message-signatures-directory found"
   }
  ],
  "seen": {
   "brand-search-accuracy": "canva.com ranks #9 for \"canva\" (searched your brand name alone: we could not read a product term from your site)",
   "wikipedia-presence": "Wikipedia \"Canva\" and Wikidata Q23498528 both verified - domain confirmed on both sources",
   "robots-ai-policy-quality": "AI search crawlers: allowed in 3 of 3 checks (3 crawlers on 1 page). AI training crawlers: allowed in 0 of 2 checks (2 crawlers on 1 page), not scored.",
   "noindex-directives": "Homepage blocked by WAF - cannot read its indexing directives",
   "sitemap": "Valid sitemap found at https://sitemap.canva.com/sitemap_index.xml with multiple sitemaps entries",
   "content-no-js": "Homepage blocked by WAF/security challenge - content not accessible to agents",
   "bot-detection": "Bot management challenged ChatGPT-User, OAI-SearchBot, Claude-User, PerplexityBot. A challenge is an identity check that verified crawlers pass,",
   "agent-discovery-file": "No agent discovery file found",
   "a2a-agent-card": "No A2A agent card found at /.well-known/agent-card.json",
   "mcp-well-known-discovery": "MCP server at https://mcp.canva.com/mcp - list its server card, hosted on your own domain, in /.well-known/ai-catalog.json so MCP clients can discover it",
   "robots-agent-user-policy": "No applicable crawl or usage restriction found for 3 user-triggered agents (chatgpt-user, claude-user, perplexity-user) on 1 public page: https://canva.com/. Declared policy only;",
   "llms-txt-exists": "No llms.txt found at /llms.txt or /.well-known/llms.txt.",
   "llms-txt-formatting": "No llms.txt found to evaluate quality",
   "json-ld": "Homepage blocked by WAF - cannot check structured data",
   "public-api-docs": "Homepage blocked by WAF - cannot check for docs links",
   "metadata-completeness": "Homepage blocked by WAF - cannot check metadata",
   "page-token-budget": "Nothing sampled to measure",
   "docs-auth-gate": "Site is behind a WAF/bot wall (scored by bot-detection) - cannot separate auth gating from bot blocking",
   "openapi-spec": "No OpenAPI/Swagger specification found",
   "developer-portal": "No developer portal found",
   "markdown-negotiation": "Missing markdown content negotiation. Homepage returned text/html when probed with Accept: text/markdown (expected text/markdown), and none of the well-known root paths (/llms.md, /auth.md, /agents.md, /developers.md,",
   "agent-ua-markdown": "Site is behind a WAF/bot wall - cannot probe bot-UA serving",
   "agent-crawler-reachability": "Bot management challenged ChatGPT-User, OAI-SearchBot, Claude-User, PerplexityBot - a challenge is an identity check verified crawlers pass, so reachability is undetermined rather than blocked (ChatGPT-User: challenged,",
   "public-api": "GraphQL endpoint at https://canva.com/graphql is reachable; introspection requires authentication (API key / OAuth), which is expected for agent access. Best-of-protocols score: 7/7.",
   "oauth-support": "OAuth authorization server metadata at https://mcp.canva.com",
   "mcp-server": "MCP server detected at https://mcp.canva.com/mcp; it requires authentication. Presence is verified (5/6), but Ora could not inspect its tools or verify access scopes without credentials.",
   "webmcp": "No WebMCP support detected - no document.modelContext / navigator.modelContext usage found",
   "cli-tool": "CLI package found on npm: @canva/cli",
   "rest-sdk-packages": "SDK package found only in npm",
   "nlweb-ask": "NLWeb /ask endpoint exists but requires authentication (HTTP 403, via GET)",
   "mpp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "x402-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "ucp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "acp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "ap2-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites"
  }
 },
 {
  "slug": "checkout",
  "name": "Checkout.com",
  "domain": "checkout.com",
  "finalUrl": "https://www.checkout.com/",
  "read": "2026-11-09",
  "scannedAt": "2026-10-21T20:06:31.249+00:00",
  "score": 73,
  "max": 100,
  "grade": "B",
  "category": "Payments & Fintech",
  "scoringVersion": null,
  "rulesUrl": null,
  "summary": "Checkout.com offers strong developer SDKs and documentation discovery, but needs an OpenAPI specification for agent integration.",
  "layers": [
   {
    "id": "discovery",
    "name": "Discovery",
    "score": 14,
    "max": 16
   },
   {
    "id": "accessibility",
    "name": "Access",
    "score": 47,
    "max": 61
   },
   {
    "id": "usability",
    "name": "Usability",
    "score": 39,
    "max": 63
   },
   {
    "id": "payments",
    "name": "Payments",
    "score": 0,
    "max": 0
   }
  ],
  "checks": {
   "ard-catalog": [
    "fail",
    0,
    1
   ],
   "ai-catalog-published": [
    "na",
    0,
    1
   ],
   "ard-entries-valid": [
    "na",
    0,
    2
   ],
   "ard-trust-manifest": [
    "na",
    0,
    2
   ],
   "agentic-search-usecase": [
    "na",
    0,
    6
   ],
   "agentic-search-specific": [
    "pass",
    3,
    3
   ],
   "brand-search-accuracy": [
    "pass",
    3,
    3
   ],
   "wikipedia-presence": [
    "pass",
    4,
    4
   ],
   "robots-ai-policy-quality": [
    "pass",
    2,
    2
   ],
   "mcp-registry-listed": [
    "fail",
    0,
    1
   ],
   "npm-sdk-package": [
    "pass",
    1,
    1
   ],
   "agent-rules-repo": [
    "fail",
    0,
    1
   ],
   "agent-plugins-repo": [
    "fail",
    0,
    1
   ],
   "registry-branding": [
    "fail",
    0,
    2
   ],
   "chatgpt-app-listed": [
    "fail",
    0,
    2
   ],
   "noindex-directives": [
    "pass",
    1,
    1
   ],
   "sitemap": [
    "pass",
    2,
    2
   ],
   "content-no-js": [
    "pass",
    3,
    3
   ],
   "bot-detection": [
    "pass",
    2,
    2
   ],
   "agent-discovery-file": [
    "fail",
    0,
    2
   ],
   "agent-skills-index-v2": [
    "na",
    0,
    2
   ],
   "a2a-agent-card": [
    "fail",
    0,
    2
   ],
   "skills-sh-listed": [
    "fail",
    0,
    1
   ],
   "pricing-md": [
    "fail",
    0,
    2
   ],
   "nlweb-schema-feeds": [
    "fail",
    0,
    1
   ],
   "mcp-well-known-discovery": [
    "warning",
    1,
    2
   ],
   "agent-mode-view": [
    "fail",
    0,
    2
   ],
   "link-headers-discovery": [
    "fail",
    0,
    1
   ],
   "markdown-url-fallback": [
    "fail",
    0,
    2
   ],
   "modular-llms-txt": [
    "warning",
    0,
    1
   ],
   "sitemap-lastmod": [
    "pass",
    1,
    1
   ],
   "robots-agent-user-policy": [
    "pass",
    2,
    2
   ],
   "llms-txt-exists": [
    "pass",
    1,
    1
   ],
   "llms-txt-formatting": [
    "warning",
    1,
    2
   ],
   "json-ld": [
    "pass",
    4,
    4
   ],
   "pricing-info": [
    "pass",
    3,
    3
   ],
   "public-api-docs": [
    "pass",
    3,
    3
   ],
   "agent-instruction": [
    "pass",
    3,
    3
   ],
   "skills-sh-quality": [
    "fail",
    0,
    2
   ],
   "json-ld-entity-linking": [
    "warning",
    1,
    2
   ],
   "metadata-completeness": [
    "pass",
    2,
    2
   ],
   "org-schema-completeness": [
    "warning",
    1,
    2
   ],
   "schema-type-breadth": [
    "fail",
    0,
    2
   ],
   "trust-anchors": [
    "pass",
    2,
    2
   ],
   "llms-txt-links-resolve": [
    "pass",
    2,
    2
   ],
   "markdown-link-alternate": [
    "fail",
    0,
    1
   ],
   "markdown-frontmatter": [
    "pass",
    1,
    1
   ],
   "redirect-hygiene": [
    "pass",
    1,
    1
   ],
   "page-token-budget": [
    "pass",
    1,
    1
   ],
   "code-fence-validity": [
    "pass",
    1,
    1
   ],
   "docs-auth-gate": [
    "pass",
    2,
    2
   ],
   "openapi-spec": [
    "fail",
    0,
    7
   ],
   "developer-portal": [
    "pass",
    6,
    6
   ],
   "api-catalog-rfc9727": [
    "fail",
    0,
    2
   ],
   "markdown-negotiation": [
    "pass",
    1,
    1
   ],
   "markdown-negotiation-vary": [
    "pass",
    1,
    1
   ],
   "agent-ua-markdown": [
    "fail",
    0,
    1
   ],
   "agent-crawler-reachability": [
    "pass",
    2,
    2
   ],
   "mcp-tool-descriptions": [
    "na",
    0,
    3
   ],
   "mcp-param-schemas": [
    "na",
    0,
    2
   ],
   "mcp-server-identity": [
    "na",
    0,
    1
   ],
   "mcp-tool-listing": [
    "na",
    0,
    3
   ],
   "mcp-tool-naming": [
    "na",
    0,
    2
   ],
   "public-api": [
    "pass",
    7,
    7
   ],
   "oauth-support": [
    "pass",
    5,
    5
   ],
   "scoped-permissions": [
    "fail",
    0,
    5
   ],
   "mcp-auth-mechanism": [
    "warning",
    1,
    2
   ],
   "mcp-oauth-metadata": [
    "pass",
    2,
    2
   ],
   "mcp-pkce-s256": [
    "pass",
    2,
    2
   ],
   "onboarding-friction": [
    "warning",
    1,
    2
   ],
   "web-bot-auth-directory": [
    "fail",
    0,
    2
   ],
   "oauth-protected-resource": [
    "pass",
    2,
    2
   ],
   "auth-md-exists": [
    "fail",
    0,
    2
   ],
   "auth-md-structure": [
    "fail",
    0,
    2
   ],
   "auth-md-walkthrough-simulation": [
    "na",
    0,
    2
   ],
   "agent-auth-discovery-metadata": [
    "fail",
    0,
    3
   ],
   "agent-auth-www-authenticate": [
    "fail",
    0,
    1
   ],
   "agent-auth-endpoints-reachable": [
    "fail",
    0,
    2
   ],
   "pap-discovery": [
    "na",
    0,
    2
   ],
   "pap-issuer-binding": [
    "na",
    0,
    2
   ],
   "pap-auth-config": [
    "na",
    0,
    2
   ],
   "pap-interfaces": [
    "na",
    0,
    2
   ],
   "pap-endpoint-enforcement": [
    "na",
    0,
    2
   ],
   "pap-cross-protocol": [
    "na",
    0,
    2
   ],
   "mcp-server": [
    "warning",
    5,
    6
   ],
   "mcp-error-handling": [
    "na",
    0,
    2
   ],
   "mcp-transport-modern": [
    "na",
    0,
    1
   ],
   "webmcp": [
    "fail",
    0,
    5
   ],
   "rate-limit-headers": [
    "na",
    0,
    2
   ],
   "idempotency-key-support": [
    "na",
    0,
    3
   ],
   "json-error-responses": [
    "fail",
    0,
    4
   ],
   "api-error-model": [
    "na",
    0,
    3
   ],
   "api-versioning-policy": [
    "na",
    0,
    3
   ],
   "pagination-shape": [
    "na",
    0,
    2
   ],
   "async-job-pattern": [
    "na",
    0,
    2
   ],
   "cli-tool": [
    "fail",
    0,
    3
   ],
   "rest-sdk-packages": [
    "pass",
    3,
    3
   ],
   "nlweb-ask": [
    "fail",
    0,
    1
   ],
   "nlweb-streaming": [
    "fail",
    0,
    1
   ],
   "response-schema-coverage": [
    "na",
    0,
    2
   ],
   "mcp-tool-annotations": [
    "na",
    0,
    2
   ],
   "mcp-server-card": [
    "fail",
    0,
    2
   ],
   "mcp-multi-surface-coverage": [
    "fail",
    0,
    2
   ],
   "sandbox-environment": [
    "pass",
    2,
    2
   ],
   "batch-endpoints": [
    "na",
    0,
    2
   ],
   "mcp-resource-listing": [
    "na",
    0,
    3
   ],
   "graphql-error-type-definition": [
    "na",
    0,
    3
   ],
   "graphql-versioning-policy": [
    "na",
    0,
    2
   ],
   "graphql-pagination-pattern": [
    "na",
    0,
    2
   ],
   "graphql-async-job-pattern": [
    "na",
    0,
    2
   ],
   "graphql-schema-completeness": [
    "na",
    0,
    3
   ],
   "graphql-batch-mutations": [
    "na",
    0,
    2
   ],
   "agent-friendly-404": [
    "warning",
    1,
    2
   ],
   "ax-document-structure": [
    "pass",
    3,
    3
   ],
   "ax-native-controls": [
    "pass",
    3,
    3
   ],
   "ax-accessible-names": [
    "na",
    0,
    2
   ],
   "ax-form-labeling": [
    "na",
    0,
    2
   ],
   "ax-tree-injection-safe": [
    "pass",
    2,
    2
   ],
   "mcp-app-registry": [
    "na",
    0,
    4
   ],
   "a2ui-support": [
    "na",
    0,
    2
   ],
   "mcp-apps-ui-quality": [
    "na",
    0,
    4
   ],
   "mcp-view-domain": [
    "na",
    0,
    4
   ],
   "mcp-view-csp": [
    "na",
    0,
    4
   ],
   "api-schema-analysis": [
    "fail",
    0,
    2
   ],
   "function-calling-compat": [
    "fail",
    0,
    2
   ],
   "mcp-resource-quality": [
    "na",
    0,
    3
   ],
   "mpp-support": [
    "warning",
    0,
    2
   ],
   "x402-support": [
    "warning",
    0,
    2
   ],
   "ucp-support": [
    "warning",
    0,
    3
   ],
   "acp-support": [
    "warning",
    0,
    3
   ],
   "acp-delegate-payment": [
    "warning",
    0,
    3
   ],
   "ap2-support": [
    "warning",
    0,
    3
   ]
  },
  "flagged": [
   {
    "id": "openapi-spec",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 7,
    "tier": "required",
    "est": 3.8,
    "detail": "No OpenAPI/Swagger specification found"
   },
   {
    "id": "scoped-permissions",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 5,
    "tier": "recommended",
    "est": 3.5,
    "detail": "No declared OAuth scopes, security schemes, or scoped-permission documentation found"
   },
   {
    "id": "webmcp",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 5,
    "tier": "required",
    "est": 3.5,
    "detail": "No WebMCP support detected - no document.modelContext / navigator.modelContext usage found"
   },
   {
    "id": "json-error-responses",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 4,
    "tier": "required",
    "est": 2.8,
    "detail": "API does not return JSON error responses (or no API detected)"
   },
   {
    "id": "cli-tool",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": 2.1,
    "detail": "No CLI tool found"
   },
   {
    "id": "api-schema-analysis",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.4,
    "detail": "No API schema detected"
   },
   {
    "id": "ard-catalog",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 1.4,
    "detail": "No /.well-known/ard.json (and no legacy /.well-known/ai-catalog.json)"
   },
   {
    "id": "function-calling-compat",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.4,
    "detail": "No API spec found - function calling requires discoverable endpoints"
   },
   {
    "id": "mcp-registry-listed",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 1.4,
    "detail": "No bi-directionally verified MCP registry entry found. To pass, either publish the server from a package whose homepage, repository or maintainer email names your domain, get a verified Smithery listing with non-zero usage,"
   },
   {
    "id": "agent-discovery-file",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 1.1,
    "detail": "No agent discovery file found"
   },
   {
    "id": "schema-type-breadth",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.1,
    "detail": "No extended schema types found - AI can only answer basic questions about this entity"
   },
   {
    "id": "agent-auth-discovery-metadata",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": 0.8,
    "detail": "Neither /.well-known/oauth-protected-resource nor /.well-known/oauth-authorization-server found. Probed: checkout.com, api.checkout.com."
   },
   {
    "id": "agent-friendly-404",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.7,
    "detail": "The nonexistent path https://checkout.com/__ora-404-probe-sysq8f8y correctly returns HTTP 404. Partial credit: no Markdown error body was detected."
   },
   {
    "id": "mcp-server",
    "layer": "usability",
    "status": "warning",
    "score": 5,
    "max": 6,
    "tier": "required",
    "est": 0.7,
    "detail": "MCP server detected at https://support.checkout.com/mcp; it requires authentication. Presence is verified (5/6), but Ora could not inspect its tools or verify access scopes without credentials."
   },
   {
    "id": "onboarding-friction",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.7,
    "detail": "Onboarding signals described but not verified live: free tier available, self-serve key generation, sandbox/test environment"
   },
   {
    "id": "agent-auth-endpoints-reachable",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "No agent_auth endpoint URIs found in AS metadata or /auth.md prose; nothing to probe"
   },
   {
    "id": "auth-md-exists",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.5,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "auth-md-structure",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "json-ld-entity-linking",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "Entity linking to linkedin.com - add more authority profiles (Wikipedia, Wikidata, LinkedIn, GitHub)"
   },
   {
    "id": "llms-txt-formatting",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "The llms.txt is well-formatted with markdown links, but at 157,293 characters it exceeds the 30,000-character recommendation for a navigation index."
   },
   {
    "id": "mcp-multi-surface-coverage",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "We found an MCP candidate for your documentation at https://support.checkout.com/mcp, but could not verify that agents can use it. This bonus needs two MCP servers: one for your product so agents can take actions,"
   },
   {
    "id": "mcp-server-card",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "No MCP server card found for https://support.checkout.com/mcp (checked /.well-known/mcp/server-card.json, the site's ai-catalog.json, servers[].card in mcp.json, and <server>/server-card)"
   },
   {
    "id": "org-schema-completeness",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "Organization schema found but missing: address"
   },
   {
    "id": "agent-auth-www-authenticate",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.3,
    "detail": "No 401 with WWW-Authenticate: Bearer resource_metadata=... found. Probed [https://checkout.com/api, https://checkout.com/api/v1, https://checkout.com/v1, https://checkout.com/v2, https://checkout.com/agent/identity,"
   },
   {
    "id": "chatgpt-app-listed",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.3,
    "detail": "Not found in ChatGPT app directory"
   },
   {
    "id": "mcp-auth-mechanism",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.3,
    "detail": "docs MCP is gated behind authentication - this defeats the purpose of a docs MCP for agent discovery"
   },
   {
    "id": "a2a-agent-card",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.2,
    "detail": "No A2A agent card found at /.well-known/agent-card.json"
   },
   {
    "id": "api-catalog-rfc9727",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.2,
    "detail": "No /.well-known/api-catalog found (RFC 9727)"
   },
   {
    "id": "link-headers-discovery",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 0.1,
    "detail": "Link header present but no agent-relevant rel values (sitemap, describedby, alternate, service-desc)"
   },
   {
    "id": "mcp-well-known-discovery",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.1,
    "detail": "MCP server at https://support.checkout.com/mcp - list its server card, hosted on your own domain, in /.well-known/ai-catalog.json so MCP clients can discover it"
   },
   {
    "id": "acp-delegate-payment",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": null,
    "detail": "No ACP Delegate Payment signals detected"
   },
   {
    "id": "acp-support",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 3,
    "tier": "required",
    "est": null,
    "detail": "text mentions (agentic commerce protocol) but no reachable /checkout_sessions endpoint or supporting artifact"
   },
   {
    "id": "agent-mode-view",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "?mode=agent returns same content as homepage (no dedicated agent view)"
   },
   {
    "id": "agent-plugins-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No Agent Plugins manifest (plugin.json) found in discovered repos"
   },
   {
    "id": "agent-rules-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Could not locate a public repo containing agent configs or rules. If our probes missed it, AI coding agents likely will too - link the repo from your homepage or docs so it's discoverable."
   },
   {
    "id": "agent-ua-markdown",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly."
   },
   {
    "id": "ap2-support",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": null,
    "detail": "No AP2 (Agent Payments Protocol) signals detected"
   },
   {
    "id": "markdown-link-alternate",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No sampled page advertises a markdown alternate. Add <link rel=\"alternate\" type=\"text/markdown\" href=\"...\"> (or the equivalent Link response header) pointing at a markdown twin of the page."
   },
   {
    "id": "markdown-url-fallback",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "Homepage does not support the .md suffix. Probed https://checkout.com/index.md and it did not return markdown (expected text/markdown content-type or a heading-led non-HTML body)."
   },
   {
    "id": "modular-llms-txt",
    "layer": "accessibility",
    "status": "warning",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Only 1 section-level llms.txt found (docs). Add one for another section and link it from your root llms.txt to earn this bonus point."
   },
   {
    "id": "mpp-support",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": null,
    "detail": "No MPP (Machine Payments Protocol) support detected"
   },
   {
    "id": "nlweb-ask",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No NLWeb-conformant /ask endpoint found via GET or POST"
   },
   {
    "id": "nlweb-schema-feeds",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No schemamap: directive in robots.txt"
   },
   {
    "id": "nlweb-streaming",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "NLWeb /ask does not support SSE streaming via GET or POST"
   },
   {
    "id": "pricing-md",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No pricing.md found - agents need machine-readable pricing to compare products and make purchase recommendations"
   },
   {
    "id": "registry-branding",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No registry branding (name, icon, description) found"
   },
   {
    "id": "skills-sh-listed",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No official skills self-published on skills.sh (100 community skills with potential relation to this domain found, but only self-published official skills count)"
   },
   {
    "id": "skills-sh-quality",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No official skills on skills.sh to evaluate"
   },
   {
    "id": "ucp-support",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 3,
    "tier": "required",
    "est": null,
    "detail": "text mentions (universal commerce protocol, agentic checkout) but no /.well-known/ucp profile or commerce metadata"
   },
   {
    "id": "web-bot-auth-directory",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No /.well-known/http-message-signatures-directory found"
   },
   {
    "id": "x402-support",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": null,
    "detail": "No x402 payment protocol support detected"
   }
  ],
  "seen": {
   "brand-search-accuracy": "checkout.com ranks #3 for \"checkout payment processing\" (search term updated)",
   "wikipedia-presence": "Wikipedia \"Checkout.com\" and Wikidata Q110815500 both verified - domain confirmed on both sources",
   "robots-ai-policy-quality": "AI search crawlers: allowed in 3 of 3 checks (3 crawlers on 1 page). AI training crawlers: allowed in 2 of 2 checks (2 crawlers on 1 page), not scored.",
   "noindex-directives": "No noindex on the homepage: no robots, googlebot or bingbot meta tag and no X-Robots-Tag header hides it from search.",
   "sitemap": "Valid sitemap found at https://www.checkout.com/sitemap.xml with 1541 entries",
   "content-no-js": "10450 chars, semantic headings (1 H1 + 12 H2s + 21 H3s), 7.2% content ratio",
   "bot-detection": "Site accessible to 4 agent user-agents (ChatGPT-User, OAI-SearchBot, Claude-User, PerplexityBot).",
   "agent-discovery-file": "No agent discovery file found",
   "a2a-agent-card": "No A2A agent card found at /.well-known/agent-card.json",
   "mcp-well-known-discovery": "MCP server at https://support.checkout.com/mcp - list its server card, hosted on your own domain, in /.well-known/ai-catalog.json so MCP clients can discover it",
   "robots-agent-user-policy": "No applicable crawl or usage restriction found for 3 user-triggered agents (chatgpt-user, claude-user, perplexity-user) on 1 public page: https://checkout.com/. Declared policy only;",
   "llms-txt-exists": "Found the llms.txt at https://checkout.com/llms.txt.",
   "llms-txt-formatting": "The llms.txt is well-formatted with markdown links, but at 157,293 characters it exceeds the 30,000-character recommendation for a navigation index.",
   "json-ld": "Rich JSON-LD identity: Organization with name, description, url, and sameAs/logo/address (1 block(s))",
   "public-api-docs": "API/docs link found on homepage and resolves: https://www.checkout.com/docs",
   "metadata-completeness": "All metadata signals present: canonical URL, lang=\"en\", og:image, og:type",
   "page-token-budget": "All 6 measured pages fit an agent context budget (largest ~9K tokens)",
   "docs-auth-gate": "All 5 sampled pages are publicly readable (5 with substantive content)",
   "openapi-spec": "No OpenAPI/Swagger specification found",
   "developer-portal": "Developer portal found at /docs",
   "markdown-negotiation": "Returns markdown when requested via Accept header",
   "agent-ua-markdown": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly.",
   "agent-crawler-reachability": "Reachable to every agent we tested - ChatGPT-User: reachable, OAI-SearchBot: reachable, Claude-User: reachable, PerplexityBot: reachable",
   "public-api": "REST API documentation found at https://www.checkout.com/docs/payments.md. Best-of-protocols score: 7/7.",
   "oauth-support": "OAuth authorization server metadata at https://support.checkout.com/mcp/oauth",
   "mcp-server": "MCP server detected at https://support.checkout.com/mcp; it requires authentication. Presence is verified (5/6), but Ora could not inspect its tools or verify access scopes without credentials.",
   "webmcp": "No WebMCP support detected - no document.modelContext / navigator.modelContext usage found",
   "cli-tool": "No CLI tool found",
   "rest-sdk-packages": "SDK packages found across 3 ecosystems: npm, go, rubygems",
   "nlweb-ask": "No NLWeb-conformant /ask endpoint found via GET or POST",
   "mpp-support": "No MPP (Machine Payments Protocol) support detected",
   "x402-support": "No x402 payment protocol support detected",
   "ucp-support": "text mentions (universal commerce protocol, agentic checkout) but no /.well-known/ucp profile or commerce metadata",
   "acp-support": "text mentions (agentic commerce protocol) but no reachable /checkout_sessions endpoint or supporting artifact",
   "ap2-support": "No AP2 (Agent Payments Protocol) signals detected"
  }
 },
 {
  "slug": "cloudflare",
  "name": "Cloudflare",
  "domain": "cloudflare.com",
  "finalUrl": "https://www.cloudflare.com/",
  "read": "2026-11-09",
  "scannedAt": "2026-11-09T12:01:05.866+00:00",
  "score": 82,
  "max": 100,
  "grade": "B",
  "category": "Infrastructure",
  "scoringVersion": 2,
  "rulesUrl": "https://ora.ai/api/ranker/releases/2/rules",
  "summary": "Cloudflare offers strong discovery and developer SDK coverage, but lacks declared OAuth scopes and scoped-permission documentation for agents.",
  "layers": [
   {
    "id": "discovery",
    "name": "Discovery",
    "score": 15,
    "max": 18
   },
   {
    "id": "accessibility",
    "name": "Access",
    "score": 57,
    "max": 63
   },
   {
    "id": "usability",
    "name": "Usability",
    "score": 90,
    "max": 121
   },
   {
    "id": "payments",
    "name": "Payments",
    "score": 0,
    "max": 0
   }
  ],
  "checks": {
   "ard-catalog": [
    "fail",
    0,
    1
   ],
   "ai-catalog-published": [
    "na",
    0,
    1
   ],
   "ard-entries-valid": [
    "na",
    0,
    2
   ],
   "ard-trust-manifest": [
    "na",
    0,
    2
   ],
   "agentic-search-usecase": [
    "na",
    0,
    6
   ],
   "agentic-search-specific": [
    "pass",
    3,
    3
   ],
   "brand-search-accuracy": [
    "warning",
    1,
    3
   ],
   "wikipedia-presence": [
    "pass",
    4,
    4
   ],
   "robots-ai-policy-quality": [
    "pass",
    2,
    2
   ],
   "mcp-registry-listed": [
    "pass",
    1,
    1
   ],
   "npm-sdk-package": [
    "pass",
    1,
    1
   ],
   "agent-rules-repo": [
    "pass",
    1,
    1
   ],
   "agent-plugins-repo": [
    "fail",
    0,
    1
   ],
   "registry-branding": [
    "warning",
    1,
    2
   ],
   "chatgpt-app-listed": [
    "pass",
    2,
    2
   ],
   "noindex-directives": [
    "pass",
    1,
    1
   ],
   "sitemap": [
    "pass",
    2,
    2
   ],
   "content-no-js": [
    "warning",
    2,
    3
   ],
   "bot-detection": [
    "pass",
    2,
    2
   ],
   "agent-discovery-file": [
    "pass",
    2,
    2
   ],
   "agent-skills-index-v2": [
    "pass",
    2,
    2
   ],
   "a2a-agent-card": [
    "fail",
    0,
    2
   ],
   "skills-sh-listed": [
    "pass",
    1,
    1
   ],
   "pricing-md": [
    "pass",
    2,
    2
   ],
   "nlweb-schema-feeds": [
    "fail",
    0,
    1
   ],
   "mcp-well-known-discovery": [
    "pass",
    2,
    2
   ],
   "agent-mode-view": [
    "fail",
    0,
    2
   ],
   "link-headers-discovery": [
    "pass",
    1,
    1
   ],
   "markdown-url-fallback": [
    "pass",
    2,
    2
   ],
   "modular-llms-txt": [
    "fail",
    0,
    1
   ],
   "sitemap-lastmod": [
    "pass",
    1,
    1
   ],
   "robots-agent-user-policy": [
    "pass",
    2,
    2
   ],
   "llms-txt-exists": [
    "pass",
    1,
    1
   ],
   "llms-txt-formatting": [
    "pass",
    2,
    2
   ],
   "json-ld": [
    "warning",
    2,
    4
   ],
   "pricing-info": [
    "pass",
    3,
    3
   ],
   "public-api-docs": [
    "pass",
    3,
    3
   ],
   "agent-instruction": [
    "pass",
    3,
    3
   ],
   "skills-sh-quality": [
    "pass",
    2,
    2
   ],
   "json-ld-entity-linking": [
    "pass",
    2,
    2
   ],
   "metadata-completeness": [
    "pass",
    2,
    2
   ],
   "org-schema-completeness": [
    "warning",
    1,
    2
   ],
   "schema-type-breadth": [
    "fail",
    0,
    2
   ],
   "trust-anchors": [
    "pass",
    2,
    2
   ],
   "llms-txt-links-resolve": [
    "pass",
    2,
    2
   ],
   "markdown-link-alternate": [
    "pass",
    1,
    1
   ],
   "markdown-frontmatter": [
    "pass",
    1,
    1
   ],
   "redirect-hygiene": [
    "pass",
    1,
    1
   ],
   "page-token-budget": [
    "pass",
    1,
    1
   ],
   "code-fence-validity": [
    "pass",
    1,
    1
   ],
   "docs-auth-gate": [
    "pass",
    2,
    2
   ],
   "openapi-spec": [
    "pass",
    7,
    7
   ],
   "developer-portal": [
    "pass",
    6,
    6
   ],
   "api-catalog-rfc9727": [
    "fail",
    0,
    2
   ],
   "markdown-negotiation": [
    "pass",
    1,
    1
   ],
   "markdown-negotiation-vary": [
    "pass",
    1,
    1
   ],
   "agent-ua-markdown": [
    "fail",
    0,
    1
   ],
   "agent-crawler-reachability": [
    "pass",
    2,
    2
   ],
   "mcp-tool-descriptions": [
    "pass",
    3,
    3
   ],
   "mcp-param-schemas": [
    "pass",
    2,
    2
   ],
   "mcp-server-identity": [
    "fail",
    0,
    1
   ],
   "mcp-tool-listing": [
    "pass",
    3,
    3
   ],
   "mcp-tool-naming": [
    "pass",
    2,
    2
   ],
   "public-api": [
    "warning",
    3,
    7
   ],
   "oauth-support": [
    "pass",
    5,
    5
   ],
   "scoped-permissions": [
    "fail",
    0,
    5
   ],
   "mcp-auth-mechanism": [
    "pass",
    2,
    2
   ],
   "mcp-oauth-metadata": [
    "na",
    0,
    2
   ],
   "mcp-pkce-s256": [
    "na",
    0,
    2
   ],
   "onboarding-friction": [
    "warning",
    1,
    2
   ],
   "web-bot-auth-directory": [
    "fail",
    0,
    2
   ],
   "oauth-protected-resource": [
    "pass",
    2,
    2
   ],
   "auth-md-exists": [
    "pass",
    2,
    2
   ],
   "auth-md-structure": [
    "warning",
    1,
    2
   ],
   "auth-md-walkthrough-simulation": [
    "fail",
    0,
    2
   ],
   "agent-auth-discovery-metadata": [
    "fail",
    0,
    3
   ],
   "agent-auth-www-authenticate": [
    "pass",
    1,
    1
   ],
   "agent-auth-endpoints-reachable": [
    "fail",
    0,
    2
   ],
   "pap-discovery": [
    "na",
    0,
    2
   ],
   "pap-issuer-binding": [
    "na",
    0,
    2
   ],
   "pap-auth-config": [
    "na",
    0,
    2
   ],
   "pap-interfaces": [
    "na",
    0,
    2
   ],
   "pap-endpoint-enforcement": [
    "na",
    0,
    2
   ],
   "pap-cross-protocol": [
    "na",
    0,
    2
   ],
   "mcp-server": [
    "pass",
    6,
    6
   ],
   "mcp-error-handling": [
    "pass",
    2,
    2
   ],
   "mcp-transport-modern": [
    "pass",
    1,
    1
   ],
   "webmcp": [
    "pass",
    5,
    5
   ],
   "rate-limit-headers": [
    "fail",
    0,
    2
   ],
   "idempotency-key-support": [
    "fail",
    0,
    3
   ],
   "json-error-responses": [
    "pass",
    4,
    4
   ],
   "api-error-model": [
    "fail",
    0,
    3
   ],
   "api-versioning-policy": [
    "fail",
    0,
    3
   ],
   "pagination-shape": [
    "fail",
    0,
    2
   ],
   "async-job-pattern": [
    "fail",
    0,
    2
   ],
   "cli-tool": [
    "pass",
    3,
    3
   ],
   "rest-sdk-packages": [
    "pass",
    3,
    3
   ],
   "nlweb-ask": [
    "fail",
    0,
    1
   ],
   "nlweb-streaming": [
    "fail",
    0,
    1
   ],
   "response-schema-coverage": [
    "fail",
    0,
    2
   ],
   "mcp-tool-annotations": [
    "pass",
    2,
    2
   ],
   "mcp-server-card": [
    "warning",
    1,
    2
   ],
   "mcp-multi-surface-coverage": [
    "pass",
    2,
    2
   ],
   "sandbox-environment": [
    "warning",
    0,
    2
   ],
   "batch-endpoints": [
    "fail",
    0,
    2
   ],
   "mcp-resource-listing": [
    "na",
    0,
    3
   ],
   "graphql-error-type-definition": [
    "na",
    0,
    3
   ],
   "graphql-versioning-policy": [
    "na",
    0,
    2
   ],
   "graphql-pagination-pattern": [
    "na",
    0,
    2
   ],
   "graphql-async-job-pattern": [
    "na",
    0,
    2
   ],
   "graphql-schema-completeness": [
    "na",
    0,
    3
   ],
   "graphql-batch-mutations": [
    "na",
    0,
    2
   ],
   "agent-friendly-404": [
    "warning",
    1,
    2
   ],
   "ax-document-structure": [
    "na",
    0,
    3
   ],
   "ax-native-controls": [
    "pass",
    3,
    3
   ],
   "ax-accessible-names": [
    "pass",
    2,
    2
   ],
   "ax-form-labeling": [
    "na",
    0,
    2
   ],
   "ax-tree-injection-safe": [
    "pass",
    2,
    2
   ],
   "mcp-app-registry": [
    "na",
    0,
    4
   ],
   "a2ui-support": [
    "na",
    0,
    2
   ],
   "mcp-apps-ui-quality": [
    "na",
    0,
    4
   ],
   "mcp-view-domain": [
    "na",
    0,
    4
   ],
   "mcp-view-csp": [
    "na",
    0,
    4
   ],
   "api-schema-analysis": [
    "warning",
    1,
    2
   ],
   "function-calling-compat": [
    "fail",
    0,
    2
   ],
   "mcp-resource-quality": [
    "na",
    0,
    3
   ],
   "mpp-support": [
    "na",
    0,
    2
   ],
   "x402-support": [
    "na",
    0,
    2
   ],
   "ucp-support": [
    "na",
    0,
    3
   ],
   "acp-support": [
    "na",
    0,
    3
   ],
   "acp-delegate-payment": [
    "na",
    0,
    3
   ],
   "ap2-support": [
    "na",
    0,
    3
   ]
  },
  "flagged": [
   {
    "id": "brand-search-accuracy",
    "layer": "discovery",
    "status": "warning",
    "score": 1,
    "max": 3,
    "tier": "required",
    "est": 2.5,
    "detail": "cloudflare.com ranks #6 for \"Cloudflare\" (searched your brand name alone: no main product term from your homepage qualified)"
   },
   {
    "id": "scoped-permissions",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 5,
    "tier": "recommended",
    "est": 1.8,
    "detail": "No declared OAuth scopes, security schemes, or scoped-permission documentation found"
   },
   {
    "id": "public-api",
    "layer": "usability",
    "status": "warning",
    "score": 3,
    "max": 7,
    "tier": "required",
    "est": 1.5,
    "detail": "API described in documentation at https://developers.cloudflare.com but no machine-verifiable API surface confirmed. Best-of-protocols score: 3/7."
   },
   {
    "id": "ard-catalog",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 1.2,
    "detail": "No /.well-known/ard.json, no same-site rel=\"ard\" link, and no legacy /.well-known/ai-catalog.json"
   },
   {
    "id": "api-error-model",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": 1.1,
    "detail": "No typed error model found in OpenAPI spec"
   },
   {
    "id": "api-versioning-policy",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": 1.1,
    "detail": "No API versioning strategy found - add URL path versioning (/v1/, /v2/) or a versioned header parameter in your OpenAPI spec"
   },
   {
    "id": "idempotency-key-support",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": 1.1,
    "detail": "No REST Idempotency-Key support detected"
   },
   {
    "id": "json-ld",
    "layer": "accessibility",
    "status": "warning",
    "score": 2,
    "max": 4,
    "tier": "required",
    "est": 1.1,
    "detail": "JSON-LD Organization found - missing description on this entity"
   },
   {
    "id": "schema-type-breadth",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.1,
    "detail": "No extended schema types found - AI can only answer basic questions about this entity"
   },
   {
    "id": "async-job-pattern",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.7,
    "detail": "No async job pattern found"
   },
   {
    "id": "function-calling-compat",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.7,
    "detail": "Poor compatibility: missing operationIds (0/4) and parameter schemas"
   },
   {
    "id": "pagination-shape",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.7,
    "detail": "No pagination pattern found in OpenAPI spec"
   },
   {
    "id": "rate-limit-headers",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.7,
    "detail": "No REST rate-limit headers found on probed endpoints"
   },
   {
    "id": "response-schema-coverage",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.7,
    "detail": "Only 0% of operations define typed response schemas - agents cannot predict response shapes"
   },
   {
    "id": "content-no-js",
    "layer": "accessibility",
    "status": "warning",
    "score": 2,
    "max": 3,
    "tier": "required",
    "est": 0.5,
    "detail": "Homepage: 1612 chars with H1, but heading hierarchy skips H2 to H6; 0.2% content ratio is below the 5% target. 3 of 3 sampled inner pages have text without JavaScript (2 skipped)."
   },
   {
    "id": "org-schema-completeness",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "Organization schema found but missing: contactPoint, address"
   },
   {
    "id": "agent-friendly-404",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.4,
    "detail": "The nonexistent path https://cloudflare.com/__ora-404-probe-p7tmi8jt correctly returns HTTP 404. Partial credit: no Markdown error body was detected."
   },
   {
    "id": "api-schema-analysis",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.4,
    "detail": "REST: schema found (4 operations) but only 0% of operations carry an operationId"
   },
   {
    "id": "onboarding-friction",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.4,
    "detail": "Verified live: GET https://www.cloudflare.com/llms.txt answered 200 without credentials (zero-auth access). Described but not verified live: free tier available, self-serve key generation, sandbox/test environment"
   },
   {
    "id": "agent-auth-discovery-metadata",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": 0.3,
    "detail": "Neither /.well-known/oauth-protected-resource nor /.well-known/oauth-authorization-server found. Probed: cloudflare.com, docs.mcp.cloudflare.com, www.cloudflare.com."
   },
   {
    "id": "agent-auth-endpoints-reachable",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.2,
    "detail": "No agent_auth endpoint URIs found in AS metadata or /auth.md prose; nothing to probe"
   },
   {
    "id": "auth-md-walkthrough-simulation",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.2,
    "detail": "Static fallback: walkthrough breaks at discovery - PRM and AS metadata unreachable"
   },
   {
    "id": "batch-endpoints",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.2,
    "detail": "No batch or bulk endpoint pattern found"
   },
   {
    "id": "sandbox-environment",
    "layer": "usability",
    "status": "warning",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.2,
    "detail": "Sandbox/test environment mentioned at https://www.cloudflare.com/products/sandboxes.md but no sandbox surface verified"
   },
   {
    "id": "a2a-agent-card",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.1,
    "detail": "No A2A agent card found at /.well-known/agent-card.json"
   },
   {
    "id": "api-catalog-rfc9727",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.1,
    "detail": "No /.well-known/api-catalog found (RFC 9727)"
   },
   {
    "id": "auth-md-structure",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.1,
    "detail": "auth.md at https://cloudflare.com/auth.md - 2/8 walkthrough sections (found Pick a method and Use credential; missing Discover, Register, Claim, Exchange, Errors, and Revocation); anchors: service_auth, identity_assertion, and id-jag"
   },
   {
    "id": "mcp-server-card",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.1,
    "detail": "MCP server card found at https://www.cloudflare.com/.well-known/mcp/server-card.json but missing tools[]"
   },
   {
    "id": "mcp-server-card",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.1,
    "detail": "MCP server card found at https://www.cloudflare.com/.well-known/mcp/server-card.json but missing tools[]"
   },
   {
    "id": "mcp-server-card",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.1,
    "detail": "MCP server card found at https://www.cloudflare.com/.well-known/mcp/server-card.json but missing tools[]"
   },
   {
    "id": "mcp-server-identity",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.1,
    "detail": "docs MCP identity incomplete - missing: instructions"
   },
   {
    "id": "mcp-server-identity",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.1,
    "detail": "docs MCP identity incomplete - missing: instructions"
   },
   {
    "id": "agent-mode-view",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "?mode=agent returns same content as homepage (no dedicated agent view)"
   },
   {
    "id": "agent-plugins-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No Agent Plugins manifest (plugin.json) found in discovered repos"
   },
   {
    "id": "agent-ua-markdown",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly."
   },
   {
    "id": "modular-llms-txt",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No section-level llms.txt found. Tried /docs/llms.txt, /api/llms.txt, /developers/llms.txt, /guides/llms.txt, /reference/llms.txt, /products/llms.txt, /solutions/llms.txt, /resource-hub/llms.txt, /plans/llms.txt,"
   },
   {
    "id": "nlweb-ask",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No NLWeb-conformant /ask endpoint found via GET or POST"
   },
   {
    "id": "nlweb-schema-feeds",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No schemamap: directive in robots.txt"
   },
   {
    "id": "nlweb-streaming",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "NLWeb /ask does not support SSE streaming via GET or POST"
   },
   {
    "id": "registry-branding",
    "layer": "discovery",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "MCP manifest has name and description but no icon at /.well-known/mcp/server-card.json"
   },
   {
    "id": "web-bot-auth-directory",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No /.well-known/http-message-signatures-directory found"
   }
  ],
  "seen": {
   "brand-search-accuracy": "cloudflare.com ranks #6 for \"Cloudflare\" (searched your brand name alone: no main product term from your homepage qualified)",
   "wikipedia-presence": "Wikipedia \"Cloudflare\" and Wikidata Q4778915 both verified - domain confirmed on both sources",
   "robots-ai-policy-quality": "AI search crawlers: allowed in 3 of 3 checks (3 crawlers on 1 page). AI training crawlers: allowed in 2 of 2 checks (2 crawlers on 1 page), not scored.",
   "noindex-directives": "No noindex on the homepage: no robots, googlebot or bingbot meta tag and no X-Robots-Tag header hides it from search.",
   "sitemap": "Valid sitemap found at https://www.cloudflare.com/sitemap.xml with 1017 entries",
   "content-no-js": "Homepage: 1612 chars with H1, but heading hierarchy skips H2 to H6; 0.2% content ratio is below the 5% target. 3 of 3 sampled inner pages have text without JavaScript (2 skipped).",
   "bot-detection": "Site accessible to 4 agent user-agents (ChatGPT-User, OAI-SearchBot, Claude-User, PerplexityBot).",
   "agent-discovery-file": "Agent Skills index (agentskills.io) found at /.well-known/agent-skills/index.json with 19 skill(s)",
   "a2a-agent-card": "No A2A agent card found at /.well-known/agent-card.json",
   "mcp-well-known-discovery": "MCP server discoverable via server-card.json at /.well-known/mcp/",
   "robots-agent-user-policy": "No applicable crawl or usage restriction found for 3 user-triggered agents (chatgpt-user, claude-user, perplexity-user) on 1 public page: https://cloudflare.com/. Declared policy only;",
   "llms-txt-exists": "Found the llms.txt at https://developers.cloudflare.com/llms.txt.",
   "llms-txt-formatting": "The llms.txt is well-formatted: 140 lines with markdown links, 17,169 characters in total.",
   "json-ld": "JSON-LD Organization found - missing description on this entity",
   "public-api-docs": "Documentation site found at https://developers.cloudflare.com",
   "metadata-completeness": "All metadata signals present: canonical URL, lang=\"en\", og:image, og:type",
   "page-token-budget": "All 6 measured pages fit an agent context budget (largest ~4K tokens)",
   "docs-auth-gate": "All 5 sampled pages are publicly readable (3 with substantive content)",
   "openapi-spec": "OpenAPI spec found at https://www.cloudflare.com/openapi.json (version: 3.1.0)",
   "developer-portal": "Developer portal found at /developers",
   "markdown-negotiation": "Path-suffix markdown docs served with text/markdown content-type: /auth.md, /index.md",
   "agent-ua-markdown": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly.",
   "agent-crawler-reachability": "Reachable to every agent we tested - ChatGPT-User: reachable, OAI-SearchBot: reachable, Claude-User: reachable, PerplexityBot: reachable",
   "public-api": "API described in documentation at https://developers.cloudflare.com but no machine-verifiable API surface confirmed. Best-of-protocols score: 3/7.",
   "oauth-support": "OAuth authorization server metadata at https://mcp.cloudflare.com",
   "mcp-server": "MCP server connected via Streamable HTTP - docs-ai-search v0.5.0 (protocol 2025-11-25)",
   "webmcp": "Imperative WebMCP API detected (document.modelContext.registerTool in inline script).",
   "cli-tool": "CLI package found on npm: wrangler",
   "rest-sdk-packages": "SDK packages found across 3 ecosystems: npm, pypi, go",
   "nlweb-ask": "No NLWeb-conformant /ask endpoint found via GET or POST",
   "mpp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "x402-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "ucp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "acp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "ap2-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites"
  }
 },
 {
  "slug": "confluent",
  "name": "Confluent",
  "domain": "confluent.io",
  "finalUrl": "https://www.confluent.io/",
  "read": "2026-11-09",
  "scannedAt": "2026-11-08T01:06:00.067+00:00",
  "score": 74,
  "max": 100,
  "grade": "B",
  "category": "Infrastructure",
  "scoringVersion": null,
  "rulesUrl": null,
  "summary": "Confluent offers strong discovery and developer SDKs, but lacks a published OpenAPI specification for agents to consume.",
  "layers": [
   {
    "id": "discovery",
    "name": "Discovery",
    "score": 15,
    "max": 16
   },
   {
    "id": "accessibility",
    "name": "Access",
    "score": 45,
    "max": 61
   },
   {
    "id": "usability",
    "name": "Usability",
    "score": 39,
    "max": 60
   },
   {
    "id": "payments",
    "name": "Payments",
    "score": 0,
    "max": 0
   }
  ],
  "checks": {
   "ard-catalog": [
    "fail",
    0,
    1
   ],
   "ai-catalog-published": [
    "na",
    0,
    1
   ],
   "ard-entries-valid": [
    "na",
    0,
    2
   ],
   "ard-trust-manifest": [
    "na",
    0,
    2
   ],
   "agentic-search-usecase": [
    "na",
    0,
    6
   ],
   "agentic-search-specific": [
    "pass",
    3,
    3
   ],
   "brand-search-accuracy": [
    "pass",
    3,
    3
   ],
   "wikipedia-presence": [
    "pass",
    4,
    4
   ],
   "robots-ai-policy-quality": [
    "pass",
    2,
    2
   ],
   "mcp-registry-listed": [
    "pass",
    1,
    1
   ],
   "npm-sdk-package": [
    "pass",
    1,
    1
   ],
   "agent-rules-repo": [
    "pass",
    1,
    1
   ],
   "agent-plugins-repo": [
    "fail",
    0,
    1
   ],
   "registry-branding": [
    "fail",
    0,
    2
   ],
   "chatgpt-app-listed": [
    "fail",
    0,
    2
   ],
   "noindex-directives": [
    "pass",
    1,
    1
   ],
   "sitemap": [
    "pass",
    2,
    2
   ],
   "content-no-js": [
    "pass",
    3,
    3
   ],
   "bot-detection": [
    "pass",
    2,
    2
   ],
   "agent-discovery-file": [
    "fail",
    0,
    2
   ],
   "agent-skills-index-v2": [
    "na",
    0,
    2
   ],
   "a2a-agent-card": [
    "fail",
    0,
    2
   ],
   "skills-sh-listed": [
    "pass",
    1,
    1
   ],
   "pricing-md": [
    "fail",
    0,
    2
   ],
   "nlweb-schema-feeds": [
    "fail",
    0,
    1
   ],
   "mcp-well-known-discovery": [
    "pass",
    2,
    2
   ],
   "agent-mode-view": [
    "fail",
    0,
    2
   ],
   "link-headers-discovery": [
    "fail",
    0,
    1
   ],
   "markdown-url-fallback": [
    "fail",
    0,
    2
   ],
   "modular-llms-txt": [
    "fail",
    0,
    1
   ],
   "sitemap-lastmod": [
    "pass",
    1,
    1
   ],
   "robots-agent-user-policy": [
    "pass",
    2,
    2
   ],
   "llms-txt-exists": [
    "pass",
    1,
    1
   ],
   "llms-txt-formatting": [
    "warning",
    1,
    2
   ],
   "json-ld": [
    "warning",
    2,
    4
   ],
   "pricing-info": [
    "pass",
    3,
    3
   ],
   "public-api-docs": [
    "pass",
    3,
    3
   ],
   "agent-instruction": [
    "warning",
    2,
    3
   ],
   "skills-sh-quality": [
    "pass",
    2,
    2
   ],
   "json-ld-entity-linking": [
    "pass",
    2,
    2
   ],
   "metadata-completeness": [
    "pass",
    2,
    2
   ],
   "org-schema-completeness": [
    "warning",
    1,
    2
   ],
   "schema-type-breadth": [
    "warning",
    1,
    2
   ],
   "trust-anchors": [
    "pass",
    2,
    2
   ],
   "llms-txt-links-resolve": [
    "warning",
    1,
    2
   ],
   "markdown-link-alternate": [
    "fail",
    0,
    1
   ],
   "markdown-frontmatter": [
    "na",
    0,
    1
   ],
   "redirect-hygiene": [
    "pass",
    1,
    1
   ],
   "page-token-budget": [
    "pass",
    1,
    1
   ],
   "code-fence-validity": [
    "pass",
    1,
    1
   ],
   "docs-auth-gate": [
    "pass",
    2,
    2
   ],
   "openapi-spec": [
    "fail",
    0,
    7
   ],
   "developer-portal": [
    "pass",
    6,
    6
   ],
   "api-catalog-rfc9727": [
    "fail",
    0,
    2
   ],
   "markdown-negotiation": [
    "fail",
    0,
    1
   ],
   "markdown-negotiation-vary": [
    "fail",
    0,
    1
   ],
   "agent-ua-markdown": [
    "fail",
    0,
    1
   ],
   "agent-crawler-reachability": [
    "pass",
    2,
    2
   ],
   "mcp-tool-descriptions": [
    "na",
    0,
    3
   ],
   "mcp-param-schemas": [
    "na",
    0,
    2
   ],
   "mcp-server-identity": [
    "na",
    0,
    1
   ],
   "mcp-tool-listing": [
    "na",
    0,
    3
   ],
   "mcp-tool-naming": [
    "na",
    0,
    2
   ],
   "public-api": [
    "pass",
    7,
    7
   ],
   "oauth-support": [
    "pass",
    5,
    5
   ],
   "scoped-permissions": [
    "warning",
    2,
    5
   ],
   "mcp-auth-mechanism": [
    "warning",
    1,
    2
   ],
   "mcp-oauth-metadata": [
    "pass",
    2,
    2
   ],
   "mcp-pkce-s256": [
    "pass",
    2,
    2
   ],
   "onboarding-friction": [
    "warning",
    1,
    2
   ],
   "web-bot-auth-directory": [
    "fail",
    0,
    2
   ],
   "oauth-protected-resource": [
    "pass",
    2,
    2
   ],
   "auth-md-exists": [
    "fail",
    0,
    2
   ],
   "auth-md-structure": [
    "fail",
    0,
    2
   ],
   "auth-md-walkthrough-simulation": [
    "na",
    0,
    2
   ],
   "agent-auth-discovery-metadata": [
    "fail",
    0,
    3
   ],
   "agent-auth-www-authenticate": [
    "fail",
    0,
    1
   ],
   "agent-auth-endpoints-reachable": [
    "fail",
    0,
    2
   ],
   "pap-discovery": [
    "na",
    0,
    2
   ],
   "pap-issuer-binding": [
    "na",
    0,
    2
   ],
   "pap-auth-config": [
    "na",
    0,
    2
   ],
   "pap-interfaces": [
    "na",
    0,
    2
   ],
   "pap-endpoint-enforcement": [
    "na",
    0,
    2
   ],
   "pap-cross-protocol": [
    "na",
    0,
    2
   ],
   "mcp-server": [
    "warning",
    5,
    6
   ],
   "mcp-error-handling": [
    "na",
    0,
    2
   ],
   "mcp-transport-modern": [
    "na",
    0,
    1
   ],
   "webmcp": [
    "fail",
    0,
    5
   ],
   "rate-limit-headers": [
    "na",
    0,
    2
   ],
   "idempotency-key-support": [
    "na",
    0,
    3
   ],
   "json-error-responses": [
    "fail",
    0,
    4
   ],
   "api-error-model": [
    "na",
    0,
    3
   ],
   "api-versioning-policy": [
    "na",
    0,
    3
   ],
   "pagination-shape": [
    "na",
    0,
    2
   ],
   "async-job-pattern": [
    "na",
    0,
    2
   ],
   "cli-tool": [
    "warning",
    2,
    3
   ],
   "rest-sdk-packages": [
    "warning",
    2,
    3
   ],
   "nlweb-ask": [
    "fail",
    0,
    1
   ],
   "nlweb-streaming": [
    "fail",
    0,
    1
   ],
   "response-schema-coverage": [
    "na",
    0,
    2
   ],
   "mcp-tool-annotations": [
    "na",
    0,
    2
   ],
   "mcp-server-card": [
    "fail",
    0,
    2
   ],
   "mcp-multi-surface-coverage": [
    "fail",
    0,
    2
   ],
   "sandbox-environment": [
    "warning",
    0,
    2
   ],
   "batch-endpoints": [
    "na",
    0,
    2
   ],
   "mcp-resource-listing": [
    "na",
    0,
    3
   ],
   "graphql-error-type-definition": [
    "na",
    0,
    3
   ],
   "graphql-versioning-policy": [
    "na",
    0,
    2
   ],
   "graphql-pagination-pattern": [
    "na",
    0,
    2
   ],
   "graphql-async-job-pattern": [
    "na",
    0,
    2
   ],
   "graphql-schema-completeness": [
    "na",
    0,
    3
   ],
   "graphql-batch-mutations": [
    "na",
    0,
    2
   ],
   "agent-friendly-404": [
    "warning",
    1,
    2
   ],
   "ax-document-structure": [
    "na",
    0,
    3
   ],
   "ax-native-controls": [
    "pass",
    3,
    3
   ],
   "ax-accessible-names": [
    "pass",
    2,
    2
   ],
   "ax-form-labeling": [
    "na",
    0,
    2
   ],
   "ax-tree-injection-safe": [
    "pass",
    2,
    2
   ],
   "mcp-app-registry": [
    "na",
    0,
    4
   ],
   "a2ui-support": [
    "na",
    0,
    2
   ],
   "mcp-apps-ui-quality": [
    "na",
    0,
    4
   ],
   "mcp-view-domain": [
    "na",
    0,
    4
   ],
   "mcp-view-csp": [
    "na",
    0,
    4
   ],
   "api-schema-analysis": [
    "fail",
    0,
    2
   ],
   "function-calling-compat": [
    "fail",
    0,
    2
   ],
   "mcp-resource-quality": [
    "na",
    0,
    3
   ],
   "mpp-support": [
    "na",
    0,
    2
   ],
   "x402-support": [
    "na",
    0,
    2
   ],
   "ucp-support": [
    "na",
    0,
    3
   ],
   "acp-support": [
    "na",
    0,
    3
   ],
   "acp-delegate-payment": [
    "na",
    0,
    3
   ],
   "ap2-support": [
    "na",
    0,
    3
   ]
  },
  "flagged": [
   {
    "id": "openapi-spec",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 7,
    "tier": "required",
    "est": 3.8,
    "detail": "No OpenAPI/Swagger specification found"
   },
   {
    "id": "webmcp",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 5,
    "tier": "required",
    "est": 3.7,
    "detail": "No WebMCP support detected - no document.modelContext / navigator.modelContext usage found (scanned 8 of 8 same-origin script bundle(s) for modelContext registrations)"
   },
   {
    "id": "json-error-responses",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 4,
    "tier": "required",
    "est": 3,
    "detail": "API does not return JSON error responses (or no API detected)"
   },
   {
    "id": "scoped-permissions",
    "layer": "usability",
    "status": "warning",
    "score": 2,
    "max": 5,
    "tier": "recommended",
    "est": 2.2,
    "detail": "Scoped permissions described at https://docs.confluent.io, but no machine-readable scope declaration found (OpenAPI oauth2 scopes or RFC 9728 scopes_supported)"
   },
   {
    "id": "api-schema-analysis",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.5,
    "detail": "No API schema detected"
   },
   {
    "id": "function-calling-compat",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.5,
    "detail": "No API spec found - function calling requires discoverable endpoints"
   },
   {
    "id": "ard-catalog",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 1.4,
    "detail": "No /.well-known/ard.json, no same-site rel=\"ard\" link, and no legacy /.well-known/ai-catalog.json"
   },
   {
    "id": "agent-discovery-file",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 1.1,
    "detail": "No agent discovery file found"
   },
   {
    "id": "json-ld",
    "layer": "accessibility",
    "status": "warning",
    "score": 2,
    "max": 4,
    "tier": "required",
    "est": 1.1,
    "detail": "JSON-LD Organization found - missing description on this entity"
   },
   {
    "id": "agent-auth-discovery-metadata",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": 0.7,
    "detail": "Neither /.well-known/oauth-protected-resource nor /.well-known/oauth-authorization-server found. Probed: confluent.io, api.confluent.io."
   },
   {
    "id": "agent-friendly-404",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.7,
    "detail": "The nonexistent path https://confluent.io/__ora-404-probe-9mlvyc5u correctly returns HTTP 404. Partial credit: no Markdown error body was detected."
   },
   {
    "id": "cli-tool",
    "layer": "usability",
    "status": "warning",
    "score": 2,
    "max": 3,
    "tier": "recommended",
    "est": 0.7,
    "detail": "CLI tool mentioned at https://docs.confluent.io"
   },
   {
    "id": "mcp-server",
    "layer": "usability",
    "status": "warning",
    "score": 5,
    "max": 6,
    "tier": "required",
    "est": 0.7,
    "detail": "MCP server detected at https://support.confluent.io/mcp; it requires authentication. Presence is verified (5/6), but Ora could not inspect its tools or verify access scopes without credentials."
   },
   {
    "id": "onboarding-friction",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.7,
    "detail": "Onboarding signals described but not verified live: free tier available, self-serve key generation, sandbox/test environment"
   },
   {
    "id": "rest-sdk-packages",
    "layer": "usability",
    "status": "warning",
    "score": 2,
    "max": 3,
    "tier": "recommended",
    "est": 0.7,
    "detail": "SDK packages found in npm, rubygems"
   },
   {
    "id": "agent-auth-endpoints-reachable",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "No agent_auth endpoint URIs found in AS metadata or /auth.md prose; nothing to probe"
   },
   {
    "id": "agent-instruction",
    "layer": "accessibility",
    "status": "warning",
    "score": 2,
    "max": 3,
    "tier": "required",
    "est": 0.5,
    "detail": "When-to-use guidance found at https://docs.confluent.io"
   },
   {
    "id": "auth-md-exists",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.5,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "auth-md-structure",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "llms-txt-formatting",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "The llms.txt is well-formatted with markdown links, but at 696,335 characters it exceeds the 30,000-character recommendation for a navigation index."
   },
   {
    "id": "llms-txt-links-resolve",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "1 of 5 probed llms.txt links could not be verified: https://support.confluent.io/ (HTTP 403). This does not confirm that those pages are missing."
   },
   {
    "id": "mcp-multi-surface-coverage",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "We found an MCP candidate for your documentation at https://support.confluent.io/mcp, but could not verify that agents can use it. This bonus needs two MCP servers: one for your product so agents can take actions,"
   },
   {
    "id": "mcp-server-card",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "No MCP server card found for https://support.confluent.io/mcp (checked /.well-known/mcp/server-card.json, the site's ai-catalog.json, servers[].card in mcp.json, and <server>/server-card)"
   },
   {
    "id": "org-schema-completeness",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "Organization schema found but missing: address"
   },
   {
    "id": "sandbox-environment",
    "layer": "usability",
    "status": "warning",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "Staging/testing environment referenced in llms.txt but no dedicated sandbox documented"
   },
   {
    "id": "schema-type-breadth",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "Some extended schema types found: FAQPage - add 2 more types that match what the homepage shows, for full coverage"
   },
   {
    "id": "a2a-agent-card",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.3,
    "detail": "No A2A agent card found at /.well-known/agent-card.json"
   },
   {
    "id": "agent-auth-www-authenticate",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.3,
    "detail": "No 401 with WWW-Authenticate: Bearer resource_metadata=... found. Probed [https://confluent.io/api, https://confluent.io/api/v1, https://confluent.io/v1, https://confluent.io/v2, https://confluent.io/agent/identity,"
   },
   {
    "id": "api-catalog-rfc9727",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.3,
    "detail": "No /.well-known/api-catalog found (RFC 9727)"
   },
   {
    "id": "mcp-auth-mechanism",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.3,
    "detail": "docs MCP is gated behind authentication - this defeats the purpose of a docs MCP for agent discovery"
   },
   {
    "id": "chatgpt-app-listed",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.2,
    "detail": "Not found in ChatGPT app directory"
   },
   {
    "id": "link-headers-discovery",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 0.1,
    "detail": "No HTTP Link response headers (RFC 8288) found"
   },
   {
    "id": "markdown-negotiation-vary",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.1,
    "detail": "Homepage https://confluent.io does not meet the Markdown negotiation requirements: Accept: text/markdown returned text/html; charset=utf-8; Vary header missing Accept (got \"accept-encoding\")"
   },
   {
    "id": "agent-mode-view",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "?mode=agent returns same content as homepage (no dedicated agent view)"
   },
   {
    "id": "agent-plugins-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No Agent Plugins manifest (plugin.json) found in discovered repos"
   },
   {
    "id": "agent-ua-markdown",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly."
   },
   {
    "id": "markdown-link-alternate",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No sampled page advertises a markdown alternate. Add <link rel=\"alternate\" type=\"text/markdown\" href=\"...\"> (or the equivalent Link response header) pointing at a markdown twin of the page."
   },
   {
    "id": "markdown-negotiation",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Missing markdown content negotiation. Homepage returned text/html when probed with Accept: text/markdown (expected text/markdown), and none of the well-known root paths (/llms.md, /auth.md, /agents.md, /developers.md, /api.md, /index.md,"
   },
   {
    "id": "markdown-url-fallback",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "Homepage does not support the .md suffix. Probed https://confluent.io/index.md and it did not return markdown (expected text/markdown content-type or a heading-led non-HTML body)."
   },
   {
    "id": "modular-llms-txt",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No section-level llms.txt found. Tried /docs/llms.txt, /api/llms.txt, /developers/llms.txt, /guides/llms.txt, /reference/llms.txt, /apache-kafka-vs-confluent/llms.txt, /executives/llms.txt, /customers/llms.txt, /partner/llms.txt,"
   },
   {
    "id": "nlweb-ask",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No NLWeb-conformant /ask endpoint found via GET or POST"
   },
   {
    "id": "nlweb-schema-feeds",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No schemamap: directive in robots.txt"
   },
   {
    "id": "nlweb-streaming",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "NLWeb /ask does not support SSE streaming via GET or POST"
   },
   {
    "id": "pricing-md",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No pricing.md found - agents need machine-readable pricing to compare products and make purchase recommendations"
   },
   {
    "id": "registry-branding",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No registry branding (name, icon, description) found"
   },
   {
    "id": "web-bot-auth-directory",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No /.well-known/http-message-signatures-directory found"
   }
  ],
  "seen": {
   "brand-search-accuracy": "confluent.io ranks #1 for \"Confluent Stream processing\" and #3 for \"Confluent Apache Kafka\"",
   "wikipedia-presence": "Wikipedia \"Confluent\" and Wikidata Q94758727 both verified - domain confirmed on both sources",
   "robots-ai-policy-quality": "AI search crawlers: allowed in 3 of 3 checks (3 crawlers on 1 page). AI training crawlers: allowed in 2 of 2 checks (2 crawlers on 1 page), not scored.",
   "noindex-directives": "No noindex on the homepage: no robots, googlebot or bingbot meta tag and no X-Robots-Tag header hides it from search.",
   "sitemap": "Valid sitemap found at https://www.confluent.io/sitemap.xml with 4586 entries",
   "content-no-js": "Homepage: 11353 chars, semantic headings (1 H1 + 5 H2s + 11 H3s), 13.8% content ratio. 5 of 5 sampled inner pages have text without JavaScript.",
   "bot-detection": "Site accessible to 4 agent user-agents (ChatGPT-User, OAI-SearchBot, Claude-User, PerplexityBot).",
   "agent-discovery-file": "No agent discovery file found",
   "a2a-agent-card": "No A2A agent card found at /.well-known/agent-card.json",
   "mcp-well-known-discovery": "MCP server referenced in llms.txt",
   "robots-agent-user-policy": "No applicable crawl or usage restriction found for 3 user-triggered agents (chatgpt-user, claude-user, perplexity-user) on 1 public page: https://confluent.io/. Declared policy only;",
   "llms-txt-exists": "Found the llms.txt at https://confluent.io/llms.txt.",
   "llms-txt-formatting": "The llms.txt is well-formatted with markdown links, but at 696,335 characters it exceeds the 30,000-character recommendation for a navigation index.",
   "json-ld": "JSON-LD Organization found - missing description on this entity",
   "public-api-docs": "Documentation site found at https://docs.confluent.io",
   "metadata-completeness": "All metadata signals present: canonical URL, lang=\"en\", og:image, og:type",
   "page-token-budget": "All 6 measured pages fit an agent context budget (largest ~3K tokens)",
   "docs-auth-gate": "All 5 sampled pages are publicly readable (5 with substantive content)",
   "openapi-spec": "No OpenAPI/Swagger specification found",
   "developer-portal": "Developer portal found at /developer",
   "markdown-negotiation": "Missing markdown content negotiation. Homepage returned text/html when probed with Accept: text/markdown (expected text/markdown), and none of the well-known root paths (/llms.md, /auth.md, /agents.md, /developers.md,",
   "agent-ua-markdown": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly.",
   "agent-crawler-reachability": "Reachable to every agent we tested - ChatGPT-User: reachable, OAI-SearchBot: reachable, Claude-User: reachable, PerplexityBot: reachable",
   "public-api": "REST API documentation found at https://docs.confluent.io/cloud/current/get-started/docs-ai.md. Best-of-protocols score: 7/7.",
   "oauth-support": "OAuth authorization server metadata at https://support.confluent.io/mcp/oauth",
   "mcp-server": "MCP server detected at https://support.confluent.io/mcp; it requires authentication. Presence is verified (5/6), but Ora could not inspect its tools or verify access scopes without credentials.",
   "webmcp": "No WebMCP support detected - no document.modelContext / navigator.modelContext usage found (scanned 8 of 8 same-origin script bundle(s) for modelContext registrations)",
   "cli-tool": "CLI tool mentioned at https://docs.confluent.io",
   "rest-sdk-packages": "SDK packages found in npm, rubygems",
   "nlweb-ask": "No NLWeb-conformant /ask endpoint found via GET or POST",
   "mpp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "x402-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "ucp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "acp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "ap2-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites"
  }
 },
 {
  "slug": "contentful",
  "name": "Contentful",
  "domain": "contentful.com",
  "finalUrl": "https://www.contentful.com/",
  "read": "2026-11-09",
  "scannedAt": "2026-11-08T00:57:39.123+00:00",
  "score": 74,
  "max": 100,
  "grade": "B",
  "category": "Developer Tools",
  "scoringVersion": null,
  "rulesUrl": null,
  "summary": "Contentful offers a solid developer ecosystem and passes most discovery checks, but lacks a published OpenAPI specification for agents to build against.",
  "layers": [
   {
    "id": "discovery",
    "name": "Discovery",
    "score": 15,
    "max": 18
   },
   {
    "id": "accessibility",
    "name": "Access",
    "score": 39,
    "max": 57
   },
   {
    "id": "usability",
    "name": "Usability",
    "score": 50,
    "max": 67
   },
   {
    "id": "payments",
    "name": "Payments",
    "score": 0,
    "max": 0
   }
  ],
  "checks": {
   "ard-catalog": [
    "fail",
    0,
    1
   ],
   "ai-catalog-published": [
    "na",
    0,
    1
   ],
   "ard-entries-valid": [
    "na",
    0,
    2
   ],
   "ard-trust-manifest": [
    "na",
    0,
    2
   ],
   "agentic-search-usecase": [
    "na",
    0,
    6
   ],
   "agentic-search-specific": [
    "pass",
    3,
    3
   ],
   "brand-search-accuracy": [
    "warning",
    1,
    3
   ],
   "wikipedia-presence": [
    "pass",
    4,
    4
   ],
   "robots-ai-policy-quality": [
    "pass",
    2,
    2
   ],
   "mcp-registry-listed": [
    "pass",
    1,
    1
   ],
   "npm-sdk-package": [
    "pass",
    1,
    1
   ],
   "agent-rules-repo": [
    "fail",
    0,
    1
   ],
   "agent-plugins-repo": [
    "fail",
    0,
    1
   ],
   "registry-branding": [
    "fail",
    0,
    2
   ],
   "chatgpt-app-listed": [
    "pass",
    2,
    2
   ],
   "noindex-directives": [
    "pass",
    1,
    1
   ],
   "sitemap": [
    "pass",
    2,
    2
   ],
   "content-no-js": [
    "warning",
    2,
    3
   ],
   "bot-detection": [
    "na",
    0,
    2
   ],
   "agent-discovery-file": [
    "fail",
    0,
    2
   ],
   "agent-skills-index-v2": [
    "na",
    0,
    2
   ],
   "a2a-agent-card": [
    "fail",
    0,
    2
   ],
   "skills-sh-listed": [
    "pass",
    1,
    1
   ],
   "pricing-md": [
    "fail",
    0,
    2
   ],
   "nlweb-schema-feeds": [
    "fail",
    0,
    1
   ],
   "mcp-well-known-discovery": [
    "pass",
    2,
    2
   ],
   "agent-mode-view": [
    "fail",
    0,
    2
   ],
   "link-headers-discovery": [
    "fail",
    0,
    1
   ],
   "markdown-url-fallback": [
    "fail",
    0,
    2
   ],
   "modular-llms-txt": [
    "fail",
    0,
    1
   ],
   "sitemap-lastmod": [
    "pass",
    1,
    1
   ],
   "robots-agent-user-policy": [
    "pass",
    2,
    2
   ],
   "llms-txt-exists": [
    "pass",
    1,
    1
   ],
   "llms-txt-formatting": [
    "pass",
    2,
    2
   ],
   "json-ld": [
    "warning",
    2,
    4
   ],
   "pricing-info": [
    "pass",
    3,
    3
   ],
   "public-api-docs": [
    "pass",
    3,
    3
   ],
   "agent-instruction": [
    "fail",
    0,
    3
   ],
   "skills-sh-quality": [
    "pass",
    2,
    2
   ],
   "json-ld-entity-linking": [
    "pass",
    2,
    2
   ],
   "metadata-completeness": [
    "pass",
    2,
    2
   ],
   "org-schema-completeness": [
    "warning",
    1,
    2
   ],
   "schema-type-breadth": [
    "fail",
    0,
    2
   ],
   "trust-anchors": [
    "pass",
    2,
    2
   ],
   "llms-txt-links-resolve": [
    "pass",
    2,
    2
   ],
   "markdown-link-alternate": [
    "fail",
    0,
    1
   ],
   "markdown-frontmatter": [
    "na",
    0,
    1
   ],
   "redirect-hygiene": [
    "pass",
    1,
    1
   ],
   "page-token-budget": [
    "pass",
    1,
    1
   ],
   "code-fence-validity": [
    "pass",
    1,
    1
   ],
   "docs-auth-gate": [
    "pass",
    2,
    2
   ],
   "openapi-spec": [
    "fail",
    0,
    7
   ],
   "developer-portal": [
    "pass",
    6,
    6
   ],
   "api-catalog-rfc9727": [
    "fail",
    0,
    2
   ],
   "markdown-negotiation": [
    "fail",
    0,
    1
   ],
   "markdown-negotiation-vary": [
    "fail",
    0,
    1
   ],
   "agent-ua-markdown": [
    "fail",
    0,
    1
   ],
   "agent-crawler-reachability": [
    "na",
    0,
    2
   ],
   "mcp-tool-descriptions": [
    "na",
    0,
    3
   ],
   "mcp-param-schemas": [
    "na",
    0,
    2
   ],
   "mcp-server-identity": [
    "na",
    0,
    1
   ],
   "mcp-tool-listing": [
    "na",
    0,
    3
   ],
   "mcp-tool-naming": [
    "na",
    0,
    2
   ],
   "public-api": [
    "pass",
    7,
    7
   ],
   "oauth-support": [
    "pass",
    5,
    5
   ],
   "scoped-permissions": [
    "fail",
    0,
    5
   ],
   "mcp-auth-mechanism": [
    "warning",
    1,
    2
   ],
   "mcp-oauth-metadata": [
    "pass",
    2,
    2
   ],
   "mcp-pkce-s256": [
    "pass",
    2,
    2
   ],
   "onboarding-friction": [
    "warning",
    1,
    2
   ],
   "web-bot-auth-directory": [
    "fail",
    0,
    2
   ],
   "oauth-protected-resource": [
    "pass",
    2,
    2
   ],
   "auth-md-exists": [
    "fail",
    0,
    2
   ],
   "auth-md-structure": [
    "fail",
    0,
    2
   ],
   "auth-md-walkthrough-simulation": [
    "na",
    0,
    2
   ],
   "agent-auth-discovery-metadata": [
    "fail",
    0,
    3
   ],
   "agent-auth-www-authenticate": [
    "fail",
    0,
    1
   ],
   "agent-auth-endpoints-reachable": [
    "fail",
    0,
    2
   ],
   "pap-discovery": [
    "na",
    0,
    2
   ],
   "pap-issuer-binding": [
    "na",
    0,
    2
   ],
   "pap-auth-config": [
    "na",
    0,
    2
   ],
   "pap-interfaces": [
    "na",
    0,
    2
   ],
   "pap-endpoint-enforcement": [
    "na",
    0,
    2
   ],
   "pap-cross-protocol": [
    "na",
    0,
    2
   ],
   "mcp-server": [
    "warning",
    5,
    6
   ],
   "mcp-error-handling": [
    "na",
    0,
    2
   ],
   "mcp-transport-modern": [
    "na",
    0,
    1
   ],
   "webmcp": [
    "fail",
    0,
    5
   ],
   "rate-limit-headers": [
    "na",
    0,
    2
   ],
   "idempotency-key-support": [
    "na",
    0,
    3
   ],
   "json-error-responses": [
    "pass",
    4,
    4
   ],
   "api-error-model": [
    "na",
    0,
    3
   ],
   "api-versioning-policy": [
    "na",
    0,
    3
   ],
   "pagination-shape": [
    "na",
    0,
    2
   ],
   "async-job-pattern": [
    "na",
    0,
    2
   ],
   "cli-tool": [
    "pass",
    3,
    3
   ],
   "rest-sdk-packages": [
    "pass",
    3,
    3
   ],
   "nlweb-ask": [
    "fail",
    0,
    1
   ],
   "nlweb-streaming": [
    "fail",
    0,
    1
   ],
   "response-schema-coverage": [
    "na",
    0,
    2
   ],
   "mcp-tool-annotations": [
    "na",
    0,
    2
   ],
   "mcp-server-card": [
    "fail",
    0,
    2
   ],
   "mcp-multi-surface-coverage": [
    "warning",
    1,
    2
   ],
   "sandbox-environment": [
    "fail",
    0,
    2
   ],
   "batch-endpoints": [
    "na",
    0,
    2
   ],
   "mcp-resource-listing": [
    "na",
    0,
    3
   ],
   "graphql-error-type-definition": [
    "na",
    0,
    3
   ],
   "graphql-versioning-policy": [
    "na",
    0,
    2
   ],
   "graphql-pagination-pattern": [
    "na",
    0,
    2
   ],
   "graphql-async-job-pattern": [
    "na",
    0,
    2
   ],
   "graphql-schema-completeness": [
    "na",
    0,
    3
   ],
   "graphql-batch-mutations": [
    "na",
    0,
    2
   ],
   "agent-friendly-404": [
    "warning",
    1,
    2
   ],
   "ax-document-structure": [
    "na",
    0,
    3
   ],
   "ax-native-controls": [
    "pass",
    3,
    3
   ],
   "ax-accessible-names": [
    "pass",
    2,
    2
   ],
   "ax-form-labeling": [
    "na",
    0,
    2
   ],
   "ax-tree-injection-safe": [
    "pass",
    2,
    2
   ],
   "mcp-app-registry": [
    "na",
    0,
    4
   ],
   "a2ui-support": [
    "na",
    0,
    2
   ],
   "mcp-apps-ui-quality": [
    "na",
    0,
    4
   ],
   "mcp-view-domain": [
    "na",
    0,
    4
   ],
   "mcp-view-csp": [
    "na",
    0,
    4
   ],
   "api-schema-analysis": [
    "fail",
    0,
    2
   ],
   "function-calling-compat": [
    "fail",
    0,
    2
   ],
   "mcp-resource-quality": [
    "na",
    0,
    3
   ],
   "mpp-support": [
    "warning",
    0,
    2
   ],
   "x402-support": [
    "warning",
    0,
    2
   ],
   "ucp-support": [
    "warning",
    0,
    3
   ],
   "acp-support": [
    "warning",
    0,
    3
   ],
   "acp-delegate-payment": [
    "warning",
    0,
    3
   ],
   "ap2-support": [
    "warning",
    0,
    3
   ]
  },
  "flagged": [
   {
    "id": "openapi-spec",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 7,
    "tier": "required",
    "est": 4.1,
    "detail": "No OpenAPI/Swagger specification found"
   },
   {
    "id": "scoped-permissions",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 5,
    "tier": "recommended",
    "est": 3.3,
    "detail": "No declared OAuth scopes, security schemes, or scoped-permission documentation found"
   },
   {
    "id": "webmcp",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 5,
    "tier": "required",
    "est": 3.3,
    "detail": "No WebMCP support detected - no document.modelContext / navigator.modelContext usage found (scanned 32 of 32 same-origin script bundle(s) for modelContext registrations)"
   },
   {
    "id": "brand-search-accuracy",
    "layer": "discovery",
    "status": "warning",
    "score": 1,
    "max": 3,
    "tier": "required",
    "est": 2.5,
    "detail": "contentful.com ranks #9 for \"Contentful content management system\""
   },
   {
    "id": "agent-instruction",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "required",
    "est": 1.8,
    "detail": "No agent instruction file with when-to-use guidance found"
   },
   {
    "id": "api-schema-analysis",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.3,
    "detail": "No API schema detected"
   },
   {
    "id": "function-calling-compat",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.3,
    "detail": "No API spec found - function calling requires discoverable endpoints"
   },
   {
    "id": "agent-discovery-file",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 1.2,
    "detail": "No agent discovery file found"
   },
   {
    "id": "ard-catalog",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 1.2,
    "detail": "No /.well-known/ard.json, no same-site rel=\"ard\" link, and no legacy /.well-known/ai-catalog.json"
   },
   {
    "id": "json-ld",
    "layer": "accessibility",
    "status": "warning",
    "score": 2,
    "max": 4,
    "tier": "required",
    "est": 1.2,
    "detail": "JSON-LD Organization found - missing description on this entity"
   },
   {
    "id": "schema-type-breadth",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.2,
    "detail": "No extended schema types found - AI can only answer basic questions about this entity"
   },
   {
    "id": "agent-friendly-404",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.7,
    "detail": "The nonexistent path https://contentful.com/__ora-404-probe-2u4iu90q correctly returns HTTP 404. Partial credit: no Markdown error body was detected."
   },
   {
    "id": "mcp-server",
    "layer": "usability",
    "status": "warning",
    "score": 5,
    "max": 6,
    "tier": "required",
    "est": 0.7,
    "detail": "MCP server detected at https://mcp.contentful.com/mcp; it requires authentication. Presence is verified (5/6), but Ora could not inspect its tools or verify access scopes without credentials."
   },
   {
    "id": "onboarding-friction",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.7,
    "detail": "Onboarding signals described but not verified live: free tier available, self-serve key generation, sandbox/test environment"
   },
   {
    "id": "content-no-js",
    "layer": "accessibility",
    "status": "warning",
    "score": 2,
    "max": 3,
    "tier": "required",
    "est": 0.6,
    "detail": "Homepage: 7162 chars with H1, but heading hierarchy skips H1 to H4; 4.3% content ratio is below the 5% target. 5 of 5 sampled inner pages have text without JavaScript."
   },
   {
    "id": "org-schema-completeness",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "Organization schema found but missing: contactPoint, address"
   },
   {
    "id": "agent-auth-discovery-metadata",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": 0.5,
    "detail": "Neither /.well-known/oauth-protected-resource nor /.well-known/oauth-authorization-server found. Probed: contentful.com, api.contentful.com."
   },
   {
    "id": "a2a-agent-card",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.4,
    "detail": "No A2A agent card found at /.well-known/agent-card.json"
   },
   {
    "id": "api-catalog-rfc9727",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.4,
    "detail": "No /.well-known/api-catalog found (RFC 9727)"
   },
   {
    "id": "agent-auth-endpoints-reachable",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.3,
    "detail": "No agent_auth endpoint URIs found in AS metadata or /auth.md prose; nothing to probe"
   },
   {
    "id": "auth-md-exists",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.3,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "auth-md-structure",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.3,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "mcp-server-card",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.3,
    "detail": "No MCP server card found for https://mcp.contentful.com/mcp (checked /.well-known/mcp/server-card.json, the site's ai-catalog.json, servers[].card in mcp.json, and <server>/server-card)"
   },
   {
    "id": "mcp-server-card",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.3,
    "detail": "No MCP server card found for https://support.contentful.com/mcp (checked /.well-known/mcp/server-card.json, the site's ai-catalog.json, servers[].card in mcp.json, and <server>/server-card)"
   },
   {
    "id": "sandbox-environment",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.3,
    "detail": "No sandbox or test environment found"
   },
   {
    "id": "agent-auth-www-authenticate",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.2,
    "detail": "No 401 with WWW-Authenticate: Bearer resource_metadata=... found. Probed [https://contentful.com/api, https://contentful.com/api/v1, https://contentful.com/v1, https://contentful.com/v2, https://contentful.com/agent/identity,"
   },
   {
    "id": "link-headers-discovery",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 0.2,
    "detail": "Link header present but no agent-relevant rel values (sitemap, describedby, alternate, service-desc)"
   },
   {
    "id": "markdown-negotiation-vary",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.2,
    "detail": "Homepage https://contentful.com does not meet the Markdown negotiation requirements: Accept: text/markdown returned text/html; charset=utf-8; Vary header missing Accept (got \"rsc, next-router-state-tree, next-router-prefetch,"
   },
   {
    "id": "mcp-auth-mechanism",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.2,
    "detail": "docs MCP is gated behind authentication - this defeats the purpose of a docs MCP for agent discovery"
   },
   {
    "id": "mcp-multi-surface-coverage",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.2,
    "detail": "You run both MCP servers, but the documentation one (https://support.contentful.com/mcp) is not reachable. Fix it so agents can use it."
   },
   {
    "id": "acp-delegate-payment",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": null,
    "detail": "OPTIONS allows POST at https://api.contentful.com/agentic_commerce/delegate_payment but POST 401 returned no ACP response"
   },
   {
    "id": "acp-support",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 3,
    "tier": "required",
    "est": null,
    "detail": "OPTIONS allows POST at https://api.contentful.com/checkout_sessions but POST 401 returned no ACP response"
   },
   {
    "id": "agent-mode-view",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "?mode=agent returns same content as homepage (no dedicated agent view)"
   },
   {
    "id": "agent-plugins-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No Agent Plugins manifest (plugin.json) found in discovered repos"
   },
   {
    "id": "agent-rules-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Could not locate a public repo containing agent configs or rules. If our probes missed it, AI coding agents likely will too - link the repo from your homepage or docs so it's discoverable."
   },
   {
    "id": "agent-ua-markdown",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly."
   },
   {
    "id": "ap2-support",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": null,
    "detail": "No AP2 (Agent Payments Protocol) signals detected"
   },
   {
    "id": "markdown-link-alternate",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No sampled page advertises a markdown alternate. Add <link rel=\"alternate\" type=\"text/markdown\" href=\"...\"> (or the equivalent Link response header) pointing at a markdown twin of the page."
   },
   {
    "id": "markdown-negotiation",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Missing markdown content negotiation. Homepage returned text/html when probed with Accept: text/markdown (expected text/markdown), and none of the well-known root paths (/llms.md, /auth.md, /agents.md, /developers.md, /api.md, /index.md,"
   },
   {
    "id": "markdown-url-fallback",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "Homepage does not support the .md suffix. Probed https://contentful.com/index.md and it did not return markdown (expected text/markdown content-type or a heading-led non-HTML body)."
   },
   {
    "id": "modular-llms-txt",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No section-level llms.txt found. Tried /developers/docs/references/llms.txt, /developers/docs/concepts/llms.txt, /developers/docs/tutorials/llms.txt, /developers/docs/tools/llms.txt, /developers/docs/sdks/llms.txt, /docs/llms.txt,"
   },
   {
    "id": "mpp-support",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": null,
    "detail": "No MPP (Machine Payments Protocol) support detected"
   },
   {
    "id": "nlweb-ask",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No NLWeb-conformant /ask endpoint found via GET or POST"
   },
   {
    "id": "nlweb-schema-feeds",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No schemamap: directive in robots.txt"
   },
   {
    "id": "nlweb-streaming",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "NLWeb /ask does not support SSE streaming via GET or POST"
   },
   {
    "id": "pricing-md",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No pricing.md found - agents need machine-readable pricing to compare products and make purchase recommendations"
   },
   {
    "id": "registry-branding",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No registry branding (name, icon, description) found"
   },
   {
    "id": "ucp-support",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 3,
    "tier": "required",
    "est": null,
    "detail": "no UCP (Universal Commerce Protocol) signals detected"
   },
   {
    "id": "web-bot-auth-directory",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No /.well-known/http-message-signatures-directory found"
   },
   {
    "id": "x402-support",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": null,
    "detail": "No x402 payment protocol support detected"
   }
  ],
  "seen": {
   "brand-search-accuracy": "contentful.com ranks #9 for \"Contentful content management system\"",
   "wikipedia-presence": "Wikipedia \"Contentful\" and Wikidata Q18348837 both verified - domain confirmed on both sources",
   "robots-ai-policy-quality": "AI search crawlers: allowed in 3 of 3 checks (3 crawlers on 1 page). AI training crawlers: allowed in 2 of 2 checks (2 crawlers on 1 page), not scored.",
   "noindex-directives": "No noindex on the homepage: no robots, googlebot or bingbot meta tag and no X-Robots-Tag header hides it from search.",
   "sitemap": "Valid sitemap found at https://www.contentful.com/sitemap-index.xml with multiple sitemaps entries",
   "content-no-js": "Homepage: 7162 chars with H1, but heading hierarchy skips H1 to H4; 4.3% content ratio is below the 5% target. 5 of 5 sampled inner pages have text without JavaScript.",
   "bot-detection": "Can't verify agent access. Your site also blocked a normal browser visit, so we can't tell if agents get in. (ChatGPT-User: cannot verify, OAI-SearchBot: cannot verify, Claude-User: cannot verify,",
   "agent-discovery-file": "No agent discovery file found",
   "a2a-agent-card": "No A2A agent card found at /.well-known/agent-card.json",
   "mcp-well-known-discovery": "MCP server referenced in llms.txt",
   "robots-agent-user-policy": "No applicable crawl or usage restriction found for 3 user-triggered agents (chatgpt-user, claude-user, perplexity-user) on 1 public page: https://contentful.com/. Declared policy only;",
   "llms-txt-exists": "Found the llms.txt at https://contentful.com/llms.txt.",
   "llms-txt-formatting": "The llms.txt is well-formatted: 134 lines with markdown links, 12,214 characters in total.",
   "json-ld": "JSON-LD Organization found - missing description on this entity",
   "public-api-docs": "Documentation site found at https://www.contentful.com",
   "metadata-completeness": "All metadata signals present: canonical URL, lang=\"en\", og:image, og:type",
   "page-token-budget": "All 6 measured pages fit an agent context budget (largest ~2K tokens)",
   "docs-auth-gate": "All 5 sampled pages are publicly readable (5 with substantive content)",
   "openapi-spec": "No OpenAPI/Swagger specification found",
   "developer-portal": "Developer portal found at /developers",
   "markdown-negotiation": "Missing markdown content negotiation. Homepage returned text/html when probed with Accept: text/markdown (expected text/markdown), and none of the well-known root paths (/llms.md, /auth.md, /agents.md, /developers.md,",
   "agent-ua-markdown": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly.",
   "agent-crawler-reachability": "Can't verify crawler reachability. Your site also blocked a normal browser visit, so we can't tell if agents get in. (ChatGPT-User: cannot verify, OAI-SearchBot: cannot verify, Claude-User: cannot verify,",
   "public-api": "REST API documentation found at https://contentful.com/developers/docs/references/llms.txt. Best-of-protocols score: 7/7.",
   "oauth-support": "OAuth authorization server metadata at https://mcp.contentful.com",
   "mcp-server": "MCP server detected at https://mcp.contentful.com/mcp; it requires authentication. Presence is verified (5/6), but Ora could not inspect its tools or verify access scopes without credentials.",
   "webmcp": "No WebMCP support detected - no document.modelContext / navigator.modelContext usage found (scanned 32 of 32 same-origin script bundle(s) for modelContext registrations)",
   "cli-tool": "CLI package found on npm: contentful-cli",
   "rest-sdk-packages": "SDK packages found across 3 ecosystems: npm, pypi, rubygems",
   "nlweb-ask": "No NLWeb-conformant /ask endpoint found via GET or POST",
   "mpp-support": "No MPP (Machine Payments Protocol) support detected",
   "x402-support": "No x402 payment protocol support detected",
   "ucp-support": "no UCP (Universal Commerce Protocol) signals detected",
   "acp-support": "OPTIONS allows POST at https://api.contentful.com/checkout_sessions but POST 401 returned no ACP response",
   "ap2-support": "No AP2 (Agent Payments Protocol) signals detected"
  }
 },
 {
  "slug": "datadog",
  "name": "Datadog",
  "domain": "datadoghq.com",
  "finalUrl": "https://www.datadoghq.com/",
  "read": "2026-11-09",
  "scannedAt": "2026-10-15T18:22:08.407+00:00",
  "score": 69,
  "max": 100,
  "grade": "C",
  "category": "Infrastructure",
  "scoringVersion": null,
  "rulesUrl": null,
  "summary": "Datadog offers ChatGPT app listing, but lacks an OpenAPI specification.",
  "layers": [
   {
    "id": "discovery",
    "name": "Discovery",
    "score": 12,
    "max": 15
   },
   {
    "id": "accessibility",
    "name": "Access",
    "score": 47,
    "max": 61
   },
   {
    "id": "usability",
    "name": "Usability",
    "score": 35,
    "max": 60
   },
   {
    "id": "payments",
    "name": "Payments",
    "score": 0,
    "max": 0
   }
  ],
  "checks": {
   "ard-catalog": [
    "fail",
    0,
    1
   ],
   "ai-catalog-published": [
    "na",
    0,
    1
   ],
   "ard-entries-valid": [
    "na",
    0,
    2
   ],
   "ard-trust-manifest": [
    "na",
    0,
    2
   ],
   "agentic-search-usecase": [
    "na",
    0,
    6
   ],
   "agentic-search-specific": [
    "na",
    0,
    3
   ],
   "brand-search-accuracy": [
    "pass",
    3,
    3
   ],
   "wikipedia-presence": [
    "pass",
    4,
    4
   ],
   "robots-ai-policy-quality": [
    "pass",
    2,
    2
   ],
   "mcp-registry-listed": [
    "fail",
    0,
    1
   ],
   "npm-sdk-package": [
    "fail",
    0,
    1
   ],
   "agent-rules-repo": [
    "fail",
    0,
    1
   ],
   "agent-plugins-repo": [
    "fail",
    0,
    1
   ],
   "registry-branding": [
    "fail",
    0,
    2
   ],
   "chatgpt-app-listed": [
    "pass",
    2,
    2
   ],
   "noindex-directives": [
    "pass",
    1,
    1
   ],
   "sitemap": [
    "pass",
    2,
    2
   ],
   "content-no-js": [
    "warning",
    2,
    3
   ],
   "bot-detection": [
    "pass",
    2,
    2
   ],
   "agent-discovery-file": [
    "fail",
    0,
    2
   ],
   "agent-skills-index-v2": [
    "na",
    0,
    2
   ],
   "a2a-agent-card": [
    "fail",
    0,
    2
   ],
   "skills-sh-listed": [
    "pass",
    1,
    1
   ],
   "pricing-md": [
    "fail",
    0,
    2
   ],
   "nlweb-schema-feeds": [
    "fail",
    0,
    1
   ],
   "mcp-well-known-discovery": [
    "pass",
    2,
    2
   ],
   "agent-mode-view": [
    "fail",
    0,
    2
   ],
   "link-headers-discovery": [
    "fail",
    0,
    1
   ],
   "markdown-url-fallback": [
    "fail",
    0,
    2
   ],
   "modular-llms-txt": [
    "pass",
    1,
    1
   ],
   "sitemap-lastmod": [
    "pass",
    1,
    1
   ],
   "robots-agent-user-policy": [
    "pass",
    2,
    2
   ],
   "llms-txt-exists": [
    "pass",
    1,
    1
   ],
   "llms-txt-formatting": [
    "warning",
    1,
    2
   ],
   "json-ld": [
    "pass",
    4,
    4
   ],
   "pricing-info": [
    "pass",
    3,
    3
   ],
   "public-api-docs": [
    "pass",
    3,
    3
   ],
   "agent-instruction": [
    "pass",
    3,
    3
   ],
   "skills-sh-quality": [
    "pass",
    2,
    2
   ],
   "json-ld-entity-linking": [
    "pass",
    2,
    2
   ],
   "metadata-completeness": [
    "pass",
    2,
    2
   ],
   "org-schema-completeness": [
    "warning",
    1,
    2
   ],
   "schema-type-breadth": [
    "fail",
    0,
    2
   ],
   "trust-anchors": [
    "pass",
    2,
    2
   ],
   "llms-txt-links-resolve": [
    "pass",
    2,
    2
   ],
   "markdown-link-alternate": [
    "fail",
    0,
    1
   ],
   "markdown-frontmatter": [
    "na",
    0,
    1
   ],
   "redirect-hygiene": [
    "pass",
    1,
    1
   ],
   "page-token-budget": [
    "pass",
    1,
    1
   ],
   "code-fence-validity": [
    "pass",
    1,
    1
   ],
   "docs-auth-gate": [
    "pass",
    2,
    2
   ],
   "openapi-spec": [
    "fail",
    0,
    7
   ],
   "developer-portal": [
    "pass",
    6,
    6
   ],
   "api-catalog-rfc9727": [
    "fail",
    0,
    2
   ],
   "markdown-negotiation": [
    "fail",
    0,
    1
   ],
   "markdown-negotiation-vary": [
    "fail",
    0,
    1
   ],
   "agent-ua-markdown": [
    "fail",
    0,
    1
   ],
   "agent-crawler-reachability": [
    "pass",
    2,
    2
   ],
   "mcp-tool-descriptions": [
    "na",
    0,
    3
   ],
   "mcp-param-schemas": [
    "na",
    0,
    2
   ],
   "mcp-server-identity": [
    "na",
    0,
    1
   ],
   "mcp-tool-listing": [
    "na",
    0,
    3
   ],
   "mcp-tool-naming": [
    "na",
    0,
    2
   ],
   "public-api": [
    "warning",
    3,
    7
   ],
   "oauth-support": [
    "pass",
    5,
    5
   ],
   "scoped-permissions": [
    "fail",
    0,
    5
   ],
   "mcp-auth-mechanism": [
    "warning",
    1,
    2
   ],
   "mcp-oauth-metadata": [
    "pass",
    2,
    2
   ],
   "mcp-pkce-s256": [
    "pass",
    2,
    2
   ],
   "onboarding-friction": [
    "warning",
    1,
    2
   ],
   "web-bot-auth-directory": [
    "fail",
    0,
    2
   ],
   "oauth-protected-resource": [
    "pass",
    2,
    2
   ],
   "auth-md-exists": [
    "fail",
    0,
    2
   ],
   "auth-md-structure": [
    "fail",
    0,
    2
   ],
   "auth-md-walkthrough-simulation": [
    "na",
    0,
    2
   ],
   "agent-auth-discovery-metadata": [
    "fail",
    0,
    3
   ],
   "agent-auth-www-authenticate": [
    "fail",
    0,
    1
   ],
   "agent-auth-endpoints-reachable": [
    "fail",
    0,
    2
   ],
   "pap-discovery": [
    "na",
    0,
    2
   ],
   "pap-issuer-binding": [
    "na",
    0,
    2
   ],
   "pap-auth-config": [
    "na",
    0,
    2
   ],
   "pap-interfaces": [
    "na",
    0,
    2
   ],
   "pap-endpoint-enforcement": [
    "na",
    0,
    2
   ],
   "pap-cross-protocol": [
    "na",
    0,
    2
   ],
   "mcp-server": [
    "warning",
    5,
    6
   ],
   "mcp-error-handling": [
    "na",
    0,
    2
   ],
   "mcp-transport-modern": [
    "na",
    0,
    1
   ],
   "webmcp": [
    "fail",
    0,
    5
   ],
   "rate-limit-headers": [
    "na",
    0,
    2
   ],
   "idempotency-key-support": [
    "na",
    0,
    3
   ],
   "json-error-responses": [
    "pass",
    4,
    4
   ],
   "api-error-model": [
    "na",
    0,
    3
   ],
   "api-versioning-policy": [
    "na",
    0,
    3
   ],
   "pagination-shape": [
    "na",
    0,
    2
   ],
   "async-job-pattern": [
    "na",
    0,
    2
   ],
   "cli-tool": [
    "warning",
    2,
    3
   ],
   "rest-sdk-packages": [
    "fail",
    0,
    3
   ],
   "nlweb-ask": [
    "pass",
    1,
    1
   ],
   "nlweb-streaming": [
    "fail",
    0,
    1
   ],
   "response-schema-coverage": [
    "na",
    0,
    2
   ],
   "mcp-tool-annotations": [
    "na",
    0,
    2
   ],
   "mcp-server-card": [
    "fail",
    0,
    2
   ],
   "mcp-multi-surface-coverage": [
    "fail",
    0,
    2
   ],
   "sandbox-environment": [
    "warning",
    0,
    2
   ],
   "batch-endpoints": [
    "na",
    0,
    2
   ],
   "mcp-resource-listing": [
    "na",
    0,
    3
   ],
   "graphql-error-type-definition": [
    "na",
    0,
    3
   ],
   "graphql-versioning-policy": [
    "na",
    0,
    2
   ],
   "graphql-pagination-pattern": [
    "na",
    0,
    2
   ],
   "graphql-async-job-pattern": [
    "na",
    0,
    2
   ],
   "graphql-schema-completeness": [
    "na",
    0,
    3
   ],
   "graphql-batch-mutations": [
    "na",
    0,
    2
   ],
   "agent-friendly-404": [
    "warning",
    1,
    2
   ],
   "ax-document-structure": [
    "na",
    0,
    3
   ],
   "ax-native-controls": [
    "pass",
    3,
    3
   ],
   "ax-accessible-names": [
    "pass",
    2,
    2
   ],
   "ax-form-labeling": [
    "na",
    0,
    2
   ],
   "ax-tree-injection-safe": [
    "pass",
    2,
    2
   ],
   "mcp-app-registry": [
    "na",
    0,
    4
   ],
   "a2ui-support": [
    "fail",
    0,
    2
   ],
   "mcp-apps-ui-quality": [
    "na",
    0,
    4
   ],
   "mcp-view-domain": [
    "na",
    0,
    4
   ],
   "mcp-view-csp": [
    "na",
    0,
    4
   ],
   "api-schema-analysis": [
    "fail",
    0,
    2
   ],
   "function-calling-compat": [
    "fail",
    0,
    2
   ],
   "mcp-resource-quality": [
    "na",
    0,
    3
   ],
   "mpp-support": [
    "warning",
    0,
    2
   ],
   "x402-support": [
    "warning",
    0,
    2
   ],
   "ucp-support": [
    "warning",
    0,
    3
   ],
   "acp-support": [
    "warning",
    0,
    3
   ],
   "acp-delegate-payment": [
    "warning",
    0,
    3
   ],
   "ap2-support": [
    "warning",
    0,
    3
   ]
  },
  "flagged": [
   {
    "id": "openapi-spec",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 7,
    "tier": "required",
    "est": 3.8,
    "detail": "No OpenAPI/Swagger specification found"
   },
   {
    "id": "scoped-permissions",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 5,
    "tier": "recommended",
    "est": 3.7,
    "detail": "No declared OAuth scopes, security schemes, or scoped-permission documentation found"
   },
   {
    "id": "webmcp",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 5,
    "tier": "required",
    "est": 3.7,
    "detail": "No WebMCP support detected - no tool-attribute forms and no document.modelContext / navigator.modelContext usage found (scanned 8 of 9 same-origin script bundle(s) for modelContext registrations)"
   },
   {
    "id": "public-api",
    "layer": "usability",
    "status": "warning",
    "score": 3,
    "max": 7,
    "tier": "required",
    "est": 3,
    "detail": "API described in documentation at https://docs.datadoghq.com but no machine-verifiable API surface confirmed. Best-of-protocols score: 3/7."
   },
   {
    "id": "rest-sdk-packages",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": 2.2,
    "detail": "No SDK packages found across language ecosystems"
   },
   {
    "id": "api-schema-analysis",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.5,
    "detail": "No API schema detected"
   },
   {
    "id": "ard-catalog",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 1.5,
    "detail": "No /.well-known/ard.json (and no legacy /.well-known/ai-catalog.json)"
   },
   {
    "id": "function-calling-compat",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.5,
    "detail": "No API spec found - function calling requires discoverable endpoints"
   },
   {
    "id": "mcp-registry-listed",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 1.5,
    "detail": "No bi-directionally verified MCP registry entry found. To pass, either publish the server from a package whose homepage, repository or maintainer email names your domain, get a verified Smithery listing with non-zero usage,"
   },
   {
    "id": "npm-sdk-package",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 1.5,
    "detail": "No NPM or PyPI SDK package found"
   },
   {
    "id": "agent-discovery-file",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 1.1,
    "detail": "No agent discovery file found"
   },
   {
    "id": "schema-type-breadth",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.1,
    "detail": "No extended schema types found - AI can only answer basic questions about this entity"
   },
   {
    "id": "agent-auth-discovery-metadata",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": 0.9,
    "detail": "Neither /.well-known/oauth-protected-resource nor /.well-known/oauth-authorization-server found. Probed: datadoghq.com, api.datadoghq.com."
   },
   {
    "id": "agent-friendly-404",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.7,
    "detail": "The nonexistent path https://datadoghq.com/__ora-404-probe-m1c2hpgc correctly returns HTTP 404. Partial credit: no Markdown error body was detected."
   },
   {
    "id": "cli-tool",
    "layer": "usability",
    "status": "warning",
    "score": 2,
    "max": 3,
    "tier": "recommended",
    "est": 0.7,
    "detail": "CLI tool mentioned at https://docs.datadoghq.com"
   },
   {
    "id": "mcp-server",
    "layer": "usability",
    "status": "warning",
    "score": 5,
    "max": 6,
    "tier": "required",
    "est": 0.7,
    "detail": "MCP server detected at https://help.datadoghq.com/mcp; it requires authentication. Presence is verified (5/6), but Ora could not inspect its tools or verify access scopes without credentials."
   },
   {
    "id": "onboarding-friction",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.7,
    "detail": "Onboarding signals described but not verified live: free tier available, self-serve key generation, sandbox/test environment"
   },
   {
    "id": "agent-auth-endpoints-reachable",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "No agent_auth endpoint URIs found in AS metadata or /auth.md prose; nothing to probe"
   },
   {
    "id": "auth-md-exists",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.6,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "auth-md-structure",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "mcp-multi-surface-coverage",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "We found an MCP candidate for your documentation at https://help.datadoghq.com/mcp, but could not verify that agents can use it. This bonus needs two MCP servers: one for your product so agents can take actions,"
   },
   {
    "id": "mcp-server-card",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "No MCP server card found for https://help.datadoghq.com/mcp (checked /.well-known/mcp/server-card.json, the site's ai-catalog.json, servers[].card in mcp.json, and <server>/server-card)"
   },
   {
    "id": "sandbox-environment",
    "layer": "usability",
    "status": "warning",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "Testing/staging environment mentioned at https://docs.datadoghq.com but no dedicated sandbox found"
   },
   {
    "id": "content-no-js",
    "layer": "accessibility",
    "status": "warning",
    "score": 2,
    "max": 3,
    "tier": "required",
    "est": 0.5,
    "detail": "5985 chars with H1, but heading hierarchy skips H1 to H5"
   },
   {
    "id": "llms-txt-formatting",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "The llms.txt is well-formatted with markdown links, but at 589,570 characters it exceeds the 30,000-character recommendation for a navigation index."
   },
   {
    "id": "org-schema-completeness",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "Organization schema found but missing: contactPoint"
   },
   {
    "id": "agent-auth-www-authenticate",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.3,
    "detail": "No 401 with WWW-Authenticate: Bearer resource_metadata=... found. Probed [https://datadoghq.com/api, https://datadoghq.com/api/v1, https://datadoghq.com/v1, https://datadoghq.com/v2, https://datadoghq.com/agent/identity,"
   },
   {
    "id": "mcp-auth-mechanism",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.3,
    "detail": "docs MCP is gated behind authentication - this defeats the purpose of a docs MCP for agent discovery"
   },
   {
    "id": "a2a-agent-card",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.2,
    "detail": "No A2A agent card found at /.well-known/agent-card.json"
   },
   {
    "id": "api-catalog-rfc9727",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.2,
    "detail": "No /.well-known/api-catalog found (RFC 9727)"
   },
   {
    "id": "link-headers-discovery",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 0.1,
    "detail": "No HTTP Link response headers (RFC 8288) found"
   },
   {
    "id": "markdown-negotiation-vary",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.1,
    "detail": "Homepage https://datadoghq.com does not meet the Markdown negotiation requirements: Accept: text/markdown returned text/html; charset=utf-8; Vary header missing Accept (got \"accept-encoding, origin\")"
   },
   {
    "id": "a2ui-support",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No A2UI or generative UI support detected"
   },
   {
    "id": "acp-delegate-payment",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": null,
    "detail": "No ACP Delegate Payment signals detected"
   },
   {
    "id": "acp-support",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 3,
    "tier": "required",
    "est": null,
    "detail": "no ACP (Agentic Commerce Protocol) signals detected"
   },
   {
    "id": "agent-mode-view",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "?mode=agent returns same content as homepage (no dedicated agent view)"
   },
   {
    "id": "agent-plugins-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No Agent Plugins manifest (plugin.json) found in discovered repos"
   },
   {
    "id": "agent-rules-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Could not locate a public repo containing agent configs or rules. If our probes missed it, AI coding agents likely will too - link the repo from your homepage or docs so it's discoverable."
   },
   {
    "id": "agent-ua-markdown",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No probed bot User-Agent (GPTBot, ClaudeBot, ChatGPT-User, PerplexityBot, Google-Extended, Applebot-Extended, ora-agent, DeepSeekBot) receives markdown when requesting HTML."
   },
   {
    "id": "ap2-support",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": null,
    "detail": "No AP2 (Agent Payments Protocol) signals detected"
   },
   {
    "id": "markdown-link-alternate",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No sampled page advertises a markdown alternate. Add <link rel=\"alternate\" type=\"text/markdown\" href=\"...\"> (or the equivalent Link response header) pointing at a markdown twin of the page."
   },
   {
    "id": "markdown-negotiation",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Missing markdown content negotiation. Homepage returned text/html when probed with Accept: text/markdown (expected text/markdown), and none of the well-known root paths (/llms.md, /auth.md, /agents.md, /developers.md, /api.md, /index.md,"
   },
   {
    "id": "markdown-url-fallback",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "Homepage does not support the .md suffix. Probed https://datadoghq.com/index.md and it did not return markdown (expected text/markdown content-type or a heading-led non-HTML body)."
   },
   {
    "id": "mpp-support",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": null,
    "detail": "No MPP (Machine Payments Protocol) support detected"
   },
   {
    "id": "nlweb-schema-feeds",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No schemamap: directive in robots.txt"
   },
   {
    "id": "nlweb-streaming",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "NLWeb /ask requires authentication - cannot verify streaming"
   },
   {
    "id": "pricing-md",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No pricing.md found - agents need machine-readable pricing to compare products and make purchase recommendations"
   },
   {
    "id": "registry-branding",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No registry branding (name, icon, description) found"
   },
   {
    "id": "ucp-support",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 3,
    "tier": "required",
    "est": null,
    "detail": "no UCP (Universal Commerce Protocol) signals detected"
   },
   {
    "id": "web-bot-auth-directory",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No /.well-known/http-message-signatures-directory found"
   },
   {
    "id": "x402-support",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": null,
    "detail": "No x402 payment protocol support detected"
   }
  ],
  "seen": {
   "brand-search-accuracy": "datadoghq.com ranks #5 for \"Datadog Cloud Monitoring\"",
   "wikipedia-presence": "Wikipedia \"Datadog\" and Wikidata Q107383131 both verified - domain confirmed on both sources",
   "robots-ai-policy-quality": "AI search crawlers: allowed in 3 of 3 checks (3 crawlers on 1 page). AI training crawlers: allowed in 2 of 2 checks (2 crawlers on 1 page), not scored.",
   "noindex-directives": "No noindex on the homepage: no robots, googlebot or bingbot meta tag and no X-Robots-Tag header hides it from search.",
   "sitemap": "Valid sitemap found at https://www.datadoghq.com/sitemap.xml with multiple sitemaps entries",
   "content-no-js": "5985 chars with H1, but heading hierarchy skips H1 to H5",
   "bot-detection": "Site accessible to 4 agent user-agents (ChatGPT-User, OAI-SearchBot, Claude-User, PerplexityBot).",
   "agent-discovery-file": "No agent discovery file found",
   "a2a-agent-card": "No A2A agent card found at /.well-known/agent-card.json",
   "mcp-well-known-discovery": "MCP server referenced in llms.txt",
   "robots-agent-user-policy": "No applicable crawl or usage restriction found for 3 user-triggered agents (chatgpt-user, claude-user, perplexity-user) on 1 public page: https://datadoghq.com/. Declared policy only;",
   "llms-txt-exists": "Found the llms.txt at https://docs.datadoghq.com/llms.txt.",
   "llms-txt-formatting": "The llms.txt is well-formatted with markdown links, but at 589,570 characters it exceeds the 30,000-character recommendation for a navigation index.",
   "json-ld": "Rich JSON-LD identity: SoftwareApplication with name, description, url, and category/offers (1 block(s))",
   "public-api-docs": "Documentation site found at https://docs.datadoghq.com",
   "metadata-completeness": "All metadata signals present: canonical URL, lang=\"en\", og:image, og:type",
   "page-token-budget": "All 6 measured pages fit an agent context budget (largest ~7K tokens)",
   "docs-auth-gate": "All 5 sampled pages are publicly readable (5 with substantive content)",
   "openapi-spec": "No OpenAPI/Swagger specification found",
   "developer-portal": "Developer documentation portal found at https://docs.datadoghq.com",
   "markdown-negotiation": "Missing markdown content negotiation. Homepage returned text/html when probed with Accept: text/markdown (expected text/markdown), and none of the well-known root paths (/llms.md, /auth.md, /agents.md, /developers.md,",
   "agent-ua-markdown": "No probed bot User-Agent (GPTBot, ClaudeBot, ChatGPT-User, PerplexityBot, Google-Extended, Applebot-Extended, ora-agent, DeepSeekBot) receives markdown when requesting HTML.",
   "agent-crawler-reachability": "Reachable to every agent we tested - ChatGPT-User: reachable, OAI-SearchBot: reachable, Claude-User: reachable, PerplexityBot: reachable",
   "public-api": "API described in documentation at https://docs.datadoghq.com but no machine-verifiable API surface confirmed. Best-of-protocols score: 3/7.",
   "oauth-support": "OAuth authorization server metadata at https://help.datadoghq.com/mcp/oauth",
   "mcp-server": "MCP server detected at https://help.datadoghq.com/mcp; it requires authentication. Presence is verified (5/6), but Ora could not inspect its tools or verify access scopes without credentials.",
   "webmcp": "No WebMCP support detected - no tool-attribute forms and no document.modelContext / navigator.modelContext usage found (scanned 8 of 9 same-origin script bundle(s) for modelContext registrations)",
   "cli-tool": "CLI tool mentioned at https://docs.datadoghq.com",
   "rest-sdk-packages": "No SDK packages found across language ecosystems",
   "nlweb-ask": "NLWeb /ask endpoint exists but requires authentication (HTTP 403, via POST)",
   "mpp-support": "No MPP (Machine Payments Protocol) support detected",
   "x402-support": "No x402 payment protocol support detected",
   "ucp-support": "no UCP (Universal Commerce Protocol) signals detected",
   "acp-support": "no ACP (Agentic Commerce Protocol) signals detected",
   "ap2-support": "No AP2 (Agent Payments Protocol) signals detected"
  }
 },
 {
  "slug": "digitalocean",
  "name": "DigitalOcean",
  "domain": "digitalocean.com",
  "finalUrl": "https://www.digitalocean.com/",
  "read": "2026-11-09",
  "scannedAt": "2026-11-01T23:18:19.234+00:00",
  "score": 74,
  "max": 100,
  "grade": "B",
  "category": "Infrastructure",
  "scoringVersion": null,
  "rulesUrl": null,
  "summary": "DigitalOcean offers well-documented APIs and SDK packages, but lacks OAuth 2.0 support for agent authentication.",
  "layers": [
   {
    "id": "discovery",
    "name": "Discovery",
    "score": 14,
    "max": 18
   },
   {
    "id": "accessibility",
    "name": "Access",
    "score": 43,
    "max": 59
   },
   {
    "id": "usability",
    "name": "Usability",
    "score": 57,
    "max": 77
   },
   {
    "id": "payments",
    "name": "Payments",
    "score": 0,
    "max": 0
   }
  ],
  "checks": {
   "ard-catalog": [
    "fail",
    0,
    1
   ],
   "ai-catalog-published": [
    "na",
    0,
    1
   ],
   "ard-entries-valid": [
    "na",
    0,
    2
   ],
   "ard-trust-manifest": [
    "na",
    0,
    2
   ],
   "agentic-search-usecase": [
    "na",
    0,
    6
   ],
   "agentic-search-specific": [
    "pass",
    3,
    3
   ],
   "brand-search-accuracy": [
    "fail",
    0,
    3
   ],
   "wikipedia-presence": [
    "pass",
    4,
    4
   ],
   "robots-ai-policy-quality": [
    "pass",
    2,
    2
   ],
   "mcp-registry-listed": [
    "pass",
    1,
    1
   ],
   "npm-sdk-package": [
    "pass",
    1,
    1
   ],
   "agent-rules-repo": [
    "fail",
    0,
    1
   ],
   "agent-plugins-repo": [
    "fail",
    0,
    1
   ],
   "registry-branding": [
    "fail",
    0,
    2
   ],
   "chatgpt-app-listed": [
    "pass",
    2,
    2
   ],
   "noindex-directives": [
    "pass",
    1,
    1
   ],
   "sitemap": [
    "pass",
    2,
    2
   ],
   "content-no-js": [
    "warning",
    2,
    3
   ],
   "bot-detection": [
    "pass",
    2,
    2
   ],
   "agent-discovery-file": [
    "fail",
    0,
    2
   ],
   "agent-skills-index-v2": [
    "na",
    0,
    2
   ],
   "a2a-agent-card": [
    "fail",
    0,
    2
   ],
   "skills-sh-listed": [
    "pass",
    1,
    1
   ],
   "pricing-md": [
    "fail",
    0,
    2
   ],
   "nlweb-schema-feeds": [
    "fail",
    0,
    1
   ],
   "mcp-well-known-discovery": [
    "warning",
    1,
    2
   ],
   "agent-mode-view": [
    "fail",
    0,
    2
   ],
   "link-headers-discovery": [
    "fail",
    0,
    1
   ],
   "markdown-url-fallback": [
    "fail",
    0,
    2
   ],
   "modular-llms-txt": [
    "fail",
    0,
    1
   ],
   "sitemap-lastmod": [
    "warning",
    0,
    1
   ],
   "robots-agent-user-policy": [
    "pass",
    2,
    2
   ],
   "llms-txt-exists": [
    "pass",
    1,
    1
   ],
   "llms-txt-formatting": [
    "warning",
    1,
    2
   ],
   "json-ld": [
    "fail",
    0,
    4
   ],
   "pricing-info": [
    "pass",
    3,
    3
   ],
   "public-api-docs": [
    "pass",
    3,
    3
   ],
   "agent-instruction": [
    "warning",
    2,
    3
   ],
   "skills-sh-quality": [
    "pass",
    2,
    2
   ],
   "json-ld-entity-linking": [
    "fail",
    0,
    2
   ],
   "metadata-completeness": [
    "warning",
    1,
    2
   ],
   "org-schema-completeness": [
    "fail",
    0,
    2
   ],
   "schema-type-breadth": [
    "fail",
    0,
    2
   ],
   "trust-anchors": [
    "pass",
    2,
    2
   ],
   "llms-txt-links-resolve": [
    "pass",
    2,
    2
   ],
   "markdown-link-alternate": [
    "fail",
    0,
    1
   ],
   "markdown-frontmatter": [
    "na",
    0,
    1
   ],
   "redirect-hygiene": [
    "pass",
    1,
    1
   ],
   "page-token-budget": [
    "pass",
    1,
    1
   ],
   "code-fence-validity": [
    "pass",
    1,
    1
   ],
   "docs-auth-gate": [
    "pass",
    2,
    2
   ],
   "openapi-spec": [
    "pass",
    7,
    7
   ],
   "developer-portal": [
    "pass",
    6,
    6
   ],
   "api-catalog-rfc9727": [
    "fail",
    0,
    2
   ],
   "markdown-negotiation": [
    "fail",
    0,
    1
   ],
   "markdown-negotiation-vary": [
    "fail",
    0,
    1
   ],
   "agent-ua-markdown": [
    "fail",
    0,
    1
   ],
   "agent-crawler-reachability": [
    "pass",
    2,
    2
   ],
   "mcp-tool-descriptions": [
    "na",
    0,
    3
   ],
   "mcp-param-schemas": [
    "na",
    0,
    2
   ],
   "mcp-server-identity": [
    "na",
    0,
    1
   ],
   "mcp-tool-listing": [
    "na",
    0,
    3
   ],
   "mcp-tool-naming": [
    "na",
    0,
    2
   ],
   "public-api": [
    "pass",
    7,
    7
   ],
   "oauth-support": [
    "fail",
    0,
    5
   ],
   "scoped-permissions": [
    "warning",
    2,
    5
   ],
   "mcp-auth-mechanism": [
    "warning",
    1,
    2
   ],
   "mcp-oauth-metadata": [
    "fail",
    0,
    2
   ],
   "mcp-pkce-s256": [
    "fail",
    0,
    2
   ],
   "onboarding-friction": [
    "pass",
    2,
    2
   ],
   "web-bot-auth-directory": [
    "fail",
    0,
    2
   ],
   "oauth-protected-resource": [
    "pass",
    2,
    2
   ],
   "auth-md-exists": [
    "fail",
    0,
    2
   ],
   "auth-md-structure": [
    "fail",
    0,
    2
   ],
   "auth-md-walkthrough-simulation": [
    "na",
    0,
    2
   ],
   "agent-auth-discovery-metadata": [
    "warning",
    1,
    3
   ],
   "agent-auth-www-authenticate": [
    "pass",
    1,
    1
   ],
   "agent-auth-endpoints-reachable": [
    "fail",
    0,
    2
   ],
   "pap-discovery": [
    "na",
    0,
    2
   ],
   "pap-issuer-binding": [
    "na",
    0,
    2
   ],
   "pap-auth-config": [
    "na",
    0,
    2
   ],
   "pap-interfaces": [
    "na",
    0,
    2
   ],
   "pap-endpoint-enforcement": [
    "na",
    0,
    2
   ],
   "pap-cross-protocol": [
    "na",
    0,
    2
   ],
   "mcp-server": [
    "warning",
    5,
    6
   ],
   "mcp-error-handling": [
    "na",
    0,
    2
   ],
   "mcp-transport-modern": [
    "na",
    0,
    1
   ],
   "webmcp": [
    "fail",
    0,
    5
   ],
   "rate-limit-headers": [
    "warning",
    1,
    2
   ],
   "idempotency-key-support": [
    "warning",
    1,
    3
   ],
   "json-error-responses": [
    "pass",
    4,
    4
   ],
   "api-error-model": [
    "pass",
    3,
    3
   ],
   "api-versioning-policy": [
    "pass",
    3,
    3
   ],
   "pagination-shape": [
    "pass",
    2,
    2
   ],
   "async-job-pattern": [
    "pass",
    2,
    2
   ],
   "cli-tool": [
    "warning",
    2,
    3
   ],
   "rest-sdk-packages": [
    "pass",
    3,
    3
   ],
   "nlweb-ask": [
    "fail",
    0,
    1
   ],
   "nlweb-streaming": [
    "fail",
    0,
    1
   ],
   "response-schema-coverage": [
    "warning",
    1,
    2
   ],
   "mcp-tool-annotations": [
    "na",
    0,
    2
   ],
   "mcp-server-card": [
    "fail",
    0,
    2
   ],
   "mcp-multi-surface-coverage": [
    "fail",
    0,
    2
   ],
   "sandbox-environment": [
    "warning",
    0,
    2
   ],
   "batch-endpoints": [
    "pass",
    2,
    2
   ],
   "mcp-resource-listing": [
    "na",
    0,
    3
   ],
   "graphql-error-type-definition": [
    "na",
    0,
    3
   ],
   "graphql-versioning-policy": [
    "na",
    0,
    2
   ],
   "graphql-pagination-pattern": [
    "na",
    0,
    2
   ],
   "graphql-async-job-pattern": [
    "na",
    0,
    2
   ],
   "graphql-schema-completeness": [
    "na",
    0,
    3
   ],
   "graphql-batch-mutations": [
    "na",
    0,
    2
   ],
   "agent-friendly-404": [
    "warning",
    1,
    2
   ],
   "ax-document-structure": [
    "na",
    0,
    3
   ],
   "ax-native-controls": [
    "pass",
    3,
    3
   ],
   "ax-accessible-names": [
    "pass",
    2,
    2
   ],
   "ax-form-labeling": [
    "na",
    0,
    2
   ],
   "ax-tree-injection-safe": [
    "pass",
    2,
    2
   ],
   "mcp-app-registry": [
    "na",
    0,
    4
   ],
   "a2ui-support": [
    "na",
    0,
    2
   ],
   "mcp-apps-ui-quality": [
    "na",
    0,
    4
   ],
   "mcp-view-domain": [
    "na",
    0,
    4
   ],
   "mcp-view-csp": [
    "na",
    0,
    4
   ],
   "api-schema-analysis": [
    "pass",
    2,
    2
   ],
   "function-calling-compat": [
    "pass",
    2,
    2
   ],
   "mcp-resource-quality": [
    "na",
    0,
    3
   ],
   "mpp-support": [
    "na",
    0,
    2
   ],
   "x402-support": [
    "na",
    0,
    2
   ],
   "ucp-support": [
    "na",
    0,
    3
   ],
   "acp-support": [
    "na",
    0,
    3
   ],
   "acp-delegate-payment": [
    "na",
    0,
    3
   ],
   "ap2-support": [
    "na",
    0,
    3
   ]
  },
  "flagged": [
   {
    "id": "brand-search-accuracy",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "required",
    "est": 3.7,
    "detail": "digitalocean.com was not in the top 10 for \"AI\" (searched your brand name alone: no main product term from your homepage qualified)"
   },
   {
    "id": "oauth-support",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 5,
    "tier": "required",
    "est": 2.9,
    "detail": "No OAuth 2.0 or OpenID Connect support detected"
   },
   {
    "id": "webmcp",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 5,
    "tier": "required",
    "est": 2.9,
    "detail": "No WebMCP support detected - no document.modelContext / navigator.modelContext usage found (scanned 45 of 45 same-origin script bundle(s) for modelContext registrations)"
   },
   {
    "id": "json-ld",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 4,
    "tier": "required",
    "est": 2.3,
    "detail": "No JSON-LD structured data found on homepage"
   },
   {
    "id": "scoped-permissions",
    "layer": "usability",
    "status": "warning",
    "score": 2,
    "max": 5,
    "tier": "recommended",
    "est": 1.7,
    "detail": "OpenAPI declares security schemes but no named OAuth scopes - agents get all-or-nothing access. Declare per-scope grants (e.g. read:*, write:*) in the spec."
   },
   {
    "id": "ard-catalog",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 1.2,
    "detail": "No /.well-known/ard.json, no same-site rel=\"ard\" link, and no legacy /.well-known/ai-catalog.json"
   },
   {
    "id": "idempotency-key-support",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 3,
    "tier": "recommended",
    "est": 1.2,
    "detail": "Idempotency-Key support documented at https://docs.digitalocean.com/reference/api/reference/openapi.json but not verified on a live response (REST API is auth-gated)"
   },
   {
    "id": "agent-discovery-file",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 1.1,
    "detail": "No agent discovery file found"
   },
   {
    "id": "json-ld-entity-linking",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.1,
    "detail": "No JSON-LD found - no entity linking possible"
   },
   {
    "id": "org-schema-completeness",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.1,
    "detail": "No JSON-LD found - Organization schema missing"
   },
   {
    "id": "schema-type-breadth",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.1,
    "detail": "No extended schema types found - AI can only answer basic questions about this entity"
   },
   {
    "id": "agent-friendly-404",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "The nonexistent path https://digitalocean.com/__ora-404-probe-jtmk9yyd correctly returns HTTP 404. Partial credit: no Markdown error body was detected."
   },
   {
    "id": "agent-instruction",
    "layer": "accessibility",
    "status": "warning",
    "score": 2,
    "max": 3,
    "tier": "required",
    "est": 0.6,
    "detail": "When-to-use guidance found at https://docs.digitalocean.com"
   },
   {
    "id": "cli-tool",
    "layer": "usability",
    "status": "warning",
    "score": 2,
    "max": 3,
    "tier": "recommended",
    "est": 0.6,
    "detail": "CLI tool mentioned at https://docs.digitalocean.com/reference/doctl/"
   },
   {
    "id": "content-no-js",
    "layer": "accessibility",
    "status": "warning",
    "score": 2,
    "max": 3,
    "tier": "required",
    "est": 0.6,
    "detail": "Homepage: 6088 chars with H1, but 4.7% content ratio is below the 5% target. 5 of 5 sampled inner pages have text without JavaScript."
   },
   {
    "id": "llms-txt-formatting",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "The llms.txt is well-formatted with markdown links, but at 72,919 characters it exceeds the 30,000-character recommendation for a navigation index."
   },
   {
    "id": "mcp-server",
    "layer": "usability",
    "status": "warning",
    "score": 5,
    "max": 6,
    "tier": "required",
    "est": 0.6,
    "detail": "MCP server detected at https://mcp.digitalocean.com/mcp; it requires authentication. Presence is verified (5/6), but Ora could not inspect its tools or verify access scopes without credentials."
   },
   {
    "id": "metadata-completeness",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "required",
    "est": 0.6,
    "detail": "2/4 metadata signals present - missing: og:image, og:type"
   },
   {
    "id": "rate-limit-headers",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "REST rate-limit headers documented in OpenAPI spec, but not observed on a live response (API requires authentication)."
   },
   {
    "id": "response-schema-coverage",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "31% of operations define response schemas (target: >60% with application/json content type)"
   },
   {
    "id": "a2a-agent-card",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.3,
    "detail": "No A2A agent card found at /.well-known/agent-card.json"
   },
   {
    "id": "agent-auth-discovery-metadata",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 3,
    "tier": "recommended",
    "est": 0.3,
    "detail": "PRM + AS metadata both present (PRM discovered at https://mcp.digitalocean.com) (AS metadata fetched from advertised origin https://cloud.digitalocean.com) but AS metadata has no agent_auth block"
   },
   {
    "id": "agent-auth-endpoints-reachable",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.3,
    "detail": "No agent_auth endpoint URIs found in AS metadata or /auth.md prose; nothing to probe"
   },
   {
    "id": "api-catalog-rfc9727",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.3,
    "detail": "No /.well-known/api-catalog found (RFC 9727)"
   },
   {
    "id": "auth-md-exists",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.3,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "auth-md-structure",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.3,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "mcp-multi-surface-coverage",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.3,
    "detail": "We found an MCP candidate for your product at https://mcp.digitalocean.com/mcp, but could not verify that agents can use it. This bonus needs two MCP servers: one for your product so agents can take actions,"
   },
   {
    "id": "mcp-oauth-metadata",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.3,
    "detail": "OAuth protected-resource metadata was found for https://mcp.digitalocean.com/mcp, but its resource field identifies https://mcp.digitalocean.com/. The resource must exactly match the requested endpoint (RFC 9728)."
   },
   {
    "id": "mcp-pkce-s256",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.3,
    "detail": "No code_challenge_methods_supported in OAuth metadata for product MCP"
   },
   {
    "id": "mcp-server-card",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.3,
    "detail": "No MCP server card found for https://mcp.digitalocean.com/mcp (checked /.well-known/mcp/server-card.json, the site's ai-catalog.json, servers[].card in mcp.json, and <server>/server-card)"
   },
   {
    "id": "sandbox-environment",
    "layer": "usability",
    "status": "warning",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.3,
    "detail": "Sandbox/test environment mentioned at https://docs.digitalocean.com but no sandbox surface verified"
   },
   {
    "id": "link-headers-discovery",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 0.2,
    "detail": "No HTTP Link response headers (RFC 8288) found"
   },
   {
    "id": "markdown-negotiation-vary",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.2,
    "detail": "Homepage https://digitalocean.com does not meet the Markdown negotiation requirements: Accept: text/markdown returned text/html; charset=utf-8; Vary header missing Accept (got \"rsc, next-router-state-tree, next-router-prefetch,"
   },
   {
    "id": "mcp-well-known-discovery",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.2,
    "detail": "MCP server at https://mcp.digitalocean.com/mcp - list its server card, hosted on your own domain, in /.well-known/ai-catalog.json so MCP clients can discover it"
   },
   {
    "id": "sitemap-lastmod",
    "layer": "accessibility",
    "status": "warning",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.2,
    "detail": "Sitemap lastmod dates are all stale - the newest is 1363 days old. Update lastmod when content changes or agents will deprioritize the whole site as unmaintained."
   },
   {
    "id": "mcp-auth-mechanism",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.1,
    "detail": "product MCP requires authentication but no standard OAuth discovery metadata"
   },
   {
    "id": "agent-mode-view",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "?mode=agent returns same content as homepage (no dedicated agent view)"
   },
   {
    "id": "agent-plugins-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No Agent Plugins manifest (plugin.json) found in discovered repos"
   },
   {
    "id": "agent-rules-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Could not locate a public repo containing agent configs or rules. If our probes missed it, AI coding agents likely will too - link the repo from your homepage or docs so it's discoverable."
   },
   {
    "id": "agent-ua-markdown",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly."
   },
   {
    "id": "markdown-link-alternate",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No sampled page advertises a markdown alternate. Add <link rel=\"alternate\" type=\"text/markdown\" href=\"...\"> (or the equivalent Link response header) pointing at a markdown twin of the page."
   },
   {
    "id": "markdown-negotiation",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Missing markdown content negotiation. Homepage returned text/html when probed with Accept: text/markdown (expected text/markdown), and none of the well-known root paths (/llms.md, /auth.md, /agents.md, /developers.md, /api.md, /index.md,"
   },
   {
    "id": "markdown-url-fallback",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "Homepage does not support the .md suffix. Probed https://digitalocean.com/index.md and it did not return markdown (expected text/markdown content-type or a heading-led non-HTML body)."
   },
   {
    "id": "modular-llms-txt",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No section-level llms.txt found. Tried /docs/llms.txt, /api/llms.txt, /developers/llms.txt, /guides/llms.txt, /reference/llms.txt, /blog/llms.txt, /careers/llms.txt, /support/llms.txt, /products/llms.txt, /solutions/llms.txt."
   },
   {
    "id": "nlweb-ask",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No NLWeb-conformant /ask endpoint found via GET or POST"
   },
   {
    "id": "nlweb-schema-feeds",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No schemamap: directive in robots.txt"
   },
   {
    "id": "nlweb-streaming",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "NLWeb /ask does not support SSE streaming via GET or POST"
   },
   {
    "id": "pricing-md",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No pricing.md found - agents need machine-readable pricing to compare products and make purchase recommendations"
   },
   {
    "id": "registry-branding",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No registry branding (name, icon, description) found"
   },
   {
    "id": "web-bot-auth-directory",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No /.well-known/http-message-signatures-directory found"
   }
  ],
  "seen": {
   "brand-search-accuracy": "digitalocean.com was not in the top 10 for \"AI\" (searched your brand name alone: no main product term from your homepage qualified)",
   "wikipedia-presence": "Wikipedia \"DigitalOcean\" and Wikidata Q17052116 both verified - domain confirmed on both sources",
   "robots-ai-policy-quality": "AI search crawlers: allowed in 3 of 3 checks (3 crawlers on 1 page). AI training crawlers: allowed in 2 of 2 checks (2 crawlers on 1 page), not scored.",
   "noindex-directives": "No noindex on the homepage: no robots, googlebot or bingbot meta tag and no X-Robots-Tag header hides it from search.",
   "sitemap": "Valid sitemap found at https://www.digitalocean.com/sitemap.xml with multiple sitemaps entries",
   "content-no-js": "Homepage: 6088 chars with H1, but 4.7% content ratio is below the 5% target. 5 of 5 sampled inner pages have text without JavaScript.",
   "bot-detection": "Site accessible to 4 agent user-agents (ChatGPT-User, OAI-SearchBot, Claude-User, PerplexityBot).",
   "agent-discovery-file": "No agent discovery file found",
   "a2a-agent-card": "No A2A agent card found at /.well-known/agent-card.json",
   "mcp-well-known-discovery": "MCP server at https://mcp.digitalocean.com/mcp - list its server card, hosted on your own domain, in /.well-known/ai-catalog.json so MCP clients can discover it",
   "robots-agent-user-policy": "No applicable crawl or usage restriction found for 3 user-triggered agents (chatgpt-user, claude-user, perplexity-user) on 1 public page: https://digitalocean.com/. Declared policy only;",
   "llms-txt-exists": "Found the llms.txt at https://docs.digitalocean.com/llms.txt.",
   "llms-txt-formatting": "The llms.txt is well-formatted with markdown links, but at 72,919 characters it exceeds the 30,000-character recommendation for a navigation index.",
   "json-ld": "No JSON-LD structured data found on homepage",
   "public-api-docs": "Documentation site found at https://docs.digitalocean.com",
   "metadata-completeness": "2/4 metadata signals present - missing: og:image, og:type",
   "page-token-budget": "All 6 measured pages fit an agent context budget (largest ~2K tokens)",
   "docs-auth-gate": "All 5 sampled pages are publicly readable (5 with substantive content)",
   "openapi-spec": "OpenAPI spec found at https://docs.digitalocean.com/reference/api/reference/openapi.json (version: 3.0.0)",
   "developer-portal": "Developer portal found at https://docs.digitalocean.com",
   "markdown-negotiation": "Missing markdown content negotiation. Homepage returned text/html when probed with Accept: text/markdown (expected text/markdown), and none of the well-known root paths (/llms.md, /auth.md, /agents.md, /developers.md,",
   "agent-ua-markdown": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly.",
   "agent-crawler-reachability": "Reachable to every agent we tested - ChatGPT-User: reachable, OAI-SearchBot: reachable, Claude-User: reachable, PerplexityBot: reachable",
   "public-api": "Documented REST API detected; endpoints require authentication (API key / OAuth), which is expected for agent access. Best-of-protocols score: 7/7.",
   "oauth-support": "No OAuth 2.0 or OpenID Connect support detected",
   "mcp-server": "MCP server detected at https://mcp.digitalocean.com/mcp; it requires authentication. Presence is verified (5/6), but Ora could not inspect its tools or verify access scopes without credentials.",
   "webmcp": "No WebMCP support detected - no document.modelContext / navigator.modelContext usage found (scanned 45 of 45 same-origin script bundle(s) for modelContext registrations)",
   "cli-tool": "CLI tool mentioned at https://docs.digitalocean.com/reference/doctl/",
   "rest-sdk-packages": "SDK packages found across 3 ecosystems: npm, pypi, rubygems",
   "nlweb-ask": "No NLWeb-conformant /ask endpoint found via GET or POST",
   "mpp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "x402-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "ucp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "acp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "ap2-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites"
  }
 },
 {
  "slug": "docker",
  "name": "Docker",
  "domain": "docker.com",
  "finalUrl": "https://www.docker.com/",
  "read": "2026-11-09",
  "scannedAt": "2026-10-11T02:49:22.448+00:00",
  "score": 69,
  "max": 100,
  "grade": "C",
  "category": "Infrastructure",
  "scoringVersion": null,
  "rulesUrl": null,
  "summary": "Docker offers developer resource discoverability, but lacks an OpenAPI specification.",
  "layers": [
   {
    "id": "discovery",
    "name": "Discovery",
    "score": 13,
    "max": 15
   },
   {
    "id": "accessibility",
    "name": "Access",
    "score": 42,
    "max": 62
   },
   {
    "id": "usability",
    "name": "Usability",
    "score": 43,
    "max": 71
   },
   {
    "id": "payments",
    "name": "Payments",
    "score": 0,
    "max": 0
   }
  ],
  "checks": {
   "ard-catalog": [
    "fail",
    0,
    1
   ],
   "ai-catalog-published": [
    "na",
    0,
    1
   ],
   "ard-entries-valid": [
    "na",
    0,
    2
   ],
   "ard-trust-manifest": [
    "na",
    0,
    2
   ],
   "agentic-search-usecase": [
    "na",
    0,
    6
   ],
   "agentic-search-specific": [
    "pass",
    3,
    3
   ],
   "brand-search-accuracy": [
    "pass",
    3,
    3
   ],
   "wikipedia-presence": [
    "pass",
    4,
    4
   ],
   "robots-ai-policy-quality": [
    "pass",
    2,
    2
   ],
   "mcp-registry-listed": [
    "fail",
    0,
    1
   ],
   "npm-sdk-package": [
    "pass",
    1,
    1
   ],
   "agent-rules-repo": [
    "pass",
    1,
    1
   ],
   "agent-plugins-repo": [
    "fail",
    0,
    1
   ],
   "registry-branding": [
    "fail",
    0,
    2
   ],
   "chatgpt-app-listed": [
    "fail",
    0,
    2
   ],
   "sitemap": [
    "pass",
    2,
    2
   ],
   "content-no-js": [
    "warning",
    2,
    3
   ],
   "bot-detection": [
    "pass",
    2,
    2
   ],
   "agent-discovery-file": [
    "fail",
    0,
    2
   ],
   "agent-skills-index-v2": [
    "na",
    0,
    2
   ],
   "a2a-agent-card": [
    "fail",
    0,
    2
   ],
   "skills-sh-listed": [
    "pass",
    1,
    1
   ],
   "pricing-md": [
    "fail",
    0,
    2
   ],
   "nlweb-schema-feeds": [
    "fail",
    0,
    1
   ],
   "mcp-well-known-discovery": [
    "pass",
    2,
    2
   ],
   "agent-mode-view": [
    "fail",
    0,
    2
   ],
   "link-headers-discovery": [
    "pass",
    1,
    1
   ],
   "markdown-url-fallback": [
    "fail",
    0,
    2
   ],
   "modular-llms-txt": [
    "fail",
    0,
    1
   ],
   "sitemap-lastmod": [
    "pass",
    1,
    1
   ],
   "robots-agent-user-policy": [
    "pass",
    2,
    2
   ],
   "llms-txt-exists": [
    "pass",
    1,
    1
   ],
   "llms-txt-formatting": [
    "pass",
    2,
    2
   ],
   "json-ld": [
    "warning",
    1,
    4
   ],
   "pricing-info": [
    "pass",
    3,
    3
   ],
   "public-api-docs": [
    "pass",
    3,
    3
   ],
   "agent-instruction": [
    "fail",
    0,
    3
   ],
   "skills-sh-quality": [
    "pass",
    2,
    2
   ],
   "json-ld-entity-linking": [
    "pass",
    2,
    2
   ],
   "metadata-completeness": [
    "pass",
    2,
    2
   ],
   "org-schema-completeness": [
    "fail",
    0,
    2
   ],
   "schema-type-breadth": [
    "fail",
    0,
    2
   ],
   "trust-anchors": [
    "pass",
    2,
    2
   ],
   "llms-txt-links-resolve": [
    "pass",
    2,
    2
   ],
   "markdown-link-alternate": [
    "fail",
    0,
    1
   ],
   "markdown-frontmatter": [
    "na",
    0,
    1
   ],
   "redirect-hygiene": [
    "pass",
    1,
    1
   ],
   "page-token-budget": [
    "pass",
    1,
    1
   ],
   "code-fence-validity": [
    "pass",
    1,
    1
   ],
   "docs-auth-gate": [
    "pass",
    2,
    2
   ],
   "openapi-spec": [
    "fail",
    0,
    7
   ],
   "developer-portal": [
    "pass",
    6,
    6
   ],
   "api-catalog-rfc9727": [
    "fail",
    0,
    2
   ],
   "markdown-negotiation": [
    "fail",
    0,
    1
   ],
   "markdown-negotiation-vary": [
    "fail",
    0,
    1
   ],
   "agent-ua-markdown": [
    "fail",
    0,
    1
   ],
   "agent-crawler-reachability": [
    "pass",
    2,
    2
   ],
   "mcp-tool-descriptions": [
    "pass",
    3,
    3
   ],
   "mcp-param-schemas": [
    "fail",
    0,
    2
   ],
   "mcp-server-identity": [
    "pass",
    1,
    1
   ],
   "mcp-tool-listing": [
    "pass",
    3,
    3
   ],
   "mcp-tool-naming": [
    "pass",
    2,
    2
   ],
   "public-api": [
    "warning",
    3,
    7
   ],
   "oauth-support": [
    "pass",
    5,
    5
   ],
   "scoped-permissions": [
    "fail",
    0,
    5
   ],
   "mcp-auth-mechanism": [
    "pass",
    2,
    2
   ],
   "mcp-oauth-metadata": [
    "na",
    0,
    2
   ],
   "mcp-pkce-s256": [
    "na",
    0,
    2
   ],
   "onboarding-friction": [
    "warning",
    1,
    2
   ],
   "web-bot-auth-directory": [
    "fail",
    0,
    2
   ],
   "oauth-protected-resource": [
    "fail",
    0,
    2
   ],
   "auth-md-exists": [
    "fail",
    0,
    2
   ],
   "auth-md-structure": [
    "fail",
    0,
    2
   ],
   "auth-md-walkthrough-simulation": [
    "na",
    0,
    2
   ],
   "agent-auth-discovery-metadata": [
    "fail",
    0,
    3
   ],
   "agent-auth-www-authenticate": [
    "fail",
    0,
    1
   ],
   "agent-auth-endpoints-reachable": [
    "fail",
    0,
    2
   ],
   "pap-discovery": [
    "na",
    0,
    2
   ],
   "pap-issuer-binding": [
    "na",
    0,
    2
   ],
   "pap-auth-config": [
    "na",
    0,
    2
   ],
   "pap-interfaces": [
    "na",
    0,
    2
   ],
   "pap-endpoint-enforcement": [
    "na",
    0,
    2
   ],
   "pap-cross-protocol": [
    "na",
    0,
    2
   ],
   "mcp-server": [
    "pass",
    6,
    6
   ],
   "mcp-error-handling": [
    "warning",
    1,
    2
   ],
   "mcp-transport-modern": [
    "pass",
    1,
    1
   ],
   "webmcp": [
    "fail",
    0,
    5
   ],
   "rate-limit-headers": [
    "na",
    0,
    2
   ],
   "idempotency-key-support": [
    "na",
    0,
    3
   ],
   "json-error-responses": [
    "fail",
    0,
    4
   ],
   "api-error-model": [
    "na",
    0,
    3
   ],
   "api-versioning-policy": [
    "na",
    0,
    3
   ],
   "pagination-shape": [
    "na",
    0,
    2
   ],
   "async-job-pattern": [
    "na",
    0,
    2
   ],
   "cli-tool": [
    "pass",
    3,
    3
   ],
   "rest-sdk-packages": [
    "warning",
    2,
    3
   ],
   "nlweb-ask": [
    "fail",
    0,
    1
   ],
   "nlweb-streaming": [
    "fail",
    0,
    1
   ],
   "response-schema-coverage": [
    "na",
    0,
    2
   ],
   "mcp-tool-annotations": [
    "warning",
    1,
    2
   ],
   "mcp-server-card": [
    "warning",
    1,
    2
   ],
   "mcp-multi-surface-coverage": [
    "fail",
    0,
    2
   ],
   "sandbox-environment": [
    "warning",
    0,
    2
   ],
   "batch-endpoints": [
    "na",
    0,
    2
   ],
   "mcp-resource-listing": [
    "fail",
    0,
    3
   ],
   "graphql-error-type-definition": [
    "na",
    0,
    3
   ],
   "graphql-versioning-policy": [
    "na",
    0,
    2
   ],
   "graphql-pagination-pattern": [
    "na",
    0,
    2
   ],
   "graphql-async-job-pattern": [
    "na",
    0,
    2
   ],
   "graphql-schema-completeness": [
    "na",
    0,
    3
   ],
   "graphql-batch-mutations": [
    "na",
    0,
    2
   ],
   "agent-friendly-404": [
    "warning",
    1,
    2
   ],
   "ax-document-structure": [
    "na",
    0,
    3
   ],
   "ax-native-controls": [
    "pass",
    3,
    3
   ],
   "ax-accessible-names": [
    "pass",
    2,
    2
   ],
   "ax-form-labeling": [
    "na",
    0,
    2
   ],
   "ax-tree-injection-safe": [
    "pass",
    2,
    2
   ],
   "mcp-app-registry": [
    "na",
    0,
    4
   ],
   "a2ui-support": [
    "na",
    0,
    2
   ],
   "mcp-apps-ui-quality": [
    "na",
    0,
    4
   ],
   "mcp-view-domain": [
    "na",
    0,
    4
   ],
   "mcp-view-csp": [
    "na",
    0,
    4
   ],
   "api-schema-analysis": [
    "fail",
    0,
    2
   ],
   "function-calling-compat": [
    "fail",
    0,
    2
   ],
   "mcp-resource-quality": [
    "na",
    0,
    3
   ],
   "mpp-support": [
    "warning",
    0,
    2
   ],
   "x402-support": [
    "na",
    0,
    2
   ],
   "ucp-support": [
    "na",
    0,
    3
   ],
   "acp-support": [
    "na",
    0,
    3
   ],
   "acp-delegate-payment": [
    "na",
    0,
    3
   ],
   "ap2-support": [
    "na",
    0,
    3
   ]
  },
  "flagged": [
   {
    "id": "openapi-spec",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 7,
    "tier": "required",
    "est": 3.8,
    "detail": "No OpenAPI/Swagger specification found"
   },
   {
    "id": "scoped-permissions",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 5,
    "tier": "recommended",
    "est": 3.1,
    "detail": "No declared OAuth scopes, security schemes, or scoped-permission documentation found"
   },
   {
    "id": "webmcp",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 5,
    "tier": "required",
    "est": 3.1,
    "detail": "No WebMCP support detected - no tool-attribute forms and no document.modelContext / navigator.modelContext usage found (scanned 8 of 43 same-origin script bundle(s) for modelContext registrations)"
   },
   {
    "id": "json-error-responses",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 4,
    "tier": "required",
    "est": 2.5,
    "detail": "API does not return JSON error responses (or no API detected)"
   },
   {
    "id": "public-api",
    "layer": "usability",
    "status": "warning",
    "score": 3,
    "max": 7,
    "tier": "required",
    "est": 2.5,
    "detail": "API described in documentation at https://docs.docker.com but no machine-verifiable API surface confirmed. Best-of-protocols score: 3/7."
   },
   {
    "id": "mcp-resource-listing",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": 1.9,
    "detail": "MCP server advertises resources capability but resources/list returned none"
   },
   {
    "id": "agent-instruction",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "required",
    "est": 1.6,
    "detail": "No agent instruction file with when-to-use guidance found"
   },
   {
    "id": "json-ld",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 4,
    "tier": "required",
    "est": 1.6,
    "detail": "JSON-LD found (1 block(s)) but no identity type - use SoftwareApplication, Product, Organization, Person, or Article so agents can tell what this site is"
   },
   {
    "id": "ard-catalog",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 1.5,
    "detail": "No /.well-known/ard.json (and no legacy /.well-known/ai-catalog.json)"
   },
   {
    "id": "mcp-registry-listed",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 1.5,
    "detail": "No bi-directionally verified MCP registry entry found. To pass, either publish the server from a package whose homepage, repository or maintainer email names your domain, get a verified Smithery listing with non-zero usage,"
   },
   {
    "id": "api-schema-analysis",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.3,
    "detail": "No API schema detected"
   },
   {
    "id": "function-calling-compat",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.3,
    "detail": "No API spec found - function calling requires discoverable endpoints"
   },
   {
    "id": "agent-discovery-file",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 1.1,
    "detail": "No agent discovery file found"
   },
   {
    "id": "org-schema-completeness",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.1,
    "detail": "No Organization type found in JSON-LD"
   },
   {
    "id": "schema-type-breadth",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.1,
    "detail": "No extended schema types found - AI can only answer basic questions about this entity"
   },
   {
    "id": "agent-auth-discovery-metadata",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": 0.7,
    "detail": "Neither /.well-known/oauth-protected-resource nor /.well-known/oauth-authorization-server found. Probed: docker.com, api.docker.com."
   },
   {
    "id": "agent-friendly-404",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "The nonexistent path https://docker.com/__ora-404-probe-d7q0q44i correctly returns HTTP 404. Partial credit: no Markdown error body was detected."
   },
   {
    "id": "onboarding-friction",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "Onboarding signals described but not verified live: free tier available, sandbox/test environment"
   },
   {
    "id": "rest-sdk-packages",
    "layer": "usability",
    "status": "warning",
    "score": 2,
    "max": 3,
    "tier": "recommended",
    "est": 0.6,
    "detail": "SDK packages found in npm, pypi"
   },
   {
    "id": "agent-auth-endpoints-reachable",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "No agent_auth endpoint URIs found in AS metadata or /auth.md prose; nothing to probe"
   },
   {
    "id": "auth-md-exists",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.5,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "auth-md-structure",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "content-no-js",
    "layer": "accessibility",
    "status": "warning",
    "score": 2,
    "max": 3,
    "tier": "required",
    "est": 0.5,
    "detail": "4009 chars with H1, but heading hierarchy skips H1 to H4; 4.2% content ratio is below the 5% target"
   },
   {
    "id": "mcp-multi-surface-coverage",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "You run an MCP server for your documentation, but not one for your product. This bonus needs two MCP servers: one for your product so agents can take actions,"
   },
   {
    "id": "mcp-param-schemas",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "Most tools on docs MCP lack parameter schemas (0/1)"
   },
   {
    "id": "oauth-protected-resource",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.5,
    "detail": "No /.well-known/oauth-protected-resource found (RFC 9728)"
   },
   {
    "id": "sandbox-environment",
    "layer": "usability",
    "status": "warning",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "Sandbox/test environment mentioned at https://docs.docker.com/ai/sandboxes-api/ but no sandbox surface verified"
   },
   {
    "id": "a2a-agent-card",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.3,
    "detail": "No A2A agent card found at /.well-known/agent-card.json"
   },
   {
    "id": "api-catalog-rfc9727",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.3,
    "detail": "No /.well-known/api-catalog found (RFC 9727)"
   },
   {
    "id": "chatgpt-app-listed",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.3,
    "detail": "Not found in ChatGPT app directory"
   },
   {
    "id": "agent-auth-www-authenticate",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.2,
    "detail": "No 401 with WWW-Authenticate: Bearer resource_metadata=... found. Probed [https://docker.com/api, https://docker.com/api/v1, https://docker.com/v1, https://docker.com/v2, https://docker.com/agent/identity, https://docker.com/agent/auth,"
   },
   {
    "id": "markdown-negotiation-vary",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.2,
    "detail": "Homepage https://docker.com does not meet the Markdown negotiation requirements: Accept: text/markdown returned text/html; charset=utf-8; Vary header missing Accept (got \"accept-encoding, x-language-locale, cookie, cookie\")"
   },
   {
    "id": "mcp-error-handling",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.2,
    "detail": "docs MCP returns error for invalid tool call but missing structured code or message"
   },
   {
    "id": "mcp-server-card",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.2,
    "detail": "MCP server card found at https://docs.docker.com/.well-known/mcp/server-card.json but missing fields: name, description, version"
   },
   {
    "id": "mcp-tool-annotations",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.2,
    "detail": "docs MCP: no tools carry annotations - read-only is implicit but explicit is better for agent ergonomics"
   },
   {
    "id": "agent-mode-view",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "?mode=agent returns same content as homepage (no dedicated agent view)"
   },
   {
    "id": "agent-plugins-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No Agent Plugins manifest (plugin.json) found in discovered repos"
   },
   {
    "id": "agent-ua-markdown",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No probed bot User-Agent (GPTBot, ClaudeBot, ChatGPT-User, PerplexityBot, Google-Extended, Applebot-Extended, ora-agent, DeepSeekBot) receives markdown when requesting HTML."
   },
   {
    "id": "markdown-link-alternate",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No sampled page advertises a markdown alternate. Add <link rel=\"alternate\" type=\"text/markdown\" href=\"...\"> (or the equivalent Link response header) pointing at a markdown twin of the page."
   },
   {
    "id": "markdown-negotiation",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Missing markdown content negotiation. Homepage returned text/html when probed with Accept: text/markdown (expected text/markdown), and none of the well-known root paths (/llms.md, /auth.md, /agents.md, /developers.md, /api.md, /index.md,"
   },
   {
    "id": "markdown-url-fallback",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "Homepage does not support the .md suffix. Probed https://docker.com/index.md and it did not return markdown (expected text/markdown content-type or a heading-led non-HTML body)."
   },
   {
    "id": "modular-llms-txt",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No section-level llms.txt files found (optional)"
   },
   {
    "id": "mpp-support",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": null,
    "detail": "MPP documented (AI analysis: MCP endpoint for structured agent access: https://mcp-docs.docker.com/mcp); no live protocol surface found"
   },
   {
    "id": "nlweb-ask",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No NLWeb-conformant /ask endpoint found via GET or POST"
   },
   {
    "id": "nlweb-schema-feeds",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No schemamap: directive in robots.txt"
   },
   {
    "id": "nlweb-streaming",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "NLWeb /ask does not support SSE streaming via GET or POST"
   },
   {
    "id": "pricing-md",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No pricing.md found - agents need machine-readable pricing to compare products and make purchase recommendations"
   },
   {
    "id": "registry-branding",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No registry branding (name, icon, description) found"
   },
   {
    "id": "web-bot-auth-directory",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No /.well-known/http-message-signatures-directory found"
   }
  ],
  "seen": {
   "brand-search-accuracy": "docker.com ranks #1 for \"Docker AI agent platform\"",
   "wikipedia-presence": "Wikipedia \"Docker (software)\" and Wikidata Q15206305 both verified - domain confirmed on both sources",
   "robots-ai-policy-quality": "Training: 2/2. Search: 3/3 page/crawler pairs permitted. No applicable crawl or usage restriction found for 5 training and search crawlers (gptbot, claudebot, oai-searchbot, claude-searchbot,",
   "sitemap": "Valid sitemap found at https://www.docker.com/sitemap_index.xml with multiple sitemaps entries",
   "content-no-js": "4009 chars with H1, but heading hierarchy skips H1 to H4; 4.2% content ratio is below the 5% target",
   "bot-detection": "Site accessible to 6 AI agent user-agents",
   "agent-discovery-file": "No agent discovery file found",
   "a2a-agent-card": "No A2A agent card found at /.well-known/agent-card.json",
   "mcp-well-known-discovery": "MCP server referenced in llms.txt",
   "robots-agent-user-policy": "No applicable crawl or usage restriction found for 3 user-triggered agents (chatgpt-user, claude-user, perplexity-user) on 1 public page: https://docker.com/. Declared policy only;",
   "llms-txt-exists": "Found the llms.txt at https://docs.docker.com/llms.txt.",
   "llms-txt-formatting": "The llms.txt is well-formatted: 59 lines with markdown links, 5,584 characters in total.",
   "json-ld": "JSON-LD found (1 block(s)) but no identity type - use SoftwareApplication, Product, Organization, Person, or Article so agents can tell what this site is",
   "public-api-docs": "Documentation site found at https://docs.docker.com",
   "metadata-completeness": "All metadata signals present: canonical URL, lang=\"en-US\", og:image, og:type",
   "page-token-budget": "All 6 measured pages fit an agent context budget (largest ~3K tokens)",
   "docs-auth-gate": "All 5 sampled pages are publicly readable (5 with substantive content)",
   "openapi-spec": "No OpenAPI/Swagger specification found",
   "developer-portal": "Developer portal found at /developers",
   "markdown-negotiation": "Missing markdown content negotiation. Homepage returned text/html when probed with Accept: text/markdown (expected text/markdown), and none of the well-known root paths (/llms.md, /auth.md, /agents.md, /developers.md,",
   "agent-ua-markdown": "No probed bot User-Agent (GPTBot, ClaudeBot, ChatGPT-User, PerplexityBot, Google-Extended, Applebot-Extended, ora-agent, DeepSeekBot) receives markdown when requesting HTML.",
   "agent-crawler-reachability": "Reachable to all major AI crawlers - ChatGPT-User: reachable, ClaudeBot: reachable, Google-Extended: reachable, ora-agent: reachable, DeepSeekBot: reachable",
   "public-api": "API described in documentation at https://docs.docker.com but no machine-verifiable API surface confirmed. Best-of-protocols score: 3/7.",
   "oauth-support": "OpenID Connect discovery endpoint found at https://login.docker.com",
   "mcp-server": "MCP server connected via Streamable HTTP - llms-txt v1.26.0 (protocol 2025-11-25)",
   "webmcp": "No WebMCP support detected - no tool-attribute forms and no document.modelContext / navigator.modelContext usage found (scanned 8 of 43 same-origin script bundle(s) for modelContext registrations)",
   "cli-tool": "CLI package found on npm: docker",
   "rest-sdk-packages": "SDK packages found in npm, pypi",
   "nlweb-ask": "No NLWeb-conformant /ask endpoint found via GET or POST",
   "mpp-support": "MPP documented (AI analysis: MCP endpoint for structured agent access: https://mcp-docs.docker.com/mcp); no live protocol surface found",
   "x402-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "ucp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "acp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "ap2-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites"
  }
 },
 {
  "slug": "elastic",
  "name": "Elastic",
  "domain": "elastic.co",
  "finalUrl": "https://www.elastic.co/",
  "read": "2026-11-09",
  "scannedAt": "2026-10-22T18:57:41.891+00:00",
  "score": 59,
  "max": 100,
  "grade": "C",
  "category": "Infrastructure",
  "scoringVersion": null,
  "rulesUrl": null,
  "summary": "Elastic offers strong developer resource discovery and SDK packages, but lacks an OpenAPI specification.",
  "layers": [
   {
    "id": "discovery",
    "name": "Discovery",
    "score": 10,
    "max": 13
   },
   {
    "id": "accessibility",
    "name": "Access",
    "score": 31,
    "max": 55
   },
   {
    "id": "usability",
    "name": "Usability",
    "score": 31,
    "max": 60
   },
   {
    "id": "payments",
    "name": "Payments",
    "score": 0,
    "max": 0
   }
  ],
  "checks": {
   "ard-catalog": [
    "fail",
    0,
    1
   ],
   "ai-catalog-published": [
    "na",
    0,
    1
   ],
   "ard-entries-valid": [
    "na",
    0,
    2
   ],
   "ard-trust-manifest": [
    "na",
    0,
    2
   ],
   "agentic-search-usecase": [
    "na",
    0,
    6
   ],
   "agentic-search-specific": [
    "pass",
    3,
    3
   ],
   "brand-search-accuracy": [
    "warning",
    1,
    3
   ],
   "wikipedia-presence": [
    "warning",
    2,
    4
   ],
   "robots-ai-policy-quality": [
    "pass",
    2,
    2
   ],
   "mcp-registry-listed": [
    "na",
    0,
    1
   ],
   "npm-sdk-package": [
    "pass",
    1,
    1
   ],
   "agent-rules-repo": [
    "pass",
    1,
    1
   ],
   "agent-plugins-repo": [
    "fail",
    0,
    1
   ],
   "registry-branding": [
    "na",
    0,
    2
   ],
   "chatgpt-app-listed": [
    "fail",
    0,
    2
   ],
   "noindex-directives": [
    "pass",
    1,
    1
   ],
   "sitemap": [
    "pass",
    2,
    2
   ],
   "content-no-js": [
    "warning",
    2,
    3
   ],
   "bot-detection": [
    "pass",
    2,
    2
   ],
   "agent-discovery-file": [
    "fail",
    0,
    2
   ],
   "agent-skills-index-v2": [
    "na",
    0,
    2
   ],
   "a2a-agent-card": [
    "fail",
    0,
    2
   ],
   "skills-sh-listed": [
    "fail",
    0,
    1
   ],
   "pricing-md": [
    "fail",
    0,
    2
   ],
   "nlweb-schema-feeds": [
    "fail",
    0,
    1
   ],
   "mcp-well-known-discovery": [
    "fail",
    0,
    2
   ],
   "agent-mode-view": [
    "fail",
    0,
    2
   ],
   "link-headers-discovery": [
    "fail",
    0,
    1
   ],
   "markdown-url-fallback": [
    "fail",
    0,
    2
   ],
   "modular-llms-txt": [
    "warning",
    0,
    1
   ],
   "sitemap-lastmod": [
    "pass",
    1,
    1
   ],
   "robots-agent-user-policy": [
    "pass",
    2,
    2
   ],
   "llms-txt-exists": [
    "fail",
    0,
    1
   ],
   "llms-txt-formatting": [
    "fail",
    0,
    2
   ],
   "json-ld": [
    "warning",
    1,
    4
   ],
   "pricing-info": [
    "pass",
    3,
    3
   ],
   "public-api-docs": [
    "pass",
    3,
    3
   ],
   "agent-instruction": [
    "warning",
    2,
    3
   ],
   "skills-sh-quality": [
    "fail",
    0,
    2
   ],
   "json-ld-entity-linking": [
    "fail",
    0,
    2
   ],
   "metadata-completeness": [
    "warning",
    1,
    2
   ],
   "org-schema-completeness": [
    "fail",
    0,
    2
   ],
   "schema-type-breadth": [
    "fail",
    0,
    2
   ],
   "trust-anchors": [
    "pass",
    2,
    2
   ],
   "llms-txt-links-resolve": [
    "na",
    0,
    2
   ],
   "markdown-link-alternate": [
    "fail",
    0,
    1
   ],
   "markdown-frontmatter": [
    "na",
    0,
    1
   ],
   "redirect-hygiene": [
    "pass",
    1,
    1
   ],
   "page-token-budget": [
    "pass",
    1,
    1
   ],
   "code-fence-validity": [
    "na",
    0,
    1
   ],
   "docs-auth-gate": [
    "na",
    0,
    2
   ],
   "openapi-spec": [
    "fail",
    0,
    7
   ],
   "developer-portal": [
    "pass",
    6,
    6
   ],
   "api-catalog-rfc9727": [
    "fail",
    0,
    2
   ],
   "markdown-negotiation": [
    "fail",
    0,
    1
   ],
   "markdown-negotiation-vary": [
    "fail",
    0,
    1
   ],
   "agent-ua-markdown": [
    "fail",
    0,
    1
   ],
   "agent-crawler-reachability": [
    "pass",
    2,
    2
   ],
   "mcp-tool-descriptions": [
    "na",
    0,
    3
   ],
   "mcp-param-schemas": [
    "na",
    0,
    2
   ],
   "mcp-server-identity": [
    "na",
    0,
    1
   ],
   "mcp-tool-listing": [
    "na",
    0,
    3
   ],
   "mcp-tool-naming": [
    "na",
    0,
    2
   ],
   "public-api": [
    "pass",
    7,
    7
   ],
   "oauth-support": [
    "pass",
    5,
    5
   ],
   "scoped-permissions": [
    "fail",
    0,
    5
   ],
   "mcp-auth-mechanism": [
    "na",
    0,
    2
   ],
   "mcp-oauth-metadata": [
    "na",
    0,
    2
   ],
   "mcp-pkce-s256": [
    "na",
    0,
    2
   ],
   "onboarding-friction": [
    "warning",
    1,
    2
   ],
   "web-bot-auth-directory": [
    "fail",
    0,
    2
   ],
   "oauth-protected-resource": [
    "fail",
    0,
    2
   ],
   "auth-md-exists": [
    "fail",
    0,
    2
   ],
   "auth-md-structure": [
    "fail",
    0,
    2
   ],
   "auth-md-walkthrough-simulation": [
    "na",
    0,
    2
   ],
   "agent-auth-discovery-metadata": [
    "fail",
    0,
    3
   ],
   "agent-auth-www-authenticate": [
    "fail",
    0,
    1
   ],
   "agent-auth-endpoints-reachable": [
    "fail",
    0,
    2
   ],
   "pap-discovery": [
    "na",
    0,
    2
   ],
   "pap-issuer-binding": [
    "na",
    0,
    2
   ],
   "pap-auth-config": [
    "na",
    0,
    2
   ],
   "pap-interfaces": [
    "na",
    0,
    2
   ],
   "pap-endpoint-enforcement": [
    "na",
    0,
    2
   ],
   "pap-cross-protocol": [
    "na",
    0,
    2
   ],
   "mcp-server": [
    "warning",
    2,
    6
   ],
   "mcp-error-handling": [
    "na",
    0,
    2
   ],
   "mcp-transport-modern": [
    "na",
    0,
    1
   ],
   "webmcp": [
    "fail",
    0,
    5
   ],
   "rate-limit-headers": [
    "na",
    0,
    2
   ],
   "idempotency-key-support": [
    "na",
    0,
    3
   ],
   "json-error-responses": [
    "fail",
    0,
    4
   ],
   "api-error-model": [
    "na",
    0,
    3
   ],
   "api-versioning-policy": [
    "na",
    0,
    3
   ],
   "pagination-shape": [
    "na",
    0,
    2
   ],
   "async-job-pattern": [
    "na",
    0,
    2
   ],
   "cli-tool": [
    "pass",
    3,
    3
   ],
   "rest-sdk-packages": [
    "warning",
    2,
    3
   ],
   "nlweb-ask": [
    "fail",
    0,
    1
   ],
   "nlweb-streaming": [
    "fail",
    0,
    1
   ],
   "response-schema-coverage": [
    "na",
    0,
    2
   ],
   "mcp-tool-annotations": [
    "na",
    0,
    2
   ],
   "mcp-server-card": [
    "fail",
    0,
    2
   ],
   "mcp-multi-surface-coverage": [
    "fail",
    0,
    2
   ],
   "sandbox-environment": [
    "fail",
    0,
    2
   ],
   "batch-endpoints": [
    "na",
    0,
    2
   ],
   "mcp-resource-listing": [
    "na",
    0,
    3
   ],
   "graphql-error-type-definition": [
    "na",
    0,
    3
   ],
   "graphql-versioning-policy": [
    "na",
    0,
    2
   ],
   "graphql-pagination-pattern": [
    "na",
    0,
    2
   ],
   "graphql-async-job-pattern": [
    "na",
    0,
    2
   ],
   "graphql-schema-completeness": [
    "na",
    0,
    3
   ],
   "graphql-batch-mutations": [
    "na",
    0,
    2
   ],
   "agent-friendly-404": [
    "warning",
    1,
    2
   ],
   "ax-document-structure": [
    "pass",
    3,
    3
   ],
   "ax-native-controls": [
    "pass",
    3,
    3
   ],
   "ax-accessible-names": [
    "pass",
    2,
    2
   ],
   "ax-form-labeling": [
    "na",
    0,
    2
   ],
   "ax-tree-injection-safe": [
    "pass",
    2,
    2
   ],
   "mcp-app-registry": [
    "fail",
    0,
    4
   ],
   "a2ui-support": [
    "fail",
    0,
    2
   ],
   "mcp-apps-ui-quality": [
    "na",
    0,
    4
   ],
   "mcp-view-domain": [
    "na",
    0,
    4
   ],
   "mcp-view-csp": [
    "na",
    0,
    4
   ],
   "api-schema-analysis": [
    "fail",
    0,
    2
   ],
   "function-calling-compat": [
    "fail",
    0,
    2
   ],
   "mcp-resource-quality": [
    "na",
    0,
    3
   ],
   "mpp-support": [
    "na",
    0,
    2
   ],
   "x402-support": [
    "na",
    0,
    2
   ],
   "ucp-support": [
    "na",
    0,
    3
   ],
   "acp-support": [
    "na",
    0,
    3
   ],
   "acp-delegate-payment": [
    "na",
    0,
    3
   ],
   "ap2-support": [
    "na",
    0,
    3
   ]
  },
  "flagged": [
   {
    "id": "openapi-spec",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 7,
    "tier": "required",
    "est": 4.2,
    "detail": "No OpenAPI/Swagger specification found"
   },
   {
    "id": "scoped-permissions",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 5,
    "tier": "recommended",
    "est": 3.7,
    "detail": "No declared OAuth scopes, security schemes, or scoped-permission documentation found"
   },
   {
    "id": "webmcp",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 5,
    "tier": "required",
    "est": 3.7,
    "detail": "No WebMCP support detected - no document.modelContext / navigator.modelContext usage found (scanned 8 of 14 same-origin script bundle(s) for modelContext registrations)"
   },
   {
    "id": "brand-search-accuracy",
    "layer": "discovery",
    "status": "warning",
    "score": 1,
    "max": 3,
    "tier": "required",
    "est": 3.4,
    "detail": "elastic.co ranks #9 for \"Elastic search database\""
   },
   {
    "id": "json-error-responses",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 4,
    "tier": "required",
    "est": 3,
    "detail": "API does not return JSON error responses (or no API detected)"
   },
   {
    "id": "mcp-app-registry",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 4,
    "tier": "recommended",
    "est": 3,
    "detail": "No MCP Apps support detected - this product has an in-agent UI surface but exposes no ui:// resources or tool UI metadata for agents to render."
   },
   {
    "id": "mcp-server",
    "layer": "usability",
    "status": "warning",
    "score": 2,
    "max": 6,
    "tier": "required",
    "est": 3,
    "detail": "MCP mentioned at https://www.elastic.co/docs/explore-analyze/ai-features/agent-builder/mcp-server-api-keys but no standard manifest endpoint found"
   },
   {
    "id": "json-ld",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 4,
    "tier": "required",
    "est": 1.8,
    "detail": "JSON-LD found (1 block(s)) but no identity type - use SoftwareApplication, Product, Organization, Person, or Article so agents can tell what this site is"
   },
   {
    "id": "ard-catalog",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 1.7,
    "detail": "No /.well-known/ard.json, no same-site rel=\"ard\" link, and no legacy /.well-known/ai-catalog.json"
   },
   {
    "id": "api-schema-analysis",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.5,
    "detail": "No API schema detected"
   },
   {
    "id": "function-calling-compat",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.5,
    "detail": "No API spec found - function calling requires discoverable endpoints"
   },
   {
    "id": "agent-discovery-file",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 1.2,
    "detail": "No agent discovery file found"
   },
   {
    "id": "json-ld-entity-linking",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.2,
    "detail": "No sameAs entity linking in JSON-LD - agents cannot disambiguate your brand"
   },
   {
    "id": "llms-txt-formatting",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.2,
    "detail": "No llms.txt found to evaluate quality"
   },
   {
    "id": "org-schema-completeness",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.2,
    "detail": "No Organization type found in JSON-LD"
   },
   {
    "id": "schema-type-breadth",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.2,
    "detail": "No extended schema types found - AI can only answer basic questions about this entity"
   },
   {
    "id": "agent-auth-discovery-metadata",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": 1,
    "detail": "Neither /.well-known/oauth-protected-resource nor /.well-known/oauth-authorization-server found. Probed: elastic.co, api.elastic.co."
   },
   {
    "id": "agent-auth-endpoints-reachable",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.7,
    "detail": "No agent_auth endpoint URIs found in AS metadata or /auth.md prose; nothing to probe"
   },
   {
    "id": "agent-friendly-404",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.7,
    "detail": "The nonexistent path https://elastic.co/__ora-404-probe-8xbv9awc correctly returns HTTP 404. Partial credit: no Markdown error body was detected."
   },
   {
    "id": "auth-md-exists",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.7,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "auth-md-structure",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.7,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "chatgpt-app-listed",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.7,
    "detail": "Not found in ChatGPT app directory"
   },
   {
    "id": "mcp-multi-surface-coverage",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.7,
    "detail": "This bonus needs two MCP servers: one for your product so agents can take actions, and a separate one for your documentation so agents can answer questions from your docs."
   },
   {
    "id": "mcp-server-card",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.7,
    "detail": "No MCP server card found (checked /.well-known/mcp/server-card.json, the site's ai-catalog.json, servers[].card in mcp.json, and <server>/server-card)"
   },
   {
    "id": "oauth-protected-resource",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.7,
    "detail": "No /.well-known/oauth-protected-resource found (RFC 9728)"
   },
   {
    "id": "onboarding-friction",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.7,
    "detail": "Onboarding signals described but not verified live: free tier available, self-serve key generation, sandbox/test environment, zero-auth access"
   },
   {
    "id": "rest-sdk-packages",
    "layer": "usability",
    "status": "warning",
    "score": 2,
    "max": 3,
    "tier": "recommended",
    "est": 0.7,
    "detail": "SDK packages found in npm, rubygems"
   },
   {
    "id": "sandbox-environment",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.7,
    "detail": "No sandbox or test environment found"
   },
   {
    "id": "wikipedia-presence",
    "layer": "discovery",
    "status": "warning",
    "score": 2,
    "max": 4,
    "tier": "recommended",
    "est": 0.7,
    "detail": "Wikidata Q22074922 (Elastic) verified - draft a Wikipedia page with cited references to complete knowledge graph coverage"
   },
   {
    "id": "agent-instruction",
    "layer": "accessibility",
    "status": "warning",
    "score": 2,
    "max": 3,
    "tier": "required",
    "est": 0.6,
    "detail": "When-to-use guidance found at https://www.elastic.co"
   },
   {
    "id": "content-no-js",
    "layer": "accessibility",
    "status": "warning",
    "score": 2,
    "max": 3,
    "tier": "required",
    "est": 0.6,
    "detail": "10025 chars with H1, but 1.9% content ratio is below the 5% target"
   },
   {
    "id": "llms-txt-exists",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 0.6,
    "detail": "No llms.txt found at /llms.txt or /.well-known/llms.txt."
   },
   {
    "id": "metadata-completeness",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "required",
    "est": 0.6,
    "detail": "3/4 metadata signals present - missing: og:type"
   },
   {
    "id": "a2a-agent-card",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "No A2A agent card found at /.well-known/agent-card.json"
   },
   {
    "id": "api-catalog-rfc9727",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.5,
    "detail": "No /.well-known/api-catalog found (RFC 9727)"
   },
   {
    "id": "mcp-well-known-discovery",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "No MCP server URL discovered"
   },
   {
    "id": "agent-auth-www-authenticate",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.4,
    "detail": "No 401 with WWW-Authenticate: Bearer resource_metadata=... found. Probed [https://elastic.co/api, https://elastic.co/api/v1, https://elastic.co/v1, https://elastic.co/v2, https://elastic.co/agent/identity, https://elastic.co/agent/auth,"
   },
   {
    "id": "link-headers-discovery",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 0.3,
    "detail": "No HTTP Link response headers (RFC 8288) found"
   },
   {
    "id": "markdown-negotiation-vary",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.3,
    "detail": "Homepage https://elastic.co does not meet the Markdown negotiation requirements: Accept: text/markdown returned text/html; charset=utf-8"
   },
   {
    "id": "a2ui-support",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No A2UI or generative UI support detected"
   },
   {
    "id": "agent-mode-view",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "?mode=agent returns same content as homepage (no dedicated agent view)"
   },
   {
    "id": "agent-plugins-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No Agent Plugins manifest (plugin.json) found in discovered repos"
   },
   {
    "id": "agent-ua-markdown",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly."
   },
   {
    "id": "markdown-link-alternate",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No sampled page advertises a markdown alternate. Add <link rel=\"alternate\" type=\"text/markdown\" href=\"...\"> (or the equivalent Link response header) pointing at a markdown twin of the page."
   },
   {
    "id": "markdown-negotiation",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Missing markdown content negotiation. Homepage returned text/html when probed with Accept: text/markdown (expected text/markdown), and none of the well-known root paths (/llms.md, /auth.md, /agents.md, /developers.md, /api.md, /index.md,"
   },
   {
    "id": "markdown-url-fallback",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "Homepage does not support the .md suffix. Probed https://elastic.co/index.md and it did not return markdown (expected text/markdown content-type or a heading-led non-HTML body)."
   },
   {
    "id": "modular-llms-txt",
    "layer": "accessibility",
    "status": "warning",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Only 1 section-level llms.txt found (docs). Add one for another section and link it from your root llms.txt to earn this bonus point."
   },
   {
    "id": "nlweb-ask",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No NLWeb-conformant /ask endpoint found via GET or POST"
   },
   {
    "id": "nlweb-schema-feeds",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No schemamap: directive in robots.txt"
   },
   {
    "id": "nlweb-streaming",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "NLWeb /ask does not support SSE streaming via GET or POST"
   },
   {
    "id": "pricing-md",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No pricing.md found - agents need machine-readable pricing to compare products and make purchase recommendations"
   },
   {
    "id": "skills-sh-listed",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No official skills self-published on skills.sh"
   },
   {
    "id": "skills-sh-quality",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No official skills on skills.sh to evaluate"
   },
   {
    "id": "web-bot-auth-directory",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No /.well-known/http-message-signatures-directory found"
   }
  ],
  "seen": {
   "brand-search-accuracy": "elastic.co ranks #9 for \"Elastic search database\"",
   "wikipedia-presence": "Wikidata Q22074922 (Elastic) verified - draft a Wikipedia page with cited references to complete knowledge graph coverage",
   "robots-ai-policy-quality": "AI search crawlers: allowed in 3 of 3 checks (3 crawlers on 1 page). AI training crawlers: allowed in 2 of 2 checks (2 crawlers on 1 page), not scored.",
   "noindex-directives": "No noindex on the homepage: no robots, googlebot or bingbot meta tag and no X-Robots-Tag header hides it from search.",
   "sitemap": "Valid sitemap found at https://www.elastic.co/sitemap.xml with 13822 entries",
   "content-no-js": "10025 chars with H1, but 1.9% content ratio is below the 5% target",
   "bot-detection": "Site accessible to 4 agent user-agents (ChatGPT-User, OAI-SearchBot, Claude-User, PerplexityBot).",
   "agent-discovery-file": "No agent discovery file found",
   "a2a-agent-card": "No A2A agent card found at /.well-known/agent-card.json",
   "mcp-well-known-discovery": "No MCP server URL discovered",
   "robots-agent-user-policy": "No applicable crawl or usage restriction found for 3 user-triggered agents (chatgpt-user, claude-user, perplexity-user) on 1 public page: https://elastic.co/. Declared policy only;",
   "llms-txt-exists": "No llms.txt found at /llms.txt or /.well-known/llms.txt.",
   "llms-txt-formatting": "No llms.txt found to evaluate quality",
   "json-ld": "JSON-LD found (1 block(s)) but no identity type - use SoftwareApplication, Product, Organization, Person, or Article so agents can tell what this site is",
   "public-api-docs": "Documentation site found at https://www.elastic.co",
   "metadata-completeness": "3/4 metadata signals present - missing: og:type",
   "page-token-budget": "All 1 measured page fit an agent context budget (largest ~3K tokens)",
   "docs-auth-gate": "No content pages sampled",
   "openapi-spec": "No OpenAPI/Swagger specification found",
   "developer-portal": "Developer portal found at /docs",
   "markdown-negotiation": "Missing markdown content negotiation. Homepage returned text/html when probed with Accept: text/markdown (expected text/markdown), and none of the well-known root paths (/llms.md, /auth.md, /agents.md, /developers.md,",
   "agent-ua-markdown": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly.",
   "agent-crawler-reachability": "Reachable to every agent we tested - ChatGPT-User: reachable, OAI-SearchBot: reachable, Claude-User: reachable, PerplexityBot: reachable",
   "public-api": "REST API documentation found at /docs/api. Best-of-protocols score: 7/7.",
   "oauth-support": "OpenID Connect discovery endpoint found at https://auth.elastic.co",
   "mcp-server": "MCP mentioned at https://www.elastic.co/docs/explore-analyze/ai-features/agent-builder/mcp-server-api-keys but no standard manifest endpoint found",
   "webmcp": "No WebMCP support detected - no document.modelContext / navigator.modelContext usage found (scanned 8 of 14 same-origin script bundle(s) for modelContext registrations)",
   "cli-tool": "CLI package found on npm: @elastic/cli",
   "rest-sdk-packages": "SDK packages found in npm, rubygems",
   "nlweb-ask": "No NLWeb-conformant /ask endpoint found via GET or POST",
   "mpp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "x402-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "ucp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "acp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "ap2-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites"
  }
 },
 {
  "slug": "figma",
  "name": "Figma",
  "domain": "figma.com",
  "finalUrl": "https://www.figma.com/",
  "read": "2026-11-09",
  "scannedAt": "2026-11-07T01:28:17.674+00:00",
  "score": 73,
  "max": 100,
  "grade": "B",
  "category": "Productivity",
  "scoringVersion": null,
  "rulesUrl": null,
  "summary": "Figma offers a solid npm SDK, ChatGPT app listing, and a clean robots.txt, but lacks a published OpenAPI spec for agents to discover its endpoints.",
  "layers": [
   {
    "id": "discovery",
    "name": "Discovery",
    "score": 14,
    "max": 18
   },
   {
    "id": "accessibility",
    "name": "Access",
    "score": 39,
    "max": 58
   },
   {
    "id": "usability",
    "name": "Usability",
    "score": 53,
    "max": 71
   },
   {
    "id": "payments",
    "name": "Payments",
    "score": 0,
    "max": 0
   }
  ],
  "checks": {
   "ard-catalog": [
    "fail",
    0,
    1
   ],
   "ai-catalog-published": [
    "na",
    0,
    1
   ],
   "ard-entries-valid": [
    "na",
    0,
    2
   ],
   "ard-trust-manifest": [
    "na",
    0,
    2
   ],
   "agentic-search-usecase": [
    "na",
    0,
    6
   ],
   "agentic-search-specific": [
    "warning",
    2,
    3
   ],
   "brand-search-accuracy": [
    "warning",
    2,
    3
   ],
   "wikipedia-presence": [
    "pass",
    4,
    4
   ],
   "robots-ai-policy-quality": [
    "pass",
    2,
    2
   ],
   "mcp-registry-listed": [
    "fail",
    0,
    1
   ],
   "npm-sdk-package": [
    "pass",
    1,
    1
   ],
   "agent-rules-repo": [
    "fail",
    0,
    1
   ],
   "agent-plugins-repo": [
    "fail",
    0,
    1
   ],
   "registry-branding": [
    "fail",
    0,
    2
   ],
   "chatgpt-app-listed": [
    "pass",
    2,
    2
   ],
   "noindex-directives": [
    "pass",
    1,
    1
   ],
   "sitemap": [
    "pass",
    2,
    2
   ],
   "content-no-js": [
    "warning",
    2,
    3
   ],
   "bot-detection": [
    "pass",
    2,
    2
   ],
   "agent-discovery-file": [
    "fail",
    0,
    2
   ],
   "agent-skills-index-v2": [
    "na",
    0,
    2
   ],
   "a2a-agent-card": [
    "fail",
    0,
    2
   ],
   "skills-sh-listed": [
    "pass",
    1,
    1
   ],
   "pricing-md": [
    "fail",
    0,
    2
   ],
   "nlweb-schema-feeds": [
    "fail",
    0,
    1
   ],
   "mcp-well-known-discovery": [
    "warning",
    1,
    2
   ],
   "agent-mode-view": [
    "fail",
    0,
    2
   ],
   "link-headers-discovery": [
    "fail",
    0,
    1
   ],
   "markdown-url-fallback": [
    "fail",
    0,
    2
   ],
   "modular-llms-txt": [
    "fail",
    0,
    1
   ],
   "sitemap-lastmod": [
    "pass",
    1,
    1
   ],
   "robots-agent-user-policy": [
    "pass",
    2,
    2
   ],
   "llms-txt-exists": [
    "pass",
    1,
    1
   ],
   "llms-txt-formatting": [
    "pass",
    2,
    2
   ],
   "json-ld": [
    "warning",
    2,
    4
   ],
   "pricing-info": [
    "pass",
    3,
    3
   ],
   "public-api-docs": [
    "pass",
    3,
    3
   ],
   "agent-instruction": [
    "fail",
    0,
    3
   ],
   "skills-sh-quality": [
    "pass",
    2,
    2
   ],
   "json-ld-entity-linking": [
    "warning",
    1,
    2
   ],
   "metadata-completeness": [
    "pass",
    2,
    2
   ],
   "org-schema-completeness": [
    "warning",
    1,
    2
   ],
   "schema-type-breadth": [
    "fail",
    0,
    2
   ],
   "trust-anchors": [
    "pass",
    2,
    2
   ],
   "llms-txt-links-resolve": [
    "na",
    0,
    2
   ],
   "markdown-link-alternate": [
    "fail",
    0,
    1
   ],
   "markdown-frontmatter": [
    "na",
    0,
    1
   ],
   "redirect-hygiene": [
    "pass",
    1,
    1
   ],
   "page-token-budget": [
    "pass",
    1,
    1
   ],
   "code-fence-validity": [
    "na",
    0,
    1
   ],
   "docs-auth-gate": [
    "pass",
    2,
    2
   ],
   "openapi-spec": [
    "fail",
    0,
    7
   ],
   "developer-portal": [
    "pass",
    6,
    6
   ],
   "api-catalog-rfc9727": [
    "fail",
    0,
    2
   ],
   "markdown-negotiation": [
    "fail",
    0,
    1
   ],
   "markdown-negotiation-vary": [
    "fail",
    0,
    1
   ],
   "agent-ua-markdown": [
    "fail",
    0,
    1
   ],
   "agent-crawler-reachability": [
    "pass",
    2,
    2
   ],
   "mcp-tool-descriptions": [
    "na",
    0,
    3
   ],
   "mcp-param-schemas": [
    "na",
    0,
    2
   ],
   "mcp-server-identity": [
    "na",
    0,
    1
   ],
   "mcp-tool-listing": [
    "na",
    0,
    3
   ],
   "mcp-tool-naming": [
    "na",
    0,
    2
   ],
   "public-api": [
    "pass",
    7,
    7
   ],
   "oauth-support": [
    "pass",
    5,
    5
   ],
   "scoped-permissions": [
    "fail",
    0,
    5
   ],
   "mcp-auth-mechanism": [
    "warning",
    1,
    2
   ],
   "mcp-oauth-metadata": [
    "pass",
    2,
    2
   ],
   "mcp-pkce-s256": [
    "pass",
    2,
    2
   ],
   "onboarding-friction": [
    "pass",
    2,
    2
   ],
   "web-bot-auth-directory": [
    "fail",
    0,
    2
   ],
   "oauth-protected-resource": [
    "pass",
    2,
    2
   ],
   "auth-md-exists": [
    "fail",
    0,
    2
   ],
   "auth-md-structure": [
    "fail",
    0,
    2
   ],
   "auth-md-walkthrough-simulation": [
    "na",
    0,
    2
   ],
   "agent-auth-discovery-metadata": [
    "warning",
    1,
    3
   ],
   "agent-auth-www-authenticate": [
    "fail",
    0,
    1
   ],
   "agent-auth-endpoints-reachable": [
    "fail",
    0,
    2
   ],
   "pap-discovery": [
    "na",
    0,
    2
   ],
   "pap-issuer-binding": [
    "na",
    0,
    2
   ],
   "pap-auth-config": [
    "na",
    0,
    2
   ],
   "pap-interfaces": [
    "na",
    0,
    2
   ],
   "pap-endpoint-enforcement": [
    "na",
    0,
    2
   ],
   "pap-cross-protocol": [
    "na",
    0,
    2
   ],
   "mcp-server": [
    "warning",
    5,
    6
   ],
   "mcp-error-handling": [
    "na",
    0,
    2
   ],
   "mcp-transport-modern": [
    "na",
    0,
    1
   ],
   "webmcp": [
    "fail",
    0,
    5
   ],
   "rate-limit-headers": [
    "na",
    0,
    2
   ],
   "idempotency-key-support": [
    "na",
    0,
    3
   ],
   "json-error-responses": [
    "pass",
    4,
    4
   ],
   "api-error-model": [
    "na",
    0,
    3
   ],
   "api-versioning-policy": [
    "na",
    0,
    3
   ],
   "pagination-shape": [
    "na",
    0,
    2
   ],
   "async-job-pattern": [
    "na",
    0,
    2
   ],
   "cli-tool": [
    "pass",
    3,
    3
   ],
   "rest-sdk-packages": [
    "warning",
    1,
    3
   ],
   "nlweb-ask": [
    "pass",
    1,
    1
   ],
   "nlweb-streaming": [
    "fail",
    0,
    1
   ],
   "response-schema-coverage": [
    "na",
    0,
    2
   ],
   "mcp-tool-annotations": [
    "na",
    0,
    2
   ],
   "mcp-server-card": [
    "fail",
    0,
    2
   ],
   "mcp-multi-surface-coverage": [
    "warning",
    1,
    2
   ],
   "sandbox-environment": [
    "fail",
    0,
    2
   ],
   "batch-endpoints": [
    "na",
    0,
    2
   ],
   "mcp-resource-listing": [
    "na",
    0,
    3
   ],
   "graphql-error-type-definition": [
    "na",
    0,
    3
   ],
   "graphql-versioning-policy": [
    "na",
    0,
    2
   ],
   "graphql-pagination-pattern": [
    "na",
    0,
    2
   ],
   "graphql-async-job-pattern": [
    "na",
    0,
    2
   ],
   "graphql-schema-completeness": [
    "na",
    0,
    3
   ],
   "graphql-batch-mutations": [
    "na",
    0,
    2
   ],
   "agent-friendly-404": [
    "warning",
    1,
    2
   ],
   "ax-document-structure": [
    "pass",
    3,
    3
   ],
   "ax-native-controls": [
    "pass",
    3,
    3
   ],
   "ax-accessible-names": [
    "pass",
    2,
    2
   ],
   "ax-form-labeling": [
    "na",
    0,
    2
   ],
   "ax-tree-injection-safe": [
    "pass",
    2,
    2
   ],
   "mcp-app-registry": [
    "na",
    0,
    4
   ],
   "a2ui-support": [
    "fail",
    0,
    2
   ],
   "mcp-apps-ui-quality": [
    "na",
    0,
    4
   ],
   "mcp-view-domain": [
    "na",
    0,
    4
   ],
   "mcp-view-csp": [
    "na",
    0,
    4
   ],
   "api-schema-analysis": [
    "fail",
    0,
    2
   ],
   "function-calling-compat": [
    "fail",
    0,
    2
   ],
   "mcp-resource-quality": [
    "na",
    0,
    3
   ],
   "mpp-support": [
    "na",
    0,
    2
   ],
   "x402-support": [
    "na",
    0,
    2
   ],
   "ucp-support": [
    "na",
    0,
    3
   ],
   "acp-support": [
    "na",
    0,
    3
   ],
   "acp-delegate-payment": [
    "na",
    0,
    3
   ],
   "ap2-support": [
    "na",
    0,
    3
   ]
  },
  "flagged": [
   {
    "id": "openapi-spec",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 7,
    "tier": "required",
    "est": 4,
    "detail": "No OpenAPI/Swagger specification found"
   },
   {
    "id": "scoped-permissions",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 5,
    "tier": "recommended",
    "est": 3.1,
    "detail": "No declared OAuth scopes, security schemes, or scoped-permission documentation found"
   },
   {
    "id": "webmcp",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 5,
    "tier": "required",
    "est": 3.1,
    "detail": "No WebMCP support detected - no document.modelContext / navigator.modelContext usage found (scanned 28 of 28 same-origin script bundle(s) for modelContext registrations)"
   },
   {
    "id": "agent-instruction",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "required",
    "est": 1.7,
    "detail": "No agent instruction file with when-to-use guidance found"
   },
   {
    "id": "api-schema-analysis",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.3,
    "detail": "No API schema detected"
   },
   {
    "id": "function-calling-compat",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.3,
    "detail": "No API spec found - function calling requires discoverable endpoints"
   },
   {
    "id": "rest-sdk-packages",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 3,
    "tier": "recommended",
    "est": 1.3,
    "detail": "SDK package found only in npm"
   },
   {
    "id": "agentic-search-specific",
    "layer": "discovery",
    "status": "warning",
    "score": 2,
    "max": 3,
    "tier": "recommended",
    "est": 1.2,
    "detail": "In a search for your API docs, your docs came up at #2 (https://developers.figma.com/docs/plugins/api/api-reference). In a search for your MCP server, SDK or CLI, none of the 10 results is your own, although the scan found one on your site"
   },
   {
    "id": "ard-catalog",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 1.2,
    "detail": "No /.well-known/ard.json, no same-site rel=\"ard\" link, and no legacy /.well-known/ai-catalog.json"
   },
   {
    "id": "brand-search-accuracy",
    "layer": "discovery",
    "status": "warning",
    "score": 2,
    "max": 3,
    "tier": "required",
    "est": 1.2,
    "detail": "figma.com ranks #6 for \"Figma\" and appears 4 times in the top 10 (searched your brand name alone: no main product term from your homepage qualified)"
   },
   {
    "id": "mcp-registry-listed",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 1.2,
    "detail": "No verified entry in the official MCP Registry or on Smithery, and no npm or PyPI package of yours that runs as an MCP server. To pass,"
   },
   {
    "id": "agent-discovery-file",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 1.1,
    "detail": "No agent discovery file found"
   },
   {
    "id": "json-ld",
    "layer": "accessibility",
    "status": "warning",
    "score": 2,
    "max": 4,
    "tier": "required",
    "est": 1.1,
    "detail": "JSON-LD Organization found - missing description on this entity"
   },
   {
    "id": "schema-type-breadth",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.1,
    "detail": "No extended schema types found - AI can only answer basic questions about this entity"
   },
   {
    "id": "agent-friendly-404",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "The nonexistent path https://figma.com/__ora-404-probe-vzxmli1k correctly returns HTTP 404. Partial credit: no Markdown error body was detected."
   },
   {
    "id": "content-no-js",
    "layer": "accessibility",
    "status": "warning",
    "score": 2,
    "max": 3,
    "tier": "required",
    "est": 0.6,
    "detail": "Homepage: 1695 chars with H1, but 1.9% content ratio is below the 5% target. No inner pages checked: the 5 sampled pages were skipped (forms, login pages, bot challenges, error pages, non-HTML pages and pages over 1 MB are skipped)."
   },
   {
    "id": "json-ld-entity-linking",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "Entity linking to linkedin.com - add more authority profiles (Wikipedia, Wikidata, LinkedIn, GitHub)"
   },
   {
    "id": "mcp-server",
    "layer": "usability",
    "status": "warning",
    "score": 5,
    "max": 6,
    "tier": "required",
    "est": 0.6,
    "detail": "MCP server detected at https://mcp.figma.com/mcp; it requires authentication. Presence is verified (5/6), but Ora could not inspect its tools or verify access scopes without credentials."
   },
   {
    "id": "org-schema-completeness",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "Organization schema found but missing: address"
   },
   {
    "id": "a2a-agent-card",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.4,
    "detail": "No A2A agent card found at /.well-known/agent-card.json"
   },
   {
    "id": "api-catalog-rfc9727",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.4,
    "detail": "No /.well-known/api-catalog found (RFC 9727)"
   },
   {
    "id": "agent-auth-discovery-metadata",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 3,
    "tier": "recommended",
    "est": 0.3,
    "detail": "PRM + AS metadata both present (PRM discovered at https://mcp.figma.com) (AS metadata fetched from advertised origin https://api.figma.com) but AS metadata has no agent_auth block"
   },
   {
    "id": "agent-auth-endpoints-reachable",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.3,
    "detail": "No agent_auth endpoint URIs found in AS metadata or /auth.md prose; nothing to probe"
   },
   {
    "id": "auth-md-exists",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.3,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "auth-md-structure",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.3,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "mcp-server-card",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.3,
    "detail": "No MCP server card found for https://mcp.figma.com/mcp (checked /.well-known/mcp/server-card.json, the site's ai-catalog.json, servers[].card in mcp.json, and <server>/server-card)"
   },
   {
    "id": "mcp-server-card",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.3,
    "detail": "No MCP server card found for https://help.figma.com/mcp (checked /.well-known/mcp/server-card.json, the site's ai-catalog.json, servers[].card in mcp.json, and <server>/server-card)"
   },
   {
    "id": "sandbox-environment",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.3,
    "detail": "No sandbox or test environment found"
   },
   {
    "id": "agent-auth-www-authenticate",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.2,
    "detail": "No 401 with WWW-Authenticate: Bearer resource_metadata=... found. Probed [https://figma.com/api, https://figma.com/api/v1, https://figma.com/v1, https://figma.com/v2, https://figma.com/agent/identity, https://figma.com/agent/auth,"
   },
   {
    "id": "link-headers-discovery",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 0.2,
    "detail": "No HTTP Link response headers (RFC 8288) found"
   },
   {
    "id": "markdown-negotiation-vary",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.2,
    "detail": "Homepage https://figma.com does not meet the Markdown negotiation requirements: Accept: text/markdown returned text/html; charset=utf-8; Vary header missing Accept (got \"rsc,accept-encoding\")"
   },
   {
    "id": "mcp-auth-mechanism",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.2,
    "detail": "docs MCP is gated behind authentication - this defeats the purpose of a docs MCP for agent discovery"
   },
   {
    "id": "mcp-multi-surface-coverage",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.2,
    "detail": "You run both MCP servers, but the documentation one (https://help.figma.com/mcp) is not reachable. Fix it so agents can use it."
   },
   {
    "id": "mcp-well-known-discovery",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.2,
    "detail": "MCP server at https://mcp.figma.com/mcp - list its server card, hosted on your own domain, in /.well-known/ai-catalog.json so MCP clients can discover it"
   },
   {
    "id": "a2ui-support",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No A2UI or generative UI support detected"
   },
   {
    "id": "agent-mode-view",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "?mode=agent returns same content as homepage (no dedicated agent view)"
   },
   {
    "id": "agent-plugins-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No Agent Plugins manifest (plugin.json) found in discovered repos"
   },
   {
    "id": "agent-rules-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Could not locate a public repo containing agent configs or rules. If our probes missed it, AI coding agents likely will too - link the repo from your homepage or docs so it's discoverable."
   },
   {
    "id": "agent-ua-markdown",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly."
   },
   {
    "id": "markdown-link-alternate",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No sampled page advertises a markdown alternate. Add <link rel=\"alternate\" type=\"text/markdown\" href=\"...\"> (or the equivalent Link response header) pointing at a markdown twin of the page."
   },
   {
    "id": "markdown-negotiation",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Missing markdown content negotiation. Homepage returned text/html when probed with Accept: text/markdown (expected text/markdown), and none of the well-known root paths (/llms.md, /auth.md, /agents.md, /developers.md, /api.md, /index.md,"
   },
   {
    "id": "markdown-url-fallback",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "Homepage does not support the .md suffix. Probed https://figma.com/index.md and it did not return markdown (expected text/markdown content-type or a heading-led non-HTML body)."
   },
   {
    "id": "modular-llms-txt",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No section-level llms.txt found. Tried /docs/llms.txt, /api/llms.txt, /developers/llms.txt, /guides/llms.txt, /reference/llms.txt, /design-explore/llms.txt, /build-ship/llms.txt, /design/llms.txt, /make/llms.txt, /dev-mode/llms.txt."
   },
   {
    "id": "nlweb-schema-feeds",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No schemamap: directive in robots.txt"
   },
   {
    "id": "nlweb-streaming",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "NLWeb /ask requires authentication - cannot verify streaming"
   },
   {
    "id": "pricing-md",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No pricing.md found - agents need machine-readable pricing to compare products and make purchase recommendations"
   },
   {
    "id": "registry-branding",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No registry branding (name, icon, description) found"
   },
   {
    "id": "web-bot-auth-directory",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No /.well-known/http-message-signatures-directory found"
   }
  ],
  "seen": {
   "brand-search-accuracy": "figma.com ranks #6 for \"Figma\" and appears 4 times in the top 10 (searched your brand name alone: no main product term from your homepage qualified)",
   "wikipedia-presence": "Wikipedia \"Figma\" and Wikidata Q96186334 both verified - domain confirmed on both sources",
   "robots-ai-policy-quality": "AI search crawlers: allowed in 3 of 3 checks (3 crawlers on 1 page). AI training crawlers: allowed in 0 of 2 checks (2 crawlers on 1 page), not scored.",
   "noindex-directives": "No noindex on the homepage: no robots, googlebot or bingbot meta tag and no X-Robots-Tag header hides it from search.",
   "sitemap": "Valid sitemap found at https://www.figma.com/sitemap.xml with multiple sitemaps entries",
   "content-no-js": "Homepage: 1695 chars with H1, but 1.9% content ratio is below the 5% target. No inner pages checked: the 5 sampled pages were skipped (forms, login pages, bot challenges, error pages,",
   "bot-detection": "Site accessible to 4 agent user-agents (ChatGPT-User, OAI-SearchBot, Claude-User, PerplexityBot).",
   "agent-discovery-file": "No agent discovery file found",
   "a2a-agent-card": "No A2A agent card found at /.well-known/agent-card.json",
   "mcp-well-known-discovery": "MCP server at https://mcp.figma.com/mcp - list its server card, hosted on your own domain, in /.well-known/ai-catalog.json so MCP clients can discover it",
   "robots-agent-user-policy": "No applicable crawl or usage restriction found for 3 user-triggered agents (chatgpt-user, claude-user, perplexity-user) on 1 public page: https://figma.com/. Declared policy only;",
   "llms-txt-exists": "Found the llms.txt at https://developers.figma.com/llms.txt.",
   "llms-txt-formatting": "The llms.txt is well-formatted: 123 lines with markdown links, 16,430 characters in total.",
   "json-ld": "JSON-LD Organization found - missing description on this entity",
   "public-api-docs": "Documentation site found at https://developers.figma.com",
   "metadata-completeness": "All metadata signals present: canonical URL, lang=\"en\", og:image, og:type",
   "page-token-budget": "All 6 measured pages fit an agent context budget (largest ~2K tokens)",
   "docs-auth-gate": "All 5 sampled pages are publicly readable (5 with substantive content)",
   "openapi-spec": "No OpenAPI/Swagger specification found",
   "developer-portal": "Developer portal found at /developers",
   "markdown-negotiation": "Missing markdown content negotiation. Homepage returned text/html when probed with Accept: text/markdown (expected text/markdown), and none of the well-known root paths (/llms.md, /auth.md, /agents.md, /developers.md,",
   "agent-ua-markdown": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly.",
   "agent-crawler-reachability": "Reachable to every agent we tested - ChatGPT-User: reachable, OAI-SearchBot: reachable, Claude-User: reachable, PerplexityBot: reachable",
   "public-api": "REST API documentation found at /api. Best-of-protocols score: 7/7.",
   "oauth-support": "OAuth authorization server metadata at https://api.figma.com",
   "mcp-server": "MCP server detected at https://mcp.figma.com/mcp; it requires authentication. Presence is verified (5/6), but Ora could not inspect its tools or verify access scopes without credentials.",
   "webmcp": "No WebMCP support detected - no document.modelContext / navigator.modelContext usage found (scanned 28 of 28 same-origin script bundle(s) for modelContext registrations)",
   "cli-tool": "CLI package found on npm: @figma/code-connect",
   "rest-sdk-packages": "SDK package found only in npm",
   "nlweb-ask": "NLWeb /ask endpoint exists but requires authentication (HTTP 403, via POST)",
   "mpp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "x402-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "ucp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "acp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "ap2-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites"
  }
 },
 {
  "slug": "fly",
  "name": "Fly.io",
  "domain": "fly.io",
  "finalUrl": "https://fly.io/",
  "read": "2026-11-09",
  "scannedAt": "2026-11-08T13:20:42.286+00:00",
  "score": 97,
  "max": 100,
  "grade": "A+",
  "category": "Infrastructure",
  "scoringVersion": null,
  "rulesUrl": null,
  "summary": "The site offers strong discovery and REST API schema quality, and publishing rate-limit response headers would give agents clearer backoff signals.",
  "layers": [
   {
    "id": "discovery",
    "name": "Discovery",
    "score": 19,
    "max": 19
   },
   {
    "id": "accessibility",
    "name": "Access",
    "score": 63,
    "max": 65
   },
   {
    "id": "usability",
    "name": "Usability",
    "score": 121.5,
    "max": 126
   },
   {
    "id": "payments",
    "name": "Payments",
    "score": 0,
    "max": 0
   }
  ],
  "checks": {
   "ard-catalog": [
    "pass",
    1,
    1
   ],
   "ai-catalog-published": [
    "pass",
    1,
    1
   ],
   "ard-entries-valid": [
    "pass",
    2,
    2
   ],
   "ard-trust-manifest": [
    "fail",
    0,
    2
   ],
   "agentic-search-usecase": [
    "na",
    0,
    6
   ],
   "agentic-search-specific": [
    "pass",
    3,
    3
   ],
   "brand-search-accuracy": [
    "pass",
    3,
    3
   ],
   "wikipedia-presence": [
    "warning",
    2,
    4
   ],
   "robots-ai-policy-quality": [
    "pass",
    2,
    2
   ],
   "mcp-registry-listed": [
    "pass",
    1,
    1
   ],
   "npm-sdk-package": [
    "pass",
    1,
    1
   ],
   "agent-rules-repo": [
    "fail",
    0,
    1
   ],
   "agent-plugins-repo": [
    "fail",
    0,
    1
   ],
   "registry-branding": [
    "pass",
    2,
    2
   ],
   "chatgpt-app-listed": [
    "pass",
    2,
    2
   ],
   "noindex-directives": [
    "pass",
    1,
    1
   ],
   "sitemap": [
    "pass",
    2,
    2
   ],
   "content-no-js": [
    "warning",
    2,
    3
   ],
   "bot-detection": [
    "pass",
    2,
    2
   ],
   "agent-discovery-file": [
    "pass",
    2,
    2
   ],
   "agent-skills-index-v2": [
    "pass",
    2,
    2
   ],
   "a2a-agent-card": [
    "fail",
    0,
    2
   ],
   "skills-sh-listed": [
    "pass",
    1,
    1
   ],
   "pricing-md": [
    "pass",
    2,
    2
   ],
   "nlweb-schema-feeds": [
    "pass",
    1,
    1
   ],
   "mcp-well-known-discovery": [
    "pass",
    2,
    2
   ],
   "agent-mode-view": [
    "warning",
    1,
    2
   ],
   "link-headers-discovery": [
    "pass",
    1,
    1
   ],
   "markdown-url-fallback": [
    "pass",
    2,
    2
   ],
   "modular-llms-txt": [
    "warning",
    0,
    1
   ],
   "sitemap-lastmod": [
    "pass",
    1,
    1
   ],
   "robots-agent-user-policy": [
    "pass",
    2,
    2
   ],
   "llms-txt-exists": [
    "pass",
    1,
    1
   ],
   "llms-txt-formatting": [
    "pass",
    2,
    2
   ],
   "json-ld": [
    "pass",
    4,
    4
   ],
   "pricing-info": [
    "pass",
    3,
    3
   ],
   "public-api-docs": [
    "pass",
    3,
    3
   ],
   "agent-instruction": [
    "pass",
    3,
    3
   ],
   "skills-sh-quality": [
    "warning",
    1,
    2
   ],
   "json-ld-entity-linking": [
    "pass",
    2,
    2
   ],
   "metadata-completeness": [
    "pass",
    2,
    2
   ],
   "org-schema-completeness": [
    "pass",
    2,
    2
   ],
   "schema-type-breadth": [
    "warning",
    1,
    2
   ],
   "trust-anchors": [
    "pass",
    2,
    2
   ],
   "llms-txt-links-resolve": [
    "pass",
    2,
    2
   ],
   "markdown-link-alternate": [
    "pass",
    1,
    1
   ],
   "markdown-frontmatter": [
    "pass",
    1,
    1
   ],
   "redirect-hygiene": [
    "pass",
    1,
    1
   ],
   "page-token-budget": [
    "pass",
    1,
    1
   ],
   "code-fence-validity": [
    "pass",
    1,
    1
   ],
   "docs-auth-gate": [
    "pass",
    2,
    2
   ],
   "openapi-spec": [
    "pass",
    7,
    7
   ],
   "developer-portal": [
    "pass",
    6,
    6
   ],
   "api-catalog-rfc9727": [
    "pass",
    2,
    2
   ],
   "markdown-negotiation": [
    "pass",
    1,
    1
   ],
   "markdown-negotiation-vary": [
    "pass",
    1,
    1
   ],
   "agent-ua-markdown": [
    "fail",
    0,
    1
   ],
   "agent-crawler-reachability": [
    "pass",
    2,
    2
   ],
   "mcp-tool-descriptions": [
    "pass",
    3,
    3
   ],
   "mcp-param-schemas": [
    "pass",
    2,
    2
   ],
   "mcp-server-identity": [
    "pass",
    1,
    1
   ],
   "mcp-tool-listing": [
    "pass",
    3,
    3
   ],
   "mcp-tool-naming": [
    "pass",
    2,
    2
   ],
   "public-api": [
    "pass",
    7,
    7
   ],
   "oauth-support": [
    "pass",
    5,
    5
   ],
   "scoped-permissions": [
    "pass",
    5,
    5
   ],
   "mcp-auth-mechanism": [
    "pass",
    2,
    2
   ],
   "mcp-oauth-metadata": [
    "na",
    0,
    2
   ],
   "mcp-pkce-s256": [
    "na",
    0,
    2
   ],
   "onboarding-friction": [
    "pass",
    2,
    2
   ],
   "web-bot-auth-directory": [
    "fail",
    0,
    2
   ],
   "oauth-protected-resource": [
    "pass",
    2,
    2
   ],
   "auth-md-exists": [
    "pass",
    2,
    2
   ],
   "auth-md-structure": [
    "warning",
    1,
    2
   ],
   "auth-md-walkthrough-simulation": [
    "fail",
    0,
    2
   ],
   "agent-auth-discovery-metadata": [
    "warning",
    1,
    3
   ],
   "agent-auth-www-authenticate": [
    "fail",
    0,
    1
   ],
   "agent-auth-endpoints-reachable": [
    "fail",
    0,
    2
   ],
   "pap-discovery": [
    "na",
    0,
    2
   ],
   "pap-issuer-binding": [
    "na",
    0,
    2
   ],
   "pap-auth-config": [
    "na",
    0,
    2
   ],
   "pap-interfaces": [
    "na",
    0,
    2
   ],
   "pap-endpoint-enforcement": [
    "na",
    0,
    2
   ],
   "pap-cross-protocol": [
    "na",
    0,
    2
   ],
   "mcp-server": [
    "warning",
    5,
    6
   ],
   "mcp-error-handling": [
    "pass",
    2,
    2
   ],
   "mcp-transport-modern": [
    "pass",
    1,
    1
   ],
   "webmcp": [
    "pass",
    5,
    5
   ],
   "rate-limit-headers": [
    "fail",
    0,
    2
   ],
   "idempotency-key-support": [
    "pass",
    3,
    3
   ],
   "json-error-responses": [
    "pass",
    4,
    4
   ],
   "api-error-model": [
    "pass",
    3,
    3
   ],
   "api-versioning-policy": [
    "pass",
    3,
    3
   ],
   "pagination-shape": [
    "pass",
    2,
    2
   ],
   "async-job-pattern": [
    "warning",
    1,
    2
   ],
   "cli-tool": [
    "pass",
    3,
    3
   ],
   "rest-sdk-packages": [
    "pass",
    3,
    3
   ],
   "nlweb-ask": [
    "fail",
    0,
    1
   ],
   "nlweb-streaming": [
    "fail",
    0,
    1
   ],
   "response-schema-coverage": [
    "pass",
    2,
    2
   ],
   "mcp-tool-annotations": [
    "pass",
    2,
    2
   ],
   "mcp-server-card": [
    "pass",
    2,
    2
   ],
   "mcp-multi-surface-coverage": [
    "pass",
    2,
    2
   ],
   "sandbox-environment": [
    "warning",
    0,
    2
   ],
   "batch-endpoints": [
    "fail",
    0,
    2
   ],
   "mcp-resource-listing": [
    "pass",
    3,
    3
   ],
   "graphql-error-type-definition": [
    "pass",
    3,
    3
   ],
   "graphql-versioning-policy": [
    "pass",
    2,
    2
   ],
   "graphql-pagination-pattern": [
    "pass",
    2,
    2
   ],
   "graphql-async-job-pattern": [
    "pass",
    2,
    2
   ],
   "graphql-schema-completeness": [
    "na",
    0,
    3
   ],
   "graphql-batch-mutations": [
    "na",
    0,
    2
   ],
   "agent-friendly-404": [
    "pass",
    2,
    2
   ],
   "ax-document-structure": [
    "pass",
    3,
    3
   ],
   "ax-native-controls": [
    "pass",
    3,
    3
   ],
   "ax-accessible-names": [
    "pass",
    2,
    2
   ],
   "ax-form-labeling": [
    "pass",
    2,
    2
   ],
   "ax-tree-injection-safe": [
    "pass",
    2,
    2
   ],
   "mcp-app-registry": [
    "na",
    0,
    4
   ],
   "a2ui-support": [
    "na",
    0,
    2
   ],
   "mcp-apps-ui-quality": [
    "na",
    0,
    4
   ],
   "mcp-view-domain": [
    "na",
    0,
    4
   ],
   "mcp-view-csp": [
    "na",
    0,
    4
   ],
   "api-schema-analysis": [
    "warning",
    1.5,
    2
   ],
   "function-calling-compat": [
    "pass",
    2,
    2
   ],
   "mcp-resource-quality": [
    "pass",
    3,
    3
   ],
   "mpp-support": [
    "na",
    0,
    2
   ],
   "x402-support": [
    "na",
    0,
    2
   ],
   "ucp-support": [
    "na",
    0,
    3
   ],
   "acp-support": [
    "na",
    0,
    3
   ],
   "acp-delegate-payment": [
    "na",
    0,
    3
   ],
   "ap2-support": [
    "na",
    0,
    3
   ]
  },
  "flagged": [
   {
    "id": "rate-limit-headers",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.7,
    "detail": "No REST rate-limit headers found on probed endpoints (GraphQL signal: fail 0)."
   },
   {
    "id": "content-no-js",
    "layer": "accessibility",
    "status": "warning",
    "score": 2,
    "max": 3,
    "tier": "required",
    "est": 0.5,
    "detail": "Homepage: 3329 chars with H1, but 3.0% content ratio is below the 5% target. 5 of 5 sampled inner pages have text without JavaScript."
   },
   {
    "id": "schema-type-breadth",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "Some extended schema types found: Service - add 2 more types that match what the homepage shows, for full coverage"
   },
   {
    "id": "async-job-pattern",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.4,
    "detail": "202 Accepted responses found but no clear polling pattern (Location header, /jobs path, or job_id schema)"
   },
   {
    "id": "mcp-server",
    "layer": "usability",
    "status": "warning",
    "score": 5,
    "max": 6,
    "tier": "required",
    "est": 0.4,
    "detail": "MCP server detected at https://mcp.fly.io; it requires authentication. Presence is verified (5/6), but Ora could not inspect its tools or verify access scopes without credentials."
   },
   {
    "id": "api-schema-analysis",
    "layer": "usability",
    "status": "warning",
    "score": 1.5,
    "max": 2,
    "tier": "recommended",
    "est": 0.2,
    "detail": "REST: agent-friendly schema (101 operations, 100% with operationIds, 100% documented by description or summary) | GraphQL: schema reachable (396 types, 125 operations) but no cost/rate-limit directives | Combined score: 1.5/2"
   },
   {
    "id": "a2a-agent-card",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0,
    "detail": "No A2A agent card found at /.well-known/agent-card.json"
   },
   {
    "id": "agent-auth-discovery-metadata",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 3,
    "tier": "recommended",
    "est": 0,
    "detail": "Only PRM present; spec calls for both PRM and AS metadata"
   },
   {
    "id": "agent-auth-endpoints-reachable",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0,
    "detail": "No agent_auth endpoint URIs found in AS metadata or /auth.md prose; nothing to probe"
   },
   {
    "id": "agent-auth-www-authenticate",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0,
    "detail": "No 401 with WWW-Authenticate: Bearer resource_metadata=... found. Probed [https://fly.io/api, https://fly.io/api/v1, https://fly.io/v1, https://fly.io/v2, https://fly.io/agent/identity, https://fly.io/agent/auth, https://mcp.fly.io/api,"
   },
   {
    "id": "agent-mode-view",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "Agent mode view found at ?mode=agent (5 signals: llms.txt, mcp, api, agent, sdk)"
   },
   {
    "id": "agent-plugins-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No Agent Plugins manifest (plugin.json) found in discovered repos"
   },
   {
    "id": "agent-rules-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Could not locate a public repo containing agent configs or rules. If our probes missed it, AI coding agents likely will too - link the repo from your homepage or docs so it's discoverable."
   },
   {
    "id": "agent-ua-markdown",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly."
   },
   {
    "id": "ard-trust-manifest",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0,
    "detail": "No entry carries a trustManifest"
   },
   {
    "id": "auth-md-structure",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0,
    "detail": "auth.md at https://fly.io/auth.md mentions one spec anchor (agent_auth) but lacks the prescribed walkthrough structure (0/8 walkthrough sections)"
   },
   {
    "id": "auth-md-walkthrough-simulation",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0,
    "detail": "Static fallback: walkthrough breaks at discovery - AS metadata unreachable"
   },
   {
    "id": "batch-endpoints",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0,
    "detail": "No batch or bulk endpoint pattern found"
   },
   {
    "id": "modular-llms-txt",
    "layer": "accessibility",
    "status": "warning",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Only 1 section-level llms.txt found (docs). Add one for another section and link it from your root llms.txt to earn this bonus point."
   },
   {
    "id": "nlweb-ask",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No NLWeb-conformant /ask endpoint found via GET or POST"
   },
   {
    "id": "nlweb-streaming",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "NLWeb /ask does not support SSE streaming via GET or POST"
   },
   {
    "id": "sandbox-environment",
    "layer": "usability",
    "status": "warning",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0,
    "detail": "Sandbox/test environment mentioned in llms.txt but no sandbox surface verified"
   },
   {
    "id": "skills-sh-quality",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "Skills.sh presence exists but limited - 3 skills (goal: 5+), 84 installs (goal: 200+)"
   },
   {
    "id": "web-bot-auth-directory",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No /.well-known/http-message-signatures-directory found"
   },
   {
    "id": "wikipedia-presence",
    "layer": "discovery",
    "status": "warning",
    "score": 2,
    "max": 4,
    "tier": "recommended",
    "est": 0,
    "detail": "Wikidata Q133943318 (Fly.io) verified - draft a Wikipedia page with cited references to complete knowledge graph coverage"
   }
  ],
  "seen": {
   "brand-search-accuracy": "fly.io ranks #2 for \"Fly.io Public cloud platform\"",
   "wikipedia-presence": "Wikidata Q133943318 (Fly.io) verified - draft a Wikipedia page with cited references to complete knowledge graph coverage",
   "robots-ai-policy-quality": "AI search crawlers: allowed in 18 of 18 checks (3 crawlers on 6 pages). AI training crawlers: allowed in 12 of 12 checks (2 crawlers on 6 pages), not scored.",
   "noindex-directives": "No noindex on the homepage: no robots, googlebot or bingbot meta tag and no X-Robots-Tag header hides it from search.",
   "sitemap": "Valid sitemap found at https://fly.io/sitemap.xml with multiple sitemaps entries",
   "content-no-js": "Homepage: 3329 chars with H1, but 3.0% content ratio is below the 5% target. 5 of 5 sampled inner pages have text without JavaScript.",
   "bot-detection": "Site accessible to 4 agent user-agents (ChatGPT-User, OAI-SearchBot, Claude-User, PerplexityBot).",
   "agent-discovery-file": "Agent Skills index (agentskills.io) found at /.well-known/agent-skills/index.json with 2 skill(s)",
   "a2a-agent-card": "No A2A agent card found at /.well-known/agent-card.json",
   "mcp-well-known-discovery": "MCP server card listed in /.well-known/ai-catalog.json",
   "robots-agent-user-policy": "No applicable crawl or usage restriction found for 3 user-triggered agents (chatgpt-user, claude-user, perplexity-user) on 1 public page: https://fly.io/. Declared policy only;",
   "llms-txt-exists": "Found the llms.txt at https://fly.io/llms.txt.",
   "llms-txt-formatting": "The llms.txt is well-formatted: 55 lines with markdown links, 5,590 characters in total.",
   "json-ld": "Rich JSON-LD identity: Organization with name, description, url, and sameAs/logo/address (7 block(s))",
   "public-api-docs": "Documentation site found at https://docs.fly.io",
   "metadata-completeness": "All metadata signals present: canonical URL, lang=\"en-US\", og:image, og:type",
   "page-token-budget": "All 9 measured pages fit an agent context budget (largest ~17K tokens)",
   "docs-auth-gate": "All 5 sampled pages are publicly readable (5 with substantive content)",
   "openapi-spec": "OpenAPI spec found at https://docs.fly.io/api/machines/openapi.json (version: 3.1.0)",
   "developer-portal": "Developer portal found at https://docs.fly.io",
   "markdown-negotiation": "Path-suffix markdown docs served with text/markdown content-type: /agents.md, /auth.md, /index.md",
   "agent-ua-markdown": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly.",
   "agent-crawler-reachability": "Reachable to every agent we tested - ChatGPT-User: reachable, OAI-SearchBot: reachable, Claude-User: reachable, PerplexityBot: reachable",
   "public-api": "REST API documentation found at /docs/api. GraphQL endpoint at https://api.fly.io/graphql is reachable and introspectable. Best-of-protocols score: 7/7.",
   "oauth-support": "OAuth authorization server metadata at https://fly.io/mcp/oauth",
   "mcp-server": "MCP server detected at https://mcp.fly.io; it requires authentication. Presence is verified (5/6), but Ora could not inspect its tools or verify access scopes without credentials.",
   "webmcp": "Imperative WebMCP API detected (document.modelContext.registerTool in script bundle /phx/assets/js/webmcp-b5d77663c19eacfff5a6dc69d2b8dc2f.js).",
   "cli-tool": "CLI package found on npm: @fly/cli",
   "rest-sdk-packages": "SDK packages found across 4 ecosystems: npm, pypi, go, rubygems",
   "nlweb-ask": "No NLWeb-conformant /ask endpoint found via GET or POST",
   "mpp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "x402-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "ucp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "acp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "ap2-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites"
  }
 },
 {
  "slug": "github",
  "name": "GitHub",
  "domain": "github.com",
  "finalUrl": "https://github.com/",
  "read": "2026-11-09",
  "scannedAt": "2026-11-08T22:58:51.382+00:00",
  "score": 66,
  "max": 100,
  "grade": "C",
  "category": "Developer Tools",
  "scoringVersion": 2,
  "rulesUrl": "https://ora.ai/api/ranker/releases/2/rules",
  "summary": "GitHub offers strong developer discoverability and an official SDK package, but lacks an OpenAPI specification for agents to integrate against.",
  "layers": [
   {
    "id": "discovery",
    "name": "Discovery",
    "score": 16,
    "max": 17
   },
   {
    "id": "accessibility",
    "name": "Access",
    "score": 37,
    "max": 58
   },
   {
    "id": "usability",
    "name": "Usability",
    "score": 39,
    "max": 73
   },
   {
    "id": "payments",
    "name": "Payments",
    "score": 0,
    "max": 0
   }
  ],
  "checks": {
   "ard-catalog": [
    "warning",
    0,
    1
   ],
   "ai-catalog-published": [
    "warning",
    0,
    1
   ],
   "ard-entries-valid": [
    "warning",
    0,
    2
   ],
   "ard-trust-manifest": [
    "fail",
    0,
    2
   ],
   "agentic-search-usecase": [
    "na",
    0,
    6
   ],
   "agentic-search-specific": [
    "pass",
    3,
    3
   ],
   "brand-search-accuracy": [
    "pass",
    3,
    3
   ],
   "wikipedia-presence": [
    "pass",
    4,
    4
   ],
   "robots-ai-policy-quality": [
    "pass",
    2,
    2
   ],
   "mcp-registry-listed": [
    "na",
    0,
    1
   ],
   "npm-sdk-package": [
    "pass",
    1,
    1
   ],
   "agent-rules-repo": [
    "fail",
    0,
    1
   ],
   "agent-plugins-repo": [
    "fail",
    0,
    1
   ],
   "registry-branding": [
    "na",
    0,
    2
   ],
   "chatgpt-app-listed": [
    "pass",
    2,
    2
   ],
   "noindex-directives": [
    "pass",
    1,
    1
   ],
   "sitemap": [
    "pass",
    2,
    2
   ],
   "content-no-js": [
    "warning",
    2,
    3
   ],
   "bot-detection": [
    "pass",
    2,
    2
   ],
   "agent-discovery-file": [
    "fail",
    0,
    2
   ],
   "agent-skills-index-v2": [
    "na",
    0,
    2
   ],
   "a2a-agent-card": [
    "fail",
    0,
    2
   ],
   "skills-sh-listed": [
    "pass",
    1,
    1
   ],
   "pricing-md": [
    "fail",
    0,
    2
   ],
   "nlweb-schema-feeds": [
    "fail",
    0,
    1
   ],
   "mcp-well-known-discovery": [
    "fail",
    0,
    2
   ],
   "agent-mode-view": [
    "fail",
    0,
    2
   ],
   "link-headers-discovery": [
    "fail",
    0,
    1
   ],
   "markdown-url-fallback": [
    "fail",
    0,
    2
   ],
   "modular-llms-txt": [
    "fail",
    0,
    1
   ],
   "sitemap-lastmod": [
    "fail",
    0,
    1
   ],
   "robots-agent-user-policy": [
    "pass",
    2,
    2
   ],
   "llms-txt-exists": [
    "pass",
    1,
    1
   ],
   "llms-txt-formatting": [
    "pass",
    2,
    2
   ],
   "json-ld": [
    "fail",
    0,
    4
   ],
   "pricing-info": [
    "pass",
    3,
    3
   ],
   "public-api-docs": [
    "pass",
    3,
    3
   ],
   "agent-instruction": [
    "pass",
    3,
    3
   ],
   "skills-sh-quality": [
    "pass",
    2,
    2
   ],
   "json-ld-entity-linking": [
    "fail",
    0,
    2
   ],
   "metadata-completeness": [
    "pass",
    2,
    2
   ],
   "org-schema-completeness": [
    "fail",
    0,
    2
   ],
   "schema-type-breadth": [
    "fail",
    0,
    2
   ],
   "trust-anchors": [
    "pass",
    2,
    2
   ],
   "llms-txt-links-resolve": [
    "warning",
    1,
    2
   ],
   "markdown-link-alternate": [
    "fail",
    0,
    1
   ],
   "markdown-frontmatter": [
    "na",
    0,
    1
   ],
   "redirect-hygiene": [
    "pass",
    1,
    1
   ],
   "page-token-budget": [
    "pass",
    1,
    1
   ],
   "code-fence-validity": [
    "pass",
    1,
    1
   ],
   "docs-auth-gate": [
    "pass",
    2,
    2
   ],
   "openapi-spec": [
    "fail",
    0,
    7
   ],
   "developer-portal": [
    "pass",
    6,
    6
   ],
   "api-catalog-rfc9727": [
    "fail",
    0,
    2
   ],
   "markdown-negotiation": [
    "fail",
    0,
    1
   ],
   "markdown-negotiation-vary": [
    "fail",
    0,
    1
   ],
   "agent-ua-markdown": [
    "fail",
    0,
    1
   ],
   "agent-crawler-reachability": [
    "pass",
    2,
    2
   ],
   "mcp-tool-descriptions": [
    "na",
    0,
    3
   ],
   "mcp-param-schemas": [
    "na",
    0,
    2
   ],
   "mcp-server-identity": [
    "na",
    0,
    1
   ],
   "mcp-tool-listing": [
    "na",
    0,
    3
   ],
   "mcp-tool-naming": [
    "na",
    0,
    2
   ],
   "public-api": [
    "pass",
    7,
    7
   ],
   "oauth-support": [
    "fail",
    0,
    5
   ],
   "scoped-permissions": [
    "fail",
    0,
    5
   ],
   "mcp-auth-mechanism": [
    "na",
    0,
    2
   ],
   "mcp-oauth-metadata": [
    "na",
    0,
    2
   ],
   "mcp-pkce-s256": [
    "na",
    0,
    2
   ],
   "onboarding-friction": [
    "warning",
    1,
    2
   ],
   "web-bot-auth-directory": [
    "fail",
    0,
    2
   ],
   "oauth-protected-resource": [
    "fail",
    0,
    2
   ],
   "auth-md-exists": [
    "fail",
    0,
    2
   ],
   "auth-md-structure": [
    "fail",
    0,
    2
   ],
   "auth-md-walkthrough-simulation": [
    "na",
    0,
    2
   ],
   "agent-auth-discovery-metadata": [
    "fail",
    0,
    3
   ],
   "agent-auth-www-authenticate": [
    "fail",
    0,
    1
   ],
   "agent-auth-endpoints-reachable": [
    "fail",
    0,
    2
   ],
   "pap-discovery": [
    "na",
    0,
    2
   ],
   "pap-issuer-binding": [
    "na",
    0,
    2
   ],
   "pap-auth-config": [
    "na",
    0,
    2
   ],
   "pap-interfaces": [
    "na",
    0,
    2
   ],
   "pap-endpoint-enforcement": [
    "na",
    0,
    2
   ],
   "pap-cross-protocol": [
    "na",
    0,
    2
   ],
   "mcp-server": [
    "warning",
    5,
    6
   ],
   "mcp-error-handling": [
    "na",
    0,
    2
   ],
   "mcp-transport-modern": [
    "na",
    0,
    1
   ],
   "webmcp": [
    "fail",
    0,
    5
   ],
   "rate-limit-headers": [
    "warning",
    1,
    2
   ],
   "idempotency-key-support": [
    "fail",
    0,
    3
   ],
   "json-error-responses": [
    "pass",
    4,
    4
   ],
   "api-error-model": [
    "fail",
    0,
    3
   ],
   "api-versioning-policy": [
    "warning",
    1,
    3
   ],
   "pagination-shape": [
    "na",
    0,
    2
   ],
   "async-job-pattern": [
    "fail",
    0,
    2
   ],
   "cli-tool": [
    "pass",
    3,
    3
   ],
   "rest-sdk-packages": [
    "warning",
    2,
    3
   ],
   "nlweb-ask": [
    "fail",
    0,
    1
   ],
   "nlweb-streaming": [
    "fail",
    0,
    1
   ],
   "response-schema-coverage": [
    "na",
    0,
    2
   ],
   "mcp-tool-annotations": [
    "na",
    0,
    2
   ],
   "mcp-server-card": [
    "fail",
    0,
    2
   ],
   "mcp-multi-surface-coverage": [
    "fail",
    0,
    2
   ],
   "sandbox-environment": [
    "pass",
    2,
    2
   ],
   "batch-endpoints": [
    "fail",
    0,
    2
   ],
   "mcp-resource-listing": [
    "na",
    0,
    3
   ],
   "graphql-error-type-definition": [
    "na",
    0,
    3
   ],
   "graphql-versioning-policy": [
    "na",
    0,
    2
   ],
   "graphql-pagination-pattern": [
    "na",
    0,
    2
   ],
   "graphql-async-job-pattern": [
    "na",
    0,
    2
   ],
   "graphql-schema-completeness": [
    "na",
    0,
    3
   ],
   "graphql-batch-mutations": [
    "na",
    0,
    2
   ],
   "agent-friendly-404": [
    "warning",
    1,
    2
   ],
   "ax-document-structure": [
    "pass",
    3,
    3
   ],
   "ax-native-controls": [
    "pass",
    3,
    3
   ],
   "ax-accessible-names": [
    "pass",
    2,
    2
   ],
   "ax-form-labeling": [
    "pass",
    2,
    2
   ],
   "ax-tree-injection-safe": [
    "pass",
    2,
    2
   ],
   "mcp-app-registry": [
    "na",
    0,
    4
   ],
   "a2ui-support": [
    "na",
    0,
    2
   ],
   "mcp-apps-ui-quality": [
    "na",
    0,
    4
   ],
   "mcp-view-domain": [
    "na",
    0,
    4
   ],
   "mcp-view-csp": [
    "na",
    0,
    4
   ],
   "api-schema-analysis": [
    "fail",
    0,
    2
   ],
   "function-calling-compat": [
    "fail",
    0,
    2
   ],
   "mcp-resource-quality": [
    "na",
    0,
    3
   ],
   "mpp-support": [
    "na",
    0,
    2
   ],
   "x402-support": [
    "na",
    0,
    2
   ],
   "ucp-support": [
    "na",
    0,
    3
   ],
   "acp-support": [
    "na",
    0,
    3
   ],
   "acp-delegate-payment": [
    "na",
    0,
    3
   ],
   "ap2-support": [
    "na",
    0,
    3
   ]
  },
  "flagged": [
   {
    "id": "openapi-spec",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 7,
    "tier": "required",
    "est": 4,
    "detail": "No OpenAPI/Swagger specification found"
   },
   {
    "id": "oauth-support",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 5,
    "tier": "required",
    "est": 3,
    "detail": "No OAuth 2.0 or OpenID Connect support detected"
   },
   {
    "id": "scoped-permissions",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 5,
    "tier": "recommended",
    "est": 3,
    "detail": "No declared OAuth scopes, security schemes, or scoped-permission documentation found"
   },
   {
    "id": "webmcp",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 5,
    "tier": "required",
    "est": 3,
    "detail": "No WebMCP support detected - no document.modelContext / navigator.modelContext usage found"
   },
   {
    "id": "json-ld",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 4,
    "tier": "required",
    "est": 2.3,
    "detail": "No JSON-LD structured data found on homepage"
   },
   {
    "id": "api-error-model",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": 1.8,
    "detail": "No typed error model found"
   },
   {
    "id": "idempotency-key-support",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": 1.8,
    "detail": "No REST Idempotency-Key support detected"
   },
   {
    "id": "ard-catalog",
    "layer": "discovery",
    "status": "warning",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 1.3,
    "detail": "/.well-known/ai-catalog.json present but invalid: entry[0] (urn:air:github.com:mcp:github-mcp-server): missing displayName - served at the legacy path; the canonical ARD path is /.well-known/ard.json (ARD v0.91)"
   },
   {
    "id": "api-schema-analysis",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.2,
    "detail": "No API schema detected"
   },
   {
    "id": "api-versioning-policy",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 3,
    "tier": "recommended",
    "est": 1.2,
    "detail": "Deprecation or versioning policy mentioned in prose at https://docs.github.com - formalize in OpenAPI spec for full credit"
   },
   {
    "id": "async-job-pattern",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.2,
    "detail": "No async job pattern found"
   },
   {
    "id": "function-calling-compat",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.2,
    "detail": "No API spec found - function calling requires discoverable endpoints"
   },
   {
    "id": "agent-discovery-file",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 1.1,
    "detail": "No agent discovery file found"
   },
   {
    "id": "json-ld-entity-linking",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.1,
    "detail": "No JSON-LD found - no entity linking possible"
   },
   {
    "id": "org-schema-completeness",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.1,
    "detail": "No JSON-LD found - Organization schema missing"
   },
   {
    "id": "schema-type-breadth",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.1,
    "detail": "No extended schema types found - AI can only answer basic questions about this entity"
   },
   {
    "id": "agent-auth-discovery-metadata",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": 0.8,
    "detail": "Neither /.well-known/oauth-protected-resource nor /.well-known/oauth-authorization-server found. Probed: github.com, api.github.com."
   },
   {
    "id": "agent-auth-endpoints-reachable",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "No agent_auth endpoint URIs found in AS metadata or /auth.md prose; nothing to probe"
   },
   {
    "id": "agent-friendly-404",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "The nonexistent path https://github.com/__ora-404-probe-94xeeg0c correctly returns HTTP 404. Partial credit: no Markdown error body was detected."
   },
   {
    "id": "auth-md-exists",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.6,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "auth-md-structure",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "batch-endpoints",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "No batch or bulk endpoint pattern found"
   },
   {
    "id": "content-no-js",
    "layer": "accessibility",
    "status": "warning",
    "score": 2,
    "max": 3,
    "tier": "required",
    "est": 0.6,
    "detail": "Homepage: 5444 chars with H1, but first content heading is H2, not H1; 2.0% content ratio is below the 5% target. 5 of 5 sampled inner pages have text without JavaScript."
   },
   {
    "id": "llms-txt-links-resolve",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "2 of 5 probed llms.txt links do not resolve: https://docs.github.com/api/article and https://docs.github.com/api/article/body"
   },
   {
    "id": "mcp-multi-surface-coverage",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "This bonus needs two MCP servers: one for your product so agents can take actions, and a separate one for your documentation so agents can answer questions from your docs."
   },
   {
    "id": "mcp-server",
    "layer": "usability",
    "status": "warning",
    "score": 5,
    "max": 6,
    "tier": "required",
    "est": 0.6,
    "detail": "First-party MCP server published by product org (npm, @github/mcp-registry, 13510 score). Add live handshake at /.well-known/mcp for full credit."
   },
   {
    "id": "mcp-server-card",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "No MCP server card found (checked /.well-known/mcp/server-card.json, the site's ai-catalog.json, servers[].card in mcp.json, and <server>/server-card)"
   },
   {
    "id": "oauth-protected-resource",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.6,
    "detail": "No /.well-known/oauth-protected-resource found (RFC 9728)"
   },
   {
    "id": "onboarding-friction",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "Onboarding signals described but not verified live: free tier available, self-serve key generation, sandbox/test environment"
   },
   {
    "id": "rate-limit-headers",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "The live API at https://api.github.com/ returns legacy x-ratelimit-limit, x-ratelimit-remaining, x-ratelimit-reset headers. Adopting the IETF RateLimit-* standard would earn full credit."
   },
   {
    "id": "rest-sdk-packages",
    "layer": "usability",
    "status": "warning",
    "score": 2,
    "max": 3,
    "tier": "recommended",
    "est": 0.6,
    "detail": "SDK packages found in npm, rubygems"
   },
   {
    "id": "a2a-agent-card",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.4,
    "detail": "No A2A agent card found at /.well-known/agent-card.json"
   },
   {
    "id": "api-catalog-rfc9727",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.4,
    "detail": "No /.well-known/api-catalog found (RFC 9727)"
   },
   {
    "id": "mcp-well-known-discovery",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.4,
    "detail": "No MCP server URL discovered"
   },
   {
    "id": "agent-auth-www-authenticate",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.3,
    "detail": "No 401 with WWW-Authenticate: Bearer resource_metadata=... found. Probed [https://github.com/api, https://github.com/api/v1, https://github.com/v1, https://github.com/v2, https://github.com/agent/identity, https://github.com/agent/auth,"
   },
   {
    "id": "link-headers-discovery",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 0.2,
    "detail": "No HTTP Link response headers (RFC 8288) found"
   },
   {
    "id": "markdown-negotiation-vary",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.2,
    "detail": "Homepage https://github.com does not meet the Markdown negotiation requirements: Accept: text/markdown returned text/html; charset=utf-8"
   },
   {
    "id": "sitemap-lastmod",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.2,
    "detail": "None of the 376 sampled sitemap entries carries a lastmod date. Add <lastmod> (W3C datetime) so agents can prioritize fresh content."
   },
   {
    "id": "ai-catalog-published",
    "layer": "discovery",
    "status": "warning",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.1,
    "detail": "/.well-known/ai-catalog.json present but invalid: entry[0] (urn:air:github.com:mcp:github-mcp-server): missing displayName"
   },
   {
    "id": "ard-entries-valid",
    "layer": "discovery",
    "status": "warning",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.1,
    "detail": "0/1 entries valid: entry[0] (urn:air:github.com:mcp:github-mcp-server): missing displayName"
   },
   {
    "id": "ard-trust-manifest",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.1,
    "detail": "No entry carries a trustManifest"
   },
   {
    "id": "agent-mode-view",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "?mode=agent returns same content as homepage (no dedicated agent view)"
   },
   {
    "id": "agent-plugins-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No Agent Plugins manifest (plugin.json) found in discovered repos"
   },
   {
    "id": "agent-rules-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Could not locate a public repo containing agent configs or rules. If our probes missed it, AI coding agents likely will too - link the repo from your homepage or docs so it's discoverable."
   },
   {
    "id": "agent-ua-markdown",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly."
   },
   {
    "id": "markdown-link-alternate",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No sampled page advertises a markdown alternate. Add <link rel=\"alternate\" type=\"text/markdown\" href=\"...\"> (or the equivalent Link response header) pointing at a markdown twin of the page."
   },
   {
    "id": "markdown-negotiation",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Missing markdown content negotiation. Homepage returned text/html when probed with Accept: text/markdown (expected text/markdown), and none of the well-known root paths (/llms.md, /auth.md, /agents.md, /developers.md, /api.md, /index.md,"
   },
   {
    "id": "markdown-url-fallback",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "Homepage does not support the .md suffix. Probed https://github.com/index.md and it did not return markdown (expected text/markdown content-type or a heading-led non-HTML body)."
   },
   {
    "id": "modular-llms-txt",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No section-level llms.txt found. Tried /docs/llms.txt, /api/llms.txt, /developers/llms.txt, /guides/llms.txt, /reference/llms.txt, /login/llms.txt, /platform/llms.txt, /features/llms.txt, /marketplace/llms.txt, /trending/llms.txt."
   },
   {
    "id": "nlweb-ask",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No NLWeb-conformant /ask endpoint found via GET or POST"
   },
   {
    "id": "nlweb-schema-feeds",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No schemamap: directive in robots.txt"
   },
   {
    "id": "nlweb-streaming",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "NLWeb /ask does not support SSE streaming via GET or POST"
   },
   {
    "id": "pricing-md",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No pricing.md found - agents need machine-readable pricing to compare products and make purchase recommendations"
   },
   {
    "id": "web-bot-auth-directory",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No /.well-known/http-message-signatures-directory found"
   }
  ],
  "seen": {
   "brand-search-accuracy": "github.com ranks #4 for \"GitHub\" (searched your brand name alone: no main product term from your homepage qualified)",
   "wikipedia-presence": "Wikipedia \"GitHub\" and Wikidata Q364 both verified - domain confirmed on both sources",
   "robots-ai-policy-quality": "AI search crawlers: allowed in 18 of 18 checks (3 crawlers on 6 pages). AI training crawlers: allowed in 12 of 12 checks (2 crawlers on 6 pages), not scored.",
   "noindex-directives": "No noindex on the homepage: no robots, googlebot or bingbot meta tag and no X-Robots-Tag header hides it from search.",
   "sitemap": "Valid sitemap found at https://github.com/sitemap_marketing.xml with 376 entries",
   "content-no-js": "Homepage: 5444 chars with H1, but first content heading is H2, not H1; 2.0% content ratio is below the 5% target. 5 of 5 sampled inner pages have text without JavaScript.",
   "bot-detection": "Site accessible to 4 agent user-agents (ChatGPT-User, OAI-SearchBot, Claude-User, PerplexityBot).",
   "agent-discovery-file": "No agent discovery file found",
   "a2a-agent-card": "No A2A agent card found at /.well-known/agent-card.json",
   "mcp-well-known-discovery": "No MCP server URL discovered",
   "robots-agent-user-policy": "No applicable crawl or usage restriction found for 3 user-triggered agents (chatgpt-user, claude-user, perplexity-user) on 1 public page: https://github.com/. Declared policy only;",
   "llms-txt-exists": "Found the llms.txt at https://github.com/llms.txt.",
   "llms-txt-formatting": "The llms.txt is well-formatted: 142 lines with markdown links, 28,650 characters in total.",
   "json-ld": "No JSON-LD structured data found on homepage",
   "public-api-docs": "Documentation site found at https://docs.github.com",
   "metadata-completeness": "All metadata signals present: canonical URL, lang=\"en\", og:image, og:type",
   "page-token-budget": "All 6 measured pages fit an agent context budget (largest ~3K tokens)",
   "docs-auth-gate": "All 5 sampled pages are publicly readable (5 with substantive content)",
   "openapi-spec": "No OpenAPI/Swagger specification found",
   "developer-portal": "Developer portal found at /developers",
   "markdown-negotiation": "Missing markdown content negotiation. Homepage returned text/html when probed with Accept: text/markdown (expected text/markdown), and none of the well-known root paths (/llms.md, /auth.md, /agents.md, /developers.md,",
   "agent-ua-markdown": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly.",
   "agent-crawler-reachability": "Reachable to every agent we tested - ChatGPT-User: reachable, OAI-SearchBot: reachable, Claude-User: reachable, PerplexityBot: reachable",
   "public-api": "REST API documentation found at https://docs.github.com/api/pagelist/versions. Best-of-protocols score: 7/7.",
   "oauth-support": "No OAuth 2.0 or OpenID Connect support detected",
   "mcp-server": "First-party MCP server published by product org (npm, @github/mcp-registry, 13510 score). Add live handshake at /.well-known/mcp for full credit.",
   "webmcp": "No WebMCP support detected - no document.modelContext / navigator.modelContext usage found",
   "cli-tool": "CLI package found on npm: @github/copilot",
   "rest-sdk-packages": "SDK packages found in npm, rubygems",
   "nlweb-ask": "No NLWeb-conformant /ask endpoint found via GET or POST",
   "mpp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "x402-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "ucp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "acp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "ap2-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites"
  }
 },
 {
  "slug": "gitlab",
  "name": "GitLab",
  "domain": "gitlab.com",
  "finalUrl": "https://about.gitlab.com/",
  "read": "2026-11-09",
  "scannedAt": "2026-11-08T00:52:49.98+00:00",
  "score": 80,
  "max": 100,
  "grade": "B",
  "category": "Developer Tools",
  "scoringVersion": null,
  "rulesUrl": null,
  "summary": "GitLab offers strong discovery and developer access, but lacks WebMCP support for in-browser agent tool registration.",
  "layers": [
   {
    "id": "discovery",
    "name": "Discovery",
    "score": 17,
    "max": 18
   },
   {
    "id": "accessibility",
    "name": "Access",
    "score": 40,
    "max": 49
   },
   {
    "id": "usability",
    "name": "Usability",
    "score": 51,
    "max": 72
   },
   {
    "id": "payments",
    "name": "Payments",
    "score": 0,
    "max": 0
   }
  ],
  "checks": {
   "ard-catalog": [
    "fail",
    0,
    1
   ],
   "ai-catalog-published": [
    "na",
    0,
    1
   ],
   "ard-entries-valid": [
    "na",
    0,
    2
   ],
   "ard-trust-manifest": [
    "na",
    0,
    2
   ],
   "agentic-search-usecase": [
    "na",
    0,
    6
   ],
   "agentic-search-specific": [
    "pass",
    3,
    3
   ],
   "brand-search-accuracy": [
    "pass",
    3,
    3
   ],
   "wikipedia-presence": [
    "pass",
    4,
    4
   ],
   "robots-ai-policy-quality": [
    "pass",
    2,
    2
   ],
   "mcp-registry-listed": [
    "pass",
    1,
    1
   ],
   "npm-sdk-package": [
    "pass",
    1,
    1
   ],
   "agent-rules-repo": [
    "fail",
    0,
    1
   ],
   "agent-plugins-repo": [
    "fail",
    0,
    1
   ],
   "registry-branding": [
    "na",
    0,
    2
   ],
   "chatgpt-app-listed": [
    "pass",
    2,
    2
   ],
   "noindex-directives": [
    "pass",
    1,
    1
   ],
   "sitemap": [
    "pass",
    2,
    2
   ],
   "content-no-js": [
    "warning",
    1,
    3
   ],
   "bot-detection": [
    "pass",
    2,
    2
   ],
   "agent-discovery-file": [
    "na",
    0,
    2
   ],
   "agent-skills-index-v2": [
    "na",
    0,
    2
   ],
   "a2a-agent-card": [
    "na",
    0,
    2
   ],
   "skills-sh-listed": [
    "fail",
    0,
    1
   ],
   "pricing-md": [
    "na",
    0,
    2
   ],
   "nlweb-schema-feeds": [
    "fail",
    0,
    1
   ],
   "mcp-well-known-discovery": [
    "pass",
    2,
    2
   ],
   "agent-mode-view": [
    "fail",
    0,
    2
   ],
   "link-headers-discovery": [
    "fail",
    0,
    1
   ],
   "markdown-url-fallback": [
    "na",
    0,
    2
   ],
   "modular-llms-txt": [
    "na",
    0,
    1
   ],
   "sitemap-lastmod": [
    "pass",
    1,
    1
   ],
   "robots-agent-user-policy": [
    "pass",
    2,
    2
   ],
   "llms-txt-exists": [
    "pass",
    1,
    1
   ],
   "llms-txt-formatting": [
    "warning",
    1,
    2
   ],
   "json-ld": [
    "warning",
    3,
    4
   ],
   "pricing-info": [
    "warning",
    1,
    3
   ],
   "public-api-docs": [
    "pass",
    3,
    3
   ],
   "agent-instruction": [
    "na",
    0,
    3
   ],
   "skills-sh-quality": [
    "fail",
    0,
    2
   ],
   "json-ld-entity-linking": [
    "pass",
    2,
    2
   ],
   "metadata-completeness": [
    "pass",
    2,
    2
   ],
   "org-schema-completeness": [
    "warning",
    1,
    2
   ],
   "schema-type-breadth": [
    "fail",
    0,
    2
   ],
   "trust-anchors": [
    "pass",
    2,
    2
   ],
   "llms-txt-links-resolve": [
    "pass",
    2,
    2
   ],
   "markdown-link-alternate": [
    "fail",
    0,
    1
   ],
   "markdown-frontmatter": [
    "na",
    0,
    1
   ],
   "redirect-hygiene": [
    "pass",
    1,
    1
   ],
   "page-token-budget": [
    "pass",
    1,
    1
   ],
   "code-fence-validity": [
    "pass",
    1,
    1
   ],
   "docs-auth-gate": [
    "pass",
    2,
    2
   ],
   "openapi-spec": [
    "na",
    0,
    7
   ],
   "developer-portal": [
    "pass",
    6,
    6
   ],
   "api-catalog-rfc9727": [
    "fail",
    0,
    2
   ],
   "markdown-negotiation": [
    "fail",
    0,
    1
   ],
   "markdown-negotiation-vary": [
    "fail",
    0,
    1
   ],
   "agent-ua-markdown": [
    "fail",
    0,
    1
   ],
   "agent-crawler-reachability": [
    "pass",
    2,
    2
   ],
   "mcp-tool-descriptions": [
    "na",
    0,
    3
   ],
   "mcp-param-schemas": [
    "na",
    0,
    2
   ],
   "mcp-server-identity": [
    "na",
    0,
    1
   ],
   "mcp-tool-listing": [
    "na",
    0,
    3
   ],
   "mcp-tool-naming": [
    "na",
    0,
    2
   ],
   "public-api": [
    "pass",
    7,
    7
   ],
   "oauth-support": [
    "pass",
    5,
    5
   ],
   "scoped-permissions": [
    "pass",
    5,
    5
   ],
   "mcp-auth-mechanism": [
    "warning",
    1,
    2
   ],
   "mcp-oauth-metadata": [
    "pass",
    2,
    2
   ],
   "mcp-pkce-s256": [
    "pass",
    2,
    2
   ],
   "onboarding-friction": [
    "warning",
    1,
    2
   ],
   "web-bot-auth-directory": [
    "na",
    0,
    2
   ],
   "oauth-protected-resource": [
    "pass",
    2,
    2
   ],
   "auth-md-exists": [
    "fail",
    0,
    2
   ],
   "auth-md-structure": [
    "fail",
    0,
    2
   ],
   "auth-md-walkthrough-simulation": [
    "na",
    0,
    2
   ],
   "agent-auth-discovery-metadata": [
    "warning",
    1,
    3
   ],
   "agent-auth-www-authenticate": [
    "na",
    0,
    1
   ],
   "agent-auth-endpoints-reachable": [
    "fail",
    0,
    2
   ],
   "pap-discovery": [
    "na",
    0,
    2
   ],
   "pap-issuer-binding": [
    "na",
    0,
    2
   ],
   "pap-auth-config": [
    "na",
    0,
    2
   ],
   "pap-interfaces": [
    "na",
    0,
    2
   ],
   "pap-endpoint-enforcement": [
    "na",
    0,
    2
   ],
   "pap-cross-protocol": [
    "na",
    0,
    2
   ],
   "mcp-server": [
    "warning",
    5,
    6
   ],
   "mcp-error-handling": [
    "na",
    0,
    2
   ],
   "mcp-transport-modern": [
    "na",
    0,
    1
   ],
   "webmcp": [
    "fail",
    0,
    5
   ],
   "rate-limit-headers": [
    "pass",
    2,
    2
   ],
   "idempotency-key-support": [
    "fail",
    0,
    3
   ],
   "json-error-responses": [
    "na",
    0,
    4
   ],
   "api-error-model": [
    "na",
    0,
    3
   ],
   "api-versioning-policy": [
    "na",
    0,
    3
   ],
   "pagination-shape": [
    "na",
    0,
    2
   ],
   "async-job-pattern": [
    "na",
    0,
    2
   ],
   "cli-tool": [
    "pass",
    3,
    3
   ],
   "rest-sdk-packages": [
    "warning",
    2,
    3
   ],
   "nlweb-ask": [
    "fail",
    0,
    1
   ],
   "nlweb-streaming": [
    "fail",
    0,
    1
   ],
   "response-schema-coverage": [
    "na",
    0,
    2
   ],
   "mcp-tool-annotations": [
    "na",
    0,
    2
   ],
   "mcp-server-card": [
    "fail",
    0,
    2
   ],
   "mcp-multi-surface-coverage": [
    "fail",
    0,
    2
   ],
   "sandbox-environment": [
    "warning",
    0,
    2
   ],
   "batch-endpoints": [
    "na",
    0,
    2
   ],
   "mcp-resource-listing": [
    "na",
    0,
    3
   ],
   "graphql-error-type-definition": [
    "fail",
    0,
    3
   ],
   "graphql-versioning-policy": [
    "fail",
    0,
    2
   ],
   "graphql-pagination-pattern": [
    "warning",
    1,
    2
   ],
   "graphql-async-job-pattern": [
    "fail",
    0,
    2
   ],
   "graphql-schema-completeness": [
    "na",
    0,
    3
   ],
   "graphql-batch-mutations": [
    "na",
    0,
    2
   ],
   "agent-friendly-404": [
    "na",
    0,
    2
   ],
   "ax-document-structure": [
    "pass",
    3,
    3
   ],
   "ax-native-controls": [
    "pass",
    3,
    3
   ],
   "ax-accessible-names": [
    "pass",
    2,
    2
   ],
   "ax-form-labeling": [
    "na",
    0,
    2
   ],
   "ax-tree-injection-safe": [
    "pass",
    2,
    2
   ],
   "mcp-app-registry": [
    "na",
    0,
    4
   ],
   "a2ui-support": [
    "na",
    0,
    2
   ],
   "mcp-apps-ui-quality": [
    "na",
    0,
    4
   ],
   "mcp-view-domain": [
    "na",
    0,
    4
   ],
   "mcp-view-csp": [
    "na",
    0,
    4
   ],
   "api-schema-analysis": [
    "pass",
    2,
    2
   ],
   "function-calling-compat": [
    "fail",
    0,
    2
   ],
   "mcp-resource-quality": [
    "na",
    0,
    3
   ],
   "mpp-support": [
    "na",
    0,
    2
   ],
   "x402-support": [
    "na",
    0,
    2
   ],
   "ucp-support": [
    "na",
    0,
    3
   ],
   "acp-support": [
    "na",
    0,
    3
   ],
   "acp-delegate-payment": [
    "na",
    0,
    3
   ],
   "ap2-support": [
    "na",
    0,
    3
   ]
  },
  "flagged": [
   {
    "id": "webmcp",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 5,
    "tier": "required",
    "est": 3.1,
    "detail": "No WebMCP support detected - no document.modelContext / navigator.modelContext usage found (scanned 1 of 1 same-origin script bundle(s) for modelContext registrations)"
   },
   {
    "id": "graphql-error-type-definition",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": 1.9,
    "detail": "GraphQL introspection auth-gated and no typed graphql error model documentation found on GraphQL-tagged pages"
   },
   {
    "id": "idempotency-key-support",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": 1.9,
    "detail": "GraphQL introspection auth-gated and no idempotency documentation found on GraphQL-tagged pages"
   },
   {
    "id": "content-no-js",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 3,
    "tier": "required",
    "est": 1.4,
    "detail": "Homepage: 5008 chars, semantic headings (1 H1 + 7 H2s + 16 H3s), 8.4% content ratio. Sampled pages with almost no text without JavaScript (4 of 5): https://gitlab.com/explore/groups (156 chars),"
   },
   {
    "id": "pricing-info",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 3,
    "tier": "required",
    "est": 1.4,
    "detail": "Pricing link found but no dedicated pricing page at standard path"
   },
   {
    "id": "schema-type-breadth",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.4,
    "detail": "No extended schema types found - AI can only answer basic questions about this entity"
   },
   {
    "id": "ard-catalog",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 1.2,
    "detail": "No /.well-known/ard.json, no same-site rel=\"ard\" link, and no legacy /.well-known/ai-catalog.json"
   },
   {
    "id": "function-calling-compat",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.2,
    "detail": "No API spec found - function calling requires discoverable endpoints"
   },
   {
    "id": "graphql-async-job-pattern",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.2,
    "detail": "GraphQL introspection auth-gated and no graphql async-job pattern documentation found on GraphQL-tagged pages"
   },
   {
    "id": "graphql-versioning-policy",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.2,
    "detail": "GraphQL introspection auth-gated and no graphql versioning / deprecation policy documentation found on GraphQL-tagged pages"
   },
   {
    "id": "json-ld",
    "layer": "accessibility",
    "status": "warning",
    "score": 3,
    "max": 4,
    "tier": "required",
    "est": 0.7,
    "detail": "JSON-LD Organization found - missing description and one of sameAs / logo / address / contactPoint on this entity"
   },
   {
    "id": "llms-txt-formatting",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.7,
    "detail": "The llms.txt is well-formatted with markdown links, but at 87,620 characters it exceeds the 30,000-character recommendation for a navigation index."
   },
   {
    "id": "org-schema-completeness",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.7,
    "detail": "Organization schema found but missing: contactPoint, address"
   },
   {
    "id": "graphql-pagination-pattern",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "GraphQL pagination pattern described in documentation at https://docs.gitlab.com/api/rest; schema not introspectable to verify"
   },
   {
    "id": "mcp-server",
    "layer": "usability",
    "status": "warning",
    "score": 5,
    "max": 6,
    "tier": "required",
    "est": 0.6,
    "detail": "MCP server detected at https://support.gitlab.com/mcp; it requires authentication. Presence is verified (5/6), but Ora could not inspect its tools or verify access scopes without credentials."
   },
   {
    "id": "onboarding-friction",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "Onboarding signals described but not verified live: free tier available, self-serve key generation, sandbox/test environment"
   },
   {
    "id": "rest-sdk-packages",
    "layer": "usability",
    "status": "warning",
    "score": 2,
    "max": 3,
    "tier": "recommended",
    "est": 0.6,
    "detail": "SDK packages found in npm, rubygems"
   },
   {
    "id": "agent-auth-discovery-metadata",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 3,
    "tier": "recommended",
    "est": 0.4,
    "detail": "PRM + AS metadata both present but AS metadata has no agent_auth block"
   },
   {
    "id": "agent-auth-endpoints-reachable",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.4,
    "detail": "No agent_auth endpoint URIs found in AS metadata or /auth.md prose; nothing to probe"
   },
   {
    "id": "auth-md-exists",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.4,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "auth-md-structure",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.4,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "mcp-multi-surface-coverage",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.4,
    "detail": "We found an MCP candidate for your documentation at https://support.gitlab.com/mcp, but could not verify that agents can use it. This bonus needs two MCP servers: one for your product so agents can take actions,"
   },
   {
    "id": "mcp-server-card",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.4,
    "detail": "No MCP server card found for https://support.gitlab.com/mcp (checked /.well-known/mcp/server-card.json, the site's ai-catalog.json, servers[].card in mcp.json, and <server>/server-card)"
   },
   {
    "id": "sandbox-environment",
    "layer": "usability",
    "status": "warning",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.4,
    "detail": "Sandbox/test environment mentioned in llms.txt but no sandbox surface verified"
   },
   {
    "id": "api-catalog-rfc9727",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.2,
    "detail": "No /.well-known/api-catalog found (RFC 9727)"
   },
   {
    "id": "mcp-auth-mechanism",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.2,
    "detail": "docs MCP is gated behind authentication - this defeats the purpose of a docs MCP for agent discovery"
   },
   {
    "id": "link-headers-discovery",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 0.1,
    "detail": "No HTTP Link response headers (RFC 8288) found"
   },
   {
    "id": "markdown-negotiation-vary",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.1,
    "detail": "Homepage https://gitlab.com does not meet the Markdown negotiation requirements: Accept: text/markdown returned text/plain; Accept: text/html returned text/plain; Vary header missing Accept (got \"none\")"
   },
   {
    "id": "agent-mode-view",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No agent mode view detected at ?mode=agent (optional)"
   },
   {
    "id": "agent-plugins-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No Agent Plugins manifest (plugin.json) found in discovered repos"
   },
   {
    "id": "agent-rules-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Could not locate a public repo containing agent configs or rules. If our probes missed it, AI coding agents likely will too - link the repo from your homepage or docs so it's discoverable."
   },
   {
    "id": "agent-ua-markdown",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly."
   },
   {
    "id": "markdown-link-alternate",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No sampled page advertises a markdown alternate. Add <link rel=\"alternate\" type=\"text/markdown\" href=\"...\"> (or the equivalent Link response header) pointing at a markdown twin of the page."
   },
   {
    "id": "markdown-negotiation",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Missing markdown content negotiation. Homepage returned text/plain when probed with Accept: text/markdown (expected text/markdown), and none of the well-known root paths (/llms.md, /auth.md, /agents.md, /developers.md, /api.md, /index.md,"
   },
   {
    "id": "nlweb-ask",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No NLWeb-conformant /ask endpoint found via GET or POST"
   },
   {
    "id": "nlweb-schema-feeds",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No schemamap: directive in robots.txt"
   },
   {
    "id": "nlweb-streaming",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "NLWeb /ask does not support SSE streaming via GET or POST"
   },
   {
    "id": "skills-sh-listed",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No official skills self-published on skills.sh (100 community skills with potential relation to this domain found, but only self-published official skills count)"
   },
   {
    "id": "skills-sh-quality",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No official skills on skills.sh to evaluate"
   }
  ],
  "seen": {
   "brand-search-accuracy": "gitlab.com ranks #2 for \"GitLab DevSecOps\" and #5 for \"GitLab DevOps\"",
   "wikipedia-presence": "Wikipedia \"GitLab\" and Wikidata Q16639197 both verified - domain confirmed on both sources",
   "robots-ai-policy-quality": "AI search crawlers: allowed in 18 of 18 checks (3 crawlers on 6 pages). AI training crawlers: allowed in 12 of 12 checks (2 crawlers on 6 pages), not scored.",
   "noindex-directives": "No noindex on the homepage: no robots, googlebot or bingbot meta tag and no X-Robots-Tag header hides it from search.",
   "sitemap": "Valid sitemap found at /sitemap.xml with 19358 entries",
   "content-no-js": "Homepage: 5008 chars, semantic headings (1 H1 + 7 H2s + 16 H3s), 8.4% content ratio. Sampled pages with almost no text without JavaScript (4 of 5): https://gitlab.com/explore/groups (156 chars),",
   "bot-detection": "Site accessible to 4 agent user-agents (ChatGPT-User, OAI-SearchBot, Claude-User, PerplexityBot).",
   "agent-discovery-file": "Can't verify: a bot shield answered our request to gitlab.com/.well-known/agent-skills/index.json (HTTP 403) instead of the site. That is not counted against the site.",
   "a2a-agent-card": "Can't verify: a bot shield answered our request to gitlab.com/.well-known/agent-card.json (HTTP 403) instead of the site. That is not counted against the site.",
   "mcp-well-known-discovery": "MCP server referenced in llms.txt",
   "robots-agent-user-policy": "No applicable crawl or usage restriction found for 3 user-triggered agents (chatgpt-user, claude-user, perplexity-user) on 1 public page: https://gitlab.com/. Declared policy only;",
   "llms-txt-exists": "Found the llms.txt at https://docs.gitlab.com/llms.txt.",
   "llms-txt-formatting": "The llms.txt is well-formatted with markdown links, but at 87,620 characters it exceeds the 30,000-character recommendation for a navigation index.",
   "json-ld": "JSON-LD Organization found - missing description and one of sameAs / logo / address / contactPoint on this entity",
   "public-api-docs": "Documentation site found at https://docs.gitlab.com",
   "metadata-completeness": "All metadata signals present: canonical URL, lang=\"en-US\", og:image, og:type",
   "page-token-budget": "All 6 measured pages fit an agent context budget (largest ~1K tokens)",
   "docs-auth-gate": "All 5 sampled pages are publicly readable (1 with substantive content)",
   "openapi-spec": "Can't verify: a bot shield answered our request to gitlab.com/swagger.json (HTTP 403) instead of the site. That is not counted against the site.",
   "developer-portal": "Developer portal found at /developers",
   "markdown-negotiation": "Missing markdown content negotiation. Homepage returned text/plain when probed with Accept: text/markdown (expected text/markdown), and none of the well-known root paths (/llms.md, /auth.md, /agents.md, /developers.md,",
   "agent-ua-markdown": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly.",
   "agent-crawler-reachability": "Reachable to every agent we tested - ChatGPT-User: reachable, OAI-SearchBot: reachable, Claude-User: reachable, PerplexityBot: reachable",
   "public-api": "REST API documentation found at https://docs.gitlab.com/ja-jp/. GraphQL endpoint at https://api.gitlab.com/graphql is reachable; introspection requires authentication (API key / OAuth),",
   "oauth-support": "OAuth authorization server metadata at https://support.gitlab.com/mcp/oauth",
   "mcp-server": "MCP server detected at https://support.gitlab.com/mcp; it requires authentication. Presence is verified (5/6), but Ora could not inspect its tools or verify access scopes without credentials.",
   "webmcp": "No WebMCP support detected - no document.modelContext / navigator.modelContext usage found (scanned 1 of 1 same-origin script bundle(s) for modelContext registrations)",
   "cli-tool": "CLI package found on npm: @gitlab/orbit",
   "rest-sdk-packages": "SDK packages found in npm, rubygems",
   "nlweb-ask": "No NLWeb-conformant /ask endpoint found via GET or POST",
   "mpp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "x402-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "ucp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "acp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "ap2-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites"
  }
 },
 {
  "slug": "gocardless",
  "name": "GoCardless",
  "domain": "gocardless.com",
  "finalUrl": "https://gocardless.com/",
  "read": "2026-11-09",
  "scannedAt": "2026-08-19T09:20:04.525+00:00",
  "score": 47,
  "max": 100,
  "grade": "D",
  "category": "Payments & Fintech",
  "scoringVersion": null,
  "rulesUrl": null,
  "summary": "GoCardless offers SDKs for developers, but lacks an OpenAPI specification.",
  "layers": [
   {
    "id": "discovery",
    "name": "Discovery",
    "score": 8,
    "max": 22
   },
   {
    "id": "accessibility",
    "name": "Access",
    "score": 34,
    "max": 64
   },
   {
    "id": "usability",
    "name": "Usability",
    "score": 26,
    "max": 54
   },
   {
    "id": "payments",
    "name": "Payments",
    "score": 0,
    "max": 0
   }
  ],
  "checks": {
   "ard-catalog": [
    "fail",
    0,
    3
   ],
   "ard-entries-valid": [
    "na",
    0,
    2
   ],
   "ard-trust-manifest": [
    "na",
    0,
    2
   ],
   "agentic-search-usecase": [
    "na",
    0,
    6
   ],
   "agentic-search-specific": [
    "fail",
    0,
    6
   ],
   "brand-search-accuracy": [
    "pass",
    3,
    3
   ],
   "wikipedia-presence": [
    "pass",
    4,
    4
   ],
   "robots-ai-policy-quality": [
    "fail",
    0,
    2
   ],
   "mcp-registry-listed": [
    "fail",
    0,
    1
   ],
   "npm-sdk-package": [
    "pass",
    1,
    1
   ],
   "agent-rules-repo": [
    "fail",
    0,
    1
   ],
   "agent-plugins-repo": [
    "fail",
    0,
    1
   ],
   "skills-sh-listed": [
    "fail",
    0,
    1
   ],
   "registry-branding": [
    "fail",
    0,
    2
   ],
   "chatgpt-app-listed": [
    "fail",
    0,
    2
   ],
   "sitemap": [
    "pass",
    2,
    2
   ],
   "content-no-js": [
    "pass",
    2,
    3
   ],
   "bot-detection": [
    "error",
    0,
    2
   ],
   "agent-discovery-file": [
    "fail",
    0,
    2
   ],
   "agent-skills-index-v2": [
    "na",
    0,
    2
   ],
   "a2a-agent-card": [
    "fail",
    0,
    2
   ],
   "pricing-md": [
    "fail",
    0,
    2
   ],
   "nlweb-schema-feeds": [
    "fail",
    0,
    1
   ],
   "mcp-well-known-discovery": [
    "pass",
    2,
    2
   ],
   "agent-mode-view": [
    "fail",
    0,
    2
   ],
   "content-efficiency": [
    "fail",
    0,
    2
   ],
   "content-crawl-depth": [
    "na",
    0,
    1
   ],
   "link-headers-discovery": [
    "fail",
    0,
    1
   ],
   "markdown-url-fallback": [
    "fail",
    0,
    2
   ],
   "modular-llms-txt": [
    "fail",
    0,
    1
   ],
   "sitemap-lastmod": [
    "fail",
    0,
    1
   ],
   "robots-agent-user-policy": [
    "pass",
    2,
    2
   ],
   "llms-txt-exists": [
    "pass",
    1,
    1
   ],
   "llms-txt-formatting": [
    "pass",
    2,
    2
   ],
   "json-ld": [
    "fail",
    0,
    4
   ],
   "pricing-info": [
    "pass",
    3,
    3
   ],
   "public-api-docs": [
    "pass",
    3,
    3
   ],
   "agent-instruction": [
    "fail",
    0,
    3
   ],
   "skills-sh-quality": [
    "fail",
    0,
    2
   ],
   "json-ld-entity-linking": [
    "fail",
    0,
    2
   ],
   "speakable-content": [
    "fail",
    0,
    1
   ],
   "metadata-completeness": [
    "pass",
    2,
    2
   ],
   "org-schema-completeness": [
    "fail",
    0,
    2
   ],
   "schema-type-breadth": [
    "fail",
    0,
    2
   ],
   "trust-anchors": [
    "pass",
    2,
    2
   ],
   "llms-txt-links-resolve": [
    "pass",
    2,
    2
   ],
   "markdown-link-alternate": [
    "fail",
    0,
    1
   ],
   "markdown-frontmatter": [
    "pass",
    1,
    1
   ],
   "redirect-hygiene": [
    "pass",
    1,
    1
   ],
   "page-token-budget": [
    "pass",
    1,
    1
   ],
   "code-fence-validity": [
    "pass",
    1,
    1
   ],
   "docs-auth-gate": [
    "pass",
    2,
    2
   ],
   "openapi-spec": [
    "fail",
    0,
    7
   ],
   "developer-portal": [
    "pass",
    6,
    6
   ],
   "api-catalog-rfc9727": [
    "fail",
    0,
    2
   ],
   "markdown-negotiation": [
    "pass",
    1,
    1
   ],
   "markdown-negotiation-vary": [
    "pass",
    1,
    1
   ],
   "agent-ua-markdown": [
    "fail",
    0,
    1
   ],
   "agent-crawler-reachability": [
    "fail",
    0,
    2
   ],
   "mcp-tool-descriptions": [
    "fail",
    0,
    3
   ],
   "mcp-param-schemas": [
    "fail",
    0,
    2
   ],
   "mcp-server-identity": [
    "fail",
    0,
    1
   ],
   "mcp-tool-listing": [
    "fail",
    0,
    3
   ],
   "mcp-tool-naming": [
    "fail",
    0,
    2
   ],
   "public-api": [
    "pass",
    7,
    7
   ],
   "oauth-support": [
    "warning",
    3,
    5
   ],
   "scoped-permissions": [
    "warning",
    3,
    5
   ],
   "mcp-auth-mechanism": [
    "na",
    0,
    2
   ],
   "mcp-oauth-metadata": [
    "na",
    0,
    2
   ],
   "mcp-pkce-s256": [
    "na",
    0,
    2
   ],
   "onboarding-friction": [
    "warning",
    1,
    2
   ],
   "web-bot-auth-directory": [
    "fail",
    0,
    2
   ],
   "oauth-protected-resource": [
    "fail",
    0,
    2
   ],
   "auth-md-exists": [
    "fail",
    0,
    2
   ],
   "auth-md-structure": [
    "fail",
    0,
    2
   ],
   "auth-md-walkthrough-simulation": [
    "na",
    0,
    2
   ],
   "agent-auth-discovery-metadata": [
    "fail",
    0,
    3
   ],
   "agent-auth-www-authenticate": [
    "fail",
    0,
    1
   ],
   "agent-auth-endpoints-reachable": [
    "fail",
    0,
    2
   ],
   "mcp-server": [
    "fail",
    0,
    6
   ],
   "mcp-error-handling": [
    "fail",
    0,
    2
   ],
   "mcp-transport-modern": [
    "fail",
    0,
    1
   ],
   "webmcp": [
    "fail",
    0,
    2
   ],
   "rate-limit-headers": [
    "na",
    0,
    2
   ],
   "idempotency-key-support": [
    "na",
    0,
    3
   ],
   "json-error-responses": [
    "fail",
    0,
    4
   ],
   "api-error-model": [
    "na",
    0,
    3
   ],
   "api-versioning-policy": [
    "na",
    0,
    3
   ],
   "pagination-shape": [
    "na",
    0,
    2
   ],
   "async-job-pattern": [
    "na",
    0,
    2
   ],
   "cli-tool": [
    "pass",
    3,
    3
   ],
   "rest-sdk-packages": [
    "pass",
    3,
    3
   ],
   "nlweb-ask": [
    "fail",
    0,
    1
   ],
   "nlweb-streaming": [
    "fail",
    0,
    1
   ],
   "response-schema-coverage": [
    "na",
    0,
    2
   ],
   "mcp-tool-annotations": [
    "fail",
    0,
    2
   ],
   "mcp-server-card": [
    "fail",
    0,
    2
   ],
   "mcp-multi-surface-coverage": [
    "fail",
    0,
    2
   ],
   "sandbox-environment": [
    "warning",
    0,
    2
   ],
   "batch-endpoints": [
    "na",
    0,
    2
   ],
   "mcp-resource-listing": [
    "fail",
    0,
    3
   ],
   "graphql-error-type-definition": [
    "na",
    0,
    3
   ],
   "graphql-versioning-policy": [
    "na",
    0,
    2
   ],
   "graphql-pagination-pattern": [
    "na",
    0,
    2
   ],
   "graphql-async-job-pattern": [
    "na",
    0,
    2
   ],
   "graphql-schema-completeness": [
    "na",
    0,
    3
   ],
   "graphql-batch-mutations": [
    "na",
    0,
    2
   ],
   "agent-friendly-404": [
    "pass",
    1,
    2
   ],
   "ax-document-structure": [
    "na",
    0,
    3
   ],
   "ax-native-controls": [
    "pass",
    3,
    3
   ],
   "ax-accessible-names": [
    "na",
    0,
    2
   ],
   "ax-form-labeling": [
    "na",
    0,
    2
   ],
   "ax-tree-injection-safe": [
    "pass",
    2,
    2
   ],
   "mcp-app-registry": [
    "na",
    0,
    4
   ],
   "a2ui-support": [
    "na",
    0,
    2
   ],
   "mcp-apps-ui-quality": [
    "na",
    0,
    4
   ],
   "mcp-view-domain": [
    "na",
    0,
    4
   ],
   "mcp-view-csp": [
    "na",
    0,
    4
   ],
   "api-schema-analysis": [
    "fail",
    0,
    2
   ],
   "function-calling-compat": [
    "fail",
    0,
    2
   ],
   "mcp-resource-quality": [
    "fail",
    0,
    3
   ],
   "mpp-support": [
    "na",
    0,
    2
   ],
   "x402-support": [
    "na",
    0,
    2
   ],
   "ucp-support": [
    "na",
    0,
    3
   ],
   "acp-support": [
    "na",
    0,
    3
   ],
   "acp-delegate-payment": [
    "na",
    0,
    3
   ],
   "ap2-support": [
    "na",
    0,
    3
   ]
  },
  "flagged": [
   {
    "id": "agentic-search-specific",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 6,
    "tier": "recommended",
    "est": 6.1,
    "detail": "Agent searched for \"cardless\" developer resources but found nothing relevant"
   },
   {
    "id": "mcp-server",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 6,
    "tier": "required",
    "est": 4.9,
    "detail": "No MCP server or manifest found"
   },
   {
    "id": "openapi-spec",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 7,
    "tier": "required",
    "est": 3.6,
    "detail": "No OpenAPI/Swagger specification found"
   },
   {
    "id": "json-error-responses",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 4,
    "tier": "required",
    "est": 3.3,
    "detail": "API does not return JSON error responses (or no API detected)"
   },
   {
    "id": "ard-catalog",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "required",
    "est": 3,
    "detail": "No /.well-known/ai-catalog.json"
   },
   {
    "id": "mcp-resource-listing",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": 2.5,
    "detail": "MCP server found but connection failed - cannot list resources"
   },
   {
    "id": "mcp-resource-quality",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": 2.5,
    "detail": "MCP server found but connection failed - cannot evaluate resource quality"
   },
   {
    "id": "json-ld",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 4,
    "tier": "required",
    "est": 2.1,
    "detail": "No JSON-LD structured data found on homepage"
   },
   {
    "id": "chatgpt-app-listed",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 2,
    "detail": "Not found in ChatGPT app directory"
   },
   {
    "id": "robots-ai-policy-quality",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 2,
    "detail": "No AI crawler directives in robots.txt"
   },
   {
    "id": "agent-instruction",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "required",
    "est": 1.6,
    "detail": "No agent instruction file with when-to-use guidance found"
   },
   {
    "id": "api-schema-analysis",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.6,
    "detail": "No API schema detected"
   },
   {
    "id": "function-calling-compat",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.6,
    "detail": "No API spec found - function calling requires discoverable endpoints"
   },
   {
    "id": "oauth-support",
    "layer": "usability",
    "status": "warning",
    "score": 3,
    "max": 5,
    "tier": "required",
    "est": 1.6,
    "detail": "OAuth mentioned in documentation at https://docs.gocardless.com but no OAuth or OpenID Connect endpoint responded"
   },
   {
    "id": "scoped-permissions",
    "layer": "usability",
    "status": "warning",
    "score": 3,
    "max": 5,
    "tier": "recommended",
    "est": 1.6,
    "detail": "Permissions mentioned at /docs but granularity unclear"
   },
   {
    "id": "webmcp",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 1.6,
    "detail": "No WebMCP support detected - no tool-attribute forms and no document.modelContext / navigator.modelContext usage found"
   },
   {
    "id": "agent-auth-discovery-metadata",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": 1.2,
    "detail": "Neither /.well-known/oauth-protected-resource nor /.well-known/oauth-authorization-server found. Probed: gocardless.com, api.gocardless.com."
   },
   {
    "id": "mcp-tool-descriptions",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": 1.2,
    "detail": "other MCP found but no tools available to evaluate"
   },
   {
    "id": "mcp-tool-listing",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": 1.2,
    "detail": "other MCP found but connection failed - cannot list tools"
   },
   {
    "id": "agent-crawler-reachability",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1,
    "detail": "No major AI crawler can reach the homepage - ChatGPT-User: unknown, ClaudeBot: unknown, Google-Extended: unknown, ora-agent: unknown, DeepSeekBot: unknown"
   },
   {
    "id": "agent-discovery-file",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 1,
    "detail": "No agent discovery file found"
   },
   {
    "id": "content-efficiency",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1,
    "detail": "Very low content efficiency: 1.00% (10118 text chars in 992KB HTML) - agents must process excessive markup noise"
   },
   {
    "id": "json-ld-entity-linking",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1,
    "detail": "No JSON-LD found - no entity linking possible"
   },
   {
    "id": "mcp-registry-listed",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 1,
    "detail": "No bi-directionally verified MCP registry entry found. To pass, either publish the server under your own domain/npm scope, get a verified Smithery listing with non-zero usage, or link the registry entry from your homepage or docs."
   },
   {
    "id": "org-schema-completeness",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1,
    "detail": "No JSON-LD found - Organization schema missing"
   },
   {
    "id": "schema-type-breadth",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1,
    "detail": "No extended schema types found - AI can only answer basic questions about this entity"
   },
   {
    "id": "agent-auth-endpoints-reachable",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.8,
    "detail": "No agent_auth endpoint URIs found in AS metadata or /auth.md prose; nothing to probe"
   },
   {
    "id": "auth-md-exists",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.8,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "auth-md-structure",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.8,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "mcp-error-handling",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.8,
    "detail": "other MCP found but connection failed - cannot test error handling"
   },
   {
    "id": "mcp-multi-surface-coverage",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.8,
    "detail": "You run an MCP server for your documentation, but not one for your product. This bonus needs two MCP servers: one for your product so agents can take actions,"
   },
   {
    "id": "mcp-param-schemas",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.8,
    "detail": "other MCP found but no tools available to evaluate"
   },
   {
    "id": "mcp-server-card",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.8,
    "detail": "No MCP server card found at /.well-known/mcp/server-card.json"
   },
   {
    "id": "mcp-tool-annotations",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.8,
    "detail": "other MCP found but no tools available to evaluate"
   },
   {
    "id": "mcp-tool-naming",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.8,
    "detail": "other MCP found but no tools available to evaluate"
   },
   {
    "id": "oauth-protected-resource",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.8,
    "detail": "No /.well-known/oauth-protected-resource found (RFC 9728)"
   },
   {
    "id": "onboarding-friction",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.8,
    "detail": "Moderate friction: self-serve key generation, sandbox/test environment"
   },
   {
    "id": "sandbox-environment",
    "layer": "usability",
    "status": "warning",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.8,
    "detail": "Sandbox/test environment mentioned at https://docs.gocardless.com but no sandbox surface verified"
   },
   {
    "id": "a2a-agent-card",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "No A2A agent card found at /.well-known/agent-card.json"
   },
   {
    "id": "api-catalog-rfc9727",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.5,
    "detail": "No /.well-known/api-catalog found (RFC 9727)"
   },
   {
    "id": "speakable-content",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.5,
    "detail": "No speakable content markup - agents must guess which content to present to users"
   },
   {
    "id": "agent-auth-www-authenticate",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.4,
    "detail": "No 401 with WWW-Authenticate: Bearer resource_metadata=... found. Probed [https://gocardless.com/api, https://gocardless.com/api/v1, https://gocardless.com/v1, https://gocardless.com/v2, https://gocardless.com/agent/auth,"
   },
   {
    "id": "mcp-server-identity",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.4,
    "detail": "other MCP found but connection failed"
   },
   {
    "id": "mcp-transport-modern",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.4,
    "detail": "other MCP found but connection failed - cannot determine transport"
   },
   {
    "id": "link-headers-discovery",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 0.2,
    "detail": "Link header present but no agent-relevant rel values (sitemap, describedby, alternate, service-desc)"
   },
   {
    "id": "sitemap-lastmod",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.2,
    "detail": "None of the 500 sampled sitemap entries carries a lastmod date. Add <lastmod> (W3C datetime) so agents can prioritize fresh content."
   },
   {
    "id": "agent-mode-view",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "?mode=agent returns same content as homepage (no dedicated agent view)"
   },
   {
    "id": "agent-plugins-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No Agent Plugins manifest (plugin.json) found in discovered repos"
   },
   {
    "id": "agent-rules-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Could not locate a public repo containing agent configs or rules. If our probes missed it, AI coding agents likely will too - link the repo from your homepage or docs so it's discoverable."
   },
   {
    "id": "agent-ua-markdown",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No probed bot User-Agent (GPTBot, ClaudeBot, ChatGPT-User, PerplexityBot, Google-Extended, Applebot-Extended, ora-agent, DeepSeekBot) receives markdown when requesting HTML."
   },
   {
    "id": "markdown-link-alternate",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No sampled page advertises a markdown alternate. Add <link rel=\"alternate\" type=\"text/markdown\" href=\"...\"> (or the equivalent Link response header) pointing at a markdown twin of the page."
   },
   {
    "id": "markdown-url-fallback",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "Homepage does not support the .md suffix. Probed https://gocardless.com/index.md and it did not return markdown (expected text/markdown content-type or a heading-led non-HTML body)."
   },
   {
    "id": "modular-llms-txt",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No section-level llms.txt files found (optional)"
   },
   {
    "id": "nlweb-ask",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No NLWeb-conformant /ask endpoint found via GET or POST"
   },
   {
    "id": "nlweb-schema-feeds",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No schemamap: directive in robots.txt"
   },
   {
    "id": "nlweb-streaming",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "NLWeb /ask does not support SSE streaming via GET or POST"
   },
   {
    "id": "pricing-md",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No pricing.md found - agents need machine-readable pricing to compare products and make purchase recommendations"
   },
   {
    "id": "registry-branding",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No registry branding (name, icon, description) found"
   },
   {
    "id": "skills-sh-listed",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No official skills self-published on skills.sh (21 community skills with potential relation to this domain found, but only self-published official skills count)"
   },
   {
    "id": "skills-sh-quality",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No official skills on skills.sh to evaluate"
   },
   {
    "id": "web-bot-auth-directory",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No /.well-known/http-message-signatures-directory found"
   }
  ],
  "seen": {
   "brand-search-accuracy": "gocardless.com appears at position #3 in a clean brand-name search for \"GoCardless payments fintech\" (4 total matches)",
   "wikipedia-presence": "Wikipedia \"GoCardless\" and Wikidata Q111418549 both verified - domain confirmed on both sources",
   "robots-ai-policy-quality": "No AI crawler directives in robots.txt",
   "sitemap": "Valid sitemap found at https://gocardless.com/sitemap-index.xml with multiple sitemaps entries",
   "content-no-js": "7637 chars with H1 but flat heading structure",
   "bot-detection": "Could not test bot user agents",
   "agent-discovery-file": "No agent discovery file found",
   "a2a-agent-card": "No A2A agent card found at /.well-known/agent-card.json",
   "mcp-well-known-discovery": "MCP server referenced in llms.txt",
   "robots-agent-user-policy": "No robots.txt restriction on user-triggered agents - they can read the site",
   "llms-txt-exists": "Found the llms.txt at https://docs.gocardless.com/llms.txt.",
   "llms-txt-formatting": "The llms.txt is well-formatted: 136 lines with markdown links, 20,693 characters in total.",
   "json-ld": "No JSON-LD structured data found on homepage",
   "public-api-docs": "Documentation site found at https://docs.gocardless.com",
   "metadata-completeness": "All metadata signals present: canonical URL, lang=\"en-GB\", og:image, og:type",
   "page-token-budget": "All 6 measured pages fit an agent context budget (largest ~3K tokens)",
   "docs-auth-gate": "All 5 sampled pages are publicly readable (5 with substantive content)",
   "openapi-spec": "No OpenAPI/Swagger specification found",
   "developer-portal": "Developer portal found at /developers",
   "markdown-negotiation": "Returns markdown when requested via Accept header",
   "agent-ua-markdown": "No probed bot User-Agent (GPTBot, ClaudeBot, ChatGPT-User, PerplexityBot, Google-Extended, Applebot-Extended, ora-agent, DeepSeekBot) receives markdown when requesting HTML.",
   "agent-crawler-reachability": "No major AI crawler can reach the homepage - ChatGPT-User: unknown, ClaudeBot: unknown, Google-Extended: unknown, ora-agent: unknown, DeepSeekBot: unknown",
   "public-api": "REST API documentation found at https://docs.gocardless.com/docs/getting-started. Best-of-protocols score: 7/7.",
   "oauth-support": "OAuth mentioned in documentation at https://docs.gocardless.com but no OAuth or OpenID Connect endpoint responded",
   "mcp-server": "No MCP server or manifest found",
   "webmcp": "No WebMCP support detected - no tool-attribute forms and no document.modelContext / navigator.modelContext usage found",
   "cli-tool": "CLI tool found on PyPI: gocardless",
   "rest-sdk-packages": "SDK packages found across 3 ecosystems: npm, pypi, rubygems",
   "nlweb-ask": "No NLWeb-conformant /ask endpoint found via GET or POST",
   "mpp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "x402-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "ucp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "acp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "ap2-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites"
  }
 },
 {
  "slug": "google-cloud",
  "name": "Google Cloud",
  "domain": "cloud.google.com",
  "finalUrl": "https://cloud.google.com/",
  "read": "2026-11-09",
  "scannedAt": "2026-10-28T22:56:04.178+00:00",
  "score": 51,
  "max": 100,
  "grade": "C",
  "category": "Infrastructure",
  "scoringVersion": null,
  "rulesUrl": null,
  "summary": "Google Cloud offers strong developer resource discoverability and SDK packages, but lacks JavaScript-free content for AI crawlers.",
  "layers": [
   {
    "id": "discovery",
    "name": "Discovery",
    "score": 15,
    "max": 17
   },
   {
    "id": "accessibility",
    "name": "Access",
    "score": 25,
    "max": 55
   },
   {
    "id": "usability",
    "name": "Usability",
    "score": 17,
    "max": 48
   },
   {
    "id": "payments",
    "name": "Payments",
    "score": 0,
    "max": 0
   }
  ],
  "checks": {
   "ard-catalog": [
    "warning",
    0,
    1
   ],
   "ai-catalog-published": [
    "warning",
    0,
    1
   ],
   "ard-entries-valid": [
    "na",
    0,
    2
   ],
   "ard-trust-manifest": [
    "na",
    0,
    2
   ],
   "agentic-search-usecase": [
    "na",
    0,
    6
   ],
   "agentic-search-specific": [
    "pass",
    3,
    3
   ],
   "brand-search-accuracy": [
    "warning",
    2,
    3
   ],
   "wikipedia-presence": [
    "pass",
    4,
    4
   ],
   "robots-ai-policy-quality": [
    "pass",
    2,
    2
   ],
   "mcp-registry-listed": [
    "na",
    0,
    1
   ],
   "npm-sdk-package": [
    "pass",
    1,
    1
   ],
   "agent-rules-repo": [
    "fail",
    0,
    1
   ],
   "agent-plugins-repo": [
    "fail",
    0,
    1
   ],
   "registry-branding": [
    "na",
    0,
    2
   ],
   "chatgpt-app-listed": [
    "pass",
    2,
    2
   ],
   "noindex-directives": [
    "pass",
    1,
    1
   ],
   "sitemap": [
    "pass",
    2,
    2
   ],
   "content-no-js": [
    "fail",
    0,
    3
   ],
   "bot-detection": [
    "pass",
    2,
    2
   ],
   "agent-discovery-file": [
    "fail",
    0,
    2
   ],
   "agent-skills-index-v2": [
    "na",
    0,
    2
   ],
   "a2a-agent-card": [
    "fail",
    0,
    2
   ],
   "skills-sh-listed": [
    "pass",
    1,
    1
   ],
   "pricing-md": [
    "warning",
    1,
    2
   ],
   "nlweb-schema-feeds": [
    "fail",
    0,
    1
   ],
   "mcp-well-known-discovery": [
    "fail",
    0,
    2
   ],
   "agent-mode-view": [
    "fail",
    0,
    2
   ],
   "link-headers-discovery": [
    "fail",
    0,
    1
   ],
   "markdown-url-fallback": [
    "fail",
    0,
    2
   ],
   "modular-llms-txt": [
    "fail",
    0,
    1
   ],
   "sitemap-lastmod": [
    "na",
    0,
    1
   ],
   "robots-agent-user-policy": [
    "pass",
    2,
    2
   ],
   "llms-txt-exists": [
    "warning",
    0,
    1
   ],
   "llms-txt-formatting": [
    "fail",
    0,
    2
   ],
   "json-ld": [
    "fail",
    0,
    4
   ],
   "pricing-info": [
    "pass",
    3,
    3
   ],
   "public-api-docs": [
    "pass",
    3,
    3
   ],
   "agent-instruction": [
    "fail",
    0,
    3
   ],
   "skills-sh-quality": [
    "pass",
    2,
    2
   ],
   "json-ld-entity-linking": [
    "fail",
    0,
    2
   ],
   "metadata-completeness": [
    "pass",
    2,
    2
   ],
   "org-schema-completeness": [
    "fail",
    0,
    2
   ],
   "schema-type-breadth": [
    "fail",
    0,
    2
   ],
   "trust-anchors": [
    "fail",
    0,
    2
   ],
   "llms-txt-links-resolve": [
    "na",
    0,
    2
   ],
   "markdown-link-alternate": [
    "fail",
    0,
    1
   ],
   "markdown-frontmatter": [
    "na",
    0,
    1
   ],
   "redirect-hygiene": [
    "pass",
    1,
    1
   ],
   "page-token-budget": [
    "pass",
    1,
    1
   ],
   "code-fence-validity": [
    "na",
    0,
    1
   ],
   "docs-auth-gate": [
    "na",
    0,
    2
   ],
   "openapi-spec": [
    "fail",
    0,
    7
   ],
   "developer-portal": [
    "pass",
    6,
    6
   ],
   "api-catalog-rfc9727": [
    "warning",
    1,
    2
   ],
   "markdown-negotiation": [
    "fail",
    0,
    1
   ],
   "markdown-negotiation-vary": [
    "fail",
    0,
    1
   ],
   "agent-ua-markdown": [
    "fail",
    0,
    1
   ],
   "agent-crawler-reachability": [
    "pass",
    2,
    2
   ],
   "mcp-tool-descriptions": [
    "na",
    0,
    3
   ],
   "mcp-param-schemas": [
    "na",
    0,
    2
   ],
   "mcp-server-identity": [
    "na",
    0,
    1
   ],
   "mcp-tool-listing": [
    "na",
    0,
    3
   ],
   "mcp-tool-naming": [
    "na",
    0,
    2
   ],
   "public-api": [
    "warning",
    3,
    7
   ],
   "oauth-support": [
    "pass",
    5,
    5
   ],
   "scoped-permissions": [
    "fail",
    0,
    5
   ],
   "mcp-auth-mechanism": [
    "na",
    0,
    2
   ],
   "mcp-oauth-metadata": [
    "na",
    0,
    2
   ],
   "mcp-pkce-s256": [
    "na",
    0,
    2
   ],
   "onboarding-friction": [
    "warning",
    1,
    2
   ],
   "web-bot-auth-directory": [
    "warning",
    1,
    2
   ],
   "oauth-protected-resource": [
    "fail",
    0,
    2
   ],
   "auth-md-exists": [
    "fail",
    0,
    2
   ],
   "auth-md-structure": [
    "fail",
    0,
    2
   ],
   "auth-md-walkthrough-simulation": [
    "na",
    0,
    2
   ],
   "agent-auth-discovery-metadata": [
    "fail",
    0,
    3
   ],
   "agent-auth-www-authenticate": [
    "fail",
    0,
    1
   ],
   "agent-auth-endpoints-reachable": [
    "fail",
    0,
    2
   ],
   "pap-discovery": [
    "na",
    0,
    2
   ],
   "pap-issuer-binding": [
    "na",
    0,
    2
   ],
   "pap-auth-config": [
    "na",
    0,
    2
   ],
   "pap-interfaces": [
    "na",
    0,
    2
   ],
   "pap-endpoint-enforcement": [
    "na",
    0,
    2
   ],
   "pap-cross-protocol": [
    "na",
    0,
    2
   ],
   "mcp-server": [
    "warning",
    2,
    6
   ],
   "mcp-error-handling": [
    "na",
    0,
    2
   ],
   "mcp-transport-modern": [
    "na",
    0,
    1
   ],
   "webmcp": [
    "fail",
    0,
    5
   ],
   "rate-limit-headers": [
    "na",
    0,
    2
   ],
   "idempotency-key-support": [
    "na",
    0,
    3
   ],
   "json-error-responses": [
    "fail",
    0,
    4
   ],
   "api-error-model": [
    "na",
    0,
    3
   ],
   "api-versioning-policy": [
    "na",
    0,
    3
   ],
   "pagination-shape": [
    "na",
    0,
    2
   ],
   "async-job-pattern": [
    "na",
    0,
    2
   ],
   "cli-tool": [
    "fail",
    0,
    3
   ],
   "rest-sdk-packages": [
    "warning",
    2,
    3
   ],
   "nlweb-ask": [
    "fail",
    0,
    1
   ],
   "nlweb-streaming": [
    "fail",
    0,
    1
   ],
   "response-schema-coverage": [
    "na",
    0,
    2
   ],
   "mcp-tool-annotations": [
    "na",
    0,
    2
   ],
   "mcp-server-card": [
    "fail",
    0,
    2
   ],
   "mcp-multi-surface-coverage": [
    "fail",
    0,
    2
   ],
   "sandbox-environment": [
    "fail",
    0,
    2
   ],
   "batch-endpoints": [
    "na",
    0,
    2
   ],
   "mcp-resource-listing": [
    "na",
    0,
    3
   ],
   "graphql-error-type-definition": [
    "na",
    0,
    3
   ],
   "graphql-versioning-policy": [
    "na",
    0,
    2
   ],
   "graphql-pagination-pattern": [
    "na",
    0,
    2
   ],
   "graphql-async-job-pattern": [
    "na",
    0,
    2
   ],
   "graphql-schema-completeness": [
    "na",
    0,
    3
   ],
   "graphql-batch-mutations": [
    "na",
    0,
    2
   ],
   "agent-friendly-404": [
    "fail",
    0,
    2
   ],
   "ax-document-structure": [
    "na",
    0,
    3
   ],
   "ax-native-controls": [
    "na",
    0,
    3
   ],
   "ax-accessible-names": [
    "na",
    0,
    2
   ],
   "ax-form-labeling": [
    "na",
    0,
    2
   ],
   "ax-tree-injection-safe": [
    "pass",
    2,
    2
   ],
   "mcp-app-registry": [
    "na",
    0,
    4
   ],
   "a2ui-support": [
    "na",
    0,
    2
   ],
   "mcp-apps-ui-quality": [
    "na",
    0,
    4
   ],
   "mcp-view-domain": [
    "na",
    0,
    4
   ],
   "mcp-view-csp": [
    "na",
    0,
    4
   ],
   "api-schema-analysis": [
    "warning",
    1,
    2
   ],
   "function-calling-compat": [
    "warning",
    1,
    2
   ],
   "mcp-resource-quality": [
    "na",
    0,
    3
   ],
   "mpp-support": [
    "na",
    0,
    2
   ],
   "x402-support": [
    "na",
    0,
    2
   ],
   "ucp-support": [
    "na",
    0,
    3
   ],
   "acp-support": [
    "na",
    0,
    3
   ],
   "acp-delegate-payment": [
    "na",
    0,
    3
   ],
   "ap2-support": [
    "na",
    0,
    3
   ]
  },
  "flagged": [
   {
    "id": "scoped-permissions",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 5,
    "tier": "recommended",
    "est": 4.6,
    "detail": "No declared OAuth scopes, security schemes, or scoped-permission documentation found"
   },
   {
    "id": "webmcp",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 5,
    "tier": "required",
    "est": 4.6,
    "detail": "No WebMCP support detected - no document.modelContext / navigator.modelContext usage found"
   },
   {
    "id": "openapi-spec",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 7,
    "tier": "required",
    "est": 4.2,
    "detail": "No OpenAPI/Swagger specification found"
   },
   {
    "id": "json-error-responses",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 4,
    "tier": "required",
    "est": 3.7,
    "detail": "API does not return JSON error responses (or no API detected)"
   },
   {
    "id": "mcp-server",
    "layer": "usability",
    "status": "warning",
    "score": 2,
    "max": 6,
    "tier": "required",
    "est": 3.7,
    "detail": "MCP mentioned at https://developers.home.google.com/mcp/developer but no standard manifest endpoint found"
   },
   {
    "id": "public-api",
    "layer": "usability",
    "status": "warning",
    "score": 3,
    "max": 7,
    "tier": "required",
    "est": 3.7,
    "detail": "API described in documentation at https://docs.cloud.google.com but no machine-verifiable API surface confirmed. Best-of-protocols score: 3/7."
   },
   {
    "id": "cli-tool",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": 2.8,
    "detail": "No CLI tool found"
   },
   {
    "id": "json-ld",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 4,
    "tier": "required",
    "est": 2.4,
    "detail": "No JSON-LD structured data found on homepage"
   },
   {
    "id": "agent-friendly-404",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.9,
    "detail": "Nonexistent paths return HTTP 200 with the app shell (soft-404). Agents probing for resources conclude every path exists. Return a real HTTP 404 status for unknown paths."
   },
   {
    "id": "agent-instruction",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "required",
    "est": 1.8,
    "detail": "No agent instruction file with when-to-use guidance found"
   },
   {
    "id": "content-no-js",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "required",
    "est": 1.8,
    "detail": "Very little text content (46 chars) - likely JS-rendered, invisible to AI crawlers"
   },
   {
    "id": "agent-auth-discovery-metadata",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": 1.7,
    "detail": "Neither /.well-known/oauth-protected-resource nor /.well-known/oauth-authorization-server found. Probed: cloud.google.com, api.cloud.google.com."
   },
   {
    "id": "ard-catalog",
    "layer": "discovery",
    "status": "warning",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 1.3,
    "detail": "/.well-known/ard.json exists but is not valid JSON"
   },
   {
    "id": "brand-search-accuracy",
    "layer": "discovery",
    "status": "warning",
    "score": 2,
    "max": 3,
    "tier": "required",
    "est": 1.3,
    "detail": "cloud.google.com ranks #6 for \"Google Cloud services\" and appears 3 times in the top 10"
   },
   {
    "id": "agent-discovery-file",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 1.2,
    "detail": "No agent discovery file found"
   },
   {
    "id": "json-ld-entity-linking",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.2,
    "detail": "No JSON-LD found - no entity linking possible"
   },
   {
    "id": "llms-txt-formatting",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.2,
    "detail": "No llms.txt found to evaluate quality"
   },
   {
    "id": "org-schema-completeness",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.2,
    "detail": "No JSON-LD found - Organization schema missing"
   },
   {
    "id": "schema-type-breadth",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.2,
    "detail": "No extended schema types found - AI can only answer basic questions about this entity"
   },
   {
    "id": "trust-anchors",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 1.2,
    "detail": "No trust anchor pages found with sufficient content (About, Contact, Privacy)"
   },
   {
    "id": "agent-auth-endpoints-reachable",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.1,
    "detail": "No agent_auth endpoint URIs found in AS metadata or /auth.md prose; nothing to probe"
   },
   {
    "id": "auth-md-exists",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 1.1,
    "detail": "Path https://cloud.google.com/auth.md returned HTML (SPA / 404 fallback), not an auth.md document"
   },
   {
    "id": "auth-md-structure",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.1,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "mcp-multi-surface-coverage",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.1,
    "detail": "This bonus needs two MCP servers: one for your product so agents can take actions, and a separate one for your documentation so agents can answer questions from your docs."
   },
   {
    "id": "mcp-server-card",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.1,
    "detail": "No MCP server card found (checked /.well-known/mcp/server-card.json, the site's ai-catalog.json, servers[].card in mcp.json, and <server>/server-card)"
   },
   {
    "id": "oauth-protected-resource",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 1.1,
    "detail": "No /.well-known/oauth-protected-resource found (RFC 9728)"
   },
   {
    "id": "sandbox-environment",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.1,
    "detail": "No sandbox or test environment found"
   },
   {
    "id": "api-schema-analysis",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.9,
    "detail": "REST: OpenAPI spec found but failed to parse for complexity analysis"
   },
   {
    "id": "function-calling-compat",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.9,
    "detail": "API spec found but couldn't validate function calling compatibility"
   },
   {
    "id": "onboarding-friction",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.9,
    "detail": "Onboarding signals described but not verified live: free tier available, self-serve key generation, sandbox/test environment"
   },
   {
    "id": "rest-sdk-packages",
    "layer": "usability",
    "status": "warning",
    "score": 2,
    "max": 3,
    "tier": "recommended",
    "est": 0.9,
    "detail": "SDK packages found in npm, rubygems"
   },
   {
    "id": "a2a-agent-card",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "No A2A agent card found at /.well-known/agent-card.json"
   },
   {
    "id": "agent-auth-www-authenticate",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.6,
    "detail": "No 401 with WWW-Authenticate: Bearer resource_metadata=... found. Probed [https://cloud.google.com/api, https://cloud.google.com/api/v1, https://cloud.google.com/v1, https://cloud.google.com/v2, https://cloud.google.com/agent/identity,"
   },
   {
    "id": "llms-txt-exists",
    "layer": "accessibility",
    "status": "warning",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 0.6,
    "detail": "A file is present at https://cloud.google.com/.well-known/llms.txt, but it returns an HTML page rather than a plain-text llms.txt."
   },
   {
    "id": "mcp-well-known-discovery",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "No MCP server URL discovered"
   },
   {
    "id": "api-catalog-rfc9727",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "required",
    "est": 0.3,
    "detail": "api-catalog responded but body is not valid JSON"
   },
   {
    "id": "link-headers-discovery",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 0.3,
    "detail": "No HTTP Link response headers (RFC 8288) found"
   },
   {
    "id": "markdown-negotiation-vary",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.3,
    "detail": "Homepage https://cloud.google.com does not meet the Markdown negotiation requirements: Accept: text/markdown returned text/html; charset=utf-8; Vary header missing Accept (got \"sec-fetch-dest, sec-fetch-mode, sec-fetch-site\")"
   },
   {
    "id": "ai-catalog-published",
    "layer": "discovery",
    "status": "warning",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.1,
    "detail": "/.well-known/ai-catalog.json exists but is not valid JSON"
   },
   {
    "id": "agent-mode-view",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "?mode=agent returns same content as homepage (no dedicated agent view)"
   },
   {
    "id": "agent-plugins-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No Agent Plugins manifest (plugin.json) found in discovered repos"
   },
   {
    "id": "agent-rules-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Could not locate a public repo containing agent configs or rules. If our probes missed it, AI coding agents likely will too - link the repo from your homepage or docs so it's discoverable."
   },
   {
    "id": "agent-ua-markdown",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly."
   },
   {
    "id": "markdown-link-alternate",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No sampled page advertises a markdown alternate. Add <link rel=\"alternate\" type=\"text/markdown\" href=\"...\"> (or the equivalent Link response header) pointing at a markdown twin of the page."
   },
   {
    "id": "markdown-negotiation",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Missing markdown content negotiation. Homepage returned text/html when probed with Accept: text/markdown (expected text/markdown), and none of the well-known root paths (/llms.md, /auth.md, /agents.md, /developers.md, /api.md, /index.md,"
   },
   {
    "id": "markdown-url-fallback",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "Homepage does not support the .md suffix. Probed https://cloud.google.com/index.md and it did not return markdown (expected text/markdown content-type or a heading-led non-HTML body)."
   },
   {
    "id": "modular-llms-txt",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No section-level llms.txt found. Tried /docs/llms.txt, /api/llms.txt, /developers/llms.txt, /guides/llms.txt, /reference/llms.txt. This is a bonus check: it can add a point and never costs one."
   },
   {
    "id": "nlweb-ask",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No NLWeb-conformant /ask endpoint found via GET or POST"
   },
   {
    "id": "nlweb-schema-feeds",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No schemamap: directive in robots.txt"
   },
   {
    "id": "nlweb-streaming",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "NLWeb /ask does not support SSE streaming via GET or POST"
   },
   {
    "id": "pricing-md",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "pricing.md found at /pricing.md (83 lines), but it does not open with a # heading - start it with a # title so agents read it as markdown"
   },
   {
    "id": "web-bot-auth-directory",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "Web Bot Auth directory found but body is not valid JSON"
   }
  ],
  "seen": {
   "brand-search-accuracy": "cloud.google.com ranks #6 for \"Google Cloud services\" and appears 3 times in the top 10",
   "wikipedia-presence": "Wikipedia \"Google Cloud Platform\" and Wikidata Q17054505 both verified - domain confirmed on both sources",
   "robots-ai-policy-quality": "AI search crawlers: allowed in 3 of 3 checks (3 crawlers on 1 page). AI training crawlers: allowed in 2 of 2 checks (2 crawlers on 1 page), not scored.",
   "noindex-directives": "No noindex on the homepage: no robots, googlebot or bingbot meta tag and no X-Robots-Tag header hides it from search.",
   "sitemap": "Valid sitemap found at https://cloud.google.com/sitemap.xml with multiple sitemaps entries",
   "content-no-js": "Very little text content (46 chars) - likely JS-rendered, invisible to AI crawlers",
   "bot-detection": "Site accessible to 4 agent user-agents (ChatGPT-User, OAI-SearchBot, Claude-User, PerplexityBot).",
   "agent-discovery-file": "No agent discovery file found",
   "a2a-agent-card": "No A2A agent card found at /.well-known/agent-card.json",
   "mcp-well-known-discovery": "No MCP server URL discovered",
   "robots-agent-user-policy": "No applicable crawl or usage restriction found for 3 user-triggered agents (chatgpt-user, claude-user, perplexity-user) on 1 public page: https://cloud.google.com/. Declared policy only;",
   "llms-txt-exists": "A file is present at https://cloud.google.com/.well-known/llms.txt, but it returns an HTML page rather than a plain-text llms.txt.",
   "llms-txt-formatting": "No llms.txt found to evaluate quality",
   "json-ld": "No JSON-LD structured data found on homepage",
   "public-api-docs": "Documentation site found at https://docs.cloud.google.com",
   "metadata-completeness": "All metadata signals present: canonical URL, lang=\"en-US\", og:image, og:type",
   "page-token-budget": "All 1 measured page fit an agent context budget (largest ~1K tokens)",
   "docs-auth-gate": "No content pages sampled",
   "openapi-spec": "No OpenAPI/Swagger specification found",
   "developer-portal": "Developer portal found at /developers",
   "markdown-negotiation": "Missing markdown content negotiation. Homepage returned text/html when probed with Accept: text/markdown (expected text/markdown), and none of the well-known root paths (/llms.md, /auth.md, /agents.md, /developers.md,",
   "agent-ua-markdown": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly.",
   "agent-crawler-reachability": "Reachable to every agent we tested - ChatGPT-User: reachable, OAI-SearchBot: reachable, Claude-User: reachable, PerplexityBot: reachable",
   "public-api": "API described in documentation at https://docs.cloud.google.com but no machine-verifiable API surface confirmed. Best-of-protocols score: 3/7.",
   "oauth-support": "OpenID Connect discovery endpoint found at https://accounts.cloud.google.com",
   "mcp-server": "MCP mentioned at https://developers.home.google.com/mcp/developer but no standard manifest endpoint found",
   "webmcp": "No WebMCP support detected - no document.modelContext / navigator.modelContext usage found",
   "cli-tool": "No CLI tool found",
   "rest-sdk-packages": "SDK packages found in npm, rubygems",
   "nlweb-ask": "No NLWeb-conformant /ask endpoint found via GET or POST",
   "mpp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "x402-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "ucp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "acp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "ap2-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites"
  }
 },
 {
  "slug": "hashicorp",
  "name": "HashiCorp",
  "domain": "hashicorp.com",
  "finalUrl": "https://www.hashicorp.com/en",
  "read": "2026-11-09",
  "scannedAt": "2026-10-16T18:06:05.587+00:00",
  "score": 60,
  "max": 100,
  "grade": "C",
  "category": "Infrastructure",
  "scoringVersion": null,
  "rulesUrl": null,
  "summary": "HashiCorp offers developer resource discoverability, but lacks an OpenAPI specification.",
  "layers": [
   {
    "id": "discovery",
    "name": "Discovery",
    "score": 14,
    "max": 15
   },
   {
    "id": "accessibility",
    "name": "Access",
    "score": 34,
    "max": 57
   },
   {
    "id": "usability",
    "name": "Usability",
    "score": 24,
    "max": 56
   },
   {
    "id": "payments",
    "name": "Payments",
    "score": 0,
    "max": 0
   }
  ],
  "checks": {
   "ard-catalog": [
    "fail",
    0,
    1
   ],
   "ai-catalog-published": [
    "na",
    0,
    1
   ],
   "ard-entries-valid": [
    "na",
    0,
    2
   ],
   "ard-trust-manifest": [
    "na",
    0,
    2
   ],
   "agentic-search-usecase": [
    "na",
    0,
    6
   ],
   "agentic-search-specific": [
    "pass",
    3,
    3
   ],
   "brand-search-accuracy": [
    "pass",
    3,
    3
   ],
   "wikipedia-presence": [
    "pass",
    4,
    4
   ],
   "robots-ai-policy-quality": [
    "pass",
    2,
    2
   ],
   "mcp-registry-listed": [
    "na",
    0,
    1
   ],
   "npm-sdk-package": [
    "pass",
    1,
    1
   ],
   "agent-rules-repo": [
    "fail",
    0,
    1
   ],
   "agent-plugins-repo": [
    "fail",
    0,
    1
   ],
   "registry-branding": [
    "na",
    0,
    2
   ],
   "chatgpt-app-listed": [
    "fail",
    0,
    2
   ],
   "noindex-directives": [
    "pass",
    1,
    1
   ],
   "sitemap": [
    "pass",
    2,
    2
   ],
   "content-no-js": [
    "pass",
    3,
    3
   ],
   "bot-detection": [
    "pass",
    2,
    2
   ],
   "agent-discovery-file": [
    "fail",
    0,
    2
   ],
   "agent-skills-index-v2": [
    "na",
    0,
    2
   ],
   "a2a-agent-card": [
    "fail",
    0,
    2
   ],
   "skills-sh-listed": [
    "pass",
    1,
    1
   ],
   "pricing-md": [
    "fail",
    0,
    2
   ],
   "nlweb-schema-feeds": [
    "fail",
    0,
    1
   ],
   "mcp-well-known-discovery": [
    "fail",
    0,
    2
   ],
   "agent-mode-view": [
    "fail",
    0,
    2
   ],
   "link-headers-discovery": [
    "fail",
    0,
    1
   ],
   "markdown-url-fallback": [
    "fail",
    0,
    2
   ],
   "modular-llms-txt": [
    "fail",
    0,
    1
   ],
   "sitemap-lastmod": [
    "pass",
    1,
    1
   ],
   "robots-agent-user-policy": [
    "pass",
    2,
    2
   ],
   "llms-txt-exists": [
    "fail",
    0,
    1
   ],
   "llms-txt-formatting": [
    "fail",
    0,
    2
   ],
   "json-ld": [
    "fail",
    0,
    4
   ],
   "pricing-info": [
    "pass",
    3,
    3
   ],
   "public-api-docs": [
    "pass",
    3,
    3
   ],
   "agent-instruction": [
    "warning",
    2,
    3
   ],
   "skills-sh-quality": [
    "pass",
    2,
    2
   ],
   "json-ld-entity-linking": [
    "fail",
    0,
    2
   ],
   "metadata-completeness": [
    "pass",
    2,
    2
   ],
   "org-schema-completeness": [
    "fail",
    0,
    2
   ],
   "schema-type-breadth": [
    "fail",
    0,
    2
   ],
   "trust-anchors": [
    "pass",
    2,
    2
   ],
   "llms-txt-links-resolve": [
    "na",
    0,
    2
   ],
   "markdown-link-alternate": [
    "fail",
    0,
    1
   ],
   "markdown-frontmatter": [
    "na",
    0,
    1
   ],
   "redirect-hygiene": [
    "pass",
    1,
    1
   ],
   "page-token-budget": [
    "pass",
    1,
    1
   ],
   "code-fence-validity": [
    "na",
    0,
    1
   ],
   "docs-auth-gate": [
    "pass",
    2,
    2
   ],
   "openapi-spec": [
    "fail",
    0,
    7
   ],
   "developer-portal": [
    "pass",
    6,
    6
   ],
   "api-catalog-rfc9727": [
    "fail",
    0,
    2
   ],
   "markdown-negotiation": [
    "fail",
    0,
    1
   ],
   "markdown-negotiation-vary": [
    "fail",
    0,
    1
   ],
   "agent-ua-markdown": [
    "fail",
    0,
    1
   ],
   "agent-crawler-reachability": [
    "pass",
    2,
    2
   ],
   "mcp-tool-descriptions": [
    "na",
    0,
    3
   ],
   "mcp-param-schemas": [
    "na",
    0,
    2
   ],
   "mcp-server-identity": [
    "na",
    0,
    1
   ],
   "mcp-tool-listing": [
    "na",
    0,
    3
   ],
   "mcp-tool-naming": [
    "na",
    0,
    2
   ],
   "public-api": [
    "warning",
    3,
    7
   ],
   "oauth-support": [
    "pass",
    5,
    5
   ],
   "scoped-permissions": [
    "fail",
    0,
    5
   ],
   "mcp-auth-mechanism": [
    "na",
    0,
    2
   ],
   "mcp-oauth-metadata": [
    "na",
    0,
    2
   ],
   "mcp-pkce-s256": [
    "na",
    0,
    2
   ],
   "onboarding-friction": [
    "warning",
    1,
    2
   ],
   "web-bot-auth-directory": [
    "fail",
    0,
    2
   ],
   "oauth-protected-resource": [
    "fail",
    0,
    2
   ],
   "auth-md-exists": [
    "fail",
    0,
    2
   ],
   "auth-md-structure": [
    "fail",
    0,
    2
   ],
   "auth-md-walkthrough-simulation": [
    "na",
    0,
    2
   ],
   "agent-auth-discovery-metadata": [
    "fail",
    0,
    3
   ],
   "agent-auth-www-authenticate": [
    "fail",
    0,
    1
   ],
   "agent-auth-endpoints-reachable": [
    "fail",
    0,
    2
   ],
   "pap-discovery": [
    "na",
    0,
    2
   ],
   "pap-issuer-binding": [
    "na",
    0,
    2
   ],
   "pap-auth-config": [
    "na",
    0,
    2
   ],
   "pap-interfaces": [
    "na",
    0,
    2
   ],
   "pap-endpoint-enforcement": [
    "na",
    0,
    2
   ],
   "pap-cross-protocol": [
    "na",
    0,
    2
   ],
   "mcp-server": [
    "warning",
    2,
    6
   ],
   "mcp-error-handling": [
    "na",
    0,
    2
   ],
   "mcp-transport-modern": [
    "na",
    0,
    1
   ],
   "webmcp": [
    "fail",
    0,
    5
   ],
   "rate-limit-headers": [
    "na",
    0,
    2
   ],
   "idempotency-key-support": [
    "na",
    0,
    3
   ],
   "json-error-responses": [
    "fail",
    0,
    4
   ],
   "api-error-model": [
    "na",
    0,
    3
   ],
   "api-versioning-policy": [
    "na",
    0,
    3
   ],
   "pagination-shape": [
    "na",
    0,
    2
   ],
   "async-job-pattern": [
    "na",
    0,
    2
   ],
   "cli-tool": [
    "fail",
    0,
    3
   ],
   "rest-sdk-packages": [
    "warning",
    2,
    3
   ],
   "nlweb-ask": [
    "fail",
    0,
    1
   ],
   "nlweb-streaming": [
    "fail",
    0,
    1
   ],
   "response-schema-coverage": [
    "na",
    0,
    2
   ],
   "mcp-tool-annotations": [
    "na",
    0,
    2
   ],
   "mcp-server-card": [
    "fail",
    0,
    2
   ],
   "mcp-multi-surface-coverage": [
    "fail",
    0,
    2
   ],
   "sandbox-environment": [
    "warning",
    0,
    2
   ],
   "batch-endpoints": [
    "na",
    0,
    2
   ],
   "mcp-resource-listing": [
    "na",
    0,
    3
   ],
   "graphql-error-type-definition": [
    "na",
    0,
    3
   ],
   "graphql-versioning-policy": [
    "na",
    0,
    2
   ],
   "graphql-pagination-pattern": [
    "na",
    0,
    2
   ],
   "graphql-async-job-pattern": [
    "na",
    0,
    2
   ],
   "graphql-schema-completeness": [
    "na",
    0,
    3
   ],
   "graphql-batch-mutations": [
    "na",
    0,
    2
   ],
   "agent-friendly-404": [
    "warning",
    1,
    2
   ],
   "ax-document-structure": [
    "pass",
    3,
    3
   ],
   "ax-native-controls": [
    "pass",
    3,
    3
   ],
   "ax-accessible-names": [
    "pass",
    2,
    2
   ],
   "ax-form-labeling": [
    "na",
    0,
    2
   ],
   "ax-tree-injection-safe": [
    "pass",
    2,
    2
   ],
   "mcp-app-registry": [
    "na",
    0,
    4
   ],
   "a2ui-support": [
    "na",
    0,
    2
   ],
   "mcp-apps-ui-quality": [
    "na",
    0,
    4
   ],
   "mcp-view-domain": [
    "na",
    0,
    4
   ],
   "mcp-view-csp": [
    "na",
    0,
    4
   ],
   "api-schema-analysis": [
    "fail",
    0,
    2
   ],
   "function-calling-compat": [
    "fail",
    0,
    2
   ],
   "mcp-resource-quality": [
    "na",
    0,
    3
   ],
   "mpp-support": [
    "na",
    0,
    2
   ],
   "x402-support": [
    "na",
    0,
    2
   ],
   "ucp-support": [
    "na",
    0,
    3
   ],
   "acp-support": [
    "na",
    0,
    3
   ],
   "acp-delegate-payment": [
    "na",
    0,
    3
   ],
   "ap2-support": [
    "na",
    0,
    3
   ]
  },
  "flagged": [
   {
    "id": "openapi-spec",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 7,
    "tier": "required",
    "est": 4.1,
    "detail": "No OpenAPI/Swagger specification found"
   },
   {
    "id": "scoped-permissions",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 5,
    "tier": "recommended",
    "est": 4,
    "detail": "No declared OAuth scopes, security schemes, or scoped-permission documentation found"
   },
   {
    "id": "webmcp",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 5,
    "tier": "required",
    "est": 4,
    "detail": "No WebMCP support detected - no tool-attribute forms and no document.modelContext / navigator.modelContext usage found (scanned 8 of 42 same-origin script bundle(s) for modelContext registrations)"
   },
   {
    "id": "json-error-responses",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 4,
    "tier": "required",
    "est": 3.2,
    "detail": "API does not return JSON error responses (or no API detected)"
   },
   {
    "id": "mcp-server",
    "layer": "usability",
    "status": "warning",
    "score": 2,
    "max": 6,
    "tier": "required",
    "est": 3.2,
    "detail": "MCP mentioned at https://developer.hashicorp.com/terraform/mcp-server/deploy but no standard manifest endpoint found"
   },
   {
    "id": "public-api",
    "layer": "usability",
    "status": "warning",
    "score": 3,
    "max": 7,
    "tier": "required",
    "est": 3.2,
    "detail": "API described in documentation at https://developer.hashicorp.com but no machine-verifiable API surface confirmed. Best-of-protocols score: 3/7."
   },
   {
    "id": "cli-tool",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": 2.4,
    "detail": "No CLI tool found"
   },
   {
    "id": "json-ld",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 4,
    "tier": "required",
    "est": 2.3,
    "detail": "No JSON-LD structured data found on homepage"
   },
   {
    "id": "api-schema-analysis",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.6,
    "detail": "No API schema detected"
   },
   {
    "id": "function-calling-compat",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.6,
    "detail": "No API spec found - function calling requires discoverable endpoints"
   },
   {
    "id": "ard-catalog",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 1.5,
    "detail": "No /.well-known/ard.json (and no legacy /.well-known/ai-catalog.json)"
   },
   {
    "id": "agent-auth-discovery-metadata",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": 1.3,
    "detail": "Neither /.well-known/oauth-protected-resource nor /.well-known/oauth-authorization-server found. Probed: hashicorp.com, api.hashicorp.com."
   },
   {
    "id": "agent-discovery-file",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 1.2,
    "detail": "No agent discovery file found"
   },
   {
    "id": "json-ld-entity-linking",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.2,
    "detail": "No JSON-LD found - no entity linking possible"
   },
   {
    "id": "llms-txt-formatting",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.2,
    "detail": "No llms.txt found to evaluate quality"
   },
   {
    "id": "org-schema-completeness",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.2,
    "detail": "No JSON-LD found - Organization schema missing"
   },
   {
    "id": "schema-type-breadth",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.2,
    "detail": "No extended schema types found - AI can only answer basic questions about this entity"
   },
   {
    "id": "agent-auth-endpoints-reachable",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.9,
    "detail": "No agent_auth endpoint URIs found in AS metadata or /auth.md prose; nothing to probe"
   },
   {
    "id": "auth-md-exists",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.9,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "auth-md-structure",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.9,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "mcp-multi-surface-coverage",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.9,
    "detail": "This bonus needs two MCP servers: one for your product so agents can take actions, and a separate one for your documentation so agents can answer questions from your docs."
   },
   {
    "id": "mcp-server-card",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.9,
    "detail": "No MCP server card found (checked /.well-known/mcp/server-card.json, the site's ai-catalog.json, servers[].card in mcp.json, and <server>/server-card)"
   },
   {
    "id": "oauth-protected-resource",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.9,
    "detail": "No /.well-known/oauth-protected-resource found (RFC 9728)"
   },
   {
    "id": "sandbox-environment",
    "layer": "usability",
    "status": "warning",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.9,
    "detail": "Sandbox/test environment mentioned at https://developer.hashicorp.com but no sandbox surface verified"
   },
   {
    "id": "agent-friendly-404",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.8,
    "detail": "The nonexistent path https://hashicorp.com/__ora-404-probe-4xdqfjoa correctly returns HTTP 404. Partial credit: no Markdown error body was detected."
   },
   {
    "id": "onboarding-friction",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.8,
    "detail": "Onboarding signals described but not verified live: sandbox/test environment"
   },
   {
    "id": "rest-sdk-packages",
    "layer": "usability",
    "status": "warning",
    "score": 2,
    "max": 3,
    "tier": "recommended",
    "est": 0.8,
    "detail": "SDK packages found in npm, rubygems"
   },
   {
    "id": "agent-instruction",
    "layer": "accessibility",
    "status": "warning",
    "score": 2,
    "max": 3,
    "tier": "required",
    "est": 0.6,
    "detail": "When-to-use guidance found at https://developer.hashicorp.com"
   },
   {
    "id": "llms-txt-exists",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 0.6,
    "detail": "No llms.txt found at /llms.txt or /.well-known/llms.txt."
   },
   {
    "id": "a2a-agent-card",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "No A2A agent card found at /.well-known/agent-card.json"
   },
   {
    "id": "api-catalog-rfc9727",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.5,
    "detail": "No /.well-known/api-catalog found (RFC 9727)"
   },
   {
    "id": "mcp-well-known-discovery",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "No MCP server URL discovered"
   },
   {
    "id": "agent-auth-www-authenticate",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.4,
    "detail": "No 401 with WWW-Authenticate: Bearer resource_metadata=... found. Probed [https://hashicorp.com/api, https://hashicorp.com/api/v1, https://hashicorp.com/v1, https://hashicorp.com/v2, https://hashicorp.com/agent/identity,"
   },
   {
    "id": "chatgpt-app-listed",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.2,
    "detail": "Not found in ChatGPT app directory"
   },
   {
    "id": "link-headers-discovery",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 0.2,
    "detail": "Link header present but no agent-relevant rel values (sitemap, describedby, alternate, service-desc)"
   },
   {
    "id": "markdown-negotiation-vary",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.2,
    "detail": "Homepage https://hashicorp.com does not meet the Markdown negotiation requirements: Accept: text/markdown returned text/html; charset=utf-8; Vary header missing Accept (got \"rsc, next-router-state-tree, next-router-prefetch\")"
   },
   {
    "id": "agent-mode-view",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "?mode=agent returns same content as homepage (no dedicated agent view)"
   },
   {
    "id": "agent-plugins-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No Agent Plugins manifest (plugin.json) found in discovered repos"
   },
   {
    "id": "agent-rules-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Could not locate a public repo containing agent configs or rules. If our probes missed it, AI coding agents likely will too - link the repo from your homepage or docs so it's discoverable."
   },
   {
    "id": "agent-ua-markdown",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No probed bot User-Agent (GPTBot, ClaudeBot, ChatGPT-User, PerplexityBot, Google-Extended, Applebot-Extended, ora-agent, DeepSeekBot) receives markdown when requesting HTML."
   },
   {
    "id": "markdown-link-alternate",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No sampled page advertises a markdown alternate. Add <link rel=\"alternate\" type=\"text/markdown\" href=\"...\"> (or the equivalent Link response header) pointing at a markdown twin of the page."
   },
   {
    "id": "markdown-negotiation",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Missing markdown content negotiation. Homepage returned text/html when probed with Accept: text/markdown (expected text/markdown), and none of the well-known root paths (/llms.md, /auth.md, /agents.md, /developers.md, /api.md, /index.md,"
   },
   {
    "id": "markdown-url-fallback",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "Homepage does not support the .md suffix. Probed https://hashicorp.com/index.md and it did not return markdown (expected text/markdown content-type or a heading-led non-HTML body)."
   },
   {
    "id": "modular-llms-txt",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No section-level llms.txt found. Tried /docs/llms.txt, /api/llms.txt, /developers/llms.txt, /guides/llms.txt, /reference/llms.txt, /en/llms.txt, /contact-sales/llms.txt, /cloud/llms.txt, /resources/llms.txt, /events/llms.txt."
   },
   {
    "id": "nlweb-ask",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No NLWeb-conformant /ask endpoint found via GET or POST"
   },
   {
    "id": "nlweb-schema-feeds",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No schemamap: directive in robots.txt"
   },
   {
    "id": "nlweb-streaming",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "NLWeb /ask does not support SSE streaming via GET or POST"
   },
   {
    "id": "pricing-md",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No pricing.md found - agents need machine-readable pricing to compare products and make purchase recommendations"
   },
   {
    "id": "web-bot-auth-directory",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No /.well-known/http-message-signatures-directory found"
   }
  ],
  "seen": {
   "brand-search-accuracy": "hashicorp.com ranks #2 for \"HashiCorp | An IBM Company cloud security\"",
   "wikipedia-presence": "Wikipedia \"HashiCorp\" and Wikidata Q21463167 both verified - domain confirmed on both sources",
   "robots-ai-policy-quality": "AI search crawlers: allowed in 3 of 3 checks (3 crawlers on 1 page). AI training crawlers: allowed in 2 of 2 checks (2 crawlers on 1 page), not scored.",
   "noindex-directives": "No noindex on the homepage: no robots, googlebot or bingbot meta tag and no X-Robots-Tag header hides it from search.",
   "sitemap": "Valid sitemap found at https://hashicorp.com/sitemap.xml with 3897 entries",
   "content-no-js": "6252 chars, semantic headings (1 H1 + 9 H2s + 1 H3s), 8.6% content ratio",
   "bot-detection": "Site accessible to 1 agent user-agents (Claude-User). Can't verify ChatGPT-User, OAI-SearchBot, PerplexityBot. A bot shield, rate limit, or timeout stopped our test request.",
   "agent-discovery-file": "No agent discovery file found",
   "a2a-agent-card": "No A2A agent card found at /.well-known/agent-card.json",
   "mcp-well-known-discovery": "No MCP server URL discovered",
   "robots-agent-user-policy": "No applicable crawl or usage restriction found for 3 user-triggered agents (chatgpt-user, claude-user, perplexity-user) on 1 public page: https://hashicorp.com/. Declared policy only;",
   "llms-txt-exists": "No llms.txt found at /llms.txt or /.well-known/llms.txt.",
   "llms-txt-formatting": "No llms.txt found to evaluate quality",
   "json-ld": "No JSON-LD structured data found on homepage",
   "public-api-docs": "Documentation site found at https://developer.hashicorp.com",
   "metadata-completeness": "All metadata signals present: canonical URL, lang=\"en\", og:image, og:type",
   "page-token-budget": "All 6 measured pages fit an agent context budget (largest ~6K tokens)",
   "docs-auth-gate": "All 5 sampled pages are publicly readable (5 with substantive content)",
   "openapi-spec": "No OpenAPI/Swagger specification found",
   "developer-portal": "Developer documentation portal found at https://developer.hashicorp.com",
   "markdown-negotiation": "Missing markdown content negotiation. Homepage returned text/html when probed with Accept: text/markdown (expected text/markdown), and none of the well-known root paths (/llms.md, /auth.md, /agents.md, /developers.md,",
   "agent-ua-markdown": "No probed bot User-Agent (GPTBot, ClaudeBot, ChatGPT-User, PerplexityBot, Google-Extended, Applebot-Extended, ora-agent, DeepSeekBot) receives markdown when requesting HTML.",
   "agent-crawler-reachability": "Reachable to Claude-User. A bot shield, rate limit, or timeout stopped our test request. Real crawlers come from their own networks and may get through. (ChatGPT-User: cannot verify, OAI-SearchBot: cannot verify,",
   "public-api": "API described in documentation at https://developer.hashicorp.com but no machine-verifiable API surface confirmed. Best-of-protocols score: 3/7.",
   "oauth-support": "OpenID Connect discovery endpoint found at https://auth.hashicorp.com",
   "mcp-server": "MCP mentioned at https://developer.hashicorp.com/terraform/mcp-server/deploy but no standard manifest endpoint found",
   "webmcp": "No WebMCP support detected - no tool-attribute forms and no document.modelContext / navigator.modelContext usage found (scanned 8 of 42 same-origin script bundle(s) for modelContext registrations)",
   "cli-tool": "No CLI tool found",
   "rest-sdk-packages": "SDK packages found in npm, rubygems",
   "nlweb-ask": "No NLWeb-conformant /ask endpoint found via GET or POST",
   "mpp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "x402-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "ucp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "acp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "ap2-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites"
  }
 },
 {
  "slug": "heroku",
  "name": "Heroku",
  "domain": "heroku.com",
  "finalUrl": "https://www.heroku.com/",
  "read": "2026-11-09",
  "scannedAt": "2026-11-01T23:17:14.144+00:00",
  "score": 73,
  "max": 100,
  "grade": "B",
  "category": "Infrastructure",
  "scoringVersion": null,
  "rulesUrl": null,
  "summary": "Heroku offers CLI and MCP server integration, but lacks OpenAPI specification and scoped OAuth permissions documentation.",
  "layers": [
   {
    "id": "discovery",
    "name": "Discovery",
    "score": 11,
    "max": 16
   },
   {
    "id": "accessibility",
    "name": "Access",
    "score": 43,
    "max": 61
   },
   {
    "id": "usability",
    "name": "Usability",
    "score": 53,
    "max": 69
   },
   {
    "id": "payments",
    "name": "Payments",
    "score": 0,
    "max": 0
   }
  ],
  "checks": {
   "ard-catalog": [
    "fail",
    0,
    1
   ],
   "ai-catalog-published": [
    "na",
    0,
    1
   ],
   "ard-entries-valid": [
    "na",
    0,
    2
   ],
   "ard-trust-manifest": [
    "na",
    0,
    2
   ],
   "agentic-search-usecase": [
    "na",
    0,
    6
   ],
   "agentic-search-specific": [
    "warning",
    1,
    3
   ],
   "brand-search-accuracy": [
    "warning",
    1,
    3
   ],
   "wikipedia-presence": [
    "pass",
    4,
    4
   ],
   "robots-ai-policy-quality": [
    "pass",
    2,
    2
   ],
   "mcp-registry-listed": [
    "pass",
    1,
    1
   ],
   "npm-sdk-package": [
    "pass",
    1,
    1
   ],
   "agent-rules-repo": [
    "fail",
    0,
    1
   ],
   "agent-plugins-repo": [
    "fail",
    0,
    1
   ],
   "registry-branding": [
    "fail",
    0,
    2
   ],
   "chatgpt-app-listed": [
    "fail",
    0,
    2
   ],
   "noindex-directives": [
    "pass",
    1,
    1
   ],
   "sitemap": [
    "pass",
    2,
    2
   ],
   "content-no-js": [
    "pass",
    3,
    3
   ],
   "bot-detection": [
    "pass",
    2,
    2
   ],
   "agent-discovery-file": [
    "fail",
    0,
    2
   ],
   "agent-skills-index-v2": [
    "na",
    0,
    2
   ],
   "a2a-agent-card": [
    "fail",
    0,
    2
   ],
   "skills-sh-listed": [
    "fail",
    0,
    1
   ],
   "pricing-md": [
    "fail",
    0,
    2
   ],
   "nlweb-schema-feeds": [
    "fail",
    0,
    1
   ],
   "mcp-well-known-discovery": [
    "pass",
    2,
    2
   ],
   "agent-mode-view": [
    "fail",
    0,
    2
   ],
   "link-headers-discovery": [
    "fail",
    0,
    1
   ],
   "markdown-url-fallback": [
    "fail",
    0,
    2
   ],
   "modular-llms-txt": [
    "fail",
    0,
    1
   ],
   "sitemap-lastmod": [
    "pass",
    1,
    1
   ],
   "robots-agent-user-policy": [
    "pass",
    2,
    2
   ],
   "llms-txt-exists": [
    "pass",
    1,
    1
   ],
   "llms-txt-formatting": [
    "pass",
    2,
    2
   ],
   "json-ld": [
    "warning",
    2,
    4
   ],
   "pricing-info": [
    "pass",
    3,
    3
   ],
   "public-api-docs": [
    "pass",
    3,
    3
   ],
   "agent-instruction": [
    "fail",
    0,
    3
   ],
   "skills-sh-quality": [
    "fail",
    0,
    2
   ],
   "json-ld-entity-linking": [
    "pass",
    2,
    2
   ],
   "metadata-completeness": [
    "pass",
    2,
    2
   ],
   "org-schema-completeness": [
    "warning",
    1,
    2
   ],
   "schema-type-breadth": [
    "fail",
    0,
    2
   ],
   "trust-anchors": [
    "warning",
    1,
    2
   ],
   "llms-txt-links-resolve": [
    "pass",
    2,
    2
   ],
   "markdown-link-alternate": [
    "fail",
    0,
    1
   ],
   "markdown-frontmatter": [
    "na",
    0,
    1
   ],
   "redirect-hygiene": [
    "pass",
    1,
    1
   ],
   "page-token-budget": [
    "pass",
    1,
    1
   ],
   "code-fence-validity": [
    "pass",
    1,
    1
   ],
   "docs-auth-gate": [
    "pass",
    2,
    2
   ],
   "openapi-spec": [
    "fail",
    0,
    7
   ],
   "developer-portal": [
    "pass",
    6,
    6
   ],
   "api-catalog-rfc9727": [
    "fail",
    0,
    2
   ],
   "markdown-negotiation": [
    "fail",
    0,
    1
   ],
   "markdown-negotiation-vary": [
    "fail",
    0,
    1
   ],
   "agent-ua-markdown": [
    "fail",
    0,
    1
   ],
   "agent-crawler-reachability": [
    "pass",
    2,
    2
   ],
   "mcp-tool-descriptions": [
    "na",
    0,
    3
   ],
   "mcp-param-schemas": [
    "na",
    0,
    2
   ],
   "mcp-server-identity": [
    "na",
    0,
    1
   ],
   "mcp-tool-listing": [
    "na",
    0,
    3
   ],
   "mcp-tool-naming": [
    "na",
    0,
    2
   ],
   "public-api": [
    "pass",
    7,
    7
   ],
   "oauth-support": [
    "pass",
    5,
    5
   ],
   "scoped-permissions": [
    "fail",
    0,
    5
   ],
   "mcp-auth-mechanism": [
    "pass",
    2,
    2
   ],
   "mcp-oauth-metadata": [
    "pass",
    2,
    2
   ],
   "mcp-pkce-s256": [
    "pass",
    2,
    2
   ],
   "onboarding-friction": [
    "pass",
    2,
    2
   ],
   "web-bot-auth-directory": [
    "fail",
    0,
    2
   ],
   "oauth-protected-resource": [
    "pass",
    2,
    2
   ],
   "auth-md-exists": [
    "fail",
    0,
    2
   ],
   "auth-md-structure": [
    "fail",
    0,
    2
   ],
   "auth-md-walkthrough-simulation": [
    "na",
    0,
    2
   ],
   "agent-auth-discovery-metadata": [
    "warning",
    1,
    3
   ],
   "agent-auth-www-authenticate": [
    "warning",
    0,
    1
   ],
   "agent-auth-endpoints-reachable": [
    "fail",
    0,
    2
   ],
   "pap-discovery": [
    "na",
    0,
    2
   ],
   "pap-issuer-binding": [
    "na",
    0,
    2
   ],
   "pap-auth-config": [
    "na",
    0,
    2
   ],
   "pap-interfaces": [
    "na",
    0,
    2
   ],
   "pap-endpoint-enforcement": [
    "na",
    0,
    2
   ],
   "pap-cross-protocol": [
    "na",
    0,
    2
   ],
   "mcp-server": [
    "warning",
    5,
    6
   ],
   "mcp-error-handling": [
    "na",
    0,
    2
   ],
   "mcp-transport-modern": [
    "na",
    0,
    1
   ],
   "webmcp": [
    "fail",
    0,
    5
   ],
   "rate-limit-headers": [
    "na",
    0,
    2
   ],
   "idempotency-key-support": [
    "na",
    0,
    3
   ],
   "json-error-responses": [
    "pass",
    4,
    4
   ],
   "api-error-model": [
    "na",
    0,
    3
   ],
   "api-versioning-policy": [
    "na",
    0,
    3
   ],
   "pagination-shape": [
    "na",
    0,
    2
   ],
   "async-job-pattern": [
    "na",
    0,
    2
   ],
   "cli-tool": [
    "pass",
    3,
    3
   ],
   "rest-sdk-packages": [
    "pass",
    3,
    3
   ],
   "nlweb-ask": [
    "fail",
    0,
    1
   ],
   "nlweb-streaming": [
    "fail",
    0,
    1
   ],
   "response-schema-coverage": [
    "na",
    0,
    2
   ],
   "mcp-tool-annotations": [
    "na",
    0,
    2
   ],
   "mcp-server-card": [
    "fail",
    0,
    2
   ],
   "mcp-multi-surface-coverage": [
    "fail",
    0,
    2
   ],
   "sandbox-environment": [
    "pass",
    2,
    2
   ],
   "batch-endpoints": [
    "na",
    0,
    2
   ],
   "mcp-resource-listing": [
    "na",
    0,
    3
   ],
   "graphql-error-type-definition": [
    "na",
    0,
    3
   ],
   "graphql-versioning-policy": [
    "na",
    0,
    2
   ],
   "graphql-pagination-pattern": [
    "na",
    0,
    2
   ],
   "graphql-async-job-pattern": [
    "na",
    0,
    2
   ],
   "graphql-schema-completeness": [
    "na",
    0,
    3
   ],
   "graphql-batch-mutations": [
    "na",
    0,
    2
   ],
   "agent-friendly-404": [
    "warning",
    1,
    2
   ],
   "ax-document-structure": [
    "pass",
    3,
    3
   ],
   "ax-native-controls": [
    "pass",
    3,
    3
   ],
   "ax-accessible-names": [
    "pass",
    2,
    2
   ],
   "ax-form-labeling": [
    "pass",
    2,
    2
   ],
   "ax-tree-injection-safe": [
    "pass",
    2,
    2
   ],
   "mcp-app-registry": [
    "na",
    0,
    4
   ],
   "a2ui-support": [
    "na",
    0,
    2
   ],
   "mcp-apps-ui-quality": [
    "na",
    0,
    4
   ],
   "mcp-view-domain": [
    "na",
    0,
    4
   ],
   "mcp-view-csp": [
    "na",
    0,
    4
   ],
   "api-schema-analysis": [
    "fail",
    0,
    2
   ],
   "function-calling-compat": [
    "fail",
    0,
    2
   ],
   "mcp-resource-quality": [
    "na",
    0,
    3
   ],
   "mpp-support": [
    "warning",
    0,
    2
   ],
   "x402-support": [
    "warning",
    0,
    2
   ],
   "ucp-support": [
    "warning",
    0,
    3
   ],
   "acp-support": [
    "warning",
    0,
    3
   ],
   "acp-delegate-payment": [
    "warning",
    0,
    3
   ],
   "ap2-support": [
    "warning",
    0,
    3
   ]
  },
  "flagged": [
   {
    "id": "openapi-spec",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 7,
    "tier": "required",
    "est": 3.8,
    "detail": "No OpenAPI/Swagger specification found"
   },
   {
    "id": "scoped-permissions",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 5,
    "tier": "recommended",
    "est": 3.2,
    "detail": "No declared OAuth scopes, security schemes, or scoped-permission documentation found"
   },
   {
    "id": "webmcp",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 5,
    "tier": "required",
    "est": 3.2,
    "detail": "No WebMCP support detected - no document.modelContext / navigator.modelContext usage found (scanned 24 of 24 same-origin script bundle(s) for modelContext registrations)"
   },
   {
    "id": "agentic-search-specific",
    "layer": "discovery",
    "status": "warning",
    "score": 1,
    "max": 3,
    "tier": "recommended",
    "est": 2.8,
    "detail": "In a search for your API docs, none of the 10 results is your official docs. In a search for your MCP server, SDK or CLI, we found your MCP server at #2 (https://github.com/heroku/heroku-mcp-server),"
   },
   {
    "id": "brand-search-accuracy",
    "layer": "discovery",
    "status": "warning",
    "score": 1,
    "max": 3,
    "tier": "required",
    "est": 2.8,
    "detail": "heroku.com ranks #7 for \"Heroku\" (searched your brand name alone: no main product term from your homepage qualified)"
   },
   {
    "id": "agent-instruction",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "required",
    "est": 1.6,
    "detail": "No agent instruction file with when-to-use guidance found"
   },
   {
    "id": "ard-catalog",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 1.4,
    "detail": "No /.well-known/ard.json, no same-site rel=\"ard\" link, and no legacy /.well-known/ai-catalog.json"
   },
   {
    "id": "api-schema-analysis",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.3,
    "detail": "No API schema detected"
   },
   {
    "id": "function-calling-compat",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.3,
    "detail": "No API spec found - function calling requires discoverable endpoints"
   },
   {
    "id": "agent-discovery-file",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 1.1,
    "detail": "No agent discovery file found"
   },
   {
    "id": "json-ld",
    "layer": "accessibility",
    "status": "warning",
    "score": 2,
    "max": 4,
    "tier": "required",
    "est": 1.1,
    "detail": "JSON-LD Person found - missing description, url, and one of sameAs / jobTitle / worksFor on this entity"
   },
   {
    "id": "schema-type-breadth",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.1,
    "detail": "No extended schema types found - AI can only answer basic questions about this entity"
   },
   {
    "id": "chatgpt-app-listed",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.8,
    "detail": "Not found in ChatGPT app directory"
   },
   {
    "id": "agent-friendly-404",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "The nonexistent path https://heroku.com/__ora-404-probe-08jgc2ci correctly returns HTTP 404. Partial credit: no Markdown error body was detected."
   },
   {
    "id": "mcp-server",
    "layer": "usability",
    "status": "warning",
    "score": 5,
    "max": 6,
    "tier": "required",
    "est": 0.6,
    "detail": "MCP server detected at https://mcp.heroku.com/mcp; it requires authentication. Presence is verified (5/6), but Ora could not inspect its tools or verify access scopes without credentials."
   },
   {
    "id": "org-schema-completeness",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "Organization schema found but missing: contactPoint, address"
   },
   {
    "id": "trust-anchors",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "required",
    "est": 0.5,
    "detail": "About, Contact pages verified - missing: Privacy"
   },
   {
    "id": "a2a-agent-card",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.3,
    "detail": "No A2A agent card found at /.well-known/agent-card.json"
   },
   {
    "id": "agent-auth-discovery-metadata",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 3,
    "tier": "recommended",
    "est": 0.3,
    "detail": "PRM + AS metadata both present (PRM discovered at https://mcp.heroku.com) (AS metadata fetched from advertised origin https://mcp.heroku.com) but AS metadata has no agent_auth block"
   },
   {
    "id": "agent-auth-endpoints-reachable",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.3,
    "detail": "No agent_auth endpoint URIs found in AS metadata or /auth.md prose; nothing to probe"
   },
   {
    "id": "api-catalog-rfc9727",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.3,
    "detail": "No /.well-known/api-catalog found (RFC 9727)"
   },
   {
    "id": "auth-md-exists",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.3,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "auth-md-structure",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.3,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "mcp-multi-surface-coverage",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.3,
    "detail": "You run an MCP server for your product, but not one for your documentation. This bonus needs two MCP servers: one for your product so agents can take actions,"
   },
   {
    "id": "mcp-server-card",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.3,
    "detail": "No MCP server card found for https://mcp.heroku.com/mcp (checked /.well-known/mcp/server-card.json, the site's ai-catalog.json, servers[].card in mcp.json, and <server>/server-card)"
   },
   {
    "id": "link-headers-discovery",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 0.2,
    "detail": "No HTTP Link response headers (RFC 8288) found"
   },
   {
    "id": "markdown-negotiation-vary",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.2,
    "detail": "Homepage https://heroku.com does not meet the Markdown negotiation requirements: Accept: text/markdown returned text/html; charset=utf-8; Vary header missing Accept (got \"accept-encoding\")"
   },
   {
    "id": "agent-auth-www-authenticate",
    "layer": "usability",
    "status": "warning",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.1,
    "detail": "401 at https://mcp.heroku.com at /mcp has Bearer scheme but no resource_metadata= parameter: Bearer error=\"invalid_token\", error_description=\"Missing Authorization header\""
   },
   {
    "id": "acp-delegate-payment",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": null,
    "detail": "OPTIONS allows POST at https://api.heroku.com/agentic_commerce/delegate_payment but POST 400 returned no ACP-shaped response"
   },
   {
    "id": "acp-support",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 3,
    "tier": "required",
    "est": null,
    "detail": "OPTIONS allows POST at https://api.heroku.com/checkout_sessions but POST 400 returned no ACP-shaped response"
   },
   {
    "id": "agent-mode-view",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "?mode=agent returns same content as homepage (no dedicated agent view)"
   },
   {
    "id": "agent-plugins-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No Agent Plugins manifest (plugin.json) found in discovered repos"
   },
   {
    "id": "agent-rules-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Could not locate a public repo containing agent configs or rules. If our probes missed it, AI coding agents likely will too - link the repo from your homepage or docs so it's discoverable."
   },
   {
    "id": "agent-ua-markdown",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly."
   },
   {
    "id": "ap2-support",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": null,
    "detail": "No AP2 (Agent Payments Protocol) signals detected"
   },
   {
    "id": "markdown-link-alternate",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No sampled page advertises a markdown alternate. Add <link rel=\"alternate\" type=\"text/markdown\" href=\"...\"> (or the equivalent Link response header) pointing at a markdown twin of the page."
   },
   {
    "id": "markdown-negotiation",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Missing markdown content negotiation. Homepage returned text/html when probed with Accept: text/markdown (expected text/markdown), and none of the well-known root paths (/llms.md, /auth.md, /agents.md, /developers.md, /api.md, /index.md,"
   },
   {
    "id": "markdown-url-fallback",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "Homepage does not support the .md suffix. Probed https://heroku.com/index.md and it did not return markdown (expected text/markdown content-type or a heading-led non-HTML body)."
   },
   {
    "id": "modular-llms-txt",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No section-level llms.txt found. Tried /docs/llms.txt, /api/llms.txt, /developers/llms.txt, /guides/llms.txt, /reference/llms.txt, /products/llms.txt, /platform/llms.txt, /ai/llms.txt, /managed-data-services/llms.txt, /enterprise/llms.txt."
   },
   {
    "id": "mpp-support",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": null,
    "detail": "No MPP (Machine Payments Protocol) support detected"
   },
   {
    "id": "nlweb-ask",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No NLWeb-conformant /ask endpoint found via GET or POST"
   },
   {
    "id": "nlweb-schema-feeds",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No schemamap: directive in robots.txt"
   },
   {
    "id": "nlweb-streaming",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "NLWeb /ask does not support SSE streaming via GET or POST"
   },
   {
    "id": "pricing-md",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No pricing.md found - agents need machine-readable pricing to compare products and make purchase recommendations"
   },
   {
    "id": "registry-branding",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No registry branding (name, icon, description) found"
   },
   {
    "id": "skills-sh-listed",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No official skills self-published on skills.sh (72 community skills with potential relation to this domain found, but only self-published official skills count)"
   },
   {
    "id": "skills-sh-quality",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No official skills on skills.sh to evaluate"
   },
   {
    "id": "ucp-support",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 3,
    "tier": "required",
    "est": null,
    "detail": "no UCP (Universal Commerce Protocol) signals detected"
   },
   {
    "id": "web-bot-auth-directory",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No /.well-known/http-message-signatures-directory found"
   },
   {
    "id": "x402-support",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": null,
    "detail": "No x402 payment protocol support detected"
   }
  ],
  "seen": {
   "brand-search-accuracy": "heroku.com ranks #7 for \"Heroku\" (searched your brand name alone: no main product term from your homepage qualified)",
   "wikipedia-presence": "Wikipedia \"Heroku\" and Wikidata Q2350702 both verified - domain confirmed on both sources",
   "robots-ai-policy-quality": "AI search crawlers: allowed in 3 of 3 checks (3 crawlers on 1 page). AI training crawlers: allowed in 0 of 2 checks (2 crawlers on 1 page), not scored.",
   "noindex-directives": "No noindex on the homepage: no robots, googlebot or bingbot meta tag and no X-Robots-Tag header hides it from search.",
   "sitemap": "Valid sitemap found at https://www.heroku.com/sitemap_index.xml with multiple sitemaps entries",
   "content-no-js": "Homepage: 7285 chars, semantic headings (1 H1 + 9 H2s + 25 H3s), 8.6% content ratio. 5 of 5 sampled inner pages have text without JavaScript.",
   "bot-detection": "Site accessible to 4 agent user-agents (ChatGPT-User, OAI-SearchBot, Claude-User, PerplexityBot).",
   "agent-discovery-file": "No agent discovery file found",
   "a2a-agent-card": "No A2A agent card found at /.well-known/agent-card.json",
   "mcp-well-known-discovery": "MCP server referenced in llms.txt",
   "robots-agent-user-policy": "No applicable crawl or usage restriction found for 3 user-triggered agents (chatgpt-user, claude-user, perplexity-user) on 1 public page: https://heroku.com/. Declared policy only;",
   "llms-txt-exists": "Found the llms.txt at https://devcenter.heroku.com/llms.txt.",
   "llms-txt-formatting": "The llms.txt is well-formatted: 80 lines with markdown links, 9,020 characters in total.",
   "json-ld": "JSON-LD Person found - missing description, url, and one of sameAs / jobTitle / worksFor on this entity",
   "public-api-docs": "Documentation site found at https://devcenter.heroku.com",
   "metadata-completeness": "All metadata signals present: canonical URL, lang=\"en-US\", og:image, og:type",
   "page-token-budget": "All 6 measured pages fit an agent context budget (largest ~2K tokens)",
   "docs-auth-gate": "All 5 sampled pages are publicly readable (5 with substantive content)",
   "openapi-spec": "No OpenAPI/Swagger specification found",
   "developer-portal": "Developer portal found at /developers",
   "markdown-negotiation": "Missing markdown content negotiation. Homepage returned text/html when probed with Accept: text/markdown (expected text/markdown), and none of the well-known root paths (/llms.md, /auth.md, /agents.md, /developers.md,",
   "agent-ua-markdown": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly.",
   "agent-crawler-reachability": "Reachable to every agent we tested - ChatGPT-User: reachable, OAI-SearchBot: reachable, Claude-User: reachable, PerplexityBot: reachable",
   "public-api": "REST API documentation found at /api. Best-of-protocols score: 7/7.",
   "oauth-support": "OAuth authorization server metadata at https://mcp.heroku.com",
   "mcp-server": "MCP server detected at https://mcp.heroku.com/mcp; it requires authentication. Presence is verified (5/6), but Ora could not inspect its tools or verify access scopes without credentials.",
   "webmcp": "No WebMCP support detected - no document.modelContext / navigator.modelContext usage found (scanned 24 of 24 same-origin script bundle(s) for modelContext registrations)",
   "cli-tool": "CLI package found on npm: heroku-cli",
   "rest-sdk-packages": "SDK packages found across 4 ecosystems: npm, pypi, go, rubygems",
   "nlweb-ask": "No NLWeb-conformant /ask endpoint found via GET or POST",
   "mpp-support": "No MPP (Machine Payments Protocol) support detected",
   "x402-support": "No x402 payment protocol support detected",
   "ucp-support": "no UCP (Universal Commerce Protocol) signals detected",
   "acp-support": "OPTIONS allows POST at https://api.heroku.com/checkout_sessions but POST 400 returned no ACP-shaped response",
   "ap2-support": "No AP2 (Agent Payments Protocol) signals detected"
  }
 },
 {
  "slug": "hubspot",
  "name": "HubSpot",
  "domain": "hubspot.com",
  "finalUrl": "https://www.hubspot.com/",
  "read": "2026-11-09",
  "scannedAt": "2026-11-09T09:02:10.492+00:00",
  "score": 71,
  "max": 100,
  "grade": "B",
  "category": "CRM",
  "scoringVersion": 2,
  "rulesUrl": "https://ora.ai/api/ranker/releases/2/rules",
  "summary": "HubSpot offers strong developer resources and SDK packages, but lacks a published OpenAPI specification for agents to discover its endpoints.",
  "layers": [
   {
    "id": "discovery",
    "name": "Discovery",
    "score": 15,
    "max": 18
   },
   {
    "id": "accessibility",
    "name": "Access",
    "score": 45,
    "max": 60
   },
   {
    "id": "usability",
    "name": "Usability",
    "score": 42,
    "max": 68
   },
   {
    "id": "payments",
    "name": "Payments",
    "score": 0,
    "max": 0
   }
  ],
  "checks": {
   "ard-catalog": [
    "fail",
    0,
    1
   ],
   "ai-catalog-published": [
    "na",
    0,
    1
   ],
   "ard-entries-valid": [
    "na",
    0,
    2
   ],
   "ard-trust-manifest": [
    "na",
    0,
    2
   ],
   "agentic-search-usecase": [
    "na",
    0,
    6
   ],
   "agentic-search-specific": [
    "pass",
    3,
    3
   ],
   "brand-search-accuracy": [
    "warning",
    1,
    3
   ],
   "wikipedia-presence": [
    "pass",
    4,
    4
   ],
   "robots-ai-policy-quality": [
    "pass",
    2,
    2
   ],
   "mcp-registry-listed": [
    "pass",
    1,
    1
   ],
   "npm-sdk-package": [
    "pass",
    1,
    1
   ],
   "agent-rules-repo": [
    "fail",
    0,
    1
   ],
   "agent-plugins-repo": [
    "fail",
    0,
    1
   ],
   "registry-branding": [
    "fail",
    0,
    2
   ],
   "chatgpt-app-listed": [
    "pass",
    2,
    2
   ],
   "noindex-directives": [
    "pass",
    1,
    1
   ],
   "sitemap": [
    "pass",
    2,
    2
   ],
   "content-no-js": [
    "warning",
    2,
    3
   ],
   "bot-detection": [
    "pass",
    2,
    2
   ],
   "agent-discovery-file": [
    "fail",
    0,
    2
   ],
   "agent-skills-index-v2": [
    "na",
    0,
    2
   ],
   "a2a-agent-card": [
    "fail",
    0,
    2
   ],
   "skills-sh-listed": [
    "pass",
    1,
    1
   ],
   "pricing-md": [
    "fail",
    0,
    2
   ],
   "nlweb-schema-feeds": [
    "fail",
    0,
    1
   ],
   "mcp-well-known-discovery": [
    "warning",
    1,
    2
   ],
   "agent-mode-view": [
    "pass",
    2,
    2
   ],
   "link-headers-discovery": [
    "fail",
    0,
    1
   ],
   "markdown-url-fallback": [
    "fail",
    0,
    2
   ],
   "modular-llms-txt": [
    "fail",
    0,
    1
   ],
   "sitemap-lastmod": [
    "pass",
    1,
    1
   ],
   "robots-agent-user-policy": [
    "pass",
    2,
    2
   ],
   "llms-txt-exists": [
    "pass",
    1,
    1
   ],
   "llms-txt-formatting": [
    "warning",
    1,
    2
   ],
   "json-ld": [
    "pass",
    4,
    4
   ],
   "pricing-info": [
    "pass",
    3,
    3
   ],
   "public-api-docs": [
    "pass",
    3,
    3
   ],
   "agent-instruction": [
    "pass",
    3,
    3
   ],
   "skills-sh-quality": [
    "pass",
    2,
    2
   ],
   "json-ld-entity-linking": [
    "pass",
    2,
    2
   ],
   "metadata-completeness": [
    "warning",
    1,
    2
   ],
   "org-schema-completeness": [
    "warning",
    1,
    2
   ],
   "schema-type-breadth": [
    "warning",
    1,
    2
   ],
   "trust-anchors": [
    "pass",
    2,
    2
   ],
   "llms-txt-links-resolve": [
    "warning",
    1,
    2
   ],
   "markdown-link-alternate": [
    "fail",
    0,
    1
   ],
   "markdown-frontmatter": [
    "na",
    0,
    1
   ],
   "redirect-hygiene": [
    "pass",
    1,
    1
   ],
   "page-token-budget": [
    "pass",
    1,
    1
   ],
   "code-fence-validity": [
    "pass",
    1,
    1
   ],
   "docs-auth-gate": [
    "pass",
    2,
    2
   ],
   "openapi-spec": [
    "fail",
    0,
    7
   ],
   "developer-portal": [
    "pass",
    6,
    6
   ],
   "api-catalog-rfc9727": [
    "fail",
    0,
    2
   ],
   "markdown-negotiation": [
    "fail",
    0,
    1
   ],
   "markdown-negotiation-vary": [
    "fail",
    0,
    1
   ],
   "agent-ua-markdown": [
    "fail",
    0,
    1
   ],
   "agent-crawler-reachability": [
    "pass",
    2,
    2
   ],
   "mcp-tool-descriptions": [
    "na",
    0,
    3
   ],
   "mcp-param-schemas": [
    "na",
    0,
    2
   ],
   "mcp-server-identity": [
    "na",
    0,
    1
   ],
   "mcp-tool-listing": [
    "na",
    0,
    3
   ],
   "mcp-tool-naming": [
    "na",
    0,
    2
   ],
   "public-api": [
    "warning",
    3,
    7
   ],
   "oauth-support": [
    "pass",
    5,
    5
   ],
   "scoped-permissions": [
    "fail",
    0,
    5
   ],
   "mcp-auth-mechanism": [
    "pass",
    2,
    2
   ],
   "mcp-oauth-metadata": [
    "pass",
    2,
    2
   ],
   "mcp-pkce-s256": [
    "pass",
    2,
    2
   ],
   "onboarding-friction": [
    "warning",
    1,
    2
   ],
   "web-bot-auth-directory": [
    "fail",
    0,
    2
   ],
   "oauth-protected-resource": [
    "pass",
    2,
    2
   ],
   "auth-md-exists": [
    "fail",
    0,
    2
   ],
   "auth-md-structure": [
    "fail",
    0,
    2
   ],
   "auth-md-walkthrough-simulation": [
    "na",
    0,
    2
   ],
   "agent-auth-discovery-metadata": [
    "warning",
    1,
    3
   ],
   "agent-auth-www-authenticate": [
    "pass",
    1,
    1
   ],
   "agent-auth-endpoints-reachable": [
    "fail",
    0,
    2
   ],
   "pap-discovery": [
    "na",
    0,
    2
   ],
   "pap-issuer-binding": [
    "na",
    0,
    2
   ],
   "pap-auth-config": [
    "na",
    0,
    2
   ],
   "pap-interfaces": [
    "na",
    0,
    2
   ],
   "pap-endpoint-enforcement": [
    "na",
    0,
    2
   ],
   "pap-cross-protocol": [
    "na",
    0,
    2
   ],
   "mcp-server": [
    "warning",
    5,
    6
   ],
   "mcp-error-handling": [
    "na",
    0,
    2
   ],
   "mcp-transport-modern": [
    "na",
    0,
    1
   ],
   "webmcp": [
    "fail",
    0,
    5
   ],
   "rate-limit-headers": [
    "na",
    0,
    2
   ],
   "idempotency-key-support": [
    "na",
    0,
    3
   ],
   "json-error-responses": [
    "fail",
    0,
    4
   ],
   "api-error-model": [
    "na",
    0,
    3
   ],
   "api-versioning-policy": [
    "na",
    0,
    3
   ],
   "pagination-shape": [
    "na",
    0,
    2
   ],
   "async-job-pattern": [
    "na",
    0,
    2
   ],
   "cli-tool": [
    "pass",
    3,
    3
   ],
   "rest-sdk-packages": [
    "warning",
    2,
    3
   ],
   "nlweb-ask": [
    "fail",
    0,
    1
   ],
   "nlweb-streaming": [
    "fail",
    0,
    1
   ],
   "response-schema-coverage": [
    "na",
    0,
    2
   ],
   "mcp-tool-annotations": [
    "na",
    0,
    2
   ],
   "mcp-server-card": [
    "fail",
    0,
    2
   ],
   "mcp-multi-surface-coverage": [
    "fail",
    0,
    2
   ],
   "sandbox-environment": [
    "fail",
    0,
    2
   ],
   "batch-endpoints": [
    "na",
    0,
    2
   ],
   "mcp-resource-listing": [
    "na",
    0,
    3
   ],
   "graphql-error-type-definition": [
    "na",
    0,
    3
   ],
   "graphql-versioning-policy": [
    "na",
    0,
    2
   ],
   "graphql-pagination-pattern": [
    "na",
    0,
    2
   ],
   "graphql-async-job-pattern": [
    "na",
    0,
    2
   ],
   "graphql-schema-completeness": [
    "na",
    0,
    3
   ],
   "graphql-batch-mutations": [
    "na",
    0,
    2
   ],
   "agent-friendly-404": [
    "warning",
    1,
    2
   ],
   "ax-document-structure": [
    "pass",
    3,
    3
   ],
   "ax-native-controls": [
    "pass",
    3,
    3
   ],
   "ax-accessible-names": [
    "pass",
    2,
    2
   ],
   "ax-form-labeling": [
    "pass",
    2,
    2
   ],
   "ax-tree-injection-safe": [
    "pass",
    2,
    2
   ],
   "mcp-app-registry": [
    "na",
    0,
    4
   ],
   "a2ui-support": [
    "fail",
    0,
    2
   ],
   "mcp-apps-ui-quality": [
    "na",
    0,
    4
   ],
   "mcp-view-domain": [
    "na",
    0,
    4
   ],
   "mcp-view-csp": [
    "na",
    0,
    4
   ],
   "api-schema-analysis": [
    "fail",
    0,
    2
   ],
   "function-calling-compat": [
    "fail",
    0,
    2
   ],
   "mcp-resource-quality": [
    "na",
    0,
    3
   ],
   "mpp-support": [
    "na",
    0,
    2
   ],
   "x402-support": [
    "na",
    0,
    2
   ],
   "ucp-support": [
    "na",
    0,
    3
   ],
   "acp-support": [
    "na",
    0,
    3
   ],
   "acp-delegate-payment": [
    "na",
    0,
    3
   ],
   "ap2-support": [
    "na",
    0,
    3
   ]
  },
  "flagged": [
   {
    "id": "openapi-spec",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 7,
    "tier": "required",
    "est": 3.9,
    "detail": "No OpenAPI/Swagger specification found"
   },
   {
    "id": "scoped-permissions",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 5,
    "tier": "recommended",
    "est": 3.3,
    "detail": "No declared OAuth scopes, security schemes, or scoped-permission documentation found"
   },
   {
    "id": "webmcp",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 5,
    "tier": "required",
    "est": 3.3,
    "detail": "No WebMCP support detected - no document.modelContext / navigator.modelContext usage found (scanned 27 of 27 same-origin script bundle(s) for modelContext registrations)"
   },
   {
    "id": "json-error-responses",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 4,
    "tier": "required",
    "est": 2.6,
    "detail": "API does not return JSON error responses (or no API detected)"
   },
   {
    "id": "public-api",
    "layer": "usability",
    "status": "warning",
    "score": 3,
    "max": 7,
    "tier": "required",
    "est": 2.6,
    "detail": "API described in documentation at https://developers.hubspot.com but no machine-verifiable API surface confirmed. Best-of-protocols score: 3/7."
   },
   {
    "id": "brand-search-accuracy",
    "layer": "discovery",
    "status": "warning",
    "score": 1,
    "max": 3,
    "tier": "required",
    "est": 2.5,
    "detail": "hubspot.com ranks #6 for \"HubSpot\" (searched your brand name alone: no main product term from your homepage qualified)"
   },
   {
    "id": "api-schema-analysis",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.3,
    "detail": "No API schema detected"
   },
   {
    "id": "function-calling-compat",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.3,
    "detail": "No API spec found - function calling requires discoverable endpoints"
   },
   {
    "id": "ard-catalog",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 1.2,
    "detail": "No /.well-known/ard.json, no same-site rel=\"ard\" link, and no legacy /.well-known/ai-catalog.json"
   },
   {
    "id": "agent-discovery-file",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 1.1,
    "detail": "No agent discovery file found"
   },
   {
    "id": "agent-friendly-404",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.7,
    "detail": "The nonexistent path https://hubspot.com/__ora-404-probe-qot65dno correctly returns HTTP 404. Partial credit: no Markdown error body was detected."
   },
   {
    "id": "mcp-server",
    "layer": "usability",
    "status": "warning",
    "score": 5,
    "max": 6,
    "tier": "required",
    "est": 0.7,
    "detail": "MCP server detected at https://mcp.hubspot.com; it requires authentication. Presence is verified (5/6), but Ora could not inspect its tools or verify access scopes without credentials."
   },
   {
    "id": "onboarding-friction",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.7,
    "detail": "Onboarding signals described but not verified live: free tier available, self-serve key generation, sandbox/test environment"
   },
   {
    "id": "rest-sdk-packages",
    "layer": "usability",
    "status": "warning",
    "score": 2,
    "max": 3,
    "tier": "recommended",
    "est": 0.7,
    "detail": "SDK packages found in npm, rubygems"
   },
   {
    "id": "content-no-js",
    "layer": "accessibility",
    "status": "warning",
    "score": 2,
    "max": 3,
    "tier": "required",
    "est": 0.6,
    "detail": "Homepage: 5198 chars with H1, but 2.1% content ratio is below the 5% target. 5 of 5 sampled inner pages have text without JavaScript."
   },
   {
    "id": "llms-txt-formatting",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "The llms.txt at https://hubspot.com/llms.txt is well-formatted with markdown links, but at 35,510 characters it exceeds the 30,000-character recommendation for a navigation index."
   },
   {
    "id": "llms-txt-links-resolve",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "1 of 5 probed llms.txt links could not be verified: https://www.hubspot.com/product-updates (HTTP 403). This does not confirm that those pages are missing."
   },
   {
    "id": "metadata-completeness",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "required",
    "est": 0.6,
    "detail": "3/4 metadata signals present - missing: og:type"
   },
   {
    "id": "org-schema-completeness",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "Organization schema found but missing: contactPoint"
   },
   {
    "id": "schema-type-breadth",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "Some extended schema types found: AggregateRating - add 2 more types that match what the homepage shows, for full coverage"
   },
   {
    "id": "agent-auth-discovery-metadata",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 3,
    "tier": "recommended",
    "est": 0.5,
    "detail": "PRM + AS metadata both present (PRM discovered at https://mcp.hubspot.com) (AS metadata fetched from advertised origin https://mcp.hubspot.com) but AS metadata has no agent_auth block"
   },
   {
    "id": "agent-auth-endpoints-reachable",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "No agent_auth endpoint URIs found in AS metadata or /auth.md prose; nothing to probe"
   },
   {
    "id": "auth-md-exists",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.5,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "auth-md-structure",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "mcp-multi-surface-coverage",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "You run an MCP server for your product, but not one for your documentation. This bonus needs two MCP servers: one for your product so agents can take actions,"
   },
   {
    "id": "mcp-server-card",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "No MCP server card found for https://mcp.hubspot.com (checked /.well-known/mcp/server-card.json, the site's ai-catalog.json, servers[].card in mcp.json, and <server>/server-card)"
   },
   {
    "id": "sandbox-environment",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "No sandbox or test environment found"
   },
   {
    "id": "a2a-agent-card",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.3,
    "detail": "No A2A agent card found at /.well-known/agent-card.json"
   },
   {
    "id": "api-catalog-rfc9727",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.3,
    "detail": "No /.well-known/api-catalog found (RFC 9727)"
   },
   {
    "id": "link-headers-discovery",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 0.1,
    "detail": "Link header present but no agent-relevant rel values (sitemap, describedby, alternate, service-desc)"
   },
   {
    "id": "markdown-negotiation-vary",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.1,
    "detail": "Homepage https://hubspot.com does not meet the Markdown negotiation requirements: Accept: text/markdown returned text/html; charset=utf-8; Vary header missing Accept (got \"accept-encoding\")"
   },
   {
    "id": "mcp-well-known-discovery",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.1,
    "detail": "MCP server at https://mcp.hubspot.com - list its server card, hosted on your own domain, in /.well-known/ai-catalog.json so MCP clients can discover it"
   },
   {
    "id": "a2ui-support",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No A2UI or generative UI support detected"
   },
   {
    "id": "agent-plugins-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No Agent Plugins manifest (plugin.json) found in discovered repos"
   },
   {
    "id": "agent-rules-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Could not locate a public repo containing agent configs or rules. If our probes missed it, AI coding agents likely will too - link the repo from your homepage or docs so it's discoverable."
   },
   {
    "id": "agent-ua-markdown",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly."
   },
   {
    "id": "markdown-link-alternate",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No sampled page advertises a markdown alternate. Add <link rel=\"alternate\" type=\"text/markdown\" href=\"...\"> (or the equivalent Link response header) pointing at a markdown twin of the page."
   },
   {
    "id": "markdown-negotiation",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Missing markdown content negotiation. Homepage returned text/html when probed with Accept: text/markdown (expected text/markdown), and none of the well-known root paths (/llms.md, /auth.md, /agents.md, /developers.md, /api.md, /index.md,"
   },
   {
    "id": "markdown-url-fallback",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "Homepage does not support the .md suffix. Probed https://hubspot.com/index.md and it did not return markdown (expected text/markdown content-type or a heading-led non-HTML body)."
   },
   {
    "id": "modular-llms-txt",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No section-level llms.txt found. Tried /docs/llms.txt, /api/llms.txt, /developers/llms.txt, /guides/llms.txt, /reference/llms.txt, /our-story/llms.txt, /careers/llms.txt, /why-choose-hubspot/llms.txt, /case-studies/llms.txt,"
   },
   {
    "id": "nlweb-ask",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No NLWeb-conformant /ask endpoint found via GET or POST"
   },
   {
    "id": "nlweb-schema-feeds",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No schemamap: directive in robots.txt"
   },
   {
    "id": "nlweb-streaming",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "NLWeb /ask does not support SSE streaming via GET or POST"
   },
   {
    "id": "pricing-md",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No pricing.md found - agents need machine-readable pricing to compare products and make purchase recommendations"
   },
   {
    "id": "registry-branding",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No registry branding (name, icon, description) found"
   },
   {
    "id": "web-bot-auth-directory",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No /.well-known/http-message-signatures-directory found"
   }
  ],
  "seen": {
   "brand-search-accuracy": "hubspot.com ranks #6 for \"HubSpot\" (searched your brand name alone: no main product term from your homepage qualified)",
   "wikipedia-presence": "Wikipedia \"HubSpot\" and Wikidata Q5926631 both verified - domain confirmed on both sources",
   "robots-ai-policy-quality": "AI search crawlers: allowed in 3 of 3 checks (3 crawlers on 1 page). AI training crawlers: allowed in 2 of 2 checks (2 crawlers on 1 page), not scored.",
   "noindex-directives": "No noindex on the homepage: no robots, googlebot or bingbot meta tag and no X-Robots-Tag header hides it from search.",
   "sitemap": "Valid sitemap found at /sitemap.xml with 3004 entries",
   "content-no-js": "Homepage: 5198 chars with H1, but 2.1% content ratio is below the 5% target. 5 of 5 sampled inner pages have text without JavaScript.",
   "bot-detection": "Site accessible to 4 agent user-agents (ChatGPT-User, OAI-SearchBot, Claude-User, PerplexityBot).",
   "agent-discovery-file": "No agent discovery file found",
   "a2a-agent-card": "No A2A agent card found at /.well-known/agent-card.json",
   "mcp-well-known-discovery": "MCP server at https://mcp.hubspot.com - list its server card, hosted on your own domain, in /.well-known/ai-catalog.json so MCP clients can discover it",
   "robots-agent-user-policy": "No applicable crawl or usage restriction found for 3 user-triggered agents (chatgpt-user, claude-user, perplexity-user) on 1 public page: https://hubspot.com/. Declared policy only;",
   "llms-txt-exists": "Found the llms.txt at https://developers.hubspot.com/llms.txt.",
   "llms-txt-formatting": "The llms.txt at https://hubspot.com/llms.txt is well-formatted with markdown links, but at 35,510 characters it exceeds the 30,000-character recommendation for a navigation index.",
   "json-ld": "Rich JSON-LD identity: Organization with name, description, url, and sameAs/logo/address (1 block(s))",
   "public-api-docs": "Documentation site found at https://developers.hubspot.com",
   "metadata-completeness": "3/4 metadata signals present - missing: og:type",
   "page-token-budget": "All 6 measured pages fit an agent context budget (largest ~3K tokens)",
   "docs-auth-gate": "All 5 sampled pages are publicly readable (5 with substantive content)",
   "openapi-spec": "No OpenAPI/Swagger specification found",
   "developer-portal": "Developer documentation portal found at https://developers.hubspot.com",
   "markdown-negotiation": "Missing markdown content negotiation. Homepage returned text/html when probed with Accept: text/markdown (expected text/markdown), and none of the well-known root paths (/llms.md, /auth.md, /agents.md, /developers.md,",
   "agent-ua-markdown": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly.",
   "agent-crawler-reachability": "Reachable to every agent we tested - ChatGPT-User: reachable, OAI-SearchBot: reachable, Claude-User: reachable, PerplexityBot: reachable",
   "public-api": "API described in documentation at https://developers.hubspot.com but no machine-verifiable API surface confirmed. Best-of-protocols score: 3/7.",
   "oauth-support": "OAuth authorization server metadata at https://mcp.hubspot.com",
   "mcp-server": "MCP server detected at https://mcp.hubspot.com; it requires authentication. Presence is verified (5/6), but Ora could not inspect its tools or verify access scopes without credentials.",
   "webmcp": "No WebMCP support detected - no document.modelContext / navigator.modelContext usage found (scanned 27 of 27 same-origin script bundle(s) for modelContext registrations)",
   "cli-tool": "CLI package found on npm: @hubspot/cli",
   "rest-sdk-packages": "SDK packages found in npm, rubygems",
   "nlweb-ask": "No NLWeb-conformant /ask endpoint found via GET or POST",
   "mpp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "x402-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "ucp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "acp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "ap2-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites"
  }
 },
 {
  "slug": "huggingface",
  "name": "Hugging Face",
  "domain": "huggingface.co",
  "finalUrl": "https://huggingface.co/",
  "read": "2026-11-09",
  "scannedAt": "2026-10-27T02:11:11.428+00:00",
  "score": 82,
  "max": 100,
  "grade": "B",
  "category": "AI & ML",
  "scoringVersion": null,
  "rulesUrl": null,
  "summary": "Hugging Face excels at model discovery and access through comprehensive registries, but lacks WebMCP support for agent integration.",
  "layers": [
   {
    "id": "discovery",
    "name": "Discovery",
    "score": 21,
    "max": 21
   },
   {
    "id": "accessibility",
    "name": "Access",
    "score": 46,
    "max": 61
   },
   {
    "id": "usability",
    "name": "Usability",
    "score": 85,
    "max": 108
   },
   {
    "id": "payments",
    "name": "Payments",
    "score": 0,
    "max": 0
   }
  ],
  "checks": {
   "ard-catalog": [
    "pass",
    1,
    1
   ],
   "ai-catalog-published": [
    "pass",
    1,
    1
   ],
   "ard-entries-valid": [
    "pass",
    2,
    2
   ],
   "ard-trust-manifest": [
    "fail",
    0,
    2
   ],
   "agentic-search-usecase": [
    "na",
    0,
    6
   ],
   "agentic-search-specific": [
    "pass",
    3,
    3
   ],
   "brand-search-accuracy": [
    "pass",
    3,
    3
   ],
   "wikipedia-presence": [
    "pass",
    4,
    4
   ],
   "robots-ai-policy-quality": [
    "pass",
    2,
    2
   ],
   "mcp-registry-listed": [
    "pass",
    1,
    1
   ],
   "npm-sdk-package": [
    "pass",
    1,
    1
   ],
   "agent-rules-repo": [
    "fail",
    0,
    1
   ],
   "agent-plugins-repo": [
    "fail",
    0,
    1
   ],
   "registry-branding": [
    "fail",
    0,
    2
   ],
   "chatgpt-app-listed": [
    "pass",
    2,
    2
   ],
   "noindex-directives": [
    "pass",
    1,
    1
   ],
   "sitemap": [
    "pass",
    2,
    2
   ],
   "content-no-js": [
    "warning",
    2,
    3
   ],
   "bot-detection": [
    "pass",
    2,
    2
   ],
   "agent-discovery-file": [
    "pass",
    2,
    2
   ],
   "agent-skills-index-v2": [
    "pass",
    2,
    2
   ],
   "a2a-agent-card": [
    "fail",
    0,
    2
   ],
   "skills-sh-listed": [
    "pass",
    1,
    1
   ],
   "pricing-md": [
    "fail",
    0,
    2
   ],
   "nlweb-schema-feeds": [
    "fail",
    0,
    1
   ],
   "mcp-well-known-discovery": [
    "pass",
    2,
    2
   ],
   "agent-mode-view": [
    "fail",
    0,
    2
   ],
   "link-headers-discovery": [
    "pass",
    1,
    1
   ],
   "markdown-url-fallback": [
    "fail",
    0,
    2
   ],
   "modular-llms-txt": [
    "fail",
    0,
    1
   ],
   "sitemap-lastmod": [
    "fail",
    0,
    1
   ],
   "robots-agent-user-policy": [
    "pass",
    2,
    2
   ],
   "llms-txt-exists": [
    "fail",
    0,
    1
   ],
   "llms-txt-formatting": [
    "fail",
    0,
    2
   ],
   "json-ld": [
    "fail",
    0,
    4
   ],
   "pricing-info": [
    "pass",
    3,
    3
   ],
   "public-api-docs": [
    "pass",
    3,
    3
   ],
   "agent-instruction": [
    "pass",
    3,
    3
   ],
   "skills-sh-quality": [
    "pass",
    2,
    2
   ],
   "json-ld-entity-linking": [
    "fail",
    0,
    2
   ],
   "metadata-completeness": [
    "warning",
    1,
    2
   ],
   "org-schema-completeness": [
    "fail",
    0,
    2
   ],
   "schema-type-breadth": [
    "fail",
    0,
    2
   ],
   "trust-anchors": [
    "pass",
    2,
    2
   ],
   "llms-txt-links-resolve": [
    "na",
    0,
    2
   ],
   "markdown-link-alternate": [
    "fail",
    0,
    1
   ],
   "markdown-frontmatter": [
    "na",
    0,
    1
   ],
   "redirect-hygiene": [
    "pass",
    1,
    1
   ],
   "page-token-budget": [
    "pass",
    1,
    1
   ],
   "code-fence-validity": [
    "na",
    0,
    1
   ],
   "docs-auth-gate": [
    "pass",
    2,
    2
   ],
   "openapi-spec": [
    "pass",
    7,
    7
   ],
   "developer-portal": [
    "pass",
    6,
    6
   ],
   "api-catalog-rfc9727": [
    "pass",
    2,
    2
   ],
   "markdown-negotiation": [
    "fail",
    0,
    1
   ],
   "markdown-negotiation-vary": [
    "fail",
    0,
    1
   ],
   "agent-ua-markdown": [
    "fail",
    0,
    1
   ],
   "agent-crawler-reachability": [
    "pass",
    2,
    2
   ],
   "mcp-tool-descriptions": [
    "pass",
    3,
    3
   ],
   "mcp-param-schemas": [
    "pass",
    2,
    2
   ],
   "mcp-server-identity": [
    "pass",
    1,
    1
   ],
   "mcp-tool-listing": [
    "pass",
    3,
    3
   ],
   "mcp-tool-naming": [
    "pass",
    2,
    2
   ],
   "public-api": [
    "pass",
    7,
    7
   ],
   "oauth-support": [
    "pass",
    5,
    5
   ],
   "scoped-permissions": [
    "pass",
    5,
    5
   ],
   "mcp-auth-mechanism": [
    "na",
    0,
    2
   ],
   "mcp-oauth-metadata": [
    "na",
    0,
    2
   ],
   "mcp-pkce-s256": [
    "na",
    0,
    2
   ],
   "onboarding-friction": [
    "warning",
    1,
    2
   ],
   "web-bot-auth-directory": [
    "fail",
    0,
    2
   ],
   "oauth-protected-resource": [
    "pass",
    2,
    2
   ],
   "auth-md-exists": [
    "fail",
    0,
    2
   ],
   "auth-md-structure": [
    "fail",
    0,
    2
   ],
   "auth-md-walkthrough-simulation": [
    "na",
    0,
    2
   ],
   "agent-auth-discovery-metadata": [
    "warning",
    1,
    3
   ],
   "agent-auth-www-authenticate": [
    "fail",
    0,
    1
   ],
   "agent-auth-endpoints-reachable": [
    "fail",
    0,
    2
   ],
   "pap-discovery": [
    "na",
    0,
    2
   ],
   "pap-issuer-binding": [
    "na",
    0,
    2
   ],
   "pap-auth-config": [
    "na",
    0,
    2
   ],
   "pap-interfaces": [
    "na",
    0,
    2
   ],
   "pap-endpoint-enforcement": [
    "na",
    0,
    2
   ],
   "pap-cross-protocol": [
    "na",
    0,
    2
   ],
   "mcp-server": [
    "pass",
    6,
    6
   ],
   "mcp-error-handling": [
    "pass",
    2,
    2
   ],
   "mcp-transport-modern": [
    "pass",
    1,
    1
   ],
   "webmcp": [
    "fail",
    0,
    5
   ],
   "rate-limit-headers": [
    "pass",
    2,
    2
   ],
   "idempotency-key-support": [
    "fail",
    0,
    3
   ],
   "json-error-responses": [
    "pass",
    4,
    4
   ],
   "api-error-model": [
    "fail",
    0,
    3
   ],
   "api-versioning-policy": [
    "warning",
    2,
    3
   ],
   "pagination-shape": [
    "pass",
    2,
    2
   ],
   "async-job-pattern": [
    "fail",
    0,
    2
   ],
   "cli-tool": [
    "pass",
    3,
    3
   ],
   "rest-sdk-packages": [
    "warning",
    2,
    3
   ],
   "nlweb-ask": [
    "fail",
    0,
    1
   ],
   "nlweb-streaming": [
    "fail",
    0,
    1
   ],
   "response-schema-coverage": [
    "pass",
    2,
    2
   ],
   "mcp-tool-annotations": [
    "pass",
    2,
    2
   ],
   "mcp-server-card": [
    "pass",
    2,
    2
   ],
   "mcp-multi-surface-coverage": [
    "fail",
    0,
    2
   ],
   "sandbox-environment": [
    "pass",
    2,
    2
   ],
   "batch-endpoints": [
    "pass",
    2,
    2
   ],
   "mcp-resource-listing": [
    "pass",
    3,
    3
   ],
   "graphql-error-type-definition": [
    "na",
    0,
    3
   ],
   "graphql-versioning-policy": [
    "na",
    0,
    2
   ],
   "graphql-pagination-pattern": [
    "na",
    0,
    2
   ],
   "graphql-async-job-pattern": [
    "na",
    0,
    2
   ],
   "graphql-schema-completeness": [
    "na",
    0,
    3
   ],
   "graphql-batch-mutations": [
    "na",
    0,
    2
   ],
   "agent-friendly-404": [
    "warning",
    1,
    2
   ],
   "ax-document-structure": [
    "pass",
    3,
    3
   ],
   "ax-native-controls": [
    "pass",
    3,
    3
   ],
   "ax-accessible-names": [
    "pass",
    2,
    2
   ],
   "ax-form-labeling": [
    "na",
    0,
    2
   ],
   "ax-tree-injection-safe": [
    "pass",
    2,
    2
   ],
   "mcp-app-registry": [
    "fail",
    0,
    4
   ],
   "a2ui-support": [
    "fail",
    0,
    2
   ],
   "mcp-apps-ui-quality": [
    "na",
    0,
    4
   ],
   "mcp-view-domain": [
    "na",
    0,
    4
   ],
   "mcp-view-csp": [
    "na",
    0,
    4
   ],
   "api-schema-analysis": [
    "warning",
    1,
    2
   ],
   "function-calling-compat": [
    "warning",
    1,
    2
   ],
   "mcp-resource-quality": [
    "pass",
    3,
    3
   ],
   "mpp-support": [
    "na",
    0,
    2
   ],
   "x402-support": [
    "na",
    0,
    2
   ],
   "ucp-support": [
    "na",
    0,
    3
   ],
   "acp-support": [
    "na",
    0,
    3
   ],
   "acp-delegate-payment": [
    "na",
    0,
    3
   ],
   "ap2-support": [
    "na",
    0,
    3
   ]
  },
  "flagged": [
   {
    "id": "json-ld",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 4,
    "tier": "required",
    "est": 2.2,
    "detail": "No JSON-LD structured data found on homepage"
   },
   {
    "id": "webmcp",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 5,
    "tier": "required",
    "est": 2.1,
    "detail": "No WebMCP support detected - no document.modelContext / navigator.modelContext usage found (scanned 1 of 1 same-origin script bundle(s) for modelContext registrations)"
   },
   {
    "id": "mcp-app-registry",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 4,
    "tier": "recommended",
    "est": 1.6,
    "detail": "No MCP Apps support detected - this product has an in-agent UI surface but exposes no ui:// resources or tool UI metadata for agents to render."
   },
   {
    "id": "api-error-model",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": 1.2,
    "detail": "No typed error model found in OpenAPI spec"
   },
   {
    "id": "idempotency-key-support",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": 1.2,
    "detail": "No REST Idempotency-Key support detected"
   },
   {
    "id": "json-ld-entity-linking",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.1,
    "detail": "No JSON-LD found - no entity linking possible"
   },
   {
    "id": "llms-txt-formatting",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.1,
    "detail": "No llms.txt found to evaluate quality"
   },
   {
    "id": "org-schema-completeness",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.1,
    "detail": "No JSON-LD found - Organization schema missing"
   },
   {
    "id": "schema-type-breadth",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.1,
    "detail": "No extended schema types found - AI can only answer basic questions about this entity"
   },
   {
    "id": "async-job-pattern",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.8,
    "detail": "No async job pattern found"
   },
   {
    "id": "content-no-js",
    "layer": "accessibility",
    "status": "warning",
    "score": 2,
    "max": 3,
    "tier": "required",
    "est": 0.5,
    "detail": "3470 chars with H1, but heading hierarchy skips H2 to H4; 3.3% content ratio is below the 5% target"
   },
   {
    "id": "llms-txt-exists",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 0.5,
    "detail": "No llms.txt found at /llms.txt or /.well-known/llms.txt."
   },
   {
    "id": "metadata-completeness",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "required",
    "est": 0.5,
    "detail": "3/4 metadata signals present - missing: HTML lang attribute"
   },
   {
    "id": "agent-friendly-404",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.4,
    "detail": "The nonexistent path https://huggingface.co/__ora-404-probe-rt377oom correctly returns HTTP 404. Partial credit: no Markdown error body was detected."
   },
   {
    "id": "api-schema-analysis",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.4,
    "detail": "REST: schema found (374 operations) but only 0% of operations carry an operationId"
   },
   {
    "id": "api-versioning-policy",
    "layer": "usability",
    "status": "warning",
    "score": 2,
    "max": 3,
    "tier": "recommended",
    "est": 0.4,
    "detail": "API versioning found (URL versioning (servers or paths)) but no deprecation or sunset policy detected - add Sunset/Deprecation headers or a deprecation policy page"
   },
   {
    "id": "function-calling-compat",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.4,
    "detail": "Partial compatibility: 0/374 operationIds, 360/374 typed schemas"
   },
   {
    "id": "onboarding-friction",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.4,
    "detail": "Onboarding signals described but not verified live: free tier available"
   },
   {
    "id": "rest-sdk-packages",
    "layer": "usability",
    "status": "warning",
    "score": 2,
    "max": 3,
    "tier": "recommended",
    "est": 0.4,
    "detail": "SDK packages found in npm, pypi"
   },
   {
    "id": "a2a-agent-card",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.3,
    "detail": "No A2A agent card found at /.well-known/agent-card.json"
   },
   {
    "id": "agent-auth-discovery-metadata",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 3,
    "tier": "recommended",
    "est": 0.2,
    "detail": "PRM + AS metadata both present but AS metadata has no agent_auth block"
   },
   {
    "id": "agent-auth-endpoints-reachable",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.2,
    "detail": "No agent_auth endpoint URIs found in AS metadata or /auth.md prose; nothing to probe"
   },
   {
    "id": "auth-md-exists",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.2,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "auth-md-structure",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.2,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "mcp-multi-surface-coverage",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.2,
    "detail": "You run an MCP server for your product, but not one for your documentation. This bonus needs two MCP servers: one for your product so agents can take actions,"
   },
   {
    "id": "agent-auth-www-authenticate",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.1,
    "detail": "No 401 with WWW-Authenticate: Bearer resource_metadata=... found. Probed [https://huggingface.co/api, https://huggingface.co/api/v1, https://huggingface.co/v1, https://huggingface.co/v2, https://huggingface.co/agent/identity,"
   },
   {
    "id": "markdown-negotiation-vary",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.1,
    "detail": "Homepage https://huggingface.co does not meet the Markdown negotiation requirements: Accept: text/markdown returned text/html; charset=utf-8; Vary header missing Accept (got \"accept-encoding\")"
   },
   {
    "id": "sitemap-lastmod",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.1,
    "detail": "None of the 10 sampled sitemap entries carries a lastmod date. Add <lastmod> (W3C datetime) so agents can prioritize fresh content."
   },
   {
    "id": "a2ui-support",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No A2UI or generative UI support detected"
   },
   {
    "id": "agent-mode-view",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "?mode=agent returns same content as homepage (no dedicated agent view)"
   },
   {
    "id": "agent-plugins-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No Agent Plugins manifest (plugin.json) found in discovered repos"
   },
   {
    "id": "agent-rules-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Could not locate a public repo containing agent configs or rules. If our probes missed it, AI coding agents likely will too - link the repo from your homepage or docs so it's discoverable."
   },
   {
    "id": "agent-ua-markdown",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly."
   },
   {
    "id": "ard-trust-manifest",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0,
    "detail": "No entry carries a trustManifest"
   },
   {
    "id": "markdown-link-alternate",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No sampled page advertises a markdown alternate. Add <link rel=\"alternate\" type=\"text/markdown\" href=\"...\"> (or the equivalent Link response header) pointing at a markdown twin of the page."
   },
   {
    "id": "markdown-negotiation",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Missing markdown content negotiation. Homepage returned text/html when probed with Accept: text/markdown (expected text/markdown), and none of the well-known root paths (/llms.md, /auth.md, /agents.md, /developers.md, /api.md, /index.md,"
   },
   {
    "id": "markdown-url-fallback",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "Homepage does not support the .md suffix. Probed https://huggingface.co/index.md and it did not return markdown (expected text/markdown content-type or a heading-led non-HTML body)."
   },
   {
    "id": "modular-llms-txt",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No section-level llms.txt found. Tried /docs/llms.txt, /api/llms.txt, /developers/llms.txt, /guides/llms.txt, /reference/llms.txt, /models/llms.txt, /datasets/llms.txt, /spaces/llms.txt, /storage/llms.txt, /enterprise/llms.txt."
   },
   {
    "id": "nlweb-ask",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No NLWeb-conformant /ask endpoint found via GET or POST"
   },
   {
    "id": "nlweb-schema-feeds",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No schemamap: directive in robots.txt"
   },
   {
    "id": "nlweb-streaming",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "NLWeb /ask does not support SSE streaming via GET or POST"
   },
   {
    "id": "pricing-md",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No pricing.md found - agents need machine-readable pricing to compare products and make purchase recommendations"
   },
   {
    "id": "registry-branding",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No registry branding (name, icon, description) found"
   },
   {
    "id": "web-bot-auth-directory",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No /.well-known/http-message-signatures-directory found"
   }
  ],
  "seen": {
   "brand-search-accuracy": "huggingface.co ranks #3 for \"Hugging Face ML collaboration platform\"",
   "wikipedia-presence": "Wikipedia \"Hugging Face\" and Wikidata Q108943604 both verified - domain confirmed on both sources",
   "robots-ai-policy-quality": "AI search crawlers: allowed in 18 of 18 checks (3 crawlers on 6 pages). AI training crawlers: allowed in 12 of 12 checks (2 crawlers on 6 pages), not scored.",
   "noindex-directives": "No noindex on the homepage: no robots, googlebot or bingbot meta tag and no X-Robots-Tag header hides it from search.",
   "sitemap": "Valid sitemap found at https://huggingface.co/sitemap.xml with multiple sitemaps entries",
   "content-no-js": "3470 chars with H1, but heading hierarchy skips H2 to H4; 3.3% content ratio is below the 5% target",
   "bot-detection": "Site accessible to 4 agent user-agents (ChatGPT-User, OAI-SearchBot, Claude-User, PerplexityBot).",
   "agent-discovery-file": "Agent Skills index (agentskills.io) found at /.well-known/agent-skills/index.json with 25 skill(s)",
   "a2a-agent-card": "No A2A agent card found at /.well-known/agent-card.json",
   "mcp-well-known-discovery": "MCP server card listed in /.well-known/ai-catalog.json",
   "robots-agent-user-policy": "No applicable crawl or usage restriction found for 3 user-triggered agents (chatgpt-user, claude-user, perplexity-user) on 1 public page: https://huggingface.co/. Declared policy only;",
   "llms-txt-exists": "No llms.txt found at /llms.txt or /.well-known/llms.txt.",
   "llms-txt-formatting": "No llms.txt found to evaluate quality",
   "json-ld": "No JSON-LD structured data found on homepage",
   "public-api-docs": "API/docs link found on homepage and resolves: /docs",
   "metadata-completeness": "3/4 metadata signals present - missing: HTML lang attribute",
   "page-token-budget": "All 6 measured pages fit an agent context budget (largest ~3K tokens)",
   "docs-auth-gate": "All 5 sampled pages are publicly readable (5 with substantive content)",
   "openapi-spec": "OpenAPI spec found at https://huggingface.co/.well-known/openapi.json (version: 3.1.0)",
   "developer-portal": "Developer portal found at /developers",
   "markdown-negotiation": "Missing markdown content negotiation. Homepage returned text/html when probed with Accept: text/markdown (expected text/markdown), and none of the well-known root paths (/llms.md, /auth.md, /agents.md, /developers.md,",
   "agent-ua-markdown": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly.",
   "agent-crawler-reachability": "Reachable to every agent we tested - ChatGPT-User: reachable, OAI-SearchBot: reachable, Claude-User: reachable, PerplexityBot: reachable",
   "public-api": "Documented REST API detected; endpoints require authentication (API key / OAuth), which is expected for agent access. Best-of-protocols score: 7/7.",
   "oauth-support": "OpenID Connect discovery endpoint found at https://huggingface.co",
   "mcp-server": "MCP server connected via Streamable HTTP - huggingface.co/mcp v0.4.31 (protocol 2025-11-25; extensions: io.modelcontextprotocol/skills)",
   "webmcp": "No WebMCP support detected - no document.modelContext / navigator.modelContext usage found (scanned 1 of 1 same-origin script bundle(s) for modelContext registrations)",
   "cli-tool": "CLI package found on npm: @huggingface/hub",
   "rest-sdk-packages": "SDK packages found in npm, pypi",
   "nlweb-ask": "No NLWeb-conformant /ask endpoint found via GET or POST",
   "mpp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "x402-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "ucp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "acp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "ap2-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites"
  }
 },
 {
  "slug": "intercom",
  "name": "Intercom",
  "domain": "intercom.com",
  "finalUrl": "https://www.intercom.com/",
  "read": "2026-11-09",
  "scannedAt": "2026-11-07T05:51:10.813+00:00",
  "score": 81,
  "max": 100,
  "grade": "B",
  "category": "Communication & Support",
  "scoringVersion": null,
  "rulesUrl": null,
  "summary": "Intercom offers strong REST API coverage and a published OpenAPI spec, but lacks WebMCP support, which would let agents interact with its pages directly.",
  "layers": [
   {
    "id": "discovery",
    "name": "Discovery",
    "score": 12,
    "max": 14
   },
   {
    "id": "accessibility",
    "name": "Access",
    "score": 55,
    "max": 63
   },
   {
    "id": "usability",
    "name": "Usability",
    "score": 50,
    "max": 67
   },
   {
    "id": "payments",
    "name": "Payments",
    "score": 0,
    "max": 0
   }
  ],
  "checks": {
   "ard-catalog": [
    "fail",
    0,
    1
   ],
   "ai-catalog-published": [
    "na",
    0,
    1
   ],
   "ard-entries-valid": [
    "na",
    0,
    2
   ],
   "ard-trust-manifest": [
    "na",
    0,
    2
   ],
   "agentic-search-usecase": [
    "na",
    0,
    6
   ],
   "agentic-search-specific": [
    "pass",
    3,
    3
   ],
   "brand-search-accuracy": [
    "pass",
    3,
    3
   ],
   "wikipedia-presence": [
    "warning",
    2,
    4
   ],
   "robots-ai-policy-quality": [
    "pass",
    2,
    2
   ],
   "mcp-registry-listed": [
    "fail",
    0,
    1
   ],
   "npm-sdk-package": [
    "pass",
    1,
    1
   ],
   "agent-rules-repo": [
    "fail",
    0,
    1
   ],
   "agent-plugins-repo": [
    "fail",
    0,
    1
   ],
   "registry-branding": [
    "fail",
    0,
    2
   ],
   "chatgpt-app-listed": [
    "fail",
    0,
    2
   ],
   "noindex-directives": [
    "pass",
    1,
    1
   ],
   "sitemap": [
    "pass",
    2,
    2
   ],
   "content-no-js": [
    "warning",
    2,
    3
   ],
   "bot-detection": [
    "pass",
    2,
    2
   ],
   "agent-discovery-file": [
    "fail",
    0,
    2
   ],
   "agent-skills-index-v2": [
    "na",
    0,
    2
   ],
   "a2a-agent-card": [
    "fail",
    0,
    2
   ],
   "skills-sh-listed": [
    "pass",
    1,
    1
   ],
   "pricing-md": [
    "fail",
    0,
    2
   ],
   "nlweb-schema-feeds": [
    "fail",
    0,
    1
   ],
   "mcp-well-known-discovery": [
    "pass",
    2,
    2
   ],
   "agent-mode-view": [
    "fail",
    0,
    2
   ],
   "link-headers-discovery": [
    "pass",
    1,
    1
   ],
   "markdown-url-fallback": [
    "fail",
    0,
    2
   ],
   "modular-llms-txt": [
    "fail",
    0,
    1
   ],
   "sitemap-lastmod": [
    "fail",
    0,
    1
   ],
   "robots-agent-user-policy": [
    "pass",
    2,
    2
   ],
   "llms-txt-exists": [
    "pass",
    1,
    1
   ],
   "llms-txt-formatting": [
    "pass",
    2,
    2
   ],
   "json-ld": [
    "pass",
    4,
    4
   ],
   "pricing-info": [
    "pass",
    3,
    3
   ],
   "public-api-docs": [
    "pass",
    3,
    3
   ],
   "agent-instruction": [
    "warning",
    2,
    3
   ],
   "skills-sh-quality": [
    "warning",
    1,
    2
   ],
   "json-ld-entity-linking": [
    "pass",
    2,
    2
   ],
   "metadata-completeness": [
    "pass",
    2,
    2
   ],
   "org-schema-completeness": [
    "warning",
    1,
    2
   ],
   "schema-type-breadth": [
    "warning",
    1,
    2
   ],
   "trust-anchors": [
    "pass",
    2,
    2
   ],
   "llms-txt-links-resolve": [
    "pass",
    2,
    2
   ],
   "markdown-link-alternate": [
    "pass",
    1,
    1
   ],
   "markdown-frontmatter": [
    "pass",
    1,
    1
   ],
   "redirect-hygiene": [
    "pass",
    1,
    1
   ],
   "page-token-budget": [
    "pass",
    1,
    1
   ],
   "code-fence-validity": [
    "pass",
    1,
    1
   ],
   "docs-auth-gate": [
    "pass",
    2,
    2
   ],
   "openapi-spec": [
    "warning",
    5,
    7
   ],
   "developer-portal": [
    "pass",
    6,
    6
   ],
   "api-catalog-rfc9727": [
    "warning",
    1,
    2
   ],
   "markdown-negotiation": [
    "pass",
    1,
    1
   ],
   "markdown-negotiation-vary": [
    "pass",
    1,
    1
   ],
   "agent-ua-markdown": [
    "fail",
    0,
    1
   ],
   "agent-crawler-reachability": [
    "pass",
    2,
    2
   ],
   "mcp-tool-descriptions": [
    "na",
    0,
    3
   ],
   "mcp-param-schemas": [
    "na",
    0,
    2
   ],
   "mcp-server-identity": [
    "na",
    0,
    1
   ],
   "mcp-tool-listing": [
    "na",
    0,
    3
   ],
   "mcp-tool-naming": [
    "na",
    0,
    2
   ],
   "public-api": [
    "pass",
    7,
    7
   ],
   "oauth-support": [
    "pass",
    5,
    5
   ],
   "scoped-permissions": [
    "warning",
    2,
    5
   ],
   "mcp-auth-mechanism": [
    "pass",
    2,
    2
   ],
   "mcp-oauth-metadata": [
    "pass",
    2,
    2
   ],
   "mcp-pkce-s256": [
    "pass",
    2,
    2
   ],
   "onboarding-friction": [
    "warning",
    1,
    2
   ],
   "web-bot-auth-directory": [
    "fail",
    0,
    2
   ],
   "oauth-protected-resource": [
    "pass",
    2,
    2
   ],
   "auth-md-exists": [
    "fail",
    0,
    2
   ],
   "auth-md-structure": [
    "fail",
    0,
    2
   ],
   "auth-md-walkthrough-simulation": [
    "na",
    0,
    2
   ],
   "agent-auth-discovery-metadata": [
    "warning",
    1,
    3
   ],
   "agent-auth-www-authenticate": [
    "pass",
    1,
    1
   ],
   "agent-auth-endpoints-reachable": [
    "fail",
    0,
    2
   ],
   "pap-discovery": [
    "na",
    0,
    2
   ],
   "pap-issuer-binding": [
    "na",
    0,
    2
   ],
   "pap-auth-config": [
    "na",
    0,
    2
   ],
   "pap-interfaces": [
    "na",
    0,
    2
   ],
   "pap-endpoint-enforcement": [
    "na",
    0,
    2
   ],
   "pap-cross-protocol": [
    "na",
    0,
    2
   ],
   "mcp-server": [
    "warning",
    5,
    6
   ],
   "mcp-error-handling": [
    "na",
    0,
    2
   ],
   "mcp-transport-modern": [
    "na",
    0,
    1
   ],
   "webmcp": [
    "fail",
    0,
    5
   ],
   "rate-limit-headers": [
    "na",
    0,
    2
   ],
   "idempotency-key-support": [
    "na",
    0,
    3
   ],
   "json-error-responses": [
    "fail",
    0,
    4
   ],
   "api-error-model": [
    "na",
    0,
    3
   ],
   "api-versioning-policy": [
    "na",
    0,
    3
   ],
   "pagination-shape": [
    "na",
    0,
    2
   ],
   "async-job-pattern": [
    "na",
    0,
    2
   ],
   "cli-tool": [
    "warning",
    2,
    3
   ],
   "rest-sdk-packages": [
    "warning",
    2,
    3
   ],
   "nlweb-ask": [
    "pass",
    1,
    1
   ],
   "nlweb-streaming": [
    "fail",
    0,
    1
   ],
   "response-schema-coverage": [
    "na",
    0,
    2
   ],
   "mcp-tool-annotations": [
    "na",
    0,
    2
   ],
   "mcp-server-card": [
    "warning",
    1,
    2
   ],
   "mcp-multi-surface-coverage": [
    "fail",
    0,
    2
   ],
   "sandbox-environment": [
    "fail",
    0,
    2
   ],
   "batch-endpoints": [
    "na",
    0,
    2
   ],
   "mcp-resource-listing": [
    "na",
    0,
    3
   ],
   "graphql-error-type-definition": [
    "na",
    0,
    3
   ],
   "graphql-versioning-policy": [
    "na",
    0,
    2
   ],
   "graphql-pagination-pattern": [
    "na",
    0,
    2
   ],
   "graphql-async-job-pattern": [
    "na",
    0,
    2
   ],
   "graphql-schema-completeness": [
    "na",
    0,
    3
   ],
   "graphql-batch-mutations": [
    "na",
    0,
    2
   ],
   "agent-friendly-404": [
    "warning",
    1,
    2
   ],
   "ax-document-structure": [
    "pass",
    3,
    3
   ],
   "ax-native-controls": [
    "pass",
    3,
    3
   ],
   "ax-accessible-names": [
    "pass",
    2,
    2
   ],
   "ax-form-labeling": [
    "na",
    0,
    2
   ],
   "ax-tree-injection-safe": [
    "pass",
    2,
    2
   ],
   "mcp-app-registry": [
    "na",
    0,
    4
   ],
   "a2ui-support": [
    "fail",
    0,
    2
   ],
   "mcp-apps-ui-quality": [
    "na",
    0,
    4
   ],
   "mcp-view-domain": [
    "na",
    0,
    4
   ],
   "mcp-view-csp": [
    "na",
    0,
    4
   ],
   "api-schema-analysis": [
    "pass",
    2,
    2
   ],
   "function-calling-compat": [
    "pass",
    2,
    2
   ],
   "mcp-resource-quality": [
    "na",
    0,
    3
   ],
   "mpp-support": [
    "warning",
    0,
    2
   ],
   "x402-support": [
    "warning",
    0,
    2
   ],
   "ucp-support": [
    "warning",
    0,
    3
   ],
   "acp-support": [
    "warning",
    0,
    3
   ],
   "acp-delegate-payment": [
    "warning",
    0,
    3
   ],
   "ap2-support": [
    "warning",
    0,
    3
   ]
  },
  "flagged": [
   {
    "id": "webmcp",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 5,
    "tier": "required",
    "est": 3.3,
    "detail": "No WebMCP support detected - no document.modelContext / navigator.modelContext usage found"
   },
   {
    "id": "json-error-responses",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 4,
    "tier": "required",
    "est": 2.7,
    "detail": "API does not return JSON error responses (or no API detected)"
   },
   {
    "id": "scoped-permissions",
    "layer": "usability",
    "status": "warning",
    "score": 2,
    "max": 5,
    "tier": "recommended",
    "est": 2,
    "detail": "Scoped permissions described at https://www.intercom.com, but no machine-readable scope declaration found (OpenAPI oauth2 scopes or RFC 9728 scopes_supported)"
   },
   {
    "id": "ard-catalog",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 1.6,
    "detail": "No /.well-known/ard.json, no same-site rel=\"ard\" link, and no legacy /.well-known/ai-catalog.json"
   },
   {
    "id": "mcp-registry-listed",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 1.6,
    "detail": "No verified entry in the official MCP Registry or on Smithery, and no npm or PyPI package of yours that runs as an MCP server. To pass,"
   },
   {
    "id": "agent-discovery-file",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 1.1,
    "detail": "No agent discovery file found"
   },
   {
    "id": "openapi-spec",
    "layer": "accessibility",
    "status": "warning",
    "score": 5,
    "max": 7,
    "tier": "required",
    "est": 1.1,
    "detail": "OpenAPI spec (YAML) found at https://developers.intercom.com/_bundle/docs/references/@2.15/rest-api/api.intercom.io.yaml"
   },
   {
    "id": "agent-friendly-404",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.7,
    "detail": "The nonexistent path https://intercom.com/__ora-404-probe-erc9xyty correctly returns HTTP 404. Partial credit: no Markdown error body was detected."
   },
   {
    "id": "cli-tool",
    "layer": "usability",
    "status": "warning",
    "score": 2,
    "max": 3,
    "tier": "recommended",
    "est": 0.7,
    "detail": "CLI tool mentioned in llms.txt"
   },
   {
    "id": "mcp-server",
    "layer": "usability",
    "status": "warning",
    "score": 5,
    "max": 6,
    "tier": "required",
    "est": 0.7,
    "detail": "MCP server detected at https://mcp.intercom.com/mcp; it requires authentication. Presence is verified (5/6), but Ora could not inspect its tools or verify access scopes without credentials."
   },
   {
    "id": "onboarding-friction",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.7,
    "detail": "Onboarding signals described but not verified live: free tier available, self-serve key generation, sandbox/test environment"
   },
   {
    "id": "rest-sdk-packages",
    "layer": "usability",
    "status": "warning",
    "score": 2,
    "max": 3,
    "tier": "recommended",
    "est": 0.7,
    "detail": "SDK packages found in npm, go"
   },
   {
    "id": "agent-instruction",
    "layer": "accessibility",
    "status": "warning",
    "score": 2,
    "max": 3,
    "tier": "required",
    "est": 0.5,
    "detail": "When-to-use guidance found at https://www.intercom.com"
   },
   {
    "id": "content-no-js",
    "layer": "accessibility",
    "status": "warning",
    "score": 2,
    "max": 3,
    "tier": "required",
    "est": 0.5,
    "detail": "Homepage: 7283 chars with H1, but 2.0% content ratio is below the 5% target. 1 of 1 sampled inner page has text without JavaScript (4 skipped)."
   },
   {
    "id": "org-schema-completeness",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "Organization schema found but missing: contactPoint, address"
   },
   {
    "id": "schema-type-breadth",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "Some extended schema types found: ItemList, BreadcrumbList - add 1 more type that matches what the homepage shows, for full coverage"
   },
   {
    "id": "chatgpt-app-listed",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.4,
    "detail": "Not found in ChatGPT app directory"
   },
   {
    "id": "wikipedia-presence",
    "layer": "discovery",
    "status": "warning",
    "score": 2,
    "max": 4,
    "tier": "recommended",
    "est": 0.4,
    "detail": "Wikidata Q48965215 (Intercom) verified - draft a Wikipedia page with cited references to complete knowledge graph coverage"
   },
   {
    "id": "agent-auth-discovery-metadata",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 3,
    "tier": "recommended",
    "est": 0.3,
    "detail": "PRM + AS metadata both present (PRM discovered at https://mcp.intercom.com) (AS metadata fetched from advertised origin https://mcp.intercom.com) but AS metadata has no agent_auth block"
   },
   {
    "id": "agent-auth-endpoints-reachable",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.3,
    "detail": "No agent_auth endpoint URIs found in AS metadata or /auth.md prose; nothing to probe"
   },
   {
    "id": "auth-md-exists",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.3,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "auth-md-structure",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.3,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "mcp-multi-surface-coverage",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.3,
    "detail": "You run an MCP server for your product, but not one for your documentation. This bonus needs two MCP servers: one for your product so agents can take actions,"
   },
   {
    "id": "sandbox-environment",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.3,
    "detail": "No sandbox or test environment found"
   },
   {
    "id": "mcp-server-card",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.2,
    "detail": "MCP server card found at https://www.intercom.com/.well-known/mcp/server-card.json but missing fields: name, version"
   },
   {
    "id": "a2a-agent-card",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.1,
    "detail": "No A2A agent card found at /.well-known/agent-card.json"
   },
   {
    "id": "api-catalog-rfc9727",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "required",
    "est": 0.1,
    "detail": "api-catalog linkset[0] has no 'item' entries"
   },
   {
    "id": "sitemap-lastmod",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.1,
    "detail": "None of the 77 sampled sitemap entries carries a lastmod date. Add <lastmod> (W3C datetime) so agents can prioritize fresh content."
   },
   {
    "id": "a2ui-support",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No A2UI or generative UI support detected"
   },
   {
    "id": "acp-delegate-payment",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": null,
    "detail": "No ACP Delegate Payment signals detected"
   },
   {
    "id": "acp-support",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 3,
    "tier": "required",
    "est": null,
    "detail": "no ACP (Agentic Commerce Protocol) signals detected"
   },
   {
    "id": "agent-mode-view",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "?mode=agent returns same content as homepage (no dedicated agent view)"
   },
   {
    "id": "agent-plugins-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No Agent Plugins manifest (plugin.json) found in discovered repos"
   },
   {
    "id": "agent-rules-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Could not locate a public repo containing agent configs or rules. If our probes missed it, AI coding agents likely will too - link the repo from your homepage or docs so it's discoverable."
   },
   {
    "id": "agent-ua-markdown",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly."
   },
   {
    "id": "ap2-support",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": null,
    "detail": "No AP2 (Agent Payments Protocol) signals detected"
   },
   {
    "id": "markdown-url-fallback",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "Homepage does not support the .md suffix. Probed https://intercom.com/index.md and it did not return markdown (expected text/markdown content-type or a heading-led non-HTML body)."
   },
   {
    "id": "modular-llms-txt",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No section-level llms.txt found. Tried /docs/llms.txt, /api/llms.txt, /developers/llms.txt, /guides/llms.txt, /reference/llms.txt, /contact-sales/llms.txt, /view-demos/llms.txt, /signup/llms.txt, /helpdesk/llms.txt, /integrations/llms.txt."
   },
   {
    "id": "mpp-support",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": null,
    "detail": "No MPP (Machine Payments Protocol) support detected"
   },
   {
    "id": "nlweb-schema-feeds",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No schemamap: directive in robots.txt"
   },
   {
    "id": "nlweb-streaming",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "NLWeb /ask requires authentication - cannot verify streaming"
   },
   {
    "id": "pricing-md",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No pricing.md found - agents need machine-readable pricing to compare products and make purchase recommendations"
   },
   {
    "id": "registry-branding",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No registry branding (name, icon, description) found"
   },
   {
    "id": "skills-sh-quality",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "Skills.sh presence exists but limited - 66 installs (goal: 200+)"
   },
   {
    "id": "ucp-support",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 3,
    "tier": "required",
    "est": null,
    "detail": "no UCP (Universal Commerce Protocol) signals detected"
   },
   {
    "id": "web-bot-auth-directory",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No /.well-known/http-message-signatures-directory found"
   },
   {
    "id": "x402-support",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": null,
    "detail": "No x402 payment protocol support detected"
   }
  ],
  "seen": {
   "brand-search-accuracy": "intercom.com ranks #3 for \"Intercom\" (searched your brand name alone: no main product term from your homepage qualified)",
   "wikipedia-presence": "Wikidata Q48965215 (Intercom) verified - draft a Wikipedia page with cited references to complete knowledge graph coverage",
   "robots-ai-policy-quality": "AI search crawlers: allowed in 3 of 3 checks (3 crawlers on 1 page). AI training crawlers: allowed in 2 of 2 checks (2 crawlers on 1 page), not scored.",
   "noindex-directives": "No noindex on the homepage: no robots, googlebot or bingbot meta tag and no X-Robots-Tag header hides it from search.",
   "sitemap": "Valid sitemap found at https://www.intercom.com/sitemap.xml with multiple sitemaps entries",
   "content-no-js": "Homepage: 7283 chars with H1, but 2.0% content ratio is below the 5% target. 1 of 1 sampled inner page has text without JavaScript (4 skipped).",
   "bot-detection": "Site accessible to 4 agent user-agents (ChatGPT-User, OAI-SearchBot, Claude-User, PerplexityBot).",
   "agent-discovery-file": "No agent discovery file found",
   "a2a-agent-card": "No A2A agent card found at /.well-known/agent-card.json",
   "mcp-well-known-discovery": "MCP server discoverable via server-card.json at /.well-known/mcp/",
   "robots-agent-user-policy": "No applicable crawl or usage restriction found for 3 user-triggered agents (chatgpt-user, claude-user, perplexity-user) on 1 public page: https://intercom.com/. Declared policy only;",
   "llms-txt-exists": "Found the llms.txt at https://www.intercom.com/llms.txt.",
   "llms-txt-formatting": "The llms.txt is well-formatted: 173 lines with markdown links, 10,277 characters in total.",
   "json-ld": "Rich JSON-LD identity: Product with name, description, url, and offers/brand (1 block(s))",
   "public-api-docs": "Documentation site found at https://www.intercom.com",
   "metadata-completeness": "All metadata signals present: canonical URL, lang=\"en\", og:image, og:type",
   "page-token-budget": "All 6 measured pages fit an agent context budget (largest ~4K tokens)",
   "docs-auth-gate": "All 5 sampled pages are publicly readable (5 with substantive content)",
   "openapi-spec": "OpenAPI spec (YAML) found at https://developers.intercom.com/_bundle/docs/references/@2.15/rest-api/api.intercom.io.yaml",
   "developer-portal": "Developer portal found at /developers",
   "markdown-negotiation": "Returns markdown when requested via Accept header",
   "agent-ua-markdown": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly.",
   "agent-crawler-reachability": "Reachable to every agent we tested - ChatGPT-User: reachable, OAI-SearchBot: reachable, Claude-User: reachable, PerplexityBot: reachable",
   "public-api": "REST API documentation found at /api. Best-of-protocols score: 7/7.",
   "oauth-support": "OAuth authorization server metadata at https://mcp.intercom.com",
   "mcp-server": "MCP server detected at https://mcp.intercom.com/mcp; it requires authentication. Presence is verified (5/6), but Ora could not inspect its tools or verify access scopes without credentials.",
   "webmcp": "No WebMCP support detected - no document.modelContext / navigator.modelContext usage found",
   "cli-tool": "CLI tool mentioned in llms.txt",
   "rest-sdk-packages": "SDK packages found in npm, go",
   "nlweb-ask": "NLWeb /ask endpoint exists but requires authentication (HTTP 403, via POST)",
   "mpp-support": "No MPP (Machine Payments Protocol) support detected",
   "x402-support": "No x402 payment protocol support detected",
   "ucp-support": "no UCP (Universal Commerce Protocol) signals detected",
   "acp-support": "no ACP (Agentic Commerce Protocol) signals detected",
   "ap2-support": "No AP2 (Agent Payments Protocol) signals detected"
  }
 },
 {
  "slug": "linear",
  "name": "Linear",
  "domain": "linear.app",
  "finalUrl": "https://linear.app/",
  "read": "2026-11-09",
  "scannedAt": "2026-11-09T04:44:13.67+00:00",
  "score": 69,
  "max": 100,
  "grade": "C",
  "category": "Productivity",
  "scoringVersion": 2,
  "rulesUrl": "https://ora.ai/api/ranker/releases/2/rules",
  "summary": "Linear offers strong agent-ready discovery and a published SDK, but lacks an OpenAPI specification for its API.",
  "layers": [
   {
    "id": "discovery",
    "name": "Discovery",
    "score": 11,
    "max": 14
   },
   {
    "id": "accessibility",
    "name": "Access",
    "score": 41,
    "max": 63
   },
   {
    "id": "usability",
    "name": "Usability",
    "score": 44,
    "max": 66
   },
   {
    "id": "payments",
    "name": "Payments",
    "score": 0,
    "max": 0
   }
  ],
  "checks": {
   "ard-catalog": [
    "fail",
    0,
    1
   ],
   "ai-catalog-published": [
    "na",
    0,
    1
   ],
   "ard-entries-valid": [
    "na",
    0,
    2
   ],
   "ard-trust-manifest": [
    "na",
    0,
    2
   ],
   "agentic-search-usecase": [
    "na",
    0,
    6
   ],
   "agentic-search-specific": [
    "pass",
    3,
    3
   ],
   "brand-search-accuracy": [
    "warning",
    1,
    3
   ],
   "wikipedia-presence": [
    "fail",
    0,
    4
   ],
   "robots-ai-policy-quality": [
    "pass",
    2,
    2
   ],
   "mcp-registry-listed": [
    "pass",
    1,
    1
   ],
   "npm-sdk-package": [
    "pass",
    1,
    1
   ],
   "agent-rules-repo": [
    "fail",
    0,
    1
   ],
   "agent-plugins-repo": [
    "fail",
    0,
    1
   ],
   "registry-branding": [
    "fail",
    0,
    2
   ],
   "chatgpt-app-listed": [
    "pass",
    2,
    2
   ],
   "noindex-directives": [
    "pass",
    1,
    1
   ],
   "sitemap": [
    "pass",
    2,
    2
   ],
   "content-no-js": [
    "warning",
    2,
    3
   ],
   "bot-detection": [
    "pass",
    2,
    2
   ],
   "agent-discovery-file": [
    "pass",
    2,
    2
   ],
   "agent-skills-index-v2": [
    "na",
    0,
    2
   ],
   "a2a-agent-card": [
    "fail",
    0,
    2
   ],
   "skills-sh-listed": [
    "pass",
    1,
    1
   ],
   "pricing-md": [
    "warning",
    1,
    2
   ],
   "nlweb-schema-feeds": [
    "fail",
    0,
    1
   ],
   "mcp-well-known-discovery": [
    "pass",
    2,
    2
   ],
   "agent-mode-view": [
    "fail",
    0,
    2
   ],
   "link-headers-discovery": [
    "pass",
    1,
    1
   ],
   "markdown-url-fallback": [
    "pass",
    2,
    2
   ],
   "modular-llms-txt": [
    "fail",
    0,
    1
   ],
   "sitemap-lastmod": [
    "pass",
    1,
    1
   ],
   "robots-agent-user-policy": [
    "pass",
    2,
    2
   ],
   "llms-txt-exists": [
    "pass",
    1,
    1
   ],
   "llms-txt-formatting": [
    "pass",
    2,
    2
   ],
   "json-ld": [
    "fail",
    0,
    4
   ],
   "pricing-info": [
    "pass",
    3,
    3
   ],
   "public-api-docs": [
    "pass",
    3,
    3
   ],
   "agent-instruction": [
    "fail",
    0,
    3
   ],
   "skills-sh-quality": [
    "warning",
    1,
    2
   ],
   "json-ld-entity-linking": [
    "fail",
    0,
    2
   ],
   "metadata-completeness": [
    "warning",
    1,
    2
   ],
   "org-schema-completeness": [
    "fail",
    0,
    2
   ],
   "schema-type-breadth": [
    "fail",
    0,
    2
   ],
   "trust-anchors": [
    "pass",
    2,
    2
   ],
   "llms-txt-links-resolve": [
    "pass",
    2,
    2
   ],
   "markdown-link-alternate": [
    "pass",
    1,
    1
   ],
   "markdown-frontmatter": [
    "fail",
    0,
    1
   ],
   "redirect-hygiene": [
    "pass",
    1,
    1
   ],
   "page-token-budget": [
    "pass",
    1,
    1
   ],
   "code-fence-validity": [
    "pass",
    1,
    1
   ],
   "docs-auth-gate": [
    "pass",
    2,
    2
   ],
   "openapi-spec": [
    "fail",
    0,
    7
   ],
   "developer-portal": [
    "pass",
    6,
    6
   ],
   "api-catalog-rfc9727": [
    "fail",
    0,
    2
   ],
   "markdown-negotiation": [
    "pass",
    1,
    1
   ],
   "markdown-negotiation-vary": [
    "pass",
    1,
    1
   ],
   "agent-ua-markdown": [
    "fail",
    0,
    1
   ],
   "agent-crawler-reachability": [
    "pass",
    2,
    2
   ],
   "mcp-tool-descriptions": [
    "na",
    0,
    3
   ],
   "mcp-param-schemas": [
    "na",
    0,
    2
   ],
   "mcp-server-identity": [
    "na",
    0,
    1
   ],
   "mcp-tool-listing": [
    "na",
    0,
    3
   ],
   "mcp-tool-naming": [
    "na",
    0,
    2
   ],
   "public-api": [
    "pass",
    7,
    7
   ],
   "oauth-support": [
    "pass",
    5,
    5
   ],
   "scoped-permissions": [
    "fail",
    0,
    5
   ],
   "mcp-auth-mechanism": [
    "pass",
    2,
    2
   ],
   "mcp-oauth-metadata": [
    "pass",
    2,
    2
   ],
   "mcp-pkce-s256": [
    "pass",
    2,
    2
   ],
   "onboarding-friction": [
    "pass",
    2,
    2
   ],
   "web-bot-auth-directory": [
    "fail",
    0,
    2
   ],
   "oauth-protected-resource": [
    "pass",
    2,
    2
   ],
   "auth-md-exists": [
    "fail",
    0,
    2
   ],
   "auth-md-structure": [
    "fail",
    0,
    2
   ],
   "auth-md-walkthrough-simulation": [
    "na",
    0,
    2
   ],
   "agent-auth-discovery-metadata": [
    "warning",
    1,
    3
   ],
   "agent-auth-www-authenticate": [
    "pass",
    1,
    1
   ],
   "agent-auth-endpoints-reachable": [
    "fail",
    0,
    2
   ],
   "pap-discovery": [
    "na",
    0,
    2
   ],
   "pap-issuer-binding": [
    "na",
    0,
    2
   ],
   "pap-auth-config": [
    "na",
    0,
    2
   ],
   "pap-interfaces": [
    "na",
    0,
    2
   ],
   "pap-endpoint-enforcement": [
    "na",
    0,
    2
   ],
   "pap-cross-protocol": [
    "na",
    0,
    2
   ],
   "mcp-server": [
    "warning",
    5,
    6
   ],
   "mcp-error-handling": [
    "na",
    0,
    2
   ],
   "mcp-transport-modern": [
    "na",
    0,
    1
   ],
   "webmcp": [
    "fail",
    0,
    5
   ],
   "rate-limit-headers": [
    "na",
    0,
    2
   ],
   "idempotency-key-support": [
    "na",
    0,
    3
   ],
   "json-error-responses": [
    "fail",
    0,
    4
   ],
   "api-error-model": [
    "na",
    0,
    3
   ],
   "api-versioning-policy": [
    "na",
    0,
    3
   ],
   "pagination-shape": [
    "na",
    0,
    2
   ],
   "async-job-pattern": [
    "na",
    0,
    2
   ],
   "cli-tool": [
    "warning",
    2,
    3
   ],
   "rest-sdk-packages": [
    "warning",
    1,
    3
   ],
   "nlweb-ask": [
    "fail",
    0,
    1
   ],
   "nlweb-streaming": [
    "fail",
    0,
    1
   ],
   "response-schema-coverage": [
    "na",
    0,
    2
   ],
   "mcp-tool-annotations": [
    "na",
    0,
    2
   ],
   "mcp-server-card": [
    "fail",
    0,
    2
   ],
   "mcp-multi-surface-coverage": [
    "fail",
    0,
    2
   ],
   "sandbox-environment": [
    "fail",
    0,
    2
   ],
   "batch-endpoints": [
    "na",
    0,
    2
   ],
   "mcp-resource-listing": [
    "na",
    0,
    3
   ],
   "graphql-error-type-definition": [
    "na",
    0,
    3
   ],
   "graphql-versioning-policy": [
    "na",
    0,
    2
   ],
   "graphql-pagination-pattern": [
    "na",
    0,
    2
   ],
   "graphql-async-job-pattern": [
    "na",
    0,
    2
   ],
   "graphql-schema-completeness": [
    "na",
    0,
    3
   ],
   "graphql-batch-mutations": [
    "na",
    0,
    2
   ],
   "agent-friendly-404": [
    "fail",
    0,
    2
   ],
   "ax-document-structure": [
    "pass",
    3,
    3
   ],
   "ax-native-controls": [
    "pass",
    3,
    3
   ],
   "ax-accessible-names": [
    "pass",
    2,
    2
   ],
   "ax-form-labeling": [
    "na",
    0,
    2
   ],
   "ax-tree-injection-safe": [
    "pass",
    2,
    2
   ],
   "mcp-app-registry": [
    "na",
    0,
    4
   ],
   "a2ui-support": [
    "fail",
    0,
    2
   ],
   "mcp-apps-ui-quality": [
    "na",
    0,
    4
   ],
   "mcp-view-domain": [
    "na",
    0,
    4
   ],
   "mcp-view-csp": [
    "na",
    0,
    4
   ],
   "api-schema-analysis": [
    "warning",
    1,
    2
   ],
   "function-calling-compat": [
    "warning",
    1,
    2
   ],
   "mcp-resource-quality": [
    "na",
    0,
    3
   ],
   "mpp-support": [
    "na",
    0,
    2
   ],
   "x402-support": [
    "na",
    0,
    2
   ],
   "ucp-support": [
    "na",
    0,
    3
   ],
   "acp-support": [
    "na",
    0,
    3
   ],
   "acp-delegate-payment": [
    "na",
    0,
    3
   ],
   "ap2-support": [
    "na",
    0,
    3
   ]
  },
  "flagged": [
   {
    "id": "openapi-spec",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 7,
    "tier": "required",
    "est": 3.7,
    "detail": "No OpenAPI/Swagger specification found"
   },
   {
    "id": "scoped-permissions",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 5,
    "tier": "recommended",
    "est": 3.4,
    "detail": "No declared OAuth scopes, security schemes, or scoped-permission documentation found"
   },
   {
    "id": "webmcp",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 5,
    "tier": "required",
    "est": 3.4,
    "detail": "No WebMCP support detected - no document.modelContext / navigator.modelContext usage found"
   },
   {
    "id": "brand-search-accuracy",
    "layer": "discovery",
    "status": "warning",
    "score": 1,
    "max": 3,
    "tier": "required",
    "est": 3.2,
    "detail": "linear.app ranks #9 for \"Linear\" (searched your brand name alone: no main product term from your homepage qualified)"
   },
   {
    "id": "json-error-responses",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 4,
    "tier": "required",
    "est": 2.7,
    "detail": "API does not return JSON error responses (or no API detected)"
   },
   {
    "id": "json-ld",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 4,
    "tier": "required",
    "est": 2.1,
    "detail": "No JSON-LD structured data found on homepage"
   },
   {
    "id": "agent-instruction",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "required",
    "est": 1.6,
    "detail": "No agent instruction file with when-to-use guidance found"
   },
   {
    "id": "ard-catalog",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 1.6,
    "detail": "No /.well-known/ard.json, no same-site rel=\"ard\" link, and no legacy /.well-known/ai-catalog.json"
   },
   {
    "id": "agent-friendly-404",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.3,
    "detail": "Nonexistent paths return HTTP 200 with the app shell (soft-404). Agents probing for resources conclude every path exists. Return a real HTTP 404 status for unknown paths."
   },
   {
    "id": "rest-sdk-packages",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 3,
    "tier": "recommended",
    "est": 1.3,
    "detail": "SDK package found only in npm"
   },
   {
    "id": "json-ld-entity-linking",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.1,
    "detail": "No JSON-LD found - no entity linking possible"
   },
   {
    "id": "org-schema-completeness",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.1,
    "detail": "No JSON-LD found - Organization schema missing"
   },
   {
    "id": "schema-type-breadth",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.1,
    "detail": "No extended schema types found - AI can only answer basic questions about this entity"
   },
   {
    "id": "wikipedia-presence",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 4,
    "tier": "recommended",
    "est": 1.1,
    "detail": "No Wikipedia article or Wikidata entity found for \"linear\" - creating a Wikipedia page and a Wikidata item with P856 = linear.app is the highest-impact step for AI search citation coverage"
   },
   {
    "id": "api-schema-analysis",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.7,
    "detail": "REST: OpenAPI spec found but failed to parse for complexity analysis"
   },
   {
    "id": "cli-tool",
    "layer": "usability",
    "status": "warning",
    "score": 2,
    "max": 3,
    "tier": "recommended",
    "est": 0.7,
    "detail": "CLI tool mentioned in llms.txt"
   },
   {
    "id": "function-calling-compat",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.7,
    "detail": "API spec found but couldn't validate function calling compatibility"
   },
   {
    "id": "mcp-server",
    "layer": "usability",
    "status": "warning",
    "score": 5,
    "max": 6,
    "tier": "required",
    "est": 0.7,
    "detail": "MCP server detected at https://mcp.linear.app/mcp; it requires authentication. Presence is verified (5/6), but Ora could not inspect its tools or verify access scopes without credentials."
   },
   {
    "id": "content-no-js",
    "layer": "accessibility",
    "status": "warning",
    "score": 2,
    "max": 3,
    "tier": "required",
    "est": 0.5,
    "detail": "Homepage: 8822 chars with H1, but heading hierarchy skips H1 to H3; 1.3% content ratio is below the 5% target. 5 of 5 sampled inner pages have text without JavaScript."
   },
   {
    "id": "metadata-completeness",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "required",
    "est": 0.5,
    "detail": "3/4 metadata signals present - missing: og:type"
   },
   {
    "id": "a2a-agent-card",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.4,
    "detail": "No A2A agent card found at /.well-known/agent-card.json"
   },
   {
    "id": "agent-auth-discovery-metadata",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 3,
    "tier": "recommended",
    "est": 0.4,
    "detail": "PRM + AS metadata both present (PRM discovered at https://mcp.linear.app) (AS metadata fetched from advertised origin https://mcp.linear.app) but AS metadata has no agent_auth block"
   },
   {
    "id": "agent-auth-endpoints-reachable",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.4,
    "detail": "No agent_auth endpoint URIs found in AS metadata or /auth.md prose; nothing to probe"
   },
   {
    "id": "api-catalog-rfc9727",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.4,
    "detail": "No /.well-known/api-catalog found (RFC 9727)"
   },
   {
    "id": "auth-md-exists",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.4,
    "detail": "Path https://linear.app/auth.md returned HTML (SPA / 404 fallback), not an auth.md document"
   },
   {
    "id": "auth-md-structure",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.4,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "mcp-multi-surface-coverage",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.4,
    "detail": "You run an MCP server for your product, but not one for your documentation. This bonus needs two MCP servers: one for your product so agents can take actions,"
   },
   {
    "id": "mcp-server-card",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.4,
    "detail": "No MCP server card found for https://mcp.linear.app/mcp (checked /.well-known/mcp/server-card.json, the site's ai-catalog.json, servers[].card in mcp.json, and <server>/server-card)"
   },
   {
    "id": "sandbox-environment",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.4,
    "detail": "No sandbox or test environment found"
   },
   {
    "id": "a2ui-support",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No A2UI or generative UI support detected"
   },
   {
    "id": "agent-mode-view",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "?mode=agent returns same content as homepage (no dedicated agent view)"
   },
   {
    "id": "agent-plugins-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No Agent Plugins manifest (plugin.json) found in discovered repos"
   },
   {
    "id": "agent-rules-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Could not locate a public repo containing agent configs or rules. If our probes missed it, AI coding agents likely will too - link the repo from your homepage or docs so it's discoverable."
   },
   {
    "id": "agent-ua-markdown",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly."
   },
   {
    "id": "markdown-frontmatter",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "None of the 3 served markdown docs opens with a --- frontmatter block. Add title, description, canonical, and last-updated so agents get metadata without scraping."
   },
   {
    "id": "modular-llms-txt",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No section-level llms.txt found. Tried /docs/llms.txt, /api/llms.txt, /developers/llms.txt, /guides/llms.txt, /reference/llms.txt, /homepage/llms.txt, /customers/llms.txt, /pricing/llms.txt, /now/llms.txt, /contact/llms.txt."
   },
   {
    "id": "nlweb-ask",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No NLWeb-conformant /ask endpoint found via GET or POST"
   },
   {
    "id": "nlweb-schema-feeds",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No schemamap: directive in robots.txt"
   },
   {
    "id": "nlweb-streaming",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "NLWeb /ask does not support SSE streaming via GET or POST"
   },
   {
    "id": "pricing-md",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "pricing.md found at /pricing.md (109 lines), but it does not open with a # heading - start it with a # title so agents read it as markdown"
   },
   {
    "id": "registry-branding",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No registry branding (name, icon, description) found"
   },
   {
    "id": "skills-sh-quality",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "Skills.sh presence exists but limited - 1 skill (goal: 5+)"
   },
   {
    "id": "web-bot-auth-directory",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No /.well-known/http-message-signatures-directory found"
   }
  ],
  "seen": {
   "brand-search-accuracy": "linear.app ranks #9 for \"Linear\" (searched your brand name alone: no main product term from your homepage qualified)",
   "wikipedia-presence": "No Wikipedia article or Wikidata entity found for \"linear\" - creating a Wikipedia page and a Wikidata item with P856 = linear.app is the highest-impact step for AI search citation coverage",
   "robots-ai-policy-quality": "AI search crawlers: allowed in 18 of 18 checks (3 crawlers on 6 pages). AI training crawlers: allowed in 12 of 12 checks (2 crawlers on 6 pages), not scored.",
   "noindex-directives": "No noindex on the homepage: no robots, googlebot or bingbot meta tag and no X-Robots-Tag header hides it from search.",
   "sitemap": "Valid sitemap found at https://linear.app/sitemap.xml with 1007 entries",
   "content-no-js": "Homepage: 8822 chars with H1, but heading hierarchy skips H1 to H3; 1.3% content ratio is below the 5% target. 5 of 5 sampled inner pages have text without JavaScript.",
   "bot-detection": "Site accessible to 4 agent user-agents (ChatGPT-User, OAI-SearchBot, Claude-User, PerplexityBot).",
   "agent-discovery-file": "Agent discovery file found at /agents.md",
   "a2a-agent-card": "No A2A agent card found at /.well-known/agent-card.json",
   "mcp-well-known-discovery": "MCP server referenced in llms.txt",
   "robots-agent-user-policy": "No applicable crawl or usage restriction found for 3 user-triggered agents (chatgpt-user, claude-user, perplexity-user) on 1 public page: https://linear.app/. Declared policy only;",
   "llms-txt-exists": "Found the llms.txt at https://linear.app/llms.txt.",
   "llms-txt-formatting": "The llms.txt is well-formatted: 206 lines with markdown links, 11,749 characters in total.",
   "json-ld": "No JSON-LD structured data found on homepage",
   "public-api-docs": "Documentation site found at https://linear.app",
   "metadata-completeness": "3/4 metadata signals present - missing: og:type",
   "page-token-budget": "All 9 measured pages fit an agent context budget (largest ~2K tokens)",
   "docs-auth-gate": "All 5 sampled pages are publicly readable (5 with substantive content)",
   "openapi-spec": "No OpenAPI/Swagger specification found",
   "developer-portal": "Developer portal found at /developers",
   "markdown-negotiation": "Path-suffix markdown docs served with text/markdown content-type: /agents.md, /developers.md, /index.md",
   "agent-ua-markdown": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly.",
   "agent-crawler-reachability": "Reachable to every agent we tested - ChatGPT-User: reachable, OAI-SearchBot: reachable, Claude-User: reachable, PerplexityBot: reachable",
   "public-api": "REST API documentation found at /api. Best-of-protocols score: 7/7.",
   "oauth-support": "OAuth authorization server metadata at https://mcp.linear.app",
   "mcp-server": "MCP server detected at https://mcp.linear.app/mcp; it requires authentication. Presence is verified (5/6), but Ora could not inspect its tools or verify access scopes without credentials.",
   "webmcp": "No WebMCP support detected - no document.modelContext / navigator.modelContext usage found",
   "cli-tool": "CLI tool mentioned in llms.txt",
   "rest-sdk-packages": "SDK package found only in npm",
   "nlweb-ask": "No NLWeb-conformant /ask endpoint found via GET or POST",
   "mpp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "x402-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "ucp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "acp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "ap2-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites"
  }
 },
 {
  "slug": "microsoft",
  "name": "Microsoft",
  "domain": "microsoft.com",
  "finalUrl": "https://www.microsoft.com/en-us",
  "read": "2026-11-09",
  "scannedAt": "2026-10-26T16:18:03.879+00:00",
  "score": 62,
  "max": 100,
  "grade": "C",
  "category": "Identity & Auth",
  "scoringVersion": null,
  "rulesUrl": null,
  "summary": "Microsoft offers strong developer resource discoverability and SDK packages, but lacks published OpenAPI specifications for agent integration.",
  "layers": [
   {
    "id": "discovery",
    "name": "Discovery",
    "score": 16,
    "max": 17
   },
   {
    "id": "accessibility",
    "name": "Access",
    "score": 29,
    "max": 54
   },
   {
    "id": "usability",
    "name": "Usability",
    "score": 30,
    "max": 57
   },
   {
    "id": "payments",
    "name": "Payments",
    "score": 0,
    "max": 0
   }
  ],
  "checks": {
   "ard-catalog": [
    "fail",
    0,
    1
   ],
   "ai-catalog-published": [
    "na",
    0,
    1
   ],
   "ard-entries-valid": [
    "na",
    0,
    2
   ],
   "ard-trust-manifest": [
    "na",
    0,
    2
   ],
   "agentic-search-usecase": [
    "na",
    0,
    6
   ],
   "agentic-search-specific": [
    "pass",
    3,
    3
   ],
   "brand-search-accuracy": [
    "pass",
    3,
    3
   ],
   "wikipedia-presence": [
    "pass",
    4,
    4
   ],
   "robots-ai-policy-quality": [
    "pass",
    2,
    2
   ],
   "mcp-registry-listed": [
    "na",
    0,
    1
   ],
   "npm-sdk-package": [
    "pass",
    1,
    1
   ],
   "agent-rules-repo": [
    "fail",
    0,
    1
   ],
   "agent-plugins-repo": [
    "fail",
    0,
    1
   ],
   "registry-branding": [
    "na",
    0,
    2
   ],
   "chatgpt-app-listed": [
    "pass",
    2,
    2
   ],
   "noindex-directives": [
    "pass",
    1,
    1
   ],
   "sitemap": [
    "pass",
    2,
    2
   ],
   "content-no-js": [
    "warning",
    2,
    3
   ],
   "bot-detection": [
    "pass",
    2,
    2
   ],
   "agent-discovery-file": [
    "fail",
    0,
    2
   ],
   "agent-skills-index-v2": [
    "na",
    0,
    2
   ],
   "a2a-agent-card": [
    "fail",
    0,
    2
   ],
   "skills-sh-listed": [
    "pass",
    1,
    1
   ],
   "pricing-md": [
    "fail",
    0,
    2
   ],
   "nlweb-schema-feeds": [
    "fail",
    0,
    1
   ],
   "mcp-well-known-discovery": [
    "fail",
    0,
    2
   ],
   "agent-mode-view": [
    "fail",
    0,
    2
   ],
   "link-headers-discovery": [
    "fail",
    0,
    1
   ],
   "markdown-url-fallback": [
    "fail",
    0,
    2
   ],
   "modular-llms-txt": [
    "fail",
    0,
    1
   ],
   "sitemap-lastmod": [
    "na",
    0,
    1
   ],
   "robots-agent-user-policy": [
    "pass",
    2,
    2
   ],
   "llms-txt-exists": [
    "fail",
    0,
    1
   ],
   "llms-txt-formatting": [
    "fail",
    0,
    2
   ],
   "json-ld": [
    "warning",
    1,
    4
   ],
   "pricing-info": [
    "warning",
    2,
    3
   ],
   "public-api-docs": [
    "pass",
    3,
    3
   ],
   "agent-instruction": [
    "warning",
    2,
    3
   ],
   "skills-sh-quality": [
    "pass",
    2,
    2
   ],
   "json-ld-entity-linking": [
    "fail",
    0,
    2
   ],
   "metadata-completeness": [
    "warning",
    1,
    2
   ],
   "org-schema-completeness": [
    "fail",
    0,
    2
   ],
   "schema-type-breadth": [
    "fail",
    0,
    2
   ],
   "trust-anchors": [
    "pass",
    2,
    2
   ],
   "llms-txt-links-resolve": [
    "na",
    0,
    2
   ],
   "markdown-link-alternate": [
    "fail",
    0,
    1
   ],
   "markdown-frontmatter": [
    "na",
    0,
    1
   ],
   "redirect-hygiene": [
    "pass",
    1,
    1
   ],
   "page-token-budget": [
    "pass",
    1,
    1
   ],
   "code-fence-validity": [
    "na",
    0,
    1
   ],
   "docs-auth-gate": [
    "na",
    0,
    2
   ],
   "openapi-spec": [
    "fail",
    0,
    7
   ],
   "developer-portal": [
    "pass",
    6,
    6
   ],
   "api-catalog-rfc9727": [
    "fail",
    0,
    2
   ],
   "markdown-negotiation": [
    "fail",
    0,
    1
   ],
   "markdown-negotiation-vary": [
    "fail",
    0,
    1
   ],
   "agent-ua-markdown": [
    "fail",
    0,
    1
   ],
   "agent-crawler-reachability": [
    "pass",
    2,
    2
   ],
   "mcp-tool-descriptions": [
    "na",
    0,
    3
   ],
   "mcp-param-schemas": [
    "na",
    0,
    2
   ],
   "mcp-server-identity": [
    "na",
    0,
    1
   ],
   "mcp-tool-listing": [
    "na",
    0,
    3
   ],
   "mcp-tool-naming": [
    "na",
    0,
    2
   ],
   "public-api": [
    "warning",
    3,
    7
   ],
   "oauth-support": [
    "pass",
    5,
    5
   ],
   "scoped-permissions": [
    "fail",
    0,
    5
   ],
   "mcp-auth-mechanism": [
    "na",
    0,
    2
   ],
   "mcp-oauth-metadata": [
    "na",
    0,
    2
   ],
   "mcp-pkce-s256": [
    "na",
    0,
    2
   ],
   "onboarding-friction": [
    "warning",
    1,
    2
   ],
   "web-bot-auth-directory": [
    "fail",
    0,
    2
   ],
   "oauth-protected-resource": [
    "fail",
    0,
    2
   ],
   "auth-md-exists": [
    "fail",
    0,
    2
   ],
   "auth-md-structure": [
    "fail",
    0,
    2
   ],
   "auth-md-walkthrough-simulation": [
    "na",
    0,
    2
   ],
   "agent-auth-discovery-metadata": [
    "fail",
    0,
    3
   ],
   "agent-auth-www-authenticate": [
    "fail",
    0,
    1
   ],
   "agent-auth-endpoints-reachable": [
    "fail",
    0,
    2
   ],
   "pap-discovery": [
    "na",
    0,
    2
   ],
   "pap-issuer-binding": [
    "na",
    0,
    2
   ],
   "pap-auth-config": [
    "na",
    0,
    2
   ],
   "pap-interfaces": [
    "na",
    0,
    2
   ],
   "pap-endpoint-enforcement": [
    "na",
    0,
    2
   ],
   "pap-cross-protocol": [
    "na",
    0,
    2
   ],
   "mcp-server": [
    "warning",
    5,
    6
   ],
   "mcp-error-handling": [
    "na",
    0,
    2
   ],
   "mcp-transport-modern": [
    "na",
    0,
    1
   ],
   "webmcp": [
    "na",
    0,
    5
   ],
   "rate-limit-headers": [
    "na",
    0,
    2
   ],
   "idempotency-key-support": [
    "na",
    0,
    3
   ],
   "json-error-responses": [
    "fail",
    0,
    4
   ],
   "api-error-model": [
    "na",
    0,
    3
   ],
   "api-versioning-policy": [
    "na",
    0,
    3
   ],
   "pagination-shape": [
    "na",
    0,
    2
   ],
   "async-job-pattern": [
    "na",
    0,
    2
   ],
   "cli-tool": [
    "fail",
    0,
    3
   ],
   "rest-sdk-packages": [
    "pass",
    3,
    3
   ],
   "nlweb-ask": [
    "fail",
    0,
    1
   ],
   "nlweb-streaming": [
    "fail",
    0,
    1
   ],
   "response-schema-coverage": [
    "na",
    0,
    2
   ],
   "mcp-tool-annotations": [
    "na",
    0,
    2
   ],
   "mcp-server-card": [
    "fail",
    0,
    2
   ],
   "mcp-multi-surface-coverage": [
    "fail",
    0,
    2
   ],
   "sandbox-environment": [
    "fail",
    0,
    2
   ],
   "batch-endpoints": [
    "na",
    0,
    2
   ],
   "mcp-resource-listing": [
    "na",
    0,
    3
   ],
   "graphql-error-type-definition": [
    "na",
    0,
    3
   ],
   "graphql-versioning-policy": [
    "na",
    0,
    2
   ],
   "graphql-pagination-pattern": [
    "na",
    0,
    2
   ],
   "graphql-async-job-pattern": [
    "na",
    0,
    2
   ],
   "graphql-schema-completeness": [
    "na",
    0,
    3
   ],
   "graphql-batch-mutations": [
    "na",
    0,
    2
   ],
   "agent-friendly-404": [
    "warning",
    1,
    2
   ],
   "ax-document-structure": [
    "pass",
    3,
    3
   ],
   "ax-native-controls": [
    "pass",
    3,
    3
   ],
   "ax-accessible-names": [
    "pass",
    2,
    2
   ],
   "ax-form-labeling": [
    "pass",
    2,
    2
   ],
   "ax-tree-injection-safe": [
    "pass",
    2,
    2
   ],
   "mcp-app-registry": [
    "fail",
    0,
    4
   ],
   "a2ui-support": [
    "fail",
    0,
    2
   ],
   "mcp-apps-ui-quality": [
    "na",
    0,
    4
   ],
   "mcp-view-domain": [
    "na",
    0,
    4
   ],
   "mcp-view-csp": [
    "na",
    0,
    4
   ],
   "api-schema-analysis": [
    "fail",
    0,
    2
   ],
   "function-calling-compat": [
    "fail",
    0,
    2
   ],
   "mcp-resource-quality": [
    "na",
    0,
    3
   ],
   "mpp-support": [
    "warning",
    0,
    2
   ],
   "x402-support": [
    "warning",
    0,
    2
   ],
   "ucp-support": [
    "warning",
    0,
    3
   ],
   "acp-support": [
    "warning",
    0,
    3
   ],
   "acp-delegate-payment": [
    "warning",
    0,
    3
   ],
   "ap2-support": [
    "warning",
    0,
    3
   ]
  },
  "flagged": [
   {
    "id": "openapi-spec",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 7,
    "tier": "required",
    "est": 4.3,
    "detail": "No OpenAPI/Swagger specification found"
   },
   {
    "id": "scoped-permissions",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 5,
    "tier": "recommended",
    "est": 3.9,
    "detail": "No declared OAuth scopes, security schemes, or scoped-permission documentation found"
   },
   {
    "id": "json-error-responses",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 4,
    "tier": "required",
    "est": 3.1,
    "detail": "API does not return JSON error responses (or no API detected)"
   },
   {
    "id": "mcp-app-registry",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 4,
    "tier": "recommended",
    "est": 3.1,
    "detail": "No MCP Apps support detected - this product has an in-agent UI surface but exposes no ui:// resources or tool UI metadata for agents to render."
   },
   {
    "id": "public-api",
    "layer": "usability",
    "status": "warning",
    "score": 3,
    "max": 7,
    "tier": "required",
    "est": 3.1,
    "detail": "API described in documentation at https://developer.microsoft.com but no machine-verifiable API surface confirmed. Best-of-protocols score: 3/7."
   },
   {
    "id": "cli-tool",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": 2.3,
    "detail": "No CLI tool found"
   },
   {
    "id": "json-ld",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 4,
    "tier": "required",
    "est": 1.9,
    "detail": "JSON-LD found (1 block(s)) but no identity type - use SoftwareApplication, Product, Organization, Person, or Article so agents can tell what this site is"
   },
   {
    "id": "api-schema-analysis",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.6,
    "detail": "No API schema detected"
   },
   {
    "id": "function-calling-compat",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.6,
    "detail": "No API spec found - function calling requires discoverable endpoints"
   },
   {
    "id": "ard-catalog",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 1.3,
    "detail": "No /.well-known/ard.json, no same-site rel=\"ard\" link, and no legacy /.well-known/ai-catalog.json"
   },
   {
    "id": "agent-discovery-file",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 1.2,
    "detail": "No agent discovery file found"
   },
   {
    "id": "json-ld-entity-linking",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.2,
    "detail": "No sameAs entity linking in JSON-LD - agents cannot disambiguate your brand"
   },
   {
    "id": "llms-txt-formatting",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.2,
    "detail": "No llms.txt found to evaluate quality"
   },
   {
    "id": "org-schema-completeness",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.2,
    "detail": "No Organization type found in JSON-LD"
   },
   {
    "id": "schema-type-breadth",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.2,
    "detail": "No extended schema types found - AI can only answer basic questions about this entity"
   },
   {
    "id": "agent-auth-discovery-metadata",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": 1.1,
    "detail": "Neither /.well-known/oauth-protected-resource nor /.well-known/oauth-authorization-server found. Probed: microsoft.com, api.microsoft.com."
   },
   {
    "id": "agent-friendly-404",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.8,
    "detail": "The nonexistent path https://microsoft.com/__ora-404-probe-2ze4oc5d correctly returns HTTP 404. Partial credit: no Markdown error body was detected."
   },
   {
    "id": "mcp-server",
    "layer": "usability",
    "status": "warning",
    "score": 5,
    "max": 6,
    "tier": "required",
    "est": 0.8,
    "detail": "First-party MCP server published by product org (npm, @playwright/mcp, 9357 score). Add live handshake at /.well-known/mcp for full credit."
   },
   {
    "id": "onboarding-friction",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.8,
    "detail": "Onboarding signals described but not verified live: free tier available, self-serve key generation, sandbox/test environment"
   },
   {
    "id": "agent-auth-endpoints-reachable",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.7,
    "detail": "No agent_auth endpoint URIs found in AS metadata or /auth.md prose; nothing to probe"
   },
   {
    "id": "auth-md-exists",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.7,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "auth-md-structure",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.7,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "mcp-multi-surface-coverage",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.7,
    "detail": "This bonus needs two MCP servers: one for your product so agents can take actions, and a separate one for your documentation so agents can answer questions from your docs."
   },
   {
    "id": "mcp-server-card",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.7,
    "detail": "No MCP server card found (checked /.well-known/mcp/server-card.json, the site's ai-catalog.json, servers[].card in mcp.json, and <server>/server-card)"
   },
   {
    "id": "oauth-protected-resource",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.7,
    "detail": "No /.well-known/oauth-protected-resource found (RFC 9728)"
   },
   {
    "id": "sandbox-environment",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.7,
    "detail": "No sandbox or test environment found"
   },
   {
    "id": "a2a-agent-card",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "No A2A agent card found at /.well-known/agent-card.json"
   },
   {
    "id": "agent-instruction",
    "layer": "accessibility",
    "status": "warning",
    "score": 2,
    "max": 3,
    "tier": "required",
    "est": 0.6,
    "detail": "When-to-use guidance found at https://developer.microsoft.com"
   },
   {
    "id": "api-catalog-rfc9727",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.6,
    "detail": "No /.well-known/api-catalog found (RFC 9727)"
   },
   {
    "id": "content-no-js",
    "layer": "accessibility",
    "status": "warning",
    "score": 2,
    "max": 3,
    "tier": "required",
    "est": 0.6,
    "detail": "6598 chars with H1, but 2.8% content ratio is below the 5% target"
   },
   {
    "id": "llms-txt-exists",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 0.6,
    "detail": "No llms.txt found at /llms.txt or /.well-known/llms.txt."
   },
   {
    "id": "mcp-well-known-discovery",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "No MCP server URL discovered"
   },
   {
    "id": "metadata-completeness",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "required",
    "est": 0.6,
    "detail": "3/4 metadata signals present - missing: og:image"
   },
   {
    "id": "pricing-info",
    "layer": "accessibility",
    "status": "warning",
    "score": 2,
    "max": 3,
    "tier": "required",
    "est": 0.6,
    "detail": "Pricing link found but no dedicated pricing page at standard path"
   },
   {
    "id": "agent-auth-www-authenticate",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.4,
    "detail": "No 401 with WWW-Authenticate: Bearer resource_metadata=... found. Probed [https://microsoft.com/api, https://microsoft.com/api/v1, https://microsoft.com/v1, https://microsoft.com/v2, https://microsoft.com/agent/identity,"
   },
   {
    "id": "link-headers-discovery",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 0.3,
    "detail": "No HTTP Link response headers (RFC 8288) found"
   },
   {
    "id": "markdown-negotiation-vary",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.3,
    "detail": "Homepage https://microsoft.com does not meet the Markdown negotiation requirements: Accept: text/markdown returned text/html; charset=utf-8; Vary header missing Accept (got \"accept-encoding\")"
   },
   {
    "id": "a2ui-support",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No A2UI or generative UI support detected"
   },
   {
    "id": "acp-delegate-payment",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": null,
    "detail": "No ACP Delegate Payment signals detected"
   },
   {
    "id": "acp-support",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 3,
    "tier": "required",
    "est": null,
    "detail": "no ACP (Agentic Commerce Protocol) signals detected"
   },
   {
    "id": "agent-mode-view",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "?mode=agent returns same content as homepage (no dedicated agent view)"
   },
   {
    "id": "agent-plugins-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No Agent Plugins manifest (plugin.json) found in discovered repos"
   },
   {
    "id": "agent-rules-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Could not locate a public repo containing agent configs or rules. If our probes missed it, AI coding agents likely will too - link the repo from your homepage or docs so it's discoverable."
   },
   {
    "id": "agent-ua-markdown",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly."
   },
   {
    "id": "ap2-support",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": null,
    "detail": "No AP2 (Agent Payments Protocol) signals detected"
   },
   {
    "id": "markdown-link-alternate",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No sampled page advertises a markdown alternate. Add <link rel=\"alternate\" type=\"text/markdown\" href=\"...\"> (or the equivalent Link response header) pointing at a markdown twin of the page."
   },
   {
    "id": "markdown-negotiation",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Missing markdown content negotiation. Homepage returned text/html when probed with Accept: text/markdown (expected text/markdown), and none of the well-known root paths (/llms.md, /auth.md, /agents.md, /developers.md, /api.md, /index.md,"
   },
   {
    "id": "markdown-url-fallback",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "Homepage does not support the .md suffix. Probed https://microsoft.com/index.md and it did not return markdown (expected text/markdown content-type or a heading-led non-HTML body)."
   },
   {
    "id": "modular-llms-txt",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No section-level llms.txt found. Tried /docs/llms.txt, /api/llms.txt, /developers/llms.txt, /guides/llms.txt, /reference/llms.txt. This is a bonus check: it can add a point and never costs one."
   },
   {
    "id": "mpp-support",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": null,
    "detail": "No MPP (Machine Payments Protocol) support detected"
   },
   {
    "id": "nlweb-ask",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No NLWeb-conformant /ask endpoint found via GET or POST"
   },
   {
    "id": "nlweb-schema-feeds",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No schemamap: directive in robots.txt"
   },
   {
    "id": "nlweb-streaming",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "NLWeb /ask does not support SSE streaming via GET or POST"
   },
   {
    "id": "pricing-md",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No pricing.md found - agents need machine-readable pricing to compare products and make purchase recommendations"
   },
   {
    "id": "ucp-support",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 3,
    "tier": "required",
    "est": null,
    "detail": "no UCP (Universal Commerce Protocol) signals detected"
   },
   {
    "id": "web-bot-auth-directory",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No /.well-known/http-message-signatures-directory found"
   },
   {
    "id": "x402-support",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": null,
    "detail": "No x402 payment protocol support detected"
   }
  ],
  "seen": {
   "brand-search-accuracy": "microsoft.com ranks #1 for \"Microsoft cloud platform\" (search term updated)",
   "wikipedia-presence": "Wikipedia \"Microsoft\" and Wikidata Q2283 both verified - domain confirmed on both sources",
   "robots-ai-policy-quality": "AI search crawlers: allowed in 3 of 3 checks (3 crawlers on 1 page). AI training crawlers: allowed in 2 of 2 checks (2 crawlers on 1 page), not scored.",
   "noindex-directives": "No noindex on the homepage: no robots, googlebot or bingbot meta tag and no X-Robots-Tag header hides it from search.",
   "sitemap": "Valid sitemap found at https://www.microsoft.com/store/sitemap-index.xml with multiple sitemaps entries",
   "content-no-js": "6598 chars with H1, but 2.8% content ratio is below the 5% target",
   "bot-detection": "Site accessible to 4 agent user-agents (ChatGPT-User, OAI-SearchBot, Claude-User, PerplexityBot).",
   "agent-discovery-file": "No agent discovery file found",
   "a2a-agent-card": "No A2A agent card found at /.well-known/agent-card.json",
   "mcp-well-known-discovery": "No MCP server URL discovered",
   "robots-agent-user-policy": "No applicable crawl or usage restriction found for 3 user-triggered agents (chatgpt-user, claude-user, perplexity-user) on 1 public page: https://microsoft.com/. Declared policy only;",
   "llms-txt-exists": "No llms.txt found at /llms.txt or /.well-known/llms.txt.",
   "llms-txt-formatting": "No llms.txt found to evaluate quality",
   "json-ld": "JSON-LD found (1 block(s)) but no identity type - use SoftwareApplication, Product, Organization, Person, or Article so agents can tell what this site is",
   "public-api-docs": "Documentation site found at https://developer.microsoft.com",
   "metadata-completeness": "3/4 metadata signals present - missing: og:image",
   "page-token-budget": "All 1 measured page fit an agent context budget (largest ~2K tokens)",
   "docs-auth-gate": "No content pages sampled",
   "openapi-spec": "No OpenAPI/Swagger specification found",
   "developer-portal": "Developer documentation portal found at https://developer.microsoft.com",
   "markdown-negotiation": "Missing markdown content negotiation. Homepage returned text/html when probed with Accept: text/markdown (expected text/markdown), and none of the well-known root paths (/llms.md, /auth.md, /agents.md, /developers.md,",
   "agent-ua-markdown": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly.",
   "agent-crawler-reachability": "Reachable to every agent we tested - ChatGPT-User: reachable, OAI-SearchBot: reachable, Claude-User: reachable, PerplexityBot: reachable",
   "public-api": "API described in documentation at https://developer.microsoft.com but no machine-verifiable API surface confirmed. Best-of-protocols score: 3/7.",
   "oauth-support": "OAuth endpoint found at https://login.microsoft.com/services/oauth2/authorize",
   "mcp-server": "First-party MCP server published by product org (npm, @playwright/mcp, 9357 score). Add live handshake at /.well-known/mcp for full credit.",
   "webmcp": "Could not fully read this page (only 60 of 61 same-origin script bundles could be read). Nothing that was read uses WebMCP, but the unread part could, so this check is not scored.",
   "cli-tool": "No CLI tool found",
   "rest-sdk-packages": "SDK packages found across 3 ecosystems: npm, pypi, rubygems",
   "nlweb-ask": "No NLWeb-conformant /ask endpoint found via GET or POST",
   "mpp-support": "No MPP (Machine Payments Protocol) support detected",
   "x402-support": "No x402 payment protocol support detected",
   "ucp-support": "no UCP (Universal Commerce Protocol) signals detected",
   "acp-support": "no ACP (Agentic Commerce Protocol) signals detected",
   "ap2-support": "No AP2 (Agent Payments Protocol) signals detected"
  }
 },
 {
  "slug": "miro",
  "name": "Miro",
  "domain": "miro.com",
  "finalUrl": "https://miro.com/",
  "read": "2026-11-09",
  "scannedAt": "2026-11-01T01:09:48.954+00:00",
  "score": 74,
  "max": 100,
  "grade": "B",
  "category": "Productivity",
  "scoringVersion": null,
  "rulesUrl": null,
  "summary": "Miro offers strong developer resource discoverability and SDK packages, but lacks WebMCP support for agent integration.",
  "layers": [
   {
    "id": "discovery",
    "name": "Discovery",
    "score": 13,
    "max": 16
   },
   {
    "id": "accessibility",
    "name": "Access",
    "score": 33,
    "max": 46
   },
   {
    "id": "usability",
    "name": "Usability",
    "score": 59,
    "max": 81
   },
   {
    "id": "payments",
    "name": "Payments",
    "score": 0,
    "max": 0
   }
  ],
  "checks": {
   "ard-catalog": [
    "fail",
    0,
    1
   ],
   "ai-catalog-published": [
    "na",
    0,
    1
   ],
   "ard-entries-valid": [
    "na",
    0,
    2
   ],
   "ard-trust-manifest": [
    "na",
    0,
    2
   ],
   "agentic-search-usecase": [
    "na",
    0,
    6
   ],
   "agentic-search-specific": [
    "pass",
    3,
    3
   ],
   "brand-search-accuracy": [
    "warning",
    1,
    3
   ],
   "wikipedia-presence": [
    "warning",
    2,
    4
   ],
   "robots-ai-policy-quality": [
    "pass",
    2,
    2
   ],
   "mcp-registry-listed": [
    "pass",
    1,
    1
   ],
   "npm-sdk-package": [
    "pass",
    1,
    1
   ],
   "agent-rules-repo": [
    "fail",
    0,
    1
   ],
   "agent-plugins-repo": [
    "fail",
    0,
    1
   ],
   "registry-branding": [
    "na",
    0,
    2
   ],
   "chatgpt-app-listed": [
    "pass",
    2,
    2
   ],
   "noindex-directives": [
    "pass",
    1,
    1
   ],
   "sitemap": [
    "pass",
    2,
    2
   ],
   "content-no-js": [
    "warning",
    1,
    3
   ],
   "bot-detection": [
    "pass",
    2,
    2
   ],
   "agent-discovery-file": [
    "na",
    0,
    2
   ],
   "agent-skills-index-v2": [
    "na",
    0,
    2
   ],
   "a2a-agent-card": [
    "na",
    0,
    2
   ],
   "skills-sh-listed": [
    "pass",
    1,
    1
   ],
   "pricing-md": [
    "na",
    0,
    2
   ],
   "nlweb-schema-feeds": [
    "fail",
    0,
    1
   ],
   "mcp-well-known-discovery": [
    "warning",
    1,
    2
   ],
   "agent-mode-view": [
    "pass",
    2,
    2
   ],
   "link-headers-discovery": [
    "fail",
    0,
    1
   ],
   "markdown-url-fallback": [
    "fail",
    0,
    2
   ],
   "modular-llms-txt": [
    "fail",
    0,
    1
   ],
   "sitemap-lastmod": [
    "pass",
    1,
    1
   ],
   "robots-agent-user-policy": [
    "pass",
    2,
    2
   ],
   "llms-txt-exists": [
    "pass",
    1,
    1
   ],
   "llms-txt-formatting": [
    "warning",
    1,
    2
   ],
   "json-ld": [
    "fail",
    0,
    4
   ],
   "pricing-info": [
    "pass",
    3,
    3
   ],
   "public-api-docs": [
    "pass",
    3,
    3
   ],
   "agent-instruction": [
    "na",
    0,
    3
   ],
   "skills-sh-quality": [
    "pass",
    2,
    2
   ],
   "json-ld-entity-linking": [
    "fail",
    0,
    2
   ],
   "metadata-completeness": [
    "pass",
    2,
    2
   ],
   "org-schema-completeness": [
    "fail",
    0,
    2
   ],
   "schema-type-breadth": [
    "fail",
    0,
    2
   ],
   "trust-anchors": [
    "pass",
    2,
    2
   ],
   "llms-txt-links-resolve": [
    "na",
    0,
    2
   ],
   "markdown-link-alternate": [
    "fail",
    0,
    1
   ],
   "markdown-frontmatter": [
    "pass",
    1,
    1
   ],
   "redirect-hygiene": [
    "pass",
    1,
    1
   ],
   "page-token-budget": [
    "pass",
    1,
    1
   ],
   "code-fence-validity": [
    "na",
    0,
    1
   ],
   "docs-auth-gate": [
    "pass",
    2,
    2
   ],
   "openapi-spec": [
    "na",
    0,
    7
   ],
   "developer-portal": [
    "pass",
    6,
    6
   ],
   "api-catalog-rfc9727": [
    "fail",
    0,
    2
   ],
   "markdown-negotiation": [
    "pass",
    1,
    1
   ],
   "markdown-negotiation-vary": [
    "warning",
    0,
    1
   ],
   "agent-ua-markdown": [
    "fail",
    0,
    1
   ],
   "agent-crawler-reachability": [
    "pass",
    2,
    2
   ],
   "mcp-tool-descriptions": [
    "na",
    0,
    3
   ],
   "mcp-param-schemas": [
    "na",
    0,
    2
   ],
   "mcp-server-identity": [
    "na",
    0,
    1
   ],
   "mcp-tool-listing": [
    "na",
    0,
    3
   ],
   "mcp-tool-naming": [
    "na",
    0,
    2
   ],
   "public-api": [
    "pass",
    7,
    7
   ],
   "oauth-support": [
    "pass",
    5,
    5
   ],
   "scoped-permissions": [
    "pass",
    5,
    5
   ],
   "mcp-auth-mechanism": [
    "warning",
    1,
    2
   ],
   "mcp-oauth-metadata": [
    "pass",
    2,
    2
   ],
   "mcp-pkce-s256": [
    "pass",
    2,
    2
   ],
   "onboarding-friction": [
    "pass",
    2,
    2
   ],
   "web-bot-auth-directory": [
    "na",
    0,
    2
   ],
   "oauth-protected-resource": [
    "pass",
    2,
    2
   ],
   "auth-md-exists": [
    "fail",
    0,
    2
   ],
   "auth-md-structure": [
    "fail",
    0,
    2
   ],
   "auth-md-walkthrough-simulation": [
    "na",
    0,
    2
   ],
   "agent-auth-discovery-metadata": [
    "warning",
    1,
    3
   ],
   "agent-auth-www-authenticate": [
    "pass",
    1,
    1
   ],
   "agent-auth-endpoints-reachable": [
    "na",
    0,
    2
   ],
   "pap-discovery": [
    "na",
    0,
    2
   ],
   "pap-issuer-binding": [
    "na",
    0,
    2
   ],
   "pap-auth-config": [
    "na",
    0,
    2
   ],
   "pap-interfaces": [
    "na",
    0,
    2
   ],
   "pap-endpoint-enforcement": [
    "na",
    0,
    2
   ],
   "pap-cross-protocol": [
    "na",
    0,
    2
   ],
   "mcp-server": [
    "warning",
    5,
    6
   ],
   "mcp-error-handling": [
    "na",
    0,
    2
   ],
   "mcp-transport-modern": [
    "na",
    0,
    1
   ],
   "webmcp": [
    "fail",
    0,
    5
   ],
   "rate-limit-headers": [
    "warning",
    1,
    2
   ],
   "idempotency-key-support": [
    "fail",
    0,
    3
   ],
   "json-error-responses": [
    "pass",
    4,
    4
   ],
   "api-error-model": [
    "na",
    0,
    3
   ],
   "api-versioning-policy": [
    "na",
    0,
    3
   ],
   "pagination-shape": [
    "na",
    0,
    2
   ],
   "async-job-pattern": [
    "na",
    0,
    2
   ],
   "cli-tool": [
    "pass",
    3,
    3
   ],
   "rest-sdk-packages": [
    "warning",
    1,
    3
   ],
   "nlweb-ask": [
    "fail",
    0,
    1
   ],
   "nlweb-streaming": [
    "fail",
    0,
    1
   ],
   "response-schema-coverage": [
    "na",
    0,
    2
   ],
   "mcp-tool-annotations": [
    "na",
    0,
    2
   ],
   "mcp-server-card": [
    "fail",
    0,
    2
   ],
   "mcp-multi-surface-coverage": [
    "warning",
    1,
    2
   ],
   "sandbox-environment": [
    "warning",
    0,
    2
   ],
   "batch-endpoints": [
    "na",
    0,
    2
   ],
   "mcp-resource-listing": [
    "na",
    0,
    3
   ],
   "graphql-error-type-definition": [
    "fail",
    0,
    3
   ],
   "graphql-versioning-policy": [
    "fail",
    0,
    2
   ],
   "graphql-pagination-pattern": [
    "fail",
    0,
    2
   ],
   "graphql-async-job-pattern": [
    "fail",
    0,
    2
   ],
   "graphql-schema-completeness": [
    "na",
    0,
    3
   ],
   "graphql-batch-mutations": [
    "na",
    0,
    2
   ],
   "agent-friendly-404": [
    "warning",
    1,
    2
   ],
   "ax-document-structure": [
    "na",
    0,
    3
   ],
   "ax-native-controls": [
    "pass",
    3,
    3
   ],
   "ax-accessible-names": [
    "pass",
    2,
    2
   ],
   "ax-form-labeling": [
    "na",
    0,
    2
   ],
   "ax-tree-injection-safe": [
    "pass",
    2,
    2
   ],
   "mcp-app-registry": [
    "na",
    0,
    4
   ],
   "a2ui-support": [
    "warning",
    1,
    2
   ],
   "mcp-apps-ui-quality": [
    "na",
    0,
    4
   ],
   "mcp-view-domain": [
    "na",
    0,
    4
   ],
   "mcp-view-csp": [
    "na",
    0,
    4
   ],
   "api-schema-analysis": [
    "pass",
    2,
    2
   ],
   "function-calling-compat": [
    "na",
    0,
    2
   ],
   "mcp-resource-quality": [
    "na",
    0,
    3
   ],
   "mpp-support": [
    "na",
    0,
    2
   ],
   "x402-support": [
    "na",
    0,
    2
   ],
   "ucp-support": [
    "na",
    0,
    3
   ],
   "acp-support": [
    "na",
    0,
    3
   ],
   "acp-delegate-payment": [
    "na",
    0,
    3
   ],
   "ap2-support": [
    "na",
    0,
    3
   ]
  },
  "flagged": [
   {
    "id": "json-ld",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 4,
    "tier": "required",
    "est": 2.9,
    "detail": "No JSON-LD structured data found on homepage"
   },
   {
    "id": "brand-search-accuracy",
    "layer": "discovery",
    "status": "warning",
    "score": 1,
    "max": 3,
    "tier": "required",
    "est": 2.8,
    "detail": "miro.com ranks #8 for \"AI Innovation Workspace visual collaboration\""
   },
   {
    "id": "webmcp",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 5,
    "tier": "required",
    "est": 2.7,
    "detail": "No WebMCP support detected - no document.modelContext / navigator.modelContext usage found"
   },
   {
    "id": "graphql-error-type-definition",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": 1.6,
    "detail": "GraphQL introspection auth-gated and no typed graphql error model documentation found on GraphQL-tagged pages"
   },
   {
    "id": "idempotency-key-support",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": 1.6,
    "detail": "GraphQL introspection auth-gated and no idempotency documentation found on GraphQL-tagged pages"
   },
   {
    "id": "ard-catalog",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 1.4,
    "detail": "No /.well-known/ard.json, no same-site rel=\"ard\" link, and no legacy /.well-known/ai-catalog.json"
   },
   {
    "id": "content-no-js",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 3,
    "tier": "required",
    "est": 1.4,
    "detail": "Homepage: Only 445 chars of text content - agents see limited content. No inner pages checked: the 5 sampled pages were skipped (forms, login pages, bot challenges, error pages, non-HTML pages and pages over 1 MB are skipped)."
   },
   {
    "id": "json-ld-entity-linking",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.4,
    "detail": "No JSON-LD found - no entity linking possible"
   },
   {
    "id": "org-schema-completeness",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.4,
    "detail": "No JSON-LD found - Organization schema missing"
   },
   {
    "id": "schema-type-breadth",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.4,
    "detail": "No extended schema types found - AI can only answer basic questions about this entity"
   },
   {
    "id": "graphql-async-job-pattern",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.1,
    "detail": "GraphQL introspection auth-gated and no graphql async-job pattern documentation found on GraphQL-tagged pages"
   },
   {
    "id": "graphql-pagination-pattern",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.1,
    "detail": "GraphQL introspection auth-gated and no graphql pagination pattern documentation found on GraphQL-tagged pages"
   },
   {
    "id": "graphql-versioning-policy",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.1,
    "detail": "GraphQL introspection auth-gated and no graphql versioning / deprecation policy documentation found on GraphQL-tagged pages"
   },
   {
    "id": "rest-sdk-packages",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 3,
    "tier": "recommended",
    "est": 1.1,
    "detail": "SDK package found only in npm"
   },
   {
    "id": "llms-txt-formatting",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.7,
    "detail": "The llms.txt is well-formatted with markdown links, but at 95,346 characters it exceeds the 30,000-character recommendation for a navigation index."
   },
   {
    "id": "agent-friendly-404",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "The nonexistent path https://miro.com/__ora-404-probe-dgkebg0m correctly returns HTTP 404. Partial credit: no Markdown error body was detected."
   },
   {
    "id": "mcp-server",
    "layer": "usability",
    "status": "warning",
    "score": 5,
    "max": 6,
    "tier": "required",
    "est": 0.5,
    "detail": "MCP server detected at https://mcp.miro.com; it requires authentication. Presence is verified (5/6), but Ora could not inspect its tools or verify access scopes without credentials."
   },
   {
    "id": "rate-limit-headers",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "The live API at https://miro.com/api returns legacy x-ratelimit-limit, x-ratelimit-remaining, x-ratelimit-reset headers. Adopting the IETF RateLimit-* standard would earn full credit."
   },
   {
    "id": "wikipedia-presence",
    "layer": "discovery",
    "status": "warning",
    "score": 2,
    "max": 4,
    "tier": "recommended",
    "est": 0.5,
    "detail": "Wikidata Q94126521 (Miro) verified - draft a Wikipedia page with cited references to complete knowledge graph coverage"
   },
   {
    "id": "api-catalog-rfc9727",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.4,
    "detail": "No /.well-known/api-catalog found (RFC 9727)"
   },
   {
    "id": "agent-auth-discovery-metadata",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 3,
    "tier": "recommended",
    "est": 0.3,
    "detail": "PRM + AS metadata both present (PRM discovered at https://mcp.miro.com) (AS metadata fetched from advertised origin https://mcp.miro.com) but AS metadata has no agent_auth block"
   },
   {
    "id": "auth-md-exists",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.3,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "auth-md-structure",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.3,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "mcp-server-card",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.3,
    "detail": "No MCP server card found for https://mcp.miro.com (checked /.well-known/mcp/server-card.json, the site's ai-catalog.json, servers[].card in mcp.json, and <server>/server-card)"
   },
   {
    "id": "mcp-server-card",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.3,
    "detail": "No MCP server card found for https://help.miro.com/mcp (checked /.well-known/mcp/server-card.json, the site's ai-catalog.json, servers[].card in mcp.json, and <server>/server-card)"
   },
   {
    "id": "sandbox-environment",
    "layer": "usability",
    "status": "warning",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.3,
    "detail": "Testing/staging environment mentioned at https://developers.miro.com but no dedicated sandbox found"
   },
   {
    "id": "link-headers-discovery",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 0.2,
    "detail": "Link header present but no agent-relevant rel values (sitemap, describedby, alternate, service-desc)"
   },
   {
    "id": "markdown-negotiation-vary",
    "layer": "accessibility",
    "status": "warning",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.2,
    "detail": "Homepage https://miro.com serves both Markdown and HTML, but Vary header missing Accept (got \"accept-encoding\") - CDNs may cache the wrong variant"
   },
   {
    "id": "mcp-well-known-discovery",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.2,
    "detail": "MCP server at https://mcp.miro.com - list its server card, hosted on your own domain, in /.well-known/ai-catalog.json so MCP clients can discover it"
   },
   {
    "id": "mcp-auth-mechanism",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.1,
    "detail": "docs MCP is gated behind authentication - this defeats the purpose of a docs MCP for agent discovery"
   },
   {
    "id": "mcp-multi-surface-coverage",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.1,
    "detail": "You run both MCP servers, but the documentation one (https://help.miro.com/mcp) is not reachable. Fix it so agents can use it."
   },
   {
    "id": "a2ui-support",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "A2UI/generative UI mentioned on homepage (ui component)"
   },
   {
    "id": "agent-plugins-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No Agent Plugins manifest (plugin.json) found in discovered repos"
   },
   {
    "id": "agent-rules-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Could not locate a public repo containing agent configs or rules. If our probes missed it, AI coding agents likely will too - link the repo from your homepage or docs so it's discoverable."
   },
   {
    "id": "agent-ua-markdown",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly."
   },
   {
    "id": "markdown-link-alternate",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No sampled page advertises a markdown alternate. Add <link rel=\"alternate\" type=\"text/markdown\" href=\"...\"> (or the equivalent Link response header) pointing at a markdown twin of the page."
   },
   {
    "id": "markdown-url-fallback",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "Homepage does not support the .md suffix. Probed https://miro.com/index.md and it did not return markdown (expected text/markdown content-type or a heading-led non-HTML body)."
   },
   {
    "id": "modular-llms-txt",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No section-level llms.txt found. Tried /docs/llms.txt, /api/llms.txt, /developers/llms.txt, /guides/llms.txt, /reference/llms.txt, /intelligent-canvas/llms.txt, /prototyping/llms.txt, /mermaid-diagram/llms.txt, /ai-playbooks/llms.txt,"
   },
   {
    "id": "nlweb-ask",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No NLWeb-conformant /ask endpoint found via GET or POST"
   },
   {
    "id": "nlweb-schema-feeds",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No schemamap: directive in robots.txt"
   },
   {
    "id": "nlweb-streaming",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "NLWeb /ask does not support SSE streaming via GET or POST"
   }
  ],
  "seen": {
   "brand-search-accuracy": "miro.com ranks #8 for \"AI Innovation Workspace visual collaboration\"",
   "wikipedia-presence": "Wikidata Q94126521 (Miro) verified - draft a Wikipedia page with cited references to complete knowledge graph coverage",
   "robots-ai-policy-quality": "AI search crawlers: allowed in 3 of 3 checks (3 crawlers on 1 page). AI training crawlers: allowed in 2 of 2 checks (2 crawlers on 1 page), not scored.",
   "noindex-directives": "No noindex on the homepage: no robots, googlebot or bingbot meta tag and no X-Robots-Tag header hides it from search.",
   "sitemap": "Valid sitemap found at https://miro.com/sitemap.xml with multiple sitemaps entries",
   "content-no-js": "Homepage: Only 445 chars of text content - agents see limited content. No inner pages checked: the 5 sampled pages were skipped (forms, login pages, bot challenges, error pages,",
   "bot-detection": "Site accessible to 4 agent user-agents (ChatGPT-User, OAI-SearchBot, Claude-User, PerplexityBot).",
   "agent-discovery-file": "Can't verify: a bot shield answered our request to miro.com/.well-known/agent-skills/index.json (HTTP 403); miro.com/.well-known/agent-skills (HTTP 403) instead of the site. That is not counted against the site.",
   "a2a-agent-card": "Can't verify: a bot shield answered our request to miro.com/.well-known/agent-card.json (HTTP 403) instead of the site. That is not counted against the site.",
   "mcp-well-known-discovery": "MCP server at https://mcp.miro.com - list its server card, hosted on your own domain, in /.well-known/ai-catalog.json so MCP clients can discover it",
   "robots-agent-user-policy": "No applicable crawl or usage restriction found for 3 user-triggered agents (chatgpt-user, claude-user, perplexity-user) on 1 public page: https://miro.com/. Declared policy only;",
   "llms-txt-exists": "Found the llms.txt at https://developers.miro.com/llms.txt.",
   "llms-txt-formatting": "The llms.txt is well-formatted with markdown links, but at 95,346 characters it exceeds the 30,000-character recommendation for a navigation index.",
   "json-ld": "No JSON-LD structured data found on homepage",
   "public-api-docs": "Documentation site found at https://developers.miro.com",
   "metadata-completeness": "All metadata signals present: canonical URL, lang=\"en\", og:image, og:type",
   "page-token-budget": "All 1 measured page fit an agent context budget (largest ~1K tokens)",
   "docs-auth-gate": "All 5 sampled pages are publicly readable (0 with substantive content)",
   "openapi-spec": "Can't verify: a bot shield answered our request to miro.com/.well-known/openapi.json (HTTP 403) instead of the site. That is not counted against the site.",
   "developer-portal": "Developer documentation portal found at https://developers.miro.com",
   "markdown-negotiation": "Returns markdown when requested via Accept header",
   "agent-ua-markdown": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly.",
   "agent-crawler-reachability": "Reachable to every agent we tested - ChatGPT-User: reachable, OAI-SearchBot: reachable, Claude-User: reachable, PerplexityBot: reachable",
   "public-api": "REST API documentation found at /api. GraphQL endpoint at https://api.miro.com/v1/graphql is reachable; introspection requires authentication (API key / OAuth), which is expected for agent access.",
   "oauth-support": "OAuth authorization server metadata at https://mcp.miro.com/",
   "mcp-server": "MCP server detected at https://mcp.miro.com; it requires authentication. Presence is verified (5/6), but Ora could not inspect its tools or verify access scopes without credentials.",
   "webmcp": "No WebMCP support detected - no document.modelContext / navigator.modelContext usage found",
   "cli-tool": "CLI package found on npm: create-miro-app",
   "rest-sdk-packages": "SDK package found only in npm",
   "nlweb-ask": "No NLWeb-conformant /ask endpoint found via GET or POST",
   "mpp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "x402-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "ucp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "acp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "ap2-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites"
  }
 },
 {
  "slug": "monday",
  "name": "monday.com",
  "domain": "monday.com",
  "finalUrl": "https://monday.com/",
  "read": "2026-11-09",
  "scannedAt": "2026-11-09T09:39:50.298+00:00",
  "score": 88,
  "max": 100,
  "grade": "A",
  "category": "Productivity",
  "scoringVersion": 2,
  "rulesUrl": "https://ora.ai/api/ranker/releases/2/rules",
  "summary": "The site offers strong agent-facing authentication and API access, and a GraphQL typed error model with rate-limit header documentation would round out agent support.",
  "layers": [
   {
    "id": "discovery",
    "name": "Discovery",
    "score": 15,
    "max": 18
   },
   {
    "id": "accessibility",
    "name": "Access",
    "score": 56,
    "max": 60
   },
   {
    "id": "usability",
    "name": "Usability",
    "score": 87,
    "max": 100
   },
   {
    "id": "payments",
    "name": "Payments",
    "score": 0,
    "max": 0
   }
  ],
  "checks": {
   "ard-catalog": [
    "fail",
    0,
    1
   ],
   "ai-catalog-published": [
    "na",
    0,
    1
   ],
   "ard-entries-valid": [
    "na",
    0,
    2
   ],
   "ard-trust-manifest": [
    "na",
    0,
    2
   ],
   "agentic-search-usecase": [
    "na",
    0,
    6
   ],
   "agentic-search-specific": [
    "pass",
    3,
    3
   ],
   "brand-search-accuracy": [
    "warning",
    1,
    3
   ],
   "wikipedia-presence": [
    "pass",
    4,
    4
   ],
   "robots-ai-policy-quality": [
    "pass",
    2,
    2
   ],
   "mcp-registry-listed": [
    "pass",
    1,
    1
   ],
   "npm-sdk-package": [
    "pass",
    1,
    1
   ],
   "agent-rules-repo": [
    "fail",
    0,
    1
   ],
   "agent-plugins-repo": [
    "fail",
    0,
    1
   ],
   "registry-branding": [
    "pass",
    2,
    2
   ],
   "chatgpt-app-listed": [
    "pass",
    2,
    2
   ],
   "noindex-directives": [
    "pass",
    1,
    1
   ],
   "sitemap": [
    "pass",
    2,
    2
   ],
   "content-no-js": [
    "warning",
    1,
    3
   ],
   "bot-detection": [
    "na",
    0,
    2
   ],
   "agent-discovery-file": [
    "pass",
    2,
    2
   ],
   "agent-skills-index-v2": [
    "pass",
    2,
    2
   ],
   "a2a-agent-card": [
    "pass",
    2,
    2
   ],
   "skills-sh-listed": [
    "pass",
    1,
    1
   ],
   "pricing-md": [
    "fail",
    0,
    2
   ],
   "nlweb-schema-feeds": [
    "fail",
    0,
    1
   ],
   "mcp-well-known-discovery": [
    "pass",
    2,
    2
   ],
   "agent-mode-view": [
    "warning",
    1,
    2
   ],
   "link-headers-discovery": [
    "pass",
    1,
    1
   ],
   "markdown-url-fallback": [
    "fail",
    0,
    2
   ],
   "modular-llms-txt": [
    "fail",
    0,
    1
   ],
   "sitemap-lastmod": [
    "fail",
    0,
    1
   ],
   "robots-agent-user-policy": [
    "pass",
    2,
    2
   ],
   "llms-txt-exists": [
    "pass",
    1,
    1
   ],
   "llms-txt-formatting": [
    "pass",
    2,
    2
   ],
   "json-ld": [
    "pass",
    4,
    4
   ],
   "pricing-info": [
    "pass",
    3,
    3
   ],
   "public-api-docs": [
    "pass",
    3,
    3
   ],
   "agent-instruction": [
    "pass",
    3,
    3
   ],
   "skills-sh-quality": [
    "pass",
    2,
    2
   ],
   "json-ld-entity-linking": [
    "pass",
    2,
    2
   ],
   "metadata-completeness": [
    "pass",
    2,
    2
   ],
   "org-schema-completeness": [
    "pass",
    2,
    2
   ],
   "schema-type-breadth": [
    "fail",
    0,
    2
   ],
   "trust-anchors": [
    "pass",
    2,
    2
   ],
   "llms-txt-links-resolve": [
    "pass",
    2,
    2
   ],
   "markdown-link-alternate": [
    "fail",
    0,
    1
   ],
   "markdown-frontmatter": [
    "na",
    0,
    1
   ],
   "redirect-hygiene": [
    "pass",
    1,
    1
   ],
   "page-token-budget": [
    "pass",
    1,
    1
   ],
   "code-fence-validity": [
    "pass",
    1,
    1
   ],
   "docs-auth-gate": [
    "pass",
    2,
    2
   ],
   "openapi-spec": [
    "pass",
    7,
    7
   ],
   "developer-portal": [
    "pass",
    6,
    6
   ],
   "api-catalog-rfc9727": [
    "warning",
    1,
    2
   ],
   "markdown-negotiation": [
    "fail",
    0,
    1
   ],
   "markdown-negotiation-vary": [
    "fail",
    0,
    1
   ],
   "agent-ua-markdown": [
    "fail",
    0,
    1
   ],
   "agent-crawler-reachability": [
    "na",
    0,
    2
   ],
   "mcp-tool-descriptions": [
    "pass",
    3,
    3
   ],
   "mcp-param-schemas": [
    "pass",
    2,
    2
   ],
   "mcp-server-identity": [
    "fail",
    0,
    1
   ],
   "mcp-tool-listing": [
    "pass",
    3,
    3
   ],
   "mcp-tool-naming": [
    "pass",
    2,
    2
   ],
   "public-api": [
    "pass",
    7,
    7
   ],
   "oauth-support": [
    "pass",
    5,
    5
   ],
   "scoped-permissions": [
    "pass",
    5,
    5
   ],
   "mcp-auth-mechanism": [
    "pass",
    2,
    2
   ],
   "mcp-oauth-metadata": [
    "na",
    0,
    2
   ],
   "mcp-pkce-s256": [
    "na",
    0,
    2
   ],
   "onboarding-friction": [
    "warning",
    1,
    2
   ],
   "web-bot-auth-directory": [
    "fail",
    0,
    2
   ],
   "oauth-protected-resource": [
    "pass",
    2,
    2
   ],
   "auth-md-exists": [
    "fail",
    0,
    2
   ],
   "auth-md-structure": [
    "fail",
    0,
    2
   ],
   "auth-md-walkthrough-simulation": [
    "na",
    0,
    2
   ],
   "agent-auth-discovery-metadata": [
    "warning",
    1,
    3
   ],
   "agent-auth-www-authenticate": [
    "pass",
    1,
    1
   ],
   "agent-auth-endpoints-reachable": [
    "fail",
    0,
    2
   ],
   "pap-discovery": [
    "na",
    0,
    2
   ],
   "pap-issuer-binding": [
    "na",
    0,
    2
   ],
   "pap-auth-config": [
    "na",
    0,
    2
   ],
   "pap-interfaces": [
    "na",
    0,
    2
   ],
   "pap-endpoint-enforcement": [
    "na",
    0,
    2
   ],
   "pap-cross-protocol": [
    "na",
    0,
    2
   ],
   "mcp-server": [
    "warning",
    5,
    6
   ],
   "mcp-error-handling": [
    "pass",
    2,
    2
   ],
   "mcp-transport-modern": [
    "pass",
    1,
    1
   ],
   "webmcp": [
    "pass",
    5,
    5
   ],
   "rate-limit-headers": [
    "fail",
    0,
    2
   ],
   "idempotency-key-support": [
    "pass",
    3,
    3
   ],
   "json-error-responses": [
    "pass",
    4,
    4
   ],
   "api-error-model": [
    "na",
    0,
    3
   ],
   "api-versioning-policy": [
    "na",
    0,
    3
   ],
   "pagination-shape": [
    "na",
    0,
    2
   ],
   "async-job-pattern": [
    "na",
    0,
    2
   ],
   "cli-tool": [
    "pass",
    3,
    3
   ],
   "rest-sdk-packages": [
    "warning",
    1,
    3
   ],
   "nlweb-ask": [
    "pass",
    1,
    1
   ],
   "nlweb-streaming": [
    "fail",
    0,
    1
   ],
   "response-schema-coverage": [
    "na",
    0,
    2
   ],
   "mcp-tool-annotations": [
    "pass",
    2,
    2
   ],
   "mcp-server-card": [
    "pass",
    2,
    2
   ],
   "mcp-multi-surface-coverage": [
    "pass",
    2,
    2
   ],
   "sandbox-environment": [
    "warning",
    0,
    2
   ],
   "batch-endpoints": [
    "na",
    0,
    2
   ],
   "mcp-resource-listing": [
    "na",
    0,
    3
   ],
   "graphql-error-type-definition": [
    "fail",
    0,
    3
   ],
   "graphql-versioning-policy": [
    "warning",
    1,
    2
   ],
   "graphql-pagination-pattern": [
    "warning",
    1,
    2
   ],
   "graphql-async-job-pattern": [
    "warning",
    1,
    2
   ],
   "graphql-schema-completeness": [
    "na",
    0,
    3
   ],
   "graphql-batch-mutations": [
    "na",
    0,
    2
   ],
   "agent-friendly-404": [
    "warning",
    1,
    2
   ],
   "ax-document-structure": [
    "na",
    0,
    3
   ],
   "ax-native-controls": [
    "pass",
    3,
    3
   ],
   "ax-accessible-names": [
    "pass",
    2,
    2
   ],
   "ax-form-labeling": [
    "na",
    0,
    2
   ],
   "ax-tree-injection-safe": [
    "pass",
    2,
    2
   ],
   "mcp-app-registry": [
    "na",
    0,
    4
   ],
   "a2ui-support": [
    "fail",
    0,
    2
   ],
   "mcp-apps-ui-quality": [
    "na",
    0,
    4
   ],
   "mcp-view-domain": [
    "na",
    0,
    4
   ],
   "mcp-view-csp": [
    "na",
    0,
    4
   ],
   "api-schema-analysis": [
    "pass",
    2,
    2
   ],
   "function-calling-compat": [
    "pass",
    2,
    2
   ],
   "mcp-resource-quality": [
    "na",
    0,
    3
   ],
   "mpp-support": [
    "na",
    0,
    2
   ],
   "x402-support": [
    "na",
    0,
    2
   ],
   "ucp-support": [
    "na",
    0,
    3
   ],
   "acp-support": [
    "na",
    0,
    3
   ],
   "acp-delegate-payment": [
    "na",
    0,
    3
   ],
   "ap2-support": [
    "na",
    0,
    3
   ]
  },
  "flagged": [
   {
    "id": "brand-search-accuracy",
    "layer": "discovery",
    "status": "warning",
    "score": 1,
    "max": 3,
    "tier": "required",
    "est": 2.5,
    "detail": "monday.com ranks #7 for \"monday.com\" (searched your brand name alone: no main product term from your homepage qualified)"
   },
   {
    "id": "graphql-error-type-definition",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": 1.3,
    "detail": "GraphQL introspection auth-gated and no typed graphql error model documentation found on GraphQL-tagged pages"
   },
   {
    "id": "ard-catalog",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 1.2,
    "detail": "No /.well-known/ard.json, no same-site rel=\"ard\" link, and no legacy /.well-known/ai-catalog.json"
   },
   {
    "id": "content-no-js",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 3,
    "tier": "required",
    "est": 1.1,
    "detail": "Homepage: 13923 chars with H1, but 3.0% content ratio is below the 5% target. Sampled pages with almost no text without JavaScript (1 of 5): https://monday.com/academy (69 chars)."
   },
   {
    "id": "schema-type-breadth",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.1,
    "detail": "No extended schema types found - AI can only answer basic questions about this entity"
   },
   {
    "id": "rate-limit-headers",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.9,
    "detail": "GraphQL introspection auth-gated and no header convention documented on GraphQL-tagged pages"
   },
   {
    "id": "rest-sdk-packages",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 3,
    "tier": "recommended",
    "est": 0.9,
    "detail": "SDK package found only in npm"
   },
   {
    "id": "agent-friendly-404",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.4,
    "detail": "The nonexistent path https://monday.com/__ora-404-probe-iccd8adr correctly returns HTTP 404. Partial credit: no Markdown error body was detected."
   },
   {
    "id": "graphql-async-job-pattern",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.4,
    "detail": "GraphQL async-job pattern described in documentation at https://monday.com/.well-known/agent-skills/general-monday-gql-api-usage/SKILL.md; schema not introspectable to verify"
   },
   {
    "id": "graphql-pagination-pattern",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.4,
    "detail": "GraphQL pagination pattern described in documentation at https://api.monday.com/v2/get_schema?format=sdl; schema not introspectable to verify"
   },
   {
    "id": "graphql-versioning-policy",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.4,
    "detail": "GraphQL versioning / deprecation policy described in documentation at https://api.monday.com/v2/get_schema; schema not introspectable to verify"
   },
   {
    "id": "mcp-server",
    "layer": "usability",
    "status": "warning",
    "score": 5,
    "max": 6,
    "tier": "required",
    "est": 0.4,
    "detail": "MCP server detected at https://mcp.monday.com/mcp; it requires authentication. Presence is verified (5/6), but Ora could not inspect its tools or verify access scopes without credentials."
   },
   {
    "id": "onboarding-friction",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.4,
    "detail": "Onboarding signals described but not verified live: free tier available, self-serve key generation, sandbox/test environment"
   },
   {
    "id": "agent-auth-discovery-metadata",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 3,
    "tier": "recommended",
    "est": 0.1,
    "detail": "PRM + AS metadata both present (AS metadata fetched from advertised origin https://auth.monday.com) but AS metadata has no agent_auth block"
   },
   {
    "id": "agent-auth-endpoints-reachable",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.1,
    "detail": "No agent_auth endpoint URIs found in AS metadata or /auth.md prose; nothing to probe"
   },
   {
    "id": "auth-md-exists",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.1,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "auth-md-structure",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.1,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "mcp-server-identity",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.1,
    "detail": "docs MCP identity incomplete - missing: instructions"
   },
   {
    "id": "sandbox-environment",
    "layer": "usability",
    "status": "warning",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.1,
    "detail": "Sandbox/test environment mentioned at https://developer.monday.com but no sandbox surface verified"
   },
   {
    "id": "a2ui-support",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No A2UI or generative UI support detected"
   },
   {
    "id": "agent-mode-view",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "Agent mode view found at ?mode=agent (3 signals: mcp, agent, integration)"
   },
   {
    "id": "agent-plugins-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No Agent Plugins manifest (plugin.json) found in discovered repos"
   },
   {
    "id": "agent-rules-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Could not locate a public repo containing agent configs or rules. If our probes missed it, AI coding agents likely will too - link the repo from your homepage or docs so it's discoverable."
   },
   {
    "id": "agent-ua-markdown",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly."
   },
   {
    "id": "api-catalog-rfc9727",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "required",
    "est": 0,
    "detail": "api-catalog linkset[0] has no 'item' entries"
   },
   {
    "id": "markdown-link-alternate",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No sampled page advertises a markdown alternate. Add <link rel=\"alternate\" type=\"text/markdown\" href=\"...\"> (or the equivalent Link response header) pointing at a markdown twin of the page."
   },
   {
    "id": "markdown-negotiation",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Missing markdown content negotiation. Homepage returned text/html when probed with Accept: text/markdown (expected text/markdown), and none of the well-known root paths (/llms.md, /auth.md, /agents.md, /developers.md, /api.md, /index.md,"
   },
   {
    "id": "markdown-negotiation-vary",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0,
    "detail": "Homepage https://monday.com does not meet the Markdown negotiation requirements: Accept: text/markdown returned text/html; charset=utf-8; Vary header missing Accept (got \"accept-encoding\")"
   },
   {
    "id": "markdown-url-fallback",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "Homepage does not support the .md suffix. Probed https://monday.com/index.md and it did not return markdown (expected text/markdown content-type or a heading-led non-HTML body)."
   },
   {
    "id": "modular-llms-txt",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No section-level llms.txt found. Tried /docs/llms.txt, /api/llms.txt, /developers/llms.txt, /guides/llms.txt, /reference/llms.txt, /operations/llms.txt, /integrations/llms.txt, /crm/llms.txt, /smb/llms.txt, /whats-new/llms.txt."
   },
   {
    "id": "nlweb-schema-feeds",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No schemamap: directive in robots.txt"
   },
   {
    "id": "nlweb-streaming",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "NLWeb /ask requires authentication - cannot verify streaming"
   },
   {
    "id": "pricing-md",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No pricing.md found - agents need machine-readable pricing to compare products and make purchase recommendations"
   },
   {
    "id": "sitemap-lastmod",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0,
    "detail": "None of the 338 sampled sitemap entries carries a lastmod date. Add <lastmod> (W3C datetime) so agents can prioritize fresh content."
   },
   {
    "id": "web-bot-auth-directory",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No /.well-known/http-message-signatures-directory found"
   }
  ],
  "seen": {
   "brand-search-accuracy": "monday.com ranks #7 for \"monday.com\" (searched your brand name alone: no main product term from your homepage qualified)",
   "wikipedia-presence": "Wikipedia \"Monday.com\" and Wikidata Q65073369 both verified - domain confirmed on both sources",
   "robots-ai-policy-quality": "AI search crawlers: allowed in 18 of 18 checks (3 crawlers on 6 pages). AI training crawlers: allowed in 12 of 12 checks (2 crawlers on 6 pages), not scored.",
   "noindex-directives": "No noindex on the homepage: no robots, googlebot or bingbot meta tag and no X-Robots-Tag header hides it from search.",
   "sitemap": "Valid sitemap found at https://monday.com/sitemap_index.xml with multiple sitemaps entries",
   "content-no-js": "Homepage: 13923 chars with H1, but 3.0% content ratio is below the 5% target. Sampled pages with almost no text without JavaScript (1 of 5): https://monday.com/academy (69 chars).",
   "bot-detection": "Can't verify agent access. A bot shield, rate limit, or timeout stopped our test request. Real crawlers come from their own networks and may get through. (ChatGPT-User: cannot verify, OAI-SearchBot: cannot verify,",
   "agent-discovery-file": "Agent Skills index (agentskills.io) found at /.well-known/agent-skills/index.json with 2 skill(s)",
   "a2a-agent-card": "A2A Agent Card found: \"monday.com MCP Server\"",
   "mcp-well-known-discovery": "MCP server discoverable via server-card.json at /.well-known/mcp/",
   "robots-agent-user-policy": "No applicable crawl or usage restriction found for 3 user-triggered agents (chatgpt-user, claude-user, perplexity-user) on 1 public page: https://monday.com/. Declared policy only;",
   "llms-txt-exists": "Found the llms.txt at https://monday.com/llms.txt.",
   "llms-txt-formatting": "The llms.txt is well-formatted: 67 lines with markdown links, 9,893 characters in total.",
   "json-ld": "Rich JSON-LD identity: Organization with name, description, url, and sameAs/logo/address (1 block(s))",
   "public-api-docs": "Documentation site found at https://developer.monday.com",
   "metadata-completeness": "All metadata signals present: canonical URL, lang=\"en\", og:image, og:type",
   "page-token-budget": "All 6 measured pages fit an agent context budget (largest ~4K tokens)",
   "docs-auth-gate": "All 5 sampled pages are publicly readable (4 with substantive content)",
   "openapi-spec": "OpenAPI spec found at https://monday.com/openapi.json (version: 3.1.0)",
   "developer-portal": "Developer portal found at https://developer.monday.com",
   "markdown-negotiation": "Missing markdown content negotiation. Homepage returned text/html when probed with Accept: text/markdown (expected text/markdown), and none of the well-known root paths (/llms.md, /auth.md, /agents.md, /developers.md,",
   "agent-ua-markdown": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly.",
   "agent-crawler-reachability": "Can't verify crawler reachability. A bot shield, rate limit, or timeout stopped our test request. Real crawlers come from their own networks and may get through. (ChatGPT-User: cannot verify,",
   "public-api": "REST API documentation found at https://api.monday.com/v2/get_schema?format=sdl. GraphQL endpoint at https://api.monday.com/graphql is reachable; introspection requires authentication (API key / OAuth),",
   "oauth-support": "OAuth authorization server metadata at https://auth.monday.com/mcp",
   "mcp-server": "MCP server detected at https://mcp.monday.com/mcp; it requires authentication. Presence is verified (5/6), but Ora could not inspect its tools or verify access scopes without credentials.",
   "webmcp": "Imperative WebMCP API detected (navigator.modelContext.registerTool in inline script). Note: the entry point moved to document.modelContext - Chrome 150+ deprecates the navigator.modelContext alias.",
   "cli-tool": "CLI package found on npm: @mondaycom/apps-cli",
   "rest-sdk-packages": "SDK package found only in npm",
   "nlweb-ask": "NLWeb /ask endpoint exists but requires authentication (HTTP 403, via POST)",
   "mpp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "x402-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "ucp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "acp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "ap2-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites"
  }
 },
 {
  "slug": "mongodb",
  "name": "MongoDB",
  "domain": "mongodb.com",
  "finalUrl": "https://www.mongodb.com/",
  "read": "2026-11-09",
  "scannedAt": "2026-11-09T10:39:23.448+00:00",
  "score": 78,
  "max": 100,
  "grade": "B",
  "category": "Infrastructure",
  "scoringVersion": 2,
  "rulesUrl": "https://ora.ai/api/ranker/releases/2/rules",
  "summary": "MongoDB offers strong access and usability foundations and passes most discovery checks, but it lacks a published OpenAPI specification for agents.",
  "layers": [
   {
    "id": "discovery",
    "name": "Discovery",
    "score": 14,
    "max": 18
   },
   {
    "id": "accessibility",
    "name": "Access",
    "score": 49,
    "max": 62
   },
   {
    "id": "usability",
    "name": "Usability",
    "score": 53,
    "max": 69
   },
   {
    "id": "payments",
    "name": "Payments",
    "score": 0,
    "max": 0
   }
  ],
  "checks": {
   "ard-catalog": [
    "warning",
    0,
    1
   ],
   "ai-catalog-published": [
    "warning",
    0,
    1
   ],
   "ard-entries-valid": [
    "na",
    0,
    2
   ],
   "ard-trust-manifest": [
    "na",
    0,
    2
   ],
   "agentic-search-usecase": [
    "na",
    0,
    6
   ],
   "agentic-search-specific": [
    "pass",
    3,
    3
   ],
   "brand-search-accuracy": [
    "warning",
    1,
    3
   ],
   "wikipedia-presence": [
    "pass",
    4,
    4
   ],
   "robots-ai-policy-quality": [
    "pass",
    2,
    2
   ],
   "mcp-registry-listed": [
    "fail",
    0,
    1
   ],
   "npm-sdk-package": [
    "pass",
    1,
    1
   ],
   "agent-rules-repo": [
    "fail",
    0,
    1
   ],
   "agent-plugins-repo": [
    "fail",
    0,
    1
   ],
   "registry-branding": [
    "fail",
    0,
    2
   ],
   "chatgpt-app-listed": [
    "pass",
    2,
    2
   ],
   "noindex-directives": [
    "pass",
    1,
    1
   ],
   "sitemap": [
    "pass",
    2,
    2
   ],
   "content-no-js": [
    "warning",
    2,
    3
   ],
   "bot-detection": [
    "pass",
    2,
    2
   ],
   "agent-discovery-file": [
    "warning",
    1,
    2
   ],
   "agent-skills-index-v2": [
    "fail",
    0,
    2
   ],
   "a2a-agent-card": [
    "warning",
    1,
    2
   ],
   "skills-sh-listed": [
    "pass",
    1,
    1
   ],
   "pricing-md": [
    "pass",
    2,
    2
   ],
   "nlweb-schema-feeds": [
    "fail",
    0,
    1
   ],
   "mcp-well-known-discovery": [
    "warning",
    1,
    2
   ],
   "agent-mode-view": [
    "fail",
    0,
    2
   ],
   "link-headers-discovery": [
    "fail",
    0,
    1
   ],
   "markdown-url-fallback": [
    "fail",
    0,
    2
   ],
   "modular-llms-txt": [
    "pass",
    1,
    1
   ],
   "sitemap-lastmod": [
    "pass",
    1,
    1
   ],
   "robots-agent-user-policy": [
    "pass",
    2,
    2
   ],
   "llms-txt-exists": [
    "pass",
    1,
    1
   ],
   "llms-txt-formatting": [
    "pass",
    2,
    2
   ],
   "json-ld": [
    "pass",
    4,
    4
   ],
   "pricing-info": [
    "pass",
    3,
    3
   ],
   "public-api-docs": [
    "pass",
    3,
    3
   ],
   "agent-instruction": [
    "warning",
    2,
    3
   ],
   "skills-sh-quality": [
    "pass",
    2,
    2
   ],
   "json-ld-entity-linking": [
    "pass",
    2,
    2
   ],
   "metadata-completeness": [
    "pass",
    2,
    2
   ],
   "org-schema-completeness": [
    "warning",
    1,
    2
   ],
   "schema-type-breadth": [
    "fail",
    0,
    2
   ],
   "trust-anchors": [
    "pass",
    2,
    2
   ],
   "llms-txt-links-resolve": [
    "pass",
    2,
    2
   ],
   "markdown-link-alternate": [
    "fail",
    0,
    1
   ],
   "markdown-frontmatter": [
    "na",
    0,
    1
   ],
   "redirect-hygiene": [
    "pass",
    1,
    1
   ],
   "page-token-budget": [
    "pass",
    1,
    1
   ],
   "code-fence-validity": [
    "pass",
    1,
    1
   ],
   "docs-auth-gate": [
    "pass",
    2,
    2
   ],
   "openapi-spec": [
    "fail",
    0,
    7
   ],
   "developer-portal": [
    "pass",
    6,
    6
   ],
   "api-catalog-rfc9727": [
    "warning",
    1,
    2
   ],
   "markdown-negotiation": [
    "fail",
    0,
    1
   ],
   "markdown-negotiation-vary": [
    "fail",
    0,
    1
   ],
   "agent-ua-markdown": [
    "fail",
    0,
    1
   ],
   "agent-crawler-reachability": [
    "pass",
    2,
    2
   ],
   "mcp-tool-descriptions": [
    "na",
    0,
    3
   ],
   "mcp-param-schemas": [
    "na",
    0,
    2
   ],
   "mcp-server-identity": [
    "na",
    0,
    1
   ],
   "mcp-tool-listing": [
    "na",
    0,
    3
   ],
   "mcp-tool-naming": [
    "na",
    0,
    2
   ],
   "public-api": [
    "pass",
    7,
    7
   ],
   "oauth-support": [
    "pass",
    5,
    5
   ],
   "scoped-permissions": [
    "fail",
    0,
    5
   ],
   "mcp-auth-mechanism": [
    "warning",
    1,
    2
   ],
   "mcp-oauth-metadata": [
    "pass",
    2,
    2
   ],
   "mcp-pkce-s256": [
    "pass",
    2,
    2
   ],
   "onboarding-friction": [
    "pass",
    2,
    2
   ],
   "web-bot-auth-directory": [
    "warning",
    1,
    2
   ],
   "oauth-protected-resource": [
    "pass",
    2,
    2
   ],
   "auth-md-exists": [
    "fail",
    0,
    2
   ],
   "auth-md-structure": [
    "fail",
    0,
    2
   ],
   "auth-md-walkthrough-simulation": [
    "na",
    0,
    2
   ],
   "agent-auth-discovery-metadata": [
    "warning",
    1,
    3
   ],
   "agent-auth-www-authenticate": [
    "pass",
    1,
    1
   ],
   "agent-auth-endpoints-reachable": [
    "fail",
    0,
    2
   ],
   "pap-discovery": [
    "na",
    0,
    2
   ],
   "pap-issuer-binding": [
    "na",
    0,
    2
   ],
   "pap-auth-config": [
    "na",
    0,
    2
   ],
   "pap-interfaces": [
    "na",
    0,
    2
   ],
   "pap-endpoint-enforcement": [
    "na",
    0,
    2
   ],
   "pap-cross-protocol": [
    "na",
    0,
    2
   ],
   "mcp-server": [
    "warning",
    5,
    6
   ],
   "mcp-error-handling": [
    "na",
    0,
    2
   ],
   "mcp-transport-modern": [
    "na",
    0,
    1
   ],
   "webmcp": [
    "fail",
    0,
    5
   ],
   "rate-limit-headers": [
    "na",
    0,
    2
   ],
   "idempotency-key-support": [
    "na",
    0,
    3
   ],
   "json-error-responses": [
    "pass",
    4,
    4
   ],
   "api-error-model": [
    "na",
    0,
    3
   ],
   "api-versioning-policy": [
    "na",
    0,
    3
   ],
   "pagination-shape": [
    "na",
    0,
    2
   ],
   "async-job-pattern": [
    "na",
    0,
    2
   ],
   "cli-tool": [
    "pass",
    3,
    3
   ],
   "rest-sdk-packages": [
    "warning",
    2,
    3
   ],
   "nlweb-ask": [
    "fail",
    0,
    1
   ],
   "nlweb-streaming": [
    "fail",
    0,
    1
   ],
   "response-schema-coverage": [
    "na",
    0,
    2
   ],
   "mcp-tool-annotations": [
    "na",
    0,
    2
   ],
   "mcp-server-card": [
    "fail",
    0,
    2
   ],
   "mcp-multi-surface-coverage": [
    "warning",
    1,
    2
   ],
   "sandbox-environment": [
    "warning",
    0,
    2
   ],
   "batch-endpoints": [
    "na",
    0,
    2
   ],
   "mcp-resource-listing": [
    "na",
    0,
    3
   ],
   "graphql-error-type-definition": [
    "na",
    0,
    3
   ],
   "graphql-versioning-policy": [
    "na",
    0,
    2
   ],
   "graphql-pagination-pattern": [
    "na",
    0,
    2
   ],
   "graphql-async-job-pattern": [
    "na",
    0,
    2
   ],
   "graphql-schema-completeness": [
    "na",
    0,
    3
   ],
   "graphql-batch-mutations": [
    "na",
    0,
    2
   ],
   "agent-friendly-404": [
    "warning",
    1,
    2
   ],
   "ax-document-structure": [
    "na",
    0,
    3
   ],
   "ax-native-controls": [
    "pass",
    3,
    3
   ],
   "ax-accessible-names": [
    "pass",
    2,
    2
   ],
   "ax-form-labeling": [
    "na",
    0,
    2
   ],
   "ax-tree-injection-safe": [
    "pass",
    2,
    2
   ],
   "mcp-app-registry": [
    "na",
    0,
    4
   ],
   "a2ui-support": [
    "na",
    0,
    2
   ],
   "mcp-apps-ui-quality": [
    "na",
    0,
    4
   ],
   "mcp-view-domain": [
    "na",
    0,
    4
   ],
   "mcp-view-csp": [
    "na",
    0,
    4
   ],
   "api-schema-analysis": [
    "warning",
    1,
    2
   ],
   "function-calling-compat": [
    "fail",
    0,
    2
   ],
   "mcp-resource-quality": [
    "na",
    0,
    3
   ],
   "mpp-support": [
    "na",
    0,
    2
   ],
   "x402-support": [
    "na",
    0,
    2
   ],
   "ucp-support": [
    "na",
    0,
    3
   ],
   "acp-support": [
    "na",
    0,
    3
   ],
   "acp-delegate-payment": [
    "na",
    0,
    3
   ],
   "ap2-support": [
    "na",
    0,
    3
   ]
  },
  "flagged": [
   {
    "id": "openapi-spec",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 7,
    "tier": "required",
    "est": 3.8,
    "detail": "No OpenAPI/Swagger specification found"
   },
   {
    "id": "scoped-permissions",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 5,
    "tier": "recommended",
    "est": 3.2,
    "detail": "No declared OAuth scopes, security schemes, or scoped-permission documentation found"
   },
   {
    "id": "webmcp",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 5,
    "tier": "required",
    "est": 3.2,
    "detail": "No WebMCP support detected - no document.modelContext / navigator.modelContext usage found (scanned 12 of 12 same-origin script bundle(s) for modelContext registrations)"
   },
   {
    "id": "brand-search-accuracy",
    "layer": "discovery",
    "status": "warning",
    "score": 1,
    "max": 3,
    "tier": "required",
    "est": 2.5,
    "detail": "mongodb.com ranks #8 for \"MongoDB\" (searched your brand name alone: no main product term from your homepage qualified)"
   },
   {
    "id": "function-calling-compat",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.3,
    "detail": "Poor compatibility: missing operationIds (0/0) and parameter schemas"
   },
   {
    "id": "ard-catalog",
    "layer": "discovery",
    "status": "warning",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 1.2,
    "detail": "/.well-known/ard.json exists but is not valid JSON"
   },
   {
    "id": "mcp-registry-listed",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 1.2,
    "detail": "No verified entry in the official MCP Registry or on Smithery, and no npm or PyPI package of yours that runs as an MCP server. To pass,"
   },
   {
    "id": "schema-type-breadth",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.1,
    "detail": "No extended schema types found - AI can only answer basic questions about this entity"
   },
   {
    "id": "agent-friendly-404",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "The nonexistent path https://mongodb.com/__ora-404-probe-vicen764 correctly returns HTTP 404. Partial credit: no Markdown error body was detected."
   },
   {
    "id": "api-schema-analysis",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "REST: OpenAPI spec found but failed to parse for complexity analysis"
   },
   {
    "id": "mcp-server",
    "layer": "usability",
    "status": "warning",
    "score": 5,
    "max": 6,
    "tier": "required",
    "est": 0.6,
    "detail": "MCP server detected at https://mcp.mongodb.com; it requires authentication. Presence is verified (5/6), but Ora could not inspect its tools or verify access scopes without credentials."
   },
   {
    "id": "rest-sdk-packages",
    "layer": "usability",
    "status": "warning",
    "score": 2,
    "max": 3,
    "tier": "recommended",
    "est": 0.6,
    "detail": "SDK packages found in npm, rubygems"
   },
   {
    "id": "agent-discovery-file",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "required",
    "est": 0.5,
    "detail": "Found legacy /.well-known/agent-skills; /.well-known/agent-skills/index.json exists but is not valid JSON - fix the file or remove it so agents fall back to /.well-known/agent-skills, /agents.md, or /skills.sh"
   },
   {
    "id": "agent-instruction",
    "layer": "accessibility",
    "status": "warning",
    "score": 2,
    "max": 3,
    "tier": "required",
    "est": 0.5,
    "detail": "Agent instruction file at /.well-known/agent-skills/ but no explicit when-to-use guidance"
   },
   {
    "id": "content-no-js",
    "layer": "accessibility",
    "status": "warning",
    "score": 2,
    "max": 3,
    "tier": "required",
    "est": 0.5,
    "detail": "Homepage: 7302 chars with H1, but heading hierarchy skips H1 to H5. 5 of 5 sampled inner pages have text without JavaScript."
   },
   {
    "id": "org-schema-completeness",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "Organization schema found but missing: contactPoint, address"
   },
   {
    "id": "agent-auth-discovery-metadata",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 3,
    "tier": "recommended",
    "est": 0.3,
    "detail": "PRM + AS metadata both present (PRM discovered at https://mcp.mongodb.com) (AS metadata fetched from advertised origin https://authorize.mongodb.com) but AS metadata has no agent_auth block"
   },
   {
    "id": "agent-auth-endpoints-reachable",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.3,
    "detail": "No agent_auth endpoint URIs found in AS metadata or /auth.md prose; nothing to probe"
   },
   {
    "id": "ai-catalog-published",
    "layer": "discovery",
    "status": "warning",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.3,
    "detail": "/.well-known/ai-catalog.json exists but is not valid JSON"
   },
   {
    "id": "auth-md-exists",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.3,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "auth-md-structure",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.3,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "mcp-server-card",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.3,
    "detail": "No MCP server card found for https://mcp.mongodb.com (checked /.well-known/mcp/server-card.json, the site's ai-catalog.json, servers[].card in mcp.json, and <server>/server-card)"
   },
   {
    "id": "mcp-server-card",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.3,
    "detail": "No MCP server card found for https://help.mongodb.com/mcp (checked /.well-known/mcp/server-card.json, the site's ai-catalog.json, servers[].card in mcp.json, and <server>/server-card)"
   },
   {
    "id": "sandbox-environment",
    "layer": "usability",
    "status": "warning",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.3,
    "detail": "Testing/staging environment mentioned at https://www.mongodb.com but no dedicated sandbox found"
   },
   {
    "id": "a2a-agent-card",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.1,
    "detail": "agent-card.json exists but contains invalid JSON"
   },
   {
    "id": "api-catalog-rfc9727",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "required",
    "est": 0.1,
    "detail": "api-catalog responded but body is not valid JSON"
   },
   {
    "id": "link-headers-discovery",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 0.1,
    "detail": "No HTTP Link response headers (RFC 8288) found"
   },
   {
    "id": "markdown-negotiation-vary",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.1,
    "detail": "Homepage https://mongodb.com does not meet the Markdown negotiation requirements: Accept: text/markdown returned text/html; charset=utf-8; Vary header missing Accept (got \"accept-encoding\")"
   },
   {
    "id": "mcp-auth-mechanism",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.1,
    "detail": "docs MCP is gated behind authentication - this defeats the purpose of a docs MCP for agent discovery"
   },
   {
    "id": "mcp-multi-surface-coverage",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.1,
    "detail": "You run both MCP servers, but the documentation one (https://help.mongodb.com/mcp) is not reachable. Fix it so agents can use it."
   },
   {
    "id": "mcp-well-known-discovery",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.1,
    "detail": "MCP server at https://mcp.mongodb.com - list its server card, hosted on your own domain, in /.well-known/ai-catalog.json so MCP clients can discover it"
   },
   {
    "id": "agent-mode-view",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "?mode=agent returns same content as homepage (no dedicated agent view)"
   },
   {
    "id": "agent-plugins-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No Agent Plugins manifest (plugin.json) found in discovered repos"
   },
   {
    "id": "agent-rules-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Could not locate a public repo containing agent configs or rules. If our probes missed it, AI coding agents likely will too - link the repo from your homepage or docs so it's discoverable."
   },
   {
    "id": "agent-skills-index-v2",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "/.well-known/agent-skills/index.json is not valid JSON"
   },
   {
    "id": "agent-ua-markdown",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly."
   },
   {
    "id": "markdown-link-alternate",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No sampled page advertises a markdown alternate. Add <link rel=\"alternate\" type=\"text/markdown\" href=\"...\"> (or the equivalent Link response header) pointing at a markdown twin of the page."
   },
   {
    "id": "markdown-negotiation",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Missing markdown content negotiation. Homepage returned text/html when probed with Accept: text/markdown (expected text/markdown), and none of the well-known root paths (/llms.md, /auth.md, /agents.md, /developers.md, /api.md, /index.md,"
   },
   {
    "id": "markdown-url-fallback",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "Homepage does not support the .md suffix. Probed https://mongodb.com/index.md and it did not return markdown (expected text/markdown content-type or a heading-led non-HTML body)."
   },
   {
    "id": "nlweb-ask",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No NLWeb-conformant /ask endpoint found via GET or POST"
   },
   {
    "id": "nlweb-schema-feeds",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No schemamap: directive in robots.txt"
   },
   {
    "id": "nlweb-streaming",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "NLWeb /ask does not support SSE streaming via GET or POST"
   },
   {
    "id": "registry-branding",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No registry branding (name, icon, description) found"
   },
   {
    "id": "web-bot-auth-directory",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "Web Bot Auth directory found but body is not valid JSON"
   }
  ],
  "seen": {
   "brand-search-accuracy": "mongodb.com ranks #8 for \"MongoDB\" (searched your brand name alone: no main product term from your homepage qualified)",
   "wikipedia-presence": "Wikipedia \"MongoDB\" and Wikidata Q4546965 both verified - domain confirmed on both sources",
   "robots-ai-policy-quality": "AI search crawlers: allowed in 3 of 3 checks (3 crawlers on 1 page). AI training crawlers: allowed in 2 of 2 checks (2 crawlers on 1 page), not scored.",
   "noindex-directives": "No noindex on the homepage: no robots, googlebot or bingbot meta tag and no X-Robots-Tag header hides it from search.",
   "sitemap": "Valid sitemap found at https://www.mongodb.com/sitemap-index.xml with multiple sitemaps entries",
   "content-no-js": "Homepage: 7302 chars with H1, but heading hierarchy skips H1 to H5. 5 of 5 sampled inner pages have text without JavaScript.",
   "bot-detection": "Site accessible to 4 agent user-agents (ChatGPT-User, OAI-SearchBot, Claude-User, PerplexityBot).",
   "agent-discovery-file": "Found legacy /.well-known/agent-skills; /.well-known/agent-skills/index.json exists but is not valid JSON - fix the file or remove it so agents fall back to /.well-known/agent-skills, /agents.md, or /skills.sh",
   "a2a-agent-card": "agent-card.json exists but contains invalid JSON",
   "mcp-well-known-discovery": "MCP server at https://mcp.mongodb.com - list its server card, hosted on your own domain, in /.well-known/ai-catalog.json so MCP clients can discover it",
   "robots-agent-user-policy": "No applicable crawl or usage restriction found for 3 user-triggered agents (chatgpt-user, claude-user, perplexity-user) on 1 public page: https://mongodb.com/. Declared policy only;",
   "llms-txt-exists": "Found the llms.txt at https://www.mongodb.com/llms.txt.",
   "llms-txt-formatting": "The llms.txt is well-formatted: 88 lines with markdown links, 11,095 characters in total.",
   "json-ld": "Rich JSON-LD identity: Organization with name, description, url, and sameAs/logo/address (1 block(s))",
   "public-api-docs": "Documentation site found at https://www.mongodb.com",
   "metadata-completeness": "All metadata signals present: canonical URL, lang=\"en\", og:image, og:type",
   "page-token-budget": "All 6 measured pages fit an agent context budget (largest ~5K tokens)",
   "docs-auth-gate": "All 5 sampled pages are publicly readable (5 with substantive content)",
   "openapi-spec": "No OpenAPI/Swagger specification found",
   "developer-portal": "Developer portal found at /docs",
   "markdown-negotiation": "Missing markdown content negotiation. Homepage returned text/html when probed with Accept: text/markdown (expected text/markdown), and none of the well-known root paths (/llms.md, /auth.md, /agents.md, /developers.md,",
   "agent-ua-markdown": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly.",
   "agent-crawler-reachability": "Reachable to every agent we tested - ChatGPT-User: reachable, OAI-SearchBot: reachable, Claude-User: reachable, PerplexityBot: reachable",
   "public-api": "REST API documentation found at /docs/api. Best-of-protocols score: 7/7.",
   "oauth-support": "OAuth authorization server metadata at https://authorize.mongodb.com",
   "mcp-server": "MCP server detected at https://mcp.mongodb.com; it requires authentication. Presence is verified (5/6), but Ora could not inspect its tools or verify access scopes without credentials.",
   "webmcp": "No WebMCP support detected - no document.modelContext / navigator.modelContext usage found (scanned 12 of 12 same-origin script bundle(s) for modelContext registrations)",
   "cli-tool": "CLI package found on npm: resolve-mongodb-srv",
   "rest-sdk-packages": "SDK packages found in npm, rubygems",
   "nlweb-ask": "No NLWeb-conformant /ask endpoint found via GET or POST",
   "mpp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "x402-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "ucp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "acp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "ap2-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites"
  }
 },
 {
  "slug": "neon",
  "name": "Neon",
  "domain": "neon.com",
  "finalUrl": "https://neon.com/",
  "read": "2026-11-09",
  "scannedAt": "2026-10-26T20:17:23.45+00:00",
  "score": 88,
  "max": 100,
  "grade": "A",
  "category": null,
  "scoringVersion": null,
  "rulesUrl": null,
  "summary": "Neon provides comprehensive Postgres API access and discovery, but lacks JSON error responses in its REST endpoints.",
  "layers": [
   {
    "id": "discovery",
    "name": "Discovery",
    "score": 13,
    "max": 15
   },
   {
    "id": "accessibility",
    "name": "Access",
    "score": 61,
    "max": 65
   },
   {
    "id": "usability",
    "name": "Usability",
    "score": 81,
    "max": 96
   },
   {
    "id": "payments",
    "name": "Payments",
    "score": 0,
    "max": 0
   }
  ],
  "checks": {
   "ard-catalog": [
    "pass",
    1,
    1
   ],
   "ai-catalog-published": [
    "pass",
    1,
    1
   ],
   "ard-entries-valid": [
    "pass",
    2,
    2
   ],
   "ard-trust-manifest": [
    "fail",
    0,
    2
   ],
   "agentic-search-usecase": [
    "na",
    0,
    6
   ],
   "agentic-search-specific": [
    "pass",
    3,
    3
   ],
   "brand-search-accuracy": [
    "warning",
    1,
    3
   ],
   "wikipedia-presence": [
    "fail",
    0,
    4
   ],
   "robots-ai-policy-quality": [
    "pass",
    2,
    2
   ],
   "mcp-registry-listed": [
    "pass",
    1,
    1
   ],
   "npm-sdk-package": [
    "pass",
    1,
    1
   ],
   "agent-rules-repo": [
    "fail",
    0,
    1
   ],
   "agent-plugins-repo": [
    "fail",
    0,
    1
   ],
   "registry-branding": [
    "pass",
    2,
    2
   ],
   "chatgpt-app-listed": [
    "fail",
    0,
    2
   ],
   "noindex-directives": [
    "pass",
    1,
    1
   ],
   "sitemap": [
    "pass",
    2,
    2
   ],
   "content-no-js": [
    "warning",
    2,
    3
   ],
   "bot-detection": [
    "pass",
    2,
    2
   ],
   "agent-discovery-file": [
    "pass",
    2,
    2
   ],
   "agent-skills-index-v2": [
    "pass",
    2,
    2
   ],
   "a2a-agent-card": [
    "fail",
    0,
    2
   ],
   "skills-sh-listed": [
    "pass",
    1,
    1
   ],
   "pricing-md": [
    "pass",
    2,
    2
   ],
   "nlweb-schema-feeds": [
    "fail",
    0,
    1
   ],
   "mcp-well-known-discovery": [
    "pass",
    2,
    2
   ],
   "agent-mode-view": [
    "fail",
    0,
    2
   ],
   "link-headers-discovery": [
    "pass",
    1,
    1
   ],
   "markdown-url-fallback": [
    "pass",
    2,
    2
   ],
   "modular-llms-txt": [
    "pass",
    1,
    1
   ],
   "sitemap-lastmod": [
    "pass",
    1,
    1
   ],
   "robots-agent-user-policy": [
    "pass",
    2,
    2
   ],
   "llms-txt-exists": [
    "pass",
    1,
    1
   ],
   "llms-txt-formatting": [
    "pass",
    2,
    2
   ],
   "json-ld": [
    "pass",
    4,
    4
   ],
   "pricing-info": [
    "pass",
    3,
    3
   ],
   "public-api-docs": [
    "pass",
    3,
    3
   ],
   "agent-instruction": [
    "pass",
    3,
    3
   ],
   "skills-sh-quality": [
    "pass",
    2,
    2
   ],
   "json-ld-entity-linking": [
    "pass",
    2,
    2
   ],
   "metadata-completeness": [
    "pass",
    2,
    2
   ],
   "org-schema-completeness": [
    "warning",
    1,
    2
   ],
   "schema-type-breadth": [
    "fail",
    0,
    2
   ],
   "trust-anchors": [
    "pass",
    2,
    2
   ],
   "llms-txt-links-resolve": [
    "pass",
    2,
    2
   ],
   "markdown-link-alternate": [
    "pass",
    1,
    1
   ],
   "markdown-frontmatter": [
    "fail",
    0,
    1
   ],
   "redirect-hygiene": [
    "pass",
    1,
    1
   ],
   "page-token-budget": [
    "pass",
    1,
    1
   ],
   "code-fence-validity": [
    "pass",
    1,
    1
   ],
   "docs-auth-gate": [
    "pass",
    2,
    2
   ],
   "openapi-spec": [
    "pass",
    7,
    7
   ],
   "developer-portal": [
    "pass",
    6,
    6
   ],
   "api-catalog-rfc9727": [
    "pass",
    2,
    2
   ],
   "markdown-negotiation": [
    "pass",
    1,
    1
   ],
   "markdown-negotiation-vary": [
    "pass",
    1,
    1
   ],
   "agent-ua-markdown": [
    "fail",
    0,
    1
   ],
   "agent-crawler-reachability": [
    "pass",
    2,
    2
   ],
   "mcp-tool-descriptions": [
    "pass",
    3,
    3
   ],
   "mcp-param-schemas": [
    "pass",
    2,
    2
   ],
   "mcp-server-identity": [
    "fail",
    0,
    1
   ],
   "mcp-tool-listing": [
    "pass",
    3,
    3
   ],
   "mcp-tool-naming": [
    "pass",
    2,
    2
   ],
   "public-api": [
    "pass",
    7,
    7
   ],
   "oauth-support": [
    "warning",
    3,
    5
   ],
   "scoped-permissions": [
    "warning",
    2,
    5
   ],
   "mcp-auth-mechanism": [
    "pass",
    2,
    2
   ],
   "mcp-oauth-metadata": [
    "na",
    0,
    2
   ],
   "mcp-pkce-s256": [
    "na",
    0,
    2
   ],
   "onboarding-friction": [
    "warning",
    1,
    2
   ],
   "web-bot-auth-directory": [
    "fail",
    0,
    2
   ],
   "oauth-protected-resource": [
    "fail",
    0,
    2
   ],
   "auth-md-exists": [
    "pass",
    2,
    2
   ],
   "auth-md-structure": [
    "pass",
    2,
    2
   ],
   "auth-md-walkthrough-simulation": [
    "fail",
    0,
    2
   ],
   "agent-auth-discovery-metadata": [
    "fail",
    0,
    3
   ],
   "agent-auth-www-authenticate": [
    "fail",
    0,
    1
   ],
   "agent-auth-endpoints-reachable": [
    "warning",
    1,
    2
   ],
   "pap-discovery": [
    "na",
    0,
    2
   ],
   "pap-issuer-binding": [
    "na",
    0,
    2
   ],
   "pap-auth-config": [
    "na",
    0,
    2
   ],
   "pap-interfaces": [
    "na",
    0,
    2
   ],
   "pap-endpoint-enforcement": [
    "na",
    0,
    2
   ],
   "pap-cross-protocol": [
    "na",
    0,
    2
   ],
   "mcp-server": [
    "pass",
    6,
    6
   ],
   "mcp-error-handling": [
    "warning",
    1,
    2
   ],
   "mcp-transport-modern": [
    "pass",
    1,
    1
   ],
   "webmcp": [
    "pass",
    5,
    5
   ],
   "rate-limit-headers": [
    "fail",
    0,
    2
   ],
   "idempotency-key-support": [
    "fail",
    0,
    3
   ],
   "json-error-responses": [
    "pass",
    4,
    4
   ],
   "api-error-model": [
    "pass",
    3,
    3
   ],
   "api-versioning-policy": [
    "pass",
    3,
    3
   ],
   "pagination-shape": [
    "pass",
    2,
    2
   ],
   "async-job-pattern": [
    "warning",
    1,
    2
   ],
   "cli-tool": [
    "pass",
    3,
    3
   ],
   "rest-sdk-packages": [
    "warning",
    2,
    3
   ],
   "nlweb-ask": [
    "fail",
    0,
    1
   ],
   "nlweb-streaming": [
    "fail",
    0,
    1
   ],
   "response-schema-coverage": [
    "pass",
    2,
    2
   ],
   "mcp-tool-annotations": [
    "pass",
    2,
    2
   ],
   "mcp-server-card": [
    "pass",
    2,
    2
   ],
   "mcp-multi-surface-coverage": [
    "fail",
    0,
    2
   ],
   "sandbox-environment": [
    "warning",
    0,
    2
   ],
   "batch-endpoints": [
    "fail",
    0,
    2
   ],
   "mcp-resource-listing": [
    "na",
    0,
    3
   ],
   "graphql-error-type-definition": [
    "na",
    0,
    3
   ],
   "graphql-versioning-policy": [
    "na",
    0,
    2
   ],
   "graphql-pagination-pattern": [
    "na",
    0,
    2
   ],
   "graphql-async-job-pattern": [
    "na",
    0,
    2
   ],
   "graphql-schema-completeness": [
    "na",
    0,
    3
   ],
   "graphql-batch-mutations": [
    "na",
    0,
    2
   ],
   "agent-friendly-404": [
    "warning",
    1,
    2
   ],
   "ax-document-structure": [
    "pass",
    3,
    3
   ],
   "ax-native-controls": [
    "pass",
    3,
    3
   ],
   "ax-accessible-names": [
    "pass",
    2,
    2
   ],
   "ax-form-labeling": [
    "na",
    0,
    2
   ],
   "ax-tree-injection-safe": [
    "pass",
    2,
    2
   ],
   "mcp-app-registry": [
    "na",
    0,
    4
   ],
   "a2ui-support": [
    "na",
    0,
    2
   ],
   "mcp-apps-ui-quality": [
    "na",
    0,
    4
   ],
   "mcp-view-domain": [
    "na",
    0,
    4
   ],
   "mcp-view-csp": [
    "na",
    0,
    4
   ],
   "api-schema-analysis": [
    "pass",
    2,
    2
   ],
   "function-calling-compat": [
    "warning",
    1,
    2
   ],
   "mcp-resource-quality": [
    "na",
    0,
    3
   ],
   "mpp-support": [
    "na",
    0,
    2
   ],
   "x402-support": [
    "na",
    0,
    2
   ],
   "ucp-support": [
    "na",
    0,
    3
   ],
   "acp-support": [
    "na",
    0,
    3
   ],
   "acp-delegate-payment": [
    "na",
    0,
    3
   ],
   "ap2-support": [
    "na",
    0,
    3
   ]
  },
  "flagged": [
   {
    "id": "brand-search-accuracy",
    "layer": "discovery",
    "status": "warning",
    "score": 1,
    "max": 3,
    "tier": "required",
    "est": 3,
    "detail": "neon.com ranks #8 for \"Neon serverless database\""
   },
   {
    "id": "idempotency-key-support",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": 1.4,
    "detail": "No REST Idempotency-Key support detected"
   },
   {
    "id": "scoped-permissions",
    "layer": "usability",
    "status": "warning",
    "score": 2,
    "max": 5,
    "tier": "recommended",
    "est": 1.4,
    "detail": "OpenAPI declares security schemes but no named OAuth scopes - agents get all-or-nothing access. Declare per-scope grants (e.g. read:*, write:*) in the spec."
   },
   {
    "id": "schema-type-breadth",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1,
    "detail": "No extended schema types found - AI can only answer basic questions about this entity"
   },
   {
    "id": "oauth-support",
    "layer": "usability",
    "status": "warning",
    "score": 3,
    "max": 5,
    "tier": "required",
    "est": 0.9,
    "detail": "OAuth mentioned in documentation at https://neon.com/auth.md but no OAuth or OpenID Connect endpoint responded"
   },
   {
    "id": "rate-limit-headers",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.9,
    "detail": "No REST rate-limit headers found on probed endpoints"
   },
   {
    "id": "wikipedia-presence",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 4,
    "tier": "recommended",
    "est": 0.6,
    "detail": "No Wikipedia article or Wikidata entity found for \"neon\" - creating a Wikipedia page and a Wikidata item with P856 = neon.com is the highest-impact step for AI search citation coverage"
   },
   {
    "id": "agent-friendly-404",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "The nonexistent path https://neon.com/__ora-404-probe-oe530k3z correctly returns HTTP 404. Partial credit: no Markdown error body was detected."
   },
   {
    "id": "async-job-pattern",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "202 Accepted responses found alongside a job-style path (/jobs, /operations, /tasks, /async, or {id}/status) but the 202 itself carries no Location header or job-tracking fields"
   },
   {
    "id": "content-no-js",
    "layer": "accessibility",
    "status": "warning",
    "score": 2,
    "max": 3,
    "tier": "required",
    "est": 0.5,
    "detail": "3369 chars with H1, but 1.6% content ratio is below the 5% target"
   },
   {
    "id": "function-calling-compat",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "Partial compatibility: 193/193 operationIds, 103/193 typed schemas"
   },
   {
    "id": "onboarding-friction",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "Onboarding signals described but not verified live: free tier available, self-serve key generation, sandbox/test environment"
   },
   {
    "id": "org-schema-completeness",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "Organization schema found but missing: address"
   },
   {
    "id": "rest-sdk-packages",
    "layer": "usability",
    "status": "warning",
    "score": 2,
    "max": 3,
    "tier": "recommended",
    "est": 0.5,
    "detail": "SDK packages found in npm, pypi"
   },
   {
    "id": "ard-trust-manifest",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.3,
    "detail": "No entry carries a trustManifest"
   },
   {
    "id": "chatgpt-app-listed",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.3,
    "detail": "Not found in ChatGPT app directory"
   },
   {
    "id": "agent-auth-discovery-metadata",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": 0.2,
    "detail": "Neither /.well-known/oauth-protected-resource nor /.well-known/oauth-authorization-server found. Probed: neon.com, api.neon.com."
   },
   {
    "id": "a2a-agent-card",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.1,
    "detail": "No A2A agent card found at /.well-known/agent-card.json"
   },
   {
    "id": "agent-auth-endpoints-reachable",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.1,
    "detail": "Some agent_auth endpoints unreachable (source: auth.md prose) - identity_endpoint: HTTP 404 (path not found), claim_endpoint: HTTP 401, events_endpoint: not advertised"
   },
   {
    "id": "agent-auth-www-authenticate",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.1,
    "detail": "No 401 with WWW-Authenticate: Bearer resource_metadata=... found. Probed [https://neon.com/api, https://neon.com/api/v1, https://neon.com/v1, https://neon.com/v2, https://neon.com/agent/identity, https://neon.com/agent/auth,"
   },
   {
    "id": "auth-md-walkthrough-simulation",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.1,
    "detail": "Static fallback: walkthrough breaks at discovery - PRM and AS metadata unreachable"
   },
   {
    "id": "batch-endpoints",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.1,
    "detail": "No batch or bulk endpoint pattern found"
   },
   {
    "id": "mcp-error-handling",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.1,
    "detail": "docs MCP returns error for invalid tool call but missing structured code or message"
   },
   {
    "id": "mcp-multi-surface-coverage",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.1,
    "detail": "You run an MCP server for your documentation, but not one for your product. This bonus needs two MCP servers: one for your product so agents can take actions,"
   },
   {
    "id": "mcp-server-identity",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.1,
    "detail": "docs MCP identity incomplete - missing: instructions"
   },
   {
    "id": "oauth-protected-resource",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.1,
    "detail": "No /.well-known/oauth-protected-resource found (RFC 9728)"
   },
   {
    "id": "sandbox-environment",
    "layer": "usability",
    "status": "warning",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.1,
    "detail": "Staging/testing environment referenced in llms.txt but no dedicated sandbox documented"
   },
   {
    "id": "agent-mode-view",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "?mode=agent returns same content as homepage (no dedicated agent view)"
   },
   {
    "id": "agent-plugins-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No Agent Plugins manifest (plugin.json) found in discovered repos"
   },
   {
    "id": "agent-rules-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Could not locate a public repo containing agent configs or rules. If our probes missed it, AI coding agents likely will too - link the repo from your homepage or docs so it's discoverable."
   },
   {
    "id": "agent-ua-markdown",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly."
   },
   {
    "id": "markdown-frontmatter",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "None of the 2 served markdown docs opens with a --- frontmatter block. Add title, description, canonical, and last-updated so agents get metadata without scraping."
   },
   {
    "id": "nlweb-ask",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No NLWeb-conformant /ask endpoint found via GET or POST"
   },
   {
    "id": "nlweb-schema-feeds",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No schemamap: directive in robots.txt"
   },
   {
    "id": "nlweb-streaming",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "NLWeb /ask does not support SSE streaming via GET or POST"
   },
   {
    "id": "web-bot-auth-directory",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No /.well-known/http-message-signatures-directory found"
   }
  ],
  "seen": {
   "brand-search-accuracy": "neon.com ranks #8 for \"Neon serverless database\"",
   "wikipedia-presence": "No Wikipedia article or Wikidata entity found for \"neon\" - creating a Wikipedia page and a Wikidata item with P856 = neon.com is the highest-impact step for AI search citation coverage",
   "robots-ai-policy-quality": "AI search crawlers: allowed in 18 of 18 checks (3 crawlers on 6 pages). AI training crawlers: allowed in 12 of 12 checks (2 crawlers on 6 pages), not scored.",
   "noindex-directives": "No noindex on the homepage: no robots, googlebot or bingbot meta tag and no X-Robots-Tag header hides it from search.",
   "sitemap": "Valid sitemap found at https://neon.com/sitemap.xml with multiple sitemaps entries",
   "content-no-js": "3369 chars with H1, but 1.6% content ratio is below the 5% target",
   "bot-detection": "Site accessible to 4 agent user-agents (ChatGPT-User, OAI-SearchBot, Claude-User, PerplexityBot).",
   "agent-discovery-file": "Agent Skills index (agentskills.io) found at /.well-known/agent-skills/index.json with 10 skill(s)",
   "a2a-agent-card": "No A2A agent card found at /.well-known/agent-card.json",
   "mcp-well-known-discovery": "MCP server card listed in /.well-known/ai-catalog.json",
   "robots-agent-user-policy": "No applicable crawl or usage restriction found for 3 user-triggered agents (chatgpt-user, claude-user, perplexity-user) on 1 public page: https://neon.com/. Declared policy only;",
   "llms-txt-exists": "Found the llms.txt at https://neon.com/llms.txt.",
   "llms-txt-formatting": "The llms.txt is well-formatted: 250 lines with markdown links, 28,872 characters in total.",
   "json-ld": "Rich JSON-LD identity: Organization with name, description, url, and sameAs/logo/address (1 block(s))",
   "public-api-docs": "API/docs link found on homepage and resolves: /docs",
   "metadata-completeness": "All metadata signals present: canonical URL, lang=\"en\", og:image, og:type",
   "page-token-budget": "All 8 measured pages fit an agent context budget (largest ~2K tokens)",
   "docs-auth-gate": "All 5 sampled pages are publicly readable (5 with substantive content)",
   "openapi-spec": "OpenAPI spec found at https://neon.com/api_spec/release/v2.json (version: 3.0.3)",
   "developer-portal": "Developer portal found at /docs",
   "markdown-negotiation": "Path-suffix markdown docs served with text/markdown content-type: /auth.md, /index.md",
   "agent-ua-markdown": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly.",
   "agent-crawler-reachability": "Reachable to every agent we tested - ChatGPT-User: reachable, OAI-SearchBot: reachable, Claude-User: reachable, PerplexityBot: reachable",
   "public-api": "Documented REST API detected; endpoints require authentication (API key / OAuth), which is expected for agent access. Best-of-protocols score: 7/7.",
   "oauth-support": "OAuth mentioned in documentation at https://neon.com/auth.md but no OAuth or OpenID Connect endpoint responded",
   "mcp-server": "MCP server connected via Streamable HTTP - mcp-server-neon v1.0.0 (protocol 2025-11-25)",
   "webmcp": "Imperative WebMCP API detected (document.modelContext.registerTool in script bundle /_next/static/immutable/chunks/2vl9he_7n76_5.js).",
   "cli-tool": "CLI package found on npm: neon",
   "rest-sdk-packages": "SDK packages found in npm, pypi",
   "nlweb-ask": "No NLWeb-conformant /ask endpoint found via GET or POST",
   "mpp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "x402-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "ucp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "acp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "ap2-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites"
  }
 },
 {
  "slug": "netlify",
  "name": "Netlify",
  "domain": "netlify.com",
  "finalUrl": "https://www.netlify.com/",
  "read": "2026-11-09",
  "scannedAt": "2026-11-08T00:13:03.915+00:00",
  "score": 90,
  "max": 100,
  "grade": "A",
  "category": "Infrastructure",
  "scoringVersion": null,
  "rulesUrl": null,
  "summary": "Netlify offers strong discovery and authentication support for agents, and adding WebMCP support with scoped OAuth permissions would close its biggest gaps.",
  "layers": [
   {
    "id": "discovery",
    "name": "Discovery",
    "score": 21,
    "max": 23
   },
   {
    "id": "accessibility",
    "name": "Access",
    "score": 64,
    "max": 65
   },
   {
    "id": "usability",
    "name": "Usability",
    "score": 79,
    "max": 96
   },
   {
    "id": "payments",
    "name": "Payments",
    "score": 0,
    "max": 0
   }
  ],
  "checks": {
   "ard-catalog": [
    "pass",
    1,
    1
   ],
   "ai-catalog-published": [
    "pass",
    1,
    1
   ],
   "ard-entries-valid": [
    "pass",
    2,
    2
   ],
   "ard-trust-manifest": [
    "pass",
    2,
    2
   ],
   "agentic-search-usecase": [
    "na",
    0,
    6
   ],
   "agentic-search-specific": [
    "pass",
    3,
    3
   ],
   "brand-search-accuracy": [
    "warning",
    1,
    3
   ],
   "wikipedia-presence": [
    "pass",
    4,
    4
   ],
   "robots-ai-policy-quality": [
    "pass",
    2,
    2
   ],
   "mcp-registry-listed": [
    "pass",
    1,
    1
   ],
   "npm-sdk-package": [
    "pass",
    1,
    1
   ],
   "agent-rules-repo": [
    "pass",
    1,
    1
   ],
   "agent-plugins-repo": [
    "pass",
    1,
    1
   ],
   "registry-branding": [
    "pass",
    2,
    2
   ],
   "chatgpt-app-listed": [
    "pass",
    2,
    2
   ],
   "noindex-directives": [
    "pass",
    1,
    1
   ],
   "sitemap": [
    "pass",
    2,
    2
   ],
   "content-no-js": [
    "warning",
    2,
    3
   ],
   "bot-detection": [
    "pass",
    2,
    2
   ],
   "agent-discovery-file": [
    "pass",
    2,
    2
   ],
   "agent-skills-index-v2": [
    "pass",
    2,
    2
   ],
   "a2a-agent-card": [
    "fail",
    0,
    2
   ],
   "skills-sh-listed": [
    "pass",
    1,
    1
   ],
   "pricing-md": [
    "pass",
    2,
    2
   ],
   "nlweb-schema-feeds": [
    "pass",
    1,
    1
   ],
   "mcp-well-known-discovery": [
    "pass",
    2,
    2
   ],
   "agent-mode-view": [
    "fail",
    0,
    2
   ],
   "link-headers-discovery": [
    "pass",
    1,
    1
   ],
   "markdown-url-fallback": [
    "pass",
    2,
    2
   ],
   "modular-llms-txt": [
    "fail",
    0,
    1
   ],
   "sitemap-lastmod": [
    "pass",
    1,
    1
   ],
   "robots-agent-user-policy": [
    "pass",
    2,
    2
   ],
   "llms-txt-exists": [
    "pass",
    1,
    1
   ],
   "llms-txt-formatting": [
    "pass",
    2,
    2
   ],
   "json-ld": [
    "pass",
    4,
    4
   ],
   "pricing-info": [
    "pass",
    3,
    3
   ],
   "public-api-docs": [
    "pass",
    3,
    3
   ],
   "agent-instruction": [
    "pass",
    3,
    3
   ],
   "skills-sh-quality": [
    "pass",
    2,
    2
   ],
   "json-ld-entity-linking": [
    "pass",
    2,
    2
   ],
   "metadata-completeness": [
    "pass",
    2,
    2
   ],
   "org-schema-completeness": [
    "pass",
    2,
    2
   ],
   "schema-type-breadth": [
    "pass",
    2,
    2
   ],
   "trust-anchors": [
    "pass",
    2,
    2
   ],
   "llms-txt-links-resolve": [
    "pass",
    2,
    2
   ],
   "markdown-link-alternate": [
    "pass",
    1,
    1
   ],
   "markdown-frontmatter": [
    "pass",
    1,
    1
   ],
   "redirect-hygiene": [
    "pass",
    1,
    1
   ],
   "page-token-budget": [
    "pass",
    1,
    1
   ],
   "code-fence-validity": [
    "pass",
    1,
    1
   ],
   "docs-auth-gate": [
    "pass",
    2,
    2
   ],
   "openapi-spec": [
    "pass",
    7,
    7
   ],
   "developer-portal": [
    "pass",
    6,
    6
   ],
   "api-catalog-rfc9727": [
    "pass",
    2,
    2
   ],
   "markdown-negotiation": [
    "pass",
    1,
    1
   ],
   "markdown-negotiation-vary": [
    "pass",
    1,
    1
   ],
   "agent-ua-markdown": [
    "fail",
    0,
    1
   ],
   "agent-crawler-reachability": [
    "pass",
    2,
    2
   ],
   "mcp-tool-descriptions": [
    "na",
    0,
    3
   ],
   "mcp-param-schemas": [
    "na",
    0,
    2
   ],
   "mcp-server-identity": [
    "na",
    0,
    1
   ],
   "mcp-tool-listing": [
    "na",
    0,
    3
   ],
   "mcp-tool-naming": [
    "na",
    0,
    2
   ],
   "public-api": [
    "pass",
    7,
    7
   ],
   "oauth-support": [
    "pass",
    5,
    5
   ],
   "scoped-permissions": [
    "warning",
    2,
    5
   ],
   "mcp-auth-mechanism": [
    "pass",
    2,
    2
   ],
   "mcp-oauth-metadata": [
    "pass",
    2,
    2
   ],
   "mcp-pkce-s256": [
    "pass",
    2,
    2
   ],
   "onboarding-friction": [
    "pass",
    2,
    2
   ],
   "web-bot-auth-directory": [
    "fail",
    0,
    2
   ],
   "oauth-protected-resource": [
    "pass",
    2,
    2
   ],
   "auth-md-exists": [
    "pass",
    2,
    2
   ],
   "auth-md-structure": [
    "pass",
    2,
    2
   ],
   "auth-md-walkthrough-simulation": [
    "warning",
    1,
    2
   ],
   "agent-auth-discovery-metadata": [
    "warning",
    1,
    3
   ],
   "agent-auth-www-authenticate": [
    "pass",
    1,
    1
   ],
   "agent-auth-endpoints-reachable": [
    "fail",
    0,
    2
   ],
   "pap-discovery": [
    "na",
    0,
    2
   ],
   "pap-issuer-binding": [
    "na",
    0,
    2
   ],
   "pap-auth-config": [
    "na",
    0,
    2
   ],
   "pap-interfaces": [
    "na",
    0,
    2
   ],
   "pap-endpoint-enforcement": [
    "na",
    0,
    2
   ],
   "pap-cross-protocol": [
    "na",
    0,
    2
   ],
   "mcp-server": [
    "warning",
    5,
    6
   ],
   "mcp-error-handling": [
    "na",
    0,
    2
   ],
   "mcp-transport-modern": [
    "na",
    0,
    1
   ],
   "webmcp": [
    "fail",
    0,
    5
   ],
   "rate-limit-headers": [
    "warning",
    1,
    2
   ],
   "idempotency-key-support": [
    "fail",
    0,
    3
   ],
   "json-error-responses": [
    "pass",
    4,
    4
   ],
   "api-error-model": [
    "pass",
    3,
    3
   ],
   "api-versioning-policy": [
    "warning",
    2,
    3
   ],
   "pagination-shape": [
    "warning",
    1,
    2
   ],
   "async-job-pattern": [
    "warning",
    1,
    2
   ],
   "cli-tool": [
    "pass",
    3,
    3
   ],
   "rest-sdk-packages": [
    "pass",
    3,
    3
   ],
   "nlweb-ask": [
    "fail",
    0,
    1
   ],
   "nlweb-streaming": [
    "fail",
    0,
    1
   ],
   "response-schema-coverage": [
    "pass",
    2,
    2
   ],
   "mcp-tool-annotations": [
    "na",
    0,
    2
   ],
   "mcp-server-card": [
    "pass",
    2,
    2
   ],
   "mcp-multi-surface-coverage": [
    "fail",
    0,
    2
   ],
   "sandbox-environment": [
    "pass",
    2,
    2
   ],
   "batch-endpoints": [
    "pass",
    2,
    2
   ],
   "mcp-resource-listing": [
    "na",
    0,
    3
   ],
   "graphql-error-type-definition": [
    "na",
    0,
    3
   ],
   "graphql-versioning-policy": [
    "na",
    0,
    2
   ],
   "graphql-pagination-pattern": [
    "na",
    0,
    2
   ],
   "graphql-async-job-pattern": [
    "na",
    0,
    2
   ],
   "graphql-schema-completeness": [
    "na",
    0,
    3
   ],
   "graphql-batch-mutations": [
    "na",
    0,
    2
   ],
   "agent-friendly-404": [
    "pass",
    2,
    2
   ],
   "ax-document-structure": [
    "pass",
    3,
    3
   ],
   "ax-native-controls": [
    "pass",
    3,
    3
   ],
   "ax-accessible-names": [
    "pass",
    2,
    2
   ],
   "ax-form-labeling": [
    "pass",
    2,
    2
   ],
   "ax-tree-injection-safe": [
    "pass",
    2,
    2
   ],
   "mcp-app-registry": [
    "na",
    0,
    4
   ],
   "a2ui-support": [
    "na",
    0,
    2
   ],
   "mcp-apps-ui-quality": [
    "na",
    0,
    4
   ],
   "mcp-view-domain": [
    "na",
    0,
    4
   ],
   "mcp-view-csp": [
    "na",
    0,
    4
   ],
   "api-schema-analysis": [
    "pass",
    2,
    2
   ],
   "function-calling-compat": [
    "warning",
    1,
    2
   ],
   "mcp-resource-quality": [
    "na",
    0,
    3
   ],
   "mpp-support": [
    "na",
    0,
    2
   ],
   "x402-support": [
    "na",
    0,
    2
   ],
   "ucp-support": [
    "na",
    0,
    3
   ],
   "acp-support": [
    "na",
    0,
    3
   ],
   "acp-delegate-payment": [
    "na",
    0,
    3
   ],
   "ap2-support": [
    "na",
    0,
    3
   ]
  },
  "flagged": [
   {
    "id": "webmcp",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 5,
    "tier": "required",
    "est": 2.3,
    "detail": "No WebMCP support detected - no document.modelContext / navigator.modelContext usage found (scanned 8 of 8 same-origin script bundle(s) for modelContext registrations)"
   },
   {
    "id": "brand-search-accuracy",
    "layer": "discovery",
    "status": "warning",
    "score": 1,
    "max": 3,
    "tier": "required",
    "est": 1.9,
    "detail": "netlify.com ranks #8 for \"Netlify\" (searched your brand name alone: no main product term from your homepage qualified)"
   },
   {
    "id": "idempotency-key-support",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": 1.4,
    "detail": "No REST Idempotency-Key support detected"
   },
   {
    "id": "scoped-permissions",
    "layer": "usability",
    "status": "warning",
    "score": 2,
    "max": 5,
    "tier": "recommended",
    "est": 1.4,
    "detail": "OpenAPI declares security schemes but no named OAuth scopes - agents get all-or-nothing access. Declare per-scope grants (e.g. read:*, write:*) in the spec."
   },
   {
    "id": "api-versioning-policy",
    "layer": "usability",
    "status": "warning",
    "score": 2,
    "max": 3,
    "tier": "recommended",
    "est": 0.5,
    "detail": "API versioning found (URL versioning (servers or paths)) but no deprecation or sunset policy detected - add Sunset/Deprecation headers or a deprecation policy page"
   },
   {
    "id": "async-job-pattern",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "202 Accepted responses found but no clear polling pattern (Location header, /jobs path, or job_id schema)"
   },
   {
    "id": "content-no-js",
    "layer": "accessibility",
    "status": "warning",
    "score": 2,
    "max": 3,
    "tier": "required",
    "est": 0.5,
    "detail": "Homepage: 6604 chars with H1, but 2.4% content ratio is below the 5% target. 5 of 5 sampled inner pages have text without JavaScript."
   },
   {
    "id": "function-calling-compat",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "Partial compatibility: 175/175 operationIds, 96/175 typed schemas"
   },
   {
    "id": "mcp-server",
    "layer": "usability",
    "status": "warning",
    "score": 5,
    "max": 6,
    "tier": "required",
    "est": 0.5,
    "detail": "MCP server detected at https://mcp.netlify.com/mcp; it requires authentication. Presence is verified (5/6), but Ora could not inspect its tools or verify access scopes without credentials."
   },
   {
    "id": "pagination-shape",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "Offset/page-based pagination found in OpenAPI spec - consider migrating to cursor-based pagination for agent friendliness"
   },
   {
    "id": "rate-limit-headers",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "REST rate-limit headers documented in auth docs (https://netlify.com/auth.md), but not observed on a live response."
   },
   {
    "id": "agent-auth-discovery-metadata",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 3,
    "tier": "recommended",
    "est": 0.2,
    "detail": "PRM + AS metadata both present (PRM discovered at https://mcp.netlify.com) (AS metadata fetched from advertised origin https://mcp.netlify.com) but AS metadata has no agent_auth block"
   },
   {
    "id": "agent-auth-endpoints-reachable",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.2,
    "detail": "No agent_auth endpoint URIs found in AS metadata or /auth.md prose; nothing to probe"
   },
   {
    "id": "mcp-multi-surface-coverage",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.2,
    "detail": "You run an MCP server for your product, but not one for your documentation. This bonus needs two MCP servers: one for your product so agents can take actions,"
   },
   {
    "id": "auth-md-walkthrough-simulation",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.1,
    "detail": "Static fallback: PRM + AS metadata both reachable but AS metadata lacks an agent_auth block; walkthrough cannot identify a registration template"
   },
   {
    "id": "a2a-agent-card",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0,
    "detail": "No A2A agent card found at /.well-known/agent-card.json"
   },
   {
    "id": "agent-mode-view",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "?mode=agent returns same content as homepage (no dedicated agent view)"
   },
   {
    "id": "agent-ua-markdown",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly."
   },
   {
    "id": "modular-llms-txt",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No section-level llms.txt found. Tried /docs/llms.txt, /api/llms.txt, /developers/llms.txt, /guides/llms.txt, /reference/llms.txt, /contact/llms.txt, /platform/llms.txt, /security/llms.txt, /customers/llms.txt, /enterprise/llms.txt."
   },
   {
    "id": "nlweb-ask",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No NLWeb-conformant /ask endpoint found via GET or POST"
   },
   {
    "id": "nlweb-streaming",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "NLWeb /ask does not support SSE streaming via GET or POST"
   },
   {
    "id": "web-bot-auth-directory",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No /.well-known/http-message-signatures-directory found"
   }
  ],
  "seen": {
   "brand-search-accuracy": "netlify.com ranks #8 for \"Netlify\" (searched your brand name alone: no main product term from your homepage qualified)",
   "wikipedia-presence": "Wikipedia \"Netlify\" and Wikidata Q56102498 both verified - domain confirmed on both sources",
   "robots-ai-policy-quality": "AI search crawlers: allowed in 3 of 3 checks (3 crawlers on 1 page). AI training crawlers: allowed in 2 of 2 checks (2 crawlers on 1 page), not scored.",
   "noindex-directives": "No noindex on the homepage: no robots, googlebot or bingbot meta tag and no X-Robots-Tag header hides it from search.",
   "sitemap": "Valid sitemap found at https://www.netlify.com/sitemap-index.xml with multiple sitemaps entries",
   "content-no-js": "Homepage: 6604 chars with H1, but 2.4% content ratio is below the 5% target. 5 of 5 sampled inner pages have text without JavaScript.",
   "bot-detection": "Site accessible to 4 agent user-agents (ChatGPT-User, OAI-SearchBot, Claude-User, PerplexityBot).",
   "agent-discovery-file": "Agent Skills index (agentskills.io) found at /.well-known/agent-skills/index.json with 14 skill(s)",
   "a2a-agent-card": "No A2A agent card found at /.well-known/agent-card.json",
   "mcp-well-known-discovery": "MCP server discoverable via server-card.json at /.well-known/mcp/",
   "robots-agent-user-policy": "No applicable crawl or usage restriction found for 3 user-triggered agents (chatgpt-user, claude-user, perplexity-user) on 1 public page: https://netlify.com/. Declared policy only;",
   "llms-txt-exists": "Found the llms.txt at https://docs.netlify.com/llms.txt.",
   "llms-txt-formatting": "The llms.txt is well-formatted: 35 lines with markdown links, 2,971 characters in total.",
   "json-ld": "Rich JSON-LD identity: Organization with name, description, url, and sameAs/logo/address (1 block(s))",
   "public-api-docs": "Documentation site found at https://docs.netlify.com",
   "metadata-completeness": "All metadata signals present: canonical URL, lang=\"en\", og:image, og:type",
   "page-token-budget": "All 8 measured pages fit an agent context budget (largest ~5K tokens)",
   "docs-auth-gate": "All 5 sampled pages are publicly readable (5 with substantive content)",
   "openapi-spec": "OpenAPI spec found at https://netlify.com/openapi.json (version: 3.0.0)",
   "developer-portal": "Developer portal found at https://docs.netlify.com",
   "markdown-negotiation": "Path-suffix markdown docs served with text/markdown content-type: /auth.md, /index.md",
   "agent-ua-markdown": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly.",
   "agent-crawler-reachability": "Reachable to every agent we tested - ChatGPT-User: reachable, OAI-SearchBot: reachable, Claude-User: reachable, PerplexityBot: reachable",
   "public-api": "REST API documentation found at https://docs.netlify.com/build/functions/overview.md. Best-of-protocols score: 7/7.",
   "oauth-support": "OAuth authorization server metadata at https://mcp.netlify.com/",
   "mcp-server": "MCP server detected at https://mcp.netlify.com/mcp; it requires authentication. Presence is verified (5/6), but Ora could not inspect its tools or verify access scopes without credentials.",
   "webmcp": "No WebMCP support detected - no document.modelContext / navigator.modelContext usage found (scanned 8 of 8 same-origin script bundle(s) for modelContext registrations)",
   "cli-tool": "CLI package found on npm: netlify-cli",
   "rest-sdk-packages": "SDK packages found across 3 ecosystems: npm, go, rubygems",
   "nlweb-ask": "No NLWeb-conformant /ask endpoint found via GET or POST",
   "mpp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "x402-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "ucp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "acp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "ap2-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites"
  }
 },
 {
  "slug": "newrelic",
  "name": "New Relic",
  "domain": "newrelic.com",
  "finalUrl": "https://newrelic.com/",
  "read": "2026-11-09",
  "scannedAt": "2026-11-08T01:06:22.321+00:00",
  "score": 75,
  "max": 100,
  "grade": "B",
  "category": "Infrastructure",
  "scoringVersion": null,
  "rulesUrl": null,
  "summary": "New Relic offers strong discovery and SDK access, but lacks WebMCP support and Idempotency-Key handling for agents.",
  "layers": [
   {
    "id": "discovery",
    "name": "Discovery",
    "score": 13,
    "max": 16
   },
   {
    "id": "accessibility",
    "name": "Access",
    "score": 42,
    "max": 51
   },
   {
    "id": "usability",
    "name": "Usability",
    "score": 43,
    "max": 65
   },
   {
    "id": "payments",
    "name": "Payments",
    "score": 0,
    "max": 0
   }
  ],
  "checks": {
   "ard-catalog": [
    "fail",
    0,
    1
   ],
   "ai-catalog-published": [
    "na",
    0,
    1
   ],
   "ard-entries-valid": [
    "na",
    0,
    2
   ],
   "ard-trust-manifest": [
    "na",
    0,
    2
   ],
   "agentic-search-usecase": [
    "na",
    0,
    6
   ],
   "agentic-search-specific": [
    "pass",
    3,
    3
   ],
   "brand-search-accuracy": [
    "warning",
    1,
    3
   ],
   "wikipedia-presence": [
    "pass",
    4,
    4
   ],
   "robots-ai-policy-quality": [
    "pass",
    2,
    2
   ],
   "mcp-registry-listed": [
    "pass",
    1,
    1
   ],
   "npm-sdk-package": [
    "pass",
    1,
    1
   ],
   "agent-rules-repo": [
    "pass",
    1,
    1
   ],
   "agent-plugins-repo": [
    "fail",
    0,
    1
   ],
   "registry-branding": [
    "na",
    0,
    2
   ],
   "chatgpt-app-listed": [
    "na",
    0,
    2
   ],
   "noindex-directives": [
    "pass",
    1,
    1
   ],
   "sitemap": [
    "pass",
    2,
    2
   ],
   "content-no-js": [
    "warning",
    1,
    3
   ],
   "bot-detection": [
    "pass",
    2,
    2
   ],
   "agent-discovery-file": [
    "na",
    0,
    2
   ],
   "agent-skills-index-v2": [
    "na",
    0,
    2
   ],
   "a2a-agent-card": [
    "na",
    0,
    2
   ],
   "skills-sh-listed": [
    "pass",
    1,
    1
   ],
   "pricing-md": [
    "na",
    0,
    2
   ],
   "nlweb-schema-feeds": [
    "fail",
    0,
    1
   ],
   "mcp-well-known-discovery": [
    "warning",
    1,
    2
   ],
   "agent-mode-view": [
    "fail",
    0,
    2
   ],
   "link-headers-discovery": [
    "fail",
    0,
    1
   ],
   "markdown-url-fallback": [
    "fail",
    0,
    2
   ],
   "modular-llms-txt": [
    "fail",
    0,
    1
   ],
   "sitemap-lastmod": [
    "pass",
    1,
    1
   ],
   "robots-agent-user-policy": [
    "pass",
    2,
    2
   ],
   "llms-txt-exists": [
    "pass",
    1,
    1
   ],
   "llms-txt-formatting": [
    "warning",
    1,
    2
   ],
   "json-ld": [
    "warning",
    2,
    4
   ],
   "pricing-info": [
    "pass",
    3,
    3
   ],
   "public-api-docs": [
    "pass",
    3,
    3
   ],
   "agent-instruction": [
    "pass",
    3,
    3
   ],
   "skills-sh-quality": [
    "warning",
    1,
    2
   ],
   "json-ld-entity-linking": [
    "warning",
    1,
    2
   ],
   "metadata-completeness": [
    "pass",
    2,
    2
   ],
   "org-schema-completeness": [
    "warning",
    1,
    2
   ],
   "schema-type-breadth": [
    "fail",
    0,
    2
   ],
   "trust-anchors": [
    "pass",
    2,
    2
   ],
   "llms-txt-links-resolve": [
    "pass",
    2,
    2
   ],
   "markdown-link-alternate": [
    "fail",
    0,
    1
   ],
   "markdown-frontmatter": [
    "na",
    0,
    1
   ],
   "redirect-hygiene": [
    "pass",
    1,
    1
   ],
   "page-token-budget": [
    "pass",
    1,
    1
   ],
   "code-fence-validity": [
    "pass",
    1,
    1
   ],
   "docs-auth-gate": [
    "pass",
    2,
    2
   ],
   "openapi-spec": [
    "na",
    0,
    7
   ],
   "developer-portal": [
    "pass",
    6,
    6
   ],
   "api-catalog-rfc9727": [
    "fail",
    0,
    2
   ],
   "markdown-negotiation": [
    "fail",
    0,
    1
   ],
   "markdown-negotiation-vary": [
    "fail",
    0,
    1
   ],
   "agent-ua-markdown": [
    "fail",
    0,
    1
   ],
   "agent-crawler-reachability": [
    "pass",
    2,
    2
   ],
   "mcp-tool-descriptions": [
    "na",
    0,
    3
   ],
   "mcp-param-schemas": [
    "na",
    0,
    2
   ],
   "mcp-server-identity": [
    "na",
    0,
    1
   ],
   "mcp-tool-listing": [
    "na",
    0,
    3
   ],
   "mcp-tool-naming": [
    "na",
    0,
    2
   ],
   "public-api": [
    "pass",
    7,
    7
   ],
   "oauth-support": [
    "pass",
    5,
    5
   ],
   "scoped-permissions": [
    "na",
    0,
    5
   ],
   "mcp-auth-mechanism": [
    "warning",
    1,
    2
   ],
   "mcp-oauth-metadata": [
    "fail",
    0,
    2
   ],
   "mcp-pkce-s256": [
    "fail",
    0,
    2
   ],
   "onboarding-friction": [
    "warning",
    1,
    2
   ],
   "web-bot-auth-directory": [
    "na",
    0,
    2
   ],
   "oauth-protected-resource": [
    "pass",
    2,
    2
   ],
   "auth-md-exists": [
    "fail",
    0,
    2
   ],
   "auth-md-structure": [
    "fail",
    0,
    2
   ],
   "auth-md-walkthrough-simulation": [
    "na",
    0,
    2
   ],
   "agent-auth-discovery-metadata": [
    "warning",
    1,
    3
   ],
   "agent-auth-www-authenticate": [
    "pass",
    1,
    1
   ],
   "agent-auth-endpoints-reachable": [
    "na",
    0,
    2
   ],
   "pap-discovery": [
    "na",
    0,
    2
   ],
   "pap-issuer-binding": [
    "na",
    0,
    2
   ],
   "pap-auth-config": [
    "na",
    0,
    2
   ],
   "pap-interfaces": [
    "na",
    0,
    2
   ],
   "pap-endpoint-enforcement": [
    "na",
    0,
    2
   ],
   "pap-cross-protocol": [
    "na",
    0,
    2
   ],
   "mcp-server": [
    "warning",
    5,
    6
   ],
   "mcp-error-handling": [
    "na",
    0,
    2
   ],
   "mcp-transport-modern": [
    "na",
    0,
    1
   ],
   "webmcp": [
    "fail",
    0,
    5
   ],
   "rate-limit-headers": [
    "fail",
    0,
    2
   ],
   "idempotency-key-support": [
    "fail",
    0,
    3
   ],
   "json-error-responses": [
    "pass",
    4,
    4
   ],
   "api-error-model": [
    "na",
    0,
    3
   ],
   "api-versioning-policy": [
    "na",
    0,
    3
   ],
   "pagination-shape": [
    "na",
    0,
    2
   ],
   "async-job-pattern": [
    "na",
    0,
    2
   ],
   "cli-tool": [
    "pass",
    3,
    3
   ],
   "rest-sdk-packages": [
    "pass",
    3,
    3
   ],
   "nlweb-ask": [
    "pass",
    1,
    1
   ],
   "nlweb-streaming": [
    "fail",
    0,
    1
   ],
   "response-schema-coverage": [
    "na",
    0,
    2
   ],
   "mcp-tool-annotations": [
    "na",
    0,
    2
   ],
   "mcp-server-card": [
    "fail",
    0,
    2
   ],
   "mcp-multi-surface-coverage": [
    "fail",
    0,
    2
   ],
   "sandbox-environment": [
    "warning",
    0,
    2
   ],
   "batch-endpoints": [
    "na",
    0,
    2
   ],
   "mcp-resource-listing": [
    "na",
    0,
    3
   ],
   "graphql-error-type-definition": [
    "fail",
    0,
    3
   ],
   "graphql-versioning-policy": [
    "fail",
    0,
    2
   ],
   "graphql-pagination-pattern": [
    "fail",
    0,
    2
   ],
   "graphql-async-job-pattern": [
    "fail",
    0,
    2
   ],
   "graphql-schema-completeness": [
    "na",
    0,
    3
   ],
   "graphql-batch-mutations": [
    "na",
    0,
    2
   ],
   "agent-friendly-404": [
    "warning",
    1,
    2
   ],
   "ax-document-structure": [
    "na",
    0,
    3
   ],
   "ax-native-controls": [
    "pass",
    3,
    3
   ],
   "ax-accessible-names": [
    "pass",
    2,
    2
   ],
   "ax-form-labeling": [
    "pass",
    2,
    2
   ],
   "ax-tree-injection-safe": [
    "pass",
    2,
    2
   ],
   "mcp-app-registry": [
    "na",
    0,
    4
   ],
   "a2ui-support": [
    "na",
    0,
    2
   ],
   "mcp-apps-ui-quality": [
    "na",
    0,
    4
   ],
   "mcp-view-domain": [
    "na",
    0,
    4
   ],
   "mcp-view-csp": [
    "na",
    0,
    4
   ],
   "api-schema-analysis": [
    "na",
    0,
    2
   ],
   "function-calling-compat": [
    "na",
    0,
    2
   ],
   "mcp-resource-quality": [
    "na",
    0,
    3
   ],
   "mpp-support": [
    "na",
    0,
    2
   ],
   "x402-support": [
    "na",
    0,
    2
   ],
   "ucp-support": [
    "na",
    0,
    3
   ],
   "acp-support": [
    "na",
    0,
    3
   ],
   "acp-delegate-payment": [
    "na",
    0,
    3
   ],
   "ap2-support": [
    "na",
    0,
    3
   ]
  },
  "flagged": [
   {
    "id": "webmcp",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 5,
    "tier": "required",
    "est": 3.4,
    "detail": "No WebMCP support detected - no document.modelContext / navigator.modelContext usage found (scanned 14 of 14 same-origin script bundle(s) for modelContext registrations)"
   },
   {
    "id": "brand-search-accuracy",
    "layer": "discovery",
    "status": "warning",
    "score": 1,
    "max": 3,
    "tier": "required",
    "est": 2.8,
    "detail": "newrelic.com ranks #8 for \"New Relic\" (searched your brand name alone: no main product term from your homepage qualified)"
   },
   {
    "id": "graphql-error-type-definition",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": 2.1,
    "detail": "GraphQL introspection auth-gated and no typed graphql error model documentation found on GraphQL-tagged pages"
   },
   {
    "id": "idempotency-key-support",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": 2.1,
    "detail": "GraphQL introspection auth-gated and no idempotency documentation found on GraphQL-tagged pages"
   },
   {
    "id": "ard-catalog",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 1.4,
    "detail": "No /.well-known/ard.json, no same-site rel=\"ard\" link, and no legacy /.well-known/ai-catalog.json"
   },
   {
    "id": "graphql-async-job-pattern",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.4,
    "detail": "GraphQL introspection auth-gated and no graphql async-job pattern documentation found on GraphQL-tagged pages"
   },
   {
    "id": "graphql-pagination-pattern",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.4,
    "detail": "GraphQL introspection auth-gated and no graphql pagination pattern documentation found on GraphQL-tagged pages"
   },
   {
    "id": "graphql-versioning-policy",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.4,
    "detail": "GraphQL introspection auth-gated and no graphql versioning / deprecation policy documentation found on GraphQL-tagged pages"
   },
   {
    "id": "rate-limit-headers",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.4,
    "detail": "GraphQL introspection auth-gated and no header convention documented on GraphQL-tagged pages"
   },
   {
    "id": "content-no-js",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 3,
    "tier": "required",
    "est": 1.3,
    "detail": "Homepage: 10191 chars of readable text, but no H1 tag. 5 of 5 sampled inner pages have text without JavaScript."
   },
   {
    "id": "json-ld",
    "layer": "accessibility",
    "status": "warning",
    "score": 2,
    "max": 4,
    "tier": "required",
    "est": 1.3,
    "detail": "JSON-LD Organization found - missing description on this entity"
   },
   {
    "id": "schema-type-breadth",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.3,
    "detail": "No extended schema types found - AI can only answer basic questions about this entity"
   },
   {
    "id": "agent-friendly-404",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.7,
    "detail": "The nonexistent path https://newrelic.com/__ora-404-probe-n4f2oepy correctly returns HTTP 404. Partial credit: no Markdown error body was detected."
   },
   {
    "id": "json-ld-entity-linking",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.7,
    "detail": "Entity linking to linkedin.com - add more authority profiles (Wikipedia, Wikidata, LinkedIn, GitHub)"
   },
   {
    "id": "llms-txt-formatting",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.7,
    "detail": "The llms.txt at https://newrelic.com/llms.txt is well-formatted with markdown links, but at 43,753 characters it exceeds the 30,000-character recommendation for a navigation index."
   },
   {
    "id": "mcp-server",
    "layer": "usability",
    "status": "warning",
    "score": 5,
    "max": 6,
    "tier": "required",
    "est": 0.7,
    "detail": "MCP server detected at https://mcp.newrelic.com/mcp; it requires authentication. Presence is verified (5/6), but Ora could not inspect its tools or verify access scopes without credentials."
   },
   {
    "id": "onboarding-friction",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.7,
    "detail": "Onboarding signals described but not verified live: free tier available, self-serve key generation, sandbox/test environment, zero-auth access"
   },
   {
    "id": "org-schema-completeness",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.7,
    "detail": "Organization schema found but missing: address"
   },
   {
    "id": "agent-auth-discovery-metadata",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 3,
    "tier": "recommended",
    "est": 0.4,
    "detail": "PRM + AS metadata both present (PRM discovered at https://mcp.newrelic.com) (AS metadata fetched from advertised origin https://oauth2.service.newrelic.com) but AS metadata has no agent_auth block"
   },
   {
    "id": "auth-md-exists",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.4,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "auth-md-structure",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.4,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "mcp-multi-surface-coverage",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.4,
    "detail": "We found an MCP candidate for your product at https://mcp.newrelic.com/mcp, but could not verify that agents can use it. This bonus needs two MCP servers: one for your product so agents can take actions,"
   },
   {
    "id": "mcp-oauth-metadata",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.4,
    "detail": "OAuth protected-resource metadata was found for https://mcp.newrelic.com/mcp, but its resource field identifies https://mcp.newrelic.com/mcp/. The resource must exactly match the requested endpoint (RFC 9728)."
   },
   {
    "id": "mcp-pkce-s256",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.4,
    "detail": "No code_challenge_methods_supported in OAuth metadata for product MCP"
   },
   {
    "id": "mcp-server-card",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.4,
    "detail": "No MCP server card found for https://mcp.newrelic.com/mcp (checked /.well-known/mcp/server-card.json, the site's ai-catalog.json, servers[].card in mcp.json, and <server>/server-card)"
   },
   {
    "id": "sandbox-environment",
    "layer": "usability",
    "status": "warning",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.4,
    "detail": "Testing/staging environment mentioned at https://docs.newrelic.com but no dedicated sandbox found"
   },
   {
    "id": "api-catalog-rfc9727",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.2,
    "detail": "No /.well-known/api-catalog found (RFC 9727)"
   },
   {
    "id": "mcp-auth-mechanism",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.2,
    "detail": "product MCP requires authentication but no standard OAuth discovery metadata"
   },
   {
    "id": "link-headers-discovery",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 0.1,
    "detail": "Link header present but no agent-relevant rel values (sitemap, describedby, alternate, service-desc)"
   },
   {
    "id": "markdown-negotiation-vary",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.1,
    "detail": "Homepage https://newrelic.com does not meet the Markdown negotiation requirements: Accept: text/markdown returned text/html; charset=utf-8; Vary header missing Accept (got \"none\")"
   },
   {
    "id": "mcp-well-known-discovery",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.1,
    "detail": "MCP server at https://mcp.newrelic.com/mcp - list its server card, hosted on your own domain, in /.well-known/ai-catalog.json so MCP clients can discover it"
   },
   {
    "id": "agent-mode-view",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "?mode=agent returns same content as homepage (no dedicated agent view)"
   },
   {
    "id": "agent-plugins-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No Agent Plugins manifest (plugin.json) found in discovered repos"
   },
   {
    "id": "agent-ua-markdown",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly."
   },
   {
    "id": "markdown-link-alternate",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No sampled page advertises a markdown alternate. Add <link rel=\"alternate\" type=\"text/markdown\" href=\"...\"> (or the equivalent Link response header) pointing at a markdown twin of the page."
   },
   {
    "id": "markdown-negotiation",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Missing markdown content negotiation. Homepage returned text/html when probed with Accept: text/markdown (expected text/markdown), and none of the well-known root paths (/llms.md, /auth.md, /agents.md, /developers.md, /api.md, /index.md,"
   },
   {
    "id": "markdown-url-fallback",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "Homepage does not support the .md suffix. Probed https://newrelic.com/index.md and it did not return markdown (expected text/markdown content-type or a heading-led non-HTML body)."
   },
   {
    "id": "modular-llms-txt",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No section-level llms.txt found. Tried /docs/llms.txt, /api/llms.txt, /developers/llms.txt, /guides/llms.txt, /reference/llms.txt, /platform/llms.txt, /instant-observability/llms.txt, /pricing/llms.txt, /request-pricing-standard/llms.txt,"
   },
   {
    "id": "nlweb-schema-feeds",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No schemamap: directive in robots.txt"
   },
   {
    "id": "nlweb-streaming",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "NLWeb /ask requires authentication - cannot verify streaming"
   },
   {
    "id": "skills-sh-quality",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "Skills.sh presence exists but limited - 32 installs (goal: 200+)"
   }
  ],
  "seen": {
   "brand-search-accuracy": "newrelic.com ranks #8 for \"New Relic\" (searched your brand name alone: no main product term from your homepage qualified)",
   "wikipedia-presence": "Wikipedia \"New Relic\" and Wikidata Q7011152 both verified - domain confirmed on both sources",
   "robots-ai-policy-quality": "AI search crawlers: allowed in 18 of 18 checks (3 crawlers on 6 pages). AI training crawlers: allowed in 12 of 12 checks (2 crawlers on 6 pages), not scored.",
   "noindex-directives": "No noindex on the homepage: no robots, googlebot or bingbot meta tag and no X-Robots-Tag header hides it from search.",
   "sitemap": "Valid sitemap found at https://newrelic.com/sitemap.xml with 2655 entries",
   "content-no-js": "Homepage: 10191 chars of readable text, but no H1 tag. 5 of 5 sampled inner pages have text without JavaScript.",
   "bot-detection": "Site accessible to 4 agent user-agents (ChatGPT-User, OAI-SearchBot, Claude-User, PerplexityBot).",
   "agent-discovery-file": "Can't verify: a bot shield answered our request to newrelic.com/.well-known/agent-skills/index.json (HTTP 403); newrelic.com/.well-known/agent-skills (HTTP 403) instead of the site. That is not counted against the site.",
   "a2a-agent-card": "Can't verify: a bot shield answered our request to newrelic.com/.well-known/agent-card.json (HTTP 403) instead of the site. That is not counted against the site.",
   "mcp-well-known-discovery": "MCP server at https://mcp.newrelic.com/mcp - list its server card, hosted on your own domain, in /.well-known/ai-catalog.json so MCP clients can discover it",
   "robots-agent-user-policy": "No applicable crawl or usage restriction found for 3 user-triggered agents (chatgpt-user, claude-user, perplexity-user) on 1 public page: https://newrelic.com/. Declared policy only;",
   "llms-txt-exists": "Found the llms.txt at https://docs.newrelic.com/llms.txt.",
   "llms-txt-formatting": "The llms.txt at https://newrelic.com/llms.txt is well-formatted with markdown links, but at 43,753 characters it exceeds the 30,000-character recommendation for a navigation index.",
   "json-ld": "JSON-LD Organization found - missing description on this entity",
   "public-api-docs": "Documentation site found at https://docs.newrelic.com",
   "metadata-completeness": "All metadata signals present: canonical URL, lang=\"en\", og:image, og:type",
   "page-token-budget": "All 6 measured pages fit an agent context budget (largest ~5K tokens)",
   "docs-auth-gate": "All 5 sampled pages are publicly readable (5 with substantive content)",
   "openapi-spec": "Can't verify: a bot shield answered our request to newrelic.com/.well-known/openapi.json (HTTP 403) instead of the site. That is not counted against the site.",
   "developer-portal": "Developer portal found at /docs",
   "markdown-negotiation": "Missing markdown content negotiation. Homepage returned text/html when probed with Accept: text/markdown (expected text/markdown), and none of the well-known root paths (/llms.md, /auth.md, /agents.md, /developers.md,",
   "agent-ua-markdown": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly.",
   "agent-crawler-reachability": "Reachable to every agent we tested - ChatGPT-User: reachable, OAI-SearchBot: reachable, Claude-User: reachable, PerplexityBot: reachable",
   "public-api": "REST API documentation found at https://docs.newrelic.com/docs/new-relic-solutions/get-started/intro-new-relic.md. GraphQL endpoint at https://api.newrelic.com/graphql is reachable;",
   "oauth-support": "OpenID Connect discovery endpoint found at https://mcp.newrelic.com",
   "mcp-server": "MCP server detected at https://mcp.newrelic.com/mcp; it requires authentication. Presence is verified (5/6), but Ora could not inspect its tools or verify access scopes without credentials.",
   "webmcp": "No WebMCP support detected - no document.modelContext / navigator.modelContext usage found (scanned 14 of 14 same-origin script bundle(s) for modelContext registrations)",
   "cli-tool": "CLI package found on npm: newrelic",
   "rest-sdk-packages": "SDK packages found across 4 ecosystems: npm, pypi, go, rubygems",
   "nlweb-ask": "NLWeb /ask endpoint exists but requires authentication (HTTP 403, via POST)",
   "mpp-support": "Can't verify: a bot shield answered our request to newrelic.com/.well-known/ucp (HTTP 403); newrelic.com/.well-known/oauth-authorization-server (HTTP 403);",
   "x402-support": "Can't verify: a bot shield answered our request to newrelic.com/.well-known/ucp (HTTP 403); newrelic.com/.well-known/oauth-authorization-server (HTTP 403);",
   "ucp-support": "Can't verify: a bot shield answered our request to newrelic.com/.well-known/ucp (HTTP 403); newrelic.com/.well-known/oauth-authorization-server (HTTP 403);",
   "acp-support": "Can't verify: a bot shield answered our request to newrelic.com/.well-known/ucp (HTTP 403); newrelic.com/.well-known/oauth-authorization-server (HTTP 403);",
   "ap2-support": "Can't verify: a bot shield answered our request to newrelic.com/.well-known/ucp (HTTP 403); newrelic.com/.well-known/oauth-authorization-server (HTTP 403);"
  }
 },
 {
  "slug": "notion",
  "name": "Notion",
  "domain": "notion.so",
  "finalUrl": "https://www.notion.com/",
  "read": "2026-11-09",
  "scannedAt": "2026-11-09T11:23:11.498+00:00",
  "score": 68,
  "max": 100,
  "grade": "C",
  "category": "Productivity",
  "scoringVersion": 2,
  "rulesUrl": "https://ora.ai/api/ranker/releases/2/rules",
  "summary": "Notion offers strong developer access and a discoverable SDK and ChatGPT app, but lacks WebMCP support for agents to invoke its in-page actions.",
  "layers": [
   {
    "id": "discovery",
    "name": "Discovery",
    "score": 11,
    "max": 15
   },
   {
    "id": "accessibility",
    "name": "Access",
    "score": 47,
    "max": 56
   },
   {
    "id": "usability",
    "name": "Usability",
    "score": 42,
    "max": 78
   },
   {
    "id": "payments",
    "name": "Payments",
    "score": 0,
    "max": 0
   }
  ],
  "checks": {
   "ard-catalog": [
    "warning",
    0,
    1
   ],
   "ai-catalog-published": [
    "warning",
    0,
    1
   ],
   "ard-entries-valid": [
    "warning",
    0,
    2
   ],
   "ard-trust-manifest": [
    "fail",
    0,
    2
   ],
   "agentic-search-usecase": [
    "na",
    0,
    6
   ],
   "agentic-search-specific": [
    "pass",
    3,
    3
   ],
   "brand-search-accuracy": [
    "fail",
    0,
    3
   ],
   "wikipedia-presence": [
    "warning",
    2,
    4
   ],
   "robots-ai-policy-quality": [
    "pass",
    2,
    2
   ],
   "mcp-registry-listed": [
    "na",
    0,
    1
   ],
   "npm-sdk-package": [
    "pass",
    1,
    1
   ],
   "agent-rules-repo": [
    "pass",
    1,
    1
   ],
   "agent-plugins-repo": [
    "fail",
    0,
    1
   ],
   "registry-branding": [
    "na",
    0,
    2
   ],
   "chatgpt-app-listed": [
    "pass",
    2,
    2
   ],
   "noindex-directives": [
    "pass",
    1,
    1
   ],
   "sitemap": [
    "pass",
    2,
    2
   ],
   "content-no-js": [
    "warning",
    2,
    3
   ],
   "bot-detection": [
    "pass",
    2,
    2
   ],
   "agent-discovery-file": [
    "fail",
    0,
    2
   ],
   "agent-skills-index-v2": [
    "na",
    0,
    2
   ],
   "a2a-agent-card": [
    "fail",
    0,
    2
   ],
   "skills-sh-listed": [
    "pass",
    1,
    1
   ],
   "pricing-md": [
    "fail",
    0,
    2
   ],
   "nlweb-schema-feeds": [
    "fail",
    0,
    1
   ],
   "mcp-well-known-discovery": [
    "fail",
    0,
    2
   ],
   "agent-mode-view": [
    "fail",
    0,
    2
   ],
   "link-headers-discovery": [
    "fail",
    0,
    1
   ],
   "markdown-url-fallback": [
    "fail",
    0,
    2
   ],
   "modular-llms-txt": [
    "fail",
    0,
    1
   ],
   "sitemap-lastmod": [
    "fail",
    0,
    1
   ],
   "robots-agent-user-policy": [
    "pass",
    2,
    2
   ],
   "llms-txt-exists": [
    "pass",
    1,
    1
   ],
   "llms-txt-formatting": [
    "warning",
    1,
    2
   ],
   "json-ld": [
    "pass",
    4,
    4
   ],
   "pricing-info": [
    "pass",
    3,
    3
   ],
   "public-api-docs": [
    "pass",
    3,
    3
   ],
   "agent-instruction": [
    "pass",
    3,
    3
   ],
   "skills-sh-quality": [
    "pass",
    2,
    2
   ],
   "json-ld-entity-linking": [
    "warning",
    1,
    2
   ],
   "metadata-completeness": [
    "pass",
    2,
    2
   ],
   "org-schema-completeness": [
    "warning",
    1,
    2
   ],
   "schema-type-breadth": [
    "fail",
    0,
    2
   ],
   "trust-anchors": [
    "warning",
    1,
    2
   ],
   "llms-txt-links-resolve": [
    "pass",
    2,
    2
   ],
   "markdown-link-alternate": [
    "fail",
    0,
    1
   ],
   "markdown-frontmatter": [
    "na",
    0,
    1
   ],
   "redirect-hygiene": [
    "pass",
    1,
    1
   ],
   "page-token-budget": [
    "pass",
    1,
    1
   ],
   "code-fence-validity": [
    "pass",
    1,
    1
   ],
   "docs-auth-gate": [
    "na",
    0,
    2
   ],
   "openapi-spec": [
    "pass",
    7,
    7
   ],
   "developer-portal": [
    "pass",
    6,
    6
   ],
   "api-catalog-rfc9727": [
    "fail",
    0,
    2
   ],
   "markdown-negotiation": [
    "fail",
    0,
    1
   ],
   "markdown-negotiation-vary": [
    "fail",
    0,
    1
   ],
   "agent-ua-markdown": [
    "fail",
    0,
    1
   ],
   "agent-crawler-reachability": [
    "pass",
    2,
    2
   ],
   "mcp-tool-descriptions": [
    "na",
    0,
    3
   ],
   "mcp-param-schemas": [
    "na",
    0,
    2
   ],
   "mcp-server-identity": [
    "na",
    0,
    1
   ],
   "mcp-tool-listing": [
    "na",
    0,
    3
   ],
   "mcp-tool-naming": [
    "na",
    0,
    2
   ],
   "public-api": [
    "pass",
    7,
    7
   ],
   "oauth-support": [
    "pass",
    5,
    5
   ],
   "scoped-permissions": [
    "warning",
    2,
    5
   ],
   "mcp-auth-mechanism": [
    "na",
    0,
    2
   ],
   "mcp-oauth-metadata": [
    "na",
    0,
    2
   ],
   "mcp-pkce-s256": [
    "na",
    0,
    2
   ],
   "onboarding-friction": [
    "pass",
    2,
    2
   ],
   "web-bot-auth-directory": [
    "fail",
    0,
    2
   ],
   "oauth-protected-resource": [
    "fail",
    0,
    2
   ],
   "auth-md-exists": [
    "fail",
    0,
    2
   ],
   "auth-md-structure": [
    "fail",
    0,
    2
   ],
   "auth-md-walkthrough-simulation": [
    "na",
    0,
    2
   ],
   "agent-auth-discovery-metadata": [
    "fail",
    0,
    3
   ],
   "agent-auth-www-authenticate": [
    "fail",
    0,
    1
   ],
   "agent-auth-endpoints-reachable": [
    "fail",
    0,
    2
   ],
   "pap-discovery": [
    "na",
    0,
    2
   ],
   "pap-issuer-binding": [
    "na",
    0,
    2
   ],
   "pap-auth-config": [
    "na",
    0,
    2
   ],
   "pap-interfaces": [
    "na",
    0,
    2
   ],
   "pap-endpoint-enforcement": [
    "na",
    0,
    2
   ],
   "pap-cross-protocol": [
    "na",
    0,
    2
   ],
   "mcp-server": [
    "warning",
    5,
    6
   ],
   "mcp-error-handling": [
    "na",
    0,
    2
   ],
   "mcp-transport-modern": [
    "na",
    0,
    1
   ],
   "webmcp": [
    "fail",
    0,
    5
   ],
   "rate-limit-headers": [
    "fail",
    0,
    2
   ],
   "idempotency-key-support": [
    "fail",
    0,
    3
   ],
   "json-error-responses": [
    "fail",
    0,
    4
   ],
   "api-error-model": [
    "na",
    0,
    3
   ],
   "api-versioning-policy": [
    "na",
    0,
    3
   ],
   "pagination-shape": [
    "na",
    0,
    2
   ],
   "async-job-pattern": [
    "na",
    0,
    2
   ],
   "cli-tool": [
    "pass",
    3,
    3
   ],
   "rest-sdk-packages": [
    "warning",
    2,
    3
   ],
   "nlweb-ask": [
    "pass",
    1,
    1
   ],
   "nlweb-streaming": [
    "fail",
    0,
    1
   ],
   "response-schema-coverage": [
    "na",
    0,
    2
   ],
   "mcp-tool-annotations": [
    "na",
    0,
    2
   ],
   "mcp-server-card": [
    "fail",
    0,
    2
   ],
   "mcp-multi-surface-coverage": [
    "fail",
    0,
    2
   ],
   "sandbox-environment": [
    "pass",
    2,
    2
   ],
   "batch-endpoints": [
    "na",
    0,
    2
   ],
   "mcp-resource-listing": [
    "na",
    0,
    3
   ],
   "graphql-error-type-definition": [
    "fail",
    0,
    3
   ],
   "graphql-versioning-policy": [
    "fail",
    0,
    2
   ],
   "graphql-pagination-pattern": [
    "fail",
    0,
    2
   ],
   "graphql-async-job-pattern": [
    "fail",
    0,
    2
   ],
   "graphql-schema-completeness": [
    "na",
    0,
    3
   ],
   "graphql-batch-mutations": [
    "na",
    0,
    2
   ],
   "agent-friendly-404": [
    "warning",
    1,
    2
   ],
   "ax-document-structure": [
    "pass",
    3,
    3
   ],
   "ax-native-controls": [
    "pass",
    3,
    3
   ],
   "ax-accessible-names": [
    "pass",
    2,
    2
   ],
   "ax-form-labeling": [
    "pass",
    2,
    2
   ],
   "ax-tree-injection-safe": [
    "pass",
    2,
    2
   ],
   "mcp-app-registry": [
    "fail",
    0,
    4
   ],
   "a2ui-support": [
    "fail",
    0,
    2
   ],
   "mcp-apps-ui-quality": [
    "na",
    0,
    4
   ],
   "mcp-view-domain": [
    "na",
    0,
    4
   ],
   "mcp-view-csp": [
    "na",
    0,
    4
   ],
   "api-schema-analysis": [
    "fail",
    0,
    2
   ],
   "function-calling-compat": [
    "warning",
    1,
    2
   ],
   "mcp-resource-quality": [
    "na",
    0,
    3
   ],
   "mpp-support": [
    "na",
    0,
    2
   ],
   "x402-support": [
    "na",
    0,
    2
   ],
   "ucp-support": [
    "na",
    0,
    3
   ],
   "acp-support": [
    "na",
    0,
    3
   ],
   "acp-delegate-payment": [
    "na",
    0,
    3
   ],
   "ap2-support": [
    "na",
    0,
    3
   ]
  },
  "flagged": [
   {
    "id": "brand-search-accuracy",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "required",
    "est": 4.4,
    "detail": "notion.so was not in the top 10 for \"Notion\" (searched your brand name alone: no main product term from your homepage qualified)"
   },
   {
    "id": "webmcp",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 5,
    "tier": "required",
    "est": 2.8,
    "detail": "No WebMCP support detected - no document.modelContext / navigator.modelContext usage found (scanned 37 of 37 same-origin script bundle(s) for modelContext registrations)"
   },
   {
    "id": "json-error-responses",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 4,
    "tier": "required",
    "est": 2.3,
    "detail": "API does not return JSON error responses (or no API detected)"
   },
   {
    "id": "mcp-app-registry",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 4,
    "tier": "recommended",
    "est": 2.3,
    "detail": "No MCP Apps support detected - this product has an in-agent UI surface but exposes no ui:// resources or tool UI metadata for agents to render."
   },
   {
    "id": "graphql-error-type-definition",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": 1.7,
    "detail": "GraphQL introspection auth-gated and no typed graphql error model documentation found on GraphQL-tagged pages"
   },
   {
    "id": "idempotency-key-support",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": 1.7,
    "detail": "GraphQL introspection auth-gated and no idempotency documentation found on GraphQL-tagged pages"
   },
   {
    "id": "scoped-permissions",
    "layer": "usability",
    "status": "warning",
    "score": 2,
    "max": 5,
    "tier": "recommended",
    "est": 1.7,
    "detail": "Scoped permissions described at https://developers.notion.com, but no machine-readable scope declaration found (OpenAPI oauth2 scopes or RFC 9728 scopes_supported)"
   },
   {
    "id": "ard-catalog",
    "layer": "discovery",
    "status": "warning",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 1.5,
    "detail": "/.well-known/ai-catalog.json present but invalid: entry[0] (urn:air:notion.com:mcp:notion): missing displayName - served at the legacy path; the canonical ARD path is /.well-known/ard.json (ARD v0.91)"
   },
   {
    "id": "agent-discovery-file",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 1.2,
    "detail": "No agent discovery file found"
   },
   {
    "id": "schema-type-breadth",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.2,
    "detail": "No extended schema types found - AI can only answer basic questions about this entity"
   },
   {
    "id": "api-schema-analysis",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.1,
    "detail": "GraphQL: introspection auth-gated and no schema evidence in docs"
   },
   {
    "id": "graphql-async-job-pattern",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.1,
    "detail": "GraphQL introspection auth-gated and no graphql async-job pattern documentation found on GraphQL-tagged pages"
   },
   {
    "id": "graphql-pagination-pattern",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.1,
    "detail": "GraphQL introspection auth-gated and no graphql pagination pattern documentation found on GraphQL-tagged pages"
   },
   {
    "id": "graphql-versioning-policy",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.1,
    "detail": "GraphQL introspection auth-gated and no graphql versioning / deprecation policy documentation found on GraphQL-tagged pages"
   },
   {
    "id": "rate-limit-headers",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.1,
    "detail": "GraphQL introspection auth-gated and no header convention documented on GraphQL-tagged pages"
   },
   {
    "id": "agent-auth-discovery-metadata",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": 0.8,
    "detail": "Neither /.well-known/oauth-protected-resource nor /.well-known/oauth-authorization-server found. Probed: notion.so, api.notion.so."
   },
   {
    "id": "ard-entries-valid",
    "layer": "discovery",
    "status": "warning",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.7,
    "detail": "0/1 entries valid: entry[0] (urn:air:notion.com:mcp:notion): missing displayName"
   },
   {
    "id": "ard-trust-manifest",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.7,
    "detail": "No entry carries a trustManifest"
   },
   {
    "id": "wikipedia-presence",
    "layer": "discovery",
    "status": "warning",
    "score": 2,
    "max": 4,
    "tier": "recommended",
    "est": 0.7,
    "detail": "Wikidata Q60747998 (Notion) verified - draft a Wikipedia page with cited references to complete knowledge graph coverage"
   },
   {
    "id": "agent-friendly-404",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "Nonexistent paths return HTTP 401 instead of 404/410 - agents get a non-200 signal but not the standard not-found semantics"
   },
   {
    "id": "content-no-js",
    "layer": "accessibility",
    "status": "warning",
    "score": 2,
    "max": 3,
    "tier": "required",
    "est": 0.6,
    "detail": "Homepage: 1242 chars with H1, but 1.2% content ratio is below the 5% target. No inner pages checked: the scan found none to sample."
   },
   {
    "id": "function-calling-compat",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "MCP manifest found but no OpenAPI spec for function calling"
   },
   {
    "id": "json-ld-entity-linking",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "Entity linking to linkedin.com - add more authority profiles (Wikipedia, Wikidata, LinkedIn, GitHub)"
   },
   {
    "id": "llms-txt-formatting",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "The llms.txt contains markdown links and has 57 lines, but it doesn't start with a markdown heading."
   },
   {
    "id": "mcp-server",
    "layer": "usability",
    "status": "warning",
    "score": 5,
    "max": 6,
    "tier": "required",
    "est": 0.6,
    "detail": "First-party MCP server published by product org (npm, @notionhq/notion-mcp-server, 24608 score). Add live handshake at /.well-known/mcp for full credit."
   },
   {
    "id": "org-schema-completeness",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "Organization schema found but missing: contactPoint, address"
   },
   {
    "id": "rest-sdk-packages",
    "layer": "usability",
    "status": "warning",
    "score": 2,
    "max": 3,
    "tier": "recommended",
    "est": 0.6,
    "detail": "SDK found in npm, additional SDKs mentioned at https://developers.notion.com"
   },
   {
    "id": "trust-anchors",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "required",
    "est": 0.6,
    "detail": "About, Privacy pages verified - missing: Contact"
   },
   {
    "id": "agent-auth-endpoints-reachable",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "No agent_auth endpoint URIs found in AS metadata or /auth.md prose; nothing to probe"
   },
   {
    "id": "auth-md-exists",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.5,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "auth-md-structure",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "mcp-multi-surface-coverage",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "This bonus needs two MCP servers: one for your product so agents can take actions, and a separate one for your documentation so agents can answer questions from your docs."
   },
   {
    "id": "mcp-server-card",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "No MCP server card found (checked /.well-known/mcp/server-card.json, the site's ai-catalog.json, servers[].card in mcp.json, and <server>/server-card)"
   },
   {
    "id": "oauth-protected-resource",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.5,
    "detail": "No /.well-known/oauth-protected-resource found (RFC 9728)"
   },
   {
    "id": "ai-catalog-published",
    "layer": "discovery",
    "status": "warning",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.4,
    "detail": "/.well-known/ai-catalog.json present but invalid: entry[0] (urn:air:notion.com:mcp:notion): missing displayName"
   },
   {
    "id": "agent-auth-www-authenticate",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.3,
    "detail": "No 401 with WWW-Authenticate: Bearer resource_metadata=... found. Probed [https://notion.so/api, https://notion.so/api/v1, https://notion.so/v1, https://notion.so/v2, https://notion.so/agent/identity, https://notion.so/agent/auth,"
   },
   {
    "id": "a2a-agent-card",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.2,
    "detail": "No A2A agent card found at /.well-known/agent-card.json"
   },
   {
    "id": "api-catalog-rfc9727",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.2,
    "detail": "No /.well-known/api-catalog found (RFC 9727)"
   },
   {
    "id": "mcp-well-known-discovery",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.2,
    "detail": "No MCP server URL discovered"
   },
   {
    "id": "link-headers-discovery",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 0.1,
    "detail": "No HTTP Link response headers (RFC 8288) found"
   },
   {
    "id": "markdown-negotiation-vary",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.1,
    "detail": "Homepage https://notion.so does not meet the Markdown negotiation requirements: Accept: text/markdown returned text/html; charset=utf-8; Vary header missing Accept (got \"accept-encoding\")"
   },
   {
    "id": "sitemap-lastmod",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.1,
    "detail": "None of the 117 sampled sitemap entries carries a lastmod date. Add <lastmod> (W3C datetime) so agents can prioritize fresh content."
   },
   {
    "id": "a2ui-support",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No A2UI or generative UI support detected"
   },
   {
    "id": "agent-mode-view",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "?mode=agent returns same content as homepage (no dedicated agent view)"
   },
   {
    "id": "agent-plugins-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No Agent Plugins manifest (plugin.json) found in discovered repos"
   },
   {
    "id": "agent-ua-markdown",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly."
   },
   {
    "id": "markdown-link-alternate",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No sampled page advertises a markdown alternate. Add <link rel=\"alternate\" type=\"text/markdown\" href=\"...\"> (or the equivalent Link response header) pointing at a markdown twin of the page."
   },
   {
    "id": "markdown-negotiation",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Missing markdown content negotiation. Homepage returned text/html when probed with Accept: text/markdown (expected text/markdown), and none of the well-known root paths (/llms.md, /auth.md, /agents.md, /developers.md, /api.md, /index.md,"
   },
   {
    "id": "markdown-url-fallback",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "Homepage does not support the .md suffix. Probed https://notion.so/index.md and it did not return markdown (expected text/markdown content-type or a heading-led non-HTML body)."
   },
   {
    "id": "modular-llms-txt",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No section-level llms.txt found. Tried /docs/llms.txt, /api/llms.txt, /developers/llms.txt, /guides/llms.txt, /reference/llms.txt, /product/llms.txt, /releases/llms.txt, /download/llms.txt, /enterprise/llms.txt, /teams/llms.txt."
   },
   {
    "id": "nlweb-schema-feeds",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No schemamap: directive in robots.txt"
   },
   {
    "id": "nlweb-streaming",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "NLWeb /ask requires authentication - cannot verify streaming"
   },
   {
    "id": "pricing-md",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No pricing.md found - agents need machine-readable pricing to compare products and make purchase recommendations"
   },
   {
    "id": "web-bot-auth-directory",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No /.well-known/http-message-signatures-directory found"
   }
  ],
  "seen": {
   "brand-search-accuracy": "notion.so was not in the top 10 for \"Notion\" (searched your brand name alone: no main product term from your homepage qualified)",
   "wikipedia-presence": "Wikidata Q60747998 (Notion) verified - draft a Wikipedia page with cited references to complete knowledge graph coverage",
   "robots-ai-policy-quality": "AI search crawlers: allowed in 3 of 3 checks (3 crawlers on 1 page). AI training crawlers: allowed in 2 of 2 checks (2 crawlers on 1 page), not scored.",
   "noindex-directives": "No noindex on the homepage: no robots, googlebot or bingbot meta tag and no X-Robots-Tag header hides it from search.",
   "sitemap": "Valid sitemap found at https://www.notion.com/sitemap.xml with multiple sitemaps entries",
   "content-no-js": "Homepage: 1242 chars with H1, but 1.2% content ratio is below the 5% target. No inner pages checked: the scan found none to sample.",
   "bot-detection": "Site accessible to 4 agent user-agents (ChatGPT-User, OAI-SearchBot, Claude-User, PerplexityBot).",
   "agent-discovery-file": "No agent discovery file found",
   "a2a-agent-card": "No A2A agent card found at /.well-known/agent-card.json",
   "mcp-well-known-discovery": "No MCP server URL discovered",
   "robots-agent-user-policy": "No applicable crawl or usage restriction found for 3 user-triggered agents (chatgpt-user, claude-user, perplexity-user) on 1 public page: https://notion.so/. Declared policy only;",
   "llms-txt-exists": "Found the llms.txt at https://developers.notion.com/llms.txt.",
   "llms-txt-formatting": "The llms.txt contains markdown links and has 57 lines, but it doesn't start with a markdown heading.",
   "json-ld": "Rich JSON-LD identity: Organization with name, description, url, and sameAs/logo/address (1 block(s))",
   "public-api-docs": "Documentation site found at https://developers.notion.com",
   "metadata-completeness": "All metadata signals present: canonical URL, lang=\"en-us\", og:image, og:type",
   "page-token-budget": "All 1 measured page fit an agent context budget (largest ~1K tokens)",
   "docs-auth-gate": "No content pages sampled",
   "openapi-spec": "OpenAPI spec found at https://developers.notion.com/openapi.json (version: 3.1.0)",
   "developer-portal": "Developer portal found at /developers",
   "markdown-negotiation": "Missing markdown content negotiation. Homepage returned text/html when probed with Accept: text/markdown (expected text/markdown), and none of the well-known root paths (/llms.md, /auth.md, /agents.md, /developers.md,",
   "agent-ua-markdown": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly.",
   "agent-crawler-reachability": "Reachable to every agent we tested - ChatGPT-User: reachable, OAI-SearchBot: reachable, Claude-User: reachable, PerplexityBot: reachable",
   "public-api": "REST API documentation found at https://www.notion.com/product/docs. GraphQL endpoint at https://notion.so/graphql is reachable; introspection requires authentication (API key / OAuth),",
   "oauth-support": "OAuth endpoint found at https://notion.so/oauth2/authorize",
   "mcp-server": "First-party MCP server published by product org (npm, @notionhq/notion-mcp-server, 24608 score). Add live handshake at /.well-known/mcp for full credit.",
   "webmcp": "No WebMCP support detected - no document.modelContext / navigator.modelContext usage found (scanned 37 of 37 same-origin script bundle(s) for modelContext registrations)",
   "cli-tool": "CLI package found on npm: ntn",
   "rest-sdk-packages": "SDK found in npm, additional SDKs mentioned at https://developers.notion.com",
   "nlweb-ask": "NLWeb /ask endpoint exists but requires authentication (HTTP 401, via GET)",
   "mpp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "x402-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "ucp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "acp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "ap2-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites"
  }
 },
 {
  "slug": "nvidia",
  "name": "NVIDIA",
  "domain": "nvidia.com",
  "finalUrl": "https://www.nvidia.com/en-us/",
  "read": "2026-11-09",
  "scannedAt": "2026-10-31T17:50:26.411+00:00",
  "score": 77,
  "max": 100,
  "grade": "B",
  "category": "AI & ML",
  "scoringVersion": null,
  "rulesUrl": null,
  "summary": "Nvidia excels at developer resource discoverability and SDK distribution, but lacks WebMCP support for agent integration.",
  "layers": [
   {
    "id": "discovery",
    "name": "Discovery",
    "score": 14,
    "max": 15
   },
   {
    "id": "accessibility",
    "name": "Access",
    "score": 38,
    "max": 50
   },
   {
    "id": "usability",
    "name": "Usability",
    "score": 35,
    "max": 51
   },
   {
    "id": "payments",
    "name": "Payments",
    "score": 0,
    "max": 0
   }
  ],
  "checks": {
   "ard-catalog": [
    "fail",
    0,
    1
   ],
   "ai-catalog-published": [
    "na",
    0,
    1
   ],
   "ard-entries-valid": [
    "na",
    0,
    2
   ],
   "ard-trust-manifest": [
    "na",
    0,
    2
   ],
   "agentic-search-usecase": [
    "na",
    0,
    6
   ],
   "agentic-search-specific": [
    "pass",
    3,
    3
   ],
   "brand-search-accuracy": [
    "pass",
    3,
    3
   ],
   "wikipedia-presence": [
    "pass",
    4,
    4
   ],
   "robots-ai-policy-quality": [
    "pass",
    2,
    2
   ],
   "mcp-registry-listed": [
    "na",
    0,
    1
   ],
   "npm-sdk-package": [
    "pass",
    1,
    1
   ],
   "agent-rules-repo": [
    "fail",
    0,
    1
   ],
   "agent-plugins-repo": [
    "fail",
    0,
    1
   ],
   "registry-branding": [
    "na",
    0,
    2
   ],
   "chatgpt-app-listed": [
    "na",
    0,
    2
   ],
   "noindex-directives": [
    "pass",
    1,
    1
   ],
   "sitemap": [
    "pass",
    2,
    2
   ],
   "content-no-js": [
    "pass",
    3,
    3
   ],
   "bot-detection": [
    "pass",
    2,
    2
   ],
   "agent-discovery-file": [
    "na",
    0,
    2
   ],
   "agent-skills-index-v2": [
    "na",
    0,
    2
   ],
   "a2a-agent-card": [
    "na",
    0,
    2
   ],
   "skills-sh-listed": [
    "pass",
    1,
    1
   ],
   "pricing-md": [
    "na",
    0,
    2
   ],
   "nlweb-schema-feeds": [
    "fail",
    0,
    1
   ],
   "mcp-well-known-discovery": [
    "fail",
    0,
    2
   ],
   "agent-mode-view": [
    "fail",
    0,
    2
   ],
   "link-headers-discovery": [
    "fail",
    0,
    1
   ],
   "markdown-url-fallback": [
    "fail",
    0,
    2
   ],
   "modular-llms-txt": [
    "pass",
    1,
    1
   ],
   "sitemap-lastmod": [
    "pass",
    1,
    1
   ],
   "robots-agent-user-policy": [
    "pass",
    2,
    2
   ],
   "llms-txt-exists": [
    "pass",
    1,
    1
   ],
   "llms-txt-formatting": [
    "pass",
    2,
    2
   ],
   "json-ld": [
    "warning",
    1,
    4
   ],
   "pricing-info": [
    "fail",
    0,
    3
   ],
   "public-api-docs": [
    "pass",
    3,
    3
   ],
   "agent-instruction": [
    "warning",
    2,
    3
   ],
   "skills-sh-quality": [
    "pass",
    2,
    2
   ],
   "json-ld-entity-linking": [
    "warning",
    1,
    2
   ],
   "metadata-completeness": [
    "pass",
    2,
    2
   ],
   "org-schema-completeness": [
    "fail",
    0,
    2
   ],
   "schema-type-breadth": [
    "fail",
    0,
    2
   ],
   "trust-anchors": [
    "pass",
    2,
    2
   ],
   "llms-txt-links-resolve": [
    "pass",
    2,
    2
   ],
   "markdown-link-alternate": [
    "warning",
    0,
    1
   ],
   "markdown-frontmatter": [
    "na",
    0,
    1
   ],
   "redirect-hygiene": [
    "pass",
    1,
    1
   ],
   "page-token-budget": [
    "pass",
    1,
    1
   ],
   "code-fence-validity": [
    "pass",
    1,
    1
   ],
   "docs-auth-gate": [
    "pass",
    2,
    2
   ],
   "openapi-spec": [
    "na",
    0,
    7
   ],
   "developer-portal": [
    "pass",
    6,
    6
   ],
   "api-catalog-rfc9727": [
    "fail",
    0,
    2
   ],
   "markdown-negotiation": [
    "fail",
    0,
    1
   ],
   "markdown-negotiation-vary": [
    "fail",
    0,
    1
   ],
   "agent-ua-markdown": [
    "fail",
    0,
    1
   ],
   "agent-crawler-reachability": [
    "pass",
    2,
    2
   ],
   "mcp-tool-descriptions": [
    "na",
    0,
    3
   ],
   "mcp-param-schemas": [
    "na",
    0,
    2
   ],
   "mcp-server-identity": [
    "na",
    0,
    1
   ],
   "mcp-tool-listing": [
    "na",
    0,
    3
   ],
   "mcp-tool-naming": [
    "na",
    0,
    2
   ],
   "public-api": [
    "pass",
    7,
    7
   ],
   "oauth-support": [
    "pass",
    5,
    5
   ],
   "scoped-permissions": [
    "na",
    0,
    5
   ],
   "mcp-auth-mechanism": [
    "na",
    0,
    2
   ],
   "mcp-oauth-metadata": [
    "na",
    0,
    2
   ],
   "mcp-pkce-s256": [
    "na",
    0,
    2
   ],
   "onboarding-friction": [
    "pass",
    2,
    2
   ],
   "web-bot-auth-directory": [
    "na",
    0,
    2
   ],
   "oauth-protected-resource": [
    "na",
    0,
    2
   ],
   "auth-md-exists": [
    "fail",
    0,
    2
   ],
   "auth-md-structure": [
    "fail",
    0,
    2
   ],
   "auth-md-walkthrough-simulation": [
    "na",
    0,
    2
   ],
   "agent-auth-discovery-metadata": [
    "na",
    0,
    3
   ],
   "agent-auth-www-authenticate": [
    "fail",
    0,
    1
   ],
   "agent-auth-endpoints-reachable": [
    "na",
    0,
    2
   ],
   "pap-discovery": [
    "na",
    0,
    2
   ],
   "pap-issuer-binding": [
    "na",
    0,
    2
   ],
   "pap-auth-config": [
    "na",
    0,
    2
   ],
   "pap-interfaces": [
    "na",
    0,
    2
   ],
   "pap-endpoint-enforcement": [
    "na",
    0,
    2
   ],
   "pap-cross-protocol": [
    "na",
    0,
    2
   ],
   "mcp-server": [
    "warning",
    2,
    6
   ],
   "mcp-error-handling": [
    "na",
    0,
    2
   ],
   "mcp-transport-modern": [
    "na",
    0,
    1
   ],
   "webmcp": [
    "fail",
    0,
    5
   ],
   "rate-limit-headers": [
    "na",
    0,
    2
   ],
   "idempotency-key-support": [
    "na",
    0,
    3
   ],
   "json-error-responses": [
    "fail",
    0,
    4
   ],
   "api-error-model": [
    "na",
    0,
    3
   ],
   "api-versioning-policy": [
    "na",
    0,
    3
   ],
   "pagination-shape": [
    "na",
    0,
    2
   ],
   "async-job-pattern": [
    "na",
    0,
    2
   ],
   "cli-tool": [
    "pass",
    3,
    3
   ],
   "rest-sdk-packages": [
    "warning",
    1,
    3
   ],
   "nlweb-ask": [
    "fail",
    0,
    1
   ],
   "nlweb-streaming": [
    "fail",
    0,
    1
   ],
   "response-schema-coverage": [
    "na",
    0,
    2
   ],
   "mcp-tool-annotations": [
    "na",
    0,
    2
   ],
   "mcp-server-card": [
    "fail",
    0,
    2
   ],
   "mcp-multi-surface-coverage": [
    "fail",
    0,
    2
   ],
   "sandbox-environment": [
    "pass",
    2,
    2
   ],
   "batch-endpoints": [
    "na",
    0,
    2
   ],
   "mcp-resource-listing": [
    "na",
    0,
    3
   ],
   "graphql-error-type-definition": [
    "na",
    0,
    3
   ],
   "graphql-versioning-policy": [
    "na",
    0,
    2
   ],
   "graphql-pagination-pattern": [
    "na",
    0,
    2
   ],
   "graphql-async-job-pattern": [
    "na",
    0,
    2
   ],
   "graphql-schema-completeness": [
    "na",
    0,
    3
   ],
   "graphql-batch-mutations": [
    "na",
    0,
    2
   ],
   "agent-friendly-404": [
    "warning",
    1,
    2
   ],
   "ax-document-structure": [
    "pass",
    3,
    3
   ],
   "ax-native-controls": [
    "pass",
    3,
    3
   ],
   "ax-accessible-names": [
    "pass",
    2,
    2
   ],
   "ax-form-labeling": [
    "pass",
    2,
    2
   ],
   "ax-tree-injection-safe": [
    "pass",
    2,
    2
   ],
   "mcp-app-registry": [
    "na",
    0,
    4
   ],
   "a2ui-support": [
    "na",
    0,
    2
   ],
   "mcp-apps-ui-quality": [
    "na",
    0,
    4
   ],
   "mcp-view-domain": [
    "na",
    0,
    4
   ],
   "mcp-view-csp": [
    "na",
    0,
    4
   ],
   "api-schema-analysis": [
    "na",
    0,
    2
   ],
   "function-calling-compat": [
    "na",
    0,
    2
   ],
   "mcp-resource-quality": [
    "na",
    0,
    3
   ],
   "mpp-support": [
    "na",
    0,
    2
   ],
   "x402-support": [
    "na",
    0,
    2
   ],
   "ucp-support": [
    "na",
    0,
    3
   ],
   "acp-support": [
    "na",
    0,
    3
   ],
   "acp-delegate-payment": [
    "na",
    0,
    3
   ],
   "ap2-support": [
    "na",
    0,
    3
   ]
  },
  "flagged": [
   {
    "id": "webmcp",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 5,
    "tier": "required",
    "est": 4.4,
    "detail": "No WebMCP support detected - no document.modelContext / navigator.modelContext usage found (scanned 12 of 12 same-origin script bundle(s) for modelContext registrations)"
   },
   {
    "id": "json-error-responses",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 4,
    "tier": "required",
    "est": 3.5,
    "detail": "API does not return JSON error responses (or no API detected)"
   },
   {
    "id": "mcp-server",
    "layer": "usability",
    "status": "warning",
    "score": 2,
    "max": 6,
    "tier": "required",
    "est": 3.5,
    "detail": "MCP mentioned at https://docs.nvidia.com/switch-infrastructure/config-manager/config-manager/overview/mcp but no standard manifest endpoint found"
   },
   {
    "id": "json-ld",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 4,
    "tier": "required",
    "est": 2,
    "detail": "JSON-LD found (1 block(s)) but no identity type - use SoftwareApplication, Product, Organization, Person, or Article so agents can tell what this site is"
   },
   {
    "id": "pricing-info",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "required",
    "est": 2,
    "detail": "No pricing page or pricing data found"
   },
   {
    "id": "rest-sdk-packages",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 3,
    "tier": "recommended",
    "est": 1.7,
    "detail": "SDK package found only in npm"
   },
   {
    "id": "ard-catalog",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 1.5,
    "detail": "No /.well-known/ard.json, no same-site rel=\"ard\" link, and no legacy /.well-known/ai-catalog.json"
   },
   {
    "id": "org-schema-completeness",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.3,
    "detail": "No Organization type found in JSON-LD"
   },
   {
    "id": "schema-type-breadth",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.3,
    "detail": "No extended schema types found - AI can only answer basic questions about this entity"
   },
   {
    "id": "agent-friendly-404",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.9,
    "detail": "The nonexistent path https://nvidia.com/__ora-404-probe-rl6lfz6p correctly returns HTTP 404. Partial credit: no Markdown error body was detected."
   },
   {
    "id": "agent-instruction",
    "layer": "accessibility",
    "status": "warning",
    "score": 2,
    "max": 3,
    "tier": "required",
    "est": 0.7,
    "detail": "When-to-use guidance found at https://docs.nvidia.com"
   },
   {
    "id": "json-ld-entity-linking",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.7,
    "detail": "Entity linking to linkedin.com - add more authority profiles (Wikipedia, Wikidata, LinkedIn, GitHub)"
   },
   {
    "id": "auth-md-exists",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.5,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "auth-md-structure",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "mcp-multi-surface-coverage",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "This bonus needs two MCP servers: one for your product so agents can take actions, and a separate one for your documentation so agents can answer questions from your docs."
   },
   {
    "id": "mcp-server-card",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "No MCP server card found (checked /.well-known/mcp/server-card.json, the site's ai-catalog.json, servers[].card in mcp.json, and <server>/server-card)"
   },
   {
    "id": "agent-auth-www-authenticate",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.3,
    "detail": "No 401 with WWW-Authenticate: Bearer resource_metadata=... found. Probed [https://nvidia.com/api, https://nvidia.com/api/v1, https://nvidia.com/v1, https://nvidia.com/v2, https://nvidia.com/agent/identity, https://nvidia.com/agent/auth,"
   },
   {
    "id": "api-catalog-rfc9727",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.3,
    "detail": "No /.well-known/api-catalog found (RFC 9727)"
   },
   {
    "id": "mcp-well-known-discovery",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.3,
    "detail": "No MCP server URL discovered"
   },
   {
    "id": "link-headers-discovery",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 0.2,
    "detail": "No HTTP Link response headers (RFC 8288) found"
   },
   {
    "id": "markdown-negotiation-vary",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.2,
    "detail": "Homepage https://nvidia.com does not meet the Markdown negotiation requirements: Accept: text/markdown returned text/html; charset=utf-8; Vary header missing Accept (got \"accept-encoding\")"
   },
   {
    "id": "agent-mode-view",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "?mode=agent returns same content as homepage (no dedicated agent view)"
   },
   {
    "id": "agent-plugins-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No Agent Plugins manifest (plugin.json) found in discovered repos"
   },
   {
    "id": "agent-rules-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Could not locate a public repo containing agent configs or rules. If our probes missed it, AI coding agents likely will too - link the repo from your homepage or docs so it's discoverable."
   },
   {
    "id": "agent-ua-markdown",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly."
   },
   {
    "id": "markdown-link-alternate",
    "layer": "accessibility",
    "status": "warning",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Markdown alternate advertised, but the target https://www.nvidia.com/en-us.md returns text/markdown instead of markdown - agents following the hint hit a dead end"
   },
   {
    "id": "markdown-negotiation",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Missing markdown content negotiation. Homepage returned text/html when probed with Accept: text/markdown (expected text/markdown), and none of the well-known root paths (/llms.md, /auth.md, /agents.md, /developers.md, /api.md, /index.md,"
   },
   {
    "id": "markdown-url-fallback",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "Homepage does not support the .md suffix. Probed https://nvidia.com/index.md and it did not return markdown (expected text/markdown content-type or a heading-led non-HTML body)."
   },
   {
    "id": "nlweb-ask",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No NLWeb-conformant /ask endpoint found via GET or POST"
   },
   {
    "id": "nlweb-schema-feeds",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No schemamap: directive in robots.txt"
   },
   {
    "id": "nlweb-streaming",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "NLWeb /ask does not support SSE streaming via GET or POST"
   }
  ],
  "seen": {
   "brand-search-accuracy": "nvidia.com ranks #1 for \"NVIDIA GPU computing\"",
   "wikipedia-presence": "Wikipedia \"Nvidia\" and Wikidata Q182477 both verified - domain confirmed on both sources",
   "robots-ai-policy-quality": "AI search crawlers: allowed in 3 of 3 checks (3 crawlers on 1 page). AI training crawlers: allowed in 2 of 2 checks (2 crawlers on 1 page), not scored.",
   "noindex-directives": "No noindex on the homepage: no robots, googlebot or bingbot meta tag and no X-Robots-Tag header hides it from search.",
   "sitemap": "Valid sitemap found at https://www.nvidia.com/sitemap_index.xml with multiple sitemaps entries",
   "content-no-js": "Homepage: 21731 chars, semantic headings (1 H1 + 8 H2s + 83 H3s), 5.4% content ratio. 5 of 5 sampled inner pages have text without JavaScript.",
   "bot-detection": "Site accessible to 4 agent user-agents (ChatGPT-User, OAI-SearchBot, Claude-User, PerplexityBot).",
   "agent-discovery-file": "Can't verify: a bot shield answered our request to nvidia.com/.well-known/agent-skills/index.json (HTTP 403); nvidia.com/.well-known/agent-skills (HTTP 403) instead of the site. That is not counted against the site.",
   "a2a-agent-card": "Can't verify: a bot shield answered our request to nvidia.com/.well-known/agent-card.json (HTTP 403) instead of the site. That is not counted against the site.",
   "mcp-well-known-discovery": "No MCP server URL discovered",
   "robots-agent-user-policy": "No applicable crawl or usage restriction found for 3 user-triggered agents (chatgpt-user, claude-user, perplexity-user) on 1 public page: https://nvidia.com/. Declared policy only;",
   "llms-txt-exists": "Found the llms.txt at https://docs.nvidia.com/llms.txt.",
   "llms-txt-formatting": "The llms.txt is well-formatted: 224 lines with markdown links, 18,321 characters in total.",
   "json-ld": "JSON-LD found (1 block(s)) but no identity type - use SoftwareApplication, Product, Organization, Person, or Article so agents can tell what this site is",
   "public-api-docs": "Documentation site found at https://docs.nvidia.com",
   "metadata-completeness": "All metadata signals present: canonical URL, lang=\"en-us\", og:image, og:type",
   "page-token-budget": "All 6 measured pages fit an agent context budget (largest ~5K tokens)",
   "docs-auth-gate": "All 5 sampled pages are publicly readable (5 with substantive content)",
   "openapi-spec": "Can't verify: a bot shield answered our request to nvidia.com/.well-known/openapi.json (HTTP 403) instead of the site. That is not counted against the site.",
   "developer-portal": "Developer portal found at /developer",
   "markdown-negotiation": "Missing markdown content negotiation. Homepage returned text/html when probed with Accept: text/markdown (expected text/markdown), and none of the well-known root paths (/llms.md, /auth.md, /agents.md, /developers.md,",
   "agent-ua-markdown": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly.",
   "agent-crawler-reachability": "Reachable to every agent we tested - ChatGPT-User: reachable, OAI-SearchBot: reachable, Claude-User: reachable, PerplexityBot: reachable",
   "public-api": "REST API documentation found at /docs/api. Best-of-protocols score: 7/7.",
   "oauth-support": "OpenID Connect discovery endpoint found at https://login.nvidia.com",
   "mcp-server": "MCP mentioned at https://docs.nvidia.com/switch-infrastructure/config-manager/config-manager/overview/mcp but no standard manifest endpoint found",
   "webmcp": "No WebMCP support detected - no document.modelContext / navigator.modelContext usage found (scanned 12 of 12 same-origin script bundle(s) for modelContext registrations)",
   "cli-tool": "CLI package found on npm: @nvidia/foundations-react-core",
   "rest-sdk-packages": "SDK package found only in npm",
   "nlweb-ask": "No NLWeb-conformant /ask endpoint found via GET or POST",
   "mpp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "x402-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "ucp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "acp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "ap2-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites"
  }
 },
 {
  "slug": "openai",
  "name": "OpenAI",
  "domain": "openai.com",
  "finalUrl": "https://openai.com/",
  "read": "2026-11-09",
  "scannedAt": "2026-11-09T06:00:53.305+00:00",
  "score": 60,
  "max": 100,
  "grade": "C",
  "category": "AI & ML",
  "scoringVersion": 2,
  "rulesUrl": "https://ora.ai/api/ranker/releases/2/rules",
  "summary": "OpenAI offers strong developer SDK and discovery presence, but lacks WebMCP support and MCP Apps UI resources for agents.",
  "layers": [
   {
    "id": "discovery",
    "name": "Discovery",
    "score": 14,
    "max": 16
   },
   {
    "id": "accessibility",
    "name": "Access",
    "score": 29,
    "max": 54
   },
   {
    "id": "usability",
    "name": "Usability",
    "score": 31,
    "max": 62
   },
   {
    "id": "payments",
    "name": "Payments",
    "score": 0,
    "max": 0
   }
  ],
  "checks": {
   "ard-catalog": [
    "fail",
    0,
    1
   ],
   "ai-catalog-published": [
    "na",
    0,
    1
   ],
   "ard-entries-valid": [
    "na",
    0,
    2
   ],
   "ard-trust-manifest": [
    "na",
    0,
    2
   ],
   "agentic-search-usecase": [
    "na",
    0,
    6
   ],
   "agentic-search-specific": [
    "pass",
    3,
    3
   ],
   "brand-search-accuracy": [
    "warning",
    2,
    3
   ],
   "wikipedia-presence": [
    "pass",
    4,
    4
   ],
   "robots-ai-policy-quality": [
    "pass",
    2,
    2
   ],
   "mcp-registry-listed": [
    "na",
    0,
    1
   ],
   "npm-sdk-package": [
    "pass",
    1,
    1
   ],
   "agent-rules-repo": [
    "pass",
    1,
    1
   ],
   "agent-plugins-repo": [
    "fail",
    0,
    1
   ],
   "registry-branding": [
    "na",
    0,
    2
   ],
   "chatgpt-app-listed": [
    "pass",
    2,
    2
   ],
   "noindex-directives": [
    "na",
    0,
    1
   ],
   "sitemap": [
    "pass",
    2,
    2
   ],
   "content-no-js": [
    "warning",
    0,
    3
   ],
   "bot-detection": [
    "warning",
    0,
    2
   ],
   "agent-discovery-file": [
    "fail",
    0,
    2
   ],
   "agent-skills-index-v2": [
    "na",
    0,
    2
   ],
   "a2a-agent-card": [
    "fail",
    0,
    2
   ],
   "skills-sh-listed": [
    "pass",
    1,
    1
   ],
   "pricing-md": [
    "fail",
    0,
    2
   ],
   "nlweb-schema-feeds": [
    "fail",
    0,
    1
   ],
   "mcp-well-known-discovery": [
    "fail",
    0,
    2
   ],
   "agent-mode-view": [
    "fail",
    0,
    2
   ],
   "link-headers-discovery": [
    "fail",
    0,
    1
   ],
   "markdown-url-fallback": [
    "fail",
    0,
    2
   ],
   "modular-llms-txt": [
    "fail",
    0,
    1
   ],
   "sitemap-lastmod": [
    "pass",
    1,
    1
   ],
   "robots-agent-user-policy": [
    "pass",
    2,
    2
   ],
   "llms-txt-exists": [
    "pass",
    1,
    1
   ],
   "llms-txt-formatting": [
    "pass",
    2,
    2
   ],
   "json-ld": [
    "warning",
    1,
    4
   ],
   "pricing-info": [
    "warning",
    1,
    3
   ],
   "public-api-docs": [
    "pass",
    3,
    3
   ],
   "agent-instruction": [
    "warning",
    2,
    3
   ],
   "skills-sh-quality": [
    "pass",
    2,
    2
   ],
   "json-ld-entity-linking": [
    "fail",
    0,
    2
   ],
   "metadata-completeness": [
    "pass",
    2,
    2
   ],
   "org-schema-completeness": [
    "fail",
    0,
    2
   ],
   "schema-type-breadth": [
    "fail",
    0,
    2
   ],
   "trust-anchors": [
    "fail",
    0,
    2
   ],
   "llms-txt-links-resolve": [
    "na",
    0,
    2
   ],
   "markdown-link-alternate": [
    "fail",
    0,
    1
   ],
   "markdown-frontmatter": [
    "na",
    0,
    1
   ],
   "redirect-hygiene": [
    "pass",
    1,
    1
   ],
   "page-token-budget": [
    "na",
    0,
    1
   ],
   "code-fence-validity": [
    "na",
    0,
    1
   ],
   "docs-auth-gate": [
    "na",
    0,
    2
   ],
   "openapi-spec": [
    "warning",
    5,
    7
   ],
   "developer-portal": [
    "pass",
    6,
    6
   ],
   "api-catalog-rfc9727": [
    "fail",
    0,
    2
   ],
   "markdown-negotiation": [
    "fail",
    0,
    1
   ],
   "markdown-negotiation-vary": [
    "fail",
    0,
    1
   ],
   "agent-ua-markdown": [
    "na",
    0,
    1
   ],
   "agent-crawler-reachability": [
    "warning",
    0,
    2
   ],
   "mcp-tool-descriptions": [
    "na",
    0,
    3
   ],
   "mcp-param-schemas": [
    "na",
    0,
    2
   ],
   "mcp-server-identity": [
    "na",
    0,
    1
   ],
   "mcp-tool-listing": [
    "na",
    0,
    3
   ],
   "mcp-tool-naming": [
    "na",
    0,
    2
   ],
   "public-api": [
    "pass",
    7,
    7
   ],
   "oauth-support": [
    "pass",
    5,
    5
   ],
   "scoped-permissions": [
    "warning",
    2,
    5
   ],
   "mcp-auth-mechanism": [
    "na",
    0,
    2
   ],
   "mcp-oauth-metadata": [
    "na",
    0,
    2
   ],
   "mcp-pkce-s256": [
    "na",
    0,
    2
   ],
   "onboarding-friction": [
    "warning",
    1,
    2
   ],
   "web-bot-auth-directory": [
    "fail",
    0,
    2
   ],
   "oauth-protected-resource": [
    "fail",
    0,
    2
   ],
   "auth-md-exists": [
    "fail",
    0,
    2
   ],
   "auth-md-structure": [
    "fail",
    0,
    2
   ],
   "auth-md-walkthrough-simulation": [
    "na",
    0,
    2
   ],
   "agent-auth-discovery-metadata": [
    "fail",
    0,
    3
   ],
   "agent-auth-www-authenticate": [
    "fail",
    0,
    1
   ],
   "agent-auth-endpoints-reachable": [
    "fail",
    0,
    2
   ],
   "pap-discovery": [
    "na",
    0,
    2
   ],
   "pap-issuer-binding": [
    "na",
    0,
    2
   ],
   "pap-auth-config": [
    "na",
    0,
    2
   ],
   "pap-interfaces": [
    "na",
    0,
    2
   ],
   "pap-endpoint-enforcement": [
    "na",
    0,
    2
   ],
   "pap-cross-protocol": [
    "na",
    0,
    2
   ],
   "mcp-server": [
    "warning",
    5,
    6
   ],
   "mcp-error-handling": [
    "na",
    0,
    2
   ],
   "mcp-transport-modern": [
    "na",
    0,
    1
   ],
   "webmcp": [
    "fail",
    0,
    5
   ],
   "rate-limit-headers": [
    "fail",
    0,
    2
   ],
   "idempotency-key-support": [
    "fail",
    0,
    3
   ],
   "json-error-responses": [
    "pass",
    4,
    4
   ],
   "api-error-model": [
    "na",
    0,
    3
   ],
   "api-versioning-policy": [
    "na",
    0,
    3
   ],
   "pagination-shape": [
    "na",
    0,
    2
   ],
   "async-job-pattern": [
    "na",
    0,
    2
   ],
   "cli-tool": [
    "pass",
    3,
    3
   ],
   "rest-sdk-packages": [
    "pass",
    3,
    3
   ],
   "nlweb-ask": [
    "pass",
    1,
    1
   ],
   "nlweb-streaming": [
    "fail",
    0,
    1
   ],
   "response-schema-coverage": [
    "na",
    0,
    2
   ],
   "mcp-tool-annotations": [
    "na",
    0,
    2
   ],
   "mcp-server-card": [
    "fail",
    0,
    2
   ],
   "mcp-multi-surface-coverage": [
    "fail",
    0,
    2
   ],
   "sandbox-environment": [
    "warning",
    0,
    2
   ],
   "batch-endpoints": [
    "na",
    0,
    2
   ],
   "mcp-resource-listing": [
    "na",
    0,
    3
   ],
   "graphql-error-type-definition": [
    "fail",
    0,
    3
   ],
   "graphql-versioning-policy": [
    "fail",
    0,
    2
   ],
   "graphql-pagination-pattern": [
    "warning",
    1,
    2
   ],
   "graphql-async-job-pattern": [
    "fail",
    0,
    2
   ],
   "graphql-schema-completeness": [
    "na",
    0,
    3
   ],
   "graphql-batch-mutations": [
    "na",
    0,
    2
   ],
   "agent-friendly-404": [
    "na",
    0,
    2
   ],
   "ax-document-structure": [
    "na",
    0,
    3
   ],
   "ax-native-controls": [
    "na",
    0,
    3
   ],
   "ax-accessible-names": [
    "na",
    0,
    2
   ],
   "ax-form-labeling": [
    "na",
    0,
    2
   ],
   "ax-tree-injection-safe": [
    "na",
    0,
    2
   ],
   "mcp-app-registry": [
    "fail",
    0,
    4
   ],
   "a2ui-support": [
    "fail",
    0,
    2
   ],
   "mcp-apps-ui-quality": [
    "na",
    0,
    4
   ],
   "mcp-view-domain": [
    "na",
    0,
    4
   ],
   "mcp-view-csp": [
    "na",
    0,
    4
   ],
   "api-schema-analysis": [
    "fail",
    0,
    2
   ],
   "function-calling-compat": [
    "fail",
    0,
    2
   ],
   "mcp-resource-quality": [
    "na",
    0,
    3
   ],
   "mpp-support": [
    "na",
    0,
    2
   ],
   "x402-support": [
    "na",
    0,
    2
   ],
   "ucp-support": [
    "na",
    0,
    3
   ],
   "acp-support": [
    "warning",
    0,
    3
   ],
   "acp-delegate-payment": [
    "na",
    0,
    3
   ],
   "ap2-support": [
    "na",
    0,
    3
   ]
  },
  "flagged": [
   {
    "id": "webmcp",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 5,
    "tier": "required",
    "est": 3.6,
    "detail": "No WebMCP support detected - no document.modelContext / navigator.modelContext usage found"
   },
   {
    "id": "mcp-app-registry",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 4,
    "tier": "recommended",
    "est": 2.9,
    "detail": "No MCP Apps support detected - this product has an in-agent UI surface but exposes no ui:// resources or tool UI metadata for agents to render."
   },
   {
    "id": "graphql-error-type-definition",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": 2.2,
    "detail": "GraphQL introspection auth-gated and no typed graphql error model documentation found on GraphQL-tagged pages"
   },
   {
    "id": "idempotency-key-support",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": 2.2,
    "detail": "GraphQL introspection auth-gated and no idempotency documentation found on GraphQL-tagged pages"
   },
   {
    "id": "scoped-permissions",
    "layer": "usability",
    "status": "warning",
    "score": 2,
    "max": 5,
    "tier": "recommended",
    "est": 2.2,
    "detail": "Scoped permissions described at https://developers.openai.com, but no machine-readable scope declaration found (OpenAPI oauth2 scopes or RFC 9728 scopes_supported)"
   },
   {
    "id": "content-no-js",
    "layer": "accessibility",
    "status": "warning",
    "score": 0,
    "max": 3,
    "tier": "required",
    "est": 1.9,
    "detail": "Homepage blocked by WAF/security challenge - content not accessible to agents"
   },
   {
    "id": "json-ld",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 4,
    "tier": "required",
    "est": 1.9,
    "detail": "JSON-LD found (1 block(s)) but no identity type - use SoftwareApplication, Product, Organization, Person, or Article so agents can tell what this site is"
   },
   {
    "id": "api-schema-analysis",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.4,
    "detail": "GraphQL: introspection auth-gated and no schema evidence in docs"
   },
   {
    "id": "ard-catalog",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 1.4,
    "detail": "No /.well-known/ard.json, no same-site rel=\"ard\" link, and no legacy /.well-known/ai-catalog.json"
   },
   {
    "id": "brand-search-accuracy",
    "layer": "discovery",
    "status": "warning",
    "score": 2,
    "max": 3,
    "tier": "required",
    "est": 1.4,
    "detail": "openai.com ranks #7 for \"openai\" and appears 3 times in the top 10 (searched your brand name alone: we could not read a product term from your site)"
   },
   {
    "id": "function-calling-compat",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.4,
    "detail": "No API spec found - function calling requires discoverable endpoints"
   },
   {
    "id": "graphql-async-job-pattern",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.4,
    "detail": "GraphQL introspection auth-gated and no graphql async-job pattern documentation found on GraphQL-tagged pages"
   },
   {
    "id": "graphql-versioning-policy",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.4,
    "detail": "GraphQL introspection auth-gated and no graphql versioning / deprecation policy documentation found on GraphQL-tagged pages"
   },
   {
    "id": "rate-limit-headers",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.4,
    "detail": "GraphQL introspection auth-gated and no header convention documented on GraphQL-tagged pages"
   },
   {
    "id": "agent-crawler-reachability",
    "layer": "accessibility",
    "status": "warning",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.2,
    "detail": "Bot management challenged ChatGPT-User, OAI-SearchBot, Claude-User, PerplexityBot - a challenge is an identity check verified crawlers pass, so reachability is undetermined rather than blocked (ChatGPT-User: challenged,"
   },
   {
    "id": "agent-discovery-file",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 1.2,
    "detail": "No agent discovery file found"
   },
   {
    "id": "bot-detection",
    "layer": "accessibility",
    "status": "warning",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 1.2,
    "detail": "Bot management challenged ChatGPT-User, OAI-SearchBot, Claude-User, PerplexityBot. A challenge is an identity check that verified crawlers pass, so this is not proof agents are blocked - but unverified agents will not get through."
   },
   {
    "id": "json-ld-entity-linking",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.2,
    "detail": "No sameAs entity linking in JSON-LD - agents cannot disambiguate your brand"
   },
   {
    "id": "openapi-spec",
    "layer": "accessibility",
    "status": "warning",
    "score": 5,
    "max": 7,
    "tier": "required",
    "est": 1.2,
    "detail": "OpenAPI spec published on GitHub at https://raw.githubusercontent.com/openai/openai-openapi/main/openapi.yaml"
   },
   {
    "id": "org-schema-completeness",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.2,
    "detail": "No Organization type found in JSON-LD"
   },
   {
    "id": "pricing-info",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 3,
    "tier": "required",
    "est": 1.2,
    "detail": "Pricing link found but no dedicated pricing page at standard path"
   },
   {
    "id": "schema-type-breadth",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.2,
    "detail": "No extended schema types found - AI can only answer basic questions about this entity"
   },
   {
    "id": "trust-anchors",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 1.2,
    "detail": "No trust anchor pages found with sufficient content (About, Contact, Privacy)"
   },
   {
    "id": "agent-auth-discovery-metadata",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": 1,
    "detail": "Neither /.well-known/oauth-protected-resource nor /.well-known/oauth-authorization-server found. Probed: openai.com, api.openai.com."
   },
   {
    "id": "agent-auth-endpoints-reachable",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.7,
    "detail": "No agent_auth endpoint URIs found in AS metadata or /auth.md prose; nothing to probe"
   },
   {
    "id": "auth-md-exists",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.7,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "auth-md-structure",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.7,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "graphql-pagination-pattern",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.7,
    "detail": "GraphQL pagination pattern described in documentation at https://developers.openai.com/api/reference/overview; schema not introspectable to verify"
   },
   {
    "id": "mcp-multi-surface-coverage",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.7,
    "detail": "This bonus needs two MCP servers: one for your product so agents can take actions, and a separate one for your documentation so agents can answer questions from your docs."
   },
   {
    "id": "mcp-server",
    "layer": "usability",
    "status": "warning",
    "score": 5,
    "max": 6,
    "tier": "required",
    "est": 0.7,
    "detail": "First-party MCP server published by product org (npm, @openai/mcp-extensions, 20280 score). Add live handshake at /.well-known/mcp for full credit."
   },
   {
    "id": "mcp-server-card",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.7,
    "detail": "No MCP server card found (checked /.well-known/mcp/server-card.json, the site's ai-catalog.json, servers[].card in mcp.json, and <server>/server-card)"
   },
   {
    "id": "oauth-protected-resource",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.7,
    "detail": "No /.well-known/oauth-protected-resource found (RFC 9728)"
   },
   {
    "id": "onboarding-friction",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.7,
    "detail": "Onboarding signals described but not verified live: free tier available, self-serve key generation, sandbox/test environment"
   },
   {
    "id": "sandbox-environment",
    "layer": "usability",
    "status": "warning",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.7,
    "detail": "Sandbox/test environment mentioned at https://developers.openai.com but no sandbox surface verified"
   },
   {
    "id": "a2a-agent-card",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "No A2A agent card found at /.well-known/agent-card.json"
   },
   {
    "id": "agent-instruction",
    "layer": "accessibility",
    "status": "warning",
    "score": 2,
    "max": 3,
    "tier": "required",
    "est": 0.6,
    "detail": "When-to-use guidance found at https://developers.openai.com"
   },
   {
    "id": "api-catalog-rfc9727",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.6,
    "detail": "No /.well-known/api-catalog found (RFC 9727)"
   },
   {
    "id": "mcp-well-known-discovery",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "No MCP server URL discovered"
   },
   {
    "id": "agent-auth-www-authenticate",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.4,
    "detail": "No 401 with WWW-Authenticate: Bearer resource_metadata=... found. Probed [https://openai.com/api, https://openai.com/api/v1, https://openai.com/v1, https://openai.com/v2, https://openai.com/agent/identity, https://openai.com/agent/auth,"
   },
   {
    "id": "link-headers-discovery",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 0.3,
    "detail": "No HTTP Link response headers (RFC 8288) found"
   },
   {
    "id": "markdown-negotiation-vary",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.3,
    "detail": "Homepage https://openai.com does not meet the Markdown negotiation requirements: Accept: text/markdown returned text/html; charset=utf-8; Vary header missing Accept (got \"none\")"
   },
   {
    "id": "a2ui-support",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No A2UI or generative UI support detected"
   },
   {
    "id": "acp-support",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 3,
    "tier": "required",
    "est": null,
    "detail": "ACP documented (AI analysis: Docs list Commerce flows in ChatGPT; checkout implied); no live protocol surface found"
   },
   {
    "id": "agent-mode-view",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No agent mode view detected at ?mode=agent (optional)"
   },
   {
    "id": "agent-plugins-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No Agent Plugins manifest (plugin.json) found in discovered repos"
   },
   {
    "id": "markdown-link-alternate",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No sampled page advertises a markdown alternate. Add <link rel=\"alternate\" type=\"text/markdown\" href=\"...\"> (or the equivalent Link response header) pointing at a markdown twin of the page."
   },
   {
    "id": "markdown-negotiation",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Missing markdown content negotiation. Homepage returned text/html when probed with Accept: text/markdown (expected text/markdown), and none of the well-known root paths (/llms.md, /auth.md, /agents.md, /developers.md, /api.md, /index.md,"
   },
   {
    "id": "markdown-url-fallback",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "Homepage does not support the .md suffix. Probed https://openai.com/index.md and it did not return markdown (expected text/markdown content-type or a heading-led non-HTML body)."
   },
   {
    "id": "modular-llms-txt",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No section-level llms.txt found. Tried /docs/llms.txt, /api/llms.txt, /developers/llms.txt, /guides/llms.txt, /reference/llms.txt. This is a bonus check: it can add a point and never costs one."
   },
   {
    "id": "nlweb-schema-feeds",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No schemamap: directive in robots.txt"
   },
   {
    "id": "nlweb-streaming",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "NLWeb /ask requires authentication - cannot verify streaming"
   },
   {
    "id": "pricing-md",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No pricing.md found - agents need machine-readable pricing to compare products and make purchase recommendations"
   },
   {
    "id": "web-bot-auth-directory",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No /.well-known/http-message-signatures-directory found"
   }
  ],
  "seen": {
   "brand-search-accuracy": "openai.com ranks #7 for \"openai\" and appears 3 times in the top 10 (searched your brand name alone: we could not read a product term from your site)",
   "wikipedia-presence": "Wikipedia \"OpenAI\" and Wikidata Q21708200 both verified - domain confirmed on both sources",
   "robots-ai-policy-quality": "AI search crawlers: allowed in 3 of 3 checks (3 crawlers on 1 page). AI training crawlers: allowed in 2 of 2 checks (2 crawlers on 1 page), not scored.",
   "noindex-directives": "Homepage blocked by WAF - cannot read its indexing directives",
   "sitemap": "Valid sitemap found at https://openai.com/sitemap.xml with multiple sitemaps entries",
   "content-no-js": "Homepage blocked by WAF/security challenge - content not accessible to agents",
   "bot-detection": "Bot management challenged ChatGPT-User, OAI-SearchBot, Claude-User, PerplexityBot. A challenge is an identity check that verified crawlers pass,",
   "agent-discovery-file": "No agent discovery file found",
   "a2a-agent-card": "No A2A agent card found at /.well-known/agent-card.json",
   "mcp-well-known-discovery": "No MCP server URL discovered",
   "robots-agent-user-policy": "No applicable crawl or usage restriction found for 3 user-triggered agents (chatgpt-user, claude-user, perplexity-user) on 1 public page: https://openai.com/. Declared policy only;",
   "llms-txt-exists": "Found the llms.txt at https://developers.openai.com/llms.txt.",
   "llms-txt-formatting": "The llms.txt is well-formatted: 47 lines with markdown links, 6,201 characters in total.",
   "json-ld": "JSON-LD found (1 block(s)) but no identity type - use SoftwareApplication, Product, Organization, Person, or Article so agents can tell what this site is",
   "public-api-docs": "Documentation site found at https://developers.openai.com",
   "metadata-completeness": "All metadata signals present: canonical URL, lang=\"en\", og:image, og:type",
   "page-token-budget": "Nothing sampled to measure",
   "docs-auth-gate": "Site is behind a WAF/bot wall (scored by bot-detection) - cannot separate auth gating from bot blocking",
   "openapi-spec": "OpenAPI spec published on GitHub at https://raw.githubusercontent.com/openai/openai-openapi/main/openapi.yaml",
   "developer-portal": "Developer documentation portal found at https://developers.openai.com",
   "markdown-negotiation": "Missing markdown content negotiation. Homepage returned text/html when probed with Accept: text/markdown (expected text/markdown), and none of the well-known root paths (/llms.md, /auth.md, /agents.md, /developers.md,",
   "agent-ua-markdown": "Site is behind a WAF/bot wall - cannot probe bot-UA serving",
   "agent-crawler-reachability": "Bot management challenged ChatGPT-User, OAI-SearchBot, Claude-User, PerplexityBot - a challenge is an identity check verified crawlers pass, so reachability is undetermined rather than blocked (ChatGPT-User: challenged,",
   "public-api": "API described in documentation at https://developers.openai.com but no machine-verifiable API surface confirmed. GraphQL endpoint at https://openai.com/graphql is reachable;",
   "oauth-support": "OpenID Connect discovery endpoint found at https://auth.openai.com",
   "mcp-server": "First-party MCP server published by product org (npm, @openai/mcp-extensions, 20280 score). Add live handshake at /.well-known/mcp for full credit.",
   "webmcp": "No WebMCP support detected - no document.modelContext / navigator.modelContext usage found",
   "cli-tool": "CLI package found on npm: @openai/codex",
   "rest-sdk-packages": "SDK packages found across 4 ecosystems: npm, pypi, go, rubygems",
   "nlweb-ask": "NLWeb /ask endpoint exists but requires authentication (HTTP 403, via GET)",
   "mpp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "x402-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "ucp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "acp-support": "ACP documented (AI analysis: Docs list Commerce flows in ChatGPT; checkout implied); no live protocol surface found",
   "ap2-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites"
  }
 },
 {
  "slug": "pagerduty",
  "name": "PagerDuty",
  "domain": "pagerduty.com",
  "finalUrl": "https://www.pagerduty.com/",
  "read": "2026-11-09",
  "scannedAt": "2026-11-06T11:59:26.425+00:00",
  "score": 70,
  "max": 100,
  "grade": "B",
  "category": "Infrastructure",
  "scoringVersion": null,
  "rulesUrl": null,
  "summary": "PagerDuty offers strong developer discoverability and SDK packages, but lacks a published OpenAPI specification for agents to call its API.",
  "layers": [
   {
    "id": "discovery",
    "name": "Discovery",
    "score": 14,
    "max": 16
   },
   {
    "id": "accessibility",
    "name": "Access",
    "score": 46,
    "max": 62
   },
   {
    "id": "usability",
    "name": "Usability",
    "score": 47,
    "max": 81
   },
   {
    "id": "payments",
    "name": "Payments",
    "score": 0,
    "max": 0
   }
  ],
  "checks": {
   "ard-catalog": [
    "fail",
    0,
    1
   ],
   "ai-catalog-published": [
    "na",
    0,
    1
   ],
   "ard-entries-valid": [
    "na",
    0,
    2
   ],
   "ard-trust-manifest": [
    "na",
    0,
    2
   ],
   "agentic-search-usecase": [
    "na",
    0,
    6
   ],
   "agentic-search-specific": [
    "pass",
    3,
    3
   ],
   "brand-search-accuracy": [
    "pass",
    3,
    3
   ],
   "wikipedia-presence": [
    "pass",
    4,
    4
   ],
   "robots-ai-policy-quality": [
    "pass",
    2,
    2
   ],
   "mcp-registry-listed": [
    "fail",
    0,
    1
   ],
   "npm-sdk-package": [
    "pass",
    1,
    1
   ],
   "agent-rules-repo": [
    "fail",
    0,
    1
   ],
   "agent-plugins-repo": [
    "fail",
    0,
    1
   ],
   "registry-branding": [
    "fail",
    0,
    2
   ],
   "chatgpt-app-listed": [
    "fail",
    0,
    2
   ],
   "noindex-directives": [
    "pass",
    1,
    1
   ],
   "sitemap": [
    "pass",
    2,
    2
   ],
   "content-no-js": [
    "warning",
    2,
    3
   ],
   "bot-detection": [
    "pass",
    2,
    2
   ],
   "agent-discovery-file": [
    "fail",
    0,
    2
   ],
   "agent-skills-index-v2": [
    "na",
    0,
    2
   ],
   "a2a-agent-card": [
    "fail",
    0,
    2
   ],
   "skills-sh-listed": [
    "fail",
    0,
    1
   ],
   "pricing-md": [
    "fail",
    0,
    2
   ],
   "nlweb-schema-feeds": [
    "fail",
    0,
    1
   ],
   "mcp-well-known-discovery": [
    "warning",
    1,
    2
   ],
   "agent-mode-view": [
    "fail",
    0,
    2
   ],
   "link-headers-discovery": [
    "pass",
    1,
    1
   ],
   "markdown-url-fallback": [
    "fail",
    0,
    2
   ],
   "modular-llms-txt": [
    "fail",
    0,
    1
   ],
   "sitemap-lastmod": [
    "pass",
    1,
    1
   ],
   "robots-agent-user-policy": [
    "pass",
    2,
    2
   ],
   "llms-txt-exists": [
    "pass",
    1,
    1
   ],
   "llms-txt-formatting": [
    "warning",
    1,
    2
   ],
   "json-ld": [
    "warning",
    3,
    4
   ],
   "pricing-info": [
    "pass",
    3,
    3
   ],
   "public-api-docs": [
    "pass",
    3,
    3
   ],
   "agent-instruction": [
    "pass",
    3,
    3
   ],
   "skills-sh-quality": [
    "fail",
    0,
    2
   ],
   "json-ld-entity-linking": [
    "warning",
    1,
    2
   ],
   "metadata-completeness": [
    "pass",
    2,
    2
   ],
   "org-schema-completeness": [
    "warning",
    1,
    2
   ],
   "schema-type-breadth": [
    "fail",
    0,
    2
   ],
   "trust-anchors": [
    "pass",
    2,
    2
   ],
   "llms-txt-links-resolve": [
    "pass",
    2,
    2
   ],
   "markdown-link-alternate": [
    "fail",
    0,
    1
   ],
   "markdown-frontmatter": [
    "pass",
    1,
    1
   ],
   "redirect-hygiene": [
    "pass",
    1,
    1
   ],
   "page-token-budget": [
    "pass",
    1,
    1
   ],
   "code-fence-validity": [
    "pass",
    1,
    1
   ],
   "docs-auth-gate": [
    "pass",
    2,
    2
   ],
   "openapi-spec": [
    "fail",
    0,
    7
   ],
   "developer-portal": [
    "pass",
    6,
    6
   ],
   "api-catalog-rfc9727": [
    "fail",
    0,
    2
   ],
   "markdown-negotiation": [
    "pass",
    1,
    1
   ],
   "markdown-negotiation-vary": [
    "pass",
    1,
    1
   ],
   "agent-ua-markdown": [
    "fail",
    0,
    1
   ],
   "agent-crawler-reachability": [
    "pass",
    2,
    2
   ],
   "mcp-tool-descriptions": [
    "na",
    0,
    3
   ],
   "mcp-param-schemas": [
    "na",
    0,
    2
   ],
   "mcp-server-identity": [
    "na",
    0,
    1
   ],
   "mcp-tool-listing": [
    "na",
    0,
    3
   ],
   "mcp-tool-naming": [
    "na",
    0,
    2
   ],
   "public-api": [
    "pass",
    7,
    7
   ],
   "oauth-support": [
    "pass",
    5,
    5
   ],
   "scoped-permissions": [
    "fail",
    0,
    5
   ],
   "mcp-auth-mechanism": [
    "pass",
    2,
    2
   ],
   "mcp-oauth-metadata": [
    "pass",
    2,
    2
   ],
   "mcp-pkce-s256": [
    "pass",
    2,
    2
   ],
   "onboarding-friction": [
    "warning",
    1,
    2
   ],
   "web-bot-auth-directory": [
    "fail",
    0,
    2
   ],
   "oauth-protected-resource": [
    "pass",
    2,
    2
   ],
   "auth-md-exists": [
    "fail",
    0,
    2
   ],
   "auth-md-structure": [
    "fail",
    0,
    2
   ],
   "auth-md-walkthrough-simulation": [
    "na",
    0,
    2
   ],
   "agent-auth-discovery-metadata": [
    "fail",
    0,
    3
   ],
   "agent-auth-www-authenticate": [
    "pass",
    1,
    1
   ],
   "agent-auth-endpoints-reachable": [
    "fail",
    0,
    2
   ],
   "pap-discovery": [
    "na",
    0,
    2
   ],
   "pap-issuer-binding": [
    "na",
    0,
    2
   ],
   "pap-auth-config": [
    "na",
    0,
    2
   ],
   "pap-interfaces": [
    "na",
    0,
    2
   ],
   "pap-endpoint-enforcement": [
    "na",
    0,
    2
   ],
   "pap-cross-protocol": [
    "na",
    0,
    2
   ],
   "mcp-server": [
    "warning",
    5,
    6
   ],
   "mcp-error-handling": [
    "na",
    0,
    2
   ],
   "mcp-transport-modern": [
    "na",
    0,
    1
   ],
   "webmcp": [
    "fail",
    0,
    5
   ],
   "rate-limit-headers": [
    "fail",
    0,
    2
   ],
   "idempotency-key-support": [
    "fail",
    0,
    3
   ],
   "json-error-responses": [
    "fail",
    0,
    4
   ],
   "api-error-model": [
    "na",
    0,
    3
   ],
   "api-versioning-policy": [
    "na",
    0,
    3
   ],
   "pagination-shape": [
    "na",
    0,
    2
   ],
   "async-job-pattern": [
    "na",
    0,
    2
   ],
   "cli-tool": [
    "warning",
    2,
    3
   ],
   "rest-sdk-packages": [
    "pass",
    3,
    3
   ],
   "nlweb-ask": [
    "fail",
    0,
    1
   ],
   "nlweb-streaming": [
    "fail",
    0,
    1
   ],
   "response-schema-coverage": [
    "na",
    0,
    2
   ],
   "mcp-tool-annotations": [
    "na",
    0,
    2
   ],
   "mcp-server-card": [
    "fail",
    0,
    2
   ],
   "mcp-multi-surface-coverage": [
    "fail",
    0,
    2
   ],
   "sandbox-environment": [
    "fail",
    0,
    2
   ],
   "batch-endpoints": [
    "na",
    0,
    2
   ],
   "mcp-resource-listing": [
    "na",
    0,
    3
   ],
   "graphql-error-type-definition": [
    "fail",
    0,
    3
   ],
   "graphql-versioning-policy": [
    "fail",
    0,
    2
   ],
   "graphql-pagination-pattern": [
    "fail",
    0,
    2
   ],
   "graphql-async-job-pattern": [
    "fail",
    0,
    2
   ],
   "graphql-schema-completeness": [
    "na",
    0,
    3
   ],
   "graphql-batch-mutations": [
    "na",
    0,
    2
   ],
   "agent-friendly-404": [
    "warning",
    1,
    2
   ],
   "ax-document-structure": [
    "pass",
    3,
    3
   ],
   "ax-native-controls": [
    "pass",
    3,
    3
   ],
   "ax-accessible-names": [
    "pass",
    2,
    2
   ],
   "ax-form-labeling": [
    "pass",
    2,
    2
   ],
   "ax-tree-injection-safe": [
    "pass",
    2,
    2
   ],
   "mcp-app-registry": [
    "na",
    0,
    4
   ],
   "a2ui-support": [
    "fail",
    0,
    2
   ],
   "mcp-apps-ui-quality": [
    "na",
    0,
    4
   ],
   "mcp-view-domain": [
    "na",
    0,
    4
   ],
   "mcp-view-csp": [
    "na",
    0,
    4
   ],
   "api-schema-analysis": [
    "pass",
    2,
    2
   ],
   "function-calling-compat": [
    "fail",
    0,
    2
   ],
   "mcp-resource-quality": [
    "na",
    0,
    3
   ],
   "mpp-support": [
    "na",
    0,
    2
   ],
   "x402-support": [
    "na",
    0,
    2
   ],
   "ucp-support": [
    "na",
    0,
    3
   ],
   "acp-support": [
    "na",
    0,
    3
   ],
   "acp-delegate-payment": [
    "na",
    0,
    3
   ],
   "ap2-support": [
    "na",
    0,
    3
   ]
  },
  "flagged": [
   {
    "id": "openapi-spec",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 7,
    "tier": "required",
    "est": 3.8,
    "detail": "No OpenAPI/Swagger specification found"
   },
   {
    "id": "scoped-permissions",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 5,
    "tier": "recommended",
    "est": 2.7,
    "detail": "No declared OAuth scopes, security schemes, or scoped-permission documentation found"
   },
   {
    "id": "webmcp",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 5,
    "tier": "required",
    "est": 2.7,
    "detail": "No WebMCP support detected - no document.modelContext / navigator.modelContext usage found (scanned 22 of 22 same-origin script bundle(s) for modelContext registrations)"
   },
   {
    "id": "json-error-responses",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 4,
    "tier": "required",
    "est": 2.2,
    "detail": "API does not return JSON error responses (or no API detected)"
   },
   {
    "id": "graphql-error-type-definition",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": 1.6,
    "detail": "GraphQL introspection auth-gated and no typed graphql error model documentation found on GraphQL-tagged pages"
   },
   {
    "id": "idempotency-key-support",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": 1.6,
    "detail": "GraphQL introspection auth-gated and no idempotency documentation found on GraphQL-tagged pages"
   },
   {
    "id": "ard-catalog",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 1.4,
    "detail": "No /.well-known/ard.json, no same-site rel=\"ard\" link, and no legacy /.well-known/ai-catalog.json"
   },
   {
    "id": "mcp-registry-listed",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 1.4,
    "detail": "No verified entry in the official MCP Registry or on Smithery, and no npm or PyPI package of yours that runs as an MCP server. To pass,"
   },
   {
    "id": "agent-discovery-file",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 1.1,
    "detail": "No agent discovery file found"
   },
   {
    "id": "function-calling-compat",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.1,
    "detail": "No API spec found - function calling requires discoverable endpoints"
   },
   {
    "id": "graphql-async-job-pattern",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.1,
    "detail": "GraphQL introspection auth-gated and no graphql async-job pattern documentation found on GraphQL-tagged pages"
   },
   {
    "id": "graphql-pagination-pattern",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.1,
    "detail": "GraphQL introspection auth-gated and no graphql pagination pattern documentation found on GraphQL-tagged pages"
   },
   {
    "id": "graphql-versioning-policy",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.1,
    "detail": "GraphQL introspection auth-gated and no graphql versioning / deprecation policy documentation found on GraphQL-tagged pages"
   },
   {
    "id": "rate-limit-headers",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.1,
    "detail": "GraphQL introspection auth-gated and no header convention documented on GraphQL-tagged pages"
   },
   {
    "id": "schema-type-breadth",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.1,
    "detail": "No extended schema types found - AI can only answer basic questions about this entity"
   },
   {
    "id": "agent-auth-discovery-metadata",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": 0.7,
    "detail": "Neither /.well-known/oauth-protected-resource nor /.well-known/oauth-authorization-server found. Probed: pagerduty.com, mcp.pagerduty.com, api.pagerduty.com."
   },
   {
    "id": "agent-friendly-404",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "The nonexistent path https://pagerduty.com/__ora-404-probe-vr7gkrj1 correctly returns HTTP 404. Partial credit: no Markdown error body was detected."
   },
   {
    "id": "cli-tool",
    "layer": "usability",
    "status": "warning",
    "score": 2,
    "max": 3,
    "tier": "recommended",
    "est": 0.5,
    "detail": "CLI tool mentioned in llms.txt"
   },
   {
    "id": "content-no-js",
    "layer": "accessibility",
    "status": "warning",
    "score": 2,
    "max": 3,
    "tier": "required",
    "est": 0.5,
    "detail": "Homepage: 6712 chars with H1, but 4.5% content ratio is below the 5% target. 5 of 5 sampled inner pages have text without JavaScript."
   },
   {
    "id": "json-ld",
    "layer": "accessibility",
    "status": "warning",
    "score": 3,
    "max": 4,
    "tier": "required",
    "est": 0.5,
    "detail": "JSON-LD Organization found - missing description on this entity"
   },
   {
    "id": "json-ld-entity-linking",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "Entity linking to linkedin.com - add more authority profiles (Wikipedia, Wikidata, LinkedIn, GitHub)"
   },
   {
    "id": "llms-txt-formatting",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "The llms.txt contains markdown links and has 211 lines, but it doesn't start with a markdown heading."
   },
   {
    "id": "mcp-server",
    "layer": "usability",
    "status": "warning",
    "score": 5,
    "max": 6,
    "tier": "required",
    "est": 0.5,
    "detail": "MCP server detected at https://mcp.pagerduty.com/mcp; it requires authentication. Presence is verified (5/6), but Ora could not inspect its tools or verify access scopes without credentials."
   },
   {
    "id": "onboarding-friction",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "Onboarding signals described but not verified live: free tier available, self-serve key generation, sandbox/test environment, zero-auth access"
   },
   {
    "id": "org-schema-completeness",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "Organization schema found but missing: contactPoint, address"
   },
   {
    "id": "agent-auth-endpoints-reachable",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.4,
    "detail": "No agent_auth endpoint URIs found in AS metadata or /auth.md prose; nothing to probe"
   },
   {
    "id": "auth-md-exists",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.4,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "auth-md-structure",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.4,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "mcp-multi-surface-coverage",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.4,
    "detail": "You run an MCP server for your product, but not one for your documentation. This bonus needs two MCP servers: one for your product so agents can take actions,"
   },
   {
    "id": "mcp-server-card",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.4,
    "detail": "No MCP server card found for https://mcp.pagerduty.com/mcp (checked /.well-known/mcp/server-card.json, the site's ai-catalog.json, servers[].card in mcp.json, and <server>/server-card)"
   },
   {
    "id": "sandbox-environment",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.4,
    "detail": "No sandbox or test environment found"
   },
   {
    "id": "a2a-agent-card",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.3,
    "detail": "No A2A agent card found at /.well-known/agent-card.json"
   },
   {
    "id": "api-catalog-rfc9727",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.3,
    "detail": "No /.well-known/api-catalog found (RFC 9727)"
   },
   {
    "id": "chatgpt-app-listed",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.3,
    "detail": "Not found in ChatGPT app directory"
   },
   {
    "id": "mcp-well-known-discovery",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.1,
    "detail": "MCP server at https://mcp.pagerduty.com/mcp - list its server card, hosted on your own domain, in /.well-known/ai-catalog.json so MCP clients can discover it"
   },
   {
    "id": "a2ui-support",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No A2UI or generative UI support detected"
   },
   {
    "id": "agent-mode-view",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "?mode=agent returns same content as homepage (no dedicated agent view)"
   },
   {
    "id": "agent-plugins-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No Agent Plugins manifest (plugin.json) found in discovered repos"
   },
   {
    "id": "agent-rules-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Could not locate a public repo containing agent configs or rules. If our probes missed it, AI coding agents likely will too - link the repo from your homepage or docs so it's discoverable."
   },
   {
    "id": "agent-ua-markdown",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly."
   },
   {
    "id": "markdown-link-alternate",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No sampled page advertises a markdown alternate. Add <link rel=\"alternate\" type=\"text/markdown\" href=\"...\"> (or the equivalent Link response header) pointing at a markdown twin of the page."
   },
   {
    "id": "markdown-url-fallback",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "Homepage does not support the .md suffix. Probed https://pagerduty.com/index.md and it did not return markdown (expected text/markdown content-type or a heading-led non-HTML body)."
   },
   {
    "id": "modular-llms-txt",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No section-level llms.txt found. Tried /docs/llms.txt, /api/llms.txt, /developers/llms.txt, /guides/llms.txt, /reference/llms.txt, /pricing/llms.txt, /search/llms.txt, /de/llms.txt, /fr/llms.txt, /contact-us/llms.txt."
   },
   {
    "id": "nlweb-ask",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No NLWeb-conformant /ask endpoint found via GET or POST"
   },
   {
    "id": "nlweb-schema-feeds",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No schemamap: directive in robots.txt"
   },
   {
    "id": "nlweb-streaming",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "NLWeb /ask does not support SSE streaming via GET or POST"
   },
   {
    "id": "pricing-md",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No pricing.md found - agents need machine-readable pricing to compare products and make purchase recommendations"
   },
   {
    "id": "registry-branding",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No registry branding (name, icon, description) found"
   },
   {
    "id": "skills-sh-listed",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No official skills self-published on skills.sh (73 community skills with potential relation to this domain found, but only self-published official skills count)"
   },
   {
    "id": "skills-sh-quality",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No official skills on skills.sh to evaluate"
   },
   {
    "id": "web-bot-auth-directory",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No /.well-known/http-message-signatures-directory found"
   }
  ],
  "seen": {
   "brand-search-accuracy": "pagerduty.com ranks #1 for \"PagerDuty incident management\"",
   "wikipedia-presence": "Wikipedia \"PagerDuty\" and Wikidata Q48989804 both verified - domain confirmed on both sources",
   "robots-ai-policy-quality": "AI search crawlers: allowed in 3 of 3 checks (3 crawlers on 1 page). AI training crawlers: allowed in 2 of 2 checks (2 crawlers on 1 page), not scored.",
   "noindex-directives": "No noindex on the homepage: no robots, googlebot or bingbot meta tag and no X-Robots-Tag header hides it from search.",
   "sitemap": "Valid sitemap found at https://www.pagerduty.com/sitemap_index.xml with multiple sitemaps entries",
   "content-no-js": "Homepage: 6712 chars with H1, but 4.5% content ratio is below the 5% target. 5 of 5 sampled inner pages have text without JavaScript.",
   "bot-detection": "Site accessible to 4 agent user-agents (ChatGPT-User, OAI-SearchBot, Claude-User, PerplexityBot).",
   "agent-discovery-file": "No agent discovery file found",
   "a2a-agent-card": "No A2A agent card found at /.well-known/agent-card.json",
   "mcp-well-known-discovery": "MCP server at https://mcp.pagerduty.com/mcp - list its server card, hosted on your own domain, in /.well-known/ai-catalog.json so MCP clients can discover it",
   "robots-agent-user-policy": "No applicable crawl or usage restriction found for 3 user-triggered agents (chatgpt-user, claude-user, perplexity-user) on 1 public page: https://pagerduty.com/. Declared policy only;",
   "llms-txt-exists": "Found the llms.txt at https://docs.pagerduty.com/llms.txt.",
   "llms-txt-formatting": "The llms.txt contains markdown links and has 211 lines, but it doesn't start with a markdown heading.",
   "json-ld": "JSON-LD Organization found - missing description on this entity",
   "public-api-docs": "Documentation site found at https://docs.pagerduty.com",
   "metadata-completeness": "All metadata signals present: canonical URL, lang=\"en\", og:image, og:type",
   "page-token-budget": "All 6 measured pages fit an agent context budget (largest ~3K tokens)",
   "docs-auth-gate": "All 5 sampled pages are publicly readable (5 with substantive content)",
   "openapi-spec": "No OpenAPI/Swagger specification found",
   "developer-portal": "Developer portal found at /docs",
   "markdown-negotiation": "Returns markdown when requested via Accept header",
   "agent-ua-markdown": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly.",
   "agent-crawler-reachability": "Reachable to every agent we tested - ChatGPT-User: reachable, OAI-SearchBot: reachable, Claude-User: reachable, PerplexityBot: reachable",
   "public-api": "REST API documentation found at https://docs.pagerduty.com/get-started.md. GraphQL endpoint at https://api.pagerduty.com/graphql is reachable; introspection requires authentication (API key / OAuth),",
   "oauth-support": "OAuth authorization server metadata at https://app.pagerduty.com/global/oauth/anonymous",
   "mcp-server": "MCP server detected at https://mcp.pagerduty.com/mcp; it requires authentication. Presence is verified (5/6), but Ora could not inspect its tools or verify access scopes without credentials.",
   "webmcp": "No WebMCP support detected - no document.modelContext / navigator.modelContext usage found (scanned 22 of 22 same-origin script bundle(s) for modelContext registrations)",
   "cli-tool": "CLI tool mentioned in llms.txt",
   "rest-sdk-packages": "SDK packages found across 4 ecosystems: npm, pypi, go, rubygems",
   "nlweb-ask": "No NLWeb-conformant /ask endpoint found via GET or POST",
   "mpp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "x402-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "ucp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "acp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "ap2-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites"
  }
 },
 {
  "slug": "paypal",
  "name": "PayPal",
  "domain": "paypal.com",
  "finalUrl": "https://www.paypal.com/us/home",
  "read": "2026-11-09",
  "scannedAt": "2026-11-04T19:32:13.74+00:00",
  "score": 70,
  "max": 100,
  "grade": "B",
  "category": "Payments & Fintech",
  "scoringVersion": null,
  "rulesUrl": null,
  "summary": "",
  "layers": [
   {
    "id": "discovery",
    "name": "Discovery",
    "score": 15,
    "max": 16
   },
   {
    "id": "accessibility",
    "name": "Access",
    "score": 38,
    "max": 59
   },
   {
    "id": "usability",
    "name": "Usability",
    "score": 44,
    "max": 82
   },
   {
    "id": "payments",
    "name": "Payments",
    "score": 3,
    "max": 3
   }
  ],
  "checks": {
   "ard-catalog": [
    "fail",
    0,
    1
   ],
   "ai-catalog-published": [
    "na",
    0,
    1
   ],
   "ard-entries-valid": [
    "na",
    0,
    2
   ],
   "ard-trust-manifest": [
    "na",
    0,
    2
   ],
   "agentic-search-usecase": [
    "na",
    0,
    6
   ],
   "agentic-search-specific": [
    "pass",
    3,
    3
   ],
   "brand-search-accuracy": [
    "pass",
    3,
    3
   ],
   "wikipedia-presence": [
    "warning",
    2,
    4
   ],
   "robots-ai-policy-quality": [
    "pass",
    2,
    2
   ],
   "mcp-registry-listed": [
    "pass",
    1,
    1
   ],
   "npm-sdk-package": [
    "pass",
    1,
    1
   ],
   "agent-rules-repo": [
    "fail",
    0,
    1
   ],
   "agent-plugins-repo": [
    "fail",
    0,
    1
   ],
   "registry-branding": [
    "fail",
    0,
    2
   ],
   "chatgpt-app-listed": [
    "pass",
    2,
    2
   ],
   "noindex-directives": [
    "pass",
    1,
    1
   ],
   "sitemap": [
    "pass",
    2,
    2
   ],
   "content-no-js": [
    "pass",
    3,
    3
   ],
   "bot-detection": [
    "pass",
    2,
    2
   ],
   "agent-discovery-file": [
    "fail",
    0,
    2
   ],
   "agent-skills-index-v2": [
    "na",
    0,
    2
   ],
   "a2a-agent-card": [
    "fail",
    0,
    2
   ],
   "skills-sh-listed": [
    "pass",
    1,
    1
   ],
   "pricing-md": [
    "fail",
    0,
    2
   ],
   "nlweb-schema-feeds": [
    "fail",
    0,
    1
   ],
   "mcp-well-known-discovery": [
    "warning",
    1,
    2
   ],
   "agent-mode-view": [
    "fail",
    0,
    2
   ],
   "link-headers-discovery": [
    "fail",
    0,
    1
   ],
   "markdown-url-fallback": [
    "fail",
    0,
    2
   ],
   "modular-llms-txt": [
    "fail",
    0,
    1
   ],
   "sitemap-lastmod": [
    "fail",
    0,
    1
   ],
   "robots-agent-user-policy": [
    "pass",
    2,
    2
   ],
   "llms-txt-exists": [
    "pass",
    1,
    1
   ],
   "llms-txt-formatting": [
    "warning",
    1,
    2
   ],
   "json-ld": [
    "pass",
    4,
    4
   ],
   "pricing-info": [
    "warning",
    1,
    3
   ],
   "public-api-docs": [
    "pass",
    3,
    3
   ],
   "agent-instruction": [
    "fail",
    0,
    3
   ],
   "skills-sh-quality": [
    "warning",
    1,
    2
   ],
   "json-ld-entity-linking": [
    "warning",
    1,
    2
   ],
   "metadata-completeness": [
    "pass",
    2,
    2
   ],
   "org-schema-completeness": [
    "warning",
    1,
    2
   ],
   "schema-type-breadth": [
    "warning",
    1,
    2
   ],
   "trust-anchors": [
    "warning",
    1,
    2
   ],
   "llms-txt-links-resolve": [
    "pass",
    2,
    2
   ],
   "markdown-link-alternate": [
    "fail",
    0,
    1
   ],
   "markdown-frontmatter": [
    "na",
    0,
    1
   ],
   "redirect-hygiene": [
    "pass",
    1,
    1
   ],
   "page-token-budget": [
    "pass",
    1,
    1
   ],
   "code-fence-validity": [
    "pass",
    1,
    1
   ],
   "docs-auth-gate": [
    "fail",
    0,
    2
   ],
   "openapi-spec": [
    "fail",
    0,
    7
   ],
   "developer-portal": [
    "pass",
    6,
    6
   ],
   "api-catalog-rfc9727": [
    "fail",
    0,
    2
   ],
   "markdown-negotiation": [
    "fail",
    0,
    1
   ],
   "markdown-negotiation-vary": [
    "fail",
    0,
    1
   ],
   "agent-ua-markdown": [
    "fail",
    0,
    1
   ],
   "agent-crawler-reachability": [
    "pass",
    2,
    2
   ],
   "mcp-tool-descriptions": [
    "na",
    0,
    3
   ],
   "mcp-param-schemas": [
    "na",
    0,
    2
   ],
   "mcp-server-identity": [
    "na",
    0,
    1
   ],
   "mcp-tool-listing": [
    "na",
    0,
    3
   ],
   "mcp-tool-naming": [
    "na",
    0,
    2
   ],
   "public-api": [
    "pass",
    7,
    7
   ],
   "oauth-support": [
    "pass",
    5,
    5
   ],
   "scoped-permissions": [
    "fail",
    0,
    5
   ],
   "mcp-auth-mechanism": [
    "pass",
    2,
    2
   ],
   "mcp-oauth-metadata": [
    "pass",
    2,
    2
   ],
   "mcp-pkce-s256": [
    "pass",
    2,
    2
   ],
   "onboarding-friction": [
    "pass",
    2,
    2
   ],
   "web-bot-auth-directory": [
    "fail",
    0,
    2
   ],
   "oauth-protected-resource": [
    "pass",
    2,
    2
   ],
   "auth-md-exists": [
    "fail",
    0,
    2
   ],
   "auth-md-structure": [
    "fail",
    0,
    2
   ],
   "auth-md-walkthrough-simulation": [
    "na",
    0,
    2
   ],
   "agent-auth-discovery-metadata": [
    "warning",
    1,
    3
   ],
   "agent-auth-www-authenticate": [
    "pass",
    1,
    1
   ],
   "agent-auth-endpoints-reachable": [
    "fail",
    0,
    2
   ],
   "pap-discovery": [
    "na",
    0,
    2
   ],
   "pap-issuer-binding": [
    "na",
    0,
    2
   ],
   "pap-auth-config": [
    "na",
    0,
    2
   ],
   "pap-interfaces": [
    "na",
    0,
    2
   ],
   "pap-endpoint-enforcement": [
    "na",
    0,
    2
   ],
   "pap-cross-protocol": [
    "na",
    0,
    2
   ],
   "mcp-server": [
    "warning",
    5,
    6
   ],
   "mcp-error-handling": [
    "na",
    0,
    2
   ],
   "mcp-transport-modern": [
    "na",
    0,
    1
   ],
   "webmcp": [
    "fail",
    0,
    5
   ],
   "rate-limit-headers": [
    "fail",
    0,
    2
   ],
   "idempotency-key-support": [
    "fail",
    0,
    3
   ],
   "json-error-responses": [
    "fail",
    0,
    4
   ],
   "api-error-model": [
    "na",
    0,
    3
   ],
   "api-versioning-policy": [
    "na",
    0,
    3
   ],
   "pagination-shape": [
    "na",
    0,
    2
   ],
   "async-job-pattern": [
    "na",
    0,
    2
   ],
   "cli-tool": [
    "fail",
    0,
    3
   ],
   "rest-sdk-packages": [
    "warning",
    2,
    3
   ],
   "nlweb-ask": [
    "fail",
    0,
    1
   ],
   "nlweb-streaming": [
    "fail",
    0,
    1
   ],
   "response-schema-coverage": [
    "na",
    0,
    2
   ],
   "mcp-tool-annotations": [
    "na",
    0,
    2
   ],
   "mcp-server-card": [
    "fail",
    0,
    2
   ],
   "mcp-multi-surface-coverage": [
    "fail",
    0,
    2
   ],
   "sandbox-environment": [
    "pass",
    2,
    2
   ],
   "batch-endpoints": [
    "na",
    0,
    2
   ],
   "mcp-resource-listing": [
    "na",
    0,
    3
   ],
   "graphql-error-type-definition": [
    "fail",
    0,
    3
   ],
   "graphql-versioning-policy": [
    "fail",
    0,
    2
   ],
   "graphql-pagination-pattern": [
    "fail",
    0,
    2
   ],
   "graphql-async-job-pattern": [
    "fail",
    0,
    2
   ],
   "graphql-schema-completeness": [
    "na",
    0,
    3
   ],
   "graphql-batch-mutations": [
    "na",
    0,
    2
   ],
   "agent-friendly-404": [
    "warning",
    1,
    2
   ],
   "ax-document-structure": [
    "pass",
    3,
    3
   ],
   "ax-native-controls": [
    "pass",
    3,
    3
   ],
   "ax-accessible-names": [
    "pass",
    2,
    2
   ],
   "ax-form-labeling": [
    "na",
    0,
    2
   ],
   "ax-tree-injection-safe": [
    "pass",
    2,
    2
   ],
   "mcp-app-registry": [
    "na",
    0,
    4
   ],
   "a2ui-support": [
    "na",
    0,
    2
   ],
   "mcp-apps-ui-quality": [
    "na",
    0,
    4
   ],
   "mcp-view-domain": [
    "na",
    0,
    4
   ],
   "mcp-view-csp": [
    "na",
    0,
    4
   ],
   "api-schema-analysis": [
    "fail",
    0,
    2
   ],
   "function-calling-compat": [
    "fail",
    0,
    2
   ],
   "mcp-resource-quality": [
    "na",
    0,
    3
   ],
   "mpp-support": [
    "na",
    0,
    2
   ],
   "x402-support": [
    "na",
    0,
    2
   ],
   "ucp-support": [
    "pass",
    3,
    3
   ],
   "acp-support": [
    "na",
    0,
    3
   ],
   "acp-delegate-payment": [
    "na",
    0,
    3
   ],
   "ap2-support": [
    "na",
    0,
    3
   ]
  },
  "flagged": [
   {
    "id": "openapi-spec",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 7,
    "tier": "required",
    "est": 3.6,
    "detail": "No OpenAPI/Swagger specification found"
   },
   {
    "id": "scoped-permissions",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 5,
    "tier": "recommended",
    "est": 2.4,
    "detail": "No declared OAuth scopes, security schemes, or scoped-permission documentation found"
   },
   {
    "id": "webmcp",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 5,
    "tier": "required",
    "est": 2.4,
    "detail": "No WebMCP support detected - no document.modelContext / navigator.modelContext usage found (scanned 1 of 1 same-origin script bundle(s) for modelContext registrations)"
   },
   {
    "id": "json-error-responses",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 4,
    "tier": "required",
    "est": 2,
    "detail": "API does not return JSON error responses (or no API detected)"
   },
   {
    "id": "agent-instruction",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "required",
    "est": 1.5,
    "detail": "No agent instruction file with when-to-use guidance found"
   },
   {
    "id": "cli-tool",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": 1.5,
    "detail": "No CLI tool found"
   },
   {
    "id": "graphql-error-type-definition",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": 1.5,
    "detail": "GraphQL introspection auth-gated and no typed graphql error model documentation found on GraphQL-tagged pages"
   },
   {
    "id": "idempotency-key-support",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": 1.5,
    "detail": "GraphQL introspection auth-gated and no idempotency documentation found on GraphQL-tagged pages"
   },
   {
    "id": "ard-catalog",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 1.3,
    "detail": "No /.well-known/ard.json, no same-site rel=\"ard\" link, and no legacy /.well-known/ai-catalog.json"
   },
   {
    "id": "agent-discovery-file",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 1,
    "detail": "No agent discovery file found"
   },
   {
    "id": "api-schema-analysis",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1,
    "detail": "GraphQL: introspection auth-gated and no schema evidence in docs"
   },
   {
    "id": "docs-auth-gate",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1,
    "detail": "4 of 5 sampled pages require authentication: https://www.paypal.com/ae/cshelp/article/does-paypal-cover-my-purchase-if-theres-a-problem-help364,"
   },
   {
    "id": "function-calling-compat",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1,
    "detail": "No API spec found - function calling requires discoverable endpoints"
   },
   {
    "id": "graphql-async-job-pattern",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1,
    "detail": "GraphQL introspection auth-gated and no graphql async-job pattern documentation found on GraphQL-tagged pages"
   },
   {
    "id": "graphql-pagination-pattern",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1,
    "detail": "GraphQL introspection auth-gated and no graphql pagination pattern documentation found on GraphQL-tagged pages"
   },
   {
    "id": "graphql-versioning-policy",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1,
    "detail": "GraphQL introspection auth-gated and no graphql versioning / deprecation policy documentation found on GraphQL-tagged pages"
   },
   {
    "id": "pricing-info",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 3,
    "tier": "required",
    "est": 1,
    "detail": "JSON-LD offers found, but none has a price"
   },
   {
    "id": "rate-limit-headers",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1,
    "detail": "GraphQL introspection auth-gated and no header convention documented on GraphQL-tagged pages"
   },
   {
    "id": "agent-friendly-404",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "The nonexistent path https://paypal.com/__ora-404-probe-zqvy3s6r correctly returns HTTP 404. Partial credit: no Markdown error body was detected."
   },
   {
    "id": "json-ld-entity-linking",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "Entity linking to wikipedia.org - add more authority profiles (Wikipedia, Wikidata, LinkedIn, GitHub)"
   },
   {
    "id": "llms-txt-formatting",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "The llms.txt is well-formatted with markdown links, but at 40,050 characters it exceeds the 30,000-character recommendation for a navigation index."
   },
   {
    "id": "mcp-server",
    "layer": "usability",
    "status": "warning",
    "score": 5,
    "max": 6,
    "tier": "required",
    "est": 0.5,
    "detail": "MCP server detected at https://mcp.paypal.com/mcp; it requires authentication. Presence is verified (5/6), but Ora could not inspect its tools or verify access scopes without credentials."
   },
   {
    "id": "org-schema-completeness",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "Organization schema found but missing: contactPoint, address"
   },
   {
    "id": "rest-sdk-packages",
    "layer": "usability",
    "status": "warning",
    "score": 2,
    "max": 3,
    "tier": "recommended",
    "est": 0.5,
    "detail": "SDK packages found in npm, rubygems"
   },
   {
    "id": "schema-type-breadth",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "Some extended schema types found: Service - add 2 more types that match what the homepage shows, for full coverage"
   },
   {
    "id": "trust-anchors",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "required",
    "est": 0.5,
    "detail": "About, Privacy pages verified - missing: Contact"
   },
   {
    "id": "a2a-agent-card",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.4,
    "detail": "No A2A agent card found at /.well-known/agent-card.json"
   },
   {
    "id": "agent-auth-discovery-metadata",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 3,
    "tier": "recommended",
    "est": 0.4,
    "detail": "PRM + AS metadata both present (PRM discovered at https://mcp.paypal.com) (AS metadata fetched from advertised origin https://mcp.paypal.com) but AS metadata has no agent_auth block"
   },
   {
    "id": "agent-auth-endpoints-reachable",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.4,
    "detail": "No agent_auth endpoint URIs found in AS metadata or /auth.md prose; nothing to probe"
   },
   {
    "id": "api-catalog-rfc9727",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.4,
    "detail": "No /.well-known/api-catalog found (RFC 9727)"
   },
   {
    "id": "auth-md-exists",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.4,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "auth-md-structure",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.4,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "mcp-multi-surface-coverage",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.4,
    "detail": "You run an MCP server for your product, but not one for your documentation. This bonus needs two MCP servers: one for your product so agents can take actions,"
   },
   {
    "id": "mcp-server-card",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.4,
    "detail": "No MCP server card found for https://mcp.paypal.com/mcp (checked /.well-known/mcp/server-card.json, the site's ai-catalog.json, servers[].card in mcp.json, and <server>/server-card)"
   },
   {
    "id": "link-headers-discovery",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 0.2,
    "detail": "No HTTP Link response headers (RFC 8288) found"
   },
   {
    "id": "markdown-negotiation-vary",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.2,
    "detail": "Homepage https://paypal.com does not meet the Markdown negotiation requirements: Accept: text/markdown returned text/html; charset=utf-8; Vary header missing Accept (got \"accept-encoding\")"
   },
   {
    "id": "mcp-well-known-discovery",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.2,
    "detail": "MCP server at https://mcp.paypal.com/mcp - list its server card, hosted on your own domain, in /.well-known/ai-catalog.json so MCP clients can discover it"
   },
   {
    "id": "sitemap-lastmod",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.2,
    "detail": "None of the 500 sampled sitemap entries carries a lastmod date. Add <lastmod> (W3C datetime) so agents can prioritize fresh content."
   },
   {
    "id": "wikipedia-presence",
    "layer": "discovery",
    "status": "warning",
    "score": 2,
    "max": 4,
    "tier": "recommended",
    "est": 0.1,
    "detail": "Wikidata Q483959 (PayPal) verified - draft a Wikipedia page with cited references to complete knowledge graph coverage"
   },
   {
    "id": "agent-mode-view",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "?mode=agent returns same content as homepage (no dedicated agent view)"
   },
   {
    "id": "agent-plugins-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No Agent Plugins manifest (plugin.json) found in discovered repos"
   },
   {
    "id": "agent-rules-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Could not locate a public repo containing agent configs or rules. If our probes missed it, AI coding agents likely will too - link the repo from your homepage or docs so it's discoverable."
   },
   {
    "id": "agent-ua-markdown",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly."
   },
   {
    "id": "markdown-link-alternate",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No sampled page advertises a markdown alternate. Add <link rel=\"alternate\" type=\"text/markdown\" href=\"...\"> (or the equivalent Link response header) pointing at a markdown twin of the page."
   },
   {
    "id": "markdown-negotiation",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Missing markdown content negotiation. Homepage returned text/html when probed with Accept: text/markdown (expected text/markdown), and none of the well-known root paths (/llms.md, /auth.md, /agents.md, /developers.md, /api.md, /index.md,"
   },
   {
    "id": "markdown-url-fallback",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "Homepage does not support the .md suffix. Probed https://paypal.com/index.md and it did not return markdown (expected text/markdown content-type or a heading-led non-HTML body)."
   },
   {
    "id": "modular-llms-txt",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No section-level llms.txt found. Tried /docs/llms.txt, /api/llms.txt, /developers/llms.txt, /guides/llms.txt, /reference/llms.txt, /signin/llms.txt, /home/llms.txt, /business/llms.txt."
   },
   {
    "id": "nlweb-ask",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No NLWeb-conformant /ask endpoint found via GET or POST"
   },
   {
    "id": "nlweb-schema-feeds",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No schemamap: directive in robots.txt"
   },
   {
    "id": "nlweb-streaming",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "NLWeb /ask does not support SSE streaming via GET or POST"
   },
   {
    "id": "pricing-md",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No pricing.md found - agents need machine-readable pricing to compare products and make purchase recommendations"
   },
   {
    "id": "registry-branding",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No registry branding (name, icon, description) found"
   },
   {
    "id": "skills-sh-quality",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "Skills.sh presence exists but limited - 2 skills (goal: 5+), 30 installs (goal: 200+)"
   },
   {
    "id": "web-bot-auth-directory",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No /.well-known/http-message-signatures-directory found"
   }
  ],
  "seen": {
   "brand-search-accuracy": "paypal.com ranks #2 for \"PayPal payment processing\"",
   "wikipedia-presence": "Wikidata Q483959 (PayPal) verified - draft a Wikipedia page with cited references to complete knowledge graph coverage",
   "robots-ai-policy-quality": "AI search crawlers: allowed in 3 of 3 checks (3 crawlers on 1 page). AI training crawlers: allowed in 2 of 2 checks (2 crawlers on 1 page), not scored.",
   "noindex-directives": "No noindex on the homepage: no robots, googlebot or bingbot meta tag and no X-Robots-Tag header hides it from search.",
   "sitemap": "Valid sitemap found at https://www.paypal.com/paypal-sitemap-index.xml with multiple sitemaps entries",
   "content-no-js": "Homepage: 9095 chars, semantic headings (1 H1 + 12 H2s + 18 H3s), 9.8% content ratio. 1 of 1 sampled inner page has text without JavaScript (4 skipped).",
   "bot-detection": "Site accessible to 4 agent user-agents (ChatGPT-User, OAI-SearchBot, Claude-User, PerplexityBot).",
   "agent-discovery-file": "No agent discovery file found",
   "a2a-agent-card": "No A2A agent card found at /.well-known/agent-card.json",
   "mcp-well-known-discovery": "MCP server at https://mcp.paypal.com/mcp - list its server card, hosted on your own domain, in /.well-known/ai-catalog.json so MCP clients can discover it",
   "robots-agent-user-policy": "No applicable crawl or usage restriction found for 3 user-triggered agents (chatgpt-user, claude-user, perplexity-user) on 1 public page: https://paypal.com/. Declared policy only;",
   "llms-txt-exists": "Found the llms.txt at https://developer.paypal.com/llms.txt.",
   "llms-txt-formatting": "The llms.txt is well-formatted with markdown links, but at 40,050 characters it exceeds the 30,000-character recommendation for a navigation index.",
   "json-ld": "Rich JSON-LD identity: SoftwareApplication with name, description, url, and category/offers (1 block(s))",
   "public-api-docs": "Documentation site found at https://developer.paypal.com",
   "metadata-completeness": "All metadata signals present: canonical URL, lang=\"en-US\", og:image, og:type",
   "page-token-budget": "All 2 measured pages fit an agent context budget (largest ~2K tokens)",
   "docs-auth-gate": "4 of 5 sampled pages require authentication: https://www.paypal.com/ae/cshelp/article/does-paypal-cover-my-purchase-if-theres-a-problem-help364,",
   "openapi-spec": "No OpenAPI/Swagger specification found",
   "developer-portal": "Developer portal found at https://developer.paypal.com",
   "markdown-negotiation": "Missing markdown content negotiation. Homepage returned text/html when probed with Accept: text/markdown (expected text/markdown), and none of the well-known root paths (/llms.md, /auth.md, /agents.md, /developers.md,",
   "agent-ua-markdown": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly.",
   "agent-crawler-reachability": "Reachable to every agent we tested - ChatGPT-User: reachable, OAI-SearchBot: reachable, Claude-User: reachable, PerplexityBot: reachable",
   "public-api": "API described in documentation at https://developer.paypal.com but no machine-verifiable API surface confirmed. GraphQL endpoint at https://paypal.com/api/graphql is reachable;",
   "oauth-support": "OAuth authorization server metadata at https://mcp.paypal.com",
   "mcp-server": "MCP server detected at https://mcp.paypal.com/mcp; it requires authentication. Presence is verified (5/6), but Ora could not inspect its tools or verify access scopes without credentials.",
   "webmcp": "No WebMCP support detected - no document.modelContext / navigator.modelContext usage found (scanned 1 of 1 same-origin script bundle(s) for modelContext registrations)",
   "cli-tool": "No CLI tool found",
   "rest-sdk-packages": "SDK packages found in npm, rubygems",
   "nlweb-ask": "No NLWeb-conformant /ask endpoint found via GET or POST",
   "mpp-support": "Not required: UCP already provides agentic payment support, and one protocol is sufficient (UCP discovery profile at https://paypal.com/.well-known/ucp; version 2026-04-08; capabilities: dev.ucp.shopping.checkout,",
   "x402-support": "Not required: UCP already provides agentic payment support, and one protocol is sufficient (UCP discovery profile at https://paypal.com/.well-known/ucp; version 2026-04-08; capabilities: dev.ucp.shopping.checkout,",
   "ucp-support": "UCP discovery profile at https://paypal.com/.well-known/ucp; version 2026-04-08; capabilities: dev.ucp.shopping.checkout, dev.ucp.shopping.fulfillment, dev.ucp.shopping.order",
   "acp-support": "Not required: UCP already provides agentic payment support, and one protocol is sufficient (UCP discovery profile at https://paypal.com/.well-known/ucp; version 2026-04-08; capabilities: dev.ucp.shopping.checkout,",
   "ap2-support": "Not required: UCP already provides agentic payment support, and one protocol is sufficient (UCP discovery profile at https://paypal.com/.well-known/ucp; version 2026-04-08; capabilities: dev.ucp.shopping.checkout,"
  }
 },
 {
  "slug": "plaid",
  "name": "Plaid",
  "domain": "plaid.com",
  "finalUrl": "https://plaid.com/",
  "read": "2026-11-09",
  "scannedAt": "2026-11-05T05:50:13.97+00:00",
  "score": 72,
  "max": 100,
  "grade": "B",
  "category": "Payments & Fintech",
  "scoringVersion": null,
  "rulesUrl": null,
  "summary": "Plaid provides financial account linking SDKs and registry listings, but lacks a published OpenAPI specification.",
  "layers": [
   {
    "id": "discovery",
    "name": "Discovery",
    "score": 11,
    "max": 16
   },
   {
    "id": "accessibility",
    "name": "Access",
    "score": 47,
    "max": 61
   },
   {
    "id": "usability",
    "name": "Usability",
    "score": 51,
    "max": 73
   },
   {
    "id": "payments",
    "name": "Payments",
    "score": 0,
    "max": 0
   }
  ],
  "checks": {
   "ard-catalog": [
    "fail",
    0,
    1
   ],
   "ai-catalog-published": [
    "na",
    0,
    1
   ],
   "ard-entries-valid": [
    "na",
    0,
    2
   ],
   "ard-trust-manifest": [
    "na",
    0,
    2
   ],
   "agentic-search-usecase": [
    "na",
    0,
    6
   ],
   "agentic-search-specific": [
    "warning",
    1,
    3
   ],
   "brand-search-accuracy": [
    "warning",
    1,
    3
   ],
   "wikipedia-presence": [
    "pass",
    4,
    4
   ],
   "robots-ai-policy-quality": [
    "pass",
    2,
    2
   ],
   "mcp-registry-listed": [
    "pass",
    1,
    1
   ],
   "npm-sdk-package": [
    "pass",
    1,
    1
   ],
   "agent-rules-repo": [
    "fail",
    0,
    1
   ],
   "agent-plugins-repo": [
    "fail",
    0,
    1
   ],
   "registry-branding": [
    "fail",
    0,
    2
   ],
   "chatgpt-app-listed": [
    "fail",
    0,
    2
   ],
   "noindex-directives": [
    "pass",
    1,
    1
   ],
   "sitemap": [
    "pass",
    2,
    2
   ],
   "content-no-js": [
    "warning",
    2,
    3
   ],
   "bot-detection": [
    "pass",
    2,
    2
   ],
   "agent-discovery-file": [
    "fail",
    0,
    2
   ],
   "agent-skills-index-v2": [
    "na",
    0,
    2
   ],
   "a2a-agent-card": [
    "fail",
    0,
    2
   ],
   "skills-sh-listed": [
    "pass",
    1,
    1
   ],
   "pricing-md": [
    "fail",
    0,
    2
   ],
   "nlweb-schema-feeds": [
    "fail",
    0,
    1
   ],
   "mcp-well-known-discovery": [
    "pass",
    2,
    2
   ],
   "agent-mode-view": [
    "fail",
    0,
    2
   ],
   "link-headers-discovery": [
    "fail",
    0,
    1
   ],
   "markdown-url-fallback": [
    "fail",
    0,
    2
   ],
   "modular-llms-txt": [
    "warning",
    0,
    1
   ],
   "sitemap-lastmod": [
    "pass",
    1,
    1
   ],
   "robots-agent-user-policy": [
    "pass",
    2,
    2
   ],
   "llms-txt-exists": [
    "pass",
    1,
    1
   ],
   "llms-txt-formatting": [
    "warning",
    1,
    2
   ],
   "json-ld": [
    "pass",
    4,
    4
   ],
   "pricing-info": [
    "pass",
    3,
    3
   ],
   "public-api-docs": [
    "pass",
    3,
    3
   ],
   "agent-instruction": [
    "pass",
    3,
    3
   ],
   "skills-sh-quality": [
    "warning",
    0,
    2
   ],
   "json-ld-entity-linking": [
    "pass",
    2,
    2
   ],
   "metadata-completeness": [
    "pass",
    2,
    2
   ],
   "org-schema-completeness": [
    "warning",
    1,
    2
   ],
   "schema-type-breadth": [
    "fail",
    0,
    2
   ],
   "trust-anchors": [
    "pass",
    2,
    2
   ],
   "llms-txt-links-resolve": [
    "pass",
    2,
    2
   ],
   "markdown-link-alternate": [
    "fail",
    0,
    1
   ],
   "markdown-frontmatter": [
    "na",
    0,
    1
   ],
   "redirect-hygiene": [
    "pass",
    1,
    1
   ],
   "page-token-budget": [
    "pass",
    1,
    1
   ],
   "code-fence-validity": [
    "pass",
    1,
    1
   ],
   "docs-auth-gate": [
    "pass",
    2,
    2
   ],
   "openapi-spec": [
    "fail",
    0,
    7
   ],
   "developer-portal": [
    "pass",
    6,
    6
   ],
   "api-catalog-rfc9727": [
    "fail",
    0,
    2
   ],
   "markdown-negotiation": [
    "fail",
    0,
    1
   ],
   "markdown-negotiation-vary": [
    "fail",
    0,
    1
   ],
   "agent-ua-markdown": [
    "fail",
    0,
    1
   ],
   "agent-crawler-reachability": [
    "pass",
    2,
    2
   ],
   "mcp-tool-descriptions": [
    "na",
    0,
    3
   ],
   "mcp-param-schemas": [
    "na",
    0,
    2
   ],
   "mcp-server-identity": [
    "na",
    0,
    1
   ],
   "mcp-tool-listing": [
    "na",
    0,
    3
   ],
   "mcp-tool-naming": [
    "na",
    0,
    2
   ],
   "public-api": [
    "pass",
    7,
    7
   ],
   "oauth-support": [
    "pass",
    5,
    5
   ],
   "scoped-permissions": [
    "fail",
    0,
    5
   ],
   "mcp-auth-mechanism": [
    "warning",
    1,
    2
   ],
   "mcp-oauth-metadata": [
    "pass",
    2,
    2
   ],
   "mcp-pkce-s256": [
    "pass",
    2,
    2
   ],
   "onboarding-friction": [
    "warning",
    1,
    2
   ],
   "web-bot-auth-directory": [
    "fail",
    0,
    2
   ],
   "oauth-protected-resource": [
    "pass",
    2,
    2
   ],
   "auth-md-exists": [
    "fail",
    0,
    2
   ],
   "auth-md-structure": [
    "fail",
    0,
    2
   ],
   "auth-md-walkthrough-simulation": [
    "na",
    0,
    2
   ],
   "agent-auth-discovery-metadata": [
    "warning",
    1,
    3
   ],
   "agent-auth-www-authenticate": [
    "pass",
    1,
    1
   ],
   "agent-auth-endpoints-reachable": [
    "fail",
    0,
    2
   ],
   "pap-discovery": [
    "na",
    0,
    2
   ],
   "pap-issuer-binding": [
    "na",
    0,
    2
   ],
   "pap-auth-config": [
    "na",
    0,
    2
   ],
   "pap-interfaces": [
    "na",
    0,
    2
   ],
   "pap-endpoint-enforcement": [
    "na",
    0,
    2
   ],
   "pap-cross-protocol": [
    "na",
    0,
    2
   ],
   "mcp-server": [
    "warning",
    5,
    6
   ],
   "mcp-error-handling": [
    "na",
    0,
    2
   ],
   "mcp-transport-modern": [
    "na",
    0,
    1
   ],
   "webmcp": [
    "fail",
    0,
    5
   ],
   "rate-limit-headers": [
    "na",
    0,
    2
   ],
   "idempotency-key-support": [
    "na",
    0,
    3
   ],
   "json-error-responses": [
    "fail",
    0,
    4
   ],
   "api-error-model": [
    "na",
    0,
    3
   ],
   "api-versioning-policy": [
    "na",
    0,
    3
   ],
   "pagination-shape": [
    "na",
    0,
    2
   ],
   "async-job-pattern": [
    "na",
    0,
    2
   ],
   "cli-tool": [
    "warning",
    2,
    3
   ],
   "rest-sdk-packages": [
    "pass",
    3,
    3
   ],
   "nlweb-ask": [
    "pass",
    1,
    1
   ],
   "nlweb-streaming": [
    "fail",
    0,
    1
   ],
   "response-schema-coverage": [
    "na",
    0,
    2
   ],
   "mcp-tool-annotations": [
    "na",
    0,
    2
   ],
   "mcp-server-card": [
    "fail",
    0,
    2
   ],
   "mcp-multi-surface-coverage": [
    "warning",
    1,
    2
   ],
   "sandbox-environment": [
    "pass",
    2,
    2
   ],
   "batch-endpoints": [
    "na",
    0,
    2
   ],
   "mcp-resource-listing": [
    "na",
    0,
    3
   ],
   "graphql-error-type-definition": [
    "na",
    0,
    3
   ],
   "graphql-versioning-policy": [
    "na",
    0,
    2
   ],
   "graphql-pagination-pattern": [
    "na",
    0,
    2
   ],
   "graphql-async-job-pattern": [
    "na",
    0,
    2
   ],
   "graphql-schema-completeness": [
    "na",
    0,
    3
   ],
   "graphql-batch-mutations": [
    "na",
    0,
    2
   ],
   "agent-friendly-404": [
    "warning",
    1,
    2
   ],
   "ax-document-structure": [
    "na",
    0,
    3
   ],
   "ax-native-controls": [
    "pass",
    3,
    3
   ],
   "ax-accessible-names": [
    "pass",
    2,
    2
   ],
   "ax-form-labeling": [
    "pass",
    2,
    2
   ],
   "ax-tree-injection-safe": [
    "pass",
    2,
    2
   ],
   "mcp-app-registry": [
    "na",
    0,
    4
   ],
   "a2ui-support": [
    "na",
    0,
    2
   ],
   "mcp-apps-ui-quality": [
    "na",
    0,
    4
   ],
   "mcp-view-domain": [
    "na",
    0,
    4
   ],
   "mcp-view-csp": [
    "na",
    0,
    4
   ],
   "api-schema-analysis": [
    "fail",
    0,
    2
   ],
   "function-calling-compat": [
    "fail",
    0,
    2
   ],
   "mcp-resource-quality": [
    "na",
    0,
    3
   ],
   "mpp-support": [
    "warning",
    0,
    2
   ],
   "x402-support": [
    "warning",
    0,
    2
   ],
   "ucp-support": [
    "warning",
    0,
    3
   ],
   "acp-support": [
    "warning",
    0,
    3
   ],
   "acp-delegate-payment": [
    "warning",
    0,
    3
   ],
   "ap2-support": [
    "warning",
    0,
    3
   ]
  },
  "flagged": [
   {
    "id": "openapi-spec",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 7,
    "tier": "required",
    "est": 3.8,
    "detail": "No OpenAPI/Swagger specification found"
   },
   {
    "id": "scoped-permissions",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 5,
    "tier": "recommended",
    "est": 3,
    "detail": "No declared OAuth scopes, security schemes, or scoped-permission documentation found"
   },
   {
    "id": "webmcp",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 5,
    "tier": "required",
    "est": 3,
    "detail": "No WebMCP support detected - no document.modelContext / navigator.modelContext usage found (scanned 29 of 29 same-origin script bundle(s) for modelContext registrations)"
   },
   {
    "id": "agentic-search-specific",
    "layer": "discovery",
    "status": "warning",
    "score": 1,
    "max": 3,
    "tier": "recommended",
    "est": 2.8,
    "detail": "In a search for your API docs, none of the 10 results is your official docs. In a search for your MCP server, SDK or CLI, we found your CLI at #1 (https://plaid.com/docs/resources/cli),"
   },
   {
    "id": "brand-search-accuracy",
    "layer": "discovery",
    "status": "warning",
    "score": 1,
    "max": 3,
    "tier": "required",
    "est": 2.8,
    "detail": "plaid.com ranks #7 for \"Plaid\" (searched your brand name alone: no main product term from your homepage qualified)"
   },
   {
    "id": "json-error-responses",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 4,
    "tier": "required",
    "est": 2.4,
    "detail": "API does not return JSON error responses (or no API detected)"
   },
   {
    "id": "ard-catalog",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 1.4,
    "detail": "No /.well-known/ard.json, no same-site rel=\"ard\" link, and no legacy /.well-known/ai-catalog.json"
   },
   {
    "id": "api-schema-analysis",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.2,
    "detail": "No API schema detected"
   },
   {
    "id": "function-calling-compat",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.2,
    "detail": "No API spec found - function calling requires discoverable endpoints"
   },
   {
    "id": "agent-discovery-file",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 1.1,
    "detail": "No agent discovery file found"
   },
   {
    "id": "schema-type-breadth",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.1,
    "detail": "No extended schema types found - AI can only answer basic questions about this entity"
   },
   {
    "id": "chatgpt-app-listed",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.8,
    "detail": "Not found in ChatGPT app directory"
   },
   {
    "id": "agent-friendly-404",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "The nonexistent path https://plaid.com/__ora-404-probe-9sttfncc correctly returns HTTP 404. Partial credit: no Markdown error body was detected."
   },
   {
    "id": "cli-tool",
    "layer": "usability",
    "status": "warning",
    "score": 2,
    "max": 3,
    "tier": "recommended",
    "est": 0.6,
    "detail": "CLI tool mentioned in llms.txt"
   },
   {
    "id": "mcp-server",
    "layer": "usability",
    "status": "warning",
    "score": 5,
    "max": 6,
    "tier": "required",
    "est": 0.6,
    "detail": "MCP server detected at https://mcp.plaid.com/mcp; it requires authentication. Presence is verified (5/6), but Ora could not inspect its tools or verify access scopes without credentials."
   },
   {
    "id": "onboarding-friction",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "Onboarding signals described but not verified live: free tier available, self-serve key generation, sandbox/test environment, zero-auth access"
   },
   {
    "id": "content-no-js",
    "layer": "accessibility",
    "status": "warning",
    "score": 2,
    "max": 3,
    "tier": "required",
    "est": 0.5,
    "detail": "Homepage: 1854 chars with H1, but heading hierarchy skips H2 to H5; 4.1% content ratio is below the 5% target. 5 of 5 sampled inner pages have text without JavaScript."
   },
   {
    "id": "llms-txt-formatting",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "The llms.txt at https://plaid.com/llms.txt is well-formatted with markdown links, but at 368,507 characters it exceeds the 30,000-character recommendation for a navigation index."
   },
   {
    "id": "org-schema-completeness",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "Organization schema found but missing: contactPoint"
   },
   {
    "id": "agent-auth-discovery-metadata",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 3,
    "tier": "recommended",
    "est": 0.4,
    "detail": "PRM + AS metadata both present (PRM discovered at https://mcp.plaid.com) (AS metadata fetched from advertised origin https://api.dashboard.plaid.com) but AS metadata has no agent_auth block"
   },
   {
    "id": "agent-auth-endpoints-reachable",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.4,
    "detail": "No agent_auth endpoint URIs found in AS metadata or /auth.md prose; nothing to probe"
   },
   {
    "id": "auth-md-exists",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.4,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "auth-md-structure",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.4,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "mcp-server-card",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.4,
    "detail": "No MCP server card found for https://mcp.plaid.com/mcp (checked /.well-known/mcp/server-card.json, the site's ai-catalog.json, servers[].card in mcp.json, and <server>/server-card)"
   },
   {
    "id": "mcp-server-card",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.4,
    "detail": "No MCP server card found for https://support.plaid.com/mcp (checked /.well-known/mcp/server-card.json, the site's ai-catalog.json, servers[].card in mcp.json, and <server>/server-card)"
   },
   {
    "id": "a2a-agent-card",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.2,
    "detail": "No A2A agent card found at /.well-known/agent-card.json"
   },
   {
    "id": "api-catalog-rfc9727",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.2,
    "detail": "No /.well-known/api-catalog found (RFC 9727)"
   },
   {
    "id": "mcp-auth-mechanism",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.2,
    "detail": "docs MCP is gated behind authentication - this defeats the purpose of a docs MCP for agent discovery"
   },
   {
    "id": "mcp-multi-surface-coverage",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.2,
    "detail": "You run both MCP servers, but the documentation one (https://support.plaid.com/mcp) is not reachable. Fix it so agents can use it."
   },
   {
    "id": "link-headers-discovery",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 0.1,
    "detail": "No HTTP Link response headers (RFC 8288) found"
   },
   {
    "id": "markdown-negotiation-vary",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.1,
    "detail": "Homepage https://plaid.com does not meet the Markdown negotiation requirements: Accept: text/markdown returned text/html; Vary header missing Accept (got \"accept-encoding\")"
   },
   {
    "id": "acp-delegate-payment",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": null,
    "detail": "No ACP Delegate Payment signals detected"
   },
   {
    "id": "acp-support",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 3,
    "tier": "required",
    "est": null,
    "detail": "no ACP (Agentic Commerce Protocol) signals detected"
   },
   {
    "id": "agent-mode-view",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "?mode=agent returns same content as homepage (no dedicated agent view)"
   },
   {
    "id": "agent-plugins-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No Agent Plugins manifest (plugin.json) found in discovered repos"
   },
   {
    "id": "agent-rules-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Could not locate a public repo containing agent configs or rules. If our probes missed it, AI coding agents likely will too - link the repo from your homepage or docs so it's discoverable."
   },
   {
    "id": "agent-ua-markdown",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly."
   },
   {
    "id": "ap2-support",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": null,
    "detail": "No AP2 (Agent Payments Protocol) signals detected"
   },
   {
    "id": "markdown-link-alternate",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No sampled page advertises a markdown alternate. Add <link rel=\"alternate\" type=\"text/markdown\" href=\"...\"> (or the equivalent Link response header) pointing at a markdown twin of the page."
   },
   {
    "id": "markdown-negotiation",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Missing markdown content negotiation. Homepage returned text/html when probed with Accept: text/markdown (expected text/markdown), and none of the well-known root paths (/llms.md, /auth.md, /agents.md, /developers.md, /api.md, /index.md,"
   },
   {
    "id": "markdown-url-fallback",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "Homepage does not support the .md suffix. Probed https://plaid.com/index.md and it did not return markdown (expected text/markdown content-type or a heading-led non-HTML body)."
   },
   {
    "id": "modular-llms-txt",
    "layer": "accessibility",
    "status": "warning",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Only 1 section-level llms.txt found (docs). Add one for another section and link it from your root llms.txt to earn this bonus point."
   },
   {
    "id": "mpp-support",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": null,
    "detail": "No MPP (Machine Payments Protocol) support detected"
   },
   {
    "id": "nlweb-schema-feeds",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No schemamap: directive in robots.txt"
   },
   {
    "id": "nlweb-streaming",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "NLWeb /ask requires authentication - cannot verify streaming"
   },
   {
    "id": "pricing-md",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No pricing.md found - agents need machine-readable pricing to compare products and make purchase recommendations"
   },
   {
    "id": "registry-branding",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No registry branding (name, icon, description) found"
   },
   {
    "id": "skills-sh-quality",
    "layer": "accessibility",
    "status": "warning",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "Minimal skills.sh presence - 1 skill, 4 installs. Too thin for agents to understand capabilities"
   },
   {
    "id": "ucp-support",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 3,
    "tier": "required",
    "est": null,
    "detail": "no UCP (Universal Commerce Protocol) signals detected"
   },
   {
    "id": "web-bot-auth-directory",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No /.well-known/http-message-signatures-directory found"
   },
   {
    "id": "x402-support",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": null,
    "detail": "No x402 payment protocol support detected"
   }
  ],
  "seen": {
   "brand-search-accuracy": "plaid.com ranks #7 for \"Plaid\" (searched your brand name alone: no main product term from your homepage qualified)",
   "wikipedia-presence": "Wikipedia \"Plaid Inc.\" and Wikidata Q30610132 both verified - domain confirmed on both sources",
   "robots-ai-policy-quality": "AI search crawlers: allowed in 18 of 18 checks (3 crawlers on 6 pages). AI training crawlers: allowed in 12 of 12 checks (2 crawlers on 6 pages), not scored.",
   "noindex-directives": "No noindex on the homepage: no robots, googlebot or bingbot meta tag and no X-Robots-Tag header hides it from search.",
   "sitemap": "Valid sitemap found at https://plaid.com/sitemap.xml with 2109 entries",
   "content-no-js": "Homepage: 1854 chars with H1, but heading hierarchy skips H2 to H5; 4.1% content ratio is below the 5% target. 5 of 5 sampled inner pages have text without JavaScript.",
   "bot-detection": "Site accessible to 4 agent user-agents (ChatGPT-User, OAI-SearchBot, Claude-User, PerplexityBot).",
   "agent-discovery-file": "No agent discovery file found",
   "a2a-agent-card": "No A2A agent card found at /.well-known/agent-card.json",
   "mcp-well-known-discovery": "MCP server referenced in llms.txt",
   "robots-agent-user-policy": "No applicable crawl or usage restriction found for 3 user-triggered agents (chatgpt-user, claude-user, perplexity-user) on 1 public page: https://plaid.com/. Declared policy only;",
   "llms-txt-exists": "Found the llms.txt at https://plaid.com/llms.txt.",
   "llms-txt-formatting": "The llms.txt at https://plaid.com/llms.txt is well-formatted with markdown links, but at 368,507 characters it exceeds the 30,000-character recommendation for a navigation index.",
   "json-ld": "Rich JSON-LD identity: organization with name, description, url, and sameAs/logo/address (1 block(s))",
   "public-api-docs": "Documentation site found at https://plaid.com",
   "metadata-completeness": "All metadata signals present: canonical URL, lang=\"en\", og:image, og:type",
   "page-token-budget": "All 6 measured pages fit an agent context budget (largest ~2K tokens)",
   "docs-auth-gate": "All 5 sampled pages are publicly readable (5 with substantive content)",
   "openapi-spec": "No OpenAPI/Swagger specification found",
   "developer-portal": "Developer portal found at /docs",
   "markdown-negotiation": "Missing markdown content negotiation. Homepage returned text/html when probed with Accept: text/markdown (expected text/markdown), and none of the well-known root paths (/llms.md, /auth.md, /agents.md, /developers.md,",
   "agent-ua-markdown": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly.",
   "agent-crawler-reachability": "Reachable to every agent we tested - ChatGPT-User: reachable, OAI-SearchBot: reachable, Claude-User: reachable, PerplexityBot: reachable",
   "public-api": "REST API documentation found at /docs/api. Best-of-protocols score: 7/7.",
   "oauth-support": "OAuth authorization server metadata at https://api.dashboard.plaid.com",
   "mcp-server": "MCP server detected at https://mcp.plaid.com/mcp; it requires authentication. Presence is verified (5/6), but Ora could not inspect its tools or verify access scopes without credentials.",
   "webmcp": "No WebMCP support detected - no document.modelContext / navigator.modelContext usage found (scanned 29 of 29 same-origin script bundle(s) for modelContext registrations)",
   "cli-tool": "CLI tool mentioned in llms.txt",
   "rest-sdk-packages": "SDK packages found across 4 ecosystems: npm, pypi, go, rubygems",
   "nlweb-ask": "NLWeb /ask endpoint exists but requires authentication (HTTP 403, via POST)",
   "mpp-support": "No MPP (Machine Payments Protocol) support detected",
   "x402-support": "No x402 payment protocol support detected",
   "ucp-support": "no UCP (Universal Commerce Protocol) signals detected",
   "acp-support": "no ACP (Agentic Commerce Protocol) signals detected",
   "ap2-support": "No AP2 (Agent Payments Protocol) signals detected"
  }
 },
 {
  "slug": "postman",
  "name": "Postman",
  "domain": "postman.com",
  "finalUrl": "https://www.postman.com/",
  "read": "2026-11-09",
  "scannedAt": "2026-11-08T00:53:18.434+00:00",
  "score": 80,
  "max": 100,
  "grade": "B",
  "category": "Developer Tools",
  "scoringVersion": null,
  "rulesUrl": null,
  "summary": "Postman offers strong developer resource discoverability and MCP registry listings, but lacks a published OpenAPI specification for agents to act on.",
  "layers": [
   {
    "id": "discovery",
    "name": "Discovery",
    "score": 15,
    "max": 16
   },
   {
    "id": "accessibility",
    "name": "Access",
    "score": 44,
    "max": 60
   },
   {
    "id": "usability",
    "name": "Usability",
    "score": 57,
    "max": 74
   },
   {
    "id": "payments",
    "name": "Payments",
    "score": 0,
    "max": 0
   }
  ],
  "checks": {
   "ard-catalog": [
    "fail",
    0,
    1
   ],
   "ai-catalog-published": [
    "na",
    0,
    1
   ],
   "ard-entries-valid": [
    "na",
    0,
    2
   ],
   "ard-trust-manifest": [
    "na",
    0,
    2
   ],
   "agentic-search-usecase": [
    "na",
    0,
    6
   ],
   "agentic-search-specific": [
    "pass",
    3,
    3
   ],
   "brand-search-accuracy": [
    "pass",
    3,
    3
   ],
   "wikipedia-presence": [
    "warning",
    2,
    4
   ],
   "robots-ai-policy-quality": [
    "pass",
    2,
    2
   ],
   "mcp-registry-listed": [
    "pass",
    1,
    1
   ],
   "npm-sdk-package": [
    "pass",
    1,
    1
   ],
   "agent-rules-repo": [
    "pass",
    1,
    1
   ],
   "agent-plugins-repo": [
    "warning",
    0,
    1
   ],
   "registry-branding": [
    "warning",
    1,
    2
   ],
   "chatgpt-app-listed": [
    "pass",
    2,
    2
   ],
   "noindex-directives": [
    "pass",
    1,
    1
   ],
   "sitemap": [
    "pass",
    2,
    2
   ],
   "content-no-js": [
    "warning",
    1,
    3
   ],
   "bot-detection": [
    "pass",
    2,
    2
   ],
   "agent-discovery-file": [
    "fail",
    0,
    2
   ],
   "agent-skills-index-v2": [
    "na",
    0,
    2
   ],
   "a2a-agent-card": [
    "fail",
    0,
    2
   ],
   "skills-sh-listed": [
    "pass",
    1,
    1
   ],
   "pricing-md": [
    "pass",
    2,
    2
   ],
   "nlweb-schema-feeds": [
    "fail",
    0,
    1
   ],
   "mcp-well-known-discovery": [
    "warning",
    1,
    2
   ],
   "agent-mode-view": [
    "pass",
    2,
    2
   ],
   "link-headers-discovery": [
    "fail",
    0,
    1
   ],
   "markdown-url-fallback": [
    "fail",
    0,
    2
   ],
   "modular-llms-txt": [
    "pass",
    1,
    1
   ],
   "sitemap-lastmod": [
    "warning",
    0,
    1
   ],
   "robots-agent-user-policy": [
    "pass",
    2,
    2
   ],
   "llms-txt-exists": [
    "pass",
    1,
    1
   ],
   "llms-txt-formatting": [
    "pass",
    2,
    2
   ],
   "json-ld": [
    "pass",
    4,
    4
   ],
   "pricing-info": [
    "pass",
    3,
    3
   ],
   "public-api-docs": [
    "pass",
    3,
    3
   ],
   "agent-instruction": [
    "fail",
    0,
    3
   ],
   "skills-sh-quality": [
    "pass",
    2,
    2
   ],
   "json-ld-entity-linking": [
    "pass",
    2,
    2
   ],
   "metadata-completeness": [
    "warning",
    1,
    2
   ],
   "org-schema-completeness": [
    "pass",
    2,
    2
   ],
   "schema-type-breadth": [
    "warning",
    1,
    2
   ],
   "trust-anchors": [
    "pass",
    2,
    2
   ],
   "llms-txt-links-resolve": [
    "pass",
    2,
    2
   ],
   "markdown-link-alternate": [
    "pass",
    1,
    1
   ],
   "markdown-frontmatter": [
    "pass",
    1,
    1
   ],
   "redirect-hygiene": [
    "pass",
    1,
    1
   ],
   "page-token-budget": [
    "pass",
    1,
    1
   ],
   "code-fence-validity": [
    "pass",
    1,
    1
   ],
   "docs-auth-gate": [
    "pass",
    2,
    2
   ],
   "openapi-spec": [
    "fail",
    0,
    7
   ],
   "developer-portal": [
    "pass",
    6,
    6
   ],
   "api-catalog-rfc9727": [
    "fail",
    0,
    2
   ],
   "markdown-negotiation": [
    "pass",
    1,
    1
   ],
   "markdown-negotiation-vary": [
    "pass",
    1,
    1
   ],
   "agent-ua-markdown": [
    "fail",
    0,
    1
   ],
   "agent-crawler-reachability": [
    "pass",
    2,
    2
   ],
   "mcp-tool-descriptions": [
    "na",
    0,
    3
   ],
   "mcp-param-schemas": [
    "na",
    0,
    2
   ],
   "mcp-server-identity": [
    "na",
    0,
    1
   ],
   "mcp-tool-listing": [
    "na",
    0,
    3
   ],
   "mcp-tool-naming": [
    "na",
    0,
    2
   ],
   "public-api": [
    "pass",
    7,
    7
   ],
   "oauth-support": [
    "pass",
    5,
    5
   ],
   "scoped-permissions": [
    "fail",
    0,
    5
   ],
   "mcp-auth-mechanism": [
    "warning",
    1,
    2
   ],
   "mcp-oauth-metadata": [
    "pass",
    2,
    2
   ],
   "mcp-pkce-s256": [
    "pass",
    2,
    2
   ],
   "onboarding-friction": [
    "pass",
    2,
    2
   ],
   "web-bot-auth-directory": [
    "fail",
    0,
    2
   ],
   "oauth-protected-resource": [
    "pass",
    2,
    2
   ],
   "auth-md-exists": [
    "fail",
    0,
    2
   ],
   "auth-md-structure": [
    "fail",
    0,
    2
   ],
   "auth-md-walkthrough-simulation": [
    "na",
    0,
    2
   ],
   "agent-auth-discovery-metadata": [
    "warning",
    1,
    3
   ],
   "agent-auth-www-authenticate": [
    "pass",
    1,
    1
   ],
   "agent-auth-endpoints-reachable": [
    "fail",
    0,
    2
   ],
   "pap-discovery": [
    "na",
    0,
    2
   ],
   "pap-issuer-binding": [
    "na",
    0,
    2
   ],
   "pap-auth-config": [
    "na",
    0,
    2
   ],
   "pap-interfaces": [
    "na",
    0,
    2
   ],
   "pap-endpoint-enforcement": [
    "na",
    0,
    2
   ],
   "pap-cross-protocol": [
    "na",
    0,
    2
   ],
   "mcp-server": [
    "warning",
    5,
    6
   ],
   "mcp-error-handling": [
    "na",
    0,
    2
   ],
   "mcp-transport-modern": [
    "na",
    0,
    1
   ],
   "webmcp": [
    "fail",
    0,
    5
   ],
   "rate-limit-headers": [
    "na",
    0,
    2
   ],
   "idempotency-key-support": [
    "na",
    0,
    3
   ],
   "json-error-responses": [
    "pass",
    4,
    4
   ],
   "api-error-model": [
    "na",
    0,
    3
   ],
   "api-versioning-policy": [
    "na",
    0,
    3
   ],
   "pagination-shape": [
    "na",
    0,
    2
   ],
   "async-job-pattern": [
    "na",
    0,
    2
   ],
   "cli-tool": [
    "pass",
    3,
    3
   ],
   "rest-sdk-packages": [
    "warning",
    1,
    3
   ],
   "nlweb-ask": [
    "fail",
    0,
    1
   ],
   "nlweb-streaming": [
    "fail",
    0,
    1
   ],
   "response-schema-coverage": [
    "na",
    0,
    2
   ],
   "mcp-tool-annotations": [
    "na",
    0,
    2
   ],
   "mcp-server-card": [
    "fail",
    0,
    2
   ],
   "mcp-multi-surface-coverage": [
    "warning",
    1,
    2
   ],
   "sandbox-environment": [
    "pass",
    2,
    2
   ],
   "batch-endpoints": [
    "na",
    0,
    2
   ],
   "mcp-resource-listing": [
    "na",
    0,
    3
   ],
   "graphql-error-type-definition": [
    "na",
    0,
    3
   ],
   "graphql-versioning-policy": [
    "na",
    0,
    2
   ],
   "graphql-pagination-pattern": [
    "na",
    0,
    2
   ],
   "graphql-async-job-pattern": [
    "na",
    0,
    2
   ],
   "graphql-schema-completeness": [
    "na",
    0,
    3
   ],
   "graphql-batch-mutations": [
    "na",
    0,
    2
   ],
   "agent-friendly-404": [
    "fail",
    0,
    2
   ],
   "ax-document-structure": [
    "pass",
    3,
    3
   ],
   "ax-native-controls": [
    "pass",
    3,
    3
   ],
   "ax-accessible-names": [
    "pass",
    2,
    2
   ],
   "ax-form-labeling": [
    "na",
    0,
    2
   ],
   "ax-tree-injection-safe": [
    "pass",
    2,
    2
   ],
   "mcp-app-registry": [
    "na",
    0,
    4
   ],
   "a2ui-support": [
    "na",
    0,
    2
   ],
   "mcp-apps-ui-quality": [
    "na",
    0,
    4
   ],
   "mcp-view-domain": [
    "na",
    0,
    4
   ],
   "mcp-view-csp": [
    "na",
    0,
    4
   ],
   "api-schema-analysis": [
    "warning",
    1,
    2
   ],
   "function-calling-compat": [
    "warning",
    1,
    2
   ],
   "mcp-resource-quality": [
    "na",
    0,
    3
   ],
   "mpp-support": [
    "warning",
    0,
    2
   ],
   "x402-support": [
    "warning",
    0,
    2
   ],
   "ucp-support": [
    "warning",
    0,
    3
   ],
   "acp-support": [
    "warning",
    0,
    3
   ],
   "acp-delegate-payment": [
    "warning",
    0,
    3
   ],
   "ap2-support": [
    "warning",
    0,
    3
   ]
  },
  "flagged": [
   {
    "id": "openapi-spec",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 7,
    "tier": "required",
    "est": 3.9,
    "detail": "No OpenAPI/Swagger specification found"
   },
   {
    "id": "scoped-permissions",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 5,
    "tier": "recommended",
    "est": 3,
    "detail": "No declared OAuth scopes, security schemes, or scoped-permission documentation found"
   },
   {
    "id": "webmcp",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 5,
    "tier": "required",
    "est": 3,
    "detail": "No WebMCP support detected - no document.modelContext / navigator.modelContext usage found (scanned 30 of 30 same-origin script bundle(s) for modelContext registrations)"
   },
   {
    "id": "agent-instruction",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "required",
    "est": 1.7,
    "detail": "No agent instruction file with when-to-use guidance found"
   },
   {
    "id": "ard-catalog",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 1.4,
    "detail": "No /.well-known/ard.json, no same-site rel=\"ard\" link, and no legacy /.well-known/ai-catalog.json"
   },
   {
    "id": "agent-friendly-404",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.2,
    "detail": "Nonexistent paths return HTTP 200 with the app shell (soft-404). Agents probing for resources conclude every path exists. Return a real HTTP 404 status for unknown paths."
   },
   {
    "id": "rest-sdk-packages",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 3,
    "tier": "recommended",
    "est": 1.2,
    "detail": "SDK package found only in npm"
   },
   {
    "id": "agent-discovery-file",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 1.1,
    "detail": "No agent discovery file found"
   },
   {
    "id": "content-no-js",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 3,
    "tier": "required",
    "est": 1.1,
    "detail": "Homepage: 3254 chars with H1, but 1.6% content ratio is below the 5% target. Sampled pages with almost no text without JavaScript (5 of 5): https://www.postman.com/category/app-security (7 chars),"
   },
   {
    "id": "api-schema-analysis",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "REST: OpenAPI spec found but failed to parse for complexity analysis"
   },
   {
    "id": "function-calling-compat",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "API spec found but couldn't validate function calling compatibility"
   },
   {
    "id": "mcp-server",
    "layer": "usability",
    "status": "warning",
    "score": 5,
    "max": 6,
    "tier": "required",
    "est": 0.6,
    "detail": "MCP server detected at https://mcp.postman.com/mcp; it requires authentication. Presence is verified (5/6), but Ora could not inspect its tools or verify access scopes without credentials."
   },
   {
    "id": "metadata-completeness",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "required",
    "est": 0.6,
    "detail": "3/4 metadata signals present - missing: og:type"
   },
   {
    "id": "schema-type-breadth",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "Some extended schema types found: ItemList - add 2 more types that match what the homepage shows, for full coverage"
   },
   {
    "id": "a2a-agent-card",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.3,
    "detail": "No A2A agent card found at /.well-known/agent-card.json"
   },
   {
    "id": "agent-auth-discovery-metadata",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 3,
    "tier": "recommended",
    "est": 0.3,
    "detail": "PRM + AS metadata both present (PRM discovered at https://mcp.postman.com) (AS metadata fetched from advertised origin https://mcp.postman.com) but AS metadata has no agent_auth block"
   },
   {
    "id": "agent-auth-endpoints-reachable",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.3,
    "detail": "No agent_auth endpoint URIs found in AS metadata or /auth.md prose; nothing to probe"
   },
   {
    "id": "api-catalog-rfc9727",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.3,
    "detail": "No /.well-known/api-catalog found (RFC 9727)"
   },
   {
    "id": "auth-md-exists",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.3,
    "detail": "Path https://postman.com/auth.md returned HTML (SPA / 404 fallback), not an auth.md document"
   },
   {
    "id": "auth-md-structure",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.3,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "mcp-server-card",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.3,
    "detail": "No MCP server card found for https://mcp.postman.com/mcp (checked /.well-known/mcp/server-card.json, the site's ai-catalog.json, servers[].card in mcp.json, and <server>/server-card)"
   },
   {
    "id": "mcp-server-card",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.3,
    "detail": "No MCP server card found for https://support.postman.com/mcp (checked /.well-known/mcp/server-card.json, the site's ai-catalog.json, servers[].card in mcp.json, and <server>/server-card)"
   },
   {
    "id": "wikipedia-presence",
    "layer": "discovery",
    "status": "warning",
    "score": 2,
    "max": 4,
    "tier": "recommended",
    "est": 0.2,
    "detail": "Wikidata Q105538901 (Postman) verified - draft a Wikipedia page with cited references to complete knowledge graph coverage"
   },
   {
    "id": "link-headers-discovery",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 0.1,
    "detail": "No HTTP Link response headers (RFC 8288) found"
   },
   {
    "id": "mcp-auth-mechanism",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.1,
    "detail": "docs MCP is gated behind authentication - this defeats the purpose of a docs MCP for agent discovery"
   },
   {
    "id": "mcp-multi-surface-coverage",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.1,
    "detail": "You run both MCP servers, but the documentation one (https://support.postman.com/mcp) is not reachable. Fix it so agents can use it."
   },
   {
    "id": "mcp-well-known-discovery",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.1,
    "detail": "MCP server at https://mcp.postman.com/mcp - list its server card, hosted on your own domain, in /.well-known/ai-catalog.json so MCP clients can discover it"
   },
   {
    "id": "sitemap-lastmod",
    "layer": "accessibility",
    "status": "warning",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.1,
    "detail": "Sitemap lastmod dates are all stale - the newest is 593 days old. Update lastmod when content changes or agents will deprioritize the whole site as unmaintained."
   },
   {
    "id": "acp-delegate-payment",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": null,
    "detail": "OPTIONS allows POST at https://api.postman.com/agentic_commerce/delegate_payment but POST 404 returned no ACP response"
   },
   {
    "id": "acp-support",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 3,
    "tier": "required",
    "est": null,
    "detail": "OPTIONS allows POST at https://api.postman.com/checkout_sessions but POST 404 returned no ACP response"
   },
   {
    "id": "agent-plugins-repo",
    "layer": "discovery",
    "status": "warning",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Plugin manifest found without the Agent Plugins $schema identifier: github.com/postmanlabs/postman-plugin/blob/main/.claude-plugin/plugin.json"
   },
   {
    "id": "agent-ua-markdown",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly."
   },
   {
    "id": "ap2-support",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": null,
    "detail": "No AP2 (Agent Payments Protocol) signals detected"
   },
   {
    "id": "markdown-url-fallback",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "Homepage does not support the .md suffix. Probed https://postman.com/index.md and it did not return markdown (expected text/markdown content-type or a heading-led non-HTML body)."
   },
   {
    "id": "mpp-support",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": null,
    "detail": "No MPP (Machine Payments Protocol) support detected"
   },
   {
    "id": "nlweb-ask",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No NLWeb-conformant /ask endpoint found via GET or POST"
   },
   {
    "id": "nlweb-schema-feeds",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No schemamap: directive in robots.txt"
   },
   {
    "id": "nlweb-streaming",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "NLWeb /ask does not support SSE streaming via GET or POST"
   },
   {
    "id": "registry-branding",
    "layer": "discovery",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "MCP manifest has name but missing description/icon at /.well-known/mcp.json"
   },
   {
    "id": "ucp-support",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 3,
    "tier": "required",
    "est": null,
    "detail": "no UCP (Universal Commerce Protocol) signals detected"
   },
   {
    "id": "web-bot-auth-directory",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No /.well-known/http-message-signatures-directory found"
   },
   {
    "id": "x402-support",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": null,
    "detail": "No x402 payment protocol support detected"
   }
  ],
  "seen": {
   "brand-search-accuracy": "postman.com ranks #4 for \"Postman Application Programming Interfaces\" and #10 for \"Postman API development\"",
   "wikipedia-presence": "Wikidata Q105538901 (Postman) verified - draft a Wikipedia page with cited references to complete knowledge graph coverage",
   "robots-ai-policy-quality": "AI search crawlers: allowed in 3 of 3 checks (3 crawlers on 1 page). AI training crawlers: allowed in 2 of 2 checks (2 crawlers on 1 page), not scored.",
   "noindex-directives": "No noindex on the homepage: no robots, googlebot or bingbot meta tag and no X-Robots-Tag header hides it from search.",
   "sitemap": "Valid sitemap found at https://www.postman.com/sitemap.xml with multiple sitemaps entries",
   "content-no-js": "Homepage: 3254 chars with H1, but 1.6% content ratio is below the 5% target. Sampled pages with almost no text without JavaScript (5 of 5): https://www.postman.com/category/app-security (7 chars),",
   "bot-detection": "Site accessible to 4 agent user-agents (ChatGPT-User, OAI-SearchBot, Claude-User, PerplexityBot).",
   "agent-discovery-file": "No agent discovery file found",
   "a2a-agent-card": "No A2A agent card found at /.well-known/agent-card.json",
   "mcp-well-known-discovery": "MCP server at https://mcp.postman.com/mcp - list its server card, hosted on your own domain, in /.well-known/ai-catalog.json so MCP clients can discover it",
   "robots-agent-user-policy": "No applicable crawl or usage restriction found for 3 user-triggered agents (chatgpt-user, claude-user, perplexity-user) on 1 public page: https://postman.com/. Declared policy only;",
   "llms-txt-exists": "Found the llms.txt at https://postman.com/llms.txt.",
   "llms-txt-formatting": "The llms.txt is well-formatted: 130 lines with markdown links, 21,271 characters in total.",
   "json-ld": "Rich JSON-LD identity: Organization with name, description, url, and sameAs/logo/address (2 block(s))",
   "public-api-docs": "API/docs link found on homepage and resolves: https://learning.postman.com/docs/reference/developer-resources/postman-plugin",
   "metadata-completeness": "3/4 metadata signals present - missing: og:type",
   "page-token-budget": "All 6 measured pages fit an agent context budget (largest ~1K tokens)",
   "docs-auth-gate": "All 5 sampled pages are publicly readable (0 with substantive content)",
   "openapi-spec": "No OpenAPI/Swagger specification found",
   "developer-portal": "Developer portal found at /docs",
   "markdown-negotiation": "Returns markdown when requested via Accept header",
   "agent-ua-markdown": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly.",
   "agent-crawler-reachability": "Reachable to every agent we tested - ChatGPT-User: reachable, OAI-SearchBot: reachable, Claude-User: reachable, PerplexityBot: reachable",
   "public-api": "REST API documentation found at /api. Best-of-protocols score: 7/7.",
   "oauth-support": "OAuth authorization server metadata at https://mcp.postman.com",
   "mcp-server": "MCP server detected at https://mcp.postman.com/mcp; it requires authentication. Presence is verified (5/6), but Ora could not inspect its tools or verify access scopes without credentials.",
   "webmcp": "No WebMCP support detected - no document.modelContext / navigator.modelContext usage found (scanned 30 of 30 same-origin script bundle(s) for modelContext registrations)",
   "cli-tool": "CLI package found on npm: postman-cli",
   "rest-sdk-packages": "SDK package found only in npm",
   "nlweb-ask": "No NLWeb-conformant /ask endpoint found via GET or POST",
   "mpp-support": "No MPP (Machine Payments Protocol) support detected",
   "x402-support": "No x402 payment protocol support detected",
   "ucp-support": "no UCP (Universal Commerce Protocol) signals detected",
   "acp-support": "OPTIONS allows POST at https://api.postman.com/checkout_sessions but POST 404 returned no ACP response",
   "ap2-support": "No AP2 (Agent Payments Protocol) signals detected"
  }
 },
 {
  "slug": "ramp",
  "name": "Ramp",
  "domain": "ramp.com",
  "finalUrl": "https://ramp.com/",
  "read": "2026-11-09",
  "scannedAt": "2026-10-28T17:56:25.637+00:00",
  "score": 68,
  "max": 100,
  "grade": "C",
  "category": "Payments & Fintech",
  "scoringVersion": null,
  "rulesUrl": null,
  "summary": "Ramp offers comprehensive spend management APIs and SDKs, but lacks OAuth scoped permissions and JSON error standardization for agent integration.",
  "layers": [
   {
    "id": "discovery",
    "name": "Discovery",
    "score": 11,
    "max": 16
   },
   {
    "id": "accessibility",
    "name": "Access",
    "score": 44,
    "max": 58
   },
   {
    "id": "usability",
    "name": "Usability",
    "score": 55,
    "max": 89
   },
   {
    "id": "payments",
    "name": "Payments",
    "score": 0,
    "max": 0
   }
  ],
  "checks": {
   "ard-catalog": [
    "fail",
    0,
    1
   ],
   "ai-catalog-published": [
    "na",
    0,
    1
   ],
   "ard-entries-valid": [
    "na",
    0,
    2
   ],
   "ard-trust-manifest": [
    "na",
    0,
    2
   ],
   "agentic-search-usecase": [
    "na",
    0,
    6
   ],
   "agentic-search-specific": [
    "pass",
    3,
    3
   ],
   "brand-search-accuracy": [
    "fail",
    0,
    3
   ],
   "wikipedia-presence": [
    "warning",
    2,
    4
   ],
   "robots-ai-policy-quality": [
    "pass",
    2,
    2
   ],
   "mcp-registry-listed": [
    "fail",
    0,
    1
   ],
   "npm-sdk-package": [
    "pass",
    1,
    1
   ],
   "agent-rules-repo": [
    "fail",
    0,
    1
   ],
   "agent-plugins-repo": [
    "fail",
    0,
    1
   ],
   "registry-branding": [
    "na",
    0,
    2
   ],
   "chatgpt-app-listed": [
    "pass",
    2,
    2
   ],
   "noindex-directives": [
    "pass",
    1,
    1
   ],
   "sitemap": [
    "pass",
    2,
    2
   ],
   "content-no-js": [
    "pass",
    3,
    3
   ],
   "bot-detection": [
    "pass",
    2,
    2
   ],
   "agent-discovery-file": [
    "fail",
    0,
    2
   ],
   "agent-skills-index-v2": [
    "na",
    0,
    2
   ],
   "a2a-agent-card": [
    "fail",
    0,
    2
   ],
   "skills-sh-listed": [
    "fail",
    0,
    1
   ],
   "pricing-md": [
    "fail",
    0,
    2
   ],
   "nlweb-schema-feeds": [
    "fail",
    0,
    1
   ],
   "mcp-well-known-discovery": [
    "pass",
    2,
    2
   ],
   "agent-mode-view": [
    "warning",
    1,
    2
   ],
   "link-headers-discovery": [
    "fail",
    0,
    1
   ],
   "markdown-url-fallback": [
    "fail",
    0,
    2
   ],
   "modular-llms-txt": [
    "na",
    0,
    1
   ],
   "sitemap-lastmod": [
    "fail",
    0,
    1
   ],
   "robots-agent-user-policy": [
    "pass",
    2,
    2
   ],
   "llms-txt-exists": [
    "pass",
    1,
    1
   ],
   "llms-txt-formatting": [
    "pass",
    2,
    2
   ],
   "json-ld": [
    "warning",
    2,
    4
   ],
   "pricing-info": [
    "pass",
    3,
    3
   ],
   "public-api-docs": [
    "pass",
    3,
    3
   ],
   "agent-instruction": [
    "fail",
    0,
    3
   ],
   "skills-sh-quality": [
    "fail",
    0,
    2
   ],
   "json-ld-entity-linking": [
    "fail",
    0,
    2
   ],
   "metadata-completeness": [
    "warning",
    1,
    2
   ],
   "org-schema-completeness": [
    "warning",
    1,
    2
   ],
   "schema-type-breadth": [
    "fail",
    0,
    2
   ],
   "trust-anchors": [
    "warning",
    1,
    2
   ],
   "llms-txt-links-resolve": [
    "pass",
    2,
    2
   ],
   "markdown-link-alternate": [
    "fail",
    0,
    1
   ],
   "markdown-frontmatter": [
    "na",
    0,
    1
   ],
   "redirect-hygiene": [
    "pass",
    1,
    1
   ],
   "page-token-budget": [
    "pass",
    1,
    1
   ],
   "code-fence-validity": [
    "pass",
    1,
    1
   ],
   "docs-auth-gate": [
    "na",
    0,
    2
   ],
   "openapi-spec": [
    "pass",
    7,
    7
   ],
   "developer-portal": [
    "pass",
    6,
    6
   ],
   "api-catalog-rfc9727": [
    "fail",
    0,
    2
   ],
   "markdown-negotiation": [
    "fail",
    0,
    1
   ],
   "markdown-negotiation-vary": [
    "fail",
    0,
    1
   ],
   "agent-ua-markdown": [
    "fail",
    0,
    1
   ],
   "agent-crawler-reachability": [
    "pass",
    2,
    2
   ],
   "mcp-tool-descriptions": [
    "na",
    0,
    3
   ],
   "mcp-param-schemas": [
    "na",
    0,
    2
   ],
   "mcp-server-identity": [
    "na",
    0,
    1
   ],
   "mcp-tool-listing": [
    "na",
    0,
    3
   ],
   "mcp-tool-naming": [
    "na",
    0,
    2
   ],
   "public-api": [
    "pass",
    7,
    7
   ],
   "oauth-support": [
    "pass",
    5,
    5
   ],
   "scoped-permissions": [
    "fail",
    0,
    5
   ],
   "mcp-auth-mechanism": [
    "pass",
    2,
    2
   ],
   "mcp-oauth-metadata": [
    "pass",
    2,
    2
   ],
   "mcp-pkce-s256": [
    "pass",
    2,
    2
   ],
   "onboarding-friction": [
    "pass",
    2,
    2
   ],
   "web-bot-auth-directory": [
    "fail",
    0,
    2
   ],
   "oauth-protected-resource": [
    "pass",
    2,
    2
   ],
   "auth-md-exists": [
    "fail",
    0,
    2
   ],
   "auth-md-structure": [
    "fail",
    0,
    2
   ],
   "auth-md-walkthrough-simulation": [
    "na",
    0,
    2
   ],
   "agent-auth-discovery-metadata": [
    "warning",
    1,
    3
   ],
   "agent-auth-www-authenticate": [
    "pass",
    1,
    1
   ],
   "agent-auth-endpoints-reachable": [
    "fail",
    0,
    2
   ],
   "pap-discovery": [
    "na",
    0,
    2
   ],
   "pap-issuer-binding": [
    "na",
    0,
    2
   ],
   "pap-auth-config": [
    "na",
    0,
    2
   ],
   "pap-interfaces": [
    "na",
    0,
    2
   ],
   "pap-endpoint-enforcement": [
    "na",
    0,
    2
   ],
   "pap-cross-protocol": [
    "na",
    0,
    2
   ],
   "mcp-server": [
    "warning",
    5,
    6
   ],
   "mcp-error-handling": [
    "na",
    0,
    2
   ],
   "mcp-transport-modern": [
    "na",
    0,
    1
   ],
   "webmcp": [
    "na",
    0,
    5
   ],
   "rate-limit-headers": [
    "fail",
    0,
    2
   ],
   "idempotency-key-support": [
    "fail",
    0,
    3
   ],
   "json-error-responses": [
    "fail",
    0,
    4
   ],
   "api-error-model": [
    "fail",
    0,
    3
   ],
   "api-versioning-policy": [
    "warning",
    2,
    3
   ],
   "pagination-shape": [
    "warning",
    1,
    2
   ],
   "async-job-pattern": [
    "fail",
    0,
    2
   ],
   "cli-tool": [
    "pass",
    3,
    3
   ],
   "rest-sdk-packages": [
    "warning",
    1,
    3
   ],
   "nlweb-ask": [
    "fail",
    0,
    1
   ],
   "nlweb-streaming": [
    "fail",
    0,
    1
   ],
   "response-schema-coverage": [
    "pass",
    2,
    2
   ],
   "mcp-tool-annotations": [
    "na",
    0,
    2
   ],
   "mcp-server-card": [
    "fail",
    0,
    2
   ],
   "mcp-multi-surface-coverage": [
    "fail",
    0,
    2
   ],
   "sandbox-environment": [
    "na",
    0,
    2
   ],
   "batch-endpoints": [
    "fail",
    0,
    2
   ],
   "mcp-resource-listing": [
    "na",
    0,
    3
   ],
   "graphql-error-type-definition": [
    "fail",
    0,
    3
   ],
   "graphql-versioning-policy": [
    "fail",
    0,
    2
   ],
   "graphql-pagination-pattern": [
    "fail",
    0,
    2
   ],
   "graphql-async-job-pattern": [
    "fail",
    0,
    2
   ],
   "graphql-schema-completeness": [
    "na",
    0,
    3
   ],
   "graphql-batch-mutations": [
    "na",
    0,
    2
   ],
   "agent-friendly-404": [
    "warning",
    1,
    2
   ],
   "ax-document-structure": [
    "pass",
    3,
    3
   ],
   "ax-native-controls": [
    "pass",
    3,
    3
   ],
   "ax-accessible-names": [
    "pass",
    2,
    2
   ],
   "ax-form-labeling": [
    "pass",
    2,
    2
   ],
   "ax-tree-injection-safe": [
    "pass",
    2,
    2
   ],
   "mcp-app-registry": [
    "na",
    0,
    4
   ],
   "a2ui-support": [
    "na",
    0,
    2
   ],
   "mcp-apps-ui-quality": [
    "na",
    0,
    4
   ],
   "mcp-view-domain": [
    "na",
    0,
    4
   ],
   "mcp-view-csp": [
    "na",
    0,
    4
   ],
   "api-schema-analysis": [
    "pass",
    2,
    2
   ],
   "function-calling-compat": [
    "pass",
    2,
    2
   ],
   "mcp-resource-quality": [
    "na",
    0,
    3
   ],
   "mpp-support": [
    "na",
    0,
    2
   ],
   "x402-support": [
    "na",
    0,
    2
   ],
   "ucp-support": [
    "na",
    0,
    3
   ],
   "acp-support": [
    "na",
    0,
    3
   ],
   "acp-delegate-payment": [
    "na",
    0,
    3
   ],
   "ap2-support": [
    "na",
    0,
    3
   ]
  },
  "flagged": [
   {
    "id": "brand-search-accuracy",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "required",
    "est": 4.2,
    "detail": "ramp.com was not in the top 10 for \"Ramp spend management\""
   },
   {
    "id": "scoped-permissions",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 5,
    "tier": "recommended",
    "est": 2.5,
    "detail": "No declared OAuth scopes, security schemes, or scoped-permission documentation found"
   },
   {
    "id": "json-error-responses",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 4,
    "tier": "required",
    "est": 2,
    "detail": "API does not return JSON error responses (or no API detected)"
   },
   {
    "id": "agent-instruction",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "required",
    "est": 1.7,
    "detail": "No agent instruction file with when-to-use guidance found"
   },
   {
    "id": "api-error-model",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": 1.5,
    "detail": "No typed error model found in OpenAPI spec"
   },
   {
    "id": "graphql-error-type-definition",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": 1.5,
    "detail": "GraphQL introspection auth-gated and no typed graphql error model documentation found on GraphQL-tagged pages"
   },
   {
    "id": "idempotency-key-support",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": 1.5,
    "detail": "No REST Idempotency-Key support detected (GraphQL signal: fail 0)."
   },
   {
    "id": "ard-catalog",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 1.4,
    "detail": "No /.well-known/ard.json, no same-site rel=\"ard\" link, and no legacy /.well-known/ai-catalog.json"
   },
   {
    "id": "mcp-registry-listed",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 1.4,
    "detail": "No bi-directionally verified MCP registry entry found. To pass, either publish the server from a package whose homepage, repository or maintainer email names your domain, get a verified Smithery listing with non-zero usage,"
   },
   {
    "id": "agent-discovery-file",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 1.1,
    "detail": "No agent discovery file found"
   },
   {
    "id": "json-ld",
    "layer": "accessibility",
    "status": "warning",
    "score": 2,
    "max": 4,
    "tier": "required",
    "est": 1.1,
    "detail": "JSON-LD Organization found - missing description on this entity"
   },
   {
    "id": "json-ld-entity-linking",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.1,
    "detail": "No sameAs entity linking in JSON-LD - agents cannot disambiguate your brand"
   },
   {
    "id": "schema-type-breadth",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.1,
    "detail": "No extended schema types found - AI can only answer basic questions about this entity"
   },
   {
    "id": "async-job-pattern",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1,
    "detail": "No async job pattern found"
   },
   {
    "id": "graphql-async-job-pattern",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1,
    "detail": "GraphQL introspection auth-gated and no graphql async-job pattern documentation found on GraphQL-tagged pages"
   },
   {
    "id": "graphql-pagination-pattern",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1,
    "detail": "GraphQL introspection auth-gated and no graphql pagination pattern documentation found on GraphQL-tagged pages"
   },
   {
    "id": "graphql-versioning-policy",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1,
    "detail": "GraphQL introspection auth-gated and no graphql versioning / deprecation policy documentation found on GraphQL-tagged pages"
   },
   {
    "id": "rate-limit-headers",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1,
    "detail": "No REST rate-limit headers found on probed endpoints (GraphQL signal: fail 0)."
   },
   {
    "id": "rest-sdk-packages",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 3,
    "tier": "recommended",
    "est": 1,
    "detail": "SDK package found only in npm"
   },
   {
    "id": "wikipedia-presence",
    "layer": "discovery",
    "status": "warning",
    "score": 2,
    "max": 4,
    "tier": "recommended",
    "est": 0.8,
    "detail": "Wikidata Q123190361 (Ramp) verified - draft a Wikipedia page with cited references to complete knowledge graph coverage"
   },
   {
    "id": "metadata-completeness",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "required",
    "est": 0.6,
    "detail": "3/4 metadata signals present - missing: og:type"
   },
   {
    "id": "org-schema-completeness",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "Organization schema found but missing: contactPoint, address"
   },
   {
    "id": "trust-anchors",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "required",
    "est": 0.6,
    "detail": "About, Contact pages verified - missing: Privacy"
   },
   {
    "id": "agent-friendly-404",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "The nonexistent path https://ramp.com/__ora-404-probe-u7dk42rf correctly returns HTTP 404. Partial credit: no Markdown error body was detected."
   },
   {
    "id": "api-versioning-policy",
    "layer": "usability",
    "status": "warning",
    "score": 2,
    "max": 3,
    "tier": "recommended",
    "est": 0.5,
    "detail": "API versioning found (URL versioning (servers or paths)) but no deprecation or sunset policy detected - add Sunset/Deprecation headers or a deprecation policy page"
   },
   {
    "id": "mcp-server",
    "layer": "usability",
    "status": "warning",
    "score": 5,
    "max": 6,
    "tier": "required",
    "est": 0.5,
    "detail": "MCP server detected at https://mcp.ramp.com/mcp; it requires authentication. Presence is verified (5/6), but Ora could not inspect its tools or verify access scopes without credentials."
   },
   {
    "id": "pagination-shape",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "Offset/page-based pagination found in OpenAPI spec - consider migrating to cursor-based pagination for agent friendliness"
   },
   {
    "id": "agent-auth-discovery-metadata",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 3,
    "tier": "recommended",
    "est": 0.4,
    "detail": "PRM + AS metadata both present (PRM discovered at https://mcp.ramp.com) (AS metadata fetched from advertised origin https://mcp.ramp.com) but AS metadata has no agent_auth block"
   },
   {
    "id": "agent-auth-endpoints-reachable",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.4,
    "detail": "No agent_auth endpoint URIs found in AS metadata or /auth.md prose; nothing to probe"
   },
   {
    "id": "auth-md-exists",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.4,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "auth-md-structure",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.4,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "batch-endpoints",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.4,
    "detail": "No batch or bulk endpoint pattern found"
   },
   {
    "id": "mcp-multi-surface-coverage",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.4,
    "detail": "You run an MCP server for your product, but not one for your documentation. This bonus needs two MCP servers: one for your product so agents can take actions,"
   },
   {
    "id": "mcp-server-card",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.4,
    "detail": "No MCP server card found for https://mcp.ramp.com/mcp (checked /.well-known/mcp/server-card.json, the site's ai-catalog.json, servers[].card in mcp.json, and <server>/server-card)"
   },
   {
    "id": "a2a-agent-card",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.3,
    "detail": "No A2A agent card found at /.well-known/agent-card.json"
   },
   {
    "id": "api-catalog-rfc9727",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.3,
    "detail": "No /.well-known/api-catalog found (RFC 9727)"
   },
   {
    "id": "link-headers-discovery",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 0.1,
    "detail": "Link header present but no agent-relevant rel values (sitemap, describedby, alternate, service-desc)"
   },
   {
    "id": "markdown-negotiation-vary",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.1,
    "detail": "Homepage https://ramp.com does not meet the Markdown negotiation requirements: Accept: text/markdown returned text/html; charset=utf-8; Vary header missing Accept (got \"rsc, next-router-state-tree, next-router-prefetch,"
   },
   {
    "id": "sitemap-lastmod",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.1,
    "detail": "None of the 162 sampled sitemap entries carries a lastmod date. Add <lastmod> (W3C datetime) so agents can prioritize fresh content."
   },
   {
    "id": "agent-mode-view",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "Agent mode view found at ?mode=agent (3 signals: api, agent, integration)"
   },
   {
    "id": "agent-plugins-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No Agent Plugins manifest (plugin.json) found in discovered repos"
   },
   {
    "id": "agent-rules-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Could not locate a public repo containing agent configs or rules. If our probes missed it, AI coding agents likely will too - link the repo from your homepage or docs so it's discoverable."
   },
   {
    "id": "agent-ua-markdown",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly."
   },
   {
    "id": "markdown-link-alternate",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No sampled page advertises a markdown alternate. Add <link rel=\"alternate\" type=\"text/markdown\" href=\"...\"> (or the equivalent Link response header) pointing at a markdown twin of the page."
   },
   {
    "id": "markdown-negotiation",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Missing markdown content negotiation. Homepage returned text/html when probed with Accept: text/markdown (expected text/markdown), and none of the well-known root paths (/llms.md, /auth.md, /agents.md, /developers.md, /api.md, /index.md,"
   },
   {
    "id": "markdown-url-fallback",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "Homepage does not support the .md suffix. Probed https://ramp.com/index.md and it did not return markdown (expected text/markdown content-type or a heading-led non-HTML body)."
   },
   {
    "id": "nlweb-ask",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No NLWeb-conformant /ask endpoint found via GET or POST"
   },
   {
    "id": "nlweb-schema-feeds",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No schemamap: directive in robots.txt"
   },
   {
    "id": "nlweb-streaming",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "NLWeb /ask does not support SSE streaming via GET or POST"
   },
   {
    "id": "pricing-md",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No pricing.md found - agents need machine-readable pricing to compare products and make purchase recommendations"
   },
   {
    "id": "skills-sh-listed",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No official skills self-published on skills.sh (100 community skills with potential relation to this domain found, but only self-published official skills count)"
   },
   {
    "id": "skills-sh-quality",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No official skills on skills.sh to evaluate"
   },
   {
    "id": "web-bot-auth-directory",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No /.well-known/http-message-signatures-directory found"
   }
  ],
  "seen": {
   "brand-search-accuracy": "ramp.com was not in the top 10 for \"Ramp spend management\"",
   "wikipedia-presence": "Wikidata Q123190361 (Ramp) verified - draft a Wikipedia page with cited references to complete knowledge graph coverage",
   "robots-ai-policy-quality": "AI search crawlers: allowed in 3 of 3 checks (3 crawlers on 1 page). AI training crawlers: allowed in 2 of 2 checks (2 crawlers on 1 page), not scored.",
   "noindex-directives": "No noindex on the homepage: no robots, googlebot or bingbot meta tag and no X-Robots-Tag header hides it from search.",
   "sitemap": "Valid sitemap found at https://ramp.com/sitemap/root.xml with 162 entries",
   "content-no-js": "5206 chars, semantic headings (1 H1 + 14 H2s + 5 H3s), 6.0% content ratio",
   "bot-detection": "Site accessible to 4 agent user-agents (ChatGPT-User, OAI-SearchBot, Claude-User, PerplexityBot).",
   "agent-discovery-file": "No agent discovery file found",
   "a2a-agent-card": "No A2A agent card found at /.well-known/agent-card.json",
   "mcp-well-known-discovery": "MCP server referenced in llms.txt",
   "robots-agent-user-policy": "No applicable crawl or usage restriction found for 3 user-triggered agents (chatgpt-user, claude-user, perplexity-user) on 1 public page: https://ramp.com/. Declared policy only;",
   "llms-txt-exists": "Found the llms.txt at https://ramp.com/llms.txt.",
   "llms-txt-formatting": "The llms.txt is well-formatted: 83 lines with markdown links, 14,959 characters in total.",
   "json-ld": "JSON-LD Organization found - missing description on this entity",
   "public-api-docs": "Documentation site found at https://docs.ramp.com",
   "metadata-completeness": "3/4 metadata signals present - missing: og:type",
   "page-token-budget": "All 1 measured page fit an agent context budget (largest ~1K tokens)",
   "docs-auth-gate": "No content pages sampled",
   "openapi-spec": "OpenAPI spec found at https://ramp.com/openapi.json (version: 3.0.0)",
   "developer-portal": "Developer portal found at https://docs.ramp.com",
   "markdown-negotiation": "Missing markdown content negotiation. Homepage returned text/html when probed with Accept: text/markdown (expected text/markdown), and none of the well-known root paths (/llms.md, /auth.md, /agents.md, /developers.md,",
   "agent-ua-markdown": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly.",
   "agent-crawler-reachability": "Reachable to every agent we tested - ChatGPT-User: reachable, OAI-SearchBot: reachable, Claude-User: reachable, PerplexityBot: reachable",
   "public-api": "REST API documentation found at /api. GraphQL endpoint at https://api.ramp.com/graphql is reachable; introspection requires authentication (API key / OAuth), which is expected for agent access.",
   "oauth-support": "OAuth authorization server metadata at https://mcp.ramp.com",
   "mcp-server": "MCP server detected at https://mcp.ramp.com/mcp; it requires authentication. Presence is verified (5/6), but Ora could not inspect its tools or verify access scopes without credentials.",
   "webmcp": "Can't verify: a bot shield answered our request to ramp.com/docs/api (HTTP 403) instead of the site. That is not counted against the site.",
   "cli-tool": "CLI package found on npm: @ramp/cli",
   "rest-sdk-packages": "SDK package found only in npm",
   "nlweb-ask": "No NLWeb-conformant /ask endpoint found via GET or POST",
   "mpp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "x402-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "ucp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "acp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "ap2-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites"
  }
 },
 {
  "slug": "render",
  "name": "Render",
  "domain": "render.com",
  "finalUrl": "https://render.com/",
  "read": "2026-11-09",
  "scannedAt": "2026-11-08T17:14:59.921+00:00",
  "score": 84,
  "max": 100,
  "grade": "B",
  "category": "Infrastructure",
  "scoringVersion": null,
  "rulesUrl": null,
  "summary": "Render offers strong API access and a published SDK, but lacks scoped OAuth permissions, leaving agents with all-or-nothing access.",
  "layers": [
   {
    "id": "discovery",
    "name": "Discovery",
    "score": 10,
    "max": 14
   },
   {
    "id": "accessibility",
    "name": "Access",
    "score": 59,
    "max": 64
   },
   {
    "id": "usability",
    "name": "Usability",
    "score": 73,
    "max": 86
   },
   {
    "id": "payments",
    "name": "Payments",
    "score": 0,
    "max": 0
   }
  ],
  "checks": {
   "ard-catalog": [
    "fail",
    0,
    1
   ],
   "ai-catalog-published": [
    "na",
    0,
    1
   ],
   "ard-entries-valid": [
    "na",
    0,
    2
   ],
   "ard-trust-manifest": [
    "na",
    0,
    2
   ],
   "agentic-search-usecase": [
    "na",
    0,
    6
   ],
   "agentic-search-specific": [
    "pass",
    3,
    3
   ],
   "brand-search-accuracy": [
    "warning",
    1,
    3
   ],
   "wikipedia-presence": [
    "fail",
    0,
    4
   ],
   "robots-ai-policy-quality": [
    "pass",
    2,
    2
   ],
   "mcp-registry-listed": [
    "fail",
    0,
    1
   ],
   "npm-sdk-package": [
    "pass",
    1,
    1
   ],
   "agent-rules-repo": [
    "fail",
    0,
    1
   ],
   "agent-plugins-repo": [
    "fail",
    0,
    1
   ],
   "registry-branding": [
    "fail",
    0,
    2
   ],
   "chatgpt-app-listed": [
    "pass",
    2,
    2
   ],
   "noindex-directives": [
    "pass",
    1,
    1
   ],
   "sitemap": [
    "pass",
    2,
    2
   ],
   "content-no-js": [
    "warning",
    2,
    3
   ],
   "bot-detection": [
    "pass",
    2,
    2
   ],
   "agent-discovery-file": [
    "pass",
    2,
    2
   ],
   "agent-skills-index-v2": [
    "pass",
    2,
    2
   ],
   "a2a-agent-card": [
    "fail",
    0,
    2
   ],
   "skills-sh-listed": [
    "fail",
    0,
    1
   ],
   "pricing-md": [
    "pass",
    2,
    2
   ],
   "nlweb-schema-feeds": [
    "fail",
    0,
    1
   ],
   "mcp-well-known-discovery": [
    "pass",
    2,
    2
   ],
   "agent-mode-view": [
    "fail",
    0,
    2
   ],
   "link-headers-discovery": [
    "pass",
    1,
    1
   ],
   "markdown-url-fallback": [
    "warning",
    1,
    2
   ],
   "modular-llms-txt": [
    "pass",
    1,
    1
   ],
   "sitemap-lastmod": [
    "pass",
    1,
    1
   ],
   "robots-agent-user-policy": [
    "pass",
    2,
    2
   ],
   "llms-txt-exists": [
    "pass",
    1,
    1
   ],
   "llms-txt-formatting": [
    "warning",
    1,
    2
   ],
   "json-ld": [
    "pass",
    4,
    4
   ],
   "pricing-info": [
    "pass",
    3,
    3
   ],
   "public-api-docs": [
    "pass",
    3,
    3
   ],
   "agent-instruction": [
    "pass",
    3,
    3
   ],
   "skills-sh-quality": [
    "fail",
    0,
    2
   ],
   "json-ld-entity-linking": [
    "pass",
    2,
    2
   ],
   "metadata-completeness": [
    "pass",
    2,
    2
   ],
   "org-schema-completeness": [
    "warning",
    1,
    2
   ],
   "schema-type-breadth": [
    "fail",
    0,
    2
   ],
   "trust-anchors": [
    "pass",
    2,
    2
   ],
   "llms-txt-links-resolve": [
    "pass",
    2,
    2
   ],
   "markdown-link-alternate": [
    "fail",
    0,
    1
   ],
   "markdown-frontmatter": [
    "fail",
    0,
    1
   ],
   "redirect-hygiene": [
    "pass",
    1,
    1
   ],
   "page-token-budget": [
    "pass",
    1,
    1
   ],
   "code-fence-validity": [
    "pass",
    1,
    1
   ],
   "docs-auth-gate": [
    "pass",
    2,
    2
   ],
   "openapi-spec": [
    "pass",
    7,
    7
   ],
   "developer-portal": [
    "pass",
    6,
    6
   ],
   "api-catalog-rfc9727": [
    "warning",
    1,
    2
   ],
   "markdown-negotiation": [
    "pass",
    1,
    1
   ],
   "markdown-negotiation-vary": [
    "pass",
    1,
    1
   ],
   "agent-ua-markdown": [
    "fail",
    0,
    1
   ],
   "agent-crawler-reachability": [
    "pass",
    2,
    2
   ],
   "mcp-tool-descriptions": [
    "na",
    0,
    3
   ],
   "mcp-param-schemas": [
    "na",
    0,
    2
   ],
   "mcp-server-identity": [
    "na",
    0,
    1
   ],
   "mcp-tool-listing": [
    "na",
    0,
    3
   ],
   "mcp-tool-naming": [
    "na",
    0,
    2
   ],
   "public-api": [
    "pass",
    7,
    7
   ],
   "oauth-support": [
    "pass",
    5,
    5
   ],
   "scoped-permissions": [
    "warning",
    2,
    5
   ],
   "mcp-auth-mechanism": [
    "pass",
    2,
    2
   ],
   "mcp-oauth-metadata": [
    "pass",
    2,
    2
   ],
   "mcp-pkce-s256": [
    "pass",
    2,
    2
   ],
   "onboarding-friction": [
    "warning",
    1,
    2
   ],
   "web-bot-auth-directory": [
    "fail",
    0,
    2
   ],
   "oauth-protected-resource": [
    "pass",
    2,
    2
   ],
   "auth-md-exists": [
    "fail",
    0,
    2
   ],
   "auth-md-structure": [
    "fail",
    0,
    2
   ],
   "auth-md-walkthrough-simulation": [
    "na",
    0,
    2
   ],
   "agent-auth-discovery-metadata": [
    "warning",
    1,
    3
   ],
   "agent-auth-www-authenticate": [
    "pass",
    1,
    1
   ],
   "agent-auth-endpoints-reachable": [
    "fail",
    0,
    2
   ],
   "pap-discovery": [
    "na",
    0,
    2
   ],
   "pap-issuer-binding": [
    "na",
    0,
    2
   ],
   "pap-auth-config": [
    "na",
    0,
    2
   ],
   "pap-interfaces": [
    "na",
    0,
    2
   ],
   "pap-endpoint-enforcement": [
    "na",
    0,
    2
   ],
   "pap-cross-protocol": [
    "na",
    0,
    2
   ],
   "mcp-server": [
    "warning",
    5,
    6
   ],
   "mcp-error-handling": [
    "na",
    0,
    2
   ],
   "mcp-transport-modern": [
    "na",
    0,
    1
   ],
   "webmcp": [
    "pass",
    5,
    5
   ],
   "rate-limit-headers": [
    "warning",
    1,
    2
   ],
   "idempotency-key-support": [
    "fail",
    0,
    3
   ],
   "json-error-responses": [
    "pass",
    4,
    4
   ],
   "api-error-model": [
    "pass",
    3,
    3
   ],
   "api-versioning-policy": [
    "pass",
    3,
    3
   ],
   "pagination-shape": [
    "pass",
    2,
    2
   ],
   "async-job-pattern": [
    "pass",
    2,
    2
   ],
   "cli-tool": [
    "warning",
    2,
    3
   ],
   "rest-sdk-packages": [
    "warning",
    2,
    3
   ],
   "nlweb-ask": [
    "fail",
    0,
    1
   ],
   "nlweb-streaming": [
    "fail",
    0,
    1
   ],
   "response-schema-coverage": [
    "pass",
    2,
    2
   ],
   "mcp-tool-annotations": [
    "na",
    0,
    2
   ],
   "mcp-server-card": [
    "warning",
    1,
    2
   ],
   "mcp-multi-surface-coverage": [
    "fail",
    0,
    2
   ],
   "sandbox-environment": [
    "warning",
    0,
    2
   ],
   "batch-endpoints": [
    "pass",
    2,
    2
   ],
   "mcp-resource-listing": [
    "na",
    0,
    3
   ],
   "graphql-error-type-definition": [
    "na",
    0,
    3
   ],
   "graphql-versioning-policy": [
    "na",
    0,
    2
   ],
   "graphql-pagination-pattern": [
    "na",
    0,
    2
   ],
   "graphql-async-job-pattern": [
    "na",
    0,
    2
   ],
   "graphql-schema-completeness": [
    "na",
    0,
    3
   ],
   "graphql-batch-mutations": [
    "na",
    0,
    2
   ],
   "agent-friendly-404": [
    "warning",
    1,
    2
   ],
   "ax-document-structure": [
    "pass",
    3,
    3
   ],
   "ax-native-controls": [
    "pass",
    3,
    3
   ],
   "ax-accessible-names": [
    "pass",
    2,
    2
   ],
   "ax-form-labeling": [
    "na",
    0,
    2
   ],
   "ax-tree-injection-safe": [
    "pass",
    2,
    2
   ],
   "mcp-app-registry": [
    "na",
    0,
    4
   ],
   "a2ui-support": [
    "na",
    0,
    2
   ],
   "mcp-apps-ui-quality": [
    "na",
    0,
    4
   ],
   "mcp-view-domain": [
    "na",
    0,
    4
   ],
   "mcp-view-csp": [
    "na",
    0,
    4
   ],
   "api-schema-analysis": [
    "warning",
    1,
    2
   ],
   "function-calling-compat": [
    "pass",
    2,
    2
   ],
   "mcp-resource-quality": [
    "na",
    0,
    3
   ],
   "mpp-support": [
    "na",
    0,
    2
   ],
   "x402-support": [
    "na",
    0,
    2
   ],
   "ucp-support": [
    "na",
    0,
    3
   ],
   "acp-support": [
    "na",
    0,
    3
   ],
   "acp-delegate-payment": [
    "na",
    0,
    3
   ],
   "ap2-support": [
    "na",
    0,
    3
   ]
  },
  "flagged": [
   {
    "id": "brand-search-accuracy",
    "layer": "discovery",
    "status": "warning",
    "score": 1,
    "max": 3,
    "tier": "required",
    "est": 3.2,
    "detail": "render.com ranks #8 for \"Render\" (searched your brand name alone: no main product term from your homepage qualified)"
   },
   {
    "id": "ard-catalog",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 1.6,
    "detail": "No /.well-known/ard.json, no same-site rel=\"ard\" link, and no legacy /.well-known/ai-catalog.json"
   },
   {
    "id": "idempotency-key-support",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": 1.6,
    "detail": "No REST Idempotency-Key support detected (GraphQL signal: fail 0)."
   },
   {
    "id": "mcp-registry-listed",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 1.6,
    "detail": "No verified entry in the official MCP Registry or on Smithery, and no npm or PyPI package of yours that runs as an MCP server. To pass,"
   },
   {
    "id": "scoped-permissions",
    "layer": "usability",
    "status": "warning",
    "score": 2,
    "max": 5,
    "tier": "recommended",
    "est": 1.6,
    "detail": "OpenAPI declares security schemes but no named OAuth scopes - agents get all-or-nothing access. Declare per-scope grants (e.g. read:*, write:*) in the spec."
   },
   {
    "id": "wikipedia-presence",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 4,
    "tier": "recommended",
    "est": 1.4,
    "detail": "No Wikipedia article or Wikidata entity found for \"render\" - creating a Wikipedia page and a Wikidata item with P856 = render.com is the highest-impact step for AI search citation coverage"
   },
   {
    "id": "schema-type-breadth",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1,
    "detail": "No extended schema types found - AI can only answer basic questions about this entity"
   },
   {
    "id": "agent-friendly-404",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "The nonexistent path https://render.com/__ora-404-probe-9e2r20tk correctly returns HTTP 404. Partial credit: no Markdown error body was detected."
   },
   {
    "id": "api-schema-analysis",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "REST: agent-friendly schema (255 operations, 100% with operationIds, 100% documented by description or summary) | GraphQL: endpoint detected but no schema reachable | Combined score: 1/2"
   },
   {
    "id": "cli-tool",
    "layer": "usability",
    "status": "warning",
    "score": 2,
    "max": 3,
    "tier": "recommended",
    "est": 0.5,
    "detail": "CLI tool mentioned in llms.txt"
   },
   {
    "id": "content-no-js",
    "layer": "accessibility",
    "status": "warning",
    "score": 2,
    "max": 3,
    "tier": "required",
    "est": 0.5,
    "detail": "Homepage: 6049 chars with H1, but 1.7% content ratio is below the 5% target. 4 of 4 sampled inner pages have text without JavaScript (1 skipped)."
   },
   {
    "id": "llms-txt-formatting",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "The llms.txt at https://render.com/llms.txt is well-formatted with markdown links, but at 52,594 characters it exceeds the 30,000-character recommendation for a navigation index."
   },
   {
    "id": "mcp-server",
    "layer": "usability",
    "status": "warning",
    "score": 5,
    "max": 6,
    "tier": "required",
    "est": 0.5,
    "detail": "MCP server detected at https://mcp.render.com/mcp; it requires authentication. Presence is verified (5/6), but Ora could not inspect its tools or verify access scopes without credentials."
   },
   {
    "id": "onboarding-friction",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "Onboarding signals described but not verified live: free tier available, self-serve key generation, sandbox/test environment"
   },
   {
    "id": "org-schema-completeness",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "Organization schema found but missing: contactPoint, address"
   },
   {
    "id": "rate-limit-headers",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "REST rate-limit headers documented in OpenAPI spec, but not observed on a live response (API requires authentication). (GraphQL signal: fail 0)."
   },
   {
    "id": "rest-sdk-packages",
    "layer": "usability",
    "status": "warning",
    "score": 2,
    "max": 3,
    "tier": "recommended",
    "est": 0.5,
    "detail": "SDK packages found in npm, pypi"
   },
   {
    "id": "agent-auth-discovery-metadata",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 3,
    "tier": "recommended",
    "est": 0.2,
    "detail": "PRM + AS metadata both present (PRM discovered at https://mcp.render.com) (AS metadata fetched from advertised origin https://api.render.com) but AS metadata has no agent_auth block"
   },
   {
    "id": "agent-auth-endpoints-reachable",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.2,
    "detail": "No agent_auth endpoint URIs found in AS metadata or /auth.md prose; nothing to probe"
   },
   {
    "id": "auth-md-exists",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.2,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "auth-md-structure",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.2,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "mcp-multi-surface-coverage",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.2,
    "detail": "You run an MCP server for your product, but not one for your documentation. This bonus needs two MCP servers: one for your product so agents can take actions,"
   },
   {
    "id": "sandbox-environment",
    "layer": "usability",
    "status": "warning",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.2,
    "detail": "Sandbox/test environment mentioned in llms.txt but no sandbox surface verified"
   },
   {
    "id": "a2a-agent-card",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.1,
    "detail": "No A2A agent card found at /.well-known/agent-card.json"
   },
   {
    "id": "mcp-server-card",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.1,
    "detail": "MCP server card found at https://render.com/.well-known/mcp/server-card.json but missing fields: name"
   },
   {
    "id": "agent-mode-view",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "?mode=agent returns same content as homepage (no dedicated agent view)"
   },
   {
    "id": "agent-plugins-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No Agent Plugins manifest (plugin.json) found in discovered repos"
   },
   {
    "id": "agent-rules-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Could not locate a public repo containing agent configs or rules. If our probes missed it, AI coding agents likely will too - link the repo from your homepage or docs so it's discoverable."
   },
   {
    "id": "agent-ua-markdown",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly."
   },
   {
    "id": "api-catalog-rfc9727",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "required",
    "est": 0,
    "detail": "api-catalog linkset[0] has no 'item' entries"
   },
   {
    "id": "markdown-frontmatter",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "None of the 2 served markdown docs opens with a --- frontmatter block. Add title, description, canonical, and last-updated so agents get metadata without scraping."
   },
   {
    "id": "markdown-link-alternate",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No sampled page advertises a markdown alternate. Add <link rel=\"alternate\" type=\"text/markdown\" href=\"...\"> (or the equivalent Link response header) pointing at a markdown twin of the page."
   },
   {
    "id": "markdown-url-fallback",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "Partial markdown fallback support. Homepage (https://render.com/index.md) returns markdown, but 1 of 3 sampled content pages do not: https://render.com/about.md. To earn full credit, serve a .md twin for each content page (e.g."
   },
   {
    "id": "nlweb-ask",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No NLWeb-conformant /ask endpoint found via GET or POST"
   },
   {
    "id": "nlweb-schema-feeds",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No schemamap: directive in robots.txt"
   },
   {
    "id": "nlweb-streaming",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "NLWeb /ask does not support SSE streaming via GET or POST"
   },
   {
    "id": "registry-branding",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No registry branding (name, icon, description) found"
   },
   {
    "id": "skills-sh-listed",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No official skills self-published on skills.sh (100 community skills with potential relation to this domain found, but only self-published official skills count)"
   },
   {
    "id": "skills-sh-quality",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No official skills on skills.sh to evaluate"
   },
   {
    "id": "web-bot-auth-directory",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No /.well-known/http-message-signatures-directory found"
   }
  ],
  "seen": {
   "brand-search-accuracy": "render.com ranks #8 for \"Render\" (searched your brand name alone: no main product term from your homepage qualified)",
   "wikipedia-presence": "No Wikipedia article or Wikidata entity found for \"render\" - creating a Wikipedia page and a Wikidata item with P856 = render.com is the highest-impact step for AI search citation coverage",
   "robots-ai-policy-quality": "AI search crawlers: allowed in 15 of 15 checks (3 crawlers on 5 pages). AI training crawlers: allowed in 10 of 10 checks (2 crawlers on 5 pages), not scored.",
   "noindex-directives": "No noindex on the homepage: no robots, googlebot or bingbot meta tag and no X-Robots-Tag header hides it from search.",
   "sitemap": "Valid sitemap found at https://render.com/sitemap-index.xml with multiple sitemaps entries",
   "content-no-js": "Homepage: 6049 chars with H1, but 1.7% content ratio is below the 5% target. 4 of 4 sampled inner pages have text without JavaScript (1 skipped).",
   "bot-detection": "Site accessible to 4 agent user-agents (ChatGPT-User, OAI-SearchBot, Claude-User, PerplexityBot).",
   "agent-discovery-file": "Agent Skills index (agentskills.io) found at /.well-known/agent-skills/index.json with 22 skill(s)",
   "a2a-agent-card": "No A2A agent card found at /.well-known/agent-card.json",
   "mcp-well-known-discovery": "MCP server discoverable via server-card.json at /.well-known/mcp/",
   "robots-agent-user-policy": "No applicable crawl or usage restriction found for 3 user-triggered agents (chatgpt-user, claude-user, perplexity-user) on 1 public page: https://render.com/. Declared policy only;",
   "llms-txt-exists": "Found the llms.txt at https://render.com/llms.txt.",
   "llms-txt-formatting": "The llms.txt at https://render.com/llms.txt is well-formatted with markdown links, but at 52,594 characters it exceeds the 30,000-character recommendation for a navigation index.",
   "json-ld": "Rich JSON-LD identity: Organization with name, description, url, and sameAs/logo/address (3 block(s))",
   "public-api-docs": "Documentation site found at https://render.com",
   "metadata-completeness": "All metadata signals present: canonical URL, lang=\"en\", og:image, og:type",
   "page-token-budget": "All 7 measured pages fit an agent context budget (largest ~3K tokens)",
   "docs-auth-gate": "All 5 sampled pages are publicly readable (4 with substantive content)",
   "openapi-spec": "OpenAPI spec found at https://api-docs.render.com/openapi/render-public-api-1.json (version: 3.0.2)",
   "developer-portal": "Developer portal found at /docs",
   "markdown-negotiation": "Path-suffix markdown docs served with text/markdown content-type: /agents.md, /index.md",
   "agent-ua-markdown": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly.",
   "agent-crawler-reachability": "Reachable to every agent we tested - ChatGPT-User: reachable, OAI-SearchBot: reachable, Claude-User: reachable, PerplexityBot: reachable",
   "public-api": "Documented REST API detected; endpoints require authentication (API key / OAuth), which is expected for agent access.",
   "oauth-support": "OAuth authorization server metadata at https://api.render.com",
   "mcp-server": "MCP server detected at https://mcp.render.com/mcp; it requires authentication. Presence is verified (5/6), but Ora could not inspect its tools or verify access scopes without credentials.",
   "webmcp": "Imperative WebMCP API detected (navigator.modelContext.registerTool in inline script). Note: the entry point moved to document.modelContext - Chrome 150+ deprecates the navigator.modelContext alias.",
   "cli-tool": "CLI tool mentioned in llms.txt",
   "rest-sdk-packages": "SDK packages found in npm, pypi",
   "nlweb-ask": "No NLWeb-conformant /ask endpoint found via GET or POST",
   "mpp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "x402-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "ucp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "acp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "ap2-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites"
  }
 },
 {
  "slug": "salesforce",
  "name": "Salesforce",
  "domain": "salesforce.com",
  "finalUrl": "https://www.salesforce.com/",
  "read": "2026-11-09",
  "scannedAt": "2026-11-08T13:27:34.761+00:00",
  "score": 51,
  "max": 100,
  "grade": "C",
  "category": "CRM",
  "scoringVersion": null,
  "rulesUrl": null,
  "summary": "Salesforce offers discoverable developer resources and an SDK package, but lacks a published OpenAPI specification for agent integration.",
  "layers": [
   {
    "id": "discovery",
    "name": "Discovery",
    "score": 11,
    "max": 12
   },
   {
    "id": "accessibility",
    "name": "Access",
    "score": 16,
    "max": 48
   },
   {
    "id": "usability",
    "name": "Usability",
    "score": 24,
    "max": 56
   },
   {
    "id": "payments",
    "name": "Payments",
    "score": 0,
    "max": 0
   }
  ],
  "checks": {
   "ard-catalog": [
    "fail",
    0,
    1
   ],
   "ai-catalog-published": [
    "na",
    0,
    1
   ],
   "ard-entries-valid": [
    "na",
    0,
    2
   ],
   "ard-trust-manifest": [
    "na",
    0,
    2
   ],
   "agentic-search-usecase": [
    "na",
    0,
    6
   ],
   "agentic-search-specific": [
    "pass",
    3,
    3
   ],
   "brand-search-accuracy": [
    "pass",
    3,
    3
   ],
   "wikipedia-presence": [
    "warning",
    2,
    4
   ],
   "robots-ai-policy-quality": [
    "na",
    0,
    2
   ],
   "mcp-registry-listed": [
    "na",
    0,
    1
   ],
   "npm-sdk-package": [
    "pass",
    1,
    1
   ],
   "agent-rules-repo": [
    "fail",
    0,
    1
   ],
   "agent-plugins-repo": [
    "fail",
    0,
    1
   ],
   "registry-branding": [
    "na",
    0,
    2
   ],
   "chatgpt-app-listed": [
    "pass",
    2,
    2
   ],
   "noindex-directives": [
    "na",
    0,
    1
   ],
   "sitemap": [
    "fail",
    0,
    2
   ],
   "content-no-js": [
    "warning",
    0,
    3
   ],
   "bot-detection": [
    "warning",
    0,
    2
   ],
   "agent-discovery-file": [
    "fail",
    0,
    2
   ],
   "agent-skills-index-v2": [
    "na",
    0,
    2
   ],
   "a2a-agent-card": [
    "fail",
    0,
    2
   ],
   "skills-sh-listed": [
    "fail",
    0,
    1
   ],
   "pricing-md": [
    "na",
    0,
    2
   ],
   "nlweb-schema-feeds": [
    "warning",
    0,
    1
   ],
   "mcp-well-known-discovery": [
    "fail",
    0,
    2
   ],
   "agent-mode-view": [
    "fail",
    0,
    2
   ],
   "link-headers-discovery": [
    "fail",
    0,
    1
   ],
   "markdown-url-fallback": [
    "fail",
    0,
    2
   ],
   "modular-llms-txt": [
    "fail",
    0,
    1
   ],
   "sitemap-lastmod": [
    "na",
    0,
    1
   ],
   "robots-agent-user-policy": [
    "na",
    0,
    2
   ],
   "llms-txt-exists": [
    "pass",
    1,
    1
   ],
   "llms-txt-formatting": [
    "pass",
    2,
    2
   ],
   "json-ld": [
    "fail",
    0,
    4
   ],
   "pricing-info": [
    "na",
    0,
    3
   ],
   "public-api-docs": [
    "pass",
    3,
    3
   ],
   "agent-instruction": [
    "warning",
    2,
    3
   ],
   "skills-sh-quality": [
    "fail",
    0,
    2
   ],
   "json-ld-entity-linking": [
    "fail",
    0,
    2
   ],
   "metadata-completeness": [
    "warning",
    1,
    2
   ],
   "org-schema-completeness": [
    "fail",
    0,
    2
   ],
   "schema-type-breadth": [
    "fail",
    0,
    2
   ],
   "trust-anchors": [
    "fail",
    0,
    2
   ],
   "llms-txt-links-resolve": [
    "na",
    0,
    2
   ],
   "markdown-link-alternate": [
    "na",
    0,
    1
   ],
   "markdown-frontmatter": [
    "na",
    0,
    1
   ],
   "redirect-hygiene": [
    "pass",
    1,
    1
   ],
   "page-token-budget": [
    "na",
    0,
    1
   ],
   "code-fence-validity": [
    "pass",
    1,
    1
   ],
   "docs-auth-gate": [
    "na",
    0,
    2
   ],
   "openapi-spec": [
    "fail",
    0,
    7
   ],
   "developer-portal": [
    "pass",
    6,
    6
   ],
   "api-catalog-rfc9727": [
    "fail",
    0,
    2
   ],
   "markdown-negotiation": [
    "fail",
    0,
    1
   ],
   "markdown-negotiation-vary": [
    "fail",
    0,
    1
   ],
   "agent-ua-markdown": [
    "na",
    0,
    1
   ],
   "agent-crawler-reachability": [
    "warning",
    0,
    2
   ],
   "mcp-tool-descriptions": [
    "na",
    0,
    3
   ],
   "mcp-param-schemas": [
    "na",
    0,
    2
   ],
   "mcp-server-identity": [
    "na",
    0,
    1
   ],
   "mcp-tool-listing": [
    "na",
    0,
    3
   ],
   "mcp-tool-naming": [
    "na",
    0,
    2
   ],
   "public-api": [
    "pass",
    7,
    7
   ],
   "oauth-support": [
    "pass",
    5,
    5
   ],
   "scoped-permissions": [
    "na",
    0,
    5
   ],
   "mcp-auth-mechanism": [
    "na",
    0,
    2
   ],
   "mcp-oauth-metadata": [
    "na",
    0,
    2
   ],
   "mcp-pkce-s256": [
    "na",
    0,
    2
   ],
   "onboarding-friction": [
    "fail",
    0,
    2
   ],
   "web-bot-auth-directory": [
    "fail",
    0,
    2
   ],
   "oauth-protected-resource": [
    "pass",
    2,
    2
   ],
   "auth-md-exists": [
    "fail",
    0,
    2
   ],
   "auth-md-structure": [
    "fail",
    0,
    2
   ],
   "auth-md-walkthrough-simulation": [
    "na",
    0,
    2
   ],
   "agent-auth-discovery-metadata": [
    "warning",
    1,
    3
   ],
   "agent-auth-www-authenticate": [
    "fail",
    0,
    1
   ],
   "agent-auth-endpoints-reachable": [
    "fail",
    0,
    2
   ],
   "pap-discovery": [
    "na",
    0,
    2
   ],
   "pap-issuer-binding": [
    "na",
    0,
    2
   ],
   "pap-auth-config": [
    "na",
    0,
    2
   ],
   "pap-interfaces": [
    "na",
    0,
    2
   ],
   "pap-endpoint-enforcement": [
    "na",
    0,
    2
   ],
   "pap-cross-protocol": [
    "na",
    0,
    2
   ],
   "mcp-server": [
    "warning",
    5,
    6
   ],
   "mcp-error-handling": [
    "na",
    0,
    2
   ],
   "mcp-transport-modern": [
    "na",
    0,
    1
   ],
   "webmcp": [
    "fail",
    0,
    5
   ],
   "rate-limit-headers": [
    "fail",
    0,
    2
   ],
   "idempotency-key-support": [
    "fail",
    0,
    3
   ],
   "json-error-responses": [
    "fail",
    0,
    4
   ],
   "api-error-model": [
    "na",
    0,
    3
   ],
   "api-versioning-policy": [
    "na",
    0,
    3
   ],
   "pagination-shape": [
    "na",
    0,
    2
   ],
   "async-job-pattern": [
    "na",
    0,
    2
   ],
   "cli-tool": [
    "pass",
    3,
    3
   ],
   "rest-sdk-packages": [
    "warning",
    1,
    3
   ],
   "nlweb-ask": [
    "pass",
    1,
    1
   ],
   "nlweb-streaming": [
    "fail",
    0,
    1
   ],
   "response-schema-coverage": [
    "na",
    0,
    2
   ],
   "mcp-tool-annotations": [
    "na",
    0,
    2
   ],
   "mcp-server-card": [
    "fail",
    0,
    2
   ],
   "mcp-multi-surface-coverage": [
    "fail",
    0,
    2
   ],
   "sandbox-environment": [
    "fail",
    0,
    2
   ],
   "batch-endpoints": [
    "na",
    0,
    2
   ],
   "mcp-resource-listing": [
    "na",
    0,
    3
   ],
   "graphql-error-type-definition": [
    "fail",
    0,
    3
   ],
   "graphql-versioning-policy": [
    "fail",
    0,
    2
   ],
   "graphql-pagination-pattern": [
    "fail",
    0,
    2
   ],
   "graphql-async-job-pattern": [
    "fail",
    0,
    2
   ],
   "graphql-schema-completeness": [
    "na",
    0,
    3
   ],
   "graphql-batch-mutations": [
    "na",
    0,
    2
   ],
   "agent-friendly-404": [
    "na",
    0,
    2
   ],
   "ax-document-structure": [
    "na",
    0,
    3
   ],
   "ax-native-controls": [
    "na",
    0,
    3
   ],
   "ax-accessible-names": [
    "na",
    0,
    2
   ],
   "ax-form-labeling": [
    "na",
    0,
    2
   ],
   "ax-tree-injection-safe": [
    "na",
    0,
    2
   ],
   "mcp-app-registry": [
    "na",
    0,
    4
   ],
   "a2ui-support": [
    "na",
    0,
    2
   ],
   "mcp-apps-ui-quality": [
    "na",
    0,
    4
   ],
   "mcp-view-domain": [
    "na",
    0,
    4
   ],
   "mcp-view-csp": [
    "na",
    0,
    4
   ],
   "api-schema-analysis": [
    "fail",
    0,
    2
   ],
   "function-calling-compat": [
    "fail",
    0,
    2
   ],
   "mcp-resource-quality": [
    "na",
    0,
    3
   ],
   "mpp-support": [
    "na",
    0,
    2
   ],
   "x402-support": [
    "na",
    0,
    2
   ],
   "ucp-support": [
    "na",
    0,
    3
   ],
   "acp-support": [
    "na",
    0,
    3
   ],
   "acp-delegate-payment": [
    "na",
    0,
    3
   ],
   "ap2-support": [
    "na",
    0,
    3
   ]
  },
  "flagged": [
   {
    "id": "openapi-spec",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 7,
    "tier": "required",
    "est": 4.9,
    "detail": "No OpenAPI/Swagger specification found"
   },
   {
    "id": "webmcp",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 5,
    "tier": "required",
    "est": 4,
    "detail": "No WebMCP support detected - no document.modelContext / navigator.modelContext usage found"
   },
   {
    "id": "json-error-responses",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 4,
    "tier": "required",
    "est": 3.2,
    "detail": "API does not return JSON error responses (or no API detected)"
   },
   {
    "id": "json-ld",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 4,
    "tier": "required",
    "est": 2.8,
    "detail": "No JSON-LD structured data found on homepage"
   },
   {
    "id": "graphql-error-type-definition",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": 2.4,
    "detail": "GraphQL introspection auth-gated and no typed graphql error model documentation found on GraphQL-tagged pages"
   },
   {
    "id": "idempotency-key-support",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": 2.4,
    "detail": "GraphQL introspection auth-gated and no idempotency documentation found on GraphQL-tagged pages"
   },
   {
    "id": "content-no-js",
    "layer": "accessibility",
    "status": "warning",
    "score": 0,
    "max": 3,
    "tier": "required",
    "est": 2.1,
    "detail": "Homepage blocked by WAF/security challenge - content not accessible to agents"
   },
   {
    "id": "ard-catalog",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 1.9,
    "detail": "No /.well-known/ard.json, no same-site rel=\"ard\" link, and no legacy /.well-known/ai-catalog.json"
   },
   {
    "id": "api-schema-analysis",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.6,
    "detail": "GraphQL: introspection auth-gated and no schema evidence in docs"
   },
   {
    "id": "function-calling-compat",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.6,
    "detail": "No API spec found - function calling requires discoverable endpoints"
   },
   {
    "id": "graphql-async-job-pattern",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.6,
    "detail": "GraphQL introspection auth-gated and no graphql async-job pattern documentation found on GraphQL-tagged pages"
   },
   {
    "id": "graphql-pagination-pattern",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.6,
    "detail": "GraphQL introspection auth-gated and no graphql pagination pattern documentation found on GraphQL-tagged pages"
   },
   {
    "id": "graphql-versioning-policy",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.6,
    "detail": "GraphQL introspection auth-gated and no graphql versioning / deprecation policy documentation found on GraphQL-tagged pages"
   },
   {
    "id": "onboarding-friction",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.6,
    "detail": "High onboarding friction - no free tier, self-serve keys, or sandbox detected"
   },
   {
    "id": "rate-limit-headers",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.6,
    "detail": "GraphQL introspection auth-gated and no header convention documented on GraphQL-tagged pages"
   },
   {
    "id": "rest-sdk-packages",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 3,
    "tier": "recommended",
    "est": 1.6,
    "detail": "SDK package found only in npm"
   },
   {
    "id": "agent-crawler-reachability",
    "layer": "accessibility",
    "status": "warning",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.4,
    "detail": "Bot management challenged ChatGPT-User, OAI-SearchBot, Claude-User, PerplexityBot - a challenge is an identity check verified crawlers pass, so reachability is undetermined rather than blocked (ChatGPT-User: challenged,"
   },
   {
    "id": "agent-discovery-file",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 1.4,
    "detail": "No agent discovery file found"
   },
   {
    "id": "bot-detection",
    "layer": "accessibility",
    "status": "warning",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 1.4,
    "detail": "Bot management challenged ChatGPT-User, OAI-SearchBot, Claude-User, PerplexityBot. A challenge is an identity check that verified crawlers pass, so this is not proof agents are blocked - but unverified agents will not get through."
   },
   {
    "id": "json-ld-entity-linking",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.4,
    "detail": "No JSON-LD found - no entity linking possible"
   },
   {
    "id": "org-schema-completeness",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.4,
    "detail": "No JSON-LD found - Organization schema missing"
   },
   {
    "id": "schema-type-breadth",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.4,
    "detail": "No extended schema types found - AI can only answer basic questions about this entity"
   },
   {
    "id": "sitemap",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 1.4,
    "detail": "No sitemap found"
   },
   {
    "id": "trust-anchors",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 1.4,
    "detail": "No trust anchor pages found with sufficient content (About, Contact, Privacy)"
   },
   {
    "id": "a2a-agent-card",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.9,
    "detail": "No A2A agent card found at /.well-known/agent-card.json"
   },
   {
    "id": "agent-auth-discovery-metadata",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 3,
    "tier": "recommended",
    "est": 0.9,
    "detail": "Only PRM present; spec calls for both PRM and AS metadata"
   },
   {
    "id": "agent-auth-endpoints-reachable",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.9,
    "detail": "No agent_auth endpoint URIs found in AS metadata or /auth.md prose; nothing to probe"
   },
   {
    "id": "api-catalog-rfc9727",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.9,
    "detail": "No /.well-known/api-catalog found (RFC 9727)"
   },
   {
    "id": "auth-md-exists",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.9,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "auth-md-structure",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.9,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "mcp-multi-surface-coverage",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.9,
    "detail": "This bonus needs two MCP servers: one for your product so agents can take actions, and a separate one for your documentation so agents can answer questions from your docs."
   },
   {
    "id": "mcp-server-card",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.9,
    "detail": "No MCP server card found (checked /.well-known/mcp/server-card.json, the site's ai-catalog.json, servers[].card in mcp.json, and <server>/server-card)"
   },
   {
    "id": "mcp-well-known-discovery",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.9,
    "detail": "No MCP server URL discovered"
   },
   {
    "id": "sandbox-environment",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.9,
    "detail": "No sandbox or test environment found"
   },
   {
    "id": "mcp-server",
    "layer": "usability",
    "status": "warning",
    "score": 5,
    "max": 6,
    "tier": "required",
    "est": 0.8,
    "detail": "First-party MCP server published by product org (npm, @salesforce/mcp-provider-aura-experts, 18130 score). Add live handshake at /.well-known/mcp for full credit."
   },
   {
    "id": "agent-instruction",
    "layer": "accessibility",
    "status": "warning",
    "score": 2,
    "max": 3,
    "tier": "required",
    "est": 0.7,
    "detail": "When-to-use guidance found at https://docs.salesforce.com"
   },
   {
    "id": "metadata-completeness",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "required",
    "est": 0.7,
    "detail": "Only 1/4 metadata signals present - missing: canonical URL, og:image, og:type"
   },
   {
    "id": "link-headers-discovery",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 0.5,
    "detail": "No HTTP Link response headers (RFC 8288) found"
   },
   {
    "id": "markdown-negotiation-vary",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.5,
    "detail": "Homepage https://salesforce.com does not meet the Markdown negotiation requirements: Accept: text/markdown returned text/html; Vary header missing Accept (got \"none\")"
   },
   {
    "id": "agent-auth-www-authenticate",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.4,
    "detail": "No 401 with WWW-Authenticate: Bearer resource_metadata=... found. Probed [https://salesforce.com/api, https://salesforce.com/api/v1, https://salesforce.com/v1, https://salesforce.com/v2, https://salesforce.com/agent/identity,"
   },
   {
    "id": "wikipedia-presence",
    "layer": "discovery",
    "status": "warning",
    "score": 2,
    "max": 4,
    "tier": "recommended",
    "est": 0.3,
    "detail": "Wikidata Q941127 (Salesforce) verified - draft a Wikipedia page with cited references to complete knowledge graph coverage"
   },
   {
    "id": "agent-mode-view",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No agent mode view detected at ?mode=agent (optional)"
   },
   {
    "id": "agent-plugins-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No Agent Plugins manifest (plugin.json) found in discovered repos"
   },
   {
    "id": "agent-rules-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Could not locate a public repo containing agent configs or rules. If our probes missed it, AI coding agents likely will too - link the repo from your homepage or docs so it's discoverable."
   },
   {
    "id": "markdown-negotiation",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Missing markdown content negotiation. Homepage returned text/html when probed with Accept: text/markdown (expected text/markdown), and none of the well-known root paths (/llms.md, /auth.md, /agents.md, /developers.md, /api.md, /index.md,"
   },
   {
    "id": "markdown-url-fallback",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "Homepage does not support the .md suffix. Probed https://salesforce.com/index.md and it did not return markdown (expected text/markdown content-type or a heading-led non-HTML body)."
   },
   {
    "id": "modular-llms-txt",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No section-level llms.txt found. Tried /docs/llms.txt, /api/llms.txt, /developers/llms.txt, /guides/llms.txt, /reference/llms.txt. This is a bonus check: it can add a point and never costs one."
   },
   {
    "id": "nlweb-schema-feeds",
    "layer": "accessibility",
    "status": "warning",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "robots.txt blocked by WAF/bot protection - cannot check for Schema Feeds"
   },
   {
    "id": "nlweb-streaming",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "NLWeb /ask requires authentication - cannot verify streaming"
   },
   {
    "id": "skills-sh-listed",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No official skills self-published on skills.sh (100 community skills with potential relation to this domain found, but only self-published official skills count)"
   },
   {
    "id": "skills-sh-quality",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No official skills on skills.sh to evaluate"
   },
   {
    "id": "web-bot-auth-directory",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No /.well-known/http-message-signatures-directory found"
   }
  ],
  "seen": {
   "brand-search-accuracy": "salesforce.com ranks #3 for \"salesforce\" (searched your brand name alone: we could not read a product term from your site)",
   "wikipedia-presence": "Wikidata Q941127 (Salesforce) verified - draft a Wikipedia page with cited references to complete knowledge graph coverage",
   "robots-ai-policy-quality": "Cannot verify robots.txt permission for search crawlers: WAF/bot challenge (HTTP 403)",
   "noindex-directives": "Homepage blocked by WAF - cannot read its indexing directives",
   "sitemap": "No sitemap found",
   "content-no-js": "Homepage blocked by WAF/security challenge - content not accessible to agents",
   "bot-detection": "Bot management challenged ChatGPT-User, OAI-SearchBot, Claude-User, PerplexityBot. A challenge is an identity check that verified crawlers pass,",
   "agent-discovery-file": "No agent discovery file found",
   "a2a-agent-card": "No A2A agent card found at /.well-known/agent-card.json",
   "mcp-well-known-discovery": "No MCP server URL discovered",
   "robots-agent-user-policy": "Cannot verify robots.txt permission for user-triggered agents: WAF/bot challenge (HTTP 403)",
   "llms-txt-exists": "Found the llms.txt at https://docs.salesforce.com/llms.txt.",
   "llms-txt-formatting": "The llms.txt is well-formatted: 9 lines with markdown links, 884 characters in total.",
   "json-ld": "No JSON-LD structured data found on homepage",
   "public-api-docs": "Documentation site found at https://docs.salesforce.com",
   "metadata-completeness": "Only 1/4 metadata signals present - missing: canonical URL, og:image, og:type",
   "page-token-budget": "Nothing sampled to measure",
   "docs-auth-gate": "Site is behind a WAF/bot wall (scored by bot-detection) - cannot separate auth gating from bot blocking",
   "openapi-spec": "No OpenAPI/Swagger specification found",
   "developer-portal": "Developer documentation portal found at https://docs.salesforce.com",
   "markdown-negotiation": "Missing markdown content negotiation. Homepage returned text/html when probed with Accept: text/markdown (expected text/markdown), and none of the well-known root paths (/llms.md, /auth.md, /agents.md, /developers.md,",
   "agent-ua-markdown": "Site is behind a WAF/bot wall - cannot probe bot-UA serving",
   "agent-crawler-reachability": "Bot management challenged ChatGPT-User, OAI-SearchBot, Claude-User, PerplexityBot - a challenge is an identity check verified crawlers pass, so reachability is undetermined rather than blocked (ChatGPT-User: challenged,",
   "public-api": "API described in documentation at https://docs.salesforce.com but no machine-verifiable API surface confirmed. GraphQL endpoint at https://salesforce.com/graphql is reachable;",
   "oauth-support": "OpenID Connect discovery endpoint found at https://login.salesforce.com",
   "mcp-server": "First-party MCP server published by product org (npm, @salesforce/mcp-provider-aura-experts, 18130 score). Add live handshake at /.well-known/mcp for full credit.",
   "webmcp": "No WebMCP support detected - no document.modelContext / navigator.modelContext usage found",
   "cli-tool": "CLI package found on npm: @salesforce/cli",
   "rest-sdk-packages": "SDK package found only in npm",
   "nlweb-ask": "NLWeb /ask endpoint exists but requires authentication (HTTP 403, via GET)",
   "mpp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "x402-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "ucp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "acp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "ap2-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites"
  }
 },
 {
  "slug": "sentry",
  "name": "Sentry",
  "domain": "sentry.io",
  "finalUrl": "https://sentry.io/welcome/",
  "read": "2026-11-09",
  "scannedAt": "2026-11-08T13:16:48.812+00:00",
  "score": 80,
  "max": 100,
  "grade": "B",
  "category": "Infrastructure",
  "scoringVersion": null,
  "rulesUrl": null,
  "summary": "Sentry offers strong discovery and developer SDK coverage, but lacks a published OpenAPI specification for agents to integrate against.",
  "layers": [
   {
    "id": "discovery",
    "name": "Discovery",
    "score": 13,
    "max": 14
   },
   {
    "id": "accessibility",
    "name": "Access",
    "score": 48,
    "max": 62
   },
   {
    "id": "usability",
    "name": "Usability",
    "score": 59.5,
    "max": 78
   },
   {
    "id": "payments",
    "name": "Payments",
    "score": 0,
    "max": 0
   }
  ],
  "checks": {
   "ard-catalog": [
    "warning",
    0,
    1
   ],
   "ai-catalog-published": [
    "warning",
    0,
    1
   ],
   "ard-entries-valid": [
    "na",
    0,
    2
   ],
   "ard-trust-manifest": [
    "na",
    0,
    2
   ],
   "agentic-search-usecase": [
    "na",
    0,
    6
   ],
   "agentic-search-specific": [
    "pass",
    3,
    3
   ],
   "brand-search-accuracy": [
    "pass",
    3,
    3
   ],
   "wikipedia-presence": [
    "warning",
    2,
    4
   ],
   "robots-ai-policy-quality": [
    "pass",
    2,
    2
   ],
   "mcp-registry-listed": [
    "pass",
    1,
    1
   ],
   "npm-sdk-package": [
    "pass",
    1,
    1
   ],
   "agent-rules-repo": [
    "pass",
    1,
    1
   ],
   "agent-plugins-repo": [
    "fail",
    0,
    1
   ],
   "registry-branding": [
    "warning",
    1,
    2
   ],
   "chatgpt-app-listed": [
    "fail",
    0,
    2
   ],
   "noindex-directives": [
    "pass",
    1,
    1
   ],
   "sitemap": [
    "pass",
    2,
    2
   ],
   "content-no-js": [
    "warning",
    2,
    3
   ],
   "bot-detection": [
    "pass",
    2,
    2
   ],
   "agent-discovery-file": [
    "warning",
    1,
    2
   ],
   "agent-skills-index-v2": [
    "fail",
    0,
    2
   ],
   "a2a-agent-card": [
    "fail",
    0,
    2
   ],
   "skills-sh-listed": [
    "pass",
    1,
    1
   ],
   "pricing-md": [
    "warning",
    1,
    2
   ],
   "nlweb-schema-feeds": [
    "fail",
    0,
    1
   ],
   "mcp-well-known-discovery": [
    "pass",
    2,
    2
   ],
   "agent-mode-view": [
    "fail",
    0,
    2
   ],
   "link-headers-discovery": [
    "fail",
    0,
    1
   ],
   "markdown-url-fallback": [
    "fail",
    0,
    2
   ],
   "modular-llms-txt": [
    "fail",
    0,
    1
   ],
   "sitemap-lastmod": [
    "fail",
    0,
    1
   ],
   "robots-agent-user-policy": [
    "pass",
    2,
    2
   ],
   "llms-txt-exists": [
    "pass",
    1,
    1
   ],
   "llms-txt-formatting": [
    "warning",
    1,
    2
   ],
   "json-ld": [
    "pass",
    4,
    4
   ],
   "pricing-info": [
    "pass",
    3,
    3
   ],
   "public-api-docs": [
    "pass",
    3,
    3
   ],
   "agent-instruction": [
    "warning",
    2,
    3
   ],
   "skills-sh-quality": [
    "pass",
    2,
    2
   ],
   "json-ld-entity-linking": [
    "pass",
    2,
    2
   ],
   "metadata-completeness": [
    "pass",
    2,
    2
   ],
   "org-schema-completeness": [
    "warning",
    1,
    2
   ],
   "schema-type-breadth": [
    "fail",
    0,
    2
   ],
   "trust-anchors": [
    "pass",
    2,
    2
   ],
   "llms-txt-links-resolve": [
    "pass",
    2,
    2
   ],
   "markdown-link-alternate": [
    "fail",
    0,
    1
   ],
   "markdown-frontmatter": [
    "fail",
    0,
    1
   ],
   "redirect-hygiene": [
    "pass",
    1,
    1
   ],
   "page-token-budget": [
    "pass",
    1,
    1
   ],
   "code-fence-validity": [
    "pass",
    1,
    1
   ],
   "docs-auth-gate": [
    "pass",
    2,
    2
   ],
   "openapi-spec": [
    "fail",
    0,
    7
   ],
   "developer-portal": [
    "pass",
    6,
    6
   ],
   "api-catalog-rfc9727": [
    "pass",
    2,
    2
   ],
   "markdown-negotiation": [
    "pass",
    1,
    1
   ],
   "markdown-negotiation-vary": [
    "warning",
    0,
    1
   ],
   "agent-ua-markdown": [
    "pass",
    1,
    1
   ],
   "agent-crawler-reachability": [
    "pass",
    2,
    2
   ],
   "mcp-tool-descriptions": [
    "na",
    0,
    3
   ],
   "mcp-param-schemas": [
    "na",
    0,
    2
   ],
   "mcp-server-identity": [
    "na",
    0,
    1
   ],
   "mcp-tool-listing": [
    "na",
    0,
    3
   ],
   "mcp-tool-naming": [
    "na",
    0,
    2
   ],
   "public-api": [
    "pass",
    7,
    7
   ],
   "oauth-support": [
    "pass",
    5,
    5
   ],
   "scoped-permissions": [
    "pass",
    5,
    5
   ],
   "mcp-auth-mechanism": [
    "warning",
    1,
    2
   ],
   "mcp-oauth-metadata": [
    "fail",
    0,
    2
   ],
   "mcp-pkce-s256": [
    "fail",
    0,
    2
   ],
   "onboarding-friction": [
    "pass",
    2,
    2
   ],
   "web-bot-auth-directory": [
    "fail",
    0,
    2
   ],
   "oauth-protected-resource": [
    "pass",
    2,
    2
   ],
   "auth-md-exists": [
    "fail",
    0,
    2
   ],
   "auth-md-structure": [
    "fail",
    0,
    2
   ],
   "auth-md-walkthrough-simulation": [
    "na",
    0,
    2
   ],
   "agent-auth-discovery-metadata": [
    "warning",
    1,
    3
   ],
   "agent-auth-www-authenticate": [
    "pass",
    1,
    1
   ],
   "agent-auth-endpoints-reachable": [
    "fail",
    0,
    2
   ],
   "pap-discovery": [
    "na",
    0,
    2
   ],
   "pap-issuer-binding": [
    "na",
    0,
    2
   ],
   "pap-auth-config": [
    "na",
    0,
    2
   ],
   "pap-interfaces": [
    "na",
    0,
    2
   ],
   "pap-endpoint-enforcement": [
    "na",
    0,
    2
   ],
   "pap-cross-protocol": [
    "na",
    0,
    2
   ],
   "mcp-server": [
    "warning",
    5,
    6
   ],
   "mcp-error-handling": [
    "na",
    0,
    2
   ],
   "mcp-transport-modern": [
    "na",
    0,
    1
   ],
   "webmcp": [
    "pass",
    5,
    5
   ],
   "rate-limit-headers": [
    "fail",
    0,
    2
   ],
   "idempotency-key-support": [
    "warning",
    1,
    3
   ],
   "json-error-responses": [
    "fail",
    0,
    4
   ],
   "api-error-model": [
    "na",
    0,
    3
   ],
   "api-versioning-policy": [
    "na",
    0,
    3
   ],
   "pagination-shape": [
    "na",
    0,
    2
   ],
   "async-job-pattern": [
    "na",
    0,
    2
   ],
   "cli-tool": [
    "pass",
    3,
    3
   ],
   "rest-sdk-packages": [
    "pass",
    3,
    3
   ],
   "nlweb-ask": [
    "fail",
    0,
    1
   ],
   "nlweb-streaming": [
    "fail",
    0,
    1
   ],
   "response-schema-coverage": [
    "na",
    0,
    2
   ],
   "mcp-tool-annotations": [
    "na",
    0,
    2
   ],
   "mcp-server-card": [
    "warning",
    1,
    2
   ],
   "mcp-multi-surface-coverage": [
    "fail",
    0,
    2
   ],
   "sandbox-environment": [
    "pass",
    2,
    2
   ],
   "batch-endpoints": [
    "na",
    0,
    2
   ],
   "mcp-resource-listing": [
    "na",
    0,
    3
   ],
   "graphql-error-type-definition": [
    "fail",
    0,
    3
   ],
   "graphql-versioning-policy": [
    "fail",
    0,
    2
   ],
   "graphql-pagination-pattern": [
    "warning",
    1,
    2
   ],
   "graphql-async-job-pattern": [
    "warning",
    1,
    2
   ],
   "graphql-schema-completeness": [
    "na",
    0,
    3
   ],
   "graphql-batch-mutations": [
    "na",
    0,
    2
   ],
   "agent-friendly-404": [
    "na",
    0,
    2
   ],
   "ax-document-structure": [
    "pass",
    3,
    3
   ],
   "ax-native-controls": [
    "pass",
    3,
    3
   ],
   "ax-accessible-names": [
    "pass",
    2,
    2
   ],
   "ax-form-labeling": [
    "pass",
    2,
    2
   ],
   "ax-tree-injection-safe": [
    "pass",
    2,
    2
   ],
   "mcp-app-registry": [
    "na",
    0,
    4
   ],
   "a2ui-support": [
    "na",
    0,
    2
   ],
   "mcp-apps-ui-quality": [
    "na",
    0,
    4
   ],
   "mcp-view-domain": [
    "na",
    0,
    4
   ],
   "mcp-view-csp": [
    "na",
    0,
    4
   ],
   "api-schema-analysis": [
    "warning",
    0.5,
    2
   ],
   "function-calling-compat": [
    "warning",
    1,
    2
   ],
   "mcp-resource-quality": [
    "na",
    0,
    3
   ],
   "mpp-support": [
    "warning",
    0,
    2
   ],
   "x402-support": [
    "warning",
    0,
    2
   ],
   "ucp-support": [
    "warning",
    0,
    3
   ],
   "acp-support": [
    "warning",
    0,
    3
   ],
   "acp-delegate-payment": [
    "warning",
    0,
    3
   ],
   "ap2-support": [
    "warning",
    0,
    3
   ]
  },
  "flagged": [
   {
    "id": "openapi-spec",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 7,
    "tier": "required",
    "est": 3.8,
    "detail": "No OpenAPI/Swagger specification found"
   },
   {
    "id": "json-error-responses",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 4,
    "tier": "required",
    "est": 2.3,
    "detail": "API does not return JSON error responses (or no API detected)"
   },
   {
    "id": "graphql-error-type-definition",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": 1.7,
    "detail": "GraphQL introspection auth-gated and no typed graphql error model documentation found on GraphQL-tagged pages"
   },
   {
    "id": "ard-catalog",
    "layer": "discovery",
    "status": "warning",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 1.6,
    "detail": "/.well-known/ard.json exists but is not valid JSON"
   },
   {
    "id": "graphql-versioning-policy",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.1,
    "detail": "GraphQL introspection auth-gated and no graphql versioning / deprecation policy documentation found on GraphQL-tagged pages"
   },
   {
    "id": "idempotency-key-support",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 3,
    "tier": "recommended",
    "est": 1.1,
    "detail": "GraphQL idempotency described in documentation at https://docs.sentry.io/api.md; not confirmed in the schema"
   },
   {
    "id": "rate-limit-headers",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.1,
    "detail": "GraphQL introspection auth-gated and no header convention documented on GraphQL-tagged pages"
   },
   {
    "id": "schema-type-breadth",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.1,
    "detail": "No extended schema types found - AI can only answer basic questions about this entity"
   },
   {
    "id": "api-schema-analysis",
    "layer": "usability",
    "status": "warning",
    "score": 0.5,
    "max": 2,
    "tier": "recommended",
    "est": 0.9,
    "detail": "REST: OpenAPI spec found but failed to parse for complexity analysis | GraphQL: introspection auth-gated and no schema evidence in docs | Combined score: 0.5/2"
   },
   {
    "id": "function-calling-compat",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "API spec found but couldn't validate function calling compatibility"
   },
   {
    "id": "graphql-async-job-pattern",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "GraphQL async-job pattern described in documentation at https://docs.sentry.io/api/ratelimits.md; schema not introspectable to verify"
   },
   {
    "id": "graphql-pagination-pattern",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "GraphQL pagination pattern described in documentation at https://docs.sentry.io/api.md; schema not introspectable to verify"
   },
   {
    "id": "mcp-server",
    "layer": "usability",
    "status": "warning",
    "score": 5,
    "max": 6,
    "tier": "required",
    "est": 0.6,
    "detail": "MCP server detected at https://mcp.sentry.dev/mcp; it requires authentication. Presence is verified (5/6), but Ora could not inspect its tools or verify access scopes without credentials."
   },
   {
    "id": "agent-discovery-file",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "required",
    "est": 0.5,
    "detail": "Found legacy /.well-known/agent-skills; /.well-known/agent-skills/index.json has an empty 'skills' array - add at least one skill entry"
   },
   {
    "id": "agent-instruction",
    "layer": "accessibility",
    "status": "warning",
    "score": 2,
    "max": 3,
    "tier": "required",
    "est": 0.5,
    "detail": "Agent instruction file at /agent.txt but no explicit when-to-use guidance"
   },
   {
    "id": "content-no-js",
    "layer": "accessibility",
    "status": "warning",
    "score": 2,
    "max": 3,
    "tier": "required",
    "est": 0.5,
    "detail": "Homepage: 15918 chars with H1, but 4.0% content ratio is below the 5% target. 5 of 5 sampled inner pages have text without JavaScript."
   },
   {
    "id": "llms-txt-formatting",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "The llms.txt at https://sentry.io/llms.txt is well-formatted with markdown links, but at 93,154 characters it exceeds the 30,000-character recommendation for a navigation index."
   },
   {
    "id": "org-schema-completeness",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "Organization schema found but missing: contactPoint"
   },
   {
    "id": "agent-auth-discovery-metadata",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 3,
    "tier": "recommended",
    "est": 0.3,
    "detail": "PRM + AS metadata both present but AS metadata has no agent_auth block"
   },
   {
    "id": "agent-auth-endpoints-reachable",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.3,
    "detail": "No agent_auth endpoint URIs found in AS metadata or /auth.md prose; nothing to probe"
   },
   {
    "id": "auth-md-exists",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.3,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "auth-md-structure",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.3,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "mcp-multi-surface-coverage",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.3,
    "detail": "We found an MCP candidate for your product at https://mcp.sentry.dev/mcp, but could not verify that agents can use it. This bonus needs two MCP servers: one for your product so agents can take actions,"
   },
   {
    "id": "mcp-oauth-metadata",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.3,
    "detail": "No OAuth metadata available for product MCP"
   },
   {
    "id": "mcp-pkce-s256",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.3,
    "detail": "No code_challenge_methods_supported in OAuth metadata for product MCP"
   },
   {
    "id": "a2a-agent-card",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.2,
    "detail": "No A2A agent card found at /.well-known/agent-card.json"
   },
   {
    "id": "chatgpt-app-listed",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.2,
    "detail": "Not found in ChatGPT app directory"
   },
   {
    "id": "wikipedia-presence",
    "layer": "discovery",
    "status": "warning",
    "score": 2,
    "max": 4,
    "tier": "recommended",
    "est": 0.2,
    "detail": "Wikidata Q140835305 (Q140835305) verified - draft a Wikipedia page with cited references to complete knowledge graph coverage"
   },
   {
    "id": "ai-catalog-published",
    "layer": "discovery",
    "status": "warning",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.1,
    "detail": "/.well-known/ai-catalog.json exists but is not valid JSON"
   },
   {
    "id": "link-headers-discovery",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 0.1,
    "detail": "No HTTP Link response headers (RFC 8288) found"
   },
   {
    "id": "markdown-negotiation-vary",
    "layer": "accessibility",
    "status": "warning",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.1,
    "detail": "Homepage https://sentry.io serves both Markdown and HTML, but Vary header missing Accept (got \"cookie\") - CDNs may cache the wrong variant"
   },
   {
    "id": "mcp-auth-mechanism",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.1,
    "detail": "product MCP requires authentication but no standard OAuth discovery metadata"
   },
   {
    "id": "mcp-server-card",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.1,
    "detail": "MCP server card found at https://sentry.io/.well-known/mcp/server-card.json but missing fields: version"
   },
   {
    "id": "sitemap-lastmod",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.1,
    "detail": "None of the 500 sampled sitemap entries carries a lastmod date. Add <lastmod> (W3C datetime) so agents can prioritize fresh content."
   },
   {
    "id": "acp-delegate-payment",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": null,
    "detail": "No ACP Delegate Payment signals detected"
   },
   {
    "id": "acp-support",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 3,
    "tier": "required",
    "est": null,
    "detail": "no ACP (Agentic Commerce Protocol) signals detected"
   },
   {
    "id": "agent-mode-view",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "?mode=agent returns same content as homepage (no dedicated agent view)"
   },
   {
    "id": "agent-plugins-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No Agent Plugins manifest (plugin.json) found in discovered repos"
   },
   {
    "id": "agent-skills-index-v2",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "/.well-known/agent-skills/index.json has no 'skills' array entries"
   },
   {
    "id": "ap2-support",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": null,
    "detail": "No AP2 (Agent Payments Protocol) signals detected"
   },
   {
    "id": "markdown-frontmatter",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "None of the 1 served markdown doc opens with a --- frontmatter block. Add title, description, canonical, and last-updated so agents get metadata without scraping."
   },
   {
    "id": "markdown-link-alternate",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No sampled page advertises a markdown alternate. Add <link rel=\"alternate\" type=\"text/markdown\" href=\"...\"> (or the equivalent Link response header) pointing at a markdown twin of the page."
   },
   {
    "id": "markdown-url-fallback",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "Homepage does not support the .md suffix. Probed https://sentry.io/index.md and it did not return markdown (expected text/markdown content-type or a heading-led non-HTML body)."
   },
   {
    "id": "modular-llms-txt",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No section-level llms.txt found. Tried /docs/llms.txt, /api/llms.txt, /developers/llms.txt, /guides/llms.txt, /reference/llms.txt, /welcome/llms.txt, /integrations/llms.txt, /platforms/llms.txt, /changelog/llms.txt, /resources/llms.txt."
   },
   {
    "id": "mpp-support",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": null,
    "detail": "No MPP (Machine Payments Protocol) support detected"
   },
   {
    "id": "nlweb-ask",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No NLWeb-conformant /ask endpoint found via GET or POST"
   },
   {
    "id": "nlweb-schema-feeds",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No schemamap: directive in robots.txt"
   },
   {
    "id": "nlweb-streaming",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "NLWeb /ask does not support SSE streaming via GET or POST"
   },
   {
    "id": "pricing-md",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "pricing.md found at /.well-known/pricing.md (534 lines), but it does not open with a # heading - start it with a # title so agents read it as markdown"
   },
   {
    "id": "registry-branding",
    "layer": "discovery",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "MCP manifest has name and description but no icon at /.well-known/mcp/server-card.json"
   },
   {
    "id": "ucp-support",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 3,
    "tier": "required",
    "est": null,
    "detail": "no UCP (Universal Commerce Protocol) signals detected"
   },
   {
    "id": "web-bot-auth-directory",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No /.well-known/http-message-signatures-directory found"
   },
   {
    "id": "x402-support",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": null,
    "detail": "No x402 payment protocol support detected"
   }
  ],
  "seen": {
   "brand-search-accuracy": "sentry.io ranks #5 for \"Sentry\" (searched your brand name alone: no main product term from your homepage qualified)",
   "wikipedia-presence": "Wikidata Q140835305 (Q140835305) verified - draft a Wikipedia page with cited references to complete knowledge graph coverage",
   "robots-ai-policy-quality": "AI search crawlers: allowed in 18 of 18 checks (3 crawlers on 6 pages). AI training crawlers: allowed in 12 of 12 checks (2 crawlers on 6 pages), not scored.",
   "noindex-directives": "No noindex on the homepage: no robots, googlebot or bingbot meta tag and no X-Robots-Tag header hides it from search.",
   "sitemap": "Valid sitemap found at https://sentry.io/sitemap-index.xml with multiple sitemaps entries",
   "content-no-js": "Homepage: 15918 chars with H1, but 4.0% content ratio is below the 5% target. 5 of 5 sampled inner pages have text without JavaScript.",
   "bot-detection": "Site accessible to 4 agent user-agents (ChatGPT-User, OAI-SearchBot, Claude-User, PerplexityBot).",
   "agent-discovery-file": "Found legacy /.well-known/agent-skills; /.well-known/agent-skills/index.json has an empty 'skills' array - add at least one skill entry",
   "a2a-agent-card": "No A2A agent card found at /.well-known/agent-card.json",
   "mcp-well-known-discovery": "MCP server discoverable at standard path https://sentry.io/.well-known/mcp.json",
   "robots-agent-user-policy": "No applicable crawl or usage restriction found for 3 user-triggered agents (chatgpt-user, claude-user, perplexity-user) on 1 public page: https://sentry.io/. Declared policy only;",
   "llms-txt-exists": "Found the llms.txt at https://sentry.io/llms.txt.",
   "llms-txt-formatting": "The llms.txt at https://sentry.io/llms.txt is well-formatted with markdown links, but at 93,154 characters it exceeds the 30,000-character recommendation for a navigation index.",
   "json-ld": "Rich JSON-LD identity: Organization with name, description, url, and sameAs/logo/address (2 block(s))",
   "public-api-docs": "Documentation site found at https://docs.sentry.io",
   "metadata-completeness": "All metadata signals present: canonical URL, lang=\"en\", og:image, og:type",
   "page-token-budget": "All 6 measured pages fit an agent context budget (largest ~4K tokens)",
   "docs-auth-gate": "All 5 sampled pages are publicly readable (5 with substantive content)",
   "openapi-spec": "No OpenAPI/Swagger specification found",
   "developer-portal": "Developer portal found at https://docs.sentry.io",
   "markdown-negotiation": "Returns markdown when requested via Accept header",
   "agent-ua-markdown": "https://sentry.io serves markdown to the ChatGPT-User User-Agent even with Accept: text/html - UA-sniffed agent responses in place",
   "agent-crawler-reachability": "Reachable to every agent we tested - ChatGPT-User: reachable, OAI-SearchBot: reachable, Claude-User: reachable, PerplexityBot: reachable",
   "public-api": "REST API documentation found at https://docs.sentry.io/organization/data-storage-location.md. GraphQL endpoint at https://graphql.sentry.io/ is reachable; introspection requires authentication (API key / OAuth),",
   "oauth-support": "OAuth authorization server metadata at https://sentry.io (issuer=https://sentry.io)",
   "mcp-server": "MCP server detected at https://mcp.sentry.dev/mcp; it requires authentication. Presence is verified (5/6), but Ora could not inspect its tools or verify access scopes without credentials.",
   "webmcp": "Imperative WebMCP API detected (document.modelContext.registerTool in script bundle /_astro/webmcp.m80_-iWU.js).",
   "cli-tool": "CLI package found on npm: @sentry/cli",
   "rest-sdk-packages": "SDK packages found across 4 ecosystems: npm, pypi, go, rubygems",
   "nlweb-ask": "No NLWeb-conformant /ask endpoint found via GET or POST",
   "mpp-support": "No MPP (Machine Payments Protocol) support detected",
   "x402-support": "No x402 payment protocol support detected",
   "ucp-support": "no UCP (Universal Commerce Protocol) signals detected",
   "acp-support": "no ACP (Agentic Commerce Protocol) signals detected",
   "ap2-support": "No AP2 (Agent Payments Protocol) signals detected"
  }
 },
 {
  "slug": "shopify",
  "name": "Shopify",
  "domain": "shopify.com",
  "finalUrl": "https://www.shopify.com/",
  "read": "2026-11-09",
  "scannedAt": "2026-11-07T12:41:39.005+00:00",
  "score": 74,
  "max": 100,
  "grade": "B",
  "category": "Commerce Tools",
  "scoringVersion": null,
  "rulesUrl": null,
  "summary": "Shopify offers strong developer discoverability and an NPM/PyPI SDK with a ChatGPT app listing, but lacks a published OpenAPI specification for agents to integrate against.",
  "layers": [
   {
    "id": "discovery",
    "name": "Discovery",
    "score": 15,
    "max": 16
   },
   {
    "id": "accessibility",
    "name": "Access",
    "score": 39,
    "max": 60
   },
   {
    "id": "usability",
    "name": "Usability",
    "score": 56,
    "max": 79
   },
   {
    "id": "payments",
    "name": "Payments",
    "score": 0,
    "max": 0
   }
  ],
  "checks": {
   "ard-catalog": [
    "fail",
    0,
    1
   ],
   "ai-catalog-published": [
    "na",
    0,
    1
   ],
   "ard-entries-valid": [
    "na",
    0,
    2
   ],
   "ard-trust-manifest": [
    "na",
    0,
    2
   ],
   "agentic-search-usecase": [
    "na",
    0,
    6
   ],
   "agentic-search-specific": [
    "pass",
    3,
    3
   ],
   "brand-search-accuracy": [
    "pass",
    3,
    3
   ],
   "wikipedia-presence": [
    "warning",
    2,
    4
   ],
   "robots-ai-policy-quality": [
    "pass",
    2,
    2
   ],
   "mcp-registry-listed": [
    "pass",
    1,
    1
   ],
   "npm-sdk-package": [
    "pass",
    1,
    1
   ],
   "agent-rules-repo": [
    "fail",
    0,
    1
   ],
   "agent-plugins-repo": [
    "warning",
    0,
    1
   ],
   "registry-branding": [
    "fail",
    0,
    2
   ],
   "chatgpt-app-listed": [
    "pass",
    2,
    2
   ],
   "noindex-directives": [
    "pass",
    1,
    1
   ],
   "sitemap": [
    "pass",
    2,
    2
   ],
   "content-no-js": [
    "warning",
    2,
    3
   ],
   "bot-detection": [
    "pass",
    2,
    2
   ],
   "agent-discovery-file": [
    "pass",
    2,
    2
   ],
   "agent-skills-index-v2": [
    "na",
    0,
    2
   ],
   "a2a-agent-card": [
    "fail",
    0,
    2
   ],
   "skills-sh-listed": [
    "pass",
    1,
    1
   ],
   "pricing-md": [
    "fail",
    0,
    2
   ],
   "nlweb-schema-feeds": [
    "fail",
    0,
    1
   ],
   "mcp-well-known-discovery": [
    "warning",
    1,
    2
   ],
   "agent-mode-view": [
    "fail",
    0,
    2
   ],
   "link-headers-discovery": [
    "fail",
    0,
    1
   ],
   "markdown-url-fallback": [
    "fail",
    0,
    2
   ],
   "modular-llms-txt": [
    "fail",
    0,
    1
   ],
   "sitemap-lastmod": [
    "pass",
    1,
    1
   ],
   "robots-agent-user-policy": [
    "pass",
    2,
    2
   ],
   "llms-txt-exists": [
    "pass",
    1,
    1
   ],
   "llms-txt-formatting": [
    "pass",
    2,
    2
   ],
   "json-ld": [
    "fail",
    0,
    4
   ],
   "pricing-info": [
    "pass",
    3,
    3
   ],
   "public-api-docs": [
    "pass",
    3,
    3
   ],
   "agent-instruction": [
    "fail",
    0,
    3
   ],
   "skills-sh-quality": [
    "pass",
    2,
    2
   ],
   "json-ld-entity-linking": [
    "fail",
    0,
    2
   ],
   "metadata-completeness": [
    "pass",
    2,
    2
   ],
   "org-schema-completeness": [
    "fail",
    0,
    2
   ],
   "schema-type-breadth": [
    "fail",
    0,
    2
   ],
   "trust-anchors": [
    "pass",
    2,
    2
   ],
   "llms-txt-links-resolve": [
    "pass",
    2,
    2
   ],
   "markdown-link-alternate": [
    "fail",
    0,
    1
   ],
   "markdown-frontmatter": [
    "fail",
    0,
    1
   ],
   "redirect-hygiene": [
    "pass",
    1,
    1
   ],
   "page-token-budget": [
    "pass",
    1,
    1
   ],
   "code-fence-validity": [
    "pass",
    1,
    1
   ],
   "docs-auth-gate": [
    "pass",
    2,
    2
   ],
   "openapi-spec": [
    "fail",
    0,
    7
   ],
   "developer-portal": [
    "pass",
    6,
    6
   ],
   "api-catalog-rfc9727": [
    "fail",
    0,
    2
   ],
   "markdown-negotiation": [
    "pass",
    1,
    1
   ],
   "markdown-negotiation-vary": [
    "fail",
    0,
    1
   ],
   "agent-ua-markdown": [
    "fail",
    0,
    1
   ],
   "agent-crawler-reachability": [
    "pass",
    2,
    2
   ],
   "mcp-tool-descriptions": [
    "pass",
    3,
    3
   ],
   "mcp-param-schemas": [
    "pass",
    2,
    2
   ],
   "mcp-server-identity": [
    "pass",
    1,
    1
   ],
   "mcp-tool-listing": [
    "pass",
    3,
    3
   ],
   "mcp-tool-naming": [
    "fail",
    0,
    2
   ],
   "public-api": [
    "pass",
    7,
    7
   ],
   "oauth-support": [
    "pass",
    5,
    5
   ],
   "scoped-permissions": [
    "fail",
    0,
    5
   ],
   "mcp-auth-mechanism": [
    "na",
    0,
    2
   ],
   "mcp-oauth-metadata": [
    "na",
    0,
    2
   ],
   "mcp-pkce-s256": [
    "na",
    0,
    2
   ],
   "onboarding-friction": [
    "pass",
    2,
    2
   ],
   "web-bot-auth-directory": [
    "warning",
    1,
    2
   ],
   "oauth-protected-resource": [
    "pass",
    2,
    2
   ],
   "auth-md-exists": [
    "fail",
    0,
    2
   ],
   "auth-md-structure": [
    "fail",
    0,
    2
   ],
   "auth-md-walkthrough-simulation": [
    "na",
    0,
    2
   ],
   "agent-auth-discovery-metadata": [
    "warning",
    1,
    3
   ],
   "agent-auth-www-authenticate": [
    "fail",
    0,
    1
   ],
   "agent-auth-endpoints-reachable": [
    "fail",
    0,
    2
   ],
   "pap-discovery": [
    "na",
    0,
    2
   ],
   "pap-issuer-binding": [
    "na",
    0,
    2
   ],
   "pap-auth-config": [
    "na",
    0,
    2
   ],
   "pap-interfaces": [
    "na",
    0,
    2
   ],
   "pap-endpoint-enforcement": [
    "na",
    0,
    2
   ],
   "pap-cross-protocol": [
    "na",
    0,
    2
   ],
   "mcp-server": [
    "pass",
    6,
    6
   ],
   "mcp-error-handling": [
    "pass",
    2,
    2
   ],
   "mcp-transport-modern": [
    "pass",
    1,
    1
   ],
   "webmcp": [
    "warning",
    0,
    5
   ],
   "rate-limit-headers": [
    "na",
    0,
    2
   ],
   "idempotency-key-support": [
    "na",
    0,
    3
   ],
   "json-error-responses": [
    "fail",
    0,
    4
   ],
   "api-error-model": [
    "na",
    0,
    3
   ],
   "api-versioning-policy": [
    "na",
    0,
    3
   ],
   "pagination-shape": [
    "na",
    0,
    2
   ],
   "async-job-pattern": [
    "na",
    0,
    2
   ],
   "cli-tool": [
    "pass",
    3,
    3
   ],
   "rest-sdk-packages": [
    "pass",
    3,
    3
   ],
   "nlweb-ask": [
    "fail",
    0,
    1
   ],
   "nlweb-streaming": [
    "fail",
    0,
    1
   ],
   "response-schema-coverage": [
    "na",
    0,
    2
   ],
   "mcp-tool-annotations": [
    "pass",
    2,
    2
   ],
   "mcp-server-card": [
    "fail",
    0,
    2
   ],
   "mcp-multi-surface-coverage": [
    "fail",
    0,
    2
   ],
   "sandbox-environment": [
    "fail",
    0,
    2
   ],
   "batch-endpoints": [
    "na",
    0,
    2
   ],
   "mcp-resource-listing": [
    "na",
    0,
    3
   ],
   "graphql-error-type-definition": [
    "na",
    0,
    3
   ],
   "graphql-versioning-policy": [
    "na",
    0,
    2
   ],
   "graphql-pagination-pattern": [
    "na",
    0,
    2
   ],
   "graphql-async-job-pattern": [
    "na",
    0,
    2
   ],
   "graphql-schema-completeness": [
    "na",
    0,
    3
   ],
   "graphql-batch-mutations": [
    "na",
    0,
    2
   ],
   "agent-friendly-404": [
    "warning",
    1,
    2
   ],
   "ax-document-structure": [
    "pass",
    3,
    3
   ],
   "ax-native-controls": [
    "pass",
    3,
    3
   ],
   "ax-accessible-names": [
    "pass",
    2,
    2
   ],
   "ax-form-labeling": [
    "pass",
    2,
    2
   ],
   "ax-tree-injection-safe": [
    "pass",
    2,
    2
   ],
   "mcp-app-registry": [
    "fail",
    0,
    4
   ],
   "a2ui-support": [
    "fail",
    0,
    2
   ],
   "mcp-apps-ui-quality": [
    "na",
    0,
    4
   ],
   "mcp-view-domain": [
    "na",
    0,
    4
   ],
   "mcp-view-csp": [
    "na",
    0,
    4
   ],
   "api-schema-analysis": [
    "fail",
    0,
    2
   ],
   "function-calling-compat": [
    "fail",
    0,
    2
   ],
   "mcp-resource-quality": [
    "na",
    0,
    3
   ],
   "mpp-support": [
    "warning",
    0,
    2
   ],
   "x402-support": [
    "warning",
    0,
    2
   ],
   "ucp-support": [
    "warning",
    0,
    3
   ],
   "acp-support": [
    "warning",
    0,
    3
   ],
   "acp-delegate-payment": [
    "warning",
    0,
    3
   ],
   "ap2-support": [
    "warning",
    0,
    3
   ]
  },
  "flagged": [
   {
    "id": "openapi-spec",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 7,
    "tier": "required",
    "est": 3.9,
    "detail": "No OpenAPI/Swagger specification found"
   },
   {
    "id": "scoped-permissions",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 5,
    "tier": "recommended",
    "est": 2.8,
    "detail": "No declared OAuth scopes, security schemes, or scoped-permission documentation found"
   },
   {
    "id": "webmcp",
    "layer": "usability",
    "status": "warning",
    "score": 0,
    "max": 5,
    "tier": "required",
    "est": 2.8,
    "detail": "No WebMCP support detected on the homepage. WebMCP is mentioned in the documentation at /developers, but a mention is not an implementation, so it earns no points."
   },
   {
    "id": "json-error-responses",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 4,
    "tier": "required",
    "est": 2.3,
    "detail": "API does not return JSON error responses (or no API detected)"
   },
   {
    "id": "mcp-app-registry",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 4,
    "tier": "recommended",
    "est": 2.3,
    "detail": "No MCP Apps support detected - this product has an in-agent UI surface but exposes no ui:// resources or tool UI metadata for agents to render."
   },
   {
    "id": "json-ld",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 4,
    "tier": "required",
    "est": 2.2,
    "detail": "No JSON-LD structured data found on homepage"
   },
   {
    "id": "agent-instruction",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "required",
    "est": 1.7,
    "detail": "No agent instruction file with when-to-use guidance found"
   },
   {
    "id": "ard-catalog",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 1.4,
    "detail": "No /.well-known/ard.json, no same-site rel=\"ard\" link, and no legacy /.well-known/ai-catalog.json"
   },
   {
    "id": "api-schema-analysis",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.1,
    "detail": "No API schema detected"
   },
   {
    "id": "function-calling-compat",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.1,
    "detail": "No API spec found - function calling requires discoverable endpoints"
   },
   {
    "id": "json-ld-entity-linking",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.1,
    "detail": "No JSON-LD found - no entity linking possible"
   },
   {
    "id": "org-schema-completeness",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.1,
    "detail": "No JSON-LD found - Organization schema missing"
   },
   {
    "id": "schema-type-breadth",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.1,
    "detail": "No extended schema types found - AI can only answer basic questions about this entity"
   },
   {
    "id": "agent-friendly-404",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "The nonexistent path https://shopify.com/__ora-404-probe-69uafuyr correctly returns HTTP 404. Partial credit: no Markdown error body was detected."
   },
   {
    "id": "content-no-js",
    "layer": "accessibility",
    "status": "warning",
    "score": 2,
    "max": 3,
    "tier": "required",
    "est": 0.6,
    "detail": "Homepage: 3361 chars with H1, but 2.1% content ratio is below the 5% target. 4 of 4 sampled inner pages have text without JavaScript (1 skipped)."
   },
   {
    "id": "a2a-agent-card",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.4,
    "detail": "No A2A agent card found at /.well-known/agent-card.json"
   },
   {
    "id": "api-catalog-rfc9727",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.4,
    "detail": "No /.well-known/api-catalog found (RFC 9727)"
   },
   {
    "id": "agent-auth-discovery-metadata",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 3,
    "tier": "recommended",
    "est": 0.3,
    "detail": "Only PRM present; spec calls for both PRM and AS metadata"
   },
   {
    "id": "agent-auth-endpoints-reachable",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.3,
    "detail": "No agent_auth endpoint URIs found in AS metadata or /auth.md prose; nothing to probe"
   },
   {
    "id": "auth-md-exists",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.3,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "auth-md-structure",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.3,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "mcp-multi-surface-coverage",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.3,
    "detail": "You run an MCP server for your product, but not one for your documentation. This bonus needs two MCP servers: one for your product so agents can take actions,"
   },
   {
    "id": "mcp-server-card",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.3,
    "detail": "No MCP server card found for https://mcp.shopify.com (checked /.well-known/mcp/server-card.json, the site's ai-catalog.json, servers[].card in mcp.json, and <server>/server-card)"
   },
   {
    "id": "mcp-tool-naming",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.3,
    "detail": "Mixed naming conventions across tools"
   },
   {
    "id": "sandbox-environment",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.3,
    "detail": "No sandbox or test environment found"
   },
   {
    "id": "agent-auth-www-authenticate",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.2,
    "detail": "No 401 with WWW-Authenticate: Bearer resource_metadata=... found. Probed [https://shopify.com/api, https://shopify.com/api/v1, https://shopify.com/v1, https://shopify.com/v2, https://shopify.com/agent/identity,"
   },
   {
    "id": "link-headers-discovery",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 0.2,
    "detail": "No HTTP Link response headers (RFC 8288) found"
   },
   {
    "id": "markdown-negotiation-vary",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.2,
    "detail": "Homepage https://shopify.com does not meet the Markdown negotiation requirements: Accept: text/markdown returned text/html; charset=utf-8; Vary header missing Accept (got \"accept-encoding\")"
   },
   {
    "id": "mcp-well-known-discovery",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.2,
    "detail": "MCP server at https://mcp.shopify.com - list its server card, hosted on your own domain, in /.well-known/ai-catalog.json so MCP clients can discover it"
   },
   {
    "id": "wikipedia-presence",
    "layer": "discovery",
    "status": "warning",
    "score": 2,
    "max": 4,
    "tier": "recommended",
    "est": 0.2,
    "detail": "Wikidata Q7501150 (Shopify) verified - draft a Wikipedia page with cited references to complete knowledge graph coverage"
   },
   {
    "id": "a2ui-support",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No A2UI or generative UI support detected"
   },
   {
    "id": "acp-delegate-payment",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": null,
    "detail": "No ACP Delegate Payment signals detected"
   },
   {
    "id": "acp-support",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 3,
    "tier": "required",
    "est": null,
    "detail": "no ACP (Agentic Commerce Protocol) signals detected"
   },
   {
    "id": "agent-mode-view",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "?mode=agent returns same content as homepage (no dedicated agent view)"
   },
   {
    "id": "agent-plugins-repo",
    "layer": "discovery",
    "status": "warning",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Plugin manifest found without the Agent Plugins $schema identifier: github.com/shopify/shopify-ai-toolkit/blob/main/.claude-plugin/plugin.json"
   },
   {
    "id": "agent-rules-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Could not locate a public repo containing agent configs or rules. If our probes missed it, AI coding agents likely will too - link the repo from your homepage or docs so it's discoverable."
   },
   {
    "id": "agent-ua-markdown",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly."
   },
   {
    "id": "ap2-support",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": null,
    "detail": "No AP2 (Agent Payments Protocol) signals detected"
   },
   {
    "id": "markdown-frontmatter",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "None of the 1 served markdown doc opens with a --- frontmatter block. Add title, description, canonical, and last-updated so agents get metadata without scraping."
   },
   {
    "id": "markdown-link-alternate",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No sampled page advertises a markdown alternate. Add <link rel=\"alternate\" type=\"text/markdown\" href=\"...\"> (or the equivalent Link response header) pointing at a markdown twin of the page."
   },
   {
    "id": "markdown-url-fallback",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "Homepage does not support the .md suffix. Probed https://shopify.com/index.md and it did not return markdown (expected text/markdown content-type or a heading-led non-HTML body)."
   },
   {
    "id": "modular-llms-txt",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No section-level llms.txt found. Tried /docs/llms.txt, /api/llms.txt, /developers/llms.txt, /guides/llms.txt, /reference/llms.txt, /start/llms.txt, /sell/llms.txt, /enterprise/llms.txt, /checkout/llms.txt, /sidekick/llms.txt."
   },
   {
    "id": "mpp-support",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": null,
    "detail": "No MPP (Machine Payments Protocol) support detected"
   },
   {
    "id": "nlweb-ask",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No NLWeb-conformant /ask endpoint found via GET or POST"
   },
   {
    "id": "nlweb-schema-feeds",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No schemamap: directive in robots.txt"
   },
   {
    "id": "nlweb-streaming",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "NLWeb /ask does not support SSE streaming via GET or POST"
   },
   {
    "id": "pricing-md",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No pricing.md found - agents need machine-readable pricing to compare products and make purchase recommendations"
   },
   {
    "id": "registry-branding",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No registry branding (name, icon, description) found"
   },
   {
    "id": "ucp-support",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 3,
    "tier": "required",
    "est": null,
    "detail": "UCP text signals (universal commerce protocol) plus OAuth authorization-server metadata; no /.well-known/ucp profile found on https://shopify.com or https://api.shopify.com"
   },
   {
    "id": "web-bot-auth-directory",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "Web Bot Auth directory has no 'keys' array"
   },
   {
    "id": "x402-support",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": null,
    "detail": "No x402 payment protocol support detected"
   }
  ],
  "seen": {
   "brand-search-accuracy": "shopify.com ranks #5 for \"Shopify\" (searched your brand name alone: no main product term from your homepage qualified)",
   "wikipedia-presence": "Wikidata Q7501150 (Shopify) verified - draft a Wikipedia page with cited references to complete knowledge graph coverage",
   "robots-ai-policy-quality": "AI search crawlers: allowed in 3 of 3 checks (3 crawlers on 1 page). AI training crawlers: allowed in 2 of 2 checks (2 crawlers on 1 page), not scored.",
   "noindex-directives": "No noindex on the homepage: no robots, googlebot or bingbot meta tag and no X-Robots-Tag header hides it from search.",
   "sitemap": "Valid sitemap found at https://www.shopify.com/sitemaps_list.xml with multiple sitemaps entries",
   "content-no-js": "Homepage: 3361 chars with H1, but 2.1% content ratio is below the 5% target. 4 of 4 sampled inner pages have text without JavaScript (1 skipped).",
   "bot-detection": "Site accessible to 4 agent user-agents (ChatGPT-User, OAI-SearchBot, Claude-User, PerplexityBot).",
   "agent-discovery-file": "Agent discovery file found at /agents.md",
   "a2a-agent-card": "No A2A agent card found at /.well-known/agent-card.json",
   "mcp-well-known-discovery": "MCP server at https://mcp.shopify.com - list its server card, hosted on your own domain, in /.well-known/ai-catalog.json so MCP clients can discover it",
   "robots-agent-user-policy": "No applicable crawl or usage restriction found for 3 user-triggered agents (chatgpt-user, claude-user, perplexity-user) on 1 public page: https://shopify.com/. Declared policy only;",
   "llms-txt-exists": "Found the llms.txt at https://shopify.dev/llms.txt.",
   "llms-txt-formatting": "The llms.txt is well-formatted: 87 lines with markdown links, 12,797 characters in total.",
   "json-ld": "No JSON-LD structured data found on homepage",
   "public-api-docs": "Documentation site found at https://shopify.dev",
   "metadata-completeness": "All metadata signals present: canonical URL, lang=\"en\", og:image, og:type",
   "page-token-budget": "All 7 measured pages fit an agent context budget (largest ~4K tokens)",
   "docs-auth-gate": "All 5 sampled pages are publicly readable (5 with substantive content)",
   "openapi-spec": "No OpenAPI/Swagger specification found",
   "developer-portal": "Developer portal found at /developers",
   "markdown-negotiation": "Markdown-shaped docs found at path-suffix routes (1)",
   "agent-ua-markdown": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly.",
   "agent-crawler-reachability": "Reachable to every agent we tested - ChatGPT-User: reachable, OAI-SearchBot: reachable, Claude-User: reachable, PerplexityBot: reachable",
   "public-api": "REST API documentation found at https://shopify.dev/docs/apps/build/ai-toolkit.md. Best-of-protocols score: 7/7.",
   "oauth-support": "OpenID Connect discovery endpoint found at https://accounts.shopify.com",
   "mcp-server": "MCP server connected via Streamable HTTP - shopify-mcp-server v1.0.0 (protocol 2025-11-25)",
   "webmcp": "No WebMCP support detected on the homepage. WebMCP is mentioned in the documentation at /developers, but a mention is not an implementation, so it earns no points.",
   "cli-tool": "CLI package found on npm: @shopify/cli",
   "rest-sdk-packages": "SDK packages found across 3 ecosystems: npm, pypi, rubygems",
   "nlweb-ask": "No NLWeb-conformant /ask endpoint found via GET or POST",
   "mpp-support": "No MPP (Machine Payments Protocol) support detected",
   "x402-support": "No x402 payment protocol support detected",
   "ucp-support": "UCP text signals (universal commerce protocol) plus OAuth authorization-server metadata; no /.well-known/ucp profile found on https://shopify.com or https://api.shopify.com",
   "acp-support": "no ACP (Agentic Commerce Protocol) signals detected",
   "ap2-support": "No AP2 (Agent Payments Protocol) signals detected"
  }
 },
 {
  "slug": "slack",
  "name": "Slack",
  "domain": "slack.com",
  "finalUrl": "https://slack.com/",
  "read": "2026-11-09",
  "scannedAt": "2026-11-07T15:46:22.756+00:00",
  "score": 54,
  "max": 100,
  "grade": "C",
  "category": "Communication & Support",
  "scoringVersion": null,
  "rulesUrl": null,
  "summary": "Slack offers a published SDK and a ChatGPT app listing, but lacks an OpenAPI specification and an MCP server for agents to discover and call it.",
  "layers": [
   {
    "id": "discovery",
    "name": "Discovery",
    "score": 14,
    "max": 17
   },
   {
    "id": "accessibility",
    "name": "Access",
    "score": 36,
    "max": 58
   },
   {
    "id": "usability",
    "name": "Usability",
    "score": 25.5,
    "max": 74
   },
   {
    "id": "payments",
    "name": "Payments",
    "score": 0,
    "max": 0
   }
  ],
  "checks": {
   "ard-catalog": [
    "fail",
    0,
    1
   ],
   "ai-catalog-published": [
    "na",
    0,
    1
   ],
   "ard-entries-valid": [
    "na",
    0,
    2
   ],
   "ard-trust-manifest": [
    "na",
    0,
    2
   ],
   "agentic-search-usecase": [
    "na",
    0,
    6
   ],
   "agentic-search-specific": [
    "pass",
    3,
    3
   ],
   "brand-search-accuracy": [
    "warning",
    1,
    3
   ],
   "wikipedia-presence": [
    "pass",
    4,
    4
   ],
   "robots-ai-policy-quality": [
    "pass",
    2,
    2
   ],
   "mcp-registry-listed": [
    "na",
    0,
    1
   ],
   "npm-sdk-package": [
    "pass",
    1,
    1
   ],
   "agent-rules-repo": [
    "fail",
    0,
    1
   ],
   "agent-plugins-repo": [
    "fail",
    0,
    1
   ],
   "registry-branding": [
    "na",
    0,
    2
   ],
   "chatgpt-app-listed": [
    "pass",
    2,
    2
   ],
   "noindex-directives": [
    "pass",
    1,
    1
   ],
   "sitemap": [
    "pass",
    2,
    2
   ],
   "content-no-js": [
    "warning",
    2,
    3
   ],
   "bot-detection": [
    "pass",
    2,
    2
   ],
   "agent-discovery-file": [
    "fail",
    0,
    2
   ],
   "agent-skills-index-v2": [
    "na",
    0,
    2
   ],
   "a2a-agent-card": [
    "fail",
    0,
    2
   ],
   "skills-sh-listed": [
    "fail",
    0,
    1
   ],
   "pricing-md": [
    "fail",
    0,
    2
   ],
   "nlweb-schema-feeds": [
    "fail",
    0,
    1
   ],
   "mcp-well-known-discovery": [
    "fail",
    0,
    2
   ],
   "agent-mode-view": [
    "pass",
    2,
    2
   ],
   "link-headers-discovery": [
    "fail",
    0,
    1
   ],
   "markdown-url-fallback": [
    "fail",
    0,
    2
   ],
   "modular-llms-txt": [
    "fail",
    0,
    1
   ],
   "sitemap-lastmod": [
    "fail",
    0,
    1
   ],
   "robots-agent-user-policy": [
    "pass",
    2,
    2
   ],
   "llms-txt-exists": [
    "pass",
    1,
    1
   ],
   "llms-txt-formatting": [
    "warning",
    1,
    2
   ],
   "json-ld": [
    "fail",
    0,
    4
   ],
   "pricing-info": [
    "pass",
    3,
    3
   ],
   "public-api-docs": [
    "pass",
    3,
    3
   ],
   "agent-instruction": [
    "pass",
    3,
    3
   ],
   "skills-sh-quality": [
    "fail",
    0,
    2
   ],
   "json-ld-entity-linking": [
    "fail",
    0,
    2
   ],
   "metadata-completeness": [
    "pass",
    2,
    2
   ],
   "org-schema-completeness": [
    "fail",
    0,
    2
   ],
   "schema-type-breadth": [
    "fail",
    0,
    2
   ],
   "trust-anchors": [
    "pass",
    2,
    2
   ],
   "llms-txt-links-resolve": [
    "warning",
    1,
    2
   ],
   "markdown-link-alternate": [
    "fail",
    0,
    1
   ],
   "markdown-frontmatter": [
    "na",
    0,
    1
   ],
   "redirect-hygiene": [
    "pass",
    1,
    1
   ],
   "page-token-budget": [
    "pass",
    1,
    1
   ],
   "code-fence-validity": [
    "pass",
    1,
    1
   ],
   "docs-auth-gate": [
    "pass",
    2,
    2
   ],
   "openapi-spec": [
    "fail",
    0,
    7
   ],
   "developer-portal": [
    "pass",
    6,
    6
   ],
   "api-catalog-rfc9727": [
    "fail",
    0,
    2
   ],
   "markdown-negotiation": [
    "fail",
    0,
    1
   ],
   "markdown-negotiation-vary": [
    "fail",
    0,
    1
   ],
   "agent-ua-markdown": [
    "fail",
    0,
    1
   ],
   "agent-crawler-reachability": [
    "pass",
    2,
    2
   ],
   "mcp-tool-descriptions": [
    "na",
    0,
    3
   ],
   "mcp-param-schemas": [
    "na",
    0,
    2
   ],
   "mcp-server-identity": [
    "na",
    0,
    1
   ],
   "mcp-tool-listing": [
    "na",
    0,
    3
   ],
   "mcp-tool-naming": [
    "na",
    0,
    2
   ],
   "public-api": [
    "pass",
    7,
    7
   ],
   "oauth-support": [
    "pass",
    5,
    5
   ],
   "scoped-permissions": [
    "fail",
    0,
    5
   ],
   "mcp-auth-mechanism": [
    "na",
    0,
    2
   ],
   "mcp-oauth-metadata": [
    "na",
    0,
    2
   ],
   "mcp-pkce-s256": [
    "na",
    0,
    2
   ],
   "onboarding-friction": [
    "warning",
    1,
    2
   ],
   "web-bot-auth-directory": [
    "fail",
    0,
    2
   ],
   "oauth-protected-resource": [
    "fail",
    0,
    2
   ],
   "auth-md-exists": [
    "fail",
    0,
    2
   ],
   "auth-md-structure": [
    "fail",
    0,
    2
   ],
   "auth-md-walkthrough-simulation": [
    "na",
    0,
    2
   ],
   "agent-auth-discovery-metadata": [
    "fail",
    0,
    3
   ],
   "agent-auth-www-authenticate": [
    "fail",
    0,
    1
   ],
   "agent-auth-endpoints-reachable": [
    "fail",
    0,
    2
   ],
   "pap-discovery": [
    "na",
    0,
    2
   ],
   "pap-issuer-binding": [
    "na",
    0,
    2
   ],
   "pap-auth-config": [
    "na",
    0,
    2
   ],
   "pap-interfaces": [
    "na",
    0,
    2
   ],
   "pap-endpoint-enforcement": [
    "na",
    0,
    2
   ],
   "pap-cross-protocol": [
    "na",
    0,
    2
   ],
   "mcp-server": [
    "fail",
    0,
    6
   ],
   "mcp-error-handling": [
    "na",
    0,
    2
   ],
   "mcp-transport-modern": [
    "na",
    0,
    1
   ],
   "webmcp": [
    "fail",
    0,
    5
   ],
   "rate-limit-headers": [
    "fail",
    0,
    2
   ],
   "idempotency-key-support": [
    "fail",
    0,
    3
   ],
   "json-error-responses": [
    "fail",
    0,
    4
   ],
   "api-error-model": [
    "na",
    0,
    3
   ],
   "api-versioning-policy": [
    "na",
    0,
    3
   ],
   "pagination-shape": [
    "na",
    0,
    2
   ],
   "async-job-pattern": [
    "na",
    0,
    2
   ],
   "cli-tool": [
    "fail",
    0,
    3
   ],
   "rest-sdk-packages": [
    "warning",
    1,
    3
   ],
   "nlweb-ask": [
    "fail",
    0,
    1
   ],
   "nlweb-streaming": [
    "fail",
    0,
    1
   ],
   "response-schema-coverage": [
    "na",
    0,
    2
   ],
   "mcp-tool-annotations": [
    "na",
    0,
    2
   ],
   "mcp-server-card": [
    "fail",
    0,
    2
   ],
   "mcp-multi-surface-coverage": [
    "fail",
    0,
    2
   ],
   "sandbox-environment": [
    "fail",
    0,
    2
   ],
   "batch-endpoints": [
    "na",
    0,
    2
   ],
   "mcp-resource-listing": [
    "na",
    0,
    3
   ],
   "graphql-error-type-definition": [
    "fail",
    0,
    3
   ],
   "graphql-versioning-policy": [
    "fail",
    0,
    2
   ],
   "graphql-pagination-pattern": [
    "fail",
    0,
    2
   ],
   "graphql-async-job-pattern": [
    "fail",
    0,
    2
   ],
   "graphql-schema-completeness": [
    "na",
    0,
    3
   ],
   "graphql-batch-mutations": [
    "na",
    0,
    2
   ],
   "agent-friendly-404": [
    "warning",
    1,
    2
   ],
   "ax-document-structure": [
    "pass",
    3,
    3
   ],
   "ax-native-controls": [
    "pass",
    3,
    3
   ],
   "ax-accessible-names": [
    "pass",
    2,
    2
   ],
   "ax-form-labeling": [
    "na",
    0,
    2
   ],
   "ax-tree-injection-safe": [
    "pass",
    2,
    2
   ],
   "mcp-app-registry": [
    "fail",
    0,
    4
   ],
   "a2ui-support": [
    "fail",
    0,
    2
   ],
   "mcp-apps-ui-quality": [
    "na",
    0,
    4
   ],
   "mcp-view-domain": [
    "na",
    0,
    4
   ],
   "mcp-view-csp": [
    "na",
    0,
    4
   ],
   "api-schema-analysis": [
    "warning",
    0.5,
    2
   ],
   "function-calling-compat": [
    "fail",
    0,
    2
   ],
   "mcp-resource-quality": [
    "na",
    0,
    3
   ],
   "mpp-support": [
    "na",
    0,
    2
   ],
   "x402-support": [
    "na",
    0,
    2
   ],
   "ucp-support": [
    "na",
    0,
    3
   ],
   "acp-support": [
    "na",
    0,
    3
   ],
   "acp-delegate-payment": [
    "na",
    0,
    3
   ],
   "ap2-support": [
    "na",
    0,
    3
   ]
  },
  "flagged": [
   {
    "id": "openapi-spec",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 7,
    "tier": "required",
    "est": 4,
    "detail": "No OpenAPI/Swagger specification found"
   },
   {
    "id": "mcp-server",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 6,
    "tier": "required",
    "est": 3.6,
    "detail": "No MCP server or manifest found"
   },
   {
    "id": "scoped-permissions",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 5,
    "tier": "recommended",
    "est": 3,
    "detail": "No declared OAuth scopes, security schemes, or scoped-permission documentation found"
   },
   {
    "id": "webmcp",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 5,
    "tier": "required",
    "est": 3,
    "detail": "No WebMCP support detected - no document.modelContext / navigator.modelContext usage found"
   },
   {
    "id": "brand-search-accuracy",
    "layer": "discovery",
    "status": "warning",
    "score": 1,
    "max": 3,
    "tier": "required",
    "est": 2.6,
    "detail": "slack.com ranks #8 for \"Slack\" (searched your brand name alone: no main product term from your homepage qualified)"
   },
   {
    "id": "json-error-responses",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 4,
    "tier": "required",
    "est": 2.4,
    "detail": "API does not return JSON error responses (or no API detected)"
   },
   {
    "id": "mcp-app-registry",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 4,
    "tier": "recommended",
    "est": 2.4,
    "detail": "No MCP Apps support detected - this product has an in-agent UI surface but exposes no ui:// resources or tool UI metadata for agents to render."
   },
   {
    "id": "json-ld",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 4,
    "tier": "required",
    "est": 2.3,
    "detail": "No JSON-LD structured data found on homepage"
   },
   {
    "id": "cli-tool",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": 1.8,
    "detail": "No CLI tool found"
   },
   {
    "id": "graphql-error-type-definition",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": 1.8,
    "detail": "GraphQL introspection auth-gated and no typed graphql error model documentation found on GraphQL-tagged pages"
   },
   {
    "id": "idempotency-key-support",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": 1.8,
    "detail": "GraphQL introspection auth-gated and no idempotency documentation found on GraphQL-tagged pages"
   },
   {
    "id": "ard-catalog",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 1.3,
    "detail": "No /.well-known/ard.json, no same-site rel=\"ard\" link, and no legacy /.well-known/ai-catalog.json"
   },
   {
    "id": "function-calling-compat",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.2,
    "detail": "Poor compatibility: missing operationIds (0/0) and parameter schemas"
   },
   {
    "id": "graphql-async-job-pattern",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.2,
    "detail": "GraphQL introspection auth-gated and no graphql async-job pattern documentation found on GraphQL-tagged pages"
   },
   {
    "id": "graphql-pagination-pattern",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.2,
    "detail": "GraphQL introspection auth-gated and no graphql pagination pattern documentation found on GraphQL-tagged pages"
   },
   {
    "id": "graphql-versioning-policy",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.2,
    "detail": "GraphQL introspection auth-gated and no graphql versioning / deprecation policy documentation found on GraphQL-tagged pages"
   },
   {
    "id": "rate-limit-headers",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.2,
    "detail": "GraphQL introspection auth-gated and no header convention documented on GraphQL-tagged pages"
   },
   {
    "id": "rest-sdk-packages",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 3,
    "tier": "recommended",
    "est": 1.2,
    "detail": "SDK package found only in npm"
   },
   {
    "id": "agent-auth-discovery-metadata",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": 1.1,
    "detail": "Neither /.well-known/oauth-protected-resource nor /.well-known/oauth-authorization-server found. Probed: slack.com, api.slack.com."
   },
   {
    "id": "agent-discovery-file",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 1.1,
    "detail": "No agent discovery file found"
   },
   {
    "id": "json-ld-entity-linking",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.1,
    "detail": "No JSON-LD found - no entity linking possible"
   },
   {
    "id": "org-schema-completeness",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.1,
    "detail": "No JSON-LD found - Organization schema missing"
   },
   {
    "id": "schema-type-breadth",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.1,
    "detail": "No extended schema types found - AI can only answer basic questions about this entity"
   },
   {
    "id": "api-schema-analysis",
    "layer": "usability",
    "status": "warning",
    "score": 0.5,
    "max": 2,
    "tier": "recommended",
    "est": 0.9,
    "detail": "REST: schema found (0 operations) but needs better documentation for agents (0% with operationIds, 0% documented by description or summary) | GraphQL: introspection auth-gated and no schema evidence in docs | Combined score: 0.5/2"
   },
   {
    "id": "agent-auth-endpoints-reachable",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.8,
    "detail": "No agent_auth endpoint URIs found in AS metadata or /auth.md prose; nothing to probe"
   },
   {
    "id": "auth-md-exists",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.8,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "auth-md-structure",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.8,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "mcp-multi-surface-coverage",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.8,
    "detail": "This bonus needs two MCP servers: one for your product so agents can take actions, and a separate one for your documentation so agents can answer questions from your docs."
   },
   {
    "id": "mcp-server-card",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.8,
    "detail": "No MCP server card found (checked /.well-known/mcp/server-card.json, the site's ai-catalog.json, servers[].card in mcp.json, and <server>/server-card)"
   },
   {
    "id": "oauth-protected-resource",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.8,
    "detail": "No /.well-known/oauth-protected-resource found (RFC 9728)"
   },
   {
    "id": "sandbox-environment",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.8,
    "detail": "No sandbox or test environment found"
   },
   {
    "id": "agent-friendly-404",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "The nonexistent path https://slack.com/__ora-404-probe-g2yekw4l correctly returns HTTP 404. Partial credit: no Markdown error body was detected."
   },
   {
    "id": "content-no-js",
    "layer": "accessibility",
    "status": "warning",
    "score": 2,
    "max": 3,
    "tier": "required",
    "est": 0.6,
    "detail": "Homepage: 5480 chars with H1, but 4.7% content ratio is below the 5% target. 2 of 2 sampled inner pages have text without JavaScript (3 skipped)."
   },
   {
    "id": "llms-txt-formatting",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "The llms.txt at https://slack.com/llms.txt is well-formatted with markdown links, but at 40,604 characters it exceeds the 30,000-character recommendation for a navigation index."
   },
   {
    "id": "llms-txt-links-resolve",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "2 of 5 probed llms.txt links do not resolve: https://slack.com/customer-stories and https://slack.com/trust"
   },
   {
    "id": "onboarding-friction",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "Onboarding signals described but not verified live: sandbox/test environment"
   },
   {
    "id": "a2a-agent-card",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.4,
    "detail": "No A2A agent card found at /.well-known/agent-card.json"
   },
   {
    "id": "agent-auth-www-authenticate",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.4,
    "detail": "No 401 with WWW-Authenticate: Bearer resource_metadata=... found. Probed [https://slack.com/api, https://slack.com/api/v1, https://slack.com/v1, https://slack.com/v2, https://slack.com/agent/identity, https://slack.com/agent/auth,"
   },
   {
    "id": "api-catalog-rfc9727",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.4,
    "detail": "No /.well-known/api-catalog found (RFC 9727)"
   },
   {
    "id": "mcp-well-known-discovery",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.4,
    "detail": "No MCP server URL discovered"
   },
   {
    "id": "link-headers-discovery",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 0.2,
    "detail": "No HTTP Link response headers (RFC 8288) found"
   },
   {
    "id": "markdown-negotiation-vary",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.2,
    "detail": "Homepage https://slack.com does not meet the Markdown negotiation requirements: Accept: text/markdown returned text/html; charset=utf-8; Vary header missing Accept (got \"accept-encoding\")"
   },
   {
    "id": "sitemap-lastmod",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.2,
    "detail": "None of the 500 sampled sitemap entries carries a lastmod date. Add <lastmod> (W3C datetime) so agents can prioritize fresh content."
   },
   {
    "id": "a2ui-support",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No A2UI or generative UI support detected"
   },
   {
    "id": "agent-plugins-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No Agent Plugins manifest (plugin.json) found in discovered repos"
   },
   {
    "id": "agent-rules-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Could not locate a public repo containing agent configs or rules. If our probes missed it, AI coding agents likely will too - link the repo from your homepage or docs so it's discoverable."
   },
   {
    "id": "agent-ua-markdown",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly."
   },
   {
    "id": "markdown-link-alternate",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No sampled page advertises a markdown alternate. Add <link rel=\"alternate\" type=\"text/markdown\" href=\"...\"> (or the equivalent Link response header) pointing at a markdown twin of the page."
   },
   {
    "id": "markdown-negotiation",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Missing markdown content negotiation. Homepage returned text/html when probed with Accept: text/markdown (expected text/markdown), and none of the well-known root paths (/llms.md, /auth.md, /agents.md, /developers.md, /api.md, /index.md,"
   },
   {
    "id": "markdown-url-fallback",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "Homepage does not support the .md suffix. Probed https://slack.com/index.md and it did not return markdown (expected text/markdown content-type or a heading-led non-HTML body)."
   },
   {
    "id": "modular-llms-txt",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No section-level llms.txt found. Tried /docs/llms.txt, /api/llms.txt, /developers/llms.txt, /guides/llms.txt, /reference/llms.txt, /connect/llms.txt, /ai-agents/llms.txt, /integrations/llms.txt, /crm/llms.txt, /trust/llms.txt."
   },
   {
    "id": "nlweb-ask",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No NLWeb-conformant /ask endpoint found via GET or POST"
   },
   {
    "id": "nlweb-schema-feeds",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No schemamap: directive in robots.txt"
   },
   {
    "id": "nlweb-streaming",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "NLWeb /ask does not support SSE streaming via GET or POST"
   },
   {
    "id": "pricing-md",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No pricing.md found - agents need machine-readable pricing to compare products and make purchase recommendations"
   },
   {
    "id": "skills-sh-listed",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No official skills self-published on skills.sh (100 community skills with potential relation to this domain found, but only self-published official skills count)"
   },
   {
    "id": "skills-sh-quality",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No official skills on skills.sh to evaluate"
   },
   {
    "id": "web-bot-auth-directory",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No /.well-known/http-message-signatures-directory found"
   }
  ],
  "seen": {
   "brand-search-accuracy": "slack.com ranks #8 for \"Slack\" (searched your brand name alone: no main product term from your homepage qualified)",
   "wikipedia-presence": "Wikipedia \"Slack (software)\" and Wikidata Q17130715 both verified - domain confirmed on both sources",
   "robots-ai-policy-quality": "AI search crawlers: allowed in 9 of 9 checks (3 crawlers on 3 pages). AI training crawlers: allowed in 6 of 6 checks (2 crawlers on 3 pages), not scored.",
   "noindex-directives": "No noindex on the homepage: no robots, googlebot or bingbot meta tag and no X-Robots-Tag header hides it from search.",
   "sitemap": "Valid sitemap found at https://slack.com/sitemap.xml with multiple sitemaps entries",
   "content-no-js": "Homepage: 5480 chars with H1, but 4.7% content ratio is below the 5% target. 2 of 2 sampled inner pages have text without JavaScript (3 skipped).",
   "bot-detection": "Site accessible to 4 agent user-agents (ChatGPT-User, OAI-SearchBot, Claude-User, PerplexityBot).",
   "agent-discovery-file": "No agent discovery file found",
   "a2a-agent-card": "No A2A agent card found at /.well-known/agent-card.json",
   "mcp-well-known-discovery": "No MCP server URL discovered",
   "robots-agent-user-policy": "No applicable crawl or usage restriction found for 3 user-triggered agents (chatgpt-user, claude-user, perplexity-user) on 1 public page: https://slack.com/. Declared policy only;",
   "llms-txt-exists": "Found the llms.txt at https://slack.com/llms.txt.",
   "llms-txt-formatting": "The llms.txt at https://slack.com/llms.txt is well-formatted with markdown links, but at 40,604 characters it exceeds the 30,000-character recommendation for a navigation index.",
   "json-ld": "No JSON-LD structured data found on homepage",
   "public-api-docs": "API/docs link found on homepage and resolves: https://api.slack.com",
   "metadata-completeness": "All metadata signals present: canonical URL, lang=\"en-US\", og:image, og:type",
   "page-token-budget": "All 3 measured pages fit an agent context budget (largest ~2K tokens)",
   "docs-auth-gate": "All 5 sampled pages are publicly readable (2 with substantive content)",
   "openapi-spec": "No OpenAPI/Swagger specification found",
   "developer-portal": "Developer portal found at /developers",
   "markdown-negotiation": "Missing markdown content negotiation. Homepage returned text/html when probed with Accept: text/markdown (expected text/markdown), and none of the well-known root paths (/llms.md, /auth.md, /agents.md, /developers.md,",
   "agent-ua-markdown": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly.",
   "agent-crawler-reachability": "Reachable to every agent we tested - ChatGPT-User: reachable, OAI-SearchBot: reachable, Claude-User: reachable, PerplexityBot: reachable",
   "public-api": "REST API-related links found on homepage but no standard API path detected. GraphQL endpoint at https://graphql.slack.com/ is reachable; introspection requires authentication (API key / OAuth),",
   "oauth-support": "OpenID Connect discovery endpoint found at https://slack.com",
   "mcp-server": "No MCP server or manifest found",
   "webmcp": "No WebMCP support detected - no document.modelContext / navigator.modelContext usage found",
   "cli-tool": "No CLI tool found",
   "rest-sdk-packages": "SDK package found only in npm",
   "nlweb-ask": "No NLWeb-conformant /ask endpoint found via GET or POST",
   "mpp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "x402-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "ucp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "acp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "ap2-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites"
  }
 },
 {
  "slug": "snowflake",
  "name": "Snowflake",
  "domain": "snowflake.com",
  "finalUrl": "https://www.snowflake.com/en/",
  "read": "2026-11-09",
  "scannedAt": "2026-10-28T20:33:43.079+00:00",
  "score": 66,
  "max": 100,
  "grade": "C",
  "category": "Data & Analytics",
  "scoringVersion": null,
  "rulesUrl": null,
  "summary": "Snowflake excels at developer resource discovery and SDK availability, but lacks OpenAPI specification for agent integration.",
  "layers": [
   {
    "id": "discovery",
    "name": "Discovery",
    "score": 14,
    "max": 15
   },
   {
    "id": "accessibility",
    "name": "Access",
    "score": 33,
    "max": 57
   },
   {
    "id": "usability",
    "name": "Usability",
    "score": 33,
    "max": 57
   },
   {
    "id": "payments",
    "name": "Payments",
    "score": 0,
    "max": 0
   }
  ],
  "checks": {
   "ard-catalog": [
    "fail",
    0,
    1
   ],
   "ai-catalog-published": [
    "na",
    0,
    1
   ],
   "ard-entries-valid": [
    "na",
    0,
    2
   ],
   "ard-trust-manifest": [
    "na",
    0,
    2
   ],
   "agentic-search-usecase": [
    "na",
    0,
    6
   ],
   "agentic-search-specific": [
    "pass",
    3,
    3
   ],
   "brand-search-accuracy": [
    "pass",
    3,
    3
   ],
   "wikipedia-presence": [
    "pass",
    4,
    4
   ],
   "robots-ai-policy-quality": [
    "pass",
    2,
    2
   ],
   "mcp-registry-listed": [
    "na",
    0,
    1
   ],
   "npm-sdk-package": [
    "pass",
    1,
    1
   ],
   "agent-rules-repo": [
    "fail",
    0,
    1
   ],
   "agent-plugins-repo": [
    "fail",
    0,
    1
   ],
   "registry-branding": [
    "na",
    0,
    2
   ],
   "chatgpt-app-listed": [
    "fail",
    0,
    2
   ],
   "noindex-directives": [
    "pass",
    1,
    1
   ],
   "sitemap": [
    "pass",
    2,
    2
   ],
   "content-no-js": [
    "warning",
    2,
    3
   ],
   "bot-detection": [
    "pass",
    2,
    2
   ],
   "agent-discovery-file": [
    "fail",
    0,
    2
   ],
   "agent-skills-index-v2": [
    "na",
    0,
    2
   ],
   "a2a-agent-card": [
    "fail",
    0,
    2
   ],
   "skills-sh-listed": [
    "pass",
    1,
    1
   ],
   "pricing-md": [
    "fail",
    0,
    2
   ],
   "nlweb-schema-feeds": [
    "fail",
    0,
    1
   ],
   "mcp-well-known-discovery": [
    "fail",
    0,
    2
   ],
   "agent-mode-view": [
    "fail",
    0,
    2
   ],
   "link-headers-discovery": [
    "fail",
    0,
    1
   ],
   "markdown-url-fallback": [
    "fail",
    0,
    2
   ],
   "modular-llms-txt": [
    "fail",
    0,
    1
   ],
   "sitemap-lastmod": [
    "pass",
    1,
    1
   ],
   "robots-agent-user-policy": [
    "pass",
    2,
    2
   ],
   "llms-txt-exists": [
    "pass",
    1,
    1
   ],
   "llms-txt-formatting": [
    "pass",
    2,
    2
   ],
   "json-ld": [
    "fail",
    0,
    4
   ],
   "pricing-info": [
    "pass",
    3,
    3
   ],
   "public-api-docs": [
    "pass",
    3,
    3
   ],
   "agent-instruction": [
    "fail",
    0,
    3
   ],
   "skills-sh-quality": [
    "pass",
    2,
    2
   ],
   "json-ld-entity-linking": [
    "fail",
    0,
    2
   ],
   "metadata-completeness": [
    "warning",
    1,
    2
   ],
   "org-schema-completeness": [
    "fail",
    0,
    2
   ],
   "schema-type-breadth": [
    "fail",
    0,
    2
   ],
   "trust-anchors": [
    "pass",
    2,
    2
   ],
   "llms-txt-links-resolve": [
    "pass",
    2,
    2
   ],
   "markdown-link-alternate": [
    "fail",
    0,
    1
   ],
   "markdown-frontmatter": [
    "na",
    0,
    1
   ],
   "redirect-hygiene": [
    "pass",
    1,
    1
   ],
   "page-token-budget": [
    "pass",
    1,
    1
   ],
   "code-fence-validity": [
    "pass",
    1,
    1
   ],
   "docs-auth-gate": [
    "na",
    0,
    2
   ],
   "openapi-spec": [
    "fail",
    0,
    7
   ],
   "developer-portal": [
    "pass",
    6,
    6
   ],
   "api-catalog-rfc9727": [
    "fail",
    0,
    2
   ],
   "markdown-negotiation": [
    "fail",
    0,
    1
   ],
   "markdown-negotiation-vary": [
    "fail",
    0,
    1
   ],
   "agent-ua-markdown": [
    "fail",
    0,
    1
   ],
   "agent-crawler-reachability": [
    "pass",
    2,
    2
   ],
   "mcp-tool-descriptions": [
    "na",
    0,
    3
   ],
   "mcp-param-schemas": [
    "na",
    0,
    2
   ],
   "mcp-server-identity": [
    "na",
    0,
    1
   ],
   "mcp-tool-listing": [
    "na",
    0,
    3
   ],
   "mcp-tool-naming": [
    "na",
    0,
    2
   ],
   "public-api": [
    "pass",
    7,
    7
   ],
   "oauth-support": [
    "pass",
    5,
    5
   ],
   "scoped-permissions": [
    "pass",
    5,
    5
   ],
   "mcp-auth-mechanism": [
    "na",
    0,
    2
   ],
   "mcp-oauth-metadata": [
    "na",
    0,
    2
   ],
   "mcp-pkce-s256": [
    "na",
    0,
    2
   ],
   "onboarding-friction": [
    "warning",
    1,
    2
   ],
   "web-bot-auth-directory": [
    "fail",
    0,
    2
   ],
   "oauth-protected-resource": [
    "pass",
    2,
    2
   ],
   "auth-md-exists": [
    "fail",
    0,
    2
   ],
   "auth-md-structure": [
    "fail",
    0,
    2
   ],
   "auth-md-walkthrough-simulation": [
    "na",
    0,
    2
   ],
   "agent-auth-discovery-metadata": [
    "warning",
    1,
    3
   ],
   "agent-auth-www-authenticate": [
    "fail",
    0,
    1
   ],
   "agent-auth-endpoints-reachable": [
    "fail",
    0,
    2
   ],
   "pap-discovery": [
    "na",
    0,
    2
   ],
   "pap-issuer-binding": [
    "na",
    0,
    2
   ],
   "pap-auth-config": [
    "na",
    0,
    2
   ],
   "pap-interfaces": [
    "na",
    0,
    2
   ],
   "pap-endpoint-enforcement": [
    "na",
    0,
    2
   ],
   "pap-cross-protocol": [
    "na",
    0,
    2
   ],
   "mcp-server": [
    "warning",
    2,
    6
   ],
   "mcp-error-handling": [
    "na",
    0,
    2
   ],
   "mcp-transport-modern": [
    "na",
    0,
    1
   ],
   "webmcp": [
    "fail",
    0,
    5
   ],
   "rate-limit-headers": [
    "na",
    0,
    2
   ],
   "idempotency-key-support": [
    "na",
    0,
    3
   ],
   "json-error-responses": [
    "fail",
    0,
    4
   ],
   "api-error-model": [
    "na",
    0,
    3
   ],
   "api-versioning-policy": [
    "na",
    0,
    3
   ],
   "pagination-shape": [
    "na",
    0,
    2
   ],
   "async-job-pattern": [
    "na",
    0,
    2
   ],
   "cli-tool": [
    "pass",
    3,
    3
   ],
   "rest-sdk-packages": [
    "warning",
    2,
    3
   ],
   "nlweb-ask": [
    "fail",
    0,
    1
   ],
   "nlweb-streaming": [
    "fail",
    0,
    1
   ],
   "response-schema-coverage": [
    "na",
    0,
    2
   ],
   "mcp-tool-annotations": [
    "na",
    0,
    2
   ],
   "mcp-server-card": [
    "fail",
    0,
    2
   ],
   "mcp-multi-surface-coverage": [
    "fail",
    0,
    2
   ],
   "sandbox-environment": [
    "fail",
    0,
    2
   ],
   "batch-endpoints": [
    "na",
    0,
    2
   ],
   "mcp-resource-listing": [
    "na",
    0,
    3
   ],
   "graphql-error-type-definition": [
    "na",
    0,
    3
   ],
   "graphql-versioning-policy": [
    "na",
    0,
    2
   ],
   "graphql-pagination-pattern": [
    "na",
    0,
    2
   ],
   "graphql-async-job-pattern": [
    "na",
    0,
    2
   ],
   "graphql-schema-completeness": [
    "na",
    0,
    3
   ],
   "graphql-batch-mutations": [
    "na",
    0,
    2
   ],
   "agent-friendly-404": [
    "warning",
    1,
    2
   ],
   "ax-document-structure": [
    "na",
    0,
    3
   ],
   "ax-native-controls": [
    "na",
    0,
    3
   ],
   "ax-accessible-names": [
    "pass",
    2,
    2
   ],
   "ax-form-labeling": [
    "na",
    0,
    2
   ],
   "ax-tree-injection-safe": [
    "pass",
    2,
    2
   ],
   "mcp-app-registry": [
    "fail",
    0,
    4
   ],
   "a2ui-support": [
    "fail",
    0,
    2
   ],
   "mcp-apps-ui-quality": [
    "na",
    0,
    4
   ],
   "mcp-view-domain": [
    "na",
    0,
    4
   ],
   "mcp-view-csp": [
    "na",
    0,
    4
   ],
   "api-schema-analysis": [
    "fail",
    0,
    2
   ],
   "function-calling-compat": [
    "fail",
    0,
    2
   ],
   "mcp-resource-quality": [
    "na",
    0,
    3
   ],
   "mpp-support": [
    "na",
    0,
    2
   ],
   "x402-support": [
    "na",
    0,
    2
   ],
   "ucp-support": [
    "na",
    0,
    3
   ],
   "acp-support": [
    "na",
    0,
    3
   ],
   "acp-delegate-payment": [
    "na",
    0,
    3
   ],
   "ap2-support": [
    "na",
    0,
    3
   ]
  },
  "flagged": [
   {
    "id": "openapi-spec",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 7,
    "tier": "required",
    "est": 4.1,
    "detail": "No OpenAPI/Swagger specification found"
   },
   {
    "id": "webmcp",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 5,
    "tier": "required",
    "est": 3.9,
    "detail": "No WebMCP support detected - no document.modelContext / navigator.modelContext usage found (scanned 2 of 2 same-origin script bundle(s) for modelContext registrations)"
   },
   {
    "id": "json-error-responses",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 4,
    "tier": "required",
    "est": 3.1,
    "detail": "API does not return JSON error responses (or no API detected)"
   },
   {
    "id": "mcp-app-registry",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 4,
    "tier": "recommended",
    "est": 3.1,
    "detail": "No MCP Apps support detected - this product has an in-agent UI surface but exposes no ui:// resources or tool UI metadata for agents to render."
   },
   {
    "id": "mcp-server",
    "layer": "usability",
    "status": "warning",
    "score": 2,
    "max": 6,
    "tier": "required",
    "est": 3.1,
    "detail": "MCP mentioned at https://www.snowflake.com/en/developers/guides/getting-started-with-snowflake-mcp-server but no standard manifest endpoint found"
   },
   {
    "id": "json-ld",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 4,
    "tier": "required",
    "est": 2.3,
    "detail": "No JSON-LD structured data found on homepage"
   },
   {
    "id": "agent-instruction",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "required",
    "est": 1.8,
    "detail": "No agent instruction file with when-to-use guidance found"
   },
   {
    "id": "api-schema-analysis",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.6,
    "detail": "No API schema detected"
   },
   {
    "id": "function-calling-compat",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.6,
    "detail": "No API spec found - function calling requires discoverable endpoints"
   },
   {
    "id": "ard-catalog",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 1.5,
    "detail": "No /.well-known/ard.json, no same-site rel=\"ard\" link, and no legacy /.well-known/ai-catalog.json"
   },
   {
    "id": "agent-discovery-file",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 1.2,
    "detail": "No agent discovery file found"
   },
   {
    "id": "json-ld-entity-linking",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.2,
    "detail": "No JSON-LD found - no entity linking possible"
   },
   {
    "id": "org-schema-completeness",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.2,
    "detail": "No JSON-LD found - Organization schema missing"
   },
   {
    "id": "schema-type-breadth",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.2,
    "detail": "No extended schema types found - AI can only answer basic questions about this entity"
   },
   {
    "id": "agent-friendly-404",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.8,
    "detail": "The nonexistent path https://snowflake.com/__ora-404-probe-2c2uzy9i correctly returns HTTP 404. Partial credit: no Markdown error body was detected."
   },
   {
    "id": "onboarding-friction",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.8,
    "detail": "Onboarding signals described but not verified live: free tier available, self-serve key generation, sandbox/test environment"
   },
   {
    "id": "rest-sdk-packages",
    "layer": "usability",
    "status": "warning",
    "score": 2,
    "max": 3,
    "tier": "recommended",
    "est": 0.8,
    "detail": "SDK packages found in npm, pypi"
   },
   {
    "id": "agent-auth-discovery-metadata",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 3,
    "tier": "recommended",
    "est": 0.6,
    "detail": "PRM + AS metadata both present (AS metadata fetched from advertised origin https://www.snowflake.com) but AS metadata has no agent_auth block"
   },
   {
    "id": "agent-auth-endpoints-reachable",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "No agent_auth endpoint URIs found in AS metadata or /auth.md prose; nothing to probe"
   },
   {
    "id": "auth-md-exists",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.6,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "auth-md-structure",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "content-no-js",
    "layer": "accessibility",
    "status": "warning",
    "score": 2,
    "max": 3,
    "tier": "required",
    "est": 0.6,
    "detail": "7473 chars with H1, but heading hierarchy skips H1 to H6; 3.2% content ratio is below the 5% target"
   },
   {
    "id": "mcp-multi-surface-coverage",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "This bonus needs two MCP servers: one for your product so agents can take actions, and a separate one for your documentation so agents can answer questions from your docs."
   },
   {
    "id": "mcp-server-card",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "No MCP server card found (checked /.well-known/mcp/server-card.json, the site's ai-catalog.json, servers[].card in mcp.json, and <server>/server-card)"
   },
   {
    "id": "metadata-completeness",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "required",
    "est": 0.6,
    "detail": "3/4 metadata signals present - missing: og:type"
   },
   {
    "id": "sandbox-environment",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "No sandbox or test environment found"
   },
   {
    "id": "a2a-agent-card",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "No A2A agent card found at /.well-known/agent-card.json"
   },
   {
    "id": "api-catalog-rfc9727",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.5,
    "detail": "No /.well-known/api-catalog found (RFC 9727)"
   },
   {
    "id": "mcp-well-known-discovery",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "No MCP server URL discovered"
   },
   {
    "id": "agent-auth-www-authenticate",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.3,
    "detail": "No 401 with WWW-Authenticate: Bearer resource_metadata=... found. Probed [https://snowflake.com/api, https://snowflake.com/api/v1, https://snowflake.com/v1, https://snowflake.com/v2, https://snowflake.com/agent/identity,"
   },
   {
    "id": "chatgpt-app-listed",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.2,
    "detail": "Not found in ChatGPT app directory"
   },
   {
    "id": "link-headers-discovery",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 0.2,
    "detail": "No HTTP Link response headers (RFC 8288) found"
   },
   {
    "id": "markdown-negotiation-vary",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.2,
    "detail": "Homepage https://snowflake.com does not meet the Markdown negotiation requirements: Accept: text/markdown returned text/html;charset=utf-8; Vary header missing Accept (got \"x-original-host,x-geo-country,accept-encoding\")"
   },
   {
    "id": "a2ui-support",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No A2UI or generative UI support detected"
   },
   {
    "id": "agent-mode-view",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No agent mode view detected at ?mode=agent (optional)"
   },
   {
    "id": "agent-plugins-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No Agent Plugins manifest (plugin.json) found in discovered repos"
   },
   {
    "id": "agent-rules-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Could not locate a public repo containing agent configs or rules. If our probes missed it, AI coding agents likely will too - link the repo from your homepage or docs so it's discoverable."
   },
   {
    "id": "agent-ua-markdown",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly."
   },
   {
    "id": "markdown-link-alternate",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No sampled page advertises a markdown alternate. Add <link rel=\"alternate\" type=\"text/markdown\" href=\"...\"> (or the equivalent Link response header) pointing at a markdown twin of the page."
   },
   {
    "id": "markdown-negotiation",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Missing markdown content negotiation. Homepage returned text/html when probed with Accept: text/markdown (expected text/markdown), and none of the well-known root paths (/llms.md, /auth.md, /agents.md, /developers.md, /api.md, /index.md,"
   },
   {
    "id": "markdown-url-fallback",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "Homepage does not support the .md suffix. Probed https://snowflake.com/index.md and it did not return markdown (expected text/markdown content-type or a heading-led non-HTML body)."
   },
   {
    "id": "modular-llms-txt",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No section-level llms.txt found. Tried /docs/llms.txt, /api/llms.txt, /developers/llms.txt, /guides/llms.txt, /reference/llms.txt, /en/llms.txt, /ja/llms.txt, /ko/llms.txt, /de/llms.txt, /fr/llms.txt."
   },
   {
    "id": "nlweb-ask",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No NLWeb-conformant /ask endpoint found via GET or POST"
   },
   {
    "id": "nlweb-schema-feeds",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No schemamap: directive in robots.txt"
   },
   {
    "id": "nlweb-streaming",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "NLWeb /ask does not support SSE streaming via GET or POST"
   },
   {
    "id": "pricing-md",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No pricing.md found - agents need machine-readable pricing to compare products and make purchase recommendations"
   },
   {
    "id": "web-bot-auth-directory",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No /.well-known/http-message-signatures-directory found"
   }
  ],
  "seen": {
   "brand-search-accuracy": "snowflake.com ranks #5 for \"snowflake data platform\" (search term updated)",
   "wikipedia-presence": "Wikipedia \"Snowflake Inc.\" and Wikidata Q22078063 both verified - domain confirmed on both sources",
   "robots-ai-policy-quality": "AI search crawlers: allowed in 3 of 3 checks (3 crawlers on 1 page). AI training crawlers: allowed in 2 of 2 checks (2 crawlers on 1 page), not scored.",
   "noindex-directives": "No noindex on the homepage: no robots, googlebot or bingbot meta tag and no X-Robots-Tag header hides it from search.",
   "sitemap": "Valid sitemap found at https://www.snowflake.com/sitemap_index.xml with multiple sitemaps entries",
   "content-no-js": "7473 chars with H1, but heading hierarchy skips H1 to H6; 3.2% content ratio is below the 5% target",
   "bot-detection": "Site accessible to 4 agent user-agents (ChatGPT-User, OAI-SearchBot, Claude-User, PerplexityBot).",
   "agent-discovery-file": "No agent discovery file found",
   "a2a-agent-card": "No A2A agent card found at /.well-known/agent-card.json",
   "mcp-well-known-discovery": "No MCP server URL discovered",
   "robots-agent-user-policy": "No applicable crawl or usage restriction found for 3 user-triggered agents (chatgpt-user, claude-user, perplexity-user) on 1 public page: https://snowflake.com/. Declared policy only;",
   "llms-txt-exists": "Found the llms.txt at https://docs.snowflake.com/llms.txt.",
   "llms-txt-formatting": "The llms.txt is well-formatted: 127 lines with markdown links, 9,373 characters in total.",
   "json-ld": "No JSON-LD structured data found on homepage",
   "public-api-docs": "Documentation site found at https://docs.snowflake.com",
   "metadata-completeness": "3/4 metadata signals present - missing: og:type",
   "page-token-budget": "All 1 measured page fit an agent context budget (largest ~2K tokens)",
   "docs-auth-gate": "No content pages sampled",
   "openapi-spec": "No OpenAPI/Swagger specification found",
   "developer-portal": "Developer portal found at /developers",
   "markdown-negotiation": "Missing markdown content negotiation. Homepage returned text/html when probed with Accept: text/markdown (expected text/markdown), and none of the well-known root paths (/llms.md, /auth.md, /agents.md, /developers.md,",
   "agent-ua-markdown": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly.",
   "agent-crawler-reachability": "Reachable to every agent we tested - ChatGPT-User: reachable, OAI-SearchBot: reachable, Claude-User: reachable, PerplexityBot: reachable",
   "public-api": "REST API documentation found at https://docs.snowflake.com/en/guides-overview-alerts.md. Best-of-protocols score: 7/7.",
   "oauth-support": "OpenID Connect discovery endpoint found at https://auth.snowflake.com",
   "mcp-server": "MCP mentioned at https://www.snowflake.com/en/developers/guides/getting-started-with-snowflake-mcp-server but no standard manifest endpoint found",
   "webmcp": "No WebMCP support detected - no document.modelContext / navigator.modelContext usage found (scanned 2 of 2 same-origin script bundle(s) for modelContext registrations)",
   "cli-tool": "CLI tool found on PyPI: snowflake",
   "rest-sdk-packages": "SDK packages found in npm, pypi",
   "nlweb-ask": "No NLWeb-conformant /ask endpoint found via GET or POST",
   "mpp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "x402-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "ucp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "acp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "ap2-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites"
  }
 },
 {
  "slug": "square",
  "name": "Square",
  "domain": "squareup.com",
  "finalUrl": "https://squareup.com/us/en",
  "read": "2026-11-09",
  "scannedAt": "2026-10-31T12:21:52.051+00:00",
  "score": 57,
  "max": 100,
  "grade": "C",
  "category": "Payments & Fintech",
  "scoringVersion": null,
  "rulesUrl": null,
  "summary": "Square's payments API documentation is reachable, but homepage content requires JavaScript rendering that blocks agent crawling.",
  "layers": [
   {
    "id": "discovery",
    "name": "Discovery",
    "score": 8,
    "max": 14
   },
   {
    "id": "accessibility",
    "name": "Access",
    "score": 36,
    "max": 60
   },
   {
    "id": "usability",
    "name": "Usability",
    "score": 33,
    "max": 61
   },
   {
    "id": "payments",
    "name": "Payments",
    "score": 0,
    "max": 0
   }
  ],
  "checks": {
   "ard-catalog": [
    "fail",
    0,
    1
   ],
   "ai-catalog-published": [
    "na",
    0,
    1
   ],
   "ard-entries-valid": [
    "na",
    0,
    2
   ],
   "ard-trust-manifest": [
    "na",
    0,
    2
   ],
   "agentic-search-usecase": [
    "na",
    0,
    6
   ],
   "agentic-search-specific": [
    "warning",
    1,
    3
   ],
   "brand-search-accuracy": [
    "warning",
    2,
    3
   ],
   "wikipedia-presence": [
    "warning",
    2,
    4
   ],
   "robots-ai-policy-quality": [
    "pass",
    2,
    2
   ],
   "mcp-registry-listed": [
    "fail",
    0,
    1
   ],
   "npm-sdk-package": [
    "fail",
    0,
    1
   ],
   "agent-rules-repo": [
    "fail",
    0,
    1
   ],
   "agent-plugins-repo": [
    "fail",
    0,
    1
   ],
   "registry-branding": [
    "fail",
    0,
    2
   ],
   "chatgpt-app-listed": [
    "fail",
    0,
    2
   ],
   "noindex-directives": [
    "pass",
    1,
    1
   ],
   "sitemap": [
    "pass",
    2,
    2
   ],
   "content-no-js": [
    "fail",
    0,
    3
   ],
   "bot-detection": [
    "pass",
    2,
    2
   ],
   "agent-discovery-file": [
    "fail",
    0,
    2
   ],
   "agent-skills-index-v2": [
    "na",
    0,
    2
   ],
   "a2a-agent-card": [
    "fail",
    0,
    2
   ],
   "skills-sh-listed": [
    "fail",
    0,
    1
   ],
   "pricing-md": [
    "fail",
    0,
    2
   ],
   "nlweb-schema-feeds": [
    "fail",
    0,
    1
   ],
   "mcp-well-known-discovery": [
    "warning",
    1,
    2
   ],
   "agent-mode-view": [
    "fail",
    0,
    2
   ],
   "link-headers-discovery": [
    "fail",
    0,
    1
   ],
   "markdown-url-fallback": [
    "fail",
    0,
    2
   ],
   "modular-llms-txt": [
    "fail",
    0,
    1
   ],
   "sitemap-lastmod": [
    "pass",
    1,
    1
   ],
   "robots-agent-user-policy": [
    "pass",
    2,
    2
   ],
   "llms-txt-exists": [
    "pass",
    1,
    1
   ],
   "llms-txt-formatting": [
    "pass",
    2,
    2
   ],
   "json-ld": [
    "fail",
    0,
    4
   ],
   "pricing-info": [
    "pass",
    3,
    3
   ],
   "public-api-docs": [
    "pass",
    3,
    3
   ],
   "agent-instruction": [
    "warning",
    2,
    3
   ],
   "skills-sh-quality": [
    "fail",
    0,
    2
   ],
   "json-ld-entity-linking": [
    "fail",
    0,
    2
   ],
   "metadata-completeness": [
    "pass",
    2,
    2
   ],
   "org-schema-completeness": [
    "fail",
    0,
    2
   ],
   "schema-type-breadth": [
    "fail",
    0,
    2
   ],
   "trust-anchors": [
    "pass",
    2,
    2
   ],
   "llms-txt-links-resolve": [
    "warning",
    1,
    2
   ],
   "markdown-link-alternate": [
    "fail",
    0,
    1
   ],
   "markdown-frontmatter": [
    "na",
    0,
    1
   ],
   "redirect-hygiene": [
    "pass",
    1,
    1
   ],
   "page-token-budget": [
    "pass",
    1,
    1
   ],
   "code-fence-validity": [
    "pass",
    1,
    1
   ],
   "docs-auth-gate": [
    "pass",
    2,
    2
   ],
   "openapi-spec": [
    "fail",
    0,
    7
   ],
   "developer-portal": [
    "pass",
    6,
    6
   ],
   "api-catalog-rfc9727": [
    "fail",
    0,
    2
   ],
   "markdown-negotiation": [
    "fail",
    0,
    1
   ],
   "markdown-negotiation-vary": [
    "fail",
    0,
    1
   ],
   "agent-ua-markdown": [
    "fail",
    0,
    1
   ],
   "agent-crawler-reachability": [
    "pass",
    2,
    2
   ],
   "mcp-tool-descriptions": [
    "na",
    0,
    3
   ],
   "mcp-param-schemas": [
    "na",
    0,
    2
   ],
   "mcp-server-identity": [
    "na",
    0,
    1
   ],
   "mcp-tool-listing": [
    "na",
    0,
    3
   ],
   "mcp-tool-naming": [
    "na",
    0,
    2
   ],
   "public-api": [
    "warning",
    3,
    7
   ],
   "oauth-support": [
    "pass",
    5,
    5
   ],
   "scoped-permissions": [
    "fail",
    0,
    5
   ],
   "mcp-auth-mechanism": [
    "pass",
    2,
    2
   ],
   "mcp-oauth-metadata": [
    "pass",
    2,
    2
   ],
   "mcp-pkce-s256": [
    "pass",
    2,
    2
   ],
   "onboarding-friction": [
    "pass",
    2,
    2
   ],
   "web-bot-auth-directory": [
    "fail",
    0,
    2
   ],
   "oauth-protected-resource": [
    "pass",
    2,
    2
   ],
   "auth-md-exists": [
    "fail",
    0,
    2
   ],
   "auth-md-structure": [
    "fail",
    0,
    2
   ],
   "auth-md-walkthrough-simulation": [
    "na",
    0,
    2
   ],
   "agent-auth-discovery-metadata": [
    "warning",
    1,
    3
   ],
   "agent-auth-www-authenticate": [
    "pass",
    1,
    1
   ],
   "agent-auth-endpoints-reachable": [
    "fail",
    0,
    2
   ],
   "pap-discovery": [
    "na",
    0,
    2
   ],
   "pap-issuer-binding": [
    "na",
    0,
    2
   ],
   "pap-auth-config": [
    "na",
    0,
    2
   ],
   "pap-interfaces": [
    "na",
    0,
    2
   ],
   "pap-endpoint-enforcement": [
    "na",
    0,
    2
   ],
   "pap-cross-protocol": [
    "na",
    0,
    2
   ],
   "mcp-server": [
    "warning",
    5,
    6
   ],
   "mcp-error-handling": [
    "na",
    0,
    2
   ],
   "mcp-transport-modern": [
    "na",
    0,
    1
   ],
   "webmcp": [
    "fail",
    0,
    5
   ],
   "rate-limit-headers": [
    "na",
    0,
    2
   ],
   "idempotency-key-support": [
    "na",
    0,
    3
   ],
   "json-error-responses": [
    "fail",
    0,
    4
   ],
   "api-error-model": [
    "na",
    0,
    3
   ],
   "api-versioning-policy": [
    "na",
    0,
    3
   ],
   "pagination-shape": [
    "na",
    0,
    2
   ],
   "async-job-pattern": [
    "na",
    0,
    2
   ],
   "cli-tool": [
    "fail",
    0,
    3
   ],
   "rest-sdk-packages": [
    "warning",
    1,
    3
   ],
   "nlweb-ask": [
    "fail",
    0,
    1
   ],
   "nlweb-streaming": [
    "fail",
    0,
    1
   ],
   "response-schema-coverage": [
    "na",
    0,
    2
   ],
   "mcp-tool-annotations": [
    "na",
    0,
    2
   ],
   "mcp-server-card": [
    "fail",
    0,
    2
   ],
   "mcp-multi-surface-coverage": [
    "fail",
    0,
    2
   ],
   "sandbox-environment": [
    "warning",
    0,
    2
   ],
   "batch-endpoints": [
    "na",
    0,
    2
   ],
   "mcp-resource-listing": [
    "na",
    0,
    3
   ],
   "graphql-error-type-definition": [
    "na",
    0,
    3
   ],
   "graphql-versioning-policy": [
    "na",
    0,
    2
   ],
   "graphql-pagination-pattern": [
    "na",
    0,
    2
   ],
   "graphql-async-job-pattern": [
    "na",
    0,
    2
   ],
   "graphql-schema-completeness": [
    "na",
    0,
    3
   ],
   "graphql-batch-mutations": [
    "na",
    0,
    2
   ],
   "agent-friendly-404": [
    "na",
    0,
    2
   ],
   "ax-document-structure": [
    "na",
    0,
    3
   ],
   "ax-native-controls": [
    "pass",
    3,
    3
   ],
   "ax-accessible-names": [
    "pass",
    2,
    2
   ],
   "ax-form-labeling": [
    "na",
    0,
    2
   ],
   "ax-tree-injection-safe": [
    "pass",
    2,
    2
   ],
   "mcp-app-registry": [
    "na",
    0,
    4
   ],
   "a2ui-support": [
    "fail",
    0,
    2
   ],
   "mcp-apps-ui-quality": [
    "na",
    0,
    4
   ],
   "mcp-view-domain": [
    "na",
    0,
    4
   ],
   "mcp-view-csp": [
    "na",
    0,
    4
   ],
   "api-schema-analysis": [
    "fail",
    0,
    2
   ],
   "function-calling-compat": [
    "fail",
    0,
    2
   ],
   "mcp-resource-quality": [
    "na",
    0,
    3
   ],
   "mpp-support": [
    "na",
    0,
    2
   ],
   "x402-support": [
    "na",
    0,
    2
   ],
   "ucp-support": [
    "na",
    0,
    3
   ],
   "acp-support": [
    "na",
    0,
    3
   ],
   "acp-delegate-payment": [
    "na",
    0,
    3
   ],
   "ap2-support": [
    "na",
    0,
    3
   ]
  },
  "flagged": [
   {
    "id": "openapi-spec",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 7,
    "tier": "required",
    "est": 3.9,
    "detail": "No OpenAPI/Swagger specification found"
   },
   {
    "id": "scoped-permissions",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 5,
    "tier": "recommended",
    "est": 3.6,
    "detail": "No declared OAuth scopes, security schemes, or scoped-permission documentation found"
   },
   {
    "id": "webmcp",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 5,
    "tier": "required",
    "est": 3.6,
    "detail": "No WebMCP support detected - no document.modelContext / navigator.modelContext usage found"
   },
   {
    "id": "agentic-search-specific",
    "layer": "discovery",
    "status": "warning",
    "score": 1,
    "max": 3,
    "tier": "recommended",
    "est": 3.2,
    "detail": "Agent found 9 pages by name but no recognizable developer-resource type. Found on site but absent from this search sample: MCP server. Not found in this search sample: API docs, OpenAPI spec"
   },
   {
    "id": "json-error-responses",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 4,
    "tier": "required",
    "est": 2.9,
    "detail": "API does not return JSON error responses (or no API detected)"
   },
   {
    "id": "public-api",
    "layer": "usability",
    "status": "warning",
    "score": 3,
    "max": 7,
    "tier": "required",
    "est": 2.9,
    "detail": "API described in documentation at https://developer.squareup.com but no machine-verifiable API surface confirmed. Best-of-protocols score: 3/7."
   },
   {
    "id": "cli-tool",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": 2.2,
    "detail": "No CLI tool found"
   },
   {
    "id": "json-ld",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 4,
    "tier": "required",
    "est": 2.2,
    "detail": "No JSON-LD structured data found on homepage"
   },
   {
    "id": "content-no-js",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "required",
    "est": 1.7,
    "detail": "Homepage: Very little text content (35 chars) - likely JS-rendered, invisible to AI crawlers. No inner pages checked: the 5 sampled pages were skipped (forms, login pages, bot challenges, error pages,"
   },
   {
    "id": "ard-catalog",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 1.6,
    "detail": "No /.well-known/ard.json, no same-site rel=\"ard\" link, and no legacy /.well-known/ai-catalog.json"
   },
   {
    "id": "brand-search-accuracy",
    "layer": "discovery",
    "status": "warning",
    "score": 2,
    "max": 3,
    "tier": "required",
    "est": 1.6,
    "detail": "squareup.com ranks #6 for \"Square payment processing\" and appears 2 times in the top 10"
   },
   {
    "id": "mcp-registry-listed",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 1.6,
    "detail": "No verified entry in the official MCP Registry or on Smithery, and no npm or PyPI package of yours that runs as an MCP server. To pass,"
   },
   {
    "id": "npm-sdk-package",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 1.6,
    "detail": "No NPM or PyPI SDK package found"
   },
   {
    "id": "api-schema-analysis",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.5,
    "detail": "No API schema detected"
   },
   {
    "id": "function-calling-compat",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.5,
    "detail": "No API spec found - function calling requires discoverable endpoints"
   },
   {
    "id": "rest-sdk-packages",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 3,
    "tier": "recommended",
    "est": 1.5,
    "detail": "SDK packages mentioned at https://developer.squareup.com but none found in registries"
   },
   {
    "id": "chatgpt-app-listed",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.2,
    "detail": "Not found in ChatGPT app directory"
   },
   {
    "id": "wikipedia-presence",
    "layer": "discovery",
    "status": "warning",
    "score": 2,
    "max": 4,
    "tier": "recommended",
    "est": 1.2,
    "detail": "Wikidata Q110778747 (Block, Inc.) verified - draft a Wikipedia page with cited references to complete knowledge graph coverage"
   },
   {
    "id": "agent-discovery-file",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 1.1,
    "detail": "No agent discovery file found"
   },
   {
    "id": "json-ld-entity-linking",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.1,
    "detail": "No JSON-LD found - no entity linking possible"
   },
   {
    "id": "org-schema-completeness",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.1,
    "detail": "No JSON-LD found - Organization schema missing"
   },
   {
    "id": "schema-type-breadth",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.1,
    "detail": "No extended schema types found - AI can only answer basic questions about this entity"
   },
   {
    "id": "mcp-server",
    "layer": "usability",
    "status": "warning",
    "score": 5,
    "max": 6,
    "tier": "required",
    "est": 0.7,
    "detail": "MCP server detected at https://mcp.squareup.com/mcp; it requires authentication. Presence is verified (5/6), but Ora could not inspect its tools or verify access scopes without credentials."
   },
   {
    "id": "agent-auth-discovery-metadata",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 3,
    "tier": "recommended",
    "est": 0.6,
    "detail": "PRM + AS metadata both present (PRM discovered at https://mcp.squareup.com) (AS metadata fetched from advertised origin https://mcp.squareup.com) but AS metadata has no agent_auth block"
   },
   {
    "id": "agent-auth-endpoints-reachable",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "No agent_auth endpoint URIs found in AS metadata or /auth.md prose; nothing to probe"
   },
   {
    "id": "agent-instruction",
    "layer": "accessibility",
    "status": "warning",
    "score": 2,
    "max": 3,
    "tier": "required",
    "est": 0.6,
    "detail": "When-to-use guidance found at https://developer.squareup.com"
   },
   {
    "id": "auth-md-exists",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.6,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "auth-md-structure",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "llms-txt-links-resolve",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "1 of 5 probed llms.txt links do not resolve: https://squareup.com/us/en/licenses"
   },
   {
    "id": "mcp-multi-surface-coverage",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "You run an MCP server for your product, but not one for your documentation. This bonus needs two MCP servers: one for your product so agents can take actions,"
   },
   {
    "id": "mcp-server-card",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "No MCP server card found for https://mcp.squareup.com/mcp (checked /.well-known/mcp/server-card.json, the site's ai-catalog.json, servers[].card in mcp.json, and <server>/server-card)"
   },
   {
    "id": "sandbox-environment",
    "layer": "usability",
    "status": "warning",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "Testing/staging environment mentioned at https://squareup.com/help/us/en/article/5062-sign-in-and-out-of-square-point-of-sale but no dedicated sandbox found"
   },
   {
    "id": "a2a-agent-card",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.4,
    "detail": "No A2A agent card found at /.well-known/agent-card.json"
   },
   {
    "id": "api-catalog-rfc9727",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.4,
    "detail": "No /.well-known/api-catalog found (RFC 9727)"
   },
   {
    "id": "link-headers-discovery",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 0.2,
    "detail": "Link header present but no agent-relevant rel values (sitemap, describedby, alternate, service-desc)"
   },
   {
    "id": "markdown-negotiation-vary",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.2,
    "detail": "Homepage https://squareup.com does not meet the Markdown negotiation requirements: Accept: text/markdown returned text/html; charset=utf-8; Vary header missing Accept (got \"none\")"
   },
   {
    "id": "mcp-well-known-discovery",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.2,
    "detail": "MCP server at https://mcp.squareup.com/mcp - list its server card, hosted on your own domain, in /.well-known/ai-catalog.json so MCP clients can discover it"
   },
   {
    "id": "a2ui-support",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No A2UI or generative UI support detected"
   },
   {
    "id": "agent-mode-view",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No agent mode view detected at ?mode=agent (optional)"
   },
   {
    "id": "agent-plugins-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No Agent Plugins manifest (plugin.json) found in discovered repos"
   },
   {
    "id": "agent-rules-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Could not locate a public repo containing agent configs or rules. If our probes missed it, AI coding agents likely will too - link the repo from your homepage or docs so it's discoverable."
   },
   {
    "id": "agent-ua-markdown",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly."
   },
   {
    "id": "markdown-link-alternate",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No sampled page advertises a markdown alternate. Add <link rel=\"alternate\" type=\"text/markdown\" href=\"...\"> (or the equivalent Link response header) pointing at a markdown twin of the page."
   },
   {
    "id": "markdown-negotiation",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Missing markdown content negotiation. Homepage returned text/html when probed with Accept: text/markdown (expected text/markdown), and none of the well-known root paths (/llms.md, /auth.md, /agents.md, /developers.md, /api.md, /index.md,"
   },
   {
    "id": "markdown-url-fallback",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "Homepage does not support the .md suffix. Probed https://squareup.com/index.md and it did not return markdown (expected text/markdown content-type or a heading-led non-HTML body)."
   },
   {
    "id": "modular-llms-txt",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No section-level llms.txt found. Tried /docs/llms.txt, /api/llms.txt, /developers/llms.txt, /guides/llms.txt, /reference/llms.txt. This is a bonus check: it can add a point and never costs one."
   },
   {
    "id": "nlweb-ask",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No NLWeb-conformant /ask endpoint found via GET or POST"
   },
   {
    "id": "nlweb-schema-feeds",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No schemamap: directive in robots.txt"
   },
   {
    "id": "nlweb-streaming",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "NLWeb /ask does not support SSE streaming via GET or POST"
   },
   {
    "id": "pricing-md",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No pricing.md found - agents need machine-readable pricing to compare products and make purchase recommendations"
   },
   {
    "id": "registry-branding",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No registry branding (name, icon, description) found"
   },
   {
    "id": "skills-sh-listed",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No official skills self-published on skills.sh (3 community skills with potential relation to this domain found, but only self-published official skills count)"
   },
   {
    "id": "skills-sh-quality",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No official skills on skills.sh to evaluate"
   },
   {
    "id": "web-bot-auth-directory",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No /.well-known/http-message-signatures-directory found"
   }
  ],
  "seen": {
   "brand-search-accuracy": "squareup.com ranks #6 for \"Square payment processing\" and appears 2 times in the top 10",
   "wikipedia-presence": "Wikidata Q110778747 (Block, Inc.) verified - draft a Wikipedia page with cited references to complete knowledge graph coverage",
   "robots-ai-policy-quality": "AI search crawlers: allowed in 18 of 18 checks (3 crawlers on 6 pages). AI training crawlers: allowed in 12 of 12 checks (2 crawlers on 6 pages), not scored.",
   "noindex-directives": "No noindex on the homepage: no robots, googlebot or bingbot meta tag and no X-Robots-Tag header hides it from search.",
   "sitemap": "Valid sitemap found at https://squareup.com/us/en/sitemap.xml with 2070 entries",
   "content-no-js": "Homepage: Very little text content (35 chars) - likely JS-rendered, invisible to AI crawlers. No inner pages checked: the 5 sampled pages were skipped (forms, login pages, bot challenges, error pages,",
   "bot-detection": "Site accessible to 4 agent user-agents (ChatGPT-User, OAI-SearchBot, Claude-User, PerplexityBot).",
   "agent-discovery-file": "No agent discovery file found",
   "a2a-agent-card": "No A2A agent card found at /.well-known/agent-card.json",
   "mcp-well-known-discovery": "MCP server at https://mcp.squareup.com/mcp - list its server card, hosted on your own domain, in /.well-known/ai-catalog.json so MCP clients can discover it",
   "robots-agent-user-policy": "No applicable crawl or usage restriction found for 3 user-triggered agents (chatgpt-user, claude-user, perplexity-user) on 1 public page: https://squareup.com/. Declared policy only;",
   "llms-txt-exists": "Found the llms.txt at https://squareup.com/llms.txt.",
   "llms-txt-formatting": "The llms.txt is well-formatted: 204 lines with markdown links, 21,863 characters in total.",
   "json-ld": "No JSON-LD structured data found on homepage",
   "public-api-docs": "Documentation site found at https://developer.squareup.com",
   "metadata-completeness": "All metadata signals present: canonical URL, lang=\"en-US\", og:image, og:type",
   "page-token-budget": "All 6 measured pages fit an agent context budget (largest ~7K tokens)",
   "docs-auth-gate": "All 5 sampled pages are publicly readable (5 with substantive content)",
   "openapi-spec": "No OpenAPI/Swagger specification found",
   "developer-portal": "Developer documentation portal found at https://developer.squareup.com",
   "markdown-negotiation": "Missing markdown content negotiation. Homepage returned text/html when probed with Accept: text/markdown (expected text/markdown), and none of the well-known root paths (/llms.md, /auth.md, /agents.md, /developers.md,",
   "agent-ua-markdown": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly.",
   "agent-crawler-reachability": "Reachable to every agent we tested - ChatGPT-User: reachable, OAI-SearchBot: reachable, Claude-User: reachable, PerplexityBot: reachable",
   "public-api": "API described in documentation at https://developer.squareup.com but no machine-verifiable API surface confirmed. Best-of-protocols score: 3/7.",
   "oauth-support": "OAuth authorization server metadata at https://mcp.squareup.com",
   "mcp-server": "MCP server detected at https://mcp.squareup.com/mcp; it requires authentication. Presence is verified (5/6), but Ora could not inspect its tools or verify access scopes without credentials.",
   "webmcp": "No WebMCP support detected - no document.modelContext / navigator.modelContext usage found",
   "cli-tool": "No CLI tool found",
   "rest-sdk-packages": "SDK packages mentioned at https://developer.squareup.com but none found in registries",
   "nlweb-ask": "No NLWeb-conformant /ask endpoint found via GET or POST",
   "mpp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "x402-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "ucp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "acp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "ap2-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites"
  }
 },
 {
  "slug": "stripe",
  "name": "Stripe",
  "domain": "stripe.com",
  "finalUrl": "https://stripe.com/",
  "read": "2026-11-09",
  "scannedAt": "2026-11-09T12:01:03.034+00:00",
  "score": 74,
  "max": 100,
  "grade": "B",
  "category": "Payments & Fintech",
  "scoringVersion": 2,
  "rulesUrl": "https://ora.ai/api/ranker/releases/2/rules",
  "summary": "Stripe offers strong developer discovery and SDK packages, but lacks a published OpenAPI specification for agents to parse.",
  "layers": [
   {
    "id": "discovery",
    "name": "Discovery",
    "score": 15,
    "max": 18
   },
   {
    "id": "accessibility",
    "name": "Access",
    "score": 44,
    "max": 59
   },
   {
    "id": "usability",
    "name": "Usability",
    "score": 58,
    "max": 84
   },
   {
    "id": "payments",
    "name": "Payments",
    "score": 0,
    "max": 0
   }
  ],
  "checks": {
   "ard-catalog": [
    "fail",
    0,
    1
   ],
   "ai-catalog-published": [
    "na",
    0,
    1
   ],
   "ard-entries-valid": [
    "na",
    0,
    2
   ],
   "ard-trust-manifest": [
    "na",
    0,
    2
   ],
   "agentic-search-usecase": [
    "na",
    0,
    6
   ],
   "agentic-search-specific": [
    "pass",
    3,
    3
   ],
   "brand-search-accuracy": [
    "warning",
    1,
    3
   ],
   "wikipedia-presence": [
    "pass",
    4,
    4
   ],
   "robots-ai-policy-quality": [
    "pass",
    2,
    2
   ],
   "mcp-registry-listed": [
    "pass",
    1,
    1
   ],
   "npm-sdk-package": [
    "pass",
    1,
    1
   ],
   "agent-rules-repo": [
    "fail",
    0,
    1
   ],
   "agent-plugins-repo": [
    "fail",
    0,
    1
   ],
   "registry-branding": [
    "fail",
    0,
    2
   ],
   "chatgpt-app-listed": [
    "pass",
    2,
    2
   ],
   "noindex-directives": [
    "pass",
    1,
    1
   ],
   "sitemap": [
    "pass",
    2,
    2
   ],
   "content-no-js": [
    "warning",
    2,
    3
   ],
   "bot-detection": [
    "pass",
    2,
    2
   ],
   "agent-discovery-file": [
    "fail",
    0,
    2
   ],
   "agent-skills-index-v2": [
    "na",
    0,
    2
   ],
   "a2a-agent-card": [
    "fail",
    0,
    2
   ],
   "skills-sh-listed": [
    "pass",
    1,
    1
   ],
   "pricing-md": [
    "fail",
    0,
    2
   ],
   "nlweb-schema-feeds": [
    "fail",
    0,
    1
   ],
   "mcp-well-known-discovery": [
    "warning",
    1,
    2
   ],
   "agent-mode-view": [
    "pass",
    2,
    2
   ],
   "link-headers-discovery": [
    "fail",
    0,
    1
   ],
   "markdown-url-fallback": [
    "fail",
    0,
    2
   ],
   "modular-llms-txt": [
    "warning",
    0,
    1
   ],
   "sitemap-lastmod": [
    "fail",
    0,
    1
   ],
   "robots-agent-user-policy": [
    "pass",
    2,
    2
   ],
   "llms-txt-exists": [
    "pass",
    1,
    1
   ],
   "llms-txt-formatting": [
    "warning",
    1,
    2
   ],
   "json-ld": [
    "pass",
    4,
    4
   ],
   "pricing-info": [
    "pass",
    3,
    3
   ],
   "public-api-docs": [
    "pass",
    3,
    3
   ],
   "agent-instruction": [
    "pass",
    3,
    3
   ],
   "skills-sh-quality": [
    "pass",
    2,
    2
   ],
   "json-ld-entity-linking": [
    "pass",
    2,
    2
   ],
   "metadata-completeness": [
    "pass",
    2,
    2
   ],
   "org-schema-completeness": [
    "warning",
    1,
    2
   ],
   "schema-type-breadth": [
    "fail",
    0,
    2
   ],
   "trust-anchors": [
    "pass",
    2,
    2
   ],
   "llms-txt-links-resolve": [
    "pass",
    2,
    2
   ],
   "markdown-link-alternate": [
    "fail",
    0,
    1
   ],
   "markdown-frontmatter": [
    "na",
    0,
    1
   ],
   "redirect-hygiene": [
    "pass",
    1,
    1
   ],
   "page-token-budget": [
    "warning",
    0,
    1
   ],
   "code-fence-validity": [
    "pass",
    1,
    1
   ],
   "docs-auth-gate": [
    "pass",
    2,
    2
   ],
   "openapi-spec": [
    "fail",
    0,
    7
   ],
   "developer-portal": [
    "pass",
    6,
    6
   ],
   "api-catalog-rfc9727": [
    "fail",
    0,
    2
   ],
   "markdown-negotiation": [
    "fail",
    0,
    1
   ],
   "markdown-negotiation-vary": [
    "fail",
    0,
    1
   ],
   "agent-ua-markdown": [
    "pass",
    1,
    1
   ],
   "agent-crawler-reachability": [
    "pass",
    2,
    2
   ],
   "mcp-tool-descriptions": [
    "na",
    0,
    3
   ],
   "mcp-param-schemas": [
    "na",
    0,
    2
   ],
   "mcp-server-identity": [
    "na",
    0,
    1
   ],
   "mcp-tool-listing": [
    "na",
    0,
    3
   ],
   "mcp-tool-naming": [
    "na",
    0,
    2
   ],
   "public-api": [
    "pass",
    7,
    7
   ],
   "oauth-support": [
    "pass",
    5,
    5
   ],
   "scoped-permissions": [
    "warning",
    2,
    5
   ],
   "mcp-auth-mechanism": [
    "pass",
    2,
    2
   ],
   "mcp-oauth-metadata": [
    "pass",
    2,
    2
   ],
   "mcp-pkce-s256": [
    "pass",
    2,
    2
   ],
   "onboarding-friction": [
    "warning",
    1,
    2
   ],
   "web-bot-auth-directory": [
    "fail",
    0,
    2
   ],
   "oauth-protected-resource": [
    "pass",
    2,
    2
   ],
   "auth-md-exists": [
    "fail",
    0,
    2
   ],
   "auth-md-structure": [
    "fail",
    0,
    2
   ],
   "auth-md-walkthrough-simulation": [
    "na",
    0,
    2
   ],
   "agent-auth-discovery-metadata": [
    "warning",
    1,
    3
   ],
   "agent-auth-www-authenticate": [
    "pass",
    1,
    1
   ],
   "agent-auth-endpoints-reachable": [
    "fail",
    0,
    2
   ],
   "pap-discovery": [
    "na",
    0,
    2
   ],
   "pap-issuer-binding": [
    "na",
    0,
    2
   ],
   "pap-auth-config": [
    "na",
    0,
    2
   ],
   "pap-interfaces": [
    "na",
    0,
    2
   ],
   "pap-endpoint-enforcement": [
    "na",
    0,
    2
   ],
   "pap-cross-protocol": [
    "na",
    0,
    2
   ],
   "mcp-server": [
    "warning",
    5,
    6
   ],
   "mcp-error-handling": [
    "na",
    0,
    2
   ],
   "mcp-transport-modern": [
    "na",
    0,
    1
   ],
   "webmcp": [
    "warning",
    0,
    5
   ],
   "rate-limit-headers": [
    "fail",
    0,
    2
   ],
   "idempotency-key-support": [
    "warning",
    1,
    3
   ],
   "json-error-responses": [
    "pass",
    4,
    4
   ],
   "api-error-model": [
    "fail",
    0,
    3
   ],
   "api-versioning-policy": [
    "warning",
    1,
    3
   ],
   "pagination-shape": [
    "na",
    0,
    2
   ],
   "async-job-pattern": [
    "fail",
    0,
    2
   ],
   "cli-tool": [
    "pass",
    3,
    3
   ],
   "rest-sdk-packages": [
    "pass",
    3,
    3
   ],
   "nlweb-ask": [
    "fail",
    0,
    1
   ],
   "nlweb-streaming": [
    "fail",
    0,
    1
   ],
   "response-schema-coverage": [
    "na",
    0,
    2
   ],
   "mcp-tool-annotations": [
    "na",
    0,
    2
   ],
   "mcp-server-card": [
    "fail",
    0,
    2
   ],
   "mcp-multi-surface-coverage": [
    "fail",
    0,
    2
   ],
   "sandbox-environment": [
    "pass",
    2,
    2
   ],
   "batch-endpoints": [
    "warning",
    1,
    2
   ],
   "mcp-resource-listing": [
    "na",
    0,
    3
   ],
   "graphql-error-type-definition": [
    "na",
    0,
    3
   ],
   "graphql-versioning-policy": [
    "na",
    0,
    2
   ],
   "graphql-pagination-pattern": [
    "na",
    0,
    2
   ],
   "graphql-async-job-pattern": [
    "na",
    0,
    2
   ],
   "graphql-schema-completeness": [
    "na",
    0,
    3
   ],
   "graphql-batch-mutations": [
    "na",
    0,
    2
   ],
   "agent-friendly-404": [
    "warning",
    1,
    2
   ],
   "ax-document-structure": [
    "pass",
    3,
    3
   ],
   "ax-native-controls": [
    "pass",
    3,
    3
   ],
   "ax-accessible-names": [
    "pass",
    2,
    2
   ],
   "ax-form-labeling": [
    "pass",
    2,
    2
   ],
   "ax-tree-injection-safe": [
    "pass",
    2,
    2
   ],
   "mcp-app-registry": [
    "na",
    0,
    4
   ],
   "a2ui-support": [
    "na",
    0,
    2
   ],
   "mcp-apps-ui-quality": [
    "na",
    0,
    4
   ],
   "mcp-view-domain": [
    "na",
    0,
    4
   ],
   "mcp-view-csp": [
    "na",
    0,
    4
   ],
   "api-schema-analysis": [
    "fail",
    0,
    2
   ],
   "function-calling-compat": [
    "fail",
    0,
    2
   ],
   "mcp-resource-quality": [
    "na",
    0,
    3
   ],
   "mpp-support": [
    "warning",
    0,
    2
   ],
   "x402-support": [
    "warning",
    0,
    2
   ],
   "ucp-support": [
    "warning",
    0,
    3
   ],
   "acp-support": [
    "warning",
    0,
    3
   ],
   "acp-delegate-payment": [
    "warning",
    0,
    3
   ],
   "ap2-support": [
    "warning",
    0,
    3
   ]
  },
  "flagged": [
   {
    "id": "openapi-spec",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 7,
    "tier": "required",
    "est": 4,
    "detail": "No OpenAPI/Swagger specification found"
   },
   {
    "id": "webmcp",
    "layer": "usability",
    "status": "warning",
    "score": 0,
    "max": 5,
    "tier": "required",
    "est": 2.6,
    "detail": "No WebMCP support detected on the homepage. WebMCP is mentioned in the documentation at /docs, but a mention is not an implementation, so it earns no points."
   },
   {
    "id": "brand-search-accuracy",
    "layer": "discovery",
    "status": "warning",
    "score": 1,
    "max": 3,
    "tier": "required",
    "est": 2.5,
    "detail": "stripe.com ranks #7 for \"Stripe\" (searched your brand name alone: no main product term from your homepage qualified)"
   },
   {
    "id": "api-error-model",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": 1.6,
    "detail": "No typed error model found"
   },
   {
    "id": "scoped-permissions",
    "layer": "usability",
    "status": "warning",
    "score": 2,
    "max": 5,
    "tier": "recommended",
    "est": 1.6,
    "detail": "Scoped permissions described at https://docs.stripe.com, but no machine-readable scope declaration found (OpenAPI oauth2 scopes or RFC 9728 scopes_supported)"
   },
   {
    "id": "ard-catalog",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 1.2,
    "detail": "No /.well-known/ard.json, no same-site rel=\"ard\" link, and no legacy /.well-known/ai-catalog.json"
   },
   {
    "id": "agent-discovery-file",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 1.1,
    "detail": "No agent discovery file found"
   },
   {
    "id": "api-schema-analysis",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.1,
    "detail": "No API schema detected"
   },
   {
    "id": "api-versioning-policy",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 3,
    "tier": "recommended",
    "est": 1.1,
    "detail": "Deprecation or versioning policy mentioned in prose at https://docs.stripe.com - formalize in OpenAPI spec for full credit"
   },
   {
    "id": "async-job-pattern",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.1,
    "detail": "No async job pattern found"
   },
   {
    "id": "function-calling-compat",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.1,
    "detail": "No API spec found - function calling requires discoverable endpoints"
   },
   {
    "id": "idempotency-key-support",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 3,
    "tier": "recommended",
    "est": 1.1,
    "detail": "REST Idempotency-Key support mentioned in docs at https://docs.stripe.com - add formal Idempotency-Key header param to OpenAPI spec for full credit"
   },
   {
    "id": "rate-limit-headers",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.1,
    "detail": "No REST rate-limit headers found on probed endpoints"
   },
   {
    "id": "schema-type-breadth",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.1,
    "detail": "No extended schema types found - AI can only answer basic questions about this entity"
   },
   {
    "id": "content-no-js",
    "layer": "accessibility",
    "status": "warning",
    "score": 2,
    "max": 3,
    "tier": "required",
    "est": 0.6,
    "detail": "Homepage: 11002 chars with H1, but 2.8% content ratio is below the 5% target. 5 of 5 sampled inner pages have text without JavaScript."
   },
   {
    "id": "llms-txt-formatting",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "The llms.txt at https://stripe.com/llms.txt is well-formatted with markdown links, but at 69,878 characters it exceeds the 30,000-character recommendation for a navigation index."
   },
   {
    "id": "org-schema-completeness",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "Organization schema found but missing: address"
   },
   {
    "id": "page-token-budget",
    "layer": "accessibility",
    "status": "warning",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.6,
    "detail": "1 of 6 measured pages exceed ~25K tokens of extracted text: https://stripe.com/legal/organizations (~165K tokens). Agents truncate what does not fit - split these into focused pages."
   },
   {
    "id": "agent-friendly-404",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "The nonexistent path https://stripe.com/__ora-404-probe-ofo8521a correctly returns HTTP 404. Partial credit: no Markdown error body was detected."
   },
   {
    "id": "mcp-server",
    "layer": "usability",
    "status": "warning",
    "score": 5,
    "max": 6,
    "tier": "required",
    "est": 0.5,
    "detail": "MCP server detected at https://mcp.stripe.com; it requires authentication. Presence is verified (5/6), but Ora could not inspect its tools or verify access scopes without credentials."
   },
   {
    "id": "onboarding-friction",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "Onboarding signals described but not verified live: free tier available, self-serve key generation, sandbox/test environment"
   },
   {
    "id": "a2a-agent-card",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.3,
    "detail": "No A2A agent card found at /.well-known/agent-card.json"
   },
   {
    "id": "agent-auth-discovery-metadata",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 3,
    "tier": "recommended",
    "est": 0.3,
    "detail": "Only PRM present; spec calls for both PRM and AS metadata"
   },
   {
    "id": "agent-auth-endpoints-reachable",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.3,
    "detail": "No agent_auth endpoint URIs found in AS metadata or /auth.md prose; nothing to probe"
   },
   {
    "id": "api-catalog-rfc9727",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.3,
    "detail": "No /.well-known/api-catalog found (RFC 9727)"
   },
   {
    "id": "auth-md-exists",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.3,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "auth-md-structure",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.3,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "mcp-multi-surface-coverage",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.3,
    "detail": "You run an MCP server for your product, but not one for your documentation. This bonus needs two MCP servers: one for your product so agents can take actions,"
   },
   {
    "id": "mcp-server-card",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.3,
    "detail": "No MCP server card found for https://mcp.stripe.com (checked /.well-known/mcp/server-card.json, the site's ai-catalog.json, servers[].card in mcp.json, and <server>/server-card)"
   },
   {
    "id": "batch-endpoints",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.2,
    "detail": "Batch/bulk operations mentioned at https://docs.stripe.com but no formal OpenAPI definition found"
   },
   {
    "id": "link-headers-discovery",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 0.1,
    "detail": "No HTTP Link response headers (RFC 8288) found"
   },
   {
    "id": "markdown-negotiation-vary",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.1,
    "detail": "Homepage https://stripe.com does not meet the Markdown negotiation requirements: Accept: text/markdown returned text/html; charset=utf-8; Vary header missing Accept (got \"none\")"
   },
   {
    "id": "mcp-well-known-discovery",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.1,
    "detail": "MCP server at https://mcp.stripe.com - list its server card, hosted on your own domain, in /.well-known/ai-catalog.json so MCP clients can discover it"
   },
   {
    "id": "sitemap-lastmod",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.1,
    "detail": "None of the 500 sampled sitemap entries carries a lastmod date. Add <lastmod> (W3C datetime) so agents can prioritize fresh content."
   },
   {
    "id": "acp-delegate-payment",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": null,
    "detail": "Delegate Payment text signals (shared payment token); no reachable /agentic_commerce/delegate_payment endpoint on https://stripe.com or https://api.stripe.com;"
   },
   {
    "id": "acp-support",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 3,
    "tier": "required",
    "est": null,
    "detail": "ACP text signals (agentic commerce protocol, shared payment token, shared-payment-token) plus ACP request headers (API-Version / Idempotency-Key); no live /checkout_sessions endpoint on https://stripe.com or https://api.stripe.com;"
   },
   {
    "id": "agent-plugins-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No Agent Plugins manifest (plugin.json) found in discovered repos"
   },
   {
    "id": "agent-rules-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Could not locate a public repo containing agent configs or rules. If our probes missed it, AI coding agents likely will too - link the repo from your homepage or docs so it's discoverable."
   },
   {
    "id": "ap2-support",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": null,
    "detail": "No AP2 (Agent Payments Protocol) signals detected"
   },
   {
    "id": "markdown-link-alternate",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No sampled page advertises a markdown alternate. Add <link rel=\"alternate\" type=\"text/markdown\" href=\"...\"> (or the equivalent Link response header) pointing at a markdown twin of the page."
   },
   {
    "id": "markdown-negotiation",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Missing markdown content negotiation. Homepage returned text/html when probed with Accept: text/markdown (expected text/markdown), and none of the well-known root paths (/llms.md, /auth.md, /agents.md, /developers.md, /api.md, /index.md,"
   },
   {
    "id": "markdown-url-fallback",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "Homepage does not support the .md suffix. Probed https://stripe.com/index.md and it did not return markdown (expected text/markdown content-type or a heading-led non-HTML body)."
   },
   {
    "id": "modular-llms-txt",
    "layer": "accessibility",
    "status": "warning",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Only 1 section-level llms.txt found (docs). Add one for another section and link it from your root llms.txt to earn this bonus point."
   },
   {
    "id": "mpp-support",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": null,
    "detail": "No MPP (Machine Payments Protocol) support detected"
   },
   {
    "id": "nlweb-ask",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No NLWeb-conformant /ask endpoint found via GET or POST"
   },
   {
    "id": "nlweb-schema-feeds",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No schemamap: directive in robots.txt"
   },
   {
    "id": "nlweb-streaming",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "NLWeb /ask does not support SSE streaming via GET or POST"
   },
   {
    "id": "pricing-md",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No pricing.md found - agents need machine-readable pricing to compare products and make purchase recommendations"
   },
   {
    "id": "registry-branding",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No registry branding (name, icon, description) found"
   },
   {
    "id": "ucp-support",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 3,
    "tier": "required",
    "est": null,
    "detail": "text mentions (universal commerce protocol, checkout-sessions) but no /.well-known/ucp profile or commerce metadata"
   },
   {
    "id": "web-bot-auth-directory",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No /.well-known/http-message-signatures-directory found"
   },
   {
    "id": "x402-support",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": null,
    "detail": "No x402 payment protocol support detected"
   }
  ],
  "seen": {
   "brand-search-accuracy": "stripe.com ranks #7 for \"Stripe\" (searched your brand name alone: no main product term from your homepage qualified)",
   "wikipedia-presence": "Wikipedia \"Stripe, Inc.\" and Wikidata Q7624104 both verified - domain confirmed on both sources",
   "robots-ai-policy-quality": "AI search crawlers: allowed in 18 of 18 checks (3 crawlers on 6 pages). AI training crawlers: allowed in 12 of 12 checks (2 crawlers on 6 pages), not scored.",
   "noindex-directives": "No noindex on the homepage: no robots, googlebot or bingbot meta tag and no X-Robots-Tag header hides it from search.",
   "sitemap": "Valid sitemap found at https://stripe.com/sitemap/sitemap.xml with multiple sitemaps entries",
   "content-no-js": "Homepage: 11002 chars with H1, but 2.8% content ratio is below the 5% target. 5 of 5 sampled inner pages have text without JavaScript.",
   "bot-detection": "Site accessible to 4 agent user-agents (ChatGPT-User, OAI-SearchBot, Claude-User, PerplexityBot).",
   "agent-discovery-file": "No agent discovery file found",
   "a2a-agent-card": "No A2A agent card found at /.well-known/agent-card.json",
   "mcp-well-known-discovery": "MCP server at https://mcp.stripe.com - list its server card, hosted on your own domain, in /.well-known/ai-catalog.json so MCP clients can discover it",
   "robots-agent-user-policy": "No applicable crawl or usage restriction found for 3 user-triggered agents (chatgpt-user, claude-user, perplexity-user) on 1 public page: https://stripe.com/. Declared policy only;",
   "llms-txt-exists": "Found the llms.txt at https://stripe.com/llms.txt.",
   "llms-txt-formatting": "The llms.txt at https://stripe.com/llms.txt is well-formatted with markdown links, but at 69,878 characters it exceeds the 30,000-character recommendation for a navigation index.",
   "json-ld": "Rich JSON-LD identity: Organization with name, description, url, and sameAs/logo/address (1 block(s))",
   "public-api-docs": "Documentation site found at https://docs.stripe.com",
   "metadata-completeness": "All metadata signals present: canonical URL, lang=\"en-US\", og:image, og:type",
   "page-token-budget": "1 of 6 measured pages exceed ~25K tokens of extracted text: https://stripe.com/legal/organizations (~165K tokens). Agents truncate what does not fit - split these into focused pages.",
   "docs-auth-gate": "All 5 sampled pages are publicly readable (5 with substantive content)",
   "openapi-spec": "No OpenAPI/Swagger specification found",
   "developer-portal": "Developer portal found at https://docs.stripe.com",
   "markdown-negotiation": "Missing markdown content negotiation. Homepage returned text/html when probed with Accept: text/markdown (expected text/markdown), and none of the well-known root paths (/llms.md, /auth.md, /agents.md, /developers.md,",
   "agent-ua-markdown": "https://docs.stripe.com serves markdown to the ChatGPT-User User-Agent even with Accept: text/html - UA-sniffed agent responses in place",
   "agent-crawler-reachability": "Reachable to every agent we tested - ChatGPT-User: reachable, OAI-SearchBot: reachable, Claude-User: reachable, PerplexityBot: reachable",
   "public-api": "REST API documentation found at https://docs.stripe.com/sandboxes.md. Best-of-protocols score: 7/7.",
   "oauth-support": "OAuth authorization server metadata at https://access.stripe.com/mcp",
   "mcp-server": "MCP server detected at https://mcp.stripe.com; it requires authentication. Presence is verified (5/6), but Ora could not inspect its tools or verify access scopes without credentials.",
   "webmcp": "No WebMCP support detected on the homepage. WebMCP is mentioned in the documentation at /docs, but a mention is not an implementation, so it earns no points.",
   "cli-tool": "CLI package found on npm: @stripe/cli",
   "rest-sdk-packages": "SDK packages found across 4 ecosystems: npm, pypi, go, rubygems",
   "nlweb-ask": "No NLWeb-conformant /ask endpoint found via GET or POST",
   "mpp-support": "No MPP (Machine Payments Protocol) support detected",
   "x402-support": "No x402 payment protocol support detected",
   "ucp-support": "text mentions (universal commerce protocol, checkout-sessions) but no /.well-known/ucp profile or commerce metadata",
   "acp-support": "ACP text signals (agentic commerce protocol, shared payment token, shared-payment-token) plus ACP request headers (API-Version / Idempotency-Key);",
   "ap2-support": "No AP2 (Agent Payments Protocol) signals detected"
  }
 },
 {
  "slug": "supabase",
  "name": "Supabase",
  "domain": "supabase.com",
  "finalUrl": "https://supabase.com/",
  "read": "2026-11-09",
  "scannedAt": "2026-11-09T13:43:51.809+00:00",
  "score": 93,
  "max": 100,
  "grade": "A",
  "category": "Developer Tools",
  "scoringVersion": 2,
  "rulesUrl": "https://ora.ai/api/ranker/releases/2/rules",
  "summary": "Supabase offers strong discovery and access for agents, and adding WebMCP support would let browser agents act on its pages directly.",
  "layers": [
   {
    "id": "discovery",
    "name": "Discovery",
    "score": 19,
    "max": 19
   },
   {
    "id": "accessibility",
    "name": "Access",
    "score": 63,
    "max": 65
   },
   {
    "id": "usability",
    "name": "Usability",
    "score": 77,
    "max": 88
   },
   {
    "id": "payments",
    "name": "Payments",
    "score": 0,
    "max": 0
   }
  ],
  "checks": {
   "ard-catalog": [
    "pass",
    1,
    1
   ],
   "ai-catalog-published": [
    "pass",
    1,
    1
   ],
   "ard-entries-valid": [
    "pass",
    2,
    2
   ],
   "ard-trust-manifest": [
    "fail",
    0,
    2
   ],
   "agentic-search-usecase": [
    "na",
    0,
    6
   ],
   "agentic-search-specific": [
    "pass",
    3,
    3
   ],
   "brand-search-accuracy": [
    "pass",
    3,
    3
   ],
   "wikipedia-presence": [
    "warning",
    2,
    4
   ],
   "robots-ai-policy-quality": [
    "pass",
    2,
    2
   ],
   "mcp-registry-listed": [
    "pass",
    1,
    1
   ],
   "npm-sdk-package": [
    "pass",
    1,
    1
   ],
   "agent-rules-repo": [
    "pass",
    1,
    1
   ],
   "agent-plugins-repo": [
    "fail",
    0,
    1
   ],
   "registry-branding": [
    "pass",
    2,
    2
   ],
   "chatgpt-app-listed": [
    "pass",
    2,
    2
   ],
   "noindex-directives": [
    "pass",
    1,
    1
   ],
   "sitemap": [
    "pass",
    2,
    2
   ],
   "content-no-js": [
    "warning",
    2,
    3
   ],
   "bot-detection": [
    "pass",
    2,
    2
   ],
   "agent-discovery-file": [
    "pass",
    2,
    2
   ],
   "agent-skills-index-v2": [
    "pass",
    2,
    2
   ],
   "a2a-agent-card": [
    "fail",
    0,
    2
   ],
   "skills-sh-listed": [
    "pass",
    1,
    1
   ],
   "pricing-md": [
    "pass",
    2,
    2
   ],
   "nlweb-schema-feeds": [
    "fail",
    0,
    1
   ],
   "mcp-well-known-discovery": [
    "pass",
    2,
    2
   ],
   "agent-mode-view": [
    "fail",
    0,
    2
   ],
   "link-headers-discovery": [
    "pass",
    1,
    1
   ],
   "markdown-url-fallback": [
    "warning",
    1,
    2
   ],
   "modular-llms-txt": [
    "warning",
    0,
    1
   ],
   "sitemap-lastmod": [
    "pass",
    1,
    1
   ],
   "robots-agent-user-policy": [
    "pass",
    2,
    2
   ],
   "llms-txt-exists": [
    "pass",
    1,
    1
   ],
   "llms-txt-formatting": [
    "pass",
    2,
    2
   ],
   "json-ld": [
    "pass",
    4,
    4
   ],
   "pricing-info": [
    "pass",
    3,
    3
   ],
   "public-api-docs": [
    "pass",
    3,
    3
   ],
   "agent-instruction": [
    "pass",
    3,
    3
   ],
   "skills-sh-quality": [
    "pass",
    2,
    2
   ],
   "json-ld-entity-linking": [
    "pass",
    2,
    2
   ],
   "metadata-completeness": [
    "pass",
    2,
    2
   ],
   "org-schema-completeness": [
    "pass",
    2,
    2
   ],
   "schema-type-breadth": [
    "warning",
    1,
    2
   ],
   "trust-anchors": [
    "pass",
    2,
    2
   ],
   "llms-txt-links-resolve": [
    "pass",
    2,
    2
   ],
   "markdown-link-alternate": [
    "pass",
    1,
    1
   ],
   "markdown-frontmatter": [
    "fail",
    0,
    1
   ],
   "redirect-hygiene": [
    "pass",
    1,
    1
   ],
   "page-token-budget": [
    "pass",
    1,
    1
   ],
   "code-fence-validity": [
    "pass",
    1,
    1
   ],
   "docs-auth-gate": [
    "pass",
    2,
    2
   ],
   "openapi-spec": [
    "pass",
    7,
    7
   ],
   "developer-portal": [
    "pass",
    6,
    6
   ],
   "api-catalog-rfc9727": [
    "pass",
    2,
    2
   ],
   "markdown-negotiation": [
    "pass",
    1,
    1
   ],
   "markdown-negotiation-vary": [
    "pass",
    1,
    1
   ],
   "agent-ua-markdown": [
    "fail",
    0,
    1
   ],
   "agent-crawler-reachability": [
    "pass",
    2,
    2
   ],
   "mcp-tool-descriptions": [
    "na",
    0,
    3
   ],
   "mcp-param-schemas": [
    "na",
    0,
    2
   ],
   "mcp-server-identity": [
    "na",
    0,
    1
   ],
   "mcp-tool-listing": [
    "na",
    0,
    3
   ],
   "mcp-tool-naming": [
    "na",
    0,
    2
   ],
   "public-api": [
    "pass",
    7,
    7
   ],
   "oauth-support": [
    "pass",
    5,
    5
   ],
   "scoped-permissions": [
    "pass",
    5,
    5
   ],
   "mcp-auth-mechanism": [
    "pass",
    2,
    2
   ],
   "mcp-oauth-metadata": [
    "pass",
    2,
    2
   ],
   "mcp-pkce-s256": [
    "pass",
    2,
    2
   ],
   "onboarding-friction": [
    "warning",
    1,
    2
   ],
   "web-bot-auth-directory": [
    "fail",
    0,
    2
   ],
   "oauth-protected-resource": [
    "pass",
    2,
    2
   ],
   "auth-md-exists": [
    "pass",
    2,
    2
   ],
   "auth-md-structure": [
    "fail",
    0,
    2
   ],
   "auth-md-walkthrough-simulation": [
    "warning",
    1,
    2
   ],
   "agent-auth-discovery-metadata": [
    "warning",
    1,
    3
   ],
   "agent-auth-www-authenticate": [
    "pass",
    1,
    1
   ],
   "agent-auth-endpoints-reachable": [
    "fail",
    0,
    2
   ],
   "pap-discovery": [
    "na",
    0,
    2
   ],
   "pap-issuer-binding": [
    "na",
    0,
    2
   ],
   "pap-auth-config": [
    "na",
    0,
    2
   ],
   "pap-interfaces": [
    "na",
    0,
    2
   ],
   "pap-endpoint-enforcement": [
    "na",
    0,
    2
   ],
   "pap-cross-protocol": [
    "na",
    0,
    2
   ],
   "mcp-server": [
    "warning",
    5,
    6
   ],
   "mcp-error-handling": [
    "na",
    0,
    2
   ],
   "mcp-transport-modern": [
    "na",
    0,
    1
   ],
   "webmcp": [
    "fail",
    0,
    5
   ],
   "rate-limit-headers": [
    "fail",
    0,
    2
   ],
   "idempotency-key-support": [
    "pass",
    3,
    3
   ],
   "json-error-responses": [
    "pass",
    4,
    4
   ],
   "api-error-model": [
    "pass",
    3,
    3
   ],
   "api-versioning-policy": [
    "pass",
    3,
    3
   ],
   "pagination-shape": [
    "pass",
    2,
    2
   ],
   "async-job-pattern": [
    "fail",
    0,
    2
   ],
   "cli-tool": [
    "pass",
    3,
    3
   ],
   "rest-sdk-packages": [
    "pass",
    3,
    3
   ],
   "nlweb-ask": [
    "fail",
    0,
    1
   ],
   "nlweb-streaming": [
    "fail",
    0,
    1
   ],
   "response-schema-coverage": [
    "pass",
    2,
    2
   ],
   "mcp-tool-annotations": [
    "na",
    0,
    2
   ],
   "mcp-server-card": [
    "pass",
    2,
    2
   ],
   "mcp-multi-surface-coverage": [
    "fail",
    0,
    2
   ],
   "sandbox-environment": [
    "fail",
    0,
    2
   ],
   "batch-endpoints": [
    "fail",
    0,
    2
   ],
   "mcp-resource-listing": [
    "na",
    0,
    3
   ],
   "graphql-error-type-definition": [
    "na",
    0,
    3
   ],
   "graphql-versioning-policy": [
    "na",
    0,
    2
   ],
   "graphql-pagination-pattern": [
    "na",
    0,
    2
   ],
   "graphql-async-job-pattern": [
    "na",
    0,
    2
   ],
   "graphql-schema-completeness": [
    "na",
    0,
    3
   ],
   "graphql-batch-mutations": [
    "na",
    0,
    2
   ],
   "agent-friendly-404": [
    "pass",
    2,
    2
   ],
   "ax-document-structure": [
    "pass",
    3,
    3
   ],
   "ax-native-controls": [
    "pass",
    3,
    3
   ],
   "ax-accessible-names": [
    "pass",
    2,
    2
   ],
   "ax-form-labeling": [
    "na",
    0,
    2
   ],
   "ax-tree-injection-safe": [
    "pass",
    2,
    2
   ],
   "mcp-app-registry": [
    "na",
    0,
    4
   ],
   "a2ui-support": [
    "na",
    0,
    2
   ],
   "mcp-apps-ui-quality": [
    "na",
    0,
    4
   ],
   "mcp-view-domain": [
    "na",
    0,
    4
   ],
   "mcp-view-csp": [
    "na",
    0,
    4
   ],
   "api-schema-analysis": [
    "pass",
    2,
    2
   ],
   "function-calling-compat": [
    "pass",
    2,
    2
   ],
   "mcp-resource-quality": [
    "na",
    0,
    3
   ],
   "mpp-support": [
    "na",
    0,
    2
   ],
   "x402-support": [
    "na",
    0,
    2
   ],
   "ucp-support": [
    "na",
    0,
    3
   ],
   "acp-support": [
    "na",
    0,
    3
   ],
   "acp-delegate-payment": [
    "na",
    0,
    3
   ],
   "ap2-support": [
    "na",
    0,
    3
   ]
  },
  "flagged": [
   {
    "id": "webmcp",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 5,
    "tier": "required",
    "est": 2.5,
    "detail": "No WebMCP support detected - no document.modelContext / navigator.modelContext usage found (scanned 39 of 39 same-origin script bundle(s) for modelContext registrations)"
   },
   {
    "id": "async-job-pattern",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1,
    "detail": "No async job pattern found"
   },
   {
    "id": "rate-limit-headers",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1,
    "detail": "No REST rate-limit headers found on probed endpoints"
   },
   {
    "id": "content-no-js",
    "layer": "accessibility",
    "status": "warning",
    "score": 2,
    "max": 3,
    "tier": "required",
    "est": 0.5,
    "detail": "Homepage: 7041 chars with H1, but 0.7% content ratio is below the 5% target. 5 of 5 sampled inner pages have text without JavaScript."
   },
   {
    "id": "mcp-server",
    "layer": "usability",
    "status": "warning",
    "score": 5,
    "max": 6,
    "tier": "required",
    "est": 0.5,
    "detail": "MCP server detected at https://mcp.supabase.com/mcp; it requires authentication. Presence is verified (5/6), but Ora could not inspect its tools or verify access scopes without credentials."
   },
   {
    "id": "onboarding-friction",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "Onboarding signals described but not verified live: free tier available, self-serve key generation, sandbox/test environment"
   },
   {
    "id": "schema-type-breadth",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "Some extended schema types found: Service - add 2 more types that match what the homepage shows, for full coverage"
   },
   {
    "id": "agent-auth-discovery-metadata",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 3,
    "tier": "recommended",
    "est": 0.1,
    "detail": "PRM + AS metadata both present (PRM discovered at https://api.supabase.com) (AS metadata fetched from advertised origin https://api.supabase.com) but AS metadata has no agent_auth block"
   },
   {
    "id": "agent-auth-endpoints-reachable",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.1,
    "detail": "No agent_auth endpoint URIs found in AS metadata or /auth.md prose; nothing to probe"
   },
   {
    "id": "auth-md-structure",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.1,
    "detail": "auth.md at https://supabase.com/auth.md lacks WorkOS spec anchors (looked for oauth-protected-resource, oauth-authorization-server, agent_auth, and identity_endpoint etc.) - reads as a generic auth page"
   },
   {
    "id": "auth-md-walkthrough-simulation",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.1,
    "detail": "Static fallback: PRM + AS metadata both reachable but AS metadata lacks an agent_auth block; walkthrough cannot identify a registration template"
   },
   {
    "id": "batch-endpoints",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.1,
    "detail": "No batch or bulk endpoint pattern found"
   },
   {
    "id": "mcp-multi-surface-coverage",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.1,
    "detail": "You run an MCP server for your product, but not one for your documentation. This bonus needs two MCP servers: one for your product so agents can take actions,"
   },
   {
    "id": "sandbox-environment",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.1,
    "detail": "No sandbox or test environment found"
   },
   {
    "id": "a2a-agent-card",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0,
    "detail": "No A2A agent card found at /.well-known/agent-card.json"
   },
   {
    "id": "agent-mode-view",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "?mode=agent returns same content as homepage (no dedicated agent view)"
   },
   {
    "id": "agent-plugins-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No Agent Plugins manifest (plugin.json) found in discovered repos"
   },
   {
    "id": "agent-ua-markdown",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly."
   },
   {
    "id": "ard-trust-manifest",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0,
    "detail": "No entry carries a trustManifest"
   },
   {
    "id": "markdown-frontmatter",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "None of the 2 served markdown docs opens with a --- frontmatter block. Add title, description, canonical, and last-updated so agents get metadata without scraping."
   },
   {
    "id": "markdown-url-fallback",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "Partial markdown fallback support. Homepage (https://supabase.com/index.md) returns markdown, but 1 of 3 sampled content pages do not: https://supabase.com/alternatives/supabase-vs-auth0.md. To earn full credit,"
   },
   {
    "id": "modular-llms-txt",
    "layer": "accessibility",
    "status": "warning",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Only 1 section-level llms.txt found (docs). Add one for another section and link it from your root llms.txt to earn this bonus point."
   },
   {
    "id": "nlweb-ask",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No NLWeb-conformant /ask endpoint found via GET or POST"
   },
   {
    "id": "nlweb-schema-feeds",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No schemamap: directive in robots.txt"
   },
   {
    "id": "nlweb-streaming",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "NLWeb /ask does not support SSE streaming via GET or POST"
   },
   {
    "id": "web-bot-auth-directory",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No /.well-known/http-message-signatures-directory found"
   },
   {
    "id": "wikipedia-presence",
    "layer": "discovery",
    "status": "warning",
    "score": 2,
    "max": 4,
    "tier": "recommended",
    "est": 0,
    "detail": "Wikidata Q136776342 (Supabase) verified - draft a Wikipedia page with cited references to complete knowledge graph coverage"
   }
  ],
  "seen": {
   "brand-search-accuracy": "supabase.com ranks #2 for \"Supabase Postgres development platform\"",
   "wikipedia-presence": "Wikidata Q136776342 (Supabase) verified - draft a Wikipedia page with cited references to complete knowledge graph coverage",
   "robots-ai-policy-quality": "AI search crawlers: allowed in 18 of 18 checks (3 crawlers on 6 pages). AI training crawlers: allowed in 12 of 12 checks (2 crawlers on 6 pages), not scored.",
   "noindex-directives": "No noindex on the homepage: no robots, googlebot or bingbot meta tag and no X-Robots-Tag header hides it from search.",
   "sitemap": "Valid sitemap found at https://supabase.com/sitemap.xml with multiple sitemaps entries",
   "content-no-js": "Homepage: 7041 chars with H1, but 0.7% content ratio is below the 5% target. 5 of 5 sampled inner pages have text without JavaScript.",
   "bot-detection": "Site accessible to 4 agent user-agents (ChatGPT-User, OAI-SearchBot, Claude-User, PerplexityBot).",
   "agent-discovery-file": "Agent Skills index (agentskills.io) found at /.well-known/agent-skills/index.json with 2 skill(s)",
   "a2a-agent-card": "No A2A agent card found at /.well-known/agent-card.json",
   "mcp-well-known-discovery": "MCP server discoverable via server-card.json at /.well-known/mcp/",
   "robots-agent-user-policy": "No applicable crawl or usage restriction found for 3 user-triggered agents (chatgpt-user, claude-user, perplexity-user) on 1 public page: https://supabase.com/. Declared policy only;",
   "llms-txt-exists": "Found the llms.txt at https://supabase.com/llms.txt.",
   "llms-txt-formatting": "The llms.txt is well-formatted: 48 lines with markdown links, 3,298 characters in total.",
   "json-ld": "Rich JSON-LD identity: Organization with name, description, url, and sameAs/logo/address (4 block(s))",
   "public-api-docs": "Documentation site found at https://supabase.com",
   "metadata-completeness": "All metadata signals present: canonical URL, lang=\"en\", og:image, og:type",
   "page-token-budget": "All 8 measured pages fit an agent context budget (largest ~2K tokens)",
   "docs-auth-gate": "All 5 sampled pages are publicly readable (5 with substantive content)",
   "openapi-spec": "OpenAPI spec found at https://api.supabase.com/api/v1-json (version: 3.0.0)",
   "developer-portal": "Developer portal found at https://supabase.com",
   "markdown-negotiation": "Path-suffix markdown docs served with text/markdown content-type: /auth.md, /index.md",
   "agent-ua-markdown": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly.",
   "agent-crawler-reachability": "Reachable to every agent we tested - ChatGPT-User: reachable, OAI-SearchBot: reachable, Claude-User: reachable, PerplexityBot: reachable",
   "public-api": "Documented REST API detected; endpoints require authentication (API key / OAuth), which is expected for agent access. Best-of-protocols score: 7/7.",
   "oauth-support": "OAuth authorization server metadata at https://api.supabase.com",
   "mcp-server": "MCP server detected at https://mcp.supabase.com/mcp; it requires authentication. Presence is verified (5/6), but Ora could not inspect its tools or verify access scopes without credentials.",
   "webmcp": "No WebMCP support detected - no document.modelContext / navigator.modelContext usage found (scanned 39 of 39 same-origin script bundle(s) for modelContext registrations)",
   "cli-tool": "CLI package found on npm: supabase",
   "rest-sdk-packages": "SDK packages found across 3 ecosystems: npm, pypi, go",
   "nlweb-ask": "No NLWeb-conformant /ask endpoint found via GET or POST",
   "mpp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "x402-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "ucp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "acp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "ap2-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites"
  }
 },
 {
  "slug": "twilio",
  "name": "Twilio",
  "domain": "twilio.com",
  "finalUrl": "https://www.twilio.com/en-us",
  "read": "2026-11-09",
  "scannedAt": "2026-11-08T17:14:38.451+00:00",
  "score": 85,
  "max": 100,
  "grade": "B",
  "category": "Communication & Support",
  "scoringVersion": null,
  "rulesUrl": null,
  "summary": "Twilio offers a strong OpenAPI spec and broad developer discoverability, but lacks declared OAuth scopes and scoped-permission documentation for agents.",
  "layers": [
   {
    "id": "discovery",
    "name": "Discovery",
    "score": 14,
    "max": 16
   },
   {
    "id": "accessibility",
    "name": "Access",
    "score": 52,
    "max": 61
   },
   {
    "id": "usability",
    "name": "Usability",
    "score": 64,
    "max": 77
   },
   {
    "id": "payments",
    "name": "Payments",
    "score": 0,
    "max": 0
   }
  ],
  "checks": {
   "ard-catalog": [
    "fail",
    0,
    1
   ],
   "ai-catalog-published": [
    "na",
    0,
    1
   ],
   "ard-entries-valid": [
    "na",
    0,
    2
   ],
   "ard-trust-manifest": [
    "na",
    0,
    2
   ],
   "agentic-search-usecase": [
    "na",
    0,
    6
   ],
   "agentic-search-specific": [
    "pass",
    3,
    3
   ],
   "brand-search-accuracy": [
    "pass",
    3,
    3
   ],
   "wikipedia-presence": [
    "pass",
    4,
    4
   ],
   "robots-ai-policy-quality": [
    "pass",
    2,
    2
   ],
   "mcp-registry-listed": [
    "fail",
    0,
    1
   ],
   "npm-sdk-package": [
    "pass",
    1,
    1
   ],
   "agent-rules-repo": [
    "fail",
    0,
    1
   ],
   "agent-plugins-repo": [
    "fail",
    0,
    1
   ],
   "registry-branding": [
    "warning",
    1,
    2
   ],
   "chatgpt-app-listed": [
    "fail",
    0,
    2
   ],
   "noindex-directives": [
    "pass",
    1,
    1
   ],
   "sitemap": [
    "pass",
    2,
    2
   ],
   "content-no-js": [
    "warning",
    2,
    3
   ],
   "bot-detection": [
    "pass",
    2,
    2
   ],
   "agent-discovery-file": [
    "fail",
    0,
    2
   ],
   "agent-skills-index-v2": [
    "na",
    0,
    2
   ],
   "a2a-agent-card": [
    "fail",
    0,
    2
   ],
   "skills-sh-listed": [
    "pass",
    1,
    1
   ],
   "pricing-md": [
    "warning",
    1,
    2
   ],
   "nlweb-schema-feeds": [
    "fail",
    0,
    1
   ],
   "mcp-well-known-discovery": [
    "pass",
    2,
    2
   ],
   "agent-mode-view": [
    "fail",
    0,
    2
   ],
   "link-headers-discovery": [
    "fail",
    0,
    1
   ],
   "markdown-url-fallback": [
    "fail",
    0,
    2
   ],
   "modular-llms-txt": [
    "warning",
    0,
    1
   ],
   "sitemap-lastmod": [
    "pass",
    1,
    1
   ],
   "robots-agent-user-policy": [
    "pass",
    2,
    2
   ],
   "llms-txt-exists": [
    "pass",
    1,
    1
   ],
   "llms-txt-formatting": [
    "warning",
    1,
    2
   ],
   "json-ld": [
    "pass",
    4,
    4
   ],
   "pricing-info": [
    "pass",
    3,
    3
   ],
   "public-api-docs": [
    "pass",
    3,
    3
   ],
   "agent-instruction": [
    "pass",
    3,
    3
   ],
   "skills-sh-quality": [
    "pass",
    2,
    2
   ],
   "json-ld-entity-linking": [
    "pass",
    2,
    2
   ],
   "metadata-completeness": [
    "pass",
    2,
    2
   ],
   "org-schema-completeness": [
    "warning",
    1,
    2
   ],
   "schema-type-breadth": [
    "fail",
    0,
    2
   ],
   "trust-anchors": [
    "pass",
    2,
    2
   ],
   "llms-txt-links-resolve": [
    "pass",
    2,
    2
   ],
   "markdown-link-alternate": [
    "fail",
    0,
    1
   ],
   "markdown-frontmatter": [
    "na",
    0,
    1
   ],
   "redirect-hygiene": [
    "pass",
    1,
    1
   ],
   "page-token-budget": [
    "pass",
    1,
    1
   ],
   "code-fence-validity": [
    "pass",
    1,
    1
   ],
   "docs-auth-gate": [
    "pass",
    2,
    2
   ],
   "openapi-spec": [
    "warning",
    5,
    7
   ],
   "developer-portal": [
    "pass",
    6,
    6
   ],
   "api-catalog-rfc9727": [
    "fail",
    0,
    2
   ],
   "markdown-negotiation": [
    "fail",
    0,
    1
   ],
   "markdown-negotiation-vary": [
    "fail",
    0,
    1
   ],
   "agent-ua-markdown": [
    "fail",
    0,
    1
   ],
   "agent-crawler-reachability": [
    "pass",
    2,
    2
   ],
   "mcp-tool-descriptions": [
    "na",
    0,
    3
   ],
   "mcp-param-schemas": [
    "na",
    0,
    2
   ],
   "mcp-server-identity": [
    "na",
    0,
    1
   ],
   "mcp-tool-listing": [
    "na",
    0,
    3
   ],
   "mcp-tool-naming": [
    "na",
    0,
    2
   ],
   "public-api": [
    "pass",
    7,
    7
   ],
   "oauth-support": [
    "pass",
    5,
    5
   ],
   "scoped-permissions": [
    "fail",
    0,
    5
   ],
   "mcp-auth-mechanism": [
    "warning",
    1,
    2
   ],
   "mcp-oauth-metadata": [
    "pass",
    2,
    2
   ],
   "mcp-pkce-s256": [
    "pass",
    2,
    2
   ],
   "onboarding-friction": [
    "pass",
    2,
    2
   ],
   "web-bot-auth-directory": [
    "fail",
    0,
    2
   ],
   "oauth-protected-resource": [
    "fail",
    0,
    2
   ],
   "auth-md-exists": [
    "fail",
    0,
    2
   ],
   "auth-md-structure": [
    "fail",
    0,
    2
   ],
   "auth-md-walkthrough-simulation": [
    "na",
    0,
    2
   ],
   "agent-auth-discovery-metadata": [
    "fail",
    0,
    3
   ],
   "agent-auth-www-authenticate": [
    "fail",
    0,
    1
   ],
   "agent-auth-endpoints-reachable": [
    "fail",
    0,
    2
   ],
   "pap-discovery": [
    "na",
    0,
    2
   ],
   "pap-issuer-binding": [
    "na",
    0,
    2
   ],
   "pap-auth-config": [
    "na",
    0,
    2
   ],
   "pap-interfaces": [
    "na",
    0,
    2
   ],
   "pap-endpoint-enforcement": [
    "na",
    0,
    2
   ],
   "pap-cross-protocol": [
    "na",
    0,
    2
   ],
   "mcp-server": [
    "pass",
    6,
    6
   ],
   "mcp-error-handling": [
    "na",
    0,
    2
   ],
   "mcp-transport-modern": [
    "na",
    0,
    1
   ],
   "webmcp": [
    "fail",
    0,
    5
   ],
   "rate-limit-headers": [
    "na",
    0,
    2
   ],
   "idempotency-key-support": [
    "na",
    0,
    3
   ],
   "json-error-responses": [
    "pass",
    4,
    4
   ],
   "api-error-model": [
    "na",
    0,
    3
   ],
   "api-versioning-policy": [
    "na",
    0,
    3
   ],
   "pagination-shape": [
    "na",
    0,
    2
   ],
   "async-job-pattern": [
    "na",
    0,
    2
   ],
   "cli-tool": [
    "pass",
    3,
    3
   ],
   "rest-sdk-packages": [
    "pass",
    3,
    3
   ],
   "nlweb-ask": [
    "fail",
    0,
    1
   ],
   "nlweb-streaming": [
    "fail",
    0,
    1
   ],
   "response-schema-coverage": [
    "na",
    0,
    2
   ],
   "mcp-tool-annotations": [
    "na",
    0,
    2
   ],
   "mcp-server-card": [
    "fail",
    0,
    2
   ],
   "mcp-multi-surface-coverage": [
    "warning",
    1,
    2
   ],
   "sandbox-environment": [
    "warning",
    0,
    2
   ],
   "batch-endpoints": [
    "na",
    0,
    2
   ],
   "mcp-resource-listing": [
    "na",
    0,
    3
   ],
   "graphql-error-type-definition": [
    "na",
    0,
    3
   ],
   "graphql-versioning-policy": [
    "na",
    0,
    2
   ],
   "graphql-pagination-pattern": [
    "na",
    0,
    2
   ],
   "graphql-async-job-pattern": [
    "na",
    0,
    2
   ],
   "graphql-schema-completeness": [
    "na",
    0,
    3
   ],
   "graphql-batch-mutations": [
    "na",
    0,
    2
   ],
   "agent-friendly-404": [
    "warning",
    1,
    2
   ],
   "ax-document-structure": [
    "pass",
    3,
    3
   ],
   "ax-native-controls": [
    "pass",
    3,
    3
   ],
   "ax-accessible-names": [
    "pass",
    2,
    2
   ],
   "ax-form-labeling": [
    "na",
    0,
    2
   ],
   "ax-tree-injection-safe": [
    "pass",
    2,
    2
   ],
   "mcp-app-registry": [
    "na",
    0,
    4
   ],
   "a2ui-support": [
    "na",
    0,
    2
   ],
   "mcp-apps-ui-quality": [
    "na",
    0,
    4
   ],
   "mcp-view-domain": [
    "na",
    0,
    4
   ],
   "mcp-view-csp": [
    "na",
    0,
    4
   ],
   "api-schema-analysis": [
    "warning",
    1,
    2
   ],
   "function-calling-compat": [
    "warning",
    1,
    2
   ],
   "mcp-resource-quality": [
    "na",
    0,
    3
   ],
   "mpp-support": [
    "warning",
    0,
    2
   ],
   "x402-support": [
    "warning",
    0,
    2
   ],
   "ucp-support": [
    "warning",
    0,
    3
   ],
   "acp-support": [
    "warning",
    0,
    3
   ],
   "acp-delegate-payment": [
    "warning",
    0,
    3
   ],
   "ap2-support": [
    "warning",
    0,
    3
   ]
  },
  "flagged": [
   {
    "id": "scoped-permissions",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 5,
    "tier": "recommended",
    "est": 2.9,
    "detail": "No declared OAuth scopes, security schemes, or scoped-permission documentation found"
   },
   {
    "id": "webmcp",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 5,
    "tier": "required",
    "est": 2.9,
    "detail": "No WebMCP support detected - no document.modelContext / navigator.modelContext usage found (scanned 7 of 7 same-origin script bundle(s) for modelContext registrations)"
   },
   {
    "id": "ard-catalog",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 1.4,
    "detail": "No /.well-known/ard.json, no same-site rel=\"ard\" link, and no legacy /.well-known/ai-catalog.json"
   },
   {
    "id": "mcp-registry-listed",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 1.4,
    "detail": "No verified entry in the official MCP Registry or on Smithery, and no npm or PyPI package of yours that runs as an MCP server. To pass,"
   },
   {
    "id": "agent-discovery-file",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 1.1,
    "detail": "No agent discovery file found"
   },
   {
    "id": "openapi-spec",
    "layer": "accessibility",
    "status": "warning",
    "score": 5,
    "max": 7,
    "tier": "required",
    "est": 1.1,
    "detail": "OpenAPI spec (YAML) found at https://www.twilio.com/en-us/blog/products/launches/introducing-twilios-openapi-specification-ga.md"
   },
   {
    "id": "schema-type-breadth",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.1,
    "detail": "No extended schema types found - AI can only answer basic questions about this entity"
   },
   {
    "id": "agent-friendly-404",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "The nonexistent path https://twilio.com/__ora-404-probe-eellhds1 correctly returns HTTP 404. Partial credit: no Markdown error body was detected."
   },
   {
    "id": "api-schema-analysis",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "REST: OpenAPI spec found but failed to parse for complexity analysis"
   },
   {
    "id": "function-calling-compat",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "API spec found but couldn't validate function calling compatibility"
   },
   {
    "id": "content-no-js",
    "layer": "accessibility",
    "status": "warning",
    "score": 2,
    "max": 3,
    "tier": "required",
    "est": 0.5,
    "detail": "Homepage: 7846 chars with H1, but heading hierarchy skips H2 to H4. 5 of 5 sampled inner pages have text without JavaScript."
   },
   {
    "id": "llms-txt-formatting",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "The llms.txt contains markdown links and has 3811 lines, but it doesn't start with a markdown heading."
   },
   {
    "id": "org-schema-completeness",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "Organization schema found but missing: contactPoint, address"
   },
   {
    "id": "agent-auth-discovery-metadata",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": 0.3,
    "detail": "Neither /.well-known/oauth-protected-resource nor /.well-known/oauth-authorization-server found. Probed: twilio.com, www.twilio.com, api.twilio.com."
   },
   {
    "id": "chatgpt-app-listed",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.3,
    "detail": "Not found in ChatGPT app directory"
   },
   {
    "id": "a2a-agent-card",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.2,
    "detail": "No A2A agent card found at /.well-known/agent-card.json"
   },
   {
    "id": "agent-auth-endpoints-reachable",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.2,
    "detail": "No agent_auth endpoint URIs found in AS metadata or /auth.md prose; nothing to probe"
   },
   {
    "id": "api-catalog-rfc9727",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.2,
    "detail": "No /.well-known/api-catalog found (RFC 9727)"
   },
   {
    "id": "auth-md-exists",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.2,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "auth-md-structure",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.2,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "mcp-server-card",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.2,
    "detail": "No MCP server card found for https://support.twilio.com/mcp (checked /.well-known/mcp/server-card.json, the site's ai-catalog.json, servers[].card in mcp.json, and <server>/server-card)"
   },
   {
    "id": "oauth-protected-resource",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.2,
    "detail": "No /.well-known/oauth-protected-resource found (RFC 9728)"
   },
   {
    "id": "sandbox-environment",
    "layer": "usability",
    "status": "warning",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.2,
    "detail": "Sandbox/test environment mentioned in llms.txt but no sandbox surface verified"
   },
   {
    "id": "agent-auth-www-authenticate",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.1,
    "detail": "No 401 with WWW-Authenticate: Bearer resource_metadata=... found. Probed [https://twilio.com/api, https://twilio.com/api/v1, https://twilio.com/v1, https://twilio.com/v2, https://twilio.com/agent/identity, https://twilio.com/agent/auth,"
   },
   {
    "id": "link-headers-discovery",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 0.1,
    "detail": "No HTTP Link response headers (RFC 8288) found"
   },
   {
    "id": "markdown-negotiation-vary",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.1,
    "detail": "Homepage https://twilio.com does not meet the Markdown negotiation requirements: Accept: text/markdown returned text/html;charset=utf-8; Vary header missing Accept (got \"accept-encoding\")"
   },
   {
    "id": "mcp-auth-mechanism",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.1,
    "detail": "docs MCP is gated behind authentication - this defeats the purpose of a docs MCP for agent discovery"
   },
   {
    "id": "mcp-error-handling",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.1,
    "detail": "product MCP returns error for invalid tool call but missing structured code or message"
   },
   {
    "id": "mcp-multi-surface-coverage",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.1,
    "detail": "You run both MCP servers, but the documentation one (https://support.twilio.com/mcp) is not reachable. Fix it so agents can use it."
   },
   {
    "id": "mcp-server-card",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.1,
    "detail": "MCP server card found at https://www.twilio.com/.well-known/mcp/server-card.json but missing tools[]"
   },
   {
    "id": "mcp-server-identity",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.1,
    "detail": "product MCP identity incomplete - missing: instructions"
   },
   {
    "id": "acp-delegate-payment",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": null,
    "detail": "No ACP Delegate Payment signals detected"
   },
   {
    "id": "acp-support",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 3,
    "tier": "required",
    "est": null,
    "detail": "no ACP (Agentic Commerce Protocol) signals detected"
   },
   {
    "id": "agent-mode-view",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "?mode=agent returns same content as homepage (no dedicated agent view)"
   },
   {
    "id": "agent-plugins-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No Agent Plugins manifest (plugin.json) found in discovered repos"
   },
   {
    "id": "agent-rules-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Could not locate a public repo containing agent configs or rules. If our probes missed it, AI coding agents likely will too - link the repo from your homepage or docs so it's discoverable."
   },
   {
    "id": "agent-ua-markdown",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly."
   },
   {
    "id": "ap2-support",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": null,
    "detail": "No AP2 (Agent Payments Protocol) signals detected"
   },
   {
    "id": "markdown-link-alternate",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No sampled page advertises a markdown alternate. Add <link rel=\"alternate\" type=\"text/markdown\" href=\"...\"> (or the equivalent Link response header) pointing at a markdown twin of the page."
   },
   {
    "id": "markdown-negotiation",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Missing markdown content negotiation. Homepage returned text/html when probed with Accept: text/markdown (expected text/markdown), and none of the well-known root paths (/llms.md, /auth.md, /agents.md, /developers.md, /api.md, /index.md,"
   },
   {
    "id": "markdown-url-fallback",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "Homepage does not support the .md suffix. Probed https://twilio.com/index.md and it did not return markdown (expected text/markdown content-type or a heading-led non-HTML body)."
   },
   {
    "id": "modular-llms-txt",
    "layer": "accessibility",
    "status": "warning",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Only 1 section-level llms.txt found (docs). Add one for another section and link it from your root llms.txt to earn this bonus point."
   },
   {
    "id": "mpp-support",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": null,
    "detail": "No MPP (Machine Payments Protocol) support detected"
   },
   {
    "id": "nlweb-ask",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No NLWeb-conformant /ask endpoint found via GET or POST"
   },
   {
    "id": "nlweb-schema-feeds",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No schemamap: directive in robots.txt"
   },
   {
    "id": "nlweb-streaming",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "NLWeb /ask does not support SSE streaming via GET or POST"
   },
   {
    "id": "pricing-md",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "pricing.md found at /pricing.md (206 lines), but it does not open with a # heading - start it with a # title so agents read it as markdown"
   },
   {
    "id": "registry-branding",
    "layer": "discovery",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "MCP manifest has name and description but no icon at /.well-known/mcp/server-card.json"
   },
   {
    "id": "ucp-support",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 3,
    "tier": "required",
    "est": null,
    "detail": "no UCP (Universal Commerce Protocol) signals detected"
   },
   {
    "id": "web-bot-auth-directory",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No /.well-known/http-message-signatures-directory found"
   },
   {
    "id": "x402-support",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": null,
    "detail": "No x402 payment protocol support detected"
   }
  ],
  "seen": {
   "brand-search-accuracy": "twilio.com ranks #5 for \"Twilio\" (searched your brand name alone: no main product term from your homepage qualified)",
   "wikipedia-presence": "Wikipedia \"Twilio\" and Wikidata Q7858039 both verified - domain confirmed on both sources",
   "robots-ai-policy-quality": "AI search crawlers: allowed in 3 of 3 checks (3 crawlers on 1 page). AI training crawlers: allowed in 0 of 2 checks (2 crawlers on 1 page), not scored.",
   "noindex-directives": "No noindex on the homepage: no robots, googlebot or bingbot meta tag and no X-Robots-Tag header hides it from search.",
   "sitemap": "Valid sitemap found at /sitemap.xml with multiple sitemaps entries",
   "content-no-js": "Homepage: 7846 chars with H1, but heading hierarchy skips H2 to H4. 5 of 5 sampled inner pages have text without JavaScript.",
   "bot-detection": "Site accessible to 4 agent user-agents (ChatGPT-User, OAI-SearchBot, Claude-User, PerplexityBot).",
   "agent-discovery-file": "No agent discovery file found",
   "a2a-agent-card": "No A2A agent card found at /.well-known/agent-card.json",
   "mcp-well-known-discovery": "MCP server discoverable at standard path /.well-known/mcp",
   "robots-agent-user-policy": "No applicable crawl or usage restriction found for 3 user-triggered agents (chatgpt-user, claude-user, perplexity-user) on 1 public page: https://twilio.com/. Declared policy only;",
   "llms-txt-exists": "Found the llms.txt at https://www.twilio.com/llms.txt.",
   "llms-txt-formatting": "The llms.txt contains markdown links and has 3811 lines, but it doesn't start with a markdown heading.",
   "json-ld": "Rich JSON-LD identity: Organization with name, description, url, and sameAs/logo/address (2 block(s))",
   "public-api-docs": "Documentation site found at https://www.twilio.com",
   "metadata-completeness": "All metadata signals present: canonical URL, lang=\"en\", og:image, og:type",
   "page-token-budget": "All 6 measured pages fit an agent context budget (largest ~3K tokens)",
   "docs-auth-gate": "All 5 sampled pages are publicly readable (5 with substantive content)",
   "openapi-spec": "OpenAPI spec (YAML) found at https://www.twilio.com/en-us/blog/products/launches/introducing-twilios-openapi-specification-ga.md",
   "developer-portal": "Developer portal found at /developers",
   "markdown-negotiation": "Missing markdown content negotiation. Homepage returned text/html when probed with Accept: text/markdown (expected text/markdown), and none of the well-known root paths (/llms.md, /auth.md, /agents.md, /developers.md,",
   "agent-ua-markdown": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly.",
   "agent-crawler-reachability": "Reachable to every agent we tested - ChatGPT-User: reachable, OAI-SearchBot: reachable, Claude-User: reachable, PerplexityBot: reachable",
   "public-api": "REST API documentation found at https://www.twilio.com/en-us/voice/api.md. Best-of-protocols score: 7/7.",
   "oauth-support": "OAuth authorization server metadata at https://support.twilio.com/mcp/oauth",
   "mcp-server": "MCP server connected via Streamable HTTP - twilio-com-public-web-mcp v0.1.0 (protocol 2025-11-25)",
   "webmcp": "No WebMCP support detected - no document.modelContext / navigator.modelContext usage found (scanned 7 of 7 same-origin script bundle(s) for modelContext registrations)",
   "cli-tool": "CLI package found on npm: twilio-cli",
   "rest-sdk-packages": "SDK packages found across 4 ecosystems: npm, pypi, go, rubygems",
   "nlweb-ask": "No NLWeb-conformant /ask endpoint found via GET or POST",
   "mpp-support": "No MPP (Machine Payments Protocol) support detected",
   "x402-support": "No x402 payment protocol support detected",
   "ucp-support": "no UCP (Universal Commerce Protocol) signals detected",
   "acp-support": "no ACP (Agentic Commerce Protocol) signals detected",
   "ap2-support": "No AP2 (Agent Payments Protocol) signals detected"
  }
 },
 {
  "slug": "typeform",
  "name": "Typeform",
  "domain": "typeform.com",
  "finalUrl": "https://www.typeform.com/",
  "read": "2026-11-09",
  "scannedAt": "2026-09-20T15:02:43.04+00:00",
  "score": 69,
  "max": 100,
  "grade": "C",
  "category": "Productivity",
  "scoringVersion": null,
  "rulesUrl": null,
  "summary": "Typeform offers solid developer resource discoverability, but lacks an OpenAPI specification.",
  "layers": [
   {
    "id": "discovery",
    "name": "Discovery",
    "score": 15,
    "max": 17
   },
   {
    "id": "accessibility",
    "name": "Access",
    "score": 45,
    "max": 60
   },
   {
    "id": "usability",
    "name": "Usability",
    "score": 39,
    "max": 70
   },
   {
    "id": "payments",
    "name": "Payments",
    "score": 0,
    "max": 0
   }
  ],
  "checks": {
   "ard-catalog": [
    "fail",
    0,
    1
   ],
   "ai-catalog-published": [
    "na",
    0,
    1
   ],
   "ard-entries-valid": [
    "na",
    0,
    2
   ],
   "ard-trust-manifest": [
    "na",
    0,
    2
   ],
   "agentic-search-usecase": [
    "na",
    0,
    6
   ],
   "agentic-search-specific": [
    "pass",
    3,
    3
   ],
   "brand-search-accuracy": [
    "pass",
    3,
    3
   ],
   "wikipedia-presence": [
    "pass",
    4,
    4
   ],
   "robots-ai-policy-quality": [
    "pass",
    2,
    2
   ],
   "mcp-registry-listed": [
    "fail",
    0,
    1
   ],
   "npm-sdk-package": [
    "pass",
    1,
    1
   ],
   "agent-rules-repo": [
    "fail",
    0,
    1
   ],
   "agent-plugins-repo": [
    "fail",
    0,
    1
   ],
   "skills-sh-listed": [
    "fail",
    0,
    1
   ],
   "registry-branding": [
    "fail",
    0,
    2
   ],
   "chatgpt-app-listed": [
    "pass",
    2,
    2
   ],
   "sitemap": [
    "pass",
    2,
    2
   ],
   "content-no-js": [
    "warning",
    1,
    3
   ],
   "bot-detection": [
    "pass",
    2,
    2
   ],
   "agent-discovery-file": [
    "fail",
    0,
    2
   ],
   "agent-skills-index-v2": [
    "na",
    0,
    2
   ],
   "a2a-agent-card": [
    "fail",
    0,
    2
   ],
   "pricing-md": [
    "fail",
    0,
    2
   ],
   "nlweb-schema-feeds": [
    "fail",
    0,
    1
   ],
   "mcp-well-known-discovery": [
    "warning",
    1,
    2
   ],
   "agent-mode-view": [
    "fail",
    0,
    2
   ],
   "link-headers-discovery": [
    "fail",
    0,
    1
   ],
   "markdown-url-fallback": [
    "fail",
    0,
    2
   ],
   "modular-llms-txt": [
    "fail",
    0,
    1
   ],
   "sitemap-lastmod": [
    "pass",
    1,
    1
   ],
   "robots-agent-user-policy": [
    "pass",
    2,
    2
   ],
   "llms-txt-exists": [
    "pass",
    1,
    1
   ],
   "llms-txt-formatting": [
    "pass",
    2,
    2
   ],
   "json-ld": [
    "pass",
    4,
    4
   ],
   "pricing-info": [
    "pass",
    3,
    3
   ],
   "public-api-docs": [
    "pass",
    3,
    3
   ],
   "agent-instruction": [
    "pass",
    3,
    3
   ],
   "skills-sh-quality": [
    "fail",
    0,
    2
   ],
   "json-ld-entity-linking": [
    "warning",
    1,
    2
   ],
   "metadata-completeness": [
    "pass",
    2,
    2
   ],
   "org-schema-completeness": [
    "warning",
    1,
    2
   ],
   "schema-type-breadth": [
    "fail",
    0,
    2
   ],
   "trust-anchors": [
    "pass",
    2,
    2
   ],
   "llms-txt-links-resolve": [
    "pass",
    2,
    2
   ],
   "markdown-link-alternate": [
    "fail",
    0,
    1
   ],
   "markdown-frontmatter": [
    "pass",
    1,
    1
   ],
   "redirect-hygiene": [
    "pass",
    1,
    1
   ],
   "page-token-budget": [
    "pass",
    1,
    1
   ],
   "code-fence-validity": [
    "pass",
    1,
    1
   ],
   "docs-auth-gate": [
    "pass",
    2,
    2
   ],
   "openapi-spec": [
    "fail",
    0,
    7
   ],
   "developer-portal": [
    "pass",
    6,
    6
   ],
   "api-catalog-rfc9727": [
    "fail",
    0,
    2
   ],
   "markdown-negotiation": [
    "pass",
    1,
    1
   ],
   "markdown-negotiation-vary": [
    "warning",
    0,
    1
   ],
   "agent-ua-markdown": [
    "fail",
    0,
    1
   ],
   "agent-crawler-reachability": [
    "pass",
    2,
    2
   ],
   "mcp-tool-descriptions": [
    "na",
    0,
    3
   ],
   "mcp-param-schemas": [
    "na",
    0,
    2
   ],
   "mcp-server-identity": [
    "na",
    0,
    1
   ],
   "mcp-tool-listing": [
    "na",
    0,
    3
   ],
   "mcp-tool-naming": [
    "na",
    0,
    2
   ],
   "public-api": [
    "warning",
    3,
    7
   ],
   "oauth-support": [
    "pass",
    5,
    5
   ],
   "scoped-permissions": [
    "fail",
    0,
    5
   ],
   "mcp-auth-mechanism": [
    "warning",
    1,
    2
   ],
   "mcp-oauth-metadata": [
    "pass",
    2,
    2
   ],
   "mcp-pkce-s256": [
    "pass",
    2,
    2
   ],
   "onboarding-friction": [
    "pass",
    2,
    2
   ],
   "web-bot-auth-directory": [
    "fail",
    0,
    2
   ],
   "oauth-protected-resource": [
    "pass",
    2,
    2
   ],
   "auth-md-exists": [
    "fail",
    0,
    2
   ],
   "auth-md-structure": [
    "fail",
    0,
    2
   ],
   "auth-md-walkthrough-simulation": [
    "na",
    0,
    2
   ],
   "agent-auth-discovery-metadata": [
    "warning",
    1,
    3
   ],
   "agent-auth-www-authenticate": [
    "pass",
    1,
    1
   ],
   "agent-auth-endpoints-reachable": [
    "fail",
    0,
    2
   ],
   "mcp-server": [
    "warning",
    2,
    6
   ],
   "mcp-error-handling": [
    "na",
    0,
    2
   ],
   "mcp-transport-modern": [
    "na",
    0,
    1
   ],
   "webmcp": [
    "fail",
    0,
    5
   ],
   "rate-limit-headers": [
    "na",
    0,
    2
   ],
   "idempotency-key-support": [
    "na",
    0,
    3
   ],
   "json-error-responses": [
    "fail",
    0,
    4
   ],
   "api-error-model": [
    "na",
    0,
    3
   ],
   "api-versioning-policy": [
    "na",
    0,
    3
   ],
   "pagination-shape": [
    "na",
    0,
    2
   ],
   "async-job-pattern": [
    "na",
    0,
    2
   ],
   "cli-tool": [
    "pass",
    3,
    3
   ],
   "rest-sdk-packages": [
    "na",
    0,
    3
   ],
   "nlweb-ask": [
    "fail",
    0,
    1
   ],
   "nlweb-streaming": [
    "fail",
    0,
    1
   ],
   "response-schema-coverage": [
    "na",
    0,
    2
   ],
   "mcp-tool-annotations": [
    "na",
    0,
    2
   ],
   "mcp-server-card": [
    "fail",
    0,
    2
   ],
   "mcp-multi-surface-coverage": [
    "warning",
    1,
    2
   ],
   "sandbox-environment": [
    "warning",
    0,
    2
   ],
   "batch-endpoints": [
    "na",
    0,
    2
   ],
   "mcp-resource-listing": [
    "na",
    0,
    3
   ],
   "graphql-error-type-definition": [
    "na",
    0,
    3
   ],
   "graphql-versioning-policy": [
    "na",
    0,
    2
   ],
   "graphql-pagination-pattern": [
    "na",
    0,
    2
   ],
   "graphql-async-job-pattern": [
    "na",
    0,
    2
   ],
   "graphql-schema-completeness": [
    "na",
    0,
    3
   ],
   "graphql-batch-mutations": [
    "na",
    0,
    2
   ],
   "agent-friendly-404": [
    "warning",
    1,
    2
   ],
   "ax-document-structure": [
    "na",
    0,
    3
   ],
   "ax-native-controls": [
    "pass",
    3,
    3
   ],
   "ax-accessible-names": [
    "pass",
    2,
    2
   ],
   "ax-form-labeling": [
    "na",
    0,
    2
   ],
   "ax-tree-injection-safe": [
    "pass",
    2,
    2
   ],
   "mcp-app-registry": [
    "fail",
    0,
    4
   ],
   "a2ui-support": [
    "fail",
    0,
    2
   ],
   "mcp-apps-ui-quality": [
    "na",
    0,
    4
   ],
   "mcp-view-domain": [
    "na",
    0,
    4
   ],
   "mcp-view-csp": [
    "na",
    0,
    4
   ],
   "api-schema-analysis": [
    "fail",
    0,
    2
   ],
   "function-calling-compat": [
    "fail",
    0,
    2
   ],
   "mcp-resource-quality": [
    "na",
    0,
    3
   ],
   "mpp-support": [
    "na",
    0,
    2
   ],
   "x402-support": [
    "na",
    0,
    2
   ],
   "ucp-support": [
    "na",
    0,
    3
   ],
   "acp-support": [
    "na",
    0,
    3
   ],
   "acp-delegate-payment": [
    "na",
    0,
    3
   ],
   "ap2-support": [
    "na",
    0,
    3
   ]
  },
  "flagged": [
   {
    "id": "openapi-spec",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 7,
    "tier": "required",
    "est": 3.9,
    "detail": "No OpenAPI/Swagger specification found"
   },
   {
    "id": "scoped-permissions",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 5,
    "tier": "recommended",
    "est": 3.2,
    "detail": "No declared OAuth scopes, security schemes, or scoped-permission documentation found"
   },
   {
    "id": "webmcp",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 5,
    "tier": "required",
    "est": 3.2,
    "detail": "No WebMCP support detected - no tool-attribute forms and no document.modelContext / navigator.modelContext usage found"
   },
   {
    "id": "json-error-responses",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 4,
    "tier": "required",
    "est": 2.5,
    "detail": "API does not return JSON error responses (or no API detected)"
   },
   {
    "id": "mcp-app-registry",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 4,
    "tier": "recommended",
    "est": 2.5,
    "detail": "No MCP Apps support detected - this product has an in-agent UI surface but exposes no ui:// resources or tool UI metadata for agents to render."
   },
   {
    "id": "mcp-server",
    "layer": "usability",
    "status": "warning",
    "score": 2,
    "max": 6,
    "tier": "required",
    "est": 2.5,
    "detail": "MCP endpoint found at /mcp but response is not valid JSON"
   },
   {
    "id": "public-api",
    "layer": "usability",
    "status": "warning",
    "score": 3,
    "max": 7,
    "tier": "required",
    "est": 2.5,
    "detail": "API described in documentation at https://www.typeform.com but no machine-verifiable API surface confirmed. Best-of-protocols score: 3/7."
   },
   {
    "id": "api-schema-analysis",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.3,
    "detail": "No API schema detected"
   },
   {
    "id": "ard-catalog",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 1.3,
    "detail": "No /.well-known/ard.json (and no legacy /.well-known/ai-catalog.json)"
   },
   {
    "id": "function-calling-compat",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.3,
    "detail": "No API spec found - function calling requires discoverable endpoints"
   },
   {
    "id": "mcp-registry-listed",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 1.3,
    "detail": "No bi-directionally verified MCP registry entry found. To pass, either publish the server under your own domain/npm scope, get a verified Smithery listing with non-zero usage, or link the registry entry from your homepage or docs."
   },
   {
    "id": "agent-discovery-file",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 1.1,
    "detail": "No agent discovery file found"
   },
   {
    "id": "content-no-js",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 3,
    "tier": "required",
    "est": 1.1,
    "detail": "3786 chars of readable text, but no H1 tag"
   },
   {
    "id": "schema-type-breadth",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.1,
    "detail": "No extended schema types found - AI can only answer basic questions about this entity"
   },
   {
    "id": "agent-friendly-404",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "The nonexistent path https://typeform.com/__ora-404-probe-p128vq7t correctly returns HTTP 404. Partial credit: no Markdown error body was detected."
   },
   {
    "id": "json-ld-entity-linking",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "Entity linking to linkedin.com - add more authority profiles (Wikipedia, Wikidata, LinkedIn, GitHub)"
   },
   {
    "id": "org-schema-completeness",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "Organization schema found but missing: contactPoint"
   },
   {
    "id": "agent-auth-discovery-metadata",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 3,
    "tier": "recommended",
    "est": 0.5,
    "detail": "PRM + AS metadata both present (PRM discovered at https://api.typeform.com) (AS metadata fetched from advertised origin https://api.typeform.com) but AS metadata has no agent_auth block"
   },
   {
    "id": "agent-auth-endpoints-reachable",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "No agent_auth endpoint URIs found in AS metadata or /auth.md prose; nothing to probe"
   },
   {
    "id": "auth-md-exists",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.5,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "auth-md-structure",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "mcp-server-card",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "No MCP server card found at /.well-known/mcp/server-card.json"
   },
   {
    "id": "mcp-server-card",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "No MCP server card found at /.well-known/mcp/server-card.json"
   },
   {
    "id": "sandbox-environment",
    "layer": "usability",
    "status": "warning",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "Testing/staging environment mentioned at https://www.typeform.com/guides but no dedicated sandbox found"
   },
   {
    "id": "a2a-agent-card",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.3,
    "detail": "No A2A agent card found at /.well-known/agent-card.json"
   },
   {
    "id": "api-catalog-rfc9727",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.3,
    "detail": "No /.well-known/api-catalog found (RFC 9727)"
   },
   {
    "id": "mcp-auth-mechanism",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.3,
    "detail": "docs MCP is gated behind authentication - this defeats the purpose of a docs MCP for agent discovery"
   },
   {
    "id": "mcp-multi-surface-coverage",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.3,
    "detail": "You run both MCP servers, but the documentation one (https://help.typeform.com/mcp) is not reachable. Fix it so agents can use it."
   },
   {
    "id": "link-headers-discovery",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 0.1,
    "detail": "Link header present but no agent-relevant rel values (sitemap, describedby, alternate, service-desc)"
   },
   {
    "id": "markdown-negotiation-vary",
    "layer": "accessibility",
    "status": "warning",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.1,
    "detail": "Homepage https://typeform.com serves both Markdown and HTML, but Vary header missing Accept (got \"accept-encoding\") - CDNs may cache the wrong variant"
   },
   {
    "id": "mcp-well-known-discovery",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.1,
    "detail": "MCP server at https://mcp.typeform.com - consider adding /.well-known/mcp for standard discovery"
   },
   {
    "id": "a2ui-support",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No A2UI or generative UI support detected"
   },
   {
    "id": "agent-mode-view",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "?mode=agent returns same content as homepage (no dedicated agent view)"
   },
   {
    "id": "agent-plugins-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No Agent Plugins manifest (plugin.json) found in discovered repos"
   },
   {
    "id": "agent-rules-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Could not locate a public repo containing agent configs or rules. If our probes missed it, AI coding agents likely will too - link the repo from your homepage or docs so it's discoverable."
   },
   {
    "id": "agent-ua-markdown",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No probed bot User-Agent (GPTBot, ClaudeBot, ChatGPT-User, PerplexityBot, Google-Extended, Applebot-Extended, ora-agent, DeepSeekBot) receives markdown when requesting HTML."
   },
   {
    "id": "markdown-link-alternate",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No sampled page advertises a markdown alternate. Add <link rel=\"alternate\" type=\"text/markdown\" href=\"...\"> (or the equivalent Link response header) pointing at a markdown twin of the page."
   },
   {
    "id": "markdown-url-fallback",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "Homepage does not support the .md suffix. Probed https://typeform.com/index.md and it did not return markdown (expected text/markdown content-type or a heading-led non-HTML body)."
   },
   {
    "id": "modular-llms-txt",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No section-level llms.txt files found (optional)"
   },
   {
    "id": "nlweb-ask",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No NLWeb-conformant /ask endpoint found via GET or POST"
   },
   {
    "id": "nlweb-schema-feeds",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No schemamap: directive in robots.txt"
   },
   {
    "id": "nlweb-streaming",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "NLWeb /ask does not support SSE streaming via GET or POST"
   },
   {
    "id": "pricing-md",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No pricing.md found - agents need machine-readable pricing to compare products and make purchase recommendations"
   },
   {
    "id": "registry-branding",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No registry branding (name, icon, description) found"
   },
   {
    "id": "skills-sh-listed",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No official skills self-published on skills.sh (100 community skills with potential relation to this domain found, but only self-published official skills count)"
   },
   {
    "id": "skills-sh-quality",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No official skills on skills.sh to evaluate"
   },
   {
    "id": "web-bot-auth-directory",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No /.well-known/http-message-signatures-directory found"
   }
  ],
  "seen": {
   "brand-search-accuracy": "typeform.com appears at position #3 in a clean brand-name search for \"Typeform productivity\" (5 total matches)",
   "wikipedia-presence": "Wikipedia \"Typeform (service)\" and Wikidata Q24910393 both verified - domain confirmed on both sources",
   "robots-ai-policy-quality": "Training: 2/2. Search: 3/3 page/crawler pairs permitted. No applicable crawl or usage restriction found for 5 training and search crawlers (gptbot, claudebot, oai-searchbot, claude-searchbot,",
   "sitemap": "Valid sitemap found at https://www.typeform.com/sitemap.xml with 4371 entries",
   "content-no-js": "3786 chars of readable text, but no H1 tag",
   "bot-detection": "Site accessible to 6 AI agent user-agents",
   "agent-discovery-file": "No agent discovery file found",
   "a2a-agent-card": "No A2A agent card found at /.well-known/agent-card.json",
   "mcp-well-known-discovery": "MCP server at https://mcp.typeform.com - consider adding /.well-known/mcp for standard discovery",
   "robots-agent-user-policy": "No applicable crawl or usage restriction found for 3 user-triggered agents (chatgpt-user, claude-user, perplexity-user) on 1 public page: https://typeform.com/. Declared policy only;",
   "llms-txt-exists": "Found the llms.txt at https://www.typeform.com/llms.txt.",
   "llms-txt-formatting": "The llms.txt is well-formatted: 43 lines with markdown links, 4,720 characters in total.",
   "json-ld": "Rich JSON-LD identity: Organization with name, description, url, and sameAs/logo/address (1 block(s))",
   "public-api-docs": "Documentation site found at https://www.typeform.com",
   "metadata-completeness": "All metadata signals present: canonical URL, lang=\"en\", og:image, og:type",
   "page-token-budget": "All 6 measured pages fit an agent context budget (largest ~4K tokens)",
   "docs-auth-gate": "All 5 sampled pages are publicly readable (5 with substantive content)",
   "openapi-spec": "No OpenAPI/Swagger specification found",
   "developer-portal": "Developer portal found at /developers",
   "markdown-negotiation": "Returns markdown when requested via Accept header",
   "agent-ua-markdown": "No probed bot User-Agent (GPTBot, ClaudeBot, ChatGPT-User, PerplexityBot, Google-Extended, Applebot-Extended, ora-agent, DeepSeekBot) receives markdown when requesting HTML.",
   "agent-crawler-reachability": "Reachable to all major AI crawlers - ChatGPT-User: reachable, ClaudeBot: reachable, Google-Extended: reachable, ora-agent: reachable, DeepSeekBot: reachable",
   "public-api": "API described in documentation at https://www.typeform.com but no machine-verifiable API surface confirmed. Best-of-protocols score: 3/7.",
   "oauth-support": "OAuth authorization server metadata at https://api.typeform.com",
   "mcp-server": "MCP endpoint found at /mcp but response is not valid JSON",
   "webmcp": "No WebMCP support detected - no tool-attribute forms and no document.modelContext / navigator.modelContext usage found",
   "cli-tool": "CLI tool found on PyPI: typeform",
   "rest-sdk-packages": "SDK package found only in npm",
   "nlweb-ask": "No NLWeb-conformant /ask endpoint found via GET or POST",
   "mpp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "x402-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "ucp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "acp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "ap2-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites"
  }
 },
 {
  "slug": "vercel",
  "name": "Vercel",
  "domain": "vercel.com",
  "finalUrl": "https://vercel.com/",
  "read": "2026-11-09",
  "scannedAt": "2026-11-09T11:36:03.366+00:00",
  "score": 91,
  "max": 100,
  "grade": "A",
  "category": "Infrastructure",
  "scoringVersion": 2,
  "rulesUrl": "https://ora.ai/api/ranker/releases/2/rules",
  "summary": "Vercel offers strong discovery and access with a verified zero-auth API, and WebMCP support plus named OAuth scopes would round out agent readiness.",
  "layers": [
   {
    "id": "discovery",
    "name": "Discovery",
    "score": 21,
    "max": 21
   },
   {
    "id": "accessibility",
    "name": "Access",
    "score": 62,
    "max": 64
   },
   {
    "id": "usability",
    "name": "Usability",
    "score": 73,
    "max": 89
   },
   {
    "id": "payments",
    "name": "Payments",
    "score": 0,
    "max": 0
   }
  ],
  "checks": {
   "ard-catalog": [
    "pass",
    1,
    1
   ],
   "ai-catalog-published": [
    "pass",
    1,
    1
   ],
   "ard-entries-valid": [
    "pass",
    2,
    2
   ],
   "ard-trust-manifest": [
    "fail",
    0,
    2
   ],
   "agentic-search-usecase": [
    "na",
    0,
    6
   ],
   "agentic-search-specific": [
    "pass",
    3,
    3
   ],
   "brand-search-accuracy": [
    "pass",
    3,
    3
   ],
   "wikipedia-presence": [
    "pass",
    4,
    4
   ],
   "robots-ai-policy-quality": [
    "pass",
    2,
    2
   ],
   "mcp-registry-listed": [
    "pass",
    1,
    1
   ],
   "npm-sdk-package": [
    "pass",
    1,
    1
   ],
   "agent-rules-repo": [
    "pass",
    1,
    1
   ],
   "agent-plugins-repo": [
    "fail",
    0,
    1
   ],
   "registry-branding": [
    "fail",
    0,
    2
   ],
   "chatgpt-app-listed": [
    "pass",
    2,
    2
   ],
   "noindex-directives": [
    "pass",
    1,
    1
   ],
   "sitemap": [
    "pass",
    2,
    2
   ],
   "content-no-js": [
    "warning",
    2,
    3
   ],
   "bot-detection": [
    "pass",
    2,
    2
   ],
   "agent-discovery-file": [
    "pass",
    2,
    2
   ],
   "agent-skills-index-v2": [
    "pass",
    2,
    2
   ],
   "a2a-agent-card": [
    "fail",
    0,
    2
   ],
   "skills-sh-listed": [
    "pass",
    1,
    1
   ],
   "pricing-md": [
    "pass",
    2,
    2
   ],
   "nlweb-schema-feeds": [
    "fail",
    0,
    1
   ],
   "mcp-well-known-discovery": [
    "warning",
    1,
    2
   ],
   "agent-mode-view": [
    "fail",
    0,
    2
   ],
   "link-headers-discovery": [
    "pass",
    1,
    1
   ],
   "markdown-url-fallback": [
    "fail",
    0,
    2
   ],
   "modular-llms-txt": [
    "pass",
    1,
    1
   ],
   "sitemap-lastmod": [
    "pass",
    1,
    1
   ],
   "robots-agent-user-policy": [
    "pass",
    2,
    2
   ],
   "llms-txt-exists": [
    "pass",
    1,
    1
   ],
   "llms-txt-formatting": [
    "pass",
    2,
    2
   ],
   "json-ld": [
    "pass",
    4,
    4
   ],
   "pricing-info": [
    "pass",
    3,
    3
   ],
   "public-api-docs": [
    "pass",
    3,
    3
   ],
   "agent-instruction": [
    "pass",
    3,
    3
   ],
   "skills-sh-quality": [
    "pass",
    2,
    2
   ],
   "json-ld-entity-linking": [
    "pass",
    2,
    2
   ],
   "metadata-completeness": [
    "pass",
    2,
    2
   ],
   "org-schema-completeness": [
    "pass",
    2,
    2
   ],
   "schema-type-breadth": [
    "warning",
    1,
    2
   ],
   "trust-anchors": [
    "pass",
    2,
    2
   ],
   "llms-txt-links-resolve": [
    "pass",
    2,
    2
   ],
   "markdown-link-alternate": [
    "fail",
    0,
    1
   ],
   "markdown-frontmatter": [
    "fail",
    0,
    1
   ],
   "redirect-hygiene": [
    "pass",
    1,
    1
   ],
   "page-token-budget": [
    "pass",
    1,
    1
   ],
   "code-fence-validity": [
    "pass",
    1,
    1
   ],
   "docs-auth-gate": [
    "pass",
    2,
    2
   ],
   "openapi-spec": [
    "pass",
    7,
    7
   ],
   "developer-portal": [
    "pass",
    6,
    6
   ],
   "api-catalog-rfc9727": [
    "pass",
    2,
    2
   ],
   "markdown-negotiation": [
    "pass",
    1,
    1
   ],
   "markdown-negotiation-vary": [
    "pass",
    1,
    1
   ],
   "agent-ua-markdown": [
    "fail",
    0,
    1
   ],
   "agent-crawler-reachability": [
    "pass",
    2,
    2
   ],
   "mcp-tool-descriptions": [
    "na",
    0,
    3
   ],
   "mcp-param-schemas": [
    "na",
    0,
    2
   ],
   "mcp-server-identity": [
    "na",
    0,
    1
   ],
   "mcp-tool-listing": [
    "na",
    0,
    3
   ],
   "mcp-tool-naming": [
    "na",
    0,
    2
   ],
   "public-api": [
    "pass",
    7,
    7
   ],
   "oauth-support": [
    "pass",
    5,
    5
   ],
   "scoped-permissions": [
    "warning",
    2,
    5
   ],
   "mcp-auth-mechanism": [
    "pass",
    2,
    2
   ],
   "mcp-oauth-metadata": [
    "pass",
    2,
    2
   ],
   "mcp-pkce-s256": [
    "pass",
    2,
    2
   ],
   "onboarding-friction": [
    "warning",
    1,
    2
   ],
   "web-bot-auth-directory": [
    "fail",
    0,
    2
   ],
   "oauth-protected-resource": [
    "pass",
    2,
    2
   ],
   "auth-md-exists": [
    "fail",
    0,
    2
   ],
   "auth-md-structure": [
    "fail",
    0,
    2
   ],
   "auth-md-walkthrough-simulation": [
    "na",
    0,
    2
   ],
   "agent-auth-discovery-metadata": [
    "warning",
    1,
    3
   ],
   "agent-auth-www-authenticate": [
    "pass",
    1,
    1
   ],
   "agent-auth-endpoints-reachable": [
    "fail",
    0,
    2
   ],
   "pap-discovery": [
    "na",
    0,
    2
   ],
   "pap-issuer-binding": [
    "na",
    0,
    2
   ],
   "pap-auth-config": [
    "na",
    0,
    2
   ],
   "pap-interfaces": [
    "na",
    0,
    2
   ],
   "pap-endpoint-enforcement": [
    "na",
    0,
    2
   ],
   "pap-cross-protocol": [
    "na",
    0,
    2
   ],
   "mcp-server": [
    "warning",
    5,
    6
   ],
   "mcp-error-handling": [
    "na",
    0,
    2
   ],
   "mcp-transport-modern": [
    "na",
    0,
    1
   ],
   "webmcp": [
    "fail",
    0,
    5
   ],
   "rate-limit-headers": [
    "fail",
    0,
    2
   ],
   "idempotency-key-support": [
    "fail",
    0,
    3
   ],
   "json-error-responses": [
    "pass",
    4,
    4
   ],
   "api-error-model": [
    "pass",
    3,
    3
   ],
   "api-versioning-policy": [
    "pass",
    3,
    3
   ],
   "pagination-shape": [
    "pass",
    2,
    2
   ],
   "async-job-pattern": [
    "pass",
    2,
    2
   ],
   "cli-tool": [
    "pass",
    3,
    3
   ],
   "rest-sdk-packages": [
    "warning",
    2,
    3
   ],
   "nlweb-ask": [
    "fail",
    0,
    1
   ],
   "nlweb-streaming": [
    "fail",
    0,
    1
   ],
   "response-schema-coverage": [
    "pass",
    2,
    2
   ],
   "mcp-tool-annotations": [
    "na",
    0,
    2
   ],
   "mcp-server-card": [
    "fail",
    0,
    2
   ],
   "mcp-multi-surface-coverage": [
    "fail",
    0,
    2
   ],
   "sandbox-environment": [
    "pass",
    2,
    2
   ],
   "batch-endpoints": [
    "pass",
    2,
    2
   ],
   "mcp-resource-listing": [
    "na",
    0,
    3
   ],
   "graphql-error-type-definition": [
    "na",
    0,
    3
   ],
   "graphql-versioning-policy": [
    "na",
    0,
    2
   ],
   "graphql-pagination-pattern": [
    "na",
    0,
    2
   ],
   "graphql-async-job-pattern": [
    "na",
    0,
    2
   ],
   "graphql-schema-completeness": [
    "na",
    0,
    3
   ],
   "graphql-batch-mutations": [
    "na",
    0,
    2
   ],
   "agent-friendly-404": [
    "pass",
    2,
    2
   ],
   "ax-document-structure": [
    "pass",
    3,
    3
   ],
   "ax-native-controls": [
    "pass",
    3,
    3
   ],
   "ax-accessible-names": [
    "pass",
    2,
    2
   ],
   "ax-form-labeling": [
    "pass",
    2,
    2
   ],
   "ax-tree-injection-safe": [
    "pass",
    2,
    2
   ],
   "mcp-app-registry": [
    "na",
    0,
    4
   ],
   "a2ui-support": [
    "na",
    0,
    2
   ],
   "mcp-apps-ui-quality": [
    "na",
    0,
    4
   ],
   "mcp-view-domain": [
    "na",
    0,
    4
   ],
   "mcp-view-csp": [
    "na",
    0,
    4
   ],
   "api-schema-analysis": [
    "pass",
    2,
    2
   ],
   "function-calling-compat": [
    "pass",
    2,
    2
   ],
   "mcp-resource-quality": [
    "na",
    0,
    3
   ],
   "mpp-support": [
    "na",
    0,
    2
   ],
   "x402-support": [
    "na",
    0,
    2
   ],
   "ucp-support": [
    "na",
    0,
    3
   ],
   "acp-support": [
    "na",
    0,
    3
   ],
   "acp-delegate-payment": [
    "na",
    0,
    3
   ],
   "ap2-support": [
    "na",
    0,
    3
   ]
  },
  "flagged": [
   {
    "id": "webmcp",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 5,
    "tier": "required",
    "est": 2.5,
    "detail": "No WebMCP support detected - no document.modelContext / navigator.modelContext usage found (scanned 43 of 43 same-origin script bundle(s) for modelContext registrations)"
   },
   {
    "id": "idempotency-key-support",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": 1.5,
    "detail": "No REST Idempotency-Key support detected"
   },
   {
    "id": "scoped-permissions",
    "layer": "usability",
    "status": "warning",
    "score": 2,
    "max": 5,
    "tier": "recommended",
    "est": 1.5,
    "detail": "OpenAPI declares security schemes but no named OAuth scopes - agents get all-or-nothing access. Declare per-scope grants (e.g. read:*, write:*) in the spec."
   },
   {
    "id": "rate-limit-headers",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1,
    "detail": "No REST rate-limit headers found on probed endpoints"
   },
   {
    "id": "content-no-js",
    "layer": "accessibility",
    "status": "warning",
    "score": 2,
    "max": 3,
    "tier": "required",
    "est": 0.5,
    "detail": "Homepage: 1009 chars with H1, but 1.0% content ratio is below the 5% target. 4 of 4 sampled inner pages have text without JavaScript (1 skipped)."
   },
   {
    "id": "mcp-server",
    "layer": "usability",
    "status": "warning",
    "score": 5,
    "max": 6,
    "tier": "required",
    "est": 0.5,
    "detail": "MCP server detected at https://mcp.vercel.com; it requires authentication. Presence is verified (5/6), but Ora could not inspect its tools or verify access scopes without credentials."
   },
   {
    "id": "onboarding-friction",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "Verified live: GET https://api.vercel.com/v1/registrar/tlds/supported answered 200 without credentials (zero-auth access). Described but not verified live: free tier available, self-serve key generation, sandbox/test environment"
   },
   {
    "id": "rest-sdk-packages",
    "layer": "usability",
    "status": "warning",
    "score": 2,
    "max": 3,
    "tier": "recommended",
    "est": 0.5,
    "detail": "SDK found in npm, additional SDKs mentioned at https://vercel.com"
   },
   {
    "id": "schema-type-breadth",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "Some extended schema types found: Service - add 2 more types that match what the homepage shows, for full coverage"
   },
   {
    "id": "agent-auth-discovery-metadata",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 3,
    "tier": "recommended",
    "est": 0.2,
    "detail": "PRM + AS metadata both present (PRM discovered at https://mcp.vercel.com) but AS metadata has no agent_auth block"
   },
   {
    "id": "agent-auth-endpoints-reachable",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.2,
    "detail": "No agent_auth endpoint URIs found in AS metadata or /auth.md prose; nothing to probe"
   },
   {
    "id": "auth-md-exists",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.2,
    "detail": "Path https://vercel.com/auth.md returned HTML (SPA / 404 fallback), not an auth.md document"
   },
   {
    "id": "auth-md-structure",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.2,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "mcp-multi-surface-coverage",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.2,
    "detail": "You run an MCP server for your product, but not one for your documentation. This bonus needs two MCP servers: one for your product so agents can take actions,"
   },
   {
    "id": "mcp-server-card",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.2,
    "detail": "No MCP server card found for https://mcp.vercel.com (checked /.well-known/mcp/server-card.json, the site's ai-catalog.json, servers[].card in mcp.json, and <server>/server-card)"
   },
   {
    "id": "a2a-agent-card",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0,
    "detail": "No A2A agent card found at /.well-known/agent-card.json"
   },
   {
    "id": "agent-mode-view",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "?mode=agent returns same content as homepage (no dedicated agent view)"
   },
   {
    "id": "agent-plugins-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No Agent Plugins manifest (plugin.json) found in discovered repos"
   },
   {
    "id": "agent-ua-markdown",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly."
   },
   {
    "id": "ard-trust-manifest",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0,
    "detail": "No entry carries a trustManifest"
   },
   {
    "id": "markdown-frontmatter",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "None of the 1 served markdown doc opens with a --- frontmatter block. Add title, description, canonical, and last-updated so agents get metadata without scraping."
   },
   {
    "id": "markdown-link-alternate",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No sampled page advertises a markdown alternate. Add <link rel=\"alternate\" type=\"text/markdown\" href=\"...\"> (or the equivalent Link response header) pointing at a markdown twin of the page."
   },
   {
    "id": "markdown-url-fallback",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "Homepage does not support the .md suffix. Probed https://vercel.com/index.md and it did not return markdown (expected text/markdown content-type or a heading-led non-HTML body)."
   },
   {
    "id": "mcp-well-known-discovery",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0,
    "detail": "MCP server at https://mcp.vercel.com - list its server card, hosted on your own domain, in /.well-known/ai-catalog.json so MCP clients can discover it"
   },
   {
    "id": "nlweb-ask",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No NLWeb-conformant /ask endpoint found via GET or POST"
   },
   {
    "id": "nlweb-schema-feeds",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No schemamap: directive in robots.txt"
   },
   {
    "id": "nlweb-streaming",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "NLWeb /ask does not support SSE streaming via GET or POST"
   },
   {
    "id": "registry-branding",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No registry branding (name, icon, description) found"
   },
   {
    "id": "web-bot-auth-directory",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No /.well-known/http-message-signatures-directory found"
   }
  ],
  "seen": {
   "brand-search-accuracy": "vercel.com ranks #3 for \"Vercel Agentic infrastructure platform\"",
   "wikipedia-presence": "Wikipedia \"Vercel\" and Wikidata Q56069184 both verified - domain confirmed on both sources",
   "robots-ai-policy-quality": "AI search crawlers: allowed in 18 of 18 checks (3 crawlers on 6 pages). AI training crawlers: allowed in 12 of 12 checks (2 crawlers on 6 pages), not scored.",
   "noindex-directives": "No noindex on the homepage: no robots, googlebot or bingbot meta tag and no X-Robots-Tag header hides it from search.",
   "sitemap": "Valid sitemap found at https://vercel.com/sitemap.xml with 9388 entries",
   "content-no-js": "Homepage: 1009 chars with H1, but 1.0% content ratio is below the 5% target. 4 of 4 sampled inner pages have text without JavaScript (1 skipped).",
   "bot-detection": "Site accessible to 4 agent user-agents (ChatGPT-User, OAI-SearchBot, Claude-User, PerplexityBot).",
   "agent-discovery-file": "Agent Skills index (agentskills.io) found at /.well-known/agent-skills/index.json with 9 skill(s)",
   "a2a-agent-card": "No A2A agent card found at /.well-known/agent-card.json",
   "mcp-well-known-discovery": "MCP server at https://mcp.vercel.com - list its server card, hosted on your own domain, in /.well-known/ai-catalog.json so MCP clients can discover it",
   "robots-agent-user-policy": "No applicable crawl or usage restriction found for 3 user-triggered agents (chatgpt-user, claude-user, perplexity-user) on 1 public page: https://vercel.com/. Declared policy only;",
   "llms-txt-exists": "Found the llms.txt at https://vercel.com/llms.txt.",
   "llms-txt-formatting": "The llms.txt is well-formatted: 48 lines with markdown links, 5,397 characters in total.",
   "json-ld": "Rich JSON-LD identity: Organization with name, description, url, and sameAs/logo/address (3 block(s))",
   "public-api-docs": "Documentation site found at https://vercel.com",
   "metadata-completeness": "All metadata signals present: canonical URL, lang=\"en\", og:image, og:type",
   "page-token-budget": "All 7 measured pages fit an agent context budget (largest ~4K tokens)",
   "docs-auth-gate": "All 5 sampled pages are publicly readable (5 with substantive content)",
   "openapi-spec": "OpenAPI spec found at https://vercel.com/openapi.json (version: 3.0.3)",
   "developer-portal": "Developer portal found at /docs",
   "markdown-negotiation": "Path-suffix markdown docs served with text/markdown content-type: /agents.md",
   "agent-ua-markdown": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly.",
   "agent-crawler-reachability": "Reachable to every agent we tested - ChatGPT-User: reachable, OAI-SearchBot: reachable, Claude-User: reachable, PerplexityBot: reachable",
   "public-api": "REST API documentation found at https://vercel.com/docs/getting-started-with-vercel.md?from=llms-txt. Best-of-protocols score: 7/7.",
   "oauth-support": "OAuth authorization server metadata at https://vercel.com",
   "mcp-server": "MCP server detected at https://mcp.vercel.com; it requires authentication. Presence is verified (5/6), but Ora could not inspect its tools or verify access scopes without credentials.",
   "webmcp": "No WebMCP support detected - no document.modelContext / navigator.modelContext usage found (scanned 43 of 43 same-origin script bundle(s) for modelContext registrations)",
   "cli-tool": "CLI package found on npm: vercel",
   "rest-sdk-packages": "SDK found in npm, additional SDKs mentioned at https://vercel.com",
   "nlweb-ask": "No NLWeb-conformant /ask endpoint found via GET or POST",
   "mpp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "x402-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "ucp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "acp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "ap2-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites"
  }
 },
 {
  "slug": "webflow",
  "name": "Webflow",
  "domain": "webflow.com",
  "finalUrl": "https://webflow.com/",
  "read": "2026-11-09",
  "scannedAt": "2026-11-09T09:45:49.738+00:00",
  "score": 78,
  "max": 100,
  "grade": "B",
  "category": "Commerce Tools",
  "scoringVersion": 2,
  "rulesUrl": "https://ora.ai/api/ranker/releases/2/rules",
  "summary": "Webflow offers a published SDK and MCP registry presence, but lacks a published OpenAPI specification and declared scoped permissions for agents.",
  "layers": [
   {
    "id": "discovery",
    "name": "Discovery",
    "score": 15,
    "max": 18
   },
   {
    "id": "accessibility",
    "name": "Access",
    "score": 53,
    "max": 61
   },
   {
    "id": "usability",
    "name": "Usability",
    "score": 56,
    "max": 81
   },
   {
    "id": "payments",
    "name": "Payments",
    "score": 0,
    "max": 0
   }
  ],
  "checks": {
   "ard-catalog": [
    "fail",
    0,
    1
   ],
   "ai-catalog-published": [
    "na",
    0,
    1
   ],
   "ard-entries-valid": [
    "na",
    0,
    2
   ],
   "ard-trust-manifest": [
    "na",
    0,
    2
   ],
   "agentic-search-usecase": [
    "na",
    0,
    6
   ],
   "agentic-search-specific": [
    "pass",
    3,
    3
   ],
   "brand-search-accuracy": [
    "warning",
    1,
    3
   ],
   "wikipedia-presence": [
    "pass",
    4,
    4
   ],
   "robots-ai-policy-quality": [
    "pass",
    2,
    2
   ],
   "mcp-registry-listed": [
    "pass",
    1,
    1
   ],
   "npm-sdk-package": [
    "pass",
    1,
    1
   ],
   "agent-rules-repo": [
    "fail",
    0,
    1
   ],
   "agent-plugins-repo": [
    "fail",
    0,
    1
   ],
   "registry-branding": [
    "fail",
    0,
    2
   ],
   "chatgpt-app-listed": [
    "pass",
    2,
    2
   ],
   "noindex-directives": [
    "pass",
    1,
    1
   ],
   "sitemap": [
    "pass",
    2,
    2
   ],
   "content-no-js": [
    "pass",
    3,
    3
   ],
   "bot-detection": [
    "pass",
    2,
    2
   ],
   "agent-discovery-file": [
    "pass",
    2,
    2
   ],
   "agent-skills-index-v2": [
    "fail",
    0,
    2
   ],
   "a2a-agent-card": [
    "fail",
    0,
    2
   ],
   "skills-sh-listed": [
    "pass",
    1,
    1
   ],
   "pricing-md": [
    "fail",
    0,
    2
   ],
   "nlweb-schema-feeds": [
    "fail",
    0,
    1
   ],
   "mcp-well-known-discovery": [
    "pass",
    2,
    2
   ],
   "agent-mode-view": [
    "fail",
    0,
    2
   ],
   "link-headers-discovery": [
    "fail",
    0,
    1
   ],
   "markdown-url-fallback": [
    "fail",
    0,
    2
   ],
   "modular-llms-txt": [
    "fail",
    0,
    1
   ],
   "sitemap-lastmod": [
    "fail",
    0,
    1
   ],
   "robots-agent-user-policy": [
    "pass",
    2,
    2
   ],
   "llms-txt-exists": [
    "pass",
    1,
    1
   ],
   "llms-txt-formatting": [
    "pass",
    2,
    2
   ],
   "json-ld": [
    "pass",
    4,
    4
   ],
   "pricing-info": [
    "pass",
    3,
    3
   ],
   "public-api-docs": [
    "pass",
    3,
    3
   ],
   "agent-instruction": [
    "pass",
    3,
    3
   ],
   "skills-sh-quality": [
    "pass",
    2,
    2
   ],
   "json-ld-entity-linking": [
    "pass",
    2,
    2
   ],
   "metadata-completeness": [
    "pass",
    2,
    2
   ],
   "org-schema-completeness": [
    "pass",
    2,
    2
   ],
   "schema-type-breadth": [
    "warning",
    1,
    2
   ],
   "trust-anchors": [
    "pass",
    2,
    2
   ],
   "llms-txt-links-resolve": [
    "pass",
    2,
    2
   ],
   "markdown-link-alternate": [
    "fail",
    0,
    1
   ],
   "markdown-frontmatter": [
    "na",
    0,
    1
   ],
   "redirect-hygiene": [
    "pass",
    1,
    1
   ],
   "page-token-budget": [
    "pass",
    1,
    1
   ],
   "code-fence-validity": [
    "pass",
    1,
    1
   ],
   "docs-auth-gate": [
    "pass",
    2,
    2
   ],
   "openapi-spec": [
    "fail",
    0,
    7
   ],
   "developer-portal": [
    "pass",
    6,
    6
   ],
   "api-catalog-rfc9727": [
    "fail",
    0,
    2
   ],
   "markdown-negotiation": [
    "pass",
    1,
    1
   ],
   "markdown-negotiation-vary": [
    "pass",
    1,
    1
   ],
   "agent-ua-markdown": [
    "fail",
    0,
    1
   ],
   "agent-crawler-reachability": [
    "pass",
    2,
    2
   ],
   "mcp-tool-descriptions": [
    "na",
    0,
    3
   ],
   "mcp-param-schemas": [
    "na",
    0,
    2
   ],
   "mcp-server-identity": [
    "na",
    0,
    1
   ],
   "mcp-tool-listing": [
    "na",
    0,
    3
   ],
   "mcp-tool-naming": [
    "na",
    0,
    2
   ],
   "public-api": [
    "pass",
    7,
    7
   ],
   "oauth-support": [
    "pass",
    5,
    5
   ],
   "scoped-permissions": [
    "fail",
    0,
    5
   ],
   "mcp-auth-mechanism": [
    "warning",
    1,
    2
   ],
   "mcp-oauth-metadata": [
    "pass",
    2,
    2
   ],
   "mcp-pkce-s256": [
    "pass",
    2,
    2
   ],
   "onboarding-friction": [
    "pass",
    2,
    2
   ],
   "web-bot-auth-directory": [
    "fail",
    0,
    2
   ],
   "oauth-protected-resource": [
    "pass",
    2,
    2
   ],
   "auth-md-exists": [
    "fail",
    0,
    2
   ],
   "auth-md-structure": [
    "fail",
    0,
    2
   ],
   "auth-md-walkthrough-simulation": [
    "na",
    0,
    2
   ],
   "agent-auth-discovery-metadata": [
    "warning",
    1,
    3
   ],
   "agent-auth-www-authenticate": [
    "pass",
    1,
    1
   ],
   "agent-auth-endpoints-reachable": [
    "fail",
    0,
    2
   ],
   "pap-discovery": [
    "na",
    0,
    2
   ],
   "pap-issuer-binding": [
    "na",
    0,
    2
   ],
   "pap-auth-config": [
    "na",
    0,
    2
   ],
   "pap-interfaces": [
    "na",
    0,
    2
   ],
   "pap-endpoint-enforcement": [
    "na",
    0,
    2
   ],
   "pap-cross-protocol": [
    "na",
    0,
    2
   ],
   "mcp-server": [
    "warning",
    5,
    6
   ],
   "mcp-error-handling": [
    "na",
    0,
    2
   ],
   "mcp-transport-modern": [
    "na",
    0,
    1
   ],
   "webmcp": [
    "na",
    0,
    5
   ],
   "rate-limit-headers": [
    "fail",
    0,
    2
   ],
   "idempotency-key-support": [
    "fail",
    0,
    3
   ],
   "json-error-responses": [
    "pass",
    4,
    4
   ],
   "api-error-model": [
    "fail",
    0,
    3
   ],
   "api-versioning-policy": [
    "fail",
    0,
    3
   ],
   "pagination-shape": [
    "na",
    0,
    2
   ],
   "async-job-pattern": [
    "fail",
    0,
    2
   ],
   "cli-tool": [
    "pass",
    3,
    3
   ],
   "rest-sdk-packages": [
    "warning",
    2,
    3
   ],
   "nlweb-ask": [
    "fail",
    0,
    1
   ],
   "nlweb-streaming": [
    "fail",
    0,
    1
   ],
   "response-schema-coverage": [
    "na",
    0,
    2
   ],
   "mcp-tool-annotations": [
    "na",
    0,
    2
   ],
   "mcp-server-card": [
    "fail",
    0,
    2
   ],
   "mcp-multi-surface-coverage": [
    "warning",
    1,
    2
   ],
   "sandbox-environment": [
    "fail",
    0,
    2
   ],
   "batch-endpoints": [
    "warning",
    1,
    2
   ],
   "mcp-resource-listing": [
    "na",
    0,
    3
   ],
   "graphql-error-type-definition": [
    "na",
    0,
    3
   ],
   "graphql-versioning-policy": [
    "na",
    0,
    2
   ],
   "graphql-pagination-pattern": [
    "na",
    0,
    2
   ],
   "graphql-async-job-pattern": [
    "na",
    0,
    2
   ],
   "graphql-schema-completeness": [
    "na",
    0,
    3
   ],
   "graphql-batch-mutations": [
    "na",
    0,
    2
   ],
   "agent-friendly-404": [
    "warning",
    1,
    2
   ],
   "ax-document-structure": [
    "pass",
    3,
    3
   ],
   "ax-native-controls": [
    "pass",
    3,
    3
   ],
   "ax-accessible-names": [
    "pass",
    2,
    2
   ],
   "ax-form-labeling": [
    "na",
    0,
    2
   ],
   "ax-tree-injection-safe": [
    "pass",
    2,
    2
   ],
   "mcp-app-registry": [
    "na",
    0,
    4
   ],
   "a2ui-support": [
    "na",
    0,
    2
   ],
   "mcp-apps-ui-quality": [
    "na",
    0,
    4
   ],
   "mcp-view-domain": [
    "na",
    0,
    4
   ],
   "mcp-view-csp": [
    "na",
    0,
    4
   ],
   "api-schema-analysis": [
    "fail",
    0,
    2
   ],
   "function-calling-compat": [
    "fail",
    0,
    2
   ],
   "mcp-resource-quality": [
    "na",
    0,
    3
   ],
   "mpp-support": [
    "na",
    0,
    2
   ],
   "x402-support": [
    "na",
    0,
    2
   ],
   "ucp-support": [
    "na",
    0,
    3
   ],
   "acp-support": [
    "na",
    0,
    3
   ],
   "acp-delegate-payment": [
    "na",
    0,
    3
   ],
   "ap2-support": [
    "na",
    0,
    3
   ]
  },
  "flagged": [
   {
    "id": "openapi-spec",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 7,
    "tier": "required",
    "est": 3.8,
    "detail": "No OpenAPI/Swagger specification found"
   },
   {
    "id": "scoped-permissions",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 5,
    "tier": "recommended",
    "est": 2.7,
    "detail": "No declared OAuth scopes, security schemes, or scoped-permission documentation found"
   },
   {
    "id": "brand-search-accuracy",
    "layer": "discovery",
    "status": "warning",
    "score": 1,
    "max": 3,
    "tier": "required",
    "est": 2.5,
    "detail": "webflow.com ranks #7 for \"Webflow\" (searched your brand name alone: no main product term from your homepage qualified)"
   },
   {
    "id": "api-error-model",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": 1.6,
    "detail": "No typed error model found"
   },
   {
    "id": "api-versioning-policy",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": 1.6,
    "detail": "No API versioning strategy found - add URL path versioning (/v1/, /v2/) or a versioned header parameter in your OpenAPI spec"
   },
   {
    "id": "idempotency-key-support",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": 1.6,
    "detail": "No REST Idempotency-Key support detected"
   },
   {
    "id": "ard-catalog",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 1.2,
    "detail": "No /.well-known/ard.json, no same-site rel=\"ard\" link, and no legacy /.well-known/ai-catalog.json"
   },
   {
    "id": "api-schema-analysis",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.1,
    "detail": "No API schema detected"
   },
   {
    "id": "async-job-pattern",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.1,
    "detail": "No async job pattern found"
   },
   {
    "id": "function-calling-compat",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.1,
    "detail": "No API spec found - function calling requires discoverable endpoints"
   },
   {
    "id": "rate-limit-headers",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.1,
    "detail": "No REST rate-limit headers found on probed endpoints"
   },
   {
    "id": "agent-friendly-404",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "The nonexistent path https://webflow.com/__ora-404-probe-ym36s00p correctly returns HTTP 404. Partial credit: no Markdown error body was detected."
   },
   {
    "id": "mcp-server",
    "layer": "usability",
    "status": "warning",
    "score": 5,
    "max": 6,
    "tier": "required",
    "est": 0.5,
    "detail": "MCP server detected at https://mcp.webflow.com/mcp; it requires authentication. Presence is verified (5/6), but Ora could not inspect its tools or verify access scopes without credentials."
   },
   {
    "id": "rest-sdk-packages",
    "layer": "usability",
    "status": "warning",
    "score": 2,
    "max": 3,
    "tier": "recommended",
    "est": 0.5,
    "detail": "SDK packages found in npm, pypi"
   },
   {
    "id": "schema-type-breadth",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "Some extended schema types found: Review, AggregateRating - add 1 more type that matches what the homepage shows, for full coverage"
   },
   {
    "id": "agent-auth-discovery-metadata",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 3,
    "tier": "recommended",
    "est": 0.3,
    "detail": "PRM + AS metadata both present (PRM discovered at https://mcp.webflow.com) (AS metadata fetched from advertised origin https://mcp.webflow.com) but AS metadata has no agent_auth block"
   },
   {
    "id": "agent-auth-endpoints-reachable",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.3,
    "detail": "No agent_auth endpoint URIs found in AS metadata or /auth.md prose; nothing to probe"
   },
   {
    "id": "auth-md-exists",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.3,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "auth-md-structure",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.3,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "mcp-server-card",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.3,
    "detail": "No MCP server card found for https://mcp.webflow.com/mcp (checked /.well-known/mcp/server-card.json, the site's ai-catalog.json, servers[].card in mcp.json, and <server>/server-card)"
   },
   {
    "id": "mcp-server-card",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.3,
    "detail": "No MCP server card found for https://help.webflow.com/mcp (checked /.well-known/mcp/server-card.json, the site's ai-catalog.json, servers[].card in mcp.json, and <server>/server-card)"
   },
   {
    "id": "sandbox-environment",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.3,
    "detail": "No sandbox or test environment found"
   },
   {
    "id": "batch-endpoints",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.2,
    "detail": "Batch/bulk operations referenced in llms.txt"
   },
   {
    "id": "mcp-auth-mechanism",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.2,
    "detail": "docs MCP is gated behind authentication - this defeats the purpose of a docs MCP for agent discovery"
   },
   {
    "id": "mcp-multi-surface-coverage",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.2,
    "detail": "You run both MCP servers, but the documentation one (https://help.webflow.com/mcp) is not reachable. Fix it so agents can use it."
   },
   {
    "id": "a2a-agent-card",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.1,
    "detail": "No A2A agent card found at /.well-known/agent-card.json"
   },
   {
    "id": "api-catalog-rfc9727",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.1,
    "detail": "No /.well-known/api-catalog found (RFC 9727)"
   },
   {
    "id": "link-headers-discovery",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 0.1,
    "detail": "Link header present but no agent-relevant rel values (sitemap, describedby, alternate, service-desc)"
   },
   {
    "id": "sitemap-lastmod",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.1,
    "detail": "None of the 500 sampled sitemap entries carries a lastmod date. Add <lastmod> (W3C datetime) so agents can prioritize fresh content."
   },
   {
    "id": "agent-mode-view",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "?mode=agent returns same content as homepage (no dedicated agent view)"
   },
   {
    "id": "agent-plugins-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No Agent Plugins manifest (plugin.json) found in discovered repos"
   },
   {
    "id": "agent-rules-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Could not locate a public repo containing agent configs or rules. If our probes missed it, AI coding agents likely will too - link the repo from your homepage or docs so it's discoverable."
   },
   {
    "id": "agent-skills-index-v2",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "Skill \"webflow-cli:cloud\" digest mismatch: expected a1a526349890..., got c9d9712ccb59... - artifact has drifted from index"
   },
   {
    "id": "agent-ua-markdown",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly."
   },
   {
    "id": "markdown-link-alternate",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No sampled page advertises a markdown alternate. Add <link rel=\"alternate\" type=\"text/markdown\" href=\"...\"> (or the equivalent Link response header) pointing at a markdown twin of the page."
   },
   {
    "id": "markdown-url-fallback",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "Homepage does not support the .md suffix. Probed https://webflow.com/index.md and it did not return markdown (expected text/markdown content-type or a heading-led non-HTML body)."
   },
   {
    "id": "modular-llms-txt",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No section-level llms.txt found. Tried /docs/llms.txt, /api/llms.txt, /developers/llms.txt, /guides/llms.txt, /reference/llms.txt, /security/llms.txt, /apps/llms.txt, /platform/llms.txt, /fr/llms.txt, /de/llms.txt."
   },
   {
    "id": "nlweb-ask",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No NLWeb-conformant /ask endpoint found via GET or POST"
   },
   {
    "id": "nlweb-schema-feeds",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No schemamap: directive in robots.txt"
   },
   {
    "id": "nlweb-streaming",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "NLWeb /ask does not support SSE streaming via GET or POST"
   },
   {
    "id": "pricing-md",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No pricing.md found - agents need machine-readable pricing to compare products and make purchase recommendations"
   },
   {
    "id": "registry-branding",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No registry branding (name, icon, description) found"
   },
   {
    "id": "web-bot-auth-directory",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No /.well-known/http-message-signatures-directory found"
   }
  ],
  "seen": {
   "brand-search-accuracy": "webflow.com ranks #7 for \"Webflow\" (searched your brand name alone: no main product term from your homepage qualified)",
   "wikipedia-presence": "Wikipedia \"Webflow\" and Wikidata Q20160951 both verified - domain confirmed on both sources",
   "robots-ai-policy-quality": "AI search crawlers: allowed in 18 of 18 checks (3 crawlers on 6 pages). AI training crawlers: allowed in 12 of 12 checks (2 crawlers on 6 pages), not scored.",
   "noindex-directives": "No noindex on the homepage: no robots, googlebot or bingbot meta tag and no X-Robots-Tag header hides it from search.",
   "sitemap": "Valid sitemap found at https://webflow.com/sitemap.xml with multiple sitemaps entries",
   "content-no-js": "Homepage: 15370 chars, semantic headings (2 H1 + 38 H2s + 4 H3s), 7.8% content ratio. 5 of 5 sampled inner pages have text without JavaScript.",
   "bot-detection": "Site accessible to 4 agent user-agents (ChatGPT-User, OAI-SearchBot, Claude-User, PerplexityBot).",
   "agent-discovery-file": "Agent Skills index (agentskills.io) found at /.well-known/agent-skills/index.json with 24 skill(s)",
   "a2a-agent-card": "No A2A agent card found at /.well-known/agent-card.json",
   "mcp-well-known-discovery": "MCP server discoverable via server-card.json at /.well-known/mcp/",
   "robots-agent-user-policy": "No applicable crawl or usage restriction found for 3 user-triggered agents (chatgpt-user, claude-user, perplexity-user) on 1 public page: https://webflow.com/. Declared policy only;",
   "llms-txt-exists": "Found the llms.txt at https://webflow.com/llms.txt.",
   "llms-txt-formatting": "The llms.txt is well-formatted: 111 lines with markdown links, 13,258 characters in total.",
   "json-ld": "Rich JSON-LD identity: Organization with name, description, url, and sameAs/logo/address (1 block(s))",
   "public-api-docs": "Documentation site found at https://developers.webflow.com",
   "metadata-completeness": "All metadata signals present: canonical URL, lang=\"en\", og:image, og:type",
   "page-token-budget": "All 6 measured pages fit an agent context budget (largest ~4K tokens)",
   "docs-auth-gate": "All 5 sampled pages are publicly readable (5 with substantive content)",
   "openapi-spec": "No OpenAPI/Swagger specification found",
   "developer-portal": "Developer portal found at https://developers.webflow.com",
   "markdown-negotiation": "Returns markdown when requested via Accept header",
   "agent-ua-markdown": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly.",
   "agent-crawler-reachability": "Reachable to every agent we tested - ChatGPT-User: reachable, OAI-SearchBot: reachable, Claude-User: reachable, PerplexityBot: reachable",
   "public-api": "REST API documentation found at https://developers.webflow.com. Best-of-protocols score: 7/7.",
   "oauth-support": "OAuth authorization server metadata at https://mcp.webflow.com",
   "mcp-server": "MCP server detected at https://mcp.webflow.com/mcp; it requires authentication. Presence is verified (5/6), but Ora could not inspect its tools or verify access scopes without credentials.",
   "webmcp": "Could not fully read this page (only 0 of 2 same-origin script bundles could be read). Nothing that was read uses WebMCP, but the unread part could, so this check is not scored.",
   "cli-tool": "CLI package found on npm: @webflow/webflow-cli",
   "rest-sdk-packages": "SDK packages found in npm, pypi",
   "nlweb-ask": "No NLWeb-conformant /ask endpoint found via GET or POST",
   "mpp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "x402-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "ucp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "acp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "ap2-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites"
  }
 },
 {
  "slug": "wix",
  "name": "Wix",
  "domain": "wix.com",
  "finalUrl": "https://www.wix.com/",
  "read": "2026-11-09",
  "scannedAt": "2026-11-09T10:49:56.9+00:00",
  "score": 65,
  "max": 100,
  "grade": "C",
  "category": "Commerce Tools",
  "scoringVersion": 2,
  "rulesUrl": "https://ora.ai/api/ranker/releases/2/rules",
  "summary": "Wix offers strong discoverability and a published SDK and registry presence, but lacks a public OpenAPI spec and a reachable public API surface for agents.",
  "layers": [
   {
    "id": "discovery",
    "name": "Discovery",
    "score": 17,
    "max": 18
   },
   {
    "id": "accessibility",
    "name": "Access",
    "score": 38,
    "max": 60
   },
   {
    "id": "usability",
    "name": "Usability",
    "score": 30,
    "max": 58
   },
   {
    "id": "payments",
    "name": "Payments",
    "score": 0,
    "max": 0
   }
  ],
  "checks": {
   "ard-catalog": [
    "fail",
    0,
    1
   ],
   "ai-catalog-published": [
    "na",
    0,
    1
   ],
   "ard-entries-valid": [
    "na",
    0,
    2
   ],
   "ard-trust-manifest": [
    "na",
    0,
    2
   ],
   "agentic-search-usecase": [
    "na",
    0,
    6
   ],
   "agentic-search-specific": [
    "pass",
    3,
    3
   ],
   "brand-search-accuracy": [
    "pass",
    3,
    3
   ],
   "wikipedia-presence": [
    "pass",
    4,
    4
   ],
   "robots-ai-policy-quality": [
    "pass",
    2,
    2
   ],
   "mcp-registry-listed": [
    "pass",
    1,
    1
   ],
   "npm-sdk-package": [
    "pass",
    1,
    1
   ],
   "agent-rules-repo": [
    "fail",
    0,
    1
   ],
   "agent-plugins-repo": [
    "fail",
    0,
    1
   ],
   "registry-branding": [
    "fail",
    0,
    2
   ],
   "chatgpt-app-listed": [
    "pass",
    2,
    2
   ],
   "noindex-directives": [
    "pass",
    1,
    1
   ],
   "sitemap": [
    "pass",
    2,
    2
   ],
   "content-no-js": [
    "warning",
    1,
    3
   ],
   "bot-detection": [
    "pass",
    2,
    2
   ],
   "agent-discovery-file": [
    "fail",
    0,
    2
   ],
   "agent-skills-index-v2": [
    "na",
    0,
    2
   ],
   "a2a-agent-card": [
    "fail",
    0,
    2
   ],
   "skills-sh-listed": [
    "pass",
    1,
    1
   ],
   "pricing-md": [
    "fail",
    0,
    2
   ],
   "nlweb-schema-feeds": [
    "fail",
    0,
    1
   ],
   "mcp-well-known-discovery": [
    "warning",
    1,
    2
   ],
   "agent-mode-view": [
    "fail",
    0,
    2
   ],
   "link-headers-discovery": [
    "fail",
    0,
    1
   ],
   "markdown-url-fallback": [
    "fail",
    0,
    2
   ],
   "modular-llms-txt": [
    "fail",
    0,
    1
   ],
   "sitemap-lastmod": [
    "pass",
    1,
    1
   ],
   "robots-agent-user-policy": [
    "pass",
    2,
    2
   ],
   "llms-txt-exists": [
    "pass",
    1,
    1
   ],
   "llms-txt-formatting": [
    "warning",
    1,
    2
   ],
   "json-ld": [
    "warning",
    2,
    4
   ],
   "pricing-info": [
    "pass",
    3,
    3
   ],
   "public-api-docs": [
    "fail",
    0,
    3
   ],
   "agent-instruction": [
    "fail",
    0,
    3
   ],
   "skills-sh-quality": [
    "pass",
    2,
    2
   ],
   "json-ld-entity-linking": [
    "pass",
    2,
    2
   ],
   "metadata-completeness": [
    "pass",
    2,
    2
   ],
   "org-schema-completeness": [
    "warning",
    1,
    2
   ],
   "schema-type-breadth": [
    "pass",
    2,
    2
   ],
   "trust-anchors": [
    "warning",
    1,
    2
   ],
   "llms-txt-links-resolve": [
    "pass",
    2,
    2
   ],
   "markdown-link-alternate": [
    "fail",
    0,
    1
   ],
   "markdown-frontmatter": [
    "na",
    0,
    1
   ],
   "redirect-hygiene": [
    "pass",
    1,
    1
   ],
   "page-token-budget": [
    "pass",
    1,
    1
   ],
   "code-fence-validity": [
    "pass",
    1,
    1
   ],
   "docs-auth-gate": [
    "pass",
    2,
    2
   ],
   "openapi-spec": [
    "fail",
    0,
    7
   ],
   "developer-portal": [
    "pass",
    6,
    6
   ],
   "api-catalog-rfc9727": [
    "fail",
    0,
    2
   ],
   "markdown-negotiation": [
    "fail",
    0,
    1
   ],
   "markdown-negotiation-vary": [
    "fail",
    0,
    1
   ],
   "agent-ua-markdown": [
    "fail",
    0,
    1
   ],
   "agent-crawler-reachability": [
    "pass",
    2,
    2
   ],
   "mcp-tool-descriptions": [
    "na",
    0,
    3
   ],
   "mcp-param-schemas": [
    "na",
    0,
    2
   ],
   "mcp-server-identity": [
    "na",
    0,
    1
   ],
   "mcp-tool-listing": [
    "na",
    0,
    3
   ],
   "mcp-tool-naming": [
    "na",
    0,
    2
   ],
   "public-api": [
    "fail",
    0,
    7
   ],
   "oauth-support": [
    "pass",
    5,
    5
   ],
   "scoped-permissions": [
    "fail",
    0,
    5
   ],
   "mcp-auth-mechanism": [
    "pass",
    2,
    2
   ],
   "mcp-oauth-metadata": [
    "pass",
    2,
    2
   ],
   "mcp-pkce-s256": [
    "pass",
    2,
    2
   ],
   "onboarding-friction": [
    "pass",
    2,
    2
   ],
   "web-bot-auth-directory": [
    "fail",
    0,
    2
   ],
   "oauth-protected-resource": [
    "pass",
    2,
    2
   ],
   "auth-md-exists": [
    "fail",
    0,
    2
   ],
   "auth-md-structure": [
    "fail",
    0,
    2
   ],
   "auth-md-walkthrough-simulation": [
    "na",
    0,
    2
   ],
   "agent-auth-discovery-metadata": [
    "warning",
    1,
    3
   ],
   "agent-auth-www-authenticate": [
    "pass",
    1,
    1
   ],
   "agent-auth-endpoints-reachable": [
    "fail",
    0,
    2
   ],
   "pap-discovery": [
    "na",
    0,
    2
   ],
   "pap-issuer-binding": [
    "na",
    0,
    2
   ],
   "pap-auth-config": [
    "na",
    0,
    2
   ],
   "pap-interfaces": [
    "na",
    0,
    2
   ],
   "pap-endpoint-enforcement": [
    "na",
    0,
    2
   ],
   "pap-cross-protocol": [
    "na",
    0,
    2
   ],
   "mcp-server": [
    "warning",
    5,
    6
   ],
   "mcp-error-handling": [
    "na",
    0,
    2
   ],
   "mcp-transport-modern": [
    "na",
    0,
    1
   ],
   "webmcp": [
    "fail",
    0,
    5
   ],
   "rate-limit-headers": [
    "na",
    0,
    2
   ],
   "idempotency-key-support": [
    "na",
    0,
    3
   ],
   "json-error-responses": [
    "fail",
    0,
    4
   ],
   "api-error-model": [
    "na",
    0,
    3
   ],
   "api-versioning-policy": [
    "na",
    0,
    3
   ],
   "pagination-shape": [
    "na",
    0,
    2
   ],
   "async-job-pattern": [
    "na",
    0,
    2
   ],
   "cli-tool": [
    "pass",
    3,
    3
   ],
   "rest-sdk-packages": [
    "warning",
    2,
    3
   ],
   "nlweb-ask": [
    "fail",
    0,
    1
   ],
   "nlweb-streaming": [
    "fail",
    0,
    1
   ],
   "response-schema-coverage": [
    "na",
    0,
    2
   ],
   "mcp-tool-annotations": [
    "na",
    0,
    2
   ],
   "mcp-server-card": [
    "fail",
    0,
    2
   ],
   "mcp-multi-surface-coverage": [
    "fail",
    0,
    2
   ],
   "sandbox-environment": [
    "warning",
    0,
    2
   ],
   "batch-endpoints": [
    "na",
    0,
    2
   ],
   "mcp-resource-listing": [
    "na",
    0,
    3
   ],
   "graphql-error-type-definition": [
    "na",
    0,
    3
   ],
   "graphql-versioning-policy": [
    "na",
    0,
    2
   ],
   "graphql-pagination-pattern": [
    "na",
    0,
    2
   ],
   "graphql-async-job-pattern": [
    "na",
    0,
    2
   ],
   "graphql-schema-completeness": [
    "na",
    0,
    3
   ],
   "graphql-batch-mutations": [
    "na",
    0,
    2
   ],
   "agent-friendly-404": [
    "warning",
    1,
    2
   ],
   "ax-document-structure": [
    "na",
    0,
    3
   ],
   "ax-native-controls": [
    "na",
    0,
    3
   ],
   "ax-accessible-names": [
    "na",
    0,
    2
   ],
   "ax-form-labeling": [
    "na",
    0,
    2
   ],
   "ax-tree-injection-safe": [
    "pass",
    2,
    2
   ],
   "mcp-app-registry": [
    "na",
    0,
    4
   ],
   "a2ui-support": [
    "fail",
    0,
    2
   ],
   "mcp-apps-ui-quality": [
    "na",
    0,
    4
   ],
   "mcp-view-domain": [
    "na",
    0,
    4
   ],
   "mcp-view-csp": [
    "na",
    0,
    4
   ],
   "api-schema-analysis": [
    "fail",
    0,
    2
   ],
   "function-calling-compat": [
    "fail",
    0,
    2
   ],
   "mcp-resource-quality": [
    "na",
    0,
    3
   ],
   "mpp-support": [
    "warning",
    0,
    2
   ],
   "x402-support": [
    "warning",
    0,
    2
   ],
   "ucp-support": [
    "warning",
    0,
    3
   ],
   "acp-support": [
    "warning",
    0,
    3
   ],
   "acp-delegate-payment": [
    "warning",
    0,
    3
   ],
   "ap2-support": [
    "warning",
    0,
    3
   ]
  },
  "flagged": [
   {
    "id": "public-api",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 7,
    "tier": "required",
    "est": 5.4,
    "detail": "No publicly reachable API surface detected (REST and GraphQL both absent or auth-gated)"
   },
   {
    "id": "openapi-spec",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 7,
    "tier": "required",
    "est": 3.9,
    "detail": "No OpenAPI/Swagger specification found"
   },
   {
    "id": "scoped-permissions",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 5,
    "tier": "recommended",
    "est": 3.8,
    "detail": "No declared OAuth scopes, security schemes, or scoped-permission documentation found"
   },
   {
    "id": "webmcp",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 5,
    "tier": "required",
    "est": 3.8,
    "detail": "No WebMCP support detected - no document.modelContext / navigator.modelContext usage found"
   },
   {
    "id": "json-error-responses",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 4,
    "tier": "required",
    "est": 3.1,
    "detail": "API does not return JSON error responses (or no API detected)"
   },
   {
    "id": "agent-instruction",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "required",
    "est": 1.7,
    "detail": "No agent instruction file with when-to-use guidance found"
   },
   {
    "id": "public-api-docs",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "required",
    "est": 1.7,
    "detail": "No public API or documentation page linked from homepage"
   },
   {
    "id": "api-schema-analysis",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.5,
    "detail": "No API schema detected"
   },
   {
    "id": "function-calling-compat",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.5,
    "detail": "No API spec found - function calling requires discoverable endpoints"
   },
   {
    "id": "ard-catalog",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 1.2,
    "detail": "No /.well-known/ard.json, no same-site rel=\"ard\" link, and no legacy /.well-known/ai-catalog.json"
   },
   {
    "id": "agent-discovery-file",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 1.1,
    "detail": "No agent discovery file found"
   },
   {
    "id": "content-no-js",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 3,
    "tier": "required",
    "est": 1.1,
    "detail": "Homepage: The homepage has little text without JavaScript (56 chars), though nothing in it shows it needs JavaScript to render. 3 of 3 sampled inner pages have text without JavaScript (2 skipped)."
   },
   {
    "id": "json-ld",
    "layer": "accessibility",
    "status": "warning",
    "score": 2,
    "max": 4,
    "tier": "required",
    "est": 1.1,
    "detail": "JSON-LD Organization found - missing description on this entity"
   },
   {
    "id": "agent-friendly-404",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.8,
    "detail": "The nonexistent path https://wix.com/__ora-404-probe-gooaop7j correctly returns HTTP 404. Partial credit: no Markdown error body was detected."
   },
   {
    "id": "mcp-server",
    "layer": "usability",
    "status": "warning",
    "score": 5,
    "max": 6,
    "tier": "required",
    "est": 0.8,
    "detail": "MCP server detected at https://mcp.wix.com/mcp; it requires authentication. Presence is verified (5/6), but Ora could not inspect its tools or verify access scopes without credentials."
   },
   {
    "id": "rest-sdk-packages",
    "layer": "usability",
    "status": "warning",
    "score": 2,
    "max": 3,
    "tier": "recommended",
    "est": 0.8,
    "detail": "SDK packages found in npm, rubygems"
   },
   {
    "id": "agent-auth-discovery-metadata",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 3,
    "tier": "recommended",
    "est": 0.7,
    "detail": "PRM + AS metadata both present (PRM discovered at https://mcp.wix.com) (AS metadata fetched from advertised origin https://mcp.wix.com) but AS metadata has no agent_auth block"
   },
   {
    "id": "agent-auth-endpoints-reachable",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.7,
    "detail": "No agent_auth endpoint URIs found in AS metadata or /auth.md prose; nothing to probe"
   },
   {
    "id": "auth-md-exists",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.7,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "auth-md-structure",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.7,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "mcp-multi-surface-coverage",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.7,
    "detail": "You run an MCP server for your product, but not one for your documentation. This bonus needs two MCP servers: one for your product so agents can take actions,"
   },
   {
    "id": "mcp-server-card",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.7,
    "detail": "No MCP server card found for https://mcp.wix.com/mcp (checked /.well-known/mcp/server-card.json, the site's ai-catalog.json, servers[].card in mcp.json, and <server>/server-card)"
   },
   {
    "id": "sandbox-environment",
    "layer": "usability",
    "status": "warning",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.7,
    "detail": "Sandbox/test environment mentioned in llms.txt but no sandbox surface verified"
   },
   {
    "id": "llms-txt-formatting",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "The llms.txt at https://wix.com/llms.txt is well-formatted with markdown links, but at 37,905 characters it exceeds the 30,000-character recommendation for a navigation index."
   },
   {
    "id": "org-schema-completeness",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "Organization schema found but missing: address"
   },
   {
    "id": "trust-anchors",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "required",
    "est": 0.6,
    "detail": "Only About page verified - missing: Contact, Privacy"
   },
   {
    "id": "a2a-agent-card",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.4,
    "detail": "No A2A agent card found at /.well-known/agent-card.json"
   },
   {
    "id": "api-catalog-rfc9727",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.4,
    "detail": "No /.well-known/api-catalog found (RFC 9727)"
   },
   {
    "id": "link-headers-discovery",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 0.2,
    "detail": "Link header present but no agent-relevant rel values (sitemap, describedby, alternate, service-desc)"
   },
   {
    "id": "markdown-negotiation-vary",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.2,
    "detail": "Homepage https://wix.com does not meet the Markdown negotiation requirements: Accept: text/markdown returned text/html; charset=utf-8; Vary header missing Accept (got \"accept-encoding\")"
   },
   {
    "id": "mcp-well-known-discovery",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.2,
    "detail": "MCP server at https://mcp.wix.com/mcp - list its server card, hosted on your own domain, in /.well-known/ai-catalog.json so MCP clients can discover it"
   },
   {
    "id": "a2ui-support",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No A2UI or generative UI support detected"
   },
   {
    "id": "acp-delegate-payment",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": null,
    "detail": "No ACP Delegate Payment signals detected"
   },
   {
    "id": "acp-support",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 3,
    "tier": "required",
    "est": null,
    "detail": "no ACP (Agentic Commerce Protocol) signals detected"
   },
   {
    "id": "agent-mode-view",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "?mode=agent returns same content as homepage (no dedicated agent view)"
   },
   {
    "id": "agent-plugins-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No Agent Plugins manifest (plugin.json) found in discovered repos"
   },
   {
    "id": "agent-rules-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Could not locate a public repo containing agent configs or rules. If our probes missed it, AI coding agents likely will too - link the repo from your homepage or docs so it's discoverable."
   },
   {
    "id": "agent-ua-markdown",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly."
   },
   {
    "id": "ap2-support",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": null,
    "detail": "No AP2 (Agent Payments Protocol) signals detected"
   },
   {
    "id": "markdown-link-alternate",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No sampled page advertises a markdown alternate. Add <link rel=\"alternate\" type=\"text/markdown\" href=\"...\"> (or the equivalent Link response header) pointing at a markdown twin of the page."
   },
   {
    "id": "markdown-negotiation",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Missing markdown content negotiation. Homepage returned text/html when probed with Accept: text/markdown (expected text/markdown), and none of the well-known root paths (/llms.md, /auth.md, /agents.md, /developers.md, /api.md, /index.md,"
   },
   {
    "id": "markdown-url-fallback",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "Homepage does not support the .md suffix. Probed https://wix.com/index.md and it did not return markdown (expected text/markdown content-type or a heading-led non-HTML body)."
   },
   {
    "id": "modular-llms-txt",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No section-level llms.txt found. Tried /docs/llms.txt, /api/llms.txt, /developers/llms.txt, /guides/llms.txt, /reference/llms.txt. This is a bonus check: it can add a point and never costs one."
   },
   {
    "id": "mpp-support",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": null,
    "detail": "No MPP (Machine Payments Protocol) support detected"
   },
   {
    "id": "nlweb-ask",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No NLWeb-conformant /ask endpoint found via GET or POST"
   },
   {
    "id": "nlweb-schema-feeds",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No schemamap: directive in robots.txt"
   },
   {
    "id": "nlweb-streaming",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "NLWeb /ask does not support SSE streaming via GET or POST"
   },
   {
    "id": "pricing-md",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No pricing.md found - agents need machine-readable pricing to compare products and make purchase recommendations"
   },
   {
    "id": "registry-branding",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No registry branding (name, icon, description) found"
   },
   {
    "id": "ucp-support",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 3,
    "tier": "required",
    "est": null,
    "detail": "no UCP (Universal Commerce Protocol) signals detected"
   },
   {
    "id": "web-bot-auth-directory",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No /.well-known/http-message-signatures-directory found"
   },
   {
    "id": "x402-support",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": null,
    "detail": "No x402 payment protocol support detected"
   }
  ],
  "seen": {
   "brand-search-accuracy": "wix.com ranks #4 for \"wix.com\" (searched your brand name alone: no main product term from your homepage qualified)",
   "wikipedia-presence": "Wikipedia \"Wix.com\" and Wikidata Q420506 both verified - domain confirmed on both sources",
   "robots-ai-policy-quality": "AI search crawlers: allowed in 3 of 3 checks (3 crawlers on 1 page). AI training crawlers: allowed in 2 of 2 checks (2 crawlers on 1 page), not scored.",
   "noindex-directives": "No noindex on the homepage: no robots, googlebot or bingbot meta tag and no X-Robots-Tag header hides it from search.",
   "sitemap": "Valid sitemap found at https://www.wix.com/sitemap.xml with 10828 entries",
   "content-no-js": "Homepage: The homepage has little text without JavaScript (56 chars), though nothing in it shows it needs JavaScript to render. 3 of 3 sampled inner pages have text without JavaScript (2 skipped).",
   "bot-detection": "Site accessible to 4 agent user-agents (ChatGPT-User, OAI-SearchBot, Claude-User, PerplexityBot).",
   "agent-discovery-file": "No agent discovery file found",
   "a2a-agent-card": "No A2A agent card found at /.well-known/agent-card.json",
   "mcp-well-known-discovery": "MCP server at https://mcp.wix.com/mcp - list its server card, hosted on your own domain, in /.well-known/ai-catalog.json so MCP clients can discover it",
   "robots-agent-user-policy": "No applicable crawl or usage restriction found for 3 user-triggered agents (chatgpt-user, claude-user, perplexity-user) on 1 public page: https://wix.com/. Declared policy only;",
   "llms-txt-exists": "Found the llms.txt at https://wix.com/llms.txt.",
   "llms-txt-formatting": "The llms.txt at https://wix.com/llms.txt is well-formatted with markdown links, but at 37,905 characters it exceeds the 30,000-character recommendation for a navigation index.",
   "json-ld": "JSON-LD Organization found - missing description on this entity",
   "public-api-docs": "No public API or documentation page linked from homepage",
   "metadata-completeness": "All metadata signals present: canonical URL, lang=\"en\", og:image, og:type",
   "page-token-budget": "All 6 measured pages fit an agent context budget (largest ~4K tokens)",
   "docs-auth-gate": "All 5 sampled pages are publicly readable (5 with substantive content)",
   "openapi-spec": "No OpenAPI/Swagger specification found",
   "developer-portal": "Developer portal found at /dashboard",
   "markdown-negotiation": "Missing markdown content negotiation. Homepage returned text/html when probed with Accept: text/markdown (expected text/markdown), and none of the well-known root paths (/llms.md, /auth.md, /agents.md, /developers.md,",
   "agent-ua-markdown": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly.",
   "agent-crawler-reachability": "Reachable to every agent we tested - ChatGPT-User: reachable, OAI-SearchBot: reachable, Claude-User: reachable, PerplexityBot: reachable",
   "public-api": "No publicly reachable API surface detected (REST and GraphQL both absent or auth-gated)",
   "oauth-support": "OAuth authorization server metadata at https://mcp.wix.com",
   "mcp-server": "MCP server detected at https://mcp.wix.com/mcp; it requires authentication. Presence is verified (5/6), but Ora could not inspect its tools or verify access scopes without credentials.",
   "webmcp": "No WebMCP support detected - no document.modelContext / navigator.modelContext usage found",
   "cli-tool": "CLI package found on npm: @wix/cli",
   "rest-sdk-packages": "SDK packages found in npm, rubygems",
   "nlweb-ask": "No NLWeb-conformant /ask endpoint found via GET or POST",
   "mpp-support": "No MPP (Machine Payments Protocol) support detected",
   "x402-support": "No x402 payment protocol support detected",
   "ucp-support": "no UCP (Universal Commerce Protocol) signals detected",
   "acp-support": "no ACP (Agentic Commerce Protocol) signals detected",
   "ap2-support": "No AP2 (Agent Payments Protocol) signals detected"
  }
 },
 {
  "slug": "zapier",
  "name": "Zapier",
  "domain": "zapier.com",
  "finalUrl": "https://zapier.com/",
  "read": "2026-11-09",
  "scannedAt": "2026-11-08T23:29:55.931+00:00",
  "score": 84,
  "max": 100,
  "grade": "B",
  "category": "Productivity",
  "scoringVersion": 2,
  "rulesUrl": "https://ora.ai/api/ranker/releases/2/rules",
  "summary": "Zapier offers broad discovery and a published OpenAPI spec, but lacks WebMCP support and machine-readable scope declarations.",
  "layers": [
   {
    "id": "discovery",
    "name": "Discovery",
    "score": 19,
    "max": 19
   },
   {
    "id": "accessibility",
    "name": "Access",
    "score": 58,
    "max": 64
   },
   {
    "id": "usability",
    "name": "Usability",
    "score": 88.5,
    "max": 123
   },
   {
    "id": "payments",
    "name": "Payments",
    "score": 0,
    "max": 0
   }
  ],
  "checks": {
   "ard-catalog": [
    "pass",
    1,
    1
   ],
   "ai-catalog-published": [
    "pass",
    1,
    1
   ],
   "ard-entries-valid": [
    "pass",
    2,
    2
   ],
   "ard-trust-manifest": [
    "fail",
    0,
    2
   ],
   "agentic-search-usecase": [
    "na",
    0,
    6
   ],
   "agentic-search-specific": [
    "pass",
    3,
    3
   ],
   "brand-search-accuracy": [
    "pass",
    3,
    3
   ],
   "wikipedia-presence": [
    "pass",
    4,
    4
   ],
   "robots-ai-policy-quality": [
    "pass",
    2,
    2
   ],
   "mcp-registry-listed": [
    "pass",
    1,
    1
   ],
   "npm-sdk-package": [
    "pass",
    1,
    1
   ],
   "agent-rules-repo": [
    "pass",
    1,
    1
   ],
   "agent-plugins-repo": [
    "warning",
    0,
    1
   ],
   "registry-branding": [
    "warning",
    1,
    2
   ],
   "chatgpt-app-listed": [
    "fail",
    0,
    2
   ],
   "noindex-directives": [
    "pass",
    1,
    1
   ],
   "sitemap": [
    "pass",
    2,
    2
   ],
   "content-no-js": [
    "pass",
    3,
    3
   ],
   "bot-detection": [
    "pass",
    2,
    2
   ],
   "agent-discovery-file": [
    "pass",
    2,
    2
   ],
   "agent-skills-index-v2": [
    "pass",
    2,
    2
   ],
   "a2a-agent-card": [
    "fail",
    0,
    2
   ],
   "skills-sh-listed": [
    "pass",
    1,
    1
   ],
   "pricing-md": [
    "pass",
    2,
    2
   ],
   "nlweb-schema-feeds": [
    "fail",
    0,
    1
   ],
   "mcp-well-known-discovery": [
    "pass",
    2,
    2
   ],
   "agent-mode-view": [
    "fail",
    0,
    2
   ],
   "link-headers-discovery": [
    "pass",
    1,
    1
   ],
   "markdown-url-fallback": [
    "fail",
    0,
    2
   ],
   "modular-llms-txt": [
    "fail",
    0,
    1
   ],
   "sitemap-lastmod": [
    "warning",
    0,
    1
   ],
   "robots-agent-user-policy": [
    "pass",
    2,
    2
   ],
   "llms-txt-exists": [
    "pass",
    1,
    1
   ],
   "llms-txt-formatting": [
    "pass",
    2,
    2
   ],
   "json-ld": [
    "pass",
    4,
    4
   ],
   "pricing-info": [
    "pass",
    3,
    3
   ],
   "public-api-docs": [
    "pass",
    3,
    3
   ],
   "agent-instruction": [
    "pass",
    3,
    3
   ],
   "skills-sh-quality": [
    "pass",
    2,
    2
   ],
   "json-ld-entity-linking": [
    "pass",
    2,
    2
   ],
   "metadata-completeness": [
    "warning",
    1,
    2
   ],
   "org-schema-completeness": [
    "warning",
    1,
    2
   ],
   "schema-type-breadth": [
    "fail",
    0,
    2
   ],
   "trust-anchors": [
    "pass",
    2,
    2
   ],
   "llms-txt-links-resolve": [
    "pass",
    2,
    2
   ],
   "markdown-link-alternate": [
    "fail",
    0,
    1
   ],
   "markdown-frontmatter": [
    "pass",
    1,
    1
   ],
   "redirect-hygiene": [
    "pass",
    1,
    1
   ],
   "page-token-budget": [
    "pass",
    1,
    1
   ],
   "code-fence-validity": [
    "pass",
    1,
    1
   ],
   "docs-auth-gate": [
    "pass",
    2,
    2
   ],
   "openapi-spec": [
    "warning",
    5,
    7
   ],
   "developer-portal": [
    "pass",
    6,
    6
   ],
   "api-catalog-rfc9727": [
    "pass",
    2,
    2
   ],
   "markdown-negotiation": [
    "pass",
    1,
    1
   ],
   "markdown-negotiation-vary": [
    "pass",
    1,
    1
   ],
   "agent-ua-markdown": [
    "fail",
    0,
    1
   ],
   "agent-crawler-reachability": [
    "pass",
    2,
    2
   ],
   "mcp-tool-descriptions": [
    "pass",
    3,
    3
   ],
   "mcp-param-schemas": [
    "pass",
    2,
    2
   ],
   "mcp-server-identity": [
    "pass",
    1,
    1
   ],
   "mcp-tool-listing": [
    "pass",
    3,
    3
   ],
   "mcp-tool-naming": [
    "pass",
    2,
    2
   ],
   "public-api": [
    "pass",
    7,
    7
   ],
   "oauth-support": [
    "pass",
    5,
    5
   ],
   "scoped-permissions": [
    "warning",
    2,
    5
   ],
   "mcp-auth-mechanism": [
    "pass",
    2,
    2
   ],
   "mcp-oauth-metadata": [
    "na",
    0,
    2
   ],
   "mcp-pkce-s256": [
    "na",
    0,
    2
   ],
   "onboarding-friction": [
    "warning",
    1,
    2
   ],
   "web-bot-auth-directory": [
    "fail",
    0,
    2
   ],
   "oauth-protected-resource": [
    "pass",
    2,
    2
   ],
   "auth-md-exists": [
    "pass",
    2,
    2
   ],
   "auth-md-structure": [
    "warning",
    1,
    2
   ],
   "auth-md-walkthrough-simulation": [
    "fail",
    0,
    2
   ],
   "agent-auth-discovery-metadata": [
    "fail",
    0,
    3
   ],
   "agent-auth-www-authenticate": [
    "pass",
    1,
    1
   ],
   "agent-auth-endpoints-reachable": [
    "fail",
    0,
    2
   ],
   "pap-discovery": [
    "na",
    0,
    2
   ],
   "pap-issuer-binding": [
    "na",
    0,
    2
   ],
   "pap-auth-config": [
    "na",
    0,
    2
   ],
   "pap-interfaces": [
    "na",
    0,
    2
   ],
   "pap-endpoint-enforcement": [
    "na",
    0,
    2
   ],
   "pap-cross-protocol": [
    "na",
    0,
    2
   ],
   "mcp-server": [
    "warning",
    5,
    6
   ],
   "mcp-error-handling": [
    "pass",
    2,
    2
   ],
   "mcp-transport-modern": [
    "pass",
    1,
    1
   ],
   "webmcp": [
    "warning",
    0,
    5
   ],
   "rate-limit-headers": [
    "warning",
    1,
    2
   ],
   "idempotency-key-support": [
    "fail",
    0,
    3
   ],
   "json-error-responses": [
    "pass",
    4,
    4
   ],
   "api-error-model": [
    "fail",
    0,
    3
   ],
   "api-versioning-policy": [
    "fail",
    0,
    3
   ],
   "pagination-shape": [
    "warning",
    1,
    2
   ],
   "async-job-pattern": [
    "warning",
    1,
    2
   ],
   "cli-tool": [
    "pass",
    3,
    3
   ],
   "rest-sdk-packages": [
    "warning",
    1,
    3
   ],
   "nlweb-ask": [
    "fail",
    0,
    1
   ],
   "nlweb-streaming": [
    "fail",
    0,
    1
   ],
   "response-schema-coverage": [
    "warning",
    1,
    2
   ],
   "mcp-tool-annotations": [
    "pass",
    2,
    2
   ],
   "mcp-server-card": [
    "pass",
    2,
    2
   ],
   "mcp-multi-surface-coverage": [
    "pass",
    2,
    2
   ],
   "sandbox-environment": [
    "warning",
    0,
    2
   ],
   "batch-endpoints": [
    "fail",
    0,
    2
   ],
   "mcp-resource-listing": [
    "pass",
    3,
    3
   ],
   "graphql-error-type-definition": [
    "fail",
    0,
    3
   ],
   "graphql-versioning-policy": [
    "fail",
    0,
    2
   ],
   "graphql-pagination-pattern": [
    "warning",
    1,
    2
   ],
   "graphql-async-job-pattern": [
    "fail",
    0,
    2
   ],
   "graphql-schema-completeness": [
    "na",
    0,
    3
   ],
   "graphql-batch-mutations": [
    "na",
    0,
    2
   ],
   "agent-friendly-404": [
    "warning",
    1,
    2
   ],
   "ax-document-structure": [
    "pass",
    3,
    3
   ],
   "ax-native-controls": [
    "pass",
    3,
    3
   ],
   "ax-accessible-names": [
    "pass",
    2,
    2
   ],
   "ax-form-labeling": [
    "na",
    0,
    2
   ],
   "ax-tree-injection-safe": [
    "pass",
    2,
    2
   ],
   "mcp-app-registry": [
    "na",
    0,
    4
   ],
   "a2ui-support": [
    "fail",
    0,
    2
   ],
   "mcp-apps-ui-quality": [
    "na",
    0,
    4
   ],
   "mcp-view-domain": [
    "na",
    0,
    4
   ],
   "mcp-view-csp": [
    "na",
    0,
    4
   ],
   "api-schema-analysis": [
    "warning",
    1.5,
    2
   ],
   "function-calling-compat": [
    "pass",
    2,
    2
   ],
   "mcp-resource-quality": [
    "pass",
    3,
    3
   ],
   "mpp-support": [
    "warning",
    0,
    2
   ],
   "x402-support": [
    "warning",
    0,
    2
   ],
   "ucp-support": [
    "warning",
    0,
    3
   ],
   "acp-support": [
    "warning",
    0,
    3
   ],
   "acp-delegate-payment": [
    "warning",
    0,
    3
   ],
   "ap2-support": [
    "warning",
    0,
    3
   ]
  },
  "flagged": [
   {
    "id": "webmcp",
    "layer": "usability",
    "status": "warning",
    "score": 0,
    "max": 5,
    "tier": "required",
    "est": 1.8,
    "detail": "No WebMCP support detected on the homepage. WebMCP is mentioned in the documentation at /developers, but a mention is not an implementation, so it earns no points."
   },
   {
    "id": "api-error-model",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": 1.1,
    "detail": "No typed error model found"
   },
   {
    "id": "api-versioning-policy",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": 1.1,
    "detail": "No API versioning strategy found - add URL path versioning (/v1/, /v2/) or a versioned header parameter in your OpenAPI spec"
   },
   {
    "id": "graphql-error-type-definition",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": 1.1,
    "detail": "GraphQL introspection auth-gated and no typed graphql error model documentation found on GraphQL-tagged pages"
   },
   {
    "id": "idempotency-key-support",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": 1.1,
    "detail": "No REST Idempotency-Key support detected (GraphQL signal: fail 0)."
   },
   {
    "id": "scoped-permissions",
    "layer": "usability",
    "status": "warning",
    "score": 2,
    "max": 5,
    "tier": "recommended",
    "est": 1.1,
    "detail": "Scoped permissions described at https://docs.zapier.com, but no machine-readable scope declaration found (OpenAPI oauth2 scopes or RFC 9728 scopes_supported)"
   },
   {
    "id": "openapi-spec",
    "layer": "accessibility",
    "status": "warning",
    "score": 5,
    "max": 7,
    "tier": "required",
    "est": 1,
    "detail": "OpenAPI spec (YAML) found at https://docs.zapier.com/api-reference/specs/actions.yaml"
   },
   {
    "id": "schema-type-breadth",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1,
    "detail": "No extended schema types found - AI can only answer basic questions about this entity"
   },
   {
    "id": "graphql-async-job-pattern",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.7,
    "detail": "GraphQL introspection auth-gated and no graphql async-job pattern documentation found on GraphQL-tagged pages"
   },
   {
    "id": "graphql-versioning-policy",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.7,
    "detail": "GraphQL introspection auth-gated and no graphql versioning / deprecation policy documentation found on GraphQL-tagged pages"
   },
   {
    "id": "rest-sdk-packages",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 3,
    "tier": "recommended",
    "est": 0.7,
    "detail": "SDK package found only in npm"
   },
   {
    "id": "metadata-completeness",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "required",
    "est": 0.5,
    "detail": "3/4 metadata signals present - missing: og:type"
   },
   {
    "id": "org-schema-completeness",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.5,
    "detail": "Organization schema found but missing: contactPoint"
   },
   {
    "id": "agent-friendly-404",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.4,
    "detail": "The nonexistent path https://zapier.com/__ora-404-probe-g4jso61f correctly returns HTTP 404. Partial credit: no Markdown error body was detected."
   },
   {
    "id": "async-job-pattern",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.4,
    "detail": "Async job pattern signals found in API spec (202 + job tracking field)"
   },
   {
    "id": "graphql-pagination-pattern",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.4,
    "detail": "GraphQL pagination pattern described in documentation at https://docs.zapier.com/powered-by-zapier/api-reference/promotions-openapi.yaml; schema not introspectable to verify"
   },
   {
    "id": "mcp-server",
    "layer": "usability",
    "status": "warning",
    "score": 5,
    "max": 6,
    "tier": "required",
    "est": 0.4,
    "detail": "MCP server detected at https://mcp.zapier.com/api/v1/connect; it requires authentication. Presence is verified (5/6), but Ora could not inspect its tools or verify access scopes without credentials."
   },
   {
    "id": "onboarding-friction",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.4,
    "detail": "Onboarding signals described but not verified live: free tier available, self-serve key generation, sandbox/test environment, zero-auth access"
   },
   {
    "id": "pagination-shape",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.4,
    "detail": "Offset/page-based pagination fields detected in API spec"
   },
   {
    "id": "rate-limit-headers",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.4,
    "detail": "REST rate-limit headers documented in OpenAPI spec, but not observed on a live response. (GraphQL signal: warning 1)."
   },
   {
    "id": "response-schema-coverage",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.4,
    "detail": "OpenAPI spec found (YAML) with schema and JSON content type signals - parse to evaluate coverage precisely"
   },
   {
    "id": "agent-auth-discovery-metadata",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": 0.3,
    "detail": "Neither /.well-known/oauth-protected-resource nor /.well-known/oauth-authorization-server found. Probed: zapier.com, mcp.zapier.com, api.zapier.com."
   },
   {
    "id": "agent-auth-endpoints-reachable",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.2,
    "detail": "No agent_auth endpoint URIs found in AS metadata or /auth.md prose; nothing to probe"
   },
   {
    "id": "api-schema-analysis",
    "layer": "usability",
    "status": "warning",
    "score": 1.5,
    "max": 2,
    "tier": "recommended",
    "est": 0.2,
    "detail": "REST: OpenAPI spec found (YAML) but no operation descriptions or summaries found | GraphQL: schema details documented at https://docs.zapier.com/powered-by-zapier/api-reference/promotions-openapi.yaml (introspection auth-gated) | Combined."
   },
   {
    "id": "auth-md-walkthrough-simulation",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.2,
    "detail": "Static fallback: walkthrough breaks at discovery - PRM and AS metadata unreachable"
   },
   {
    "id": "batch-endpoints",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.2,
    "detail": "No batch or bulk endpoint pattern found"
   },
   {
    "id": "sandbox-environment",
    "layer": "usability",
    "status": "warning",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.2,
    "detail": "Sandbox/test environment mentioned in llms.txt but no sandbox surface verified"
   },
   {
    "id": "a2a-agent-card",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.1,
    "detail": "No A2A agent card found at /.well-known/agent-card.json"
   },
   {
    "id": "auth-md-structure",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.1,
    "detail": "auth.md at https://zapier.com/auth.md - 3/8 walkthrough sections (found Discover, Register, and Use credential; missing Pick a method, Claim, Exchange, Errors, and Revocation);"
   },
   {
    "id": "mcp-server-card",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.1,
    "detail": "MCP server card found at https://zapier.com/.well-known/mcp/server-card.json but missing tools[]"
   },
   {
    "id": "a2ui-support",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No A2UI or generative UI support detected"
   },
   {
    "id": "acp-delegate-payment",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": null,
    "detail": "No ACP Delegate Payment signals detected"
   },
   {
    "id": "acp-support",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 3,
    "tier": "required",
    "est": null,
    "detail": "no ACP (Agentic Commerce Protocol) signals detected"
   },
   {
    "id": "agent-mode-view",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "?mode=agent returns same content as homepage (no dedicated agent view)"
   },
   {
    "id": "agent-plugins-repo",
    "layer": "discovery",
    "status": "warning",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Plugin manifest found without the Agent Plugins $schema identifier: github.com/zapier/sdk/blob/main/.claude-plugin/plugin.json"
   },
   {
    "id": "agent-ua-markdown",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly."
   },
   {
    "id": "ap2-support",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": null,
    "detail": "No AP2 (Agent Payments Protocol) signals detected"
   },
   {
    "id": "ard-trust-manifest",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0,
    "detail": "No entry carries a trustManifest"
   },
   {
    "id": "chatgpt-app-listed",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0,
    "detail": "Not found in ChatGPT app directory"
   },
   {
    "id": "markdown-link-alternate",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No sampled page advertises a markdown alternate. Add <link rel=\"alternate\" type=\"text/markdown\" href=\"...\"> (or the equivalent Link response header) pointing at a markdown twin of the page."
   },
   {
    "id": "markdown-url-fallback",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "Homepage does not support the .md suffix. Probed https://zapier.com/index.md and it did not return markdown (expected text/markdown content-type or a heading-led non-HTML body)."
   },
   {
    "id": "modular-llms-txt",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No section-level llms.txt found. Tried /docs/llms.txt, /api/llms.txt, /developers/llms.txt, /guides/llms.txt, /reference/llms.txt, /workflows/llms.txt, /mcp/llms.txt, /sdk/llms.txt, /tables/llms.txt, /apps/llms.txt."
   },
   {
    "id": "mpp-support",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": null,
    "detail": "No MPP (Machine Payments Protocol) support detected"
   },
   {
    "id": "nlweb-ask",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No NLWeb-conformant /ask endpoint found via GET or POST"
   },
   {
    "id": "nlweb-schema-feeds",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No schemamap: directive in robots.txt"
   },
   {
    "id": "nlweb-streaming",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "NLWeb /ask does not support SSE streaming via GET or POST"
   },
   {
    "id": "registry-branding",
    "layer": "discovery",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "MCP manifest has name and description but no icon at /.well-known/mcp/server-card.json"
   },
   {
    "id": "sitemap-lastmod",
    "layer": "accessibility",
    "status": "warning",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0,
    "detail": "Sitemap lastmod dates are all stale - the newest is 453 days old. Update lastmod when content changes or agents will deprioritize the whole site as unmaintained."
   },
   {
    "id": "ucp-support",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 3,
    "tier": "required",
    "est": null,
    "detail": "no UCP (Universal Commerce Protocol) signals detected"
   },
   {
    "id": "web-bot-auth-directory",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No /.well-known/http-message-signatures-directory found"
   },
   {
    "id": "x402-support",
    "layer": "payments",
    "status": "warning",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": null,
    "detail": "No x402 payment protocol support detected"
   }
  ],
  "seen": {
   "brand-search-accuracy": "zapier.com ranks #4 for \"Zapier\" (searched your brand name alone: no main product term from your homepage qualified)",
   "wikipedia-presence": "Wikipedia \"Zapier\" and Wikidata Q27150165 both verified - domain confirmed on both sources",
   "robots-ai-policy-quality": "AI search crawlers: allowed in 18 of 18 checks (3 crawlers on 6 pages). AI training crawlers: allowed in 12 of 12 checks (2 crawlers on 6 pages), not scored.",
   "noindex-directives": "No noindex on the homepage: no robots, googlebot or bingbot meta tag and no X-Robots-Tag header hides it from search.",
   "sitemap": "Valid sitemap found at https://zapier.com/uag6x9zaeydnbfy75xsggcsb37h8cgzf-two-service-sitemap.xml with multiple sitemaps entries",
   "content-no-js": "Homepage: 4794 chars, semantic headings (1 H1 + 9 H2s + 11 H3s), 6.4% content ratio. 4 of 4 sampled inner pages have text without JavaScript (1 skipped).",
   "bot-detection": "Site accessible to 4 agent user-agents (ChatGPT-User, OAI-SearchBot, Claude-User, PerplexityBot).",
   "agent-discovery-file": "Agent Skills index (agentskills.io) found at /.well-known/agent-skills/index.json with 4 skill(s)",
   "a2a-agent-card": "No A2A agent card found at /.well-known/agent-card.json",
   "mcp-well-known-discovery": "MCP server discoverable via server-card.json at /.well-known/mcp/",
   "robots-agent-user-policy": "No applicable crawl or usage restriction found for 3 user-triggered agents (chatgpt-user, claude-user, perplexity-user) on 1 public page: https://zapier.com/. Declared policy only;",
   "llms-txt-exists": "Found the llms.txt at https://zapier.com/llms.txt.",
   "llms-txt-formatting": "The llms.txt is well-formatted: 137 lines with markdown links, 13,876 characters in total.",
   "json-ld": "Rich JSON-LD identity: Organization with name, description, url, and sameAs/logo/address (2 block(s))",
   "public-api-docs": "Documentation site found at https://docs.zapier.com",
   "metadata-completeness": "3/4 metadata signals present - missing: og:type",
   "page-token-budget": "All 8 measured pages fit an agent context budget (largest ~5K tokens)",
   "docs-auth-gate": "All 5 sampled pages are publicly readable (5 with substantive content)",
   "openapi-spec": "OpenAPI spec (YAML) found at https://docs.zapier.com/api-reference/specs/actions.yaml",
   "developer-portal": "Developer portal found at https://docs.zapier.com",
   "markdown-negotiation": "Path-suffix markdown docs served with text/markdown content-type: /mcp.md, /auth.md",
   "agent-ua-markdown": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly.",
   "agent-crawler-reachability": "Reachable to every agent we tested - ChatGPT-User: reachable, OAI-SearchBot: reachable, Claude-User: reachable, PerplexityBot: reachable",
   "public-api": "REST API documentation found at https://docs.zapier.com/llms-full.txt. GraphQL endpoint at https://api.zapier.com/graphql is reachable; introspection requires authentication (API key / OAuth),",
   "oauth-support": "OAuth authorization server metadata at https://mcp.zapier.com",
   "mcp-server": "MCP server detected at https://mcp.zapier.com/api/v1/connect; it requires authentication. Presence is verified (5/6), but Ora could not inspect its tools or verify access scopes without credentials.",
   "webmcp": "No WebMCP support detected on the homepage. WebMCP is mentioned in the documentation at /developers, but a mention is not an implementation, so it earns no points.",
   "cli-tool": "CLI package found on npm: @zapier/install-zapier",
   "rest-sdk-packages": "SDK package found only in npm",
   "nlweb-ask": "No NLWeb-conformant /ask endpoint found via GET or POST",
   "mpp-support": "No MPP (Machine Payments Protocol) support detected",
   "x402-support": "No x402 payment protocol support detected",
   "ucp-support": "no UCP (Universal Commerce Protocol) signals detected",
   "acp-support": "no ACP (Agentic Commerce Protocol) signals detected",
   "ap2-support": "No AP2 (Agent Payments Protocol) signals detected"
  }
 },
 {
  "slug": "zoom",
  "name": "Zoom",
  "domain": "zoom.us",
  "finalUrl": "https://www.zoom.com/",
  "read": "2026-11-09",
  "scannedAt": "2026-11-09T10:42:18.345+00:00",
  "score": 66,
  "max": 100,
  "grade": "C",
  "category": "Communication & Support",
  "scoringVersion": 2,
  "rulesUrl": "https://ora.ai/api/ranker/releases/2/rules",
  "summary": "Zoom offers solid discoverability and SDK packages, but lacks a published OpenAPI specification for agents to call its API.",
  "layers": [
   {
    "id": "discovery",
    "name": "Discovery",
    "score": 14,
    "max": 15
   },
   {
    "id": "accessibility",
    "name": "Access",
    "score": 43,
    "max": 56
   },
   {
    "id": "usability",
    "name": "Usability",
    "score": 34,
    "max": 76
   },
   {
    "id": "payments",
    "name": "Payments",
    "score": 0,
    "max": 0
   }
  ],
  "checks": {
   "ard-catalog": [
    "fail",
    0,
    1
   ],
   "ai-catalog-published": [
    "na",
    0,
    1
   ],
   "ard-entries-valid": [
    "na",
    0,
    2
   ],
   "ard-trust-manifest": [
    "na",
    0,
    2
   ],
   "agentic-search-usecase": [
    "na",
    0,
    6
   ],
   "agentic-search-specific": [
    "pass",
    3,
    3
   ],
   "brand-search-accuracy": [
    "pass",
    3,
    3
   ],
   "wikipedia-presence": [
    "warning",
    2,
    4
   ],
   "robots-ai-policy-quality": [
    "pass",
    2,
    2
   ],
   "mcp-registry-listed": [
    "na",
    0,
    1
   ],
   "npm-sdk-package": [
    "pass",
    1,
    1
   ],
   "agent-rules-repo": [
    "fail",
    0,
    1
   ],
   "agent-plugins-repo": [
    "fail",
    0,
    1
   ],
   "registry-branding": [
    "na",
    0,
    2
   ],
   "chatgpt-app-listed": [
    "pass",
    2,
    2
   ],
   "noindex-directives": [
    "pass",
    1,
    1
   ],
   "sitemap": [
    "pass",
    2,
    2
   ],
   "content-no-js": [
    "pass",
    3,
    3
   ],
   "bot-detection": [
    "pass",
    2,
    2
   ],
   "agent-discovery-file": [
    "pass",
    2,
    2
   ],
   "agent-skills-index-v2": [
    "warning",
    1,
    2
   ],
   "a2a-agent-card": [
    "fail",
    0,
    2
   ],
   "skills-sh-listed": [
    "pass",
    1,
    1
   ],
   "pricing-md": [
    "fail",
    0,
    2
   ],
   "nlweb-schema-feeds": [
    "fail",
    0,
    1
   ],
   "mcp-well-known-discovery": [
    "fail",
    0,
    2
   ],
   "agent-mode-view": [
    "fail",
    0,
    2
   ],
   "link-headers-discovery": [
    "pass",
    1,
    1
   ],
   "markdown-url-fallback": [
    "fail",
    0,
    2
   ],
   "modular-llms-txt": [
    "fail",
    0,
    1
   ],
   "sitemap-lastmod": [
    "fail",
    0,
    1
   ],
   "robots-agent-user-policy": [
    "pass",
    2,
    2
   ],
   "llms-txt-exists": [
    "warning",
    0,
    1
   ],
   "llms-txt-formatting": [
    "fail",
    0,
    2
   ],
   "json-ld": [
    "warning",
    3,
    4
   ],
   "pricing-info": [
    "pass",
    3,
    3
   ],
   "public-api-docs": [
    "pass",
    3,
    3
   ],
   "agent-instruction": [
    "pass",
    3,
    3
   ],
   "skills-sh-quality": [
    "warning",
    1,
    2
   ],
   "json-ld-entity-linking": [
    "pass",
    2,
    2
   ],
   "metadata-completeness": [
    "pass",
    2,
    2
   ],
   "org-schema-completeness": [
    "na",
    0,
    2
   ],
   "schema-type-breadth": [
    "fail",
    0,
    2
   ],
   "trust-anchors": [
    "pass",
    2,
    2
   ],
   "llms-txt-links-resolve": [
    "na",
    0,
    2
   ],
   "markdown-link-alternate": [
    "fail",
    0,
    1
   ],
   "markdown-frontmatter": [
    "na",
    0,
    1
   ],
   "redirect-hygiene": [
    "pass",
    1,
    1
   ],
   "page-token-budget": [
    "pass",
    1,
    1
   ],
   "code-fence-validity": [
    "na",
    0,
    1
   ],
   "docs-auth-gate": [
    "pass",
    2,
    2
   ],
   "openapi-spec": [
    "fail",
    0,
    7
   ],
   "developer-portal": [
    "pass",
    6,
    6
   ],
   "api-catalog-rfc9727": [
    "warning",
    1,
    2
   ],
   "markdown-negotiation": [
    "fail",
    0,
    1
   ],
   "markdown-negotiation-vary": [
    "fail",
    0,
    1
   ],
   "agent-ua-markdown": [
    "fail",
    0,
    1
   ],
   "agent-crawler-reachability": [
    "pass",
    2,
    2
   ],
   "mcp-tool-descriptions": [
    "na",
    0,
    3
   ],
   "mcp-param-schemas": [
    "na",
    0,
    2
   ],
   "mcp-server-identity": [
    "na",
    0,
    1
   ],
   "mcp-tool-listing": [
    "na",
    0,
    3
   ],
   "mcp-tool-naming": [
    "na",
    0,
    2
   ],
   "public-api": [
    "pass",
    7,
    7
   ],
   "oauth-support": [
    "pass",
    5,
    5
   ],
   "scoped-permissions": [
    "fail",
    0,
    5
   ],
   "mcp-auth-mechanism": [
    "na",
    0,
    2
   ],
   "mcp-oauth-metadata": [
    "na",
    0,
    2
   ],
   "mcp-pkce-s256": [
    "na",
    0,
    2
   ],
   "onboarding-friction": [
    "pass",
    2,
    2
   ],
   "web-bot-auth-directory": [
    "fail",
    0,
    2
   ],
   "oauth-protected-resource": [
    "fail",
    0,
    2
   ],
   "auth-md-exists": [
    "fail",
    0,
    2
   ],
   "auth-md-structure": [
    "fail",
    0,
    2
   ],
   "auth-md-walkthrough-simulation": [
    "na",
    0,
    2
   ],
   "agent-auth-discovery-metadata": [
    "warning",
    1,
    3
   ],
   "agent-auth-www-authenticate": [
    "fail",
    0,
    1
   ],
   "agent-auth-endpoints-reachable": [
    "fail",
    0,
    2
   ],
   "pap-discovery": [
    "na",
    0,
    2
   ],
   "pap-issuer-binding": [
    "na",
    0,
    2
   ],
   "pap-auth-config": [
    "na",
    0,
    2
   ],
   "pap-interfaces": [
    "na",
    0,
    2
   ],
   "pap-endpoint-enforcement": [
    "na",
    0,
    2
   ],
   "pap-cross-protocol": [
    "na",
    0,
    2
   ],
   "mcp-server": [
    "fail",
    0,
    6
   ],
   "mcp-error-handling": [
    "na",
    0,
    2
   ],
   "mcp-transport-modern": [
    "na",
    0,
    1
   ],
   "webmcp": [
    "fail",
    0,
    5
   ],
   "rate-limit-headers": [
    "fail",
    0,
    2
   ],
   "idempotency-key-support": [
    "fail",
    0,
    3
   ],
   "json-error-responses": [
    "pass",
    4,
    4
   ],
   "api-error-model": [
    "na",
    0,
    3
   ],
   "api-versioning-policy": [
    "na",
    0,
    3
   ],
   "pagination-shape": [
    "na",
    0,
    2
   ],
   "async-job-pattern": [
    "na",
    0,
    2
   ],
   "cli-tool": [
    "fail",
    0,
    3
   ],
   "rest-sdk-packages": [
    "warning",
    1,
    3
   ],
   "nlweb-ask": [
    "fail",
    0,
    1
   ],
   "nlweb-streaming": [
    "fail",
    0,
    1
   ],
   "response-schema-coverage": [
    "na",
    0,
    2
   ],
   "mcp-tool-annotations": [
    "na",
    0,
    2
   ],
   "mcp-server-card": [
    "warning",
    1,
    2
   ],
   "mcp-multi-surface-coverage": [
    "fail",
    0,
    2
   ],
   "sandbox-environment": [
    "fail",
    0,
    2
   ],
   "batch-endpoints": [
    "na",
    0,
    2
   ],
   "mcp-resource-listing": [
    "na",
    0,
    3
   ],
   "graphql-error-type-definition": [
    "fail",
    0,
    3
   ],
   "graphql-versioning-policy": [
    "fail",
    0,
    2
   ],
   "graphql-pagination-pattern": [
    "fail",
    0,
    2
   ],
   "graphql-async-job-pattern": [
    "fail",
    0,
    2
   ],
   "graphql-schema-completeness": [
    "na",
    0,
    3
   ],
   "graphql-batch-mutations": [
    "na",
    0,
    2
   ],
   "agent-friendly-404": [
    "warning",
    1,
    2
   ],
   "ax-document-structure": [
    "pass",
    3,
    3
   ],
   "ax-native-controls": [
    "pass",
    3,
    3
   ],
   "ax-accessible-names": [
    "pass",
    2,
    2
   ],
   "ax-form-labeling": [
    "na",
    0,
    2
   ],
   "ax-tree-injection-safe": [
    "pass",
    2,
    2
   ],
   "mcp-app-registry": [
    "fail",
    0,
    4
   ],
   "a2ui-support": [
    "fail",
    0,
    2
   ],
   "mcp-apps-ui-quality": [
    "na",
    0,
    4
   ],
   "mcp-view-domain": [
    "na",
    0,
    4
   ],
   "mcp-view-csp": [
    "na",
    0,
    4
   ],
   "api-schema-analysis": [
    "pass",
    2,
    2
   ],
   "function-calling-compat": [
    "fail",
    0,
    2
   ],
   "mcp-resource-quality": [
    "na",
    0,
    3
   ],
   "mpp-support": [
    "na",
    0,
    2
   ],
   "x402-support": [
    "na",
    0,
    2
   ],
   "ucp-support": [
    "na",
    0,
    3
   ],
   "acp-support": [
    "na",
    0,
    3
   ],
   "acp-delegate-payment": [
    "na",
    0,
    3
   ],
   "ap2-support": [
    "na",
    0,
    3
   ]
  },
  "flagged": [
   {
    "id": "openapi-spec",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 7,
    "tier": "required",
    "est": 4.2,
    "detail": "No OpenAPI/Swagger specification found"
   },
   {
    "id": "mcp-server",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 6,
    "tier": "required",
    "est": 3.5,
    "detail": "No MCP server or manifest found"
   },
   {
    "id": "scoped-permissions",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 5,
    "tier": "recommended",
    "est": 2.9,
    "detail": "No declared OAuth scopes, security schemes, or scoped-permission documentation found"
   },
   {
    "id": "webmcp",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 5,
    "tier": "required",
    "est": 2.9,
    "detail": "No WebMCP support detected - no document.modelContext / navigator.modelContext usage found"
   },
   {
    "id": "mcp-app-registry",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 4,
    "tier": "recommended",
    "est": 2.3,
    "detail": "No MCP Apps support detected - this product has an in-agent UI surface but exposes no ui:// resources or tool UI metadata for agents to render."
   },
   {
    "id": "cli-tool",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": 1.8,
    "detail": "No CLI tool found"
   },
   {
    "id": "graphql-error-type-definition",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": 1.8,
    "detail": "GraphQL introspection auth-gated and no typed graphql error model documentation found on GraphQL-tagged pages"
   },
   {
    "id": "idempotency-key-support",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 3,
    "tier": "recommended",
    "est": 1.8,
    "detail": "GraphQL introspection auth-gated and no idempotency documentation found on GraphQL-tagged pages"
   },
   {
    "id": "ard-catalog",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 1.5,
    "detail": "No /.well-known/ard.json, no same-site rel=\"ard\" link, and no legacy /.well-known/ai-catalog.json"
   },
   {
    "id": "function-calling-compat",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.2,
    "detail": "No API spec found - function calling requires discoverable endpoints"
   },
   {
    "id": "graphql-async-job-pattern",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.2,
    "detail": "GraphQL introspection auth-gated and no graphql async-job pattern documentation found on GraphQL-tagged pages"
   },
   {
    "id": "graphql-pagination-pattern",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.2,
    "detail": "GraphQL introspection auth-gated and no graphql pagination pattern documentation found on GraphQL-tagged pages"
   },
   {
    "id": "graphql-versioning-policy",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.2,
    "detail": "GraphQL introspection auth-gated and no graphql versioning / deprecation policy documentation found on GraphQL-tagged pages"
   },
   {
    "id": "llms-txt-formatting",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.2,
    "detail": "No llms.txt found to evaluate quality"
   },
   {
    "id": "rate-limit-headers",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.2,
    "detail": "GraphQL introspection auth-gated and no header convention documented on GraphQL-tagged pages"
   },
   {
    "id": "rest-sdk-packages",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 3,
    "tier": "recommended",
    "est": 1.2,
    "detail": "SDK package found only in npm"
   },
   {
    "id": "schema-type-breadth",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 1.2,
    "detail": "No extended schema types found - AI can only answer basic questions about this entity"
   },
   {
    "id": "agent-auth-discovery-metadata",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 3,
    "tier": "recommended",
    "est": 0.6,
    "detail": "Only AS metadata present; spec calls for both PRM and AS metadata"
   },
   {
    "id": "agent-auth-endpoints-reachable",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "No agent_auth endpoint URIs found in AS metadata or /auth.md prose; nothing to probe"
   },
   {
    "id": "agent-friendly-404",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "The nonexistent path https://zoom.us/__ora-404-probe-avssact0 correctly returns HTTP 404. Partial credit: no Markdown error body was detected."
   },
   {
    "id": "auth-md-exists",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.6,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "auth-md-structure",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "No /auth.md found at site root"
   },
   {
    "id": "json-ld",
    "layer": "accessibility",
    "status": "warning",
    "score": 3,
    "max": 4,
    "tier": "required",
    "est": 0.6,
    "detail": "JSON-LD Person found - missing description, url, and one of sameAs / jobTitle / worksFor on this entity"
   },
   {
    "id": "llms-txt-exists",
    "layer": "accessibility",
    "status": "warning",
    "score": 0,
    "max": 1,
    "tier": "required",
    "est": 0.6,
    "detail": "A file is present at https://docs.zoom.us/.well-known/llms.txt, but it returns an HTML page rather than a plain-text llms.txt."
   },
   {
    "id": "mcp-multi-surface-coverage",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "This bonus needs two MCP servers: one for your product so agents can take actions, and a separate one for your documentation so agents can answer questions from your docs."
   },
   {
    "id": "oauth-protected-resource",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "required",
    "est": 0.6,
    "detail": "No /.well-known/oauth-protected-resource found (RFC 9728)"
   },
   {
    "id": "sandbox-environment",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.6,
    "detail": "No sandbox or test environment found"
   },
   {
    "id": "a2a-agent-card",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.3,
    "detail": "No A2A agent card found at /.well-known/agent-card.json"
   },
   {
    "id": "agent-auth-www-authenticate",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.3,
    "detail": "No 401 with WWW-Authenticate: Bearer resource_metadata=... found. Probed [https://zoom.us/api, https://zoom.us/api/v1, https://zoom.us/v1, https://zoom.us/v2, https://zoom.us/agent/identity, https://zoom.us/agent/auth,"
   },
   {
    "id": "mcp-server-card",
    "layer": "usability",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "recommended",
    "est": 0.3,
    "detail": "MCP server card found at https://zoom.us/.well-known/mcp/server-card.json but missing fields: name, version"
   },
   {
    "id": "mcp-well-known-discovery",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "recommended",
    "est": 0.3,
    "detail": "No MCP server URL discovered"
   },
   {
    "id": "wikipedia-presence",
    "layer": "discovery",
    "status": "warning",
    "score": 2,
    "max": 4,
    "tier": "recommended",
    "est": 0.2,
    "detail": "Wikipedia \"Zoom (software)\" verified - create a Wikidata item with P856 (official website) = zoom.us to complete knowledge graph coverage"
   },
   {
    "id": "api-catalog-rfc9727",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "required",
    "est": 0.1,
    "detail": "api-catalog linkset[0] has no 'item' entries"
   },
   {
    "id": "markdown-negotiation-vary",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.1,
    "detail": "Homepage https://zoom.us does not meet the Markdown negotiation requirements: Accept: text/markdown returned text/html; Vary header missing Accept (got \"accept-encoding\")"
   },
   {
    "id": "sitemap-lastmod",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "recommended",
    "est": 0.1,
    "detail": "None of the 500 sampled sitemap entries carries a lastmod date. Add <lastmod> (W3C datetime) so agents can prioritize fresh content."
   },
   {
    "id": "a2ui-support",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No A2UI or generative UI support detected"
   },
   {
    "id": "agent-mode-view",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "?mode=agent returns same content as homepage (no dedicated agent view)"
   },
   {
    "id": "agent-plugins-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No Agent Plugins manifest (plugin.json) found in discovered repos"
   },
   {
    "id": "agent-rules-repo",
    "layer": "discovery",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Could not locate a public repo containing agent configs or rules. If our probes missed it, AI coding agents likely will too - link the repo from your homepage or docs so it's discoverable."
   },
   {
    "id": "agent-skills-index-v2",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "Index v0.2.0 conformant but skill \"zoom-cobrowse-sdk\" artifact unreachable at https://zoom.us/.well-known/agent-skills/cobrowse-sdk/SKILL.md"
   },
   {
    "id": "agent-ua-markdown",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly."
   },
   {
    "id": "markdown-link-alternate",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No sampled page advertises a markdown alternate. Add <link rel=\"alternate\" type=\"text/markdown\" href=\"...\"> (or the equivalent Link response header) pointing at a markdown twin of the page."
   },
   {
    "id": "markdown-negotiation",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "Missing markdown content negotiation. Homepage returned text/html when probed with Accept: text/markdown (expected text/markdown), and none of the well-known root paths (/llms.md, /auth.md, /agents.md, /developers.md, /api.md, /index.md,"
   },
   {
    "id": "markdown-url-fallback",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "Homepage does not support the .md suffix. Probed https://zoom.us/index.md and it did not return markdown (expected text/markdown content-type or a heading-led non-HTML body)."
   },
   {
    "id": "modular-llms-txt",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No section-level llms.txt found. Tried /docs/llms.txt, /api/llms.txt, /developers/llms.txt, /guides/llms.txt, /reference/llms.txt, /pricing/llms.txt, /signin/llms.txt, /signup/llms.txt, /download/llms.txt, /de/llms.txt."
   },
   {
    "id": "nlweb-ask",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No NLWeb-conformant /ask endpoint found via GET or POST"
   },
   {
    "id": "nlweb-schema-feeds",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "No schemamap: directive in robots.txt"
   },
   {
    "id": "nlweb-streaming",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 1,
    "tier": "emerging",
    "est": null,
    "detail": "NLWeb /ask does not support SSE streaming via GET or POST"
   },
   {
    "id": "pricing-md",
    "layer": "accessibility",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No pricing.md found - agents need machine-readable pricing to compare products and make purchase recommendations"
   },
   {
    "id": "skills-sh-quality",
    "layer": "accessibility",
    "status": "warning",
    "score": 1,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "Skills.sh presence exists but limited - 2 skills (goal: 5+), 121 installs (goal: 200+)"
   },
   {
    "id": "web-bot-auth-directory",
    "layer": "usability",
    "status": "fail",
    "score": 0,
    "max": 2,
    "tier": "emerging",
    "est": null,
    "detail": "No /.well-known/http-message-signatures-directory found"
   }
  ],
  "seen": {
   "brand-search-accuracy": "zoom.us ranks #5 for \"Zoom UCaaS\" but is not in the top 10 for \"Zoom Unified Communications\"",
   "wikipedia-presence": "Wikipedia \"Zoom (software)\" verified - create a Wikidata item with P856 (official website) = zoom.us to complete knowledge graph coverage",
   "robots-ai-policy-quality": "AI search crawlers: allowed in 12 of 12 checks (3 crawlers on 4 pages). AI training crawlers: allowed in 8 of 8 checks (2 crawlers on 4 pages), not scored.",
   "noindex-directives": "No noindex on the homepage: no robots, googlebot or bingbot meta tag and no X-Robots-Tag header hides it from search.",
   "sitemap": "Valid sitemap found at https://zoom.us/sitemap.xml with 5454 entries",
   "content-no-js": "Homepage: 8293 chars, semantic headings (1 H1 + 6 H2s + 13 H3s), 6.7% content ratio. 5 of 5 sampled inner pages have text without JavaScript.",
   "bot-detection": "Site accessible to 4 agent user-agents (ChatGPT-User, OAI-SearchBot, Claude-User, PerplexityBot).",
   "agent-discovery-file": "Agent Skills index (agentskills.io) found at /.well-known/agent-skills/index.json with 64 skill(s)",
   "a2a-agent-card": "No A2A agent card found at /.well-known/agent-card.json",
   "mcp-well-known-discovery": "No MCP server URL discovered",
   "robots-agent-user-policy": "No applicable crawl or usage restriction found for 3 user-triggered agents (chatgpt-user, claude-user, perplexity-user) on 1 public page: https://zoom.us/. Declared policy only;",
   "llms-txt-exists": "A file is present at https://docs.zoom.us/.well-known/llms.txt, but it returns an HTML page rather than a plain-text llms.txt.",
   "llms-txt-formatting": "No llms.txt found to evaluate quality",
   "json-ld": "JSON-LD Person found - missing description, url, and one of sameAs / jobTitle / worksFor on this entity",
   "public-api-docs": "Documentation site found at https://docs.zoom.us",
   "metadata-completeness": "All metadata signals present: canonical URL, lang=\"en\", og:image, og:type",
   "page-token-budget": "All 6 measured pages fit an agent context budget (largest ~6K tokens)",
   "docs-auth-gate": "All 5 sampled pages are publicly readable (5 with substantive content)",
   "openapi-spec": "No OpenAPI/Swagger specification found",
   "developer-portal": "Developer portal found at /developer",
   "markdown-negotiation": "Missing markdown content negotiation. Homepage returned text/html when probed with Accept: text/markdown (expected text/markdown), and none of the well-known root paths (/llms.md, /auth.md, /agents.md, /developers.md,",
   "agent-ua-markdown": "No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly.",
   "agent-crawler-reachability": "Reachable to every agent we tested - ChatGPT-User: reachable, OAI-SearchBot: reachable, Claude-User: reachable, PerplexityBot: reachable",
   "public-api": "API described in documentation at https://docs.zoom.us but no machine-verifiable API surface confirmed. GraphQL endpoint at https://api.zoom.us/v1/graphql is reachable;",
   "oauth-support": "OpenID Connect discovery endpoint found at https://zoom.us",
   "mcp-server": "No MCP server or manifest found",
   "webmcp": "No WebMCP support detected - no document.modelContext / navigator.modelContext usage found",
   "cli-tool": "No CLI tool found",
   "rest-sdk-packages": "SDK package found only in npm",
   "nlweb-ask": "No NLWeb-conformant /ask endpoint found via GET or POST",
   "mpp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "x402-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "ucp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "acp-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites",
   "ap2-support": "No commerce signals detected - agent-payment protocols are optional for non-commerce sites"
  }
 }
]
