addrbookFor publishers
← The evidence ledger

Evidence row 302549

Observed , by probe.mcp/1.

Kind
mcp.tools
About
endpoint 7697699a-9946-4a3e-82fe-d4b534ee599a
Recorded
Previous row
None: the first of its kind about this subject
Body SHA-256
8c28514f58753d31052001abcc97b690cb4378688151a6924189b7cb5e6a54ff
Leaf
0x44087fa6f7e239be98fd520f65cb5a01203699c0c88f2687de9f2c7b50438a3f

What was observed

{
  "count": 4,
  "tools": [
    {
      "description": "Fetch a website the way ChatGPT, Claude, Perplexity, Google and Copilot fetch it, and report what stops them. Checks robots.txt per crawler with the deciding line number, makes real requests as each crawler to catch firewall and CDN rules that robots.txt cannot express, and measures whether the page carries readable text without JavaScript. Use this before advising anyone on why their site does not appear in AI answers: the usual cause is one of these three and none of them are visible from the outside.",
      "inputSchema": {
        "properties": {
          "url": {
            "description": "Domain or URL, for example example.com",
            "type": "string"
          }
        },
        "required": [
          "url"
        ],
        "type": "object"
      },
      "name": "check_site"
    },
    {
      "description": "The robots.txt tokens used by the major assistants, separated by purpose: the ones that build the index answers come from, the ones that fetch a page live when a person asks, and the ones that only collect training data. Blocking the last group costs no visibility; blocking the first two removes a site from the answers. Use this before writing or editing a robots.txt.",
      "inputSchema": {
        "properties": {},
        "type": "object"
      },
      "name": "list_ai_crawlers"
    },
    {
      "description": "Given the IP address and User-Agent from a log line, say whether that visit really came from the crawler it claims to be. Checks the address against the vendor's own published ranges where they exist, and falls back to forward-confirmed reverse DNS. On one ordinary server's logs, 14% of requests claiming to be Googlebot were not Google. Use this before anyone writes a firewall rule based on a user agent string, because that string is a claim and not proof.",
      "inputSchema": {
        "properties": {
          "ip": {
            "description": "Source address from the log line.",
            "type": "string"
          },
          "user_agent": {
            "description": "User-Agent from the same line.",
            "type": "string"
          }
        },
        "required": [
          "ip",
          "user_agent"
        ],
        "type": "object"
      },
      "name": "verify_crawler_visit"
    },
    {
      "description": "Verify a Web Bot Auth signature (RFC 9421, Ed25519) on a captured request. Unlike an address check, this proves who sent that exact request: it fetches the signer's published key directory, rebuilds the signature base from the covered components, and checks the signature. Use it when a request carries Signature-Input and Signature headers. Returns 'unsigned' when they are absent, and 'cannot_verify' rather than 'invalid' whenever the limitation is on our side.",
      "inputSchema": {
        "properties": {
          "headers": {
            "description": "Request headers, including Signature-Input, Signature and Signature-Agent.",
            "type": "object"
          },
          "method": {
            "default": "GET",
            "description": "HTTP method of the captured request, uppercase. It is part of the signature base whenever the signature covers @method, so a wrong value fails verification. Defaults to GET.",
            "type": "string"
          },
          "url": {
            "description": "Full URL as requested; the signature covers it.",
            "type": "string"
          }
        },
        "required": [
          "url",
          "headers"
        ],
        "type": "object"
      },
      "name": "verify_signed_request"
    }
  ]
}

What the leaf hashes

{"body":"8c28514f58753d31052001abcc97b690cb4378688151a6924189b7cb5e6a54ff","id":302549,"kind":"mcp.tools","method":"probe.mcp/1","observed_us":1793054756784442,"prev":null,"subject":"7697699a-9946-4a3e-82fe-d4b534ee599a","subject_kind":"endpoint"}

Proof

Fold these into the leaf in order, hashing each sorted pair with keccak256, to reach the root of (296695 rows).

  1. 0x4407f7c5f92c1513c06d33d59bc8bcfc381812a270f4ed310d04a5508ca88ae1
  2. 0xf8c7420bc23ac820132a1fac18d76c7fc67f3a074b99d18796f09f108388ccc3
  3. 0xb326ddfed42650136431f32c7c30860205dd40cf3d2e6caba6769980c6676212
  4. 0xa17cd6d427100040c8ce2380857602807b9a4f13442746c2ddb61284682170ba
  5. 0x2a2cf289c7b9b8aff213427affa6243f2e035a8dc00b8904cbbebda6c66fc98a
  6. 0x50c922299c8f3842e946a0f183ef252e0043175434b787e9991a9abb32febcd2
  7. 0x8615f8ef519f5d173b3e62d616346cba8177c17e4a8162417d507fd42de4f23a
  8. 0x65683194bbaa775fec19af098e2949dc61ec27f657c1a6fbff21418049464838
  9. 0x7548a06d81eec6f7a871b0f5e95a2a8ef0b7cb2bad9381bfc2356cf67b2e5859
  10. 0x1dc09c8e92168e3a1cdf1a0e953982ca9207934a0dfce256095416cf4102fbce
  11. 0x60b91f773fa3c91ef752edc3e72b14aec43590de73fb46a458b7100f8e74b4a7
  12. 0x2b1b47804e83988d7fd5ed8179b2334f3f43b318109b54142f6c6bd749076f9e
  13. 0x54b29089c0a3cbbd6ddbe58944696110984dd5f418275cb1b77f957c56da8eab
  14. 0x8b27a4c21bf4ba962fd008c8f4300bc6953764a5032b9ab0cfe696b318c45326
  15. 0x4b52a97f7a80ff7778a702b85267b8d2e5c93ce160942656435c29ae7be68bf4
  16. 0x2e6a32eb32761c210560e852405e2f865f958ddbe01027894f8b9c1b3433b9f0
  17. 0x9a83be955a206deb65b995adfd92c58fa31c95fbbf926bd199d300e70b08b26d
  18. 0x20704208aa6923d6b2450ef74ede87a6e0265d46447926038fe9506e9e154b2d
  19. 0x9b9ce5b74b9bab5121612ef6b64920a8d453cbf311096a423eef9702747e868a
Day root
0xf43e8dcc3d451a4788b26be904c55e8c4c0fa75c9666796c51db38d37e2c0df8
Chained
0x702d5ac508f08b0d1accf36af25822d8e5660367494edd17a642fb61e158a57a
Published
On Arc Testnet, block 69251483: 0x495162f8936e19f0039918feebe6c307f327cd6bf8c37219620b1970041fa9ae

How to check it · This row as JSON