{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_z5va3zb3c8rn","handle":"crawlcheck","url":"https://wellknown.network/agents/crawlcheck","links":{"self":"https://wellknown.network/agents/crawlcheck/record.json","html":"https://wellknown.network/agents/crawlcheck","markdown":"https://wellknown.network/agents/crawlcheck/record.md","api":"https://wellknown.network/api/v1/agents/crawlcheck","status":"https://wellknown.network/api/v1/agents/crawlcheck/status","claim":"https://wellknown.network/agents/crawlcheck/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/crawlcheck/claim.json","badge":"https://wellknown.network/agents/crawlcheck/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/crawlcheck/history","tools":"https://wellknown.network/api/v1/agents/crawlcheck/tools"},"ard":{"identifier":"urn:air:crawlcheck.io:server:crawlcheck","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"CrawlCheck","summary":"Verification layer for the agentic web: a signed answer about any site before an agent acts.","description":"Verification layer for the agentic web: a signed answer about any site before an agent acts.","publisher":{"name":"emmanuelorta","url":null},"homepage":"https://crawlcheck.io","repository":"https://github.com/emmanuelorta/crawlcheck-core","version":"1.1.0","license":null,"protocols":["mcp"],"tags":[],"pricing":null,"endpoints":[{"url":"https://crawlcheck.io/mcp","type":"mcp_streamable_http","auth":null,"probeable":true}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-10-16T12:50:53.423046Z","publishedAt":"2026-10-16T12:50:53.423046Z","registryName":"io.github.emmanuelorta/crawlcheck"},"attribution":{"kind":"mcp_registry","name":"mcp_registry","repoUrl":"mcp_registry","summary":"mcp_registry","version":"mcp_registry","description":"mcp_registry","homepageUrl":"mcp_registry","publisherName":"mcp_registry"}},"derived":{"capabilities":[{"slug":"media.video-editing","name":"Video Editing","confidence":0.525,"provenance":"derived"},{"slug":"knowledge.knowledge-graph","name":"Knowledge Graphs","confidence":0.525,"provenance":"derived"},{"slug":"security.identity","name":"Identity & Access","confidence":0.525,"provenance":"derived"},{"slug":"data.web-scraping","name":"Web Scraping","confidence":0.51,"provenance":"derived"},{"slug":"data.apis","name":"API Access","confidence":0.51,"provenance":"derived"},{"slug":"commerce.ecommerce","name":"E-commerce Operations","confidence":0.51,"provenance":"derived"},{"slug":"communication.chat","name":"Team Chat","confidence":0.51,"provenance":"derived"}],"categories":["commerce","communication","data","knowledge","media","security"],"language":"en"},"observed":{"status":"live","statusReason":"Responded 3h ago.","lastOkAt":"2026-10-24T14:24:03.359Z","lastProbedAt":"2026-10-24T14:24:03.359Z","statusComputedAt":"2026-10-24T14:26:28.830Z","reliability30d":{"probes":41,"successRate":1,"p50Ms":149,"basis":"service","measures":{"availability":"availability","latency":"response time","tools":"tool surface observed","summary":"Checks reached the service itself."},"checks":{"total":41,"ok":41,"authBoundaryOk":0,"serviceOk":41,"note":"Counted from the observation rows for the window, checks of the server only (HTTP, A2A card, MCP initialize). ok = authBoundaryOk + serviceOk. `probes` is the sum of daily rollups and includes registry checks, so it can differ from `total`."}},"latestObservations":[{"at":"2026-10-24T14:24:03.359Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":746,"error":null,"detail":{"tools":[{"name":"preflight","description":"Call BEFORE reading, citing, connecting to or transacting with a domain. Returns a signed decision: allow, warn, require_confirmation, block or unsupported, wit"},{"name":"best_source","description":"Call when choosing WHICH business or site to cite, recommend or call. Give domains (2-10 candidate sites you found) or trade and city for a measured market. Ret"},{"name":"resolve_domain","description":"Call before fetching from, citing, connecting to or transacting with a domain. Returns one signed answer: what the domain claims, what it actually serves each c"},{"name":"field_check","description":"Call before using a phone number, address, opening hours or service area you hold for a business. One signed verdict per business field. field=phone|address|hou"},{"name":"scan_domain","description":"Scan a public domain as several crawler identities and return the graded record: grade, AI-visibility score, per-section scores, findings with evidence, and whe"},{"name":"list_verified_capabilities","description":"What a domain declares agents can do (OpenAPI operations, MCP tools, A2A skills, API catalog entries), each classed by safety (read_only_public up to financial)"},{"name":"mcp_servers","description":"Which remote MCP servers the official MCP Registry lists on a domain, and what each endpoint actually answered when CrawlCheck sent the MCP handshake (initializ"},{"name":"verify_crawler_log","description":"Given raw web-server access-log lines, decide for each line that names a crawler (GPTBot, ClaudeBot, Googlebot, PerplexityBot...) whether the source IP falls in"},{"name":"corpus_state","description":"Coverage of CrawlCheck's public dataset: how many distinct domains have been measured and how they split by platform, rendering, size, language and kind, with t"},{"name":"resolve_robots","description":"Resolve every named answer engine, search index and training crawler against a domain's robots.txt the way a crawler does: most-specific group only, longest mat"},{"name":"draft_llms","description":"Draft an llms.txt from the domain's own homepage and up to 25 declared pages, using their titles and descriptions. A draft for the owner to cut down, not a publ"},{"name":"fix_robots","description":"The domain's served robots.txt, corrected: * group rules copied into named groups that lacked them (shadowing), a Sitemap line added when missing, a minimal rep"},{"name":"fix_entitymap","description":"A starter entitymap.json built from the domain's latest scan record: name, phone, coordinates and declared service areas as entities with SERVES relations. Fiel"},{"name":"video_check","description":"One YouTube video against the video anchor model: metadata, chapters, captions and storyboard where observed, twelve checks each naming what it reads."},{"name":"video_channel","description":"Every upload on a YouTube channel, read 50 at a time, sorted by views. The upload list is free; the per-check tally needs a Watch licence and is not offered her"},{"name":"video_site","description":"The site half of video: homepage plus up to 60 sitemap pages read for YouTube embeds, facades and page-builder widgets, VideoObject nodes and their required pro"},{"name":"registry_lookup","description":"Whether a domain is in CrawlCheck's registry and what it serves: llms.txt, agents.md, a media kit at /.well-known/media-kit.json, a reciprocity-tested entity gr"},{"name":"crawler_path","description":"Where each crawler's path into a domain dies, as an observed data flow: edge decision, robots.txt as a file, robots.txt rules, then the page, JSON-LD, sitemap, "},{"name":"public_counts","description":"The figures CrawlCheck quotes about itself, read from the source: sites_measured, domains_in_corpus, crawler_visits (a rolling window), sections, sections_score"},{"name":"telemetry","description":"Verified-crawler traffic observed at crawlcheck.io itself: which named agents arrived, how many claims were confirmed against operator ranges, how many were for"},{"name":"fix_mostly_code","description":"A fix plan for PAGE_IS_MOSTLY_CODE: the homepage's measured bytes by category, the largest blocks with what to do with each, ordered steps with the text ratio a"},{"name":"fix_stale_cache","description":"A fix plan for STALE_CACHE_SERVED: the homepage fetched now, its Age, the cache layers that name themselves in the headers in purge order (innermost first), the"},{"name":"fix_machine_chain","description":"A fix plan for MACHINE_CHAIN_HEAVY: the files a crawler reads before the page and the 404s absent agent files return, then measured reductions (llms.txt to an i"},{"name":"explain_finding","description":"Why CrawlCheck decided a finding: the rule and its revision, the exact fetches it compared (identity, status, bytes, sha256), when the condition held on the sit"},{"name":"machine_record","description":"The unified machine record for one observation: subject, grade, findings (the top one in full without a licence), capabilities with verification, and the eviden"}],"toolCount":25,"toolsHash":"2089204fb9e97097e296b51a01e90111d7c9b85bb2322f25f4bdfb64bf10ebbe","serverName":"crawlcheck","capabilities":["tools"],"serverVersion":"1.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-24T07:27:29.686Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":42,"error":null,"detail":{"tools":[{"name":"preflight","description":"Call BEFORE reading, citing, connecting to or transacting with a domain. Returns a signed decision: allow, warn, require_confirmation, block or unsupported, wit"},{"name":"best_source","description":"Call when choosing WHICH business or site to cite, recommend or call. Give domains (2-10 candidate sites you found) or trade and city for a measured market. Ret"},{"name":"resolve_domain","description":"Call before fetching from, citing, connecting to or transacting with a domain. Returns one signed answer: what the domain claims, what it actually serves each c"},{"name":"field_check","description":"Call before using a phone number, address, opening hours or service area you hold for a business. One signed verdict per business field. field=phone|address|hou"},{"name":"scan_domain","description":"Scan a public domain as several crawler identities and return the graded record: grade, AI-visibility score, per-section scores, findings with evidence, and whe"},{"name":"list_verified_capabilities","description":"What a domain declares agents can do (OpenAPI operations, MCP tools, A2A skills, API catalog entries), each classed by safety (read_only_public up to financial)"},{"name":"mcp_servers","description":"Which remote MCP servers the official MCP Registry lists on a domain, and what each endpoint actually answered when CrawlCheck sent the MCP handshake (initializ"},{"name":"verify_crawler_log","description":"Given raw web-server access-log lines, decide for each line that names a crawler (GPTBot, ClaudeBot, Googlebot, PerplexityBot...) whether the source IP falls in"},{"name":"corpus_state","description":"Coverage of CrawlCheck's public dataset: how many distinct domains have been measured and how they split by platform, rendering, size, language and kind, with t"},{"name":"resolve_robots","description":"Resolve every named answer engine, search index and training crawler against a domain's robots.txt the way a crawler does: most-specific group only, longest mat"},{"name":"draft_llms","description":"Draft an llms.txt from the domain's own homepage and up to 25 declared pages, using their titles and descriptions. A draft for the owner to cut down, not a publ"},{"name":"fix_robots","description":"The domain's served robots.txt, corrected: * group rules copied into named groups that lacked them (shadowing), a Sitemap line added when missing, a minimal rep"},{"name":"fix_entitymap","description":"A starter entitymap.json built from the domain's latest scan record: name, phone, coordinates and declared service areas as entities with SERVES relations. Fiel"},{"name":"video_check","description":"One YouTube video against the video anchor model: metadata, chapters, captions and storyboard where observed, twelve checks each naming what it reads."},{"name":"video_channel","description":"Every upload on a YouTube channel, read 50 at a time, sorted by views. The upload list is free; the per-check tally needs a Watch licence and is not offered her"},{"name":"video_site","description":"The site half of video: homepage plus up to 60 sitemap pages read for YouTube embeds, facades and page-builder widgets, VideoObject nodes and their required pro"},{"name":"registry_lookup","description":"Whether a domain is in CrawlCheck's registry and what it serves: llms.txt, agents.md, a media kit at /.well-known/media-kit.json, a reciprocity-tested entity gr"},{"name":"crawler_path","description":"Where each crawler's path into a domain dies, as an observed data flow: edge decision, robots.txt as a file, robots.txt rules, then the page, JSON-LD, sitemap, "},{"name":"public_counts","description":"The figures CrawlCheck quotes about itself, read from the source: sites_measured, domains_in_corpus, crawler_visits (a rolling window), sections, sections_score"},{"name":"telemetry","description":"Verified-crawler traffic observed at crawlcheck.io itself: which named agents arrived, how many claims were confirmed against operator ranges, how many were for"},{"name":"fix_mostly_code","description":"A fix plan for PAGE_IS_MOSTLY_CODE: the homepage's measured bytes by category, the largest blocks with what to do with each, ordered steps with the text ratio a"},{"name":"fix_stale_cache","description":"A fix plan for STALE_CACHE_SERVED: the homepage fetched now, its Age, the cache layers that name themselves in the headers in purge order (innermost first), the"},{"name":"fix_machine_chain","description":"A fix plan for MACHINE_CHAIN_HEAVY: the files a crawler reads before the page and the 404s absent agent files return, then measured reductions (llms.txt to an i"},{"name":"explain_finding","description":"Why CrawlCheck decided a finding: the rule and its revision, the exact fetches it compared (identity, status, bytes, sha256), when the condition held on the sit"},{"name":"machine_record","description":"The unified machine record for one observation: subject, grade, findings (the top one in full without a licence), capabilities with verification, and the eviden"}],"toolCount":25,"toolsHash":"2089204fb9e97097e296b51a01e90111d7c9b85bb2322f25f4bdfb64bf10ebbe","serverName":"crawlcheck","capabilities":["tools"],"serverVersion":"1.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-24T00:26:11.016Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":23,"error":null,"detail":{"tools":[{"name":"preflight","description":"Call BEFORE reading, citing, connecting to or transacting with a domain. Returns a signed decision: allow, warn, require_confirmation, block or unsupported, wit"},{"name":"best_source","description":"Call when choosing WHICH business or site to cite, recommend or call. Give domains (2-10 candidate sites you found) or trade and city for a measured market. Ret"},{"name":"resolve_domain","description":"Call before fetching from, citing, connecting to or transacting with a domain. Returns one signed answer: what the domain claims, what it actually serves each c"},{"name":"field_check","description":"Call before using a phone number, address, opening hours or service area you hold for a business. One signed verdict per business field. field=phone|address|hou"},{"name":"scan_domain","description":"Scan a public domain as several crawler identities and return the graded record: grade, AI-visibility score, per-section scores, findings with evidence, and whe"},{"name":"list_verified_capabilities","description":"What a domain declares agents can do (OpenAPI operations, MCP tools, A2A skills, API catalog entries), each classed by safety (read_only_public up to financial)"},{"name":"mcp_servers","description":"Which remote MCP servers the official MCP Registry lists on a domain, and what each endpoint actually answered when CrawlCheck sent the MCP handshake (initializ"},{"name":"verify_crawler_log","description":"Given raw web-server access-log lines, decide for each line that names a crawler (GPTBot, ClaudeBot, Googlebot, PerplexityBot...) whether the source IP falls in"},{"name":"corpus_state","description":"Coverage of CrawlCheck's public dataset: how many distinct domains have been measured and how they split by platform, rendering, size, language and kind, with t"},{"name":"resolve_robots","description":"Resolve every named answer engine, search index and training crawler against a domain's robots.txt the way a crawler does: most-specific group only, longest mat"},{"name":"draft_llms","description":"Draft an llms.txt from the domain's own homepage and up to 25 declared pages, using their titles and descriptions. A draft for the owner to cut down, not a publ"},{"name":"fix_robots","description":"The domain's served robots.txt, corrected: * group rules copied into named groups that lacked them (shadowing), a Sitemap line added when missing, a minimal rep"},{"name":"fix_entitymap","description":"A starter entitymap.json built from the domain's latest scan record: name, phone, coordinates and declared service areas as entities with SERVES relations. Fiel"},{"name":"video_check","description":"One YouTube video against the video anchor model: metadata, chapters, captions and storyboard where observed, twelve checks each naming what it reads."},{"name":"video_channel","description":"Every upload on a YouTube channel, read 50 at a time, sorted by views. The upload list is free; the per-check tally needs a Watch licence and is not offered her"},{"name":"video_site","description":"The site half of video: homepage plus up to 60 sitemap pages read for YouTube embeds, facades and page-builder widgets, VideoObject nodes and their required pro"},{"name":"registry_lookup","description":"Whether a domain is in CrawlCheck's registry and what it serves: llms.txt, agents.md, a media kit at /.well-known/media-kit.json, a reciprocity-tested entity gr"},{"name":"crawler_path","description":"Where each crawler's path into a domain dies, as an observed data flow: edge decision, robots.txt as a file, robots.txt rules, then the page, JSON-LD, sitemap, "},{"name":"public_counts","description":"The figures CrawlCheck quotes about itself, read from the source: sites_measured, domains_in_corpus, crawler_visits (a rolling window), sections, sections_score"},{"name":"telemetry","description":"Verified-crawler traffic observed at crawlcheck.io itself: which named agents arrived, how many claims were confirmed against operator ranges, how many were for"},{"name":"fix_mostly_code","description":"A fix plan for PAGE_IS_MOSTLY_CODE: the homepage's measured bytes by category, the largest blocks with what to do with each, ordered steps with the text ratio a"},{"name":"fix_stale_cache","description":"A fix plan for STALE_CACHE_SERVED: the homepage fetched now, its Age, the cache layers that name themselves in the headers in purge order (innermost first), the"},{"name":"fix_machine_chain","description":"A fix plan for MACHINE_CHAIN_HEAVY: the files a crawler reads before the page and the 404s absent agent files return, then measured reductions (llms.txt to an i"},{"name":"explain_finding","description":"Why CrawlCheck decided a finding: the rule and its revision, the exact fetches it compared (identity, status, bytes, sha256), when the condition held on the sit"},{"name":"machine_record","description":"The unified machine record for one observation: subject, grade, findings (the top one in full without a licence), capabilities with verification, and the eviden"}],"toolCount":25,"toolsHash":"2089204fb9e97097e296b51a01e90111d7c9b85bb2322f25f4bdfb64bf10ebbe","serverName":"crawlcheck","capabilities":["tools"],"serverVersion":"1.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-23T17:30:52.451Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":357,"error":null,"detail":{"tools":[{"name":"preflight","description":"Call BEFORE reading, citing, connecting to or transacting with a domain. Returns a signed decision: allow, warn, require_confirmation, block or unsupported, wit"},{"name":"best_source","description":"Call when choosing WHICH business or site to cite, recommend or call. Give domains (2-10 candidate sites you found) or trade and city for a measured market. Ret"},{"name":"resolve_domain","description":"Call before fetching from, citing, connecting to or transacting with a domain. Returns one signed answer: what the domain claims, what it actually serves each c"},{"name":"field_check","description":"Call before using a phone number, address, opening hours or service area you hold for a business. One signed verdict per business field. field=phone|address|hou"},{"name":"scan_domain","description":"Scan a public domain as several crawler identities and return the graded record: grade, AI-visibility score, per-section scores, findings with evidence, and whe"},{"name":"list_verified_capabilities","description":"What a domain declares agents can do (OpenAPI operations, MCP tools, A2A skills, API catalog entries), each classed by safety (read_only_public up to financial)"},{"name":"mcp_servers","description":"Which remote MCP servers the official MCP Registry lists on a domain, and what each endpoint actually answered when CrawlCheck sent the MCP handshake (initializ"},{"name":"verify_crawler_log","description":"Given raw web-server access-log lines, decide for each line that names a crawler (GPTBot, ClaudeBot, Googlebot, PerplexityBot...) whether the source IP falls in"},{"name":"corpus_state","description":"Coverage of CrawlCheck's public dataset: how many distinct domains have been measured and how they split by platform, rendering, size, language and kind, with t"},{"name":"resolve_robots","description":"Resolve every named answer engine, search index and training crawler against a domain's robots.txt the way a crawler does: most-specific group only, longest mat"},{"name":"draft_llms","description":"Draft an llms.txt from the domain's own homepage and up to 25 declared pages, using their titles and descriptions. A draft for the owner to cut down, not a publ"},{"name":"fix_robots","description":"The domain's served robots.txt, corrected: * group rules copied into named groups that lacked them (shadowing), a Sitemap line added when missing, a minimal rep"},{"name":"fix_entitymap","description":"A starter entitymap.json built from the domain's latest scan record: name, phone, coordinates and declared service areas as entities with SERVES relations. Fiel"},{"name":"video_check","description":"One YouTube video against the video anchor model: metadata, chapters, captions and storyboard where observed, twelve checks each naming what it reads."},{"name":"video_channel","description":"Every upload on a YouTube channel, read 50 at a time, sorted by views. The upload list is free; the per-check tally needs a Watch licence and is not offered her"},{"name":"video_site","description":"The site half of video: homepage plus up to 60 sitemap pages read for YouTube embeds, facades and page-builder widgets, VideoObject nodes and their required pro"},{"name":"registry_lookup","description":"Whether a domain is in CrawlCheck's registry and what it serves: llms.txt, agents.md, a media kit at /.well-known/media-kit.json, a reciprocity-tested entity gr"},{"name":"crawler_path","description":"Where each crawler's path into a domain dies, as an observed data flow: edge decision, robots.txt as a file, robots.txt rules, then the page, JSON-LD, sitemap, "},{"name":"public_counts","description":"The figures CrawlCheck quotes about itself, read from the source: sites_measured, domains_in_corpus, crawler_visits (a rolling window), sections, sections_score"},{"name":"telemetry","description":"Verified-crawler traffic observed at crawlcheck.io itself: which named agents arrived, how many claims were confirmed against operator ranges, how many were for"},{"name":"fix_mostly_code","description":"A fix plan for PAGE_IS_MOSTLY_CODE: the homepage's measured bytes by category, the largest blocks with what to do with each, ordered steps with the text ratio a"},{"name":"fix_stale_cache","description":"A fix plan for STALE_CACHE_SERVED: the homepage fetched now, its Age, the cache layers that name themselves in the headers in purge order (innermost first), the"},{"name":"fix_machine_chain","description":"A fix plan for MACHINE_CHAIN_HEAVY: the files a crawler reads before the page and the 404s absent agent files return, then measured reductions (llms.txt to an i"},{"name":"explain_finding","description":"Why CrawlCheck decided a finding: the rule and its revision, the exact fetches it compared (identity, status, bytes, sha256), when the condition held on the sit"},{"name":"machine_record","description":"The unified machine record for one observation: subject, grade, findings (the top one in full without a licence), capabilities with verification, and the eviden"}],"toolCount":25,"toolsHash":"2089204fb9e97097e296b51a01e90111d7c9b85bb2322f25f4bdfb64bf10ebbe","serverName":"crawlcheck","capabilities":["tools"],"serverVersion":"1.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-23T11:24:08.916Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":616,"error":null,"detail":{"tools":[{"name":"preflight","description":"Call BEFORE reading, citing, connecting to or transacting with a domain. Returns a signed decision: allow, warn, require_confirmation, block or unsupported, wit"},{"name":"best_source","description":"Call when choosing WHICH business or site to cite, recommend or call. Give domains (2-10 candidate sites you found) or trade and city for a measured market. Ret"},{"name":"resolve_domain","description":"Call before fetching from, citing, connecting to or transacting with a domain. Returns one signed answer: what the domain claims, what it actually serves each c"},{"name":"field_check","description":"Call before using a phone number, address, opening hours or service area you hold for a business. One signed verdict per business field. field=phone|address|hou"},{"name":"scan_domain","description":"Scan a public domain as several crawler identities and return the graded record: grade, AI-visibility score, per-section scores, findings with evidence, and whe"},{"name":"list_verified_capabilities","description":"What a domain declares agents can do (OpenAPI operations, MCP tools, A2A skills, API catalog entries), each classed by safety (read_only_public up to financial)"},{"name":"mcp_servers","description":"Which remote MCP servers the official MCP Registry lists on a domain, and what each endpoint actually answered when CrawlCheck sent the MCP handshake (initializ"},{"name":"verify_crawler_log","description":"Given raw web-server access-log lines, decide for each line that names a crawler (GPTBot, ClaudeBot, Googlebot, PerplexityBot...) whether the source IP falls in"},{"name":"corpus_state","description":"Coverage of CrawlCheck's public dataset: how many distinct domains have been measured and how they split by platform, rendering, size, language and kind, with t"},{"name":"resolve_robots","description":"Resolve every named answer engine, search index and training crawler against a domain's robots.txt the way a crawler does: most-specific group only, longest mat"},{"name":"draft_llms","description":"Draft an llms.txt from the domain's own homepage and up to 25 declared pages, using their titles and descriptions. A draft for the owner to cut down, not a publ"},{"name":"fix_robots","description":"The domain's served robots.txt, corrected: * group rules copied into named groups that lacked them (shadowing), a Sitemap line added when missing, a minimal rep"},{"name":"fix_entitymap","description":"A starter entitymap.json built from the domain's latest scan record: name, phone, coordinates and declared service areas as entities with SERVES relations. Fiel"},{"name":"video_check","description":"One YouTube video against the video anchor model: metadata, chapters, captions and storyboard where observed, twelve checks each naming what it reads."},{"name":"video_channel","description":"Every upload on a YouTube channel, read 50 at a time, sorted by views. The upload list is free; the per-check tally needs a Watch licence and is not offered her"},{"name":"video_site","description":"The site half of video: homepage plus up to 60 sitemap pages read for YouTube embeds, facades and page-builder widgets, VideoObject nodes and their required pro"},{"name":"registry_lookup","description":"Whether a domain is in CrawlCheck's registry and what it serves: llms.txt, agents.md, a media kit at /.well-known/media-kit.json, a reciprocity-tested entity gr"},{"name":"crawler_path","description":"Where each crawler's path into a domain dies, as an observed data flow: edge decision, robots.txt as a file, robots.txt rules, then the page, JSON-LD, sitemap, "},{"name":"public_counts","description":"The figures CrawlCheck quotes about itself, read from the source: sites_measured, domains_in_corpus, crawler_visits (a rolling window), sections, sections_score"},{"name":"telemetry","description":"Verified-crawler traffic observed at crawlcheck.io itself: which named agents arrived, how many claims were confirmed against operator ranges, how many were for"},{"name":"fix_mostly_code","description":"A fix plan for PAGE_IS_MOSTLY_CODE: the homepage's measured bytes by category, the largest blocks with what to do with each, ordered steps with the text ratio a"},{"name":"fix_stale_cache","description":"A fix plan for STALE_CACHE_SERVED: the homepage fetched now, its Age, the cache layers that name themselves in the headers in purge order (innermost first), the"},{"name":"fix_machine_chain","description":"A fix plan for MACHINE_CHAIN_HEAVY: the files a crawler reads before the page and the 404s absent agent files return, then measured reductions (llms.txt to an i"},{"name":"explain_finding","description":"Why CrawlCheck decided a finding: the rule and its revision, the exact fetches it compared (identity, status, bytes, sha256), when the condition held on the sit"},{"name":"machine_record","description":"The unified machine record for one observation: subject, grade, findings (the top one in full without a licence), capabilities with verification, and the eviden"}],"toolCount":25,"toolsHash":"2089204fb9e97097e296b51a01e90111d7c9b85bb2322f25f4bdfb64bf10ebbe","serverName":"crawlcheck","capabilities":["tools"],"serverVersion":"1.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-23T04:26:53.002Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":661,"error":null,"detail":{"tools":[{"name":"preflight","description":"Call BEFORE reading, citing, connecting to or transacting with a domain. Returns a signed decision: allow, warn, require_confirmation, block or unsupported, wit"},{"name":"best_source","description":"Call when choosing WHICH business or site to cite, recommend or call. Give domains (2-10 candidate sites you found) or trade and city for a measured market. Ret"},{"name":"resolve_domain","description":"Call before fetching from, citing, connecting to or transacting with a domain. Returns one signed answer: what the domain claims, what it actually serves each c"},{"name":"field_check","description":"Call before using a phone number, address, opening hours or service area you hold for a business. One signed verdict per business field. field=phone|address|hou"},{"name":"scan_domain","description":"Scan a public domain as several crawler identities and return the graded record: grade, AI-visibility score, per-section scores, findings with evidence, and whe"},{"name":"list_verified_capabilities","description":"What a domain declares agents can do (OpenAPI operations, MCP tools, A2A skills, API catalog entries), each classed by safety (read_only_public up to financial)"},{"name":"mcp_servers","description":"Which remote MCP servers the official MCP Registry lists on a domain, and what each endpoint actually answered when CrawlCheck sent the MCP handshake (initializ"},{"name":"verify_crawler_log","description":"Given raw web-server access-log lines, decide for each line that names a crawler (GPTBot, ClaudeBot, Googlebot, PerplexityBot...) whether the source IP falls in"},{"name":"corpus_state","description":"Coverage of CrawlCheck's public dataset: how many distinct domains have been measured and how they split by platform, rendering, size, language and kind, with t"},{"name":"resolve_robots","description":"Resolve every named answer engine, search index and training crawler against a domain's robots.txt the way a crawler does: most-specific group only, longest mat"},{"name":"draft_llms","description":"Draft an llms.txt from the domain's own homepage and up to 25 declared pages, using their titles and descriptions. A draft for the owner to cut down, not a publ"},{"name":"fix_robots","description":"The domain's served robots.txt, corrected: * group rules copied into named groups that lacked them (shadowing), a Sitemap line added when missing, a minimal rep"},{"name":"fix_entitymap","description":"A starter entitymap.json built from the domain's latest scan record: name, phone, coordinates and declared service areas as entities with SERVES relations. Fiel"},{"name":"video_check","description":"One YouTube video against the video anchor model: metadata, chapters, captions and storyboard where observed, twelve checks each naming what it reads."},{"name":"video_channel","description":"Every upload on a YouTube channel, read 50 at a time, sorted by views. The upload list is free; the per-check tally needs a Watch licence and is not offered her"},{"name":"video_site","description":"The site half of video: homepage plus up to 60 sitemap pages read for YouTube embeds, facades and page-builder widgets, VideoObject nodes and their required pro"},{"name":"registry_lookup","description":"Whether a domain is in CrawlCheck's registry and what it serves: llms.txt, agents.md, a media kit at /.well-known/media-kit.json, a reciprocity-tested entity gr"},{"name":"crawler_path","description":"Where each crawler's path into a domain dies, as an observed data flow: edge decision, robots.txt as a file, robots.txt rules, then the page, JSON-LD, sitemap, "},{"name":"public_counts","description":"The figures CrawlCheck quotes about itself, read from the source: sites_measured, domains_in_corpus, crawler_visits (a rolling window), sections, sections_score"},{"name":"telemetry","description":"Verified-crawler traffic observed at crawlcheck.io itself: which named agents arrived, how many claims were confirmed against operator ranges, how many were for"},{"name":"fix_mostly_code","description":"A fix plan for PAGE_IS_MOSTLY_CODE: the homepage's measured bytes by category, the largest blocks with what to do with each, ordered steps with the text ratio a"},{"name":"fix_stale_cache","description":"A fix plan for STALE_CACHE_SERVED: the homepage fetched now, its Age, the cache layers that name themselves in the headers in purge order (innermost first), the"},{"name":"fix_machine_chain","description":"A fix plan for MACHINE_CHAIN_HEAVY: the files a crawler reads before the page and the 404s absent agent files return, then measured reductions (llms.txt to an i"},{"name":"explain_finding","description":"Why CrawlCheck decided a finding: the rule and its revision, the exact fetches it compared (identity, status, bytes, sha256), when the condition held on the sit"},{"name":"machine_record","description":"The unified machine record for one observation: subject, grade, findings (the top one in full without a licence), capabilities with verification, and the eviden"}],"toolCount":25,"toolsHash":"2089204fb9e97097e296b51a01e90111d7c9b85bb2322f25f4bdfb64bf10ebbe","serverName":"crawlcheck","capabilities":["tools"],"serverVersion":"1.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-22T21:31:41.812Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":593,"error":null,"detail":{"tools":[{"name":"preflight","description":"Call BEFORE reading, citing, connecting to or transacting with a domain. Returns a signed decision: allow, warn, require_confirmation, block or unsupported, wit"},{"name":"best_source","description":"Call when choosing WHICH business or site to cite, recommend or call. Give domains (2-10 candidate sites you found) or trade and city for a measured market. Ret"},{"name":"resolve_domain","description":"Call before fetching from, citing, connecting to or transacting with a domain. Returns one signed answer: what the domain claims, what it actually serves each c"},{"name":"field_check","description":"Call before using a phone number, address, opening hours or service area you hold for a business. One signed verdict per business field. field=phone|address|hou"},{"name":"scan_domain","description":"Scan a public domain as several crawler identities and return the graded record: grade, AI-visibility score, per-section scores, findings with evidence, and whe"},{"name":"list_verified_capabilities","description":"What a domain declares agents can do (OpenAPI operations, MCP tools, A2A skills, API catalog entries), each classed by safety (read_only_public up to financial)"},{"name":"mcp_servers","description":"Which remote MCP servers the official MCP Registry lists on a domain, and what each endpoint actually answered when CrawlCheck sent the MCP handshake (initializ"},{"name":"verify_crawler_log","description":"Given raw web-server access-log lines, decide for each line that names a crawler (GPTBot, ClaudeBot, Googlebot, PerplexityBot...) whether the source IP falls in"},{"name":"corpus_state","description":"Coverage of CrawlCheck's public dataset: how many distinct domains have been measured and how they split by platform, rendering, size, language and kind, with t"},{"name":"resolve_robots","description":"Resolve every named answer engine, search index and training crawler against a domain's robots.txt the way a crawler does: most-specific group only, longest mat"},{"name":"draft_llms","description":"Draft an llms.txt from the domain's own homepage and up to 25 declared pages, using their titles and descriptions. A draft for the owner to cut down, not a publ"},{"name":"fix_robots","description":"The domain's served robots.txt, corrected: * group rules copied into named groups that lacked them (shadowing), a Sitemap line added when missing, a minimal rep"},{"name":"fix_entitymap","description":"A starter entitymap.json built from the domain's latest scan record: name, phone, coordinates and declared service areas as entities with SERVES relations. Fiel"},{"name":"video_check","description":"One YouTube video against the video anchor model: metadata, chapters, captions and storyboard where observed, twelve checks each naming what it reads."},{"name":"video_channel","description":"Every upload on a YouTube channel, read 50 at a time, sorted by views. The upload list is free; the per-check tally needs a Watch licence and is not offered her"},{"name":"video_site","description":"The site half of video: homepage plus up to 60 sitemap pages read for YouTube embeds, facades and page-builder widgets, VideoObject nodes and their required pro"},{"name":"registry_lookup","description":"Whether a domain is in CrawlCheck's registry and what it serves: llms.txt, agents.md, a media kit at /.well-known/media-kit.json, a reciprocity-tested entity gr"},{"name":"crawler_path","description":"Where each crawler's path into a domain dies, as an observed data flow: edge decision, robots.txt as a file, robots.txt rules, then the page, JSON-LD, sitemap, "},{"name":"public_counts","description":"The figures CrawlCheck quotes about itself, read from the source: sites_measured, domains_in_corpus, crawler_visits (a rolling window), sections, sections_score"},{"name":"telemetry","description":"Verified-crawler traffic observed at crawlcheck.io itself: which named agents arrived, how many claims were confirmed against operator ranges, how many were for"},{"name":"fix_mostly_code","description":"A fix plan for PAGE_IS_MOSTLY_CODE: the homepage's measured bytes by category, the largest blocks with what to do with each, ordered steps with the text ratio a"},{"name":"fix_stale_cache","description":"A fix plan for STALE_CACHE_SERVED: the homepage fetched now, its Age, the cache layers that name themselves in the headers in purge order (innermost first), the"},{"name":"fix_machine_chain","description":"A fix plan for MACHINE_CHAIN_HEAVY: the files a crawler reads before the page and the 404s absent agent files return, then measured reductions (llms.txt to an i"},{"name":"explain_finding","description":"Why CrawlCheck decided a finding: the rule and its revision, the exact fetches it compared (identity, status, bytes, sha256), when the condition held on the sit"},{"name":"machine_record","description":"The unified machine record for one observation: subject, grade, findings (the top one in full without a licence), capabilities with verification, and the eviden"}],"toolCount":25,"toolsHash":"2089204fb9e97097e296b51a01e90111d7c9b85bb2322f25f4bdfb64bf10ebbe","serverName":"crawlcheck","capabilities":["tools"],"serverVersion":"1.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-22T15:32:14.768Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":811,"error":null,"detail":{"tools":[{"name":"preflight","description":"Call BEFORE reading, citing, connecting to or transacting with a domain. Returns a signed decision: allow, warn, require_confirmation, block or unsupported, wit"},{"name":"best_source","description":"Call when choosing WHICH business or site to cite, recommend or call. Give domains (2-10 candidate sites you found) or trade and city for a measured market. Ret"},{"name":"resolve_domain","description":"Call before fetching from, citing, connecting to or transacting with a domain. Returns one signed answer: what the domain claims, what it actually serves each c"},{"name":"field_check","description":"Call before using a phone number, address, opening hours or service area you hold for a business. One signed verdict per business field. field=phone|address|hou"},{"name":"scan_domain","description":"Scan a public domain as several crawler identities and return the graded record: grade, AI-visibility score, per-section scores, findings with evidence, and whe"},{"name":"list_verified_capabilities","description":"What a domain declares agents can do (OpenAPI operations, MCP tools, A2A skills, API catalog entries), each classed by safety (read_only_public up to financial)"},{"name":"mcp_servers","description":"Which remote MCP servers the official MCP Registry lists on a domain, and what each endpoint actually answered when CrawlCheck sent the MCP handshake (initializ"},{"name":"verify_crawler_log","description":"Given raw web-server access-log lines, decide for each line that names a crawler (GPTBot, ClaudeBot, Googlebot, PerplexityBot...) whether the source IP falls in"},{"name":"corpus_state","description":"Coverage of CrawlCheck's public dataset: how many distinct domains have been measured and how they split by platform, rendering, size, language and kind, with t"},{"name":"resolve_robots","description":"Resolve every named answer engine, search index and training crawler against a domain's robots.txt the way a crawler does: most-specific group only, longest mat"},{"name":"draft_llms","description":"Draft an llms.txt from the domain's own homepage and up to 25 declared pages, using their titles and descriptions. A draft for the owner to cut down, not a publ"},{"name":"fix_robots","description":"The domain's served robots.txt, corrected: * group rules copied into named groups that lacked them (shadowing), a Sitemap line added when missing, a minimal rep"},{"name":"fix_entitymap","description":"A starter entitymap.json built from the domain's latest scan record: name, phone, coordinates and declared service areas as entities with SERVES relations. Fiel"},{"name":"video_check","description":"One YouTube video against the video anchor model: metadata, chapters, captions and storyboard where observed, twelve checks each naming what it reads."},{"name":"video_channel","description":"Every upload on a YouTube channel, read 50 at a time, sorted by views. The upload list is free; the per-check tally needs a Watch licence and is not offered her"},{"name":"video_site","description":"The site half of video: homepage plus up to 60 sitemap pages read for YouTube embeds, facades and page-builder widgets, VideoObject nodes and their required pro"},{"name":"registry_lookup","description":"Whether a domain is in CrawlCheck's registry and what it serves: llms.txt, agents.md, a media kit at /.well-known/media-kit.json, a reciprocity-tested entity gr"},{"name":"crawler_path","description":"Where each crawler's path into a domain dies, as an observed data flow: edge decision, robots.txt as a file, robots.txt rules, then the page, JSON-LD, sitemap, "},{"name":"public_counts","description":"The figures CrawlCheck quotes about itself, read from the source: sites_measured, domains_in_corpus, crawler_visits (a rolling window), sections, sections_score"},{"name":"telemetry","description":"Verified-crawler traffic observed at crawlcheck.io itself: which named agents arrived, how many claims were confirmed against operator ranges, how many were for"},{"name":"fix_mostly_code","description":"A fix plan for PAGE_IS_MOSTLY_CODE: the homepage's measured bytes by category, the largest blocks with what to do with each, ordered steps with the text ratio a"},{"name":"fix_stale_cache","description":"A fix plan for STALE_CACHE_SERVED: the homepage fetched now, its Age, the cache layers that name themselves in the headers in purge order (innermost first), the"},{"name":"fix_machine_chain","description":"A fix plan for MACHINE_CHAIN_HEAVY: the files a crawler reads before the page and the 404s absent agent files return, then measured reductions (llms.txt to an i"},{"name":"explain_finding","description":"Why CrawlCheck decided a finding: the rule and its revision, the exact fetches it compared (identity, status, bytes, sha256), when the condition held on the sit"},{"name":"machine_record","description":"The unified machine record for one observation: subject, grade, findings (the top one in full without a licence), capabilities with verification, and the eviden"}],"toolCount":25,"toolsHash":"2089204fb9e97097e296b51a01e90111d7c9b85bb2322f25f4bdfb64bf10ebbe","serverName":"crawlcheck","capabilities":["tools"],"serverVersion":"1.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-22T08:27:46.409Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":779,"error":null,"detail":{"tools":[{"name":"preflight","description":"Call BEFORE reading, citing, connecting to or transacting with a domain. Returns a signed decision: allow, warn, require_confirmation, block or unsupported, wit"},{"name":"best_source","description":"Call when choosing WHICH business or site to cite, recommend or call. Give domains (2-10 candidate sites you found) or trade and city for a measured market. Ret"},{"name":"resolve_domain","description":"Call before fetching from, citing, connecting to or transacting with a domain. Returns one signed answer: what the domain claims, what it actually serves each c"},{"name":"field_check","description":"Call before using a phone number, address, opening hours or service area you hold for a business. One signed verdict per business field. field=phone|address|hou"},{"name":"scan_domain","description":"Scan a public domain as several crawler identities and return the graded record: grade, AI-visibility score, per-section scores, findings with evidence, and whe"},{"name":"list_verified_capabilities","description":"What a domain declares agents can do (OpenAPI operations, MCP tools, A2A skills, API catalog entries), each classed by safety (read_only_public up to financial)"},{"name":"mcp_servers","description":"Which remote MCP servers the official MCP Registry lists on a domain, and what each endpoint actually answered when CrawlCheck sent the MCP handshake (initializ"},{"name":"verify_crawler_log","description":"Given raw web-server access-log lines, decide for each line that names a crawler (GPTBot, ClaudeBot, Googlebot, PerplexityBot...) whether the source IP falls in"},{"name":"corpus_state","description":"Coverage of CrawlCheck's public dataset: how many distinct domains have been measured and how they split by platform, rendering, size, language and kind, with t"},{"name":"resolve_robots","description":"Resolve every named answer engine, search index and training crawler against a domain's robots.txt the way a crawler does: most-specific group only, longest mat"},{"name":"draft_llms","description":"Draft an llms.txt from the domain's own homepage and up to 25 declared pages, using their titles and descriptions. A draft for the owner to cut down, not a publ"},{"name":"fix_robots","description":"The domain's served robots.txt, corrected: * group rules copied into named groups that lacked them (shadowing), a Sitemap line added when missing, a minimal rep"},{"name":"fix_entitymap","description":"A starter entitymap.json built from the domain's latest scan record: name, phone, coordinates and declared service areas as entities with SERVES relations. Fiel"},{"name":"video_check","description":"One YouTube video against the video anchor model: metadata, chapters, captions and storyboard where observed, twelve checks each naming what it reads."},{"name":"video_channel","description":"Every upload on a YouTube channel, read 50 at a time, sorted by views. The upload list is free; the per-check tally needs a Watch licence and is not offered her"},{"name":"video_site","description":"The site half of video: homepage plus up to 60 sitemap pages read for YouTube embeds, facades and page-builder widgets, VideoObject nodes and their required pro"},{"name":"registry_lookup","description":"Whether a domain is in CrawlCheck's registry and what it serves: llms.txt, agents.md, a media kit at /.well-known/media-kit.json, a reciprocity-tested entity gr"},{"name":"crawler_path","description":"Where each crawler's path into a domain dies, as an observed data flow: edge decision, robots.txt as a file, robots.txt rules, then the page, JSON-LD, sitemap, "},{"name":"public_counts","description":"The figures CrawlCheck quotes about itself, read from the source: sites_measured, domains_in_corpus, crawler_visits (a rolling window), sections, sections_score"},{"name":"telemetry","description":"Verified-crawler traffic observed at crawlcheck.io itself: which named agents arrived, how many claims were confirmed against operator ranges, how many were for"},{"name":"fix_mostly_code","description":"A fix plan for PAGE_IS_MOSTLY_CODE: the homepage's measured bytes by category, the largest blocks with what to do with each, ordered steps with the text ratio a"},{"name":"fix_stale_cache","description":"A fix plan for STALE_CACHE_SERVED: the homepage fetched now, its Age, the cache layers that name themselves in the headers in purge order (innermost first), the"},{"name":"fix_machine_chain","description":"A fix plan for MACHINE_CHAIN_HEAVY: the files a crawler reads before the page and the 404s absent agent files return, then measured reductions (llms.txt to an i"},{"name":"explain_finding","description":"Why CrawlCheck decided a finding: the rule and its revision, the exact fetches it compared (identity, status, bytes, sha256), when the condition held on the sit"},{"name":"machine_record","description":"The unified machine record for one observation: subject, grade, findings (the top one in full without a licence), capabilities with verification, and the eviden"}],"toolCount":25,"toolsHash":"2089204fb9e97097e296b51a01e90111d7c9b85bb2322f25f4bdfb64bf10ebbe","serverName":"crawlcheck","capabilities":["tools"],"serverVersion":"1.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-22T01:33:01.162Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":40,"error":null,"detail":{"tools":[{"name":"preflight","description":"Call BEFORE reading, citing, connecting to or transacting with a domain. Returns a signed decision: allow, warn, require_confirmation, block or unsupported, wit"},{"name":"best_source","description":"Call when choosing WHICH business or site to cite, recommend or call. Give domains (2-10 candidate sites you found) or trade and city for a measured market. Ret"},{"name":"resolve_domain","description":"Call before fetching from, citing, connecting to or transacting with a domain. Returns one signed answer: what the domain claims, what it actually serves each c"},{"name":"field_check","description":"Call before using a phone number, address, opening hours or service area you hold for a business. One signed verdict per business field. field=phone|address|hou"},{"name":"scan_domain","description":"Scan a public domain as several crawler identities and return the graded record: grade, AI-visibility score, per-section scores, findings with evidence, and whe"},{"name":"list_verified_capabilities","description":"What a domain declares agents can do (OpenAPI operations, MCP tools, A2A skills, API catalog entries), each classed by safety (read_only_public up to financial)"},{"name":"mcp_servers","description":"Which remote MCP servers the official MCP Registry lists on a domain, and what each endpoint actually answered when CrawlCheck sent the MCP handshake (initializ"},{"name":"verify_crawler_log","description":"Given raw web-server access-log lines, decide for each line that names a crawler (GPTBot, ClaudeBot, Googlebot, PerplexityBot...) whether the source IP falls in"},{"name":"corpus_state","description":"Coverage of CrawlCheck's public dataset: how many distinct domains have been measured and how they split by platform, rendering, size, language and kind, with t"},{"name":"resolve_robots","description":"Resolve every named answer engine, search index and training crawler against a domain's robots.txt the way a crawler does: most-specific group only, longest mat"},{"name":"draft_llms","description":"Draft an llms.txt from the domain's own homepage and up to 25 declared pages, using their titles and descriptions. A draft for the owner to cut down, not a publ"},{"name":"fix_robots","description":"The domain's served robots.txt, corrected: * group rules copied into named groups that lacked them (shadowing), a Sitemap line added when missing, a minimal rep"},{"name":"fix_entitymap","description":"A starter entitymap.json built from the domain's latest scan record: name, phone, coordinates and declared service areas as entities with SERVES relations. Fiel"},{"name":"video_check","description":"One YouTube video against the video anchor model: metadata, chapters, captions and storyboard where observed, twelve checks each naming what it reads."},{"name":"video_channel","description":"Every upload on a YouTube channel, read 50 at a time, sorted by views. The upload list is free; the per-check tally needs a Watch licence and is not offered her"},{"name":"video_site","description":"The site half of video: homepage plus up to 60 sitemap pages read for YouTube embeds, facades and page-builder widgets, VideoObject nodes and their required pro"},{"name":"registry_lookup","description":"Whether a domain is in CrawlCheck's registry and what it serves: llms.txt, agents.md, a media kit at /.well-known/media-kit.json, a reciprocity-tested entity gr"},{"name":"crawler_path","description":"Where each crawler's path into a domain dies, as an observed data flow: edge decision, robots.txt as a file, robots.txt rules, then the page, JSON-LD, sitemap, "},{"name":"public_counts","description":"The figures CrawlCheck quotes about itself, read from the source: sites_measured, domains_in_corpus, crawler_visits (a rolling window), sections, sections_score"},{"name":"telemetry","description":"Verified-crawler traffic observed at crawlcheck.io itself: which named agents arrived, how many claims were confirmed against operator ranges, how many were for"},{"name":"fix_mostly_code","description":"A fix plan for PAGE_IS_MOSTLY_CODE: the homepage's measured bytes by category, the largest blocks with what to do with each, ordered steps with the text ratio a"},{"name":"fix_stale_cache","description":"A fix plan for STALE_CACHE_SERVED: the homepage fetched now, its Age, the cache layers that name themselves in the headers in purge order (innermost first), the"},{"name":"fix_machine_chain","description":"A fix plan for MACHINE_CHAIN_HEAVY: the files a crawler reads before the page and the 404s absent agent files return, then measured reductions (llms.txt to an i"},{"name":"explain_finding","description":"Why CrawlCheck decided a finding: the rule and its revision, the exact fetches it compared (identity, status, bytes, sha256), when the condition held on the sit"},{"name":"machine_record","description":"The unified machine record for one observation: subject, grade, findings (the top one in full without a licence), capabilities with verification, and the eviden"}],"toolCount":25,"toolsHash":"2089204fb9e97097e296b51a01e90111d7c9b85bb2322f25f4bdfb64bf10ebbe","serverName":"crawlcheck","capabilities":["tools"],"serverVersion":"1.1.0","protocolVersion":"2025-06-18"}}],"tools":[{"name":"preflight","description":"Call BEFORE reading, citing, connecting to or transacting with a domain. Returns a signed decision: allow, warn, require_confirmation, block or unsupported, wit"},{"name":"best_source","description":"Call when choosing WHICH business or site to cite, recommend or call. Give domains (2-10 candidate sites you found) or trade and city for a measured market. Ret"},{"name":"resolve_domain","description":"Call before fetching from, citing, connecting to or transacting with a domain. Returns one signed answer: what the domain claims, what it actually serves each c"},{"name":"field_check","description":"Call before using a phone number, address, opening hours or service area you hold for a business. One signed verdict per business field. field=phone|address|hou"},{"name":"scan_domain","description":"Scan a public domain as several crawler identities and return the graded record: grade, AI-visibility score, per-section scores, findings with evidence, and whe"},{"name":"list_verified_capabilities","description":"What a domain declares agents can do (OpenAPI operations, MCP tools, A2A skills, API catalog entries), each classed by safety (read_only_public up to financial)"},{"name":"mcp_servers","description":"Which remote MCP servers the official MCP Registry lists on a domain, and what each endpoint actually answered when CrawlCheck sent the MCP handshake (initializ"},{"name":"verify_crawler_log","description":"Given raw web-server access-log lines, decide for each line that names a crawler (GPTBot, ClaudeBot, Googlebot, PerplexityBot...) whether the source IP falls in"},{"name":"corpus_state","description":"Coverage of CrawlCheck's public dataset: how many distinct domains have been measured and how they split by platform, rendering, size, language and kind, with t"},{"name":"resolve_robots","description":"Resolve every named answer engine, search index and training crawler against a domain's robots.txt the way a crawler does: most-specific group only, longest mat"},{"name":"draft_llms","description":"Draft an llms.txt from the domain's own homepage and up to 25 declared pages, using their titles and descriptions. A draft for the owner to cut down, not a publ"},{"name":"fix_robots","description":"The domain's served robots.txt, corrected: * group rules copied into named groups that lacked them (shadowing), a Sitemap line added when missing, a minimal rep"},{"name":"fix_entitymap","description":"A starter entitymap.json built from the domain's latest scan record: name, phone, coordinates and declared service areas as entities with SERVES relations. Fiel"},{"name":"video_check","description":"One YouTube video against the video anchor model: metadata, chapters, captions and storyboard where observed, twelve checks each naming what it reads."},{"name":"video_channel","description":"Every upload on a YouTube channel, read 50 at a time, sorted by views. The upload list is free; the per-check tally needs a Watch licence and is not offered her"},{"name":"video_site","description":"The site half of video: homepage plus up to 60 sitemap pages read for YouTube embeds, facades and page-builder widgets, VideoObject nodes and their required pro"},{"name":"registry_lookup","description":"Whether a domain is in CrawlCheck's registry and what it serves: llms.txt, agents.md, a media kit at /.well-known/media-kit.json, a reciprocity-tested entity gr"},{"name":"crawler_path","description":"Where each crawler's path into a domain dies, as an observed data flow: edge decision, robots.txt as a file, robots.txt rules, then the page, JSON-LD, sitemap, "},{"name":"public_counts","description":"The figures CrawlCheck quotes about itself, read from the source: sites_measured, domains_in_corpus, crawler_visits (a rolling window), sections, sections_score"},{"name":"telemetry","description":"Verified-crawler traffic observed at crawlcheck.io itself: which named agents arrived, how many claims were confirmed against operator ranges, how many were for"},{"name":"fix_mostly_code","description":"A fix plan for PAGE_IS_MOSTLY_CODE: the homepage's measured bytes by category, the largest blocks with what to do with each, ordered steps with the text ratio a"},{"name":"fix_stale_cache","description":"A fix plan for STALE_CACHE_SERVED: the homepage fetched now, its Age, the cache layers that name themselves in the headers in purge order (innermost first), the"},{"name":"fix_machine_chain","description":"A fix plan for MACHINE_CHAIN_HEAVY: the files a crawler reads before the page and the 404s absent agent files return, then measured reductions (llms.txt to an i"},{"name":"explain_finding","description":"Why CrawlCheck decided a finding: the rule and its revision, the exact fetches it compared (identity, status, bytes, sha256), when the condition held on the sit"},{"name":"machine_record","description":"The unified machine record for one observation: subject, grade, findings (the top one in full without a licence), capabilities with verification, and the eviden"}],"package":null,"toolSurface":{"id":"ts_pe7wc2z4pdjs","endpointId":"ep_jey5crhzwefe","hash":"2089204fb9e97097e296b51a01e90111d7c9b85bb2322f25f4bdfb64bf10ebbe","toolCount":25,"serverName":"crawlcheck","serverVersion":"1.1.0","protocolVersion":"2025-06-18","firstSeenAt":"2026-10-19T02:24:44.400Z","lastSeenAt":"2026-10-24T14:24:03.369Z","observations":20,"toolNames":["preflight","best_source","resolve_domain","field_check","scan_domain","list_verified_capabilities","mcp_servers","verify_crawler_log","corpus_state","resolve_robots","draft_llms","fix_robots","fix_entitymap","video_check","video_channel","video_site","registry_lookup","crawler_path","public_counts","telemetry","fix_mostly_code","fix_stale_cache","fix_machine_chain","explain_finding","machine_record"],"distinctSurfaces":4},"endpointFacts":[{"id":"ep_jey5crhzwefe","url":"https://crawlcheck.io/mcp","type":"mcp_streamable_http","factsCheckedAt":"2026-10-23T11:24:08.943Z","auth":{"observedAt":"2026-10-23T11:24:08.997Z","authRequired":false,"scheme":null,"resourceMetadata":null,"authorizationServer":null,"conformance":{"dpop":false,"rfc8414":false,"rfc9728":false,"pkceS256":false,"clientIdMetadataDocument":false,"dynamicClientRegistration":false}},"tls":{"observedAt":"2026-10-23T11:24:09.021Z","protocol":"TLSv1.3","chainValid":true,"chainError":null,"hostMatches":true,"subject":"crawlcheck.io","issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validFrom":"2026-10-10T21:27:51.000Z","validTo":"2027-01-08T22:27:48.000Z","daysToExpiry":76,"sanCount":3,"fingerprint256":"AF:91:CB:8F:D3:3E:81:D9:23:93:06:05:54:2C:34:6B:7E:B4:61:80:BF:EE:4B:D8:59:51:34:A0:23:F0:5C:10"}}]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"mcp_registry","key":"io.github.emmanuelorta/crawlcheck","url":"https://registry.modelcontextprotocol.io/v0/servers/io.github.emmanuelorta%2Fcrawlcheck","firstSeenAt":"2026-10-13T07:22:50.373Z","fetchedAt":"2026-10-23T03:19:17.627Z","normalizedAt":"2026-10-23T03:19:17.627Z"}]},"firstSeenAt":"2026-10-13T07:22:50.373Z","updatedAt":"2026-10-24T14:28:11.294Z"}