{
  "version": "0.2.0",
  "rubricVersion": "0.9",
  "target": "https://agenticwebscore.com",
  "host": "agenticwebscore.com",
  "https": true,
  "measured": {
    "origin": "https://agenticwebscore.com",
    "host": "agenticwebscore.com",
    "https": true,
    "url": "https://agenticwebscore.com/"
  },
  "redirect": null,
  "scannedAt": "2026-10-28T19:46:00.011Z",
  "durationMs": 1545,
  "requests": 78,
  "score": 94.7,
  "parts": {
    "standards": {
      "score": 100,
      "share": 0.7,
      "points": {
        "earned": 101.5,
        "available": 101.5
      },
      "counts": {
        "pass": 21,
        "warn": 0,
        "fail": 0,
        "na": 7,
        "total": 28
      }
    },
    "conventions": {
      "score": 82.4,
      "share": 0.3,
      "points": {
        "earned": 7,
        "available": 8.5
      },
      "counts": {
        "pass": 7,
        "warn": 0,
        "fail": 1,
        "na": 0,
        "total": 8
      }
    }
  },
  "previous": {
    "score": 94.7,
    "level": 5,
    "levelName": "Agent-native",
    "fingerprint": "28726b65c4195015c8efeac530dbfa5071d129a486d3d461f37630f83c5dfdcf",
    "scannedAt": "2026-10-25T12:18:21.132Z",
    "counts": {
      "pass": 21,
      "warn": 0,
      "fail": 0,
      "na": 7,
      "total": 28
    },
    "rubricVersion": "0.9"
  },
  "level": 5,
  "levelName": "Agent-native",
  "levelBlurb": "The action surface is discoverable, its auth is described, and its status is published.",
  "levelCeiling": 5,
  "verdict": "Agent-native",
  "confidence": 100,
  "confidenceLabel": "high",
  "fingerprint": "7ab68b2259fceaa236d73687339cc19877e0232d068fd4bb60e1345387813829",
  "modules": {
    "commerce": {
      "inScope": false,
      "signals": []
    },
    "agentApi": {
      "inScope": true,
      "kinds": [
        "mcp",
        "rest-api"
      ],
      "signals": [
        {
          "kind": "rest-api",
          "evidence": "Link rel=\"service-doc\" <https://agenticwebscore.com/methodology> on the homepage"
        },
        {
          "kind": "rest-api",
          "evidence": "/.well-known/api-catalog lists 1 linkset entry"
        },
        {
          "kind": "rest-api",
          "evidence": "/openapi.json is an OpenAPI 3.1 document"
        },
        {
          "kind": "rest-api",
          "evidence": "homepage links https://agenticwebscore.com/tools/openapi-checker"
        },
        {
          "kind": "mcp",
          "evidence": "/.well-known/mcp/server-card.json names 1 MCP remote"
        }
      ]
    }
  },
  "isCommerce": false,
  "commerceSignals": [],
  "blocked": null,
  "blockedNote": null,
  "deadline": {
    "ms": 60000,
    "reached": false
  },
  "profile": {
    "id": "api",
    "identified": true,
    "declared": false,
    "ambiguous": [],
    "evidence": [
      "API / developer platform (score 5), matched: An OpenAPI document responds; Rate-limit documentation."
    ],
    "scores": [
      {
        "id": "api",
        "score": 5,
        "signals": [
          "An OpenAPI document responds",
          "Rate-limit documentation"
        ]
      },
      {
        "id": "marketplace",
        "score": 3,
        "signals": [
          "Describes itself as a marketplace"
        ]
      },
      {
        "id": "saas",
        "score": 3,
        "signals": [
          "SoftwareApplication schema"
        ]
      }
    ]
  },
  "categories": [
    {
      "id": "discoverability",
      "label": "Discoverability",
      "score": 100,
      "counted": true,
      "pass": 6,
      "warn": 0,
      "fail": 0,
      "na": 0,
      "total": 6,
      "unscored": {
        "present": 0,
        "defective": 0,
        "absent": 1
      }
    },
    {
      "id": "content",
      "label": "Content",
      "score": 100,
      "counted": true,
      "pass": 9,
      "warn": 0,
      "fail": 0,
      "na": 1,
      "total": 10,
      "unscored": {
        "present": 2,
        "defective": 0,
        "absent": 0
      }
    },
    {
      "id": "botaccess",
      "label": "Crawler access",
      "score": 100,
      "counted": true,
      "pass": 1,
      "warn": 0,
      "fail": 0,
      "na": 0,
      "total": 1,
      "unscored": {
        "present": 2,
        "defective": 0,
        "absent": 1
      }
    },
    {
      "id": "protocol",
      "label": "API and agent",
      "score": 100,
      "counted": true,
      "pass": 5,
      "warn": 0,
      "fail": 0,
      "na": 1,
      "total": 6,
      "unscored": {
        "present": 2,
        "defective": 0,
        "absent": 3
      }
    },
    {
      "id": "commerce",
      "label": "Commerce",
      "score": null,
      "counted": false,
      "pass": 0,
      "warn": 0,
      "fail": 0,
      "na": 5,
      "total": 5,
      "unscored": {
        "present": 0,
        "defective": 0,
        "absent": 0
      }
    }
  ],
  "checks": [
    {
      "id": "reachable",
      "category": "discoverability",
      "module": "core",
      "tier": "essential",
      "weight": 3,
      "conditional": false,
      "label": "Readable homepage",
      "why": "The homepage is the first URL every agent requests. An error or an empty page gives it nothing to read.",
      "skill": "agent-access",
      "standards": [],
      "status": "pass",
      "points": 1,
      "counted": true,
      "excluded": null,
      "detail": "HTTP 200 text/html, 64.2 KB, 2355 words of visible text.",
      "evidence": "HTTP 200 · text/html · 64.2 KB",
      "fix": null,
      "part": "standards"
    },
    {
      "id": "robots-txt",
      "category": "botaccess",
      "module": "core",
      "tier": "essential",
      "weight": 2,
      "conditional": false,
      "label": "robots.txt crawl policy",
      "why": "Crawlers read robots.txt before they fetch a page (RFC 9309). Its Sitemap line tells them where the URL list is.",
      "skill": "robots-txt",
      "standards": [
        "RFC 9309"
      ],
      "status": "pass",
      "points": 1,
      "counted": true,
      "excluded": null,
      "detail": "/robots.txt has 18 groups and 36 rules across all groups, and 1 Sitemap line.",
      "evidence": "HTTP 200 · text/plain · 2.7 KB · # AgenticWebScore — robots.txt # Policy rationale: https://agenticwebscore.com/ai-policy # Named AI agents are explicitly welcome. There is…",
      "fix": null,
      "part": "standards"
    },
    {
      "id": "sitemap-xml",
      "category": "discoverability",
      "module": "core",
      "tier": "essential",
      "weight": 2,
      "conditional": false,
      "label": "XML sitemap",
      "why": "A sitemap lists the URLs a site wants crawled. Google says a small, well-linked site may not need one.",
      "skill": "sitemap",
      "standards": [],
      "status": "pass",
      "points": 1,
      "counted": true,
      "excluded": null,
      "detail": "Sitemap https://agenticwebscore.com/sitemap.xml parses and lists 108 URLs, each with <lastmod>.",
      "evidence": "HTTP 200 · application/xml · 12.3 KB · root <urlset>",
      "fix": null,
      "part": "standards"
    },
    {
      "id": "llms-txt",
      "category": "discoverability",
      "module": "core",
      "tier": "recommended",
      "weight": 1,
      "conditional": false,
      "label": "/llms.txt published and well-structured",
      "why": "A 2024 proposal for a markdown index of a site. Google Search does not use it.",
      "skill": "llms-txt",
      "standards": [
        "llmstxt.org"
      ],
      "status": "pass",
      "points": 1,
      "counted": true,
      "excluded": null,
      "detail": "/llms.txt opens with H1 \"AgenticWebScore\", with 4 H2 link sections and 111 links, 24.5 KB. The scan requested 16 links it names, and each answered 2xx. Not requested: 93 same-origin links (the scan samples up to 6).",
      "evidence": "HTTP 200 · text/plain · 24.5 KB · headings: AgenticWebScore | Core | Learn | Checks | Discoverability | Content | Crawler access | API and agent (conditional) | Co…",
      "fix": null,
      "part": "conventions"
    },
    {
      "id": "link-headers",
      "category": "discoverability",
      "module": "core",
      "tier": "recommended",
      "weight": 1,
      "conditional": false,
      "label": "Discovery via Link response headers",
      "why": "A Link header (RFC 8288) points a client at a resource before it parses the HTML.",
      "skill": "link-headers",
      "standards": [
        "RFC 8288"
      ],
      "status": "pass",
      "points": 1,
      "counted": true,
      "excluded": null,
      "detail": "The homepage Link header names /llms.txt (rel=describedby), the API catalog at /.well-known/api-catalog (rel=api-catalog), and a markdown variant of the homepage (rel=alternate). It does not name the OpenAPI document at /openapi.json.",
      "evidence": "link: <https://agenticwebscore.com/llms.txt>; rel=\"describedby\"; type=\"text/plain\", <https://agenticwebscore.com/methodology>; rel=\"service-doc\"; type=\"text/html\", <https://agenticwebscore.com/.well-known/api-catalog>; rel=\"api-catalog\"; type=\"application/linkset+json\", <https://agenticwebscore.com/index.md>; rel=\"alternate\"; type=\"text/markdown\"",
      "fix": null,
      "part": "conventions"
    },
    {
      "id": "canonical",
      "category": "discoverability",
      "module": "core",
      "tier": "recommended",
      "weight": 2,
      "conditional": false,
      "label": "Canonical URL",
      "why": "A canonical link names the one URL a page is known by. Google treats it and redirects as canonical signals.",
      "skill": "canonical",
      "standards": [
        "RFC 6596"
      ],
      "status": "pass",
      "points": 1,
      "counted": true,
      "excluded": null,
      "detail": "Canonical https://agenticwebscore.com/ matches the page reached.",
      "evidence": "<link rel=\"canonical\" href=\"https://agenticwebscore.com/\">",
      "fix": null,
      "part": "standards"
    },
    {
      "id": "http-caching",
      "category": "discoverability",
      "module": "core",
      "tier": "recommended",
      "weight": 1,
      "conditional": false,
      "label": "HTTP caching of the homepage",
      "why": "Cache-Control says how long the homepage may be reused. A validator lets a crawler ask whether it changed, and a 304 answer skips the body.",
      "skill": "http-caching",
      "standards": [
        "RFC 9111",
        "RFC 9110"
      ],
      "status": "pass",
      "points": 1,
      "counted": true,
      "excluded": null,
      "detail": "The homepage sends Cache-Control \"public, max-age=0, must-revalidate\" and ETag, and a request with If-None-Match was answered HTTP 304 Not Modified.",
      "evidence": "Cache-Control: public, max-age=0, must-revalidate · ETag: \"a1122c58ddaba990d49fe64c54804c37\" · Last-Modified: (none) · conditional GET with If-None-Match: HTTP 304",
      "fix": null,
      "part": "standards"
    },
    {
      "id": "indexing-directives",
      "category": "discoverability",
      "module": "core",
      "tier": "essential",
      "weight": 2,
      "conditional": false,
      "label": "Homepage indexable: no noindex directive",
      "why": "A noindex in a meta tag or in a response header keeps the page out of search results. Bing keeps it out of Copilot too.",
      "skill": "indexing-directives",
      "standards": [],
      "status": "pass",
      "points": 1,
      "counted": true,
      "excluded": null,
      "detail": "No noindex: the homepage has no robots meta tag for robots, bingbot or googlebot, and no X-Robots-Tag header.",
      "evidence": "no robots meta tag for robots, bingbot or googlebot, no X-Robots-Tag header",
      "fix": null,
      "part": "standards"
    },
    {
      "id": "not-found-status",
      "category": "discoverability",
      "module": "core",
      "tier": "recommended",
      "weight": 1,
      "conditional": false,
      "label": "A real 404 for a missing page",
      "why": "A URL that does not exist answers 404 or 410 (RFC 9110). A 200 there makes every mistyped link look like a page.",
      "skill": "not-found-status",
      "standards": [
        "RFC 9110"
      ],
      "status": "pass",
      "points": 1,
      "counted": true,
      "excluded": null,
      "detail": "/aws-probe-659647ebb56f, a path that does not exist, answered HTTP 404.",
      "evidence": "HTTP 404 · text/html · first 16 KB read",
      "fix": null,
      "part": "standards"
    },
    {
      "id": "structured-errors",
      "category": "discoverability",
      "module": "core",
      "tier": "recommended",
      "weight": 1,
      "conditional": false,
      "label": "Structured errors for JSON requests",
      "why": "An agent that asks for JSON and gets an HTML error page has to read a page meant for people. RFC 9457 defines a JSON error format.",
      "skill": "problem-details",
      "standards": [
        "RFC 9457"
      ],
      "status": "pass",
      "points": 1,
      "counted": true,
      "excluded": null,
      "detail": "/aws-probe-659647ebb56f, asked for JSON, answered HTTP 404 as application/problem+json with the title \"Not Found\" (RFC 9457).",
      "evidence": "HTTP 404 · application/problem+json · 231 bytes",
      "fix": null,
      "part": "conventions"
    },
    {
      "id": "llms-full",
      "category": "discoverability",
      "module": "core",
      "tier": "recommended",
      "weight": 1,
      "conditional": false,
      "label": "/llms-full.txt expanded context",
      "why": "A convention that puts a site's text in one file. The llms.txt proposal does not define it.",
      "skill": "llms-full-txt",
      "standards": [],
      "status": "pass",
      "points": 1,
      "counted": true,
      "excluded": null,
      "detail": "/llms-full.txt carries 99008 words of page text in 763 KB. /llms.txt links it.",
      "evidence": "HTTP 200 · text/plain · 763 KB · # AgenticWebScore — documentation > AgenticWebScore measures how well a website serves AI agents. Its 60 checks in 5 di…",
      "fix": null,
      "part": "conventions"
    },
    {
      "id": "markdown-negotiation",
      "category": "content",
      "module": "core",
      "tier": "recommended",
      "weight": 1,
      "conditional": false,
      "label": "Markdown content negotiation",
      "why": "Some coding agents ask for text/markdown. Google Search does not use markdown.",
      "skill": "markdown-negotiation",
      "standards": [
        "RFC 9110"
      ],
      "status": "pass",
      "points": 1,
      "counted": true,
      "excluded": null,
      "detail": "The homepage serves text/markdown to `Accept: text/markdown, text/html;q=0.5`, with Vary: Accept (HTTP 200).",
      "evidence": "HTTP 200 · text/markdown · Vary: Accept · markdown body: yes",
      "fix": null,
      "part": "conventions"
    },
    {
      "id": "headings",
      "category": "content",
      "module": "core",
      "tier": "essential",
      "weight": 2,
      "conditional": false,
      "label": "Semantic heading structure",
      "why": "Headings outline the page for screen readers and for any client that splits text by section.",
      "skill": "semantic-headings",
      "standards": [
        "WCAG 2.2"
      ],
      "status": "pass",
      "points": 1,
      "counted": true,
      "excluded": null,
      "detail": "1 H1, 15 H2s, and 13 H3s in an outline of 29 headings, with no skipped level.",
      "evidence": "outline: H1 H2 H2 H3 H2 H3 H3 H3 H2 H2 H2 H3 H3 H3 H3 H2 H2 H2 H2 H3 H3 H3 H3 H3 H2 H2 H2 H2 H2",
      "fix": null,
      "part": "standards"
    },
    {
      "id": "meta",
      "category": "content",
      "module": "core",
      "tier": "essential",
      "weight": 2,
      "conditional": false,
      "label": "Title and description",
      "why": "The title and the description say what a page is about. Google uses them for the title link and the snippet.",
      "skill": "page-metadata",
      "standards": [],
      "status": "pass",
      "points": 1,
      "counted": true,
      "excluded": null,
      "detail": "Title \"Agent readiness checker: see your site the way agents do\" (56 characters) and a description of 156 characters.",
      "evidence": "title (56 characters): Agent readiness checker: see your site the way agents do · description (156 characters): Agent readiness checker: see your site the way AI agents do. AgenticWebScore runs 60 checks from the outside and shows the evidence and the source for each. · first H1: See your site the way agents do.",
      "fix": null,
      "part": "standards"
    },
    {
      "id": "jsonld",
      "category": "content",
      "module": "core",
      "tier": "essential",
      "weight": 3,
      "conditional": false,
      "label": "JSON-LD structured data",
      "why": "Structured data names the entity a page describes. Google reads JSON-LD, Microdata and RDFa alike.",
      "skill": "structured-data",
      "standards": [
        "schema.org"
      ],
      "status": "pass",
      "points": 1,
      "counted": true,
      "excluded": null,
      "detail": "1 JSON-LD block parses, and the page entity, Organization \"AgenticWebScore\", is stated under a schema.org @context.",
      "evidence": "JSON-LD: 1 blocks, 1 parsed · schema.org @context: yes · Microdata: 0 items · RDFa: 0 items · top-level types: Organization, WebSite, SoftwareApplication, FAQPage, WebPage",
      "fix": null,
      "part": "standards"
    },
    {
      "id": "lang",
      "category": "content",
      "module": "core",
      "tier": "recommended",
      "weight": 1,
      "conditional": false,
      "label": "Language declaration and multilingual access",
      "why": "The lang attribute names the language of the text. WCAG 3.1.1 requires it at level A. Google reads hreflang, not lang.",
      "skill": "language-declaration",
      "standards": [
        "WCAG 2.2",
        "BCP 47"
      ],
      "status": "pass",
      "points": 1,
      "counted": true,
      "excluded": null,
      "detail": "html lang=\"en\" is a well-formed BCP 47 tag, with no hreflang alternates.",
      "evidence": "html lang=\"en\" · alternates: none · content-language: (none)",
      "fix": null,
      "part": "standards"
    },
    {
      "id": "no-js-fallback",
      "category": "content",
      "module": "core",
      "tier": "essential",
      "weight": 3,
      "conditional": false,
      "label": "Content that needs no JavaScript",
      "why": "Several AI crawlers do not run JavaScript. Text that appears only after scripts run is invisible to them.",
      "skill": "server-rendering",
      "standards": [],
      "status": "pass",
      "points": 1,
      "counted": true,
      "excluded": null,
      "detail": "14353 characters of text are in the HTML before any script runs.",
      "evidence": "static text: 14353 characters · inside <noscript>: 0 characters · markup: 65626 characters",
      "fix": null,
      "part": "standards"
    },
    {
      "id": "spa-fallback",
      "category": "content",
      "module": "core",
      "tier": "recommended",
      "weight": 1,
      "conditional": false,
      "label": "Per-page content separation (no SPA fallback)",
      "why": "A route that answers every URL with the same page makes every URL look alike to a crawler.",
      "skill": "server-rendering",
      "standards": [
        "RFC 9110"
      ],
      "status": "pass",
      "points": 1,
      "counted": true,
      "excluded": null,
      "detail": "The homepage and /about have different titles (\"Agent readiness checker: see your site …\" and \"About this service: who runs it and wha…\") and different main text (11% word overlap).",
      "evidence": "compared / with /about · titles \"Agent readiness checker: see your site the way ag…\" / \"About this service: who runs it and what a score …\" · skeleton 24% · main-text word overlap 11% · main text 1220 characters",
      "fix": null,
      "part": "standards"
    },
    {
      "id": "viewport",
      "category": "content",
      "module": "core",
      "tier": "recommended",
      "weight": 1,
      "conditional": false,
      "label": "Responsive markup",
      "why": "Google indexes the smartphone rendering of a page. A viewport that blocks zoom fails WCAG 1.4.4.",
      "skill": "responsive-markup",
      "standards": [],
      "status": "pass",
      "points": 1,
      "counted": true,
      "excluded": null,
      "detail": "viewport content \"width=device-width, initial-scale=1\" sets width=device-width and leaves zoom on.",
      "evidence": "viewport meta: width=device-width, initial-scale=1",
      "fix": null,
      "part": "standards"
    },
    {
      "id": "ai-rules",
      "category": "botaccess",
      "module": "core",
      "tier": "recommended",
      "weight": 1,
      "conditional": false,
      "label": "AI crawler policy in robots.txt",
      "why": "A crawler follows the robots.txt group that names it, otherwise the * group. A named group states the site's rules for that crawler.",
      "skill": "ai-rules",
      "standards": [
        "RFC 9309"
      ],
      "status": "pass",
      "points": 1,
      "counted": true,
      "excluded": null,
      "detail": "17 of 18 AI crawler tokens have their own robots.txt group: GPTBot, OAI-SearchBot, ChatGPT-User, ClaudeBot, Claude-User and PerplexityBot partly disallowed, and 11 more. The other 1 follow the * group (2 of the file's 36 rules).",
      "evidence": "GPTBot: own group, 2 rules, partly disallowed · OAI-SearchBot: own group, 2 rules, partly disallowed · ChatGPT-User: own group, 2 rules, partly disallowed · ClaudeBot: own group, 2 rules, partly disallowed · Claude-User: own group, 2 rules, partly disallowed · PerplexityBot: own group, 2 rules, partly disallowed · Perplexity-User: own group, 2 rules, partly disallowed · Google-Extended: own group, 2 rules, partly disallowed · Applebot-Extended: own group, 2 rules, partly dis…",
      "fix": null,
      "part": "conventions"
    },
    {
      "id": "content-signal",
      "category": "botaccess",
      "module": "core",
      "tier": "recommended",
      "weight": 1,
      "conditional": false,
      "label": "Content-Signal preferences",
      "why": "Content-Signal states search, ai-input and ai-train preferences in robots.txt. No crawler documents honouring it.",
      "skill": "content-signals",
      "standards": [
        "contentsignals.org"
      ],
      "status": "pass",
      "points": 1,
      "counted": true,
      "excluded": null,
      "detail": "robots.txt states Content-Signal search=yes, ai-input=yes, ai-train=no in the User-agent: * group. 17 more lines state values for other groups.",
      "evidence": "robots.txt: ai-train=no, search=yes, ai-input=yes | ai-train=no, search=yes, ai-input=yes | ai-train=no, search=yes, ai-input=yes | ai-train=no, search=yes, ai-input=yes | ai-train=no, search=yes, ai-input=yes | ai-train=no, search=yes, ai-input=yes | ai-train=no, search=yes, ai-input=yes | ai-train=no, search=yes, ai-input=yes | ai-train=no, search=yes, ai-input=yes | ai-trai…",
      "fix": null,
      "part": "conventions"
    },
    {
      "id": "mcp-server",
      "category": "protocol",
      "module": "agent-api",
      "tier": "essential",
      "weight": 3,
      "conditional": true,
      "label": "MCP server answers and lists its tools",
      "why": "An agent given the address of an MCP server can call its tools. The scan opens one session to see that the server answers and what it offers.",
      "skill": "mcp-server",
      "standards": [
        "MCP 2025-11-25"
      ],
      "status": "pass",
      "points": 1,
      "counted": true,
      "excluded": null,
      "detail": "The server card at /.well-known/mcp/server-card.json names https://agenticwebscore.com/mcp. It answered initialize with protocol version 2025-11-25, and tools/list named 4 tools: \"scan_site\", \"get_score\", \"list_checks\", and \"get_report\". The scan called no tool.",
      "evidence": "{\"endpoint\":\"https://agenticwebscore.com/mcp\",\"discoveredBy\":\"server-card\",\"protocolVersion\":\"2025-11-25\",\"tools\":[\"scan_site\",\"get_score\",\"list_checks\",\"get_report\"],\"requests\":[\"initialize 200\",\"notifications/initialized 202\",\"tools/list 200\"]}",
      "fix": null,
      "discoveredBy": "server-card",
      "mcp": {
        "endpoint": "https://agenticwebscore.com/mcp",
        "protocolVersion": "2025-11-25",
        "tools": [
          {
            "name": "scan_site",
            "title": "Scan a site"
          },
          {
            "name": "get_score",
            "title": "Read a stored score"
          },
          {
            "name": "list_checks",
            "title": "List the checks"
          },
          {
            "name": "get_report",
            "title": "Read a report"
          }
        ],
        "toolCount": 4,
        "more": false,
        "auth": false
      },
      "part": "standards"
    },
    {
      "id": "openapi",
      "category": "protocol",
      "module": "agent-api",
      "tier": "essential",
      "weight": 3,
      "conditional": true,
      "label": "OpenAPI definition",
      "why": "An OpenAPI document describes an HTTP API so a client can call it without guessing.",
      "skill": "openapi",
      "standards": [
        "OpenAPI 3.x"
      ],
      "status": "pass",
      "points": 1,
      "counted": true,
      "excluded": null,
      "detail": "OpenAPI 3.1.0 at /openapi.json (api-catalog service-desc (/.well-known/api-catalog)) declares info.title \"AgenticWebScore API\", info.version 0.9, and 4 paths. Not scored: the scan requested 2 of its 2 GET operations on this origin, and 1 answered with 2xx: /api/scan answered HTTP 400; /api/health answered HTTP 200.",
      "evidence": "tried: /openapi.json 200",
      "fix": null,
      "part": "standards"
    },
    {
      "id": "oauth-discovery",
      "category": "protocol",
      "module": "agent-api",
      "tier": "essential",
      "weight": 2,
      "conditional": true,
      "label": "OAuth discovery documents",
      "why": "OAuth metadata tells a client where and how to authorise against the API.",
      "skill": "oauth-discovery",
      "standards": [
        "RFC 8414",
        "RFC 9728"
      ],
      "status": "na",
      "points": 0,
      "counted": false,
      "excluded": "out-of-scope",
      "detail": "Not scored: this check applies to a site that uses OAuth, and the scan found none.",
      "evidence": null,
      "fix": null,
      "part": "standards"
    },
    {
      "id": "api-catalog",
      "category": "protocol",
      "module": "agent-api",
      "tier": "recommended",
      "weight": 2,
      "conditional": true,
      "label": "API catalog",
      "why": "An API catalog lists a publisher's APIs in one document at a fixed address (RFC 9727).",
      "skill": "api-catalog",
      "standards": [
        "RFC 9727"
      ],
      "status": "pass",
      "points": 1,
      "counted": true,
      "excluded": null,
      "detail": "Linkset at /.well-known/api-catalog carries 1 entry, and 1 of them pairs an anchor with a service-desc link, the first pointing at https://agenticwebscore.com/openapi.json. The scan requested the same-origin service-desc target /openapi.json, which answered HTTP 200. Not scored: the service-doc target /methodology answered HTTP 200. Not scored: the service-doc target /llms-full.txt answered HTTP 200. Not scored: the service-doc target /auth.md was not requested by this scan. Not scored: 1 further catalog target is not listed: 1 was requested and 0 were not. Not scored: that target is the API …",
      "evidence": "relations: service-desc, service-doc, describedby, status, item; observed target: /openapi.json",
      "fix": null,
      "part": "standards"
    },
    {
      "id": "webmcp",
      "category": "protocol",
      "module": "core",
      "tier": "recommended",
      "weight": 1,
      "conditional": false,
      "label": "WebMCP browser tool declaration",
      "why": "WebMCP lets a page register tools for an in-browser agent. It is a W3C Community Group draft.",
      "skill": "webmcp",
      "standards": [
        "W3C WebMCP"
      ],
      "status": "fail",
      "points": 0,
      "counted": true,
      "excluded": null,
      "detail": "Not used: the homepage has 2 forms, and none declares a WebMCP tool.",
      "evidence": null,
      "fix": "// WebMCP (W3C Community Group draft): register a tool an in-browser agent can call.\nif ('modelContext' in navigator) {\n  navigator.modelContext.registerTool({\n    name: 'search_site',\n    description: 'Search this site and return the matching pages.',\n    inputSchema: {\n      type: 'object',\n      properties: { query: { type: 'string', description: 'The words to search for' } },\n      required: ['query'],\n    },\n    async execute({ query }) {\n      // Call the site's own search here and return its results as text.\n      return { content: [{ type: 'text', text: 'Results for ' + query }] };\n    },\n  });\n}",
      "part": "conventions"
    },
    {
      "id": "docs",
      "category": "protocol",
      "module": "agent-api",
      "tier": "recommended",
      "weight": 2,
      "conditional": true,
      "label": "Documentation reachable",
      "why": "Documentation linked as service-doc (RFC 8631), or from the homepage, is how a client learns the API.",
      "skill": "documentation",
      "standards": [
        "RFC 8631"
      ],
      "status": "pass",
      "points": 1,
      "counted": true,
      "excluded": null,
      "detail": "Documentation is reachable at /methodology (Link header rel=service-doc) and returns HTTP 200 text/html with 8362 readable words.",
      "evidence": "tried: /methodology 200 | /llms-full.txt 200 | /docs 404 | /documentation 404 | /developers 404 | /gelistiriciler 404",
      "fix": null,
      "part": "standards"
    },
    {
      "id": "pricing-structured",
      "category": "content",
      "module": "core",
      "tier": "recommended",
      "weight": 2,
      "conditional": false,
      "label": "Structured pricing information",
      "why": "A price in markup is read without parsing prose. An Offer with a price and no currency is ambiguous.",
      "skill": "pricing-schema",
      "standards": [
        "schema.org/Offer"
      ],
      "status": "pass",
      "points": 1,
      "counted": true,
      "excluded": null,
      "detail": "Homepage markup carries 1 complete price node; the first, Offer (unnamed), states 0 USD.",
      "evidence": "{\"price\":0,\"priceCurrency\":\"USD\",\"where\":\"homepage\"}",
      "fix": null,
      "part": "standards"
    },
    {
      "id": "service-schema",
      "category": "content",
      "module": "core",
      "tier": "recommended",
      "weight": 1,
      "conditional": false,
      "label": "Service/product scope machine-readable",
      "why": "Service markup states what is offered, by whom and where. An incomplete node leaves a client to guess.",
      "skill": "service-schema",
      "standards": [
        "schema.org/Service"
      ],
      "status": "na",
      "points": 0,
      "counted": false,
      "excluded": "out-of-scope",
      "detail": "Not scored: the homepage markup declares no Service-type node.",
      "evidence": null,
      "fix": null,
      "part": "standards"
    },
    {
      "id": "contact",
      "category": "content",
      "module": "core",
      "tier": "recommended",
      "weight": 1,
      "conditional": false,
      "label": "Structured contact information",
      "why": "A ContactPoint in the Organization markup makes the contact route machine-readable.",
      "skill": "contact-schema",
      "standards": [
        "schema.org/Organization"
      ],
      "status": "pass",
      "points": 1,
      "counted": true,
      "excluded": null,
      "detail": "Homepage markup declares 1 organization-type node; Organization \"AgenticWebScore\" has a ContactPoint of contactType \"customer support\" reachable at hello@agenticwebscore.com.",
      "evidence": null,
      "fix": null,
      "part": "standards"
    },
    {
      "id": "status-page",
      "category": "protocol",
      "module": "agent-api",
      "tier": "recommended",
      "weight": 1,
      "conditional": true,
      "label": "Service status and changelog feed",
      "why": "A status page and a changelog feed say whether the service is up and what changed.",
      "skill": "status-changelog",
      "standards": [
        "RFC 9727",
        "RFC 4287"
      ],
      "status": "pass",
      "points": 1,
      "counted": true,
      "excluded": null,
      "detail": "The status page /status (HTTP 200) and the changelog feed (application/atom+xml) /changelog (HTTP 200) both answered, and the newest feed entry is 9 days old.",
      "evidence": null,
      "fix": null,
      "part": "standards"
    },
    {
      "id": "product-schema",
      "category": "commerce",
      "module": "commerce",
      "tier": "essential",
      "weight": 3,
      "conditional": true,
      "label": "Product/catalog schema",
      "why": "Product and Offer markup on product pages feeds merchant listings.",
      "skill": "product-schema",
      "standards": [
        "schema.org/Product"
      ],
      "status": "na",
      "points": 0,
      "counted": false,
      "excluded": "out-of-scope",
      "detail": "Not scored: the homepage shows no commercial signal, so commerce checks are not asked of this site.",
      "evidence": null,
      "fix": null,
      "part": "standards"
    },
    {
      "id": "returns",
      "category": "commerce",
      "module": "commerce",
      "tier": "recommended",
      "weight": 1,
      "conditional": true,
      "label": "Return policy machine-readable",
      "why": "A MerchantReturnPolicy states return terms in markup, also under the Organization.",
      "skill": "return-policy-schema",
      "standards": [
        "schema.org/MerchantReturnPolicy"
      ],
      "status": "na",
      "points": 0,
      "counted": false,
      "excluded": "out-of-scope",
      "detail": "Not scored: the homepage shows no commercial signal, so commerce checks are not asked of this site.",
      "evidence": null,
      "fix": null,
      "part": "standards"
    },
    {
      "id": "inventory-freshness",
      "category": "commerce",
      "module": "commerce",
      "tier": "recommended",
      "weight": 2,
      "conditional": true,
      "label": "Inventory and price freshness",
      "why": "availability says whether an item is in stock. A past priceValidUntil can hide a product snippet.",
      "skill": "inventory-freshness",
      "standards": [
        "schema.org/Offer"
      ],
      "status": "na",
      "points": 0,
      "counted": false,
      "excluded": "out-of-scope",
      "detail": "Not scored: the homepage shows no commercial signal, so commerce checks are not asked of this site.",
      "evidence": null,
      "fix": null,
      "part": "standards"
    },
    {
      "id": "seller-identity",
      "category": "commerce",
      "module": "commerce",
      "tier": "recommended",
      "weight": 1,
      "conditional": true,
      "label": "Seller identity declared",
      "why": "On a marketplace, the seller named on an offer is who the buyer contracts with.",
      "skill": "seller-identity",
      "standards": [
        "schema.org/Organization"
      ],
      "status": "na",
      "points": 0,
      "counted": false,
      "excluded": "out-of-scope",
      "detail": "Not scored: the homepage shows no commercial signal, so commerce checks are not asked of this site.",
      "evidence": null,
      "fix": null,
      "part": "standards"
    },
    {
      "id": "shipping-costs",
      "category": "commerce",
      "module": "commerce",
      "tier": "recommended",
      "weight": 2,
      "conditional": true,
      "label": "Shipping cost and delivery declared",
      "why": "shippingDetails lets a client compute the delivered price.",
      "skill": "shipping-costs",
      "standards": [
        "schema.org/OfferShippingDetails"
      ],
      "status": "na",
      "points": 0,
      "counted": false,
      "excluded": "out-of-scope",
      "detail": "Not scored: the homepage shows no commercial signal, so commerce checks are not asked of this site.",
      "evidence": null,
      "fix": null,
      "part": "standards"
    }
  ],
  "unscored": [
    {
      "id": "dns-aid",
      "category": "discoverability",
      "module": "agent-api",
      "label": "DNS-AID discovery record",
      "group": "convention",
      "maturity": "experimental",
      "state": "absent",
      "detail": "Not published: 0 SVCB records and 0 TXT records resolve at _index._agents.agenticwebscore.com.",
      "evidence": "DNS-AID names queried for SVCB and TXT records: _index._agents.agenticwebscore.com",
      "fix": "; DNS-AID organization entry point (draft-mozleywilliams-dnsop-dnsaid)\n_index._agents.agenticwebscore.com. IN SVCB 1 <choose: host name that serves the agent index, ending in a dot> alpn=<choose: ALPN of the agent endpoint>\n",
      "fixNote": null
    },
    {
      "id": "faq-schema",
      "category": "content",
      "module": "core",
      "label": "FAQ markup for visible questions",
      "group": "choice",
      "maturity": "adopted",
      "state": "present",
      "detail": "FAQPage states 5 questions, each typed Question with a name and an acceptedAnswer typed Answer with text.",
      "evidence": "visible questions under a FAQ heading: 0 · FAQPage nodes: 1 (JSON-LD) · questions: 5 · typed Question: 5 · complete: 5 · What is agent readiness? | How is this different from Lighthouse? | Why does a blocked site get no score instead of a… | Will it tell me to fix things that do not apply t…",
      "fix": null,
      "fixNote": null
    },
    {
      "id": "breadcrumb",
      "category": "content",
      "module": "core",
      "label": "Breadcrumb markup on an inner page",
      "group": "choice",
      "maturity": "adopted",
      "state": "present",
      "detail": "The inner page /tools/llms-txt-checker states a BreadcrumbList of 3 named ListItems at positions 1–3, each but the last with an item URL. Google lets the last entry, the current page, omit it.",
      "evidence": "https://agenticwebscore.com/tools/llms-txt-checker · HTTP 200 · text/html · JSON-LD trail: Overview > Tools > llms.txt checker · ListItem: 3 · item URLs: 2",
      "fix": null,
      "fixNote": null
    },
    {
      "id": "webbotauth",
      "category": "botaccess",
      "module": "agent-api",
      "label": "Web Bot Auth key directory",
      "group": "convention",
      "maturity": "draft",
      "state": "out-of-scope",
      "detail": "Not scored: this check applies to a site that runs an A2A agent, and the scan found none.",
      "evidence": null,
      "fix": null,
      "fixNote": null
    },
    {
      "id": "ai-policy",
      "category": "botaccess",
      "module": "core",
      "label": "AI usage policy page",
      "group": "choice",
      "maturity": "experimental",
      "state": "present",
      "detail": "/ai-policy answered HTTP 200 with an AI policy page of 4122 characters, linked from the homepage. Checked because Content-Signal sets ai-train=no.",
      "evidence": "AI usage policy for this site's content — AgenticWebScore Skip to content AgenticWebScore Agent readiness Overview Scan Tools Methodology Checks Learn For agents Domain to scan Scan Scan Overview Scan Tools Methodology Checks Learn For agents Overview / AI us…",
      "fix": null,
      "fixNote": null
    },
    {
      "id": "security-txt",
      "category": "botaccess",
      "module": "core",
      "label": "security.txt (RFC 9116)",
      "group": "choice",
      "maturity": "adopted",
      "state": "present",
      "detail": "security.txt at /.well-known/security.txt declares 1 Contact and an Expires 2027-10-28T00:00:00.000Z in the future. Not scored: its Policy URL /abuse answered HTTP 200.",
      "evidence": "Contact: mailto:hello@agenticwebscore.com Expires: 2027-10-28T00:00:00.000Z Preferred-Languages: en Canonical: https://agenticwebscore.com/.well-known/security.txt Policy: https://agenticwebscore.com/abuse#disclosure # We publish our measurement method and ou…",
      "fix": null,
      "fixNote": null
    },
    {
      "id": "ai-grounding-directives",
      "category": "botaccess",
      "module": "core",
      "label": "Snippet and AI grounding directives",
      "group": "choice",
      "maturity": "adopted",
      "state": "absent",
      "detail": "Not used: the homepage has no noarchive, nocache, nosnippet or max-snippet:0 directive, and no data-nosnippet attribute, so Bing applies none of the limits they set on snippets and Copilot answers.",
      "evidence": "no robots meta tag for robots, bingbot or googlebot, no X-Robots-Tag header · data-nosnippet: 0 elements",
      "fix": null,
      "fixNote": null
    },
    {
      "id": "mcp-card",
      "category": "protocol",
      "module": "agent-api",
      "label": "MCP server card",
      "group": "convention",
      "maturity": "draft",
      "state": "present",
      "detail": "MCP server card at /.well-known/mcp/server-card.json declares com.agenticwebscore/scan version 0.3.0 with 1 usable remote transport of type streamable-http. All of them answered this scan. The remote at /mcp answered HTTP 405 to a plain GET, so a server runs there that serves no stream on GET.",
      "evidence": "{\"name\":\"com.agenticwebscore/scan\",\"version\":\"0.3.0\",\"remotes\":[\"streamable-http\"]}",
      "fix": null,
      "fixNote": null
    },
    {
      "id": "agent-skills",
      "category": "protocol",
      "module": "agent-api",
      "label": "Agent Skills declaration",
      "group": "convention",
      "maturity": "draft",
      "state": "present",
      "detail": "Agent skills index at /.well-known/agent-skills/index.json lists 59 skills, each with name, type, description, url, and a sha256 digest. 10 of 59 artifacts were fetched, and each resolved with an acceptable content type. The remaining 49 declared urls are same-origin artifacts beyond this scan's 10-artifact sample, so their responses were not observed.",
      "evidence": null,
      "fix": null,
      "fixNote": null
    },
    {
      "id": "a2a-card",
      "category": "protocol",
      "module": "agent-api",
      "label": "A2A agent card",
      "group": "convention",
      "maturity": "draft",
      "state": "out-of-scope",
      "detail": "Not scored: this check applies to a site that runs an A2A agent, and the scan found none.",
      "evidence": null,
      "fix": null,
      "fixNote": null
    },
    {
      "id": "a2a-signed",
      "category": "protocol",
      "module": "agent-api",
      "label": "Cryptographically signed agent card",
      "group": "convention",
      "maturity": "draft",
      "state": "out-of-scope",
      "detail": "Not scored: this check applies to a site that runs an A2A agent, and the scan found none.",
      "evidence": null,
      "fix": null,
      "fixNote": null
    },
    {
      "id": "auth-md",
      "category": "protocol",
      "module": "agent-api",
      "label": "/auth.md agent authentication guide",
      "group": "convention",
      "maturity": "draft",
      "state": "out-of-scope",
      "detail": "Not scored: this check applies to a site that uses OAuth, and the scan found none.",
      "evidence": null,
      "fix": null,
      "fixNote": null
    },
    {
      "id": "ard-manifest",
      "category": "protocol",
      "module": "agent-api",
      "label": "ARD resource discovery manifest",
      "group": "convention",
      "maturity": "experimental",
      "state": "out-of-scope",
      "detail": "Not scored: the homepage links no ARD manifest, and the 4 manifest paths served none (/.well-known/ard.json 404 application/problem+json; /.well-known/agent-resources.json 404 application/problem+json; /.well-known/ai-catalog.json 404 application/problem+json; /ard.json 404 application/problem+json).",
      "evidence": null,
      "fix": null,
      "fixNote": null
    },
    {
      "id": "mpp-discovery",
      "category": "protocol",
      "module": "agent-api",
      "label": "MPP discovery in OpenAPI (x-payment-info)",
      "group": "convention",
      "maturity": "draft",
      "state": "absent",
      "detail": "Not declared: /openapi.json describes 5 operations, and none declares x-payment-info.",
      "evidence": "/openapi.json: HTTP 200, 33 KB; 5 operations read",
      "fix": null,
      "fixNote": null
    },
    {
      "id": "payment-protocols",
      "category": "commerce",
      "module": "commerce",
      "label": "Agent payment protocol (UCP profile or x402)",
      "group": "convention",
      "maturity": "draft",
      "state": "out-of-scope",
      "detail": "Not scored: the homepage shows no commercial signal, so commerce checks are not asked of this site.",
      "evidence": null,
      "fix": null,
      "fixNote": null
    },
    {
      "id": "agent-purchase",
      "category": "commerce",
      "module": "commerce",
      "label": "Agent purchase policy",
      "group": "choice",
      "maturity": "draft",
      "state": "out-of-scope",
      "detail": "Not scored: the homepage shows no commercial signal, so commerce checks are not asked of this site.",
      "evidence": null,
      "fix": null,
      "fixNote": null
    },
    {
      "id": "ucp-manifest",
      "category": "commerce",
      "module": "commerce",
      "label": "UCP manifest (/.well-known/ucp)",
      "group": "convention",
      "maturity": "draft",
      "state": "out-of-scope",
      "detail": "Not scored: the homepage shows no commercial signal, so commerce checks are not asked of this site.",
      "evidence": null,
      "fix": null,
      "fixNote": null
    },
    {
      "id": "acp-discovery",
      "category": "commerce",
      "module": "commerce",
      "label": "ACP discovery (/.well-known/acp.json)",
      "group": "convention",
      "maturity": "draft",
      "state": "out-of-scope",
      "detail": "Not scored: the homepage shows no commercial signal, so commerce checks are not asked of this site.",
      "evidence": null,
      "fix": null,
      "fixNote": null
    },
    {
      "id": "sandbox-environment",
      "category": "protocol",
      "module": "agent-api",
      "label": "Sandbox or test environment documented",
      "group": "choice",
      "maturity": "experimental",
      "state": "absent",
      "detail": "Not published: the OpenAPI description at /openapi.json names no sandbox, staging or test environment.",
      "evidence": null,
      "fix": null,
      "fixNote": null
    },
    {
      "id": "rate-limits-declared",
      "category": "protocol",
      "module": "agent-api",
      "label": "Rate limits and quotas documented",
      "group": "choice",
      "maturity": "experimental",
      "state": "absent",
      "detail": "Not published: the developer documentation (/docs/rate-limits answered HTTP 404) states no quota, and the probe responses carry 0 quota headers.",
      "evidence": null,
      "fix": null,
      "fixNote": null
    },
    {
      "id": "licensing-terms",
      "category": "content",
      "module": "core",
      "label": "Reuse and licensing terms declared",
      "group": "choice",
      "maturity": "draft",
      "state": "out-of-scope",
      "detail": "Not scored: this check applies to publisher or institution sites; this site was measured as API platform.",
      "evidence": null,
      "fix": null,
      "fixNote": null
    },
    {
      "id": "provenance-declared",
      "category": "content",
      "module": "core",
      "label": "Content provenance declared",
      "group": "choice",
      "maturity": "adopted",
      "state": "out-of-scope",
      "detail": "Not scored: this check applies to publisher or institution sites; this site was measured as API platform.",
      "evidence": null,
      "fix": null,
      "fixNote": null
    },
    {
      "id": "booking-action",
      "category": "commerce",
      "module": "core",
      "label": "Machine-readable booking action",
      "group": "choice",
      "maturity": "draft",
      "state": "out-of-scope",
      "detail": "Not scored: this check applies to services sites; this site was measured as API platform.",
      "evidence": null,
      "fix": null,
      "fixNote": null
    },
    {
      "id": "document-formats",
      "category": "content",
      "module": "core",
      "label": "Documents in machine-readable formats",
      "group": "choice",
      "maturity": "adopted",
      "state": "out-of-scope",
      "detail": "Not scored: this check applies to institution sites; this site was measured as API platform.",
      "evidence": null,
      "fix": null,
      "fixNote": null
    }
  ],
  "counts": {
    "pass": 21,
    "warn": 0,
    "fail": 0,
    "na": 7,
    "total": 28
  },
  "unscoredCounts": {
    "present": 6,
    "defective": 0,
    "absent": 5,
    "out-of-scope": 13,
    "not-measured": 0,
    "total": 24
  },
  "blockedBy": null,
  "nextLevelGaps": [],
  "ratio": {
    "passed": 21,
    "applicable": 21,
    "label": "21/21"
  },
  "meta": {
    "title": "Agent readiness checker: see your site the way agents do",
    "description": "Agent readiness checker: see your site the way AI agents do. AgenticWebScore runs 60 checks from the outside and shows the evidence and the source for each.",
    "lang": "en",
    "words": 2355,
    "tokensEst": 3179,
    "bytes": 65711,
    "status": 200
  },
  "requests_log": [
    {
      "path": "/",
      "status": 200,
      "bytes": 65711,
      "ms": 718,
      "contentType": "text/html",
      "hops": 0
    },
    {
      "path": "/robots.txt",
      "status": 200,
      "bytes": 2802,
      "ms": 29,
      "contentType": "text/plain",
      "hops": 0
    },
    {
      "path": "/sitemap.xml",
      "status": 200,
      "bytes": 12569,
      "ms": 28,
      "contentType": "application/xml",
      "hops": 0
    },
    {
      "path": "/llms.txt",
      "status": 200,
      "bytes": 25139,
      "ms": 32,
      "contentType": "text/plain",
      "hops": 0
    },
    {
      "path": "/.well-known/security.txt",
      "status": 200,
      "bytes": 379,
      "ms": 32,
      "contentType": "text/plain",
      "hops": 0
    },
    {
      "path": "/security.txt",
      "status": 404,
      "bytes": 18536,
      "ms": 29,
      "contentType": "text/html",
      "hops": 0
    },
    {
      "path": "/about",
      "status": 200,
      "bytes": 21868,
      "ms": 8,
      "contentType": "text/html",
      "hops": 0
    },
    {
      "path": "/contact",
      "status": 404,
      "bytes": 16402,
      "ms": 22,
      "contentType": "text/html",
      "hops": 0
    },
    {
      "path": "/pricing",
      "status": 404,
      "bytes": 18531,
      "ms": 32,
      "contentType": "text/html",
      "hops": 0
    },
    {
      "path": "/docs",
      "status": 404,
      "bytes": 16402,
      "ms": 38,
      "contentType": "text/html",
      "hops": 0
    },
    {
      "path": "/developers",
      "status": 404,
      "bytes": 18534,
      "ms": 39,
      "contentType": "text/html",
      "hops": 0
    },
    {
      "path": "/.well-known/api-catalog",
      "status": 200,
      "bytes": 4382,
      "ms": 35,
      "contentType": "application/linkset+json",
      "hops": 0
    },
    {
      "path": "/openapi.json",
      "status": 200,
      "bytes": 33701,
      "ms": 22,
      "contentType": "application/json",
      "hops": 0
    },
    {
      "path": "/.well-known/openapi.json",
      "status": 404,
      "bytes": 233,
      "ms": 13,
      "contentType": "application/problem+json",
      "hops": 0
    },
    {
      "path": "/.well-known/mcp/server-card.json",
      "status": 200,
      "bytes": 4360,
      "ms": 4,
      "contentType": "application/json",
      "hops": 0
    },
    {
      "path": "/.well-known/ai-catalog.json",
      "status": 404,
      "bytes": 236,
      "ms": 6,
      "contentType": "application/problem+json",
      "hops": 0
    },
    {
      "path": "/.well-known/agent-card.json",
      "status": 404,
      "bytes": 236,
      "ms": 6,
      "contentType": "application/problem+json",
      "hops": 0
    },
    {
      "path": "/.well-known/oauth-protected-resource",
      "status": 404,
      "bytes": 245,
      "ms": 8,
      "contentType": "application/problem+json",
      "hops": 0
    },
    {
      "path": "/.well-known/oauth-authorization-server",
      "status": 404,
      "bytes": 247,
      "ms": 13,
      "contentType": "application/problem+json",
      "hops": 0
    },
    {
      "path": "/.well-known/openid-configuration",
      "status": 404,
      "bytes": 241,
      "ms": 14,
      "contentType": "application/problem+json",
      "hops": 0
    },
    {
      "path": "/llms-full.txt",
      "status": 200,
      "bytes": 781603,
      "ms": 41,
      "contentType": "text/plain",
      "hops": 0
    },
    {
      "path": "/ai-policy",
      "status": 200,
      "bytes": 24828,
      "ms": 17,
      "contentType": "text/html",
      "hops": 0
    },
    {
      "path": "/ai-usage-policy",
      "status": 404,
      "bytes": 18539,
      "ms": 47,
      "contentType": "text/html",
      "hops": 0
    },
    {
      "path": "/ai",
      "status": 404,
      "bytes": 18526,
      "ms": 47,
      "contentType": "text/html",
      "hops": 0
    },
    {
      "path": "/legal/ai-policy",
      "status": 404,
      "bytes": 18539,
      "ms": 47,
      "contentType": "text/html",
      "hops": 0
    },
    {
      "path": "/yapay-zeka-politikasi",
      "status": 404,
      "bytes": 18545,
      "ms": 30,
      "contentType": "text/html",
      "hops": 0
    },
    {
      "path": "/.well-known/mcp.json",
      "status": 404,
      "bytes": 229,
      "ms": 12,
      "contentType": "application/problem+json",
      "hops": 0
    },
    {
      "path": "/mcp.json",
      "status": 404,
      "bytes": 217,
      "ms": 18,
      "contentType": "application/problem+json",
      "hops": 0
    },
    {
      "path": "/mcp",
      "status": 405,
      "bytes": 462,
      "ms": 19,
      "contentType": "text/plain",
      "hops": 0
    },
    {
      "path": "/openapi.yaml",
      "status": 404,
      "bytes": 18536,
      "ms": 17,
      "contentType": "text/html",
      "hops": 0
    },
    {
      "path": "/api/openapi.json",
      "status": 404,
      "bytes": 225,
      "ms": 18,
      "contentType": "application/problem+json",
      "hops": 0
    },
    {
      "path": "/swagger.json",
      "status": 404,
      "bytes": 221,
      "ms": 13,
      "contentType": "application/problem+json",
      "hops": 0
    },
    {
      "path": "/.well-known/agent-skills/index.json",
      "status": 200,
      "bytes": 27097,
      "ms": 17,
      "contentType": "application/json",
      "hops": 0
    },
    {
      "path": "/.well-known/agent-skills.json",
      "status": 404,
      "bytes": 238,
      "ms": 17,
      "contentType": "application/problem+json",
      "hops": 0
    },
    {
      "path": "/.well-known/skills.json",
      "status": 404,
      "bytes": 232,
      "ms": 18,
      "contentType": "application/problem+json",
      "hops": 0
    },
    {
      "path": "/.well-known/ard.json",
      "status": 404,
      "bytes": 229,
      "ms": 18,
      "contentType": "application/problem+json",
      "hops": 0
    },
    {
      "path": "/.well-known/agent-resources.json",
      "status": 404,
      "bytes": 241,
      "ms": 18,
      "contentType": "application/problem+json",
      "hops": 0
    },
    {
      "path": "/ard.json",
      "status": 404,
      "bytes": 217,
      "ms": 4,
      "contentType": "application/problem+json",
      "hops": 0
    },
    {
      "path": "/documentation",
      "status": 404,
      "bytes": 18537,
      "ms": 6,
      "contentType": "text/html",
      "hops": 0
    },
    {
      "path": "/gelistiriciler",
      "status": 404,
      "bytes": 18538,
      "ms": 10,
      "contentType": "text/html",
      "hops": 0
    },
    {
      "path": "/status",
      "status": 200,
      "bytes": 24058,
      "ms": 46,
      "contentType": "text/html",
      "hops": 0
    },
    {
      "path": "/changelog",
      "status": 200,
      "bytes": 17561,
      "ms": 17,
      "contentType": "application/atom+xml",
      "hops": 1
    },
    {
      "path": "/releases",
      "status": 404,
      "bytes": 18532,
      "ms": 16,
      "contentType": "text/html",
      "hops": 0
    },
    {
      "path": "/whats-new",
      "status": 404,
      "bytes": 18533,
      "ms": 13,
      "contentType": "text/html",
      "hops": 0
    },
    {
      "path": "/docs/sandbox",
      "status": 404,
      "bytes": 18536,
      "ms": 8,
      "contentType": "text/html",
      "hops": 0
    },
    {
      "path": "/sandbox",
      "status": 404,
      "bytes": 18531,
      "ms": 37,
      "contentType": "text/html",
      "hops": 0
    },
    {
      "path": "/developers/sandbox",
      "status": 404,
      "bytes": 18542,
      "ms": 37,
      "contentType": "text/html",
      "hops": 0
    },
    {
      "path": "/rate-limits.json",
      "status": 404,
      "bytes": 225,
      "ms": 38,
      "contentType": "application/problem+json",
      "hops": 0
    },
    {
      "path": "/.well-known/rate-limits.json",
      "status": 404,
      "bytes": 237,
      "ms": 41,
      "contentType": "application/problem+json",
      "hops": 0
    },
    {
      "path": "/docs/rate-limits",
      "status": 404,
      "bytes": 18540,
      "ms": 30,
      "contentType": "text/html",
      "hops": 0
    },
    {
      "path": "/tools/llms-txt-checker",
      "status": 200,
      "bytes": 32405,
      "ms": 95,
      "contentType": "text/html",
      "hops": 0
    },
    {
      "path": "/skills/agent-access.md",
      "status": 200,
      "bytes": 3240,
      "ms": 20,
      "contentType": "text/markdown",
      "hops": 0
    },
    {
      "path": "/skills/robots-txt.md",
      "status": 200,
      "bytes": 2737,
      "ms": 21,
      "contentType": "text/markdown",
      "hops": 0
    },
    {
      "path": "/skills/sitemap.md",
      "status": 200,
      "bytes": 3332,
      "ms": 21,
      "contentType": "text/markdown",
      "hops": 0
    },
    {
      "path": "/skills/llms-txt.md",
      "status": 200,
      "bytes": 2886,
      "ms": 21,
      "contentType": "text/markdown",
      "hops": 0
    },
    {
      "path": "/skills/link-headers.md",
      "status": 200,
      "bytes": 3211,
      "ms": 21,
      "contentType": "text/markdown",
      "hops": 0
    },
    {
      "path": "/skills/dns-aid.md",
      "status": 200,
      "bytes": 2259,
      "ms": 4,
      "contentType": "text/markdown",
      "hops": 0
    },
    {
      "path": "/skills/canonical.md",
      "status": 200,
      "bytes": 2625,
      "ms": 3,
      "contentType": "text/markdown",
      "hops": 0
    },
    {
      "path": "/skills/http-caching.md",
      "status": 200,
      "bytes": 3656,
      "ms": 8,
      "contentType": "text/markdown",
      "hops": 0
    },
    {
      "path": "/skills/indexing-directives.md",
      "status": 200,
      "bytes": 3881,
      "ms": 14,
      "contentType": "text/markdown",
      "hops": 0
    },
    {
      "path": "/skills/not-found-status.md",
      "status": 200,
      "bytes": 2474,
      "ms": 14,
      "contentType": "text/markdown",
      "hops": 0
    },
    {
      "path": "/abuse",
      "status": 200,
      "bytes": 41485,
      "ms": 34,
      "contentType": "text/html",
      "hops": 0
    },
    {
      "path": "/methodology",
      "status": 200,
      "bytes": 176214,
      "ms": 31,
      "contentType": "text/html",
      "hops": 0
    },
    {
      "path": "/checks",
      "status": 200,
      "bytes": 81958,
      "ms": 36,
      "contentType": "text/html",
      "hops": 0
    },
    {
      "path": "/aws/cloudflare.com",
      "status": 200,
      "bytes": 222955,
      "ms": 77,
      "contentType": "text/html",
      "hops": 0
    },
    {
      "path": "/bot",
      "status": 200,
      "bytes": 63832,
      "ms": 23,
      "contentType": "text/html",
      "hops": 0
    },
    {
      "path": "/tools",
      "status": 200,
      "bytes": 28328,
      "ms": 15,
      "contentType": "text/html",
      "hops": 0
    },
    {
      "path": "/tools/mcp-server-tester",
      "status": 200,
      "bytes": 39599,
      "ms": 189,
      "contentType": "text/html",
      "hops": 0
    },
    {
      "path": "/api/scan",
      "status": 400,
      "bytes": 97,
      "ms": 41,
      "contentType": "application/json",
      "hops": 0
    },
    {
      "path": "/api/health",
      "status": 200,
      "bytes": 1537,
      "ms": 155,
      "contentType": "application/json",
      "hops": 0
    },
    {
      "path": "/",
      "status": 200,
      "bytes": 8454,
      "ms": 26,
      "contentType": "text/markdown",
      "hops": 0
    },
    {
      "path": "/",
      "status": 304,
      "bytes": 0,
      "ms": 115,
      "contentType": "",
      "hops": 0
    },
    {
      "path": "/aws-probe-659647ebb56f",
      "status": 404,
      "bytes": 16402,
      "ms": 26,
      "contentType": "text/html",
      "hops": 0
    },
    {
      "path": "/aws-probe-659647ebb56f",
      "status": 404,
      "bytes": 231,
      "ms": 26,
      "contentType": "application/problem+json",
      "hops": 0
    },
    {
      "path": "/mcp",
      "status": 200,
      "bytes": 529,
      "ms": 28,
      "contentType": "application/json",
      "hops": 0,
      "method": "POST"
    },
    {
      "path": "/mcp",
      "status": 202,
      "bytes": 0,
      "ms": 19,
      "contentType": "",
      "hops": 0,
      "method": "POST"
    },
    {
      "path": "/mcp",
      "status": 200,
      "bytes": 2386,
      "ms": 22,
      "contentType": "application/json",
      "hops": 0,
      "method": "POST"
    }
  ],
  "usable": {
    "kind": "mcp",
    "tools": [
      "scan_site",
      "get_score",
      "list_checks",
      "get_report"
    ],
    "toolCount": 4
  }
}