addrbookFor publishers
← The evidence ledger

Evidence row 275738

Observed , by probe.mcp/1.

Kind
mcp.tools
About
endpoint 2395fd2a-dfc0-47a2-955d-efef907f088c
Recorded
Previous row
None: the first of its kind about this subject
Body SHA-256
c98b0b961fcc12e4bdc1fadb15454054a8f79a0c6e39337afb2f834c6f4afd89
Leaf
0x7cec4e946b8fc96ea0700a9ed3fa5d8d995dbbe62bbe84668c46ceb127609c21

What was observed

{
  "count": 7,
  "tools": [
    {
      "description": "Price-check Quietforge's paid x402 HTTP routes before paying (free read-only list, not tools here): convert docx, xlsx, pptx, csv to pdf; PDF text; URL/HTML to PNG; sudoku books; manuscript typesetting; crosswords; family trees from GEDCOM; dataset quality audits; x402 index API. USD prices, pay-to address, how an x402 client pays.",
      "inputSchema": {
        "properties": {},
        "title": "quietforge_pricingArguments",
        "type": "object"
      },
      "name": "quietforge_pricing"
    },
    {
      "description": "Use this when a user wants a sudoku to play or print, or an app needs a verified puzzle at a named difficulty. Generates ONE sudoku puzzle with a unique solution, 180-degree symmetry, graded by the solving techniques it needs (easy | medium | hard | expert). Returns 81-char puzzle and solution strings (row by row, 0 = empty), given count and technique list. Deterministic when a seed is supplied. 20 per minute shared by all clients.",
      "inputSchema": {
        "properties": {
          "level": {
            "default": "medium",
            "description": "Difficulty by solving technique: easy, medium, hard or expert.",
            "title": "Level",
            "type": "string"
          },
          "seed": {
            "description": "Integer 1-2147483647 for a reproducible puzzle; omit for a random one.",
            "title": "Seed",
            "type": "integer"
          }
        },
        "title": "sudoku_puzzleArguments",
        "type": "object"
      },
      "name": "sudoku_puzzle"
    },
    {
      "description": "Use this to answer \"is anyone actually paying for x402 APIs today\" with settled on-chain numbers instead of listings. Market-level demand signal for the x402 ecosystem, verified against on-chain USDC settlement on Base rather than self-reported call counts: how many seller addresses were paid in the last 24h, total USD settled, and the distribution of sellers by payment count. Free and aggregate-only; the per-seller breakdown (distinct payers per address; payer counts include sampler/grader wallets that pay many sellers once, so read them as an upper bound on customers) is the paid GET /v1/x402/demand route. Refuses to answer rather than serve a stale snapshot.",
      "inputSchema": {
        "properties": {},
        "title": "x402_demandArguments",
        "type": "object"
      },
      "name": "x402_demand"
    },
    {
      "description": "Use this to see how much this index covers (it is a subset of the x402 market, not all of it) and to sanity-check x402_search coverage before relying on it. Summary of the index: totals, how many endpoints answered on the last probe, counts per network and per source, and when the crawl ran.",
      "inputSchema": {
        "properties": {},
        "title": "x402_index_statsArguments",
        "type": "object"
      },
      "name": "x402_index_stats"
    },
    {
      "description": "Use this to check a URL you are about to pay (or one you operate) for a well-formed x402 challenge before sending funds; a challenge is no guarantee the service delivers. Makes ONE live unpaid request to a public http(s) URL and reports whether it is an x402 endpoint: status code, latency, alive flag, whether a PAYMENT-REQUIRED challenge came back and the parsed USD price. GET only, except that a URL already in the index is probed with its listed method. Public hosts only (redirects re-checked), delisted hosts never contacted, results cached 60 s, 3 probes per host per 5 min and 30 per minute overall.",
      "inputSchema": {
        "properties": {
          "method": {
            "default": "GET",
            "description": "HTTP method. GET unless the URL is already in the index with a different listed method (then that method is allowed).",
            "title": "Method",
            "type": "string"
          },
          "url": {
            "description": "Absolute http(s) URL to probe, max 2048 chars; public hosts only.",
            "title": "Url",
            "type": "string"
          }
        },
        "required": [
          "url"
        ],
        "title": "x402_probeArguments",
        "type": "object"
      },
      "name": "x402_probe"
    },
    {
      "description": "Use this to find a pay-per-call x402 API for a given task, network or price cap before calling it (mostly USDC on Base; check each row's network and asset, some are testnet or other assets). Searches a health-probed directory of live x402 pay-per-call HTTP endpoints on Base, Solana and other networks (x402_index_stats gives the current count). Returns id, resource URL, method, network, USD price, description, 30-day call/payer counts and our own uptime/probe data. Data is re-crawled a few times a day, not real-time. Quietforge operates this directory and also operates some listed endpoints (source=quietforge) under the same per-host cap as every operator; ordering is by 30-day usage, then liveness, then freshness, never by operator.",
      "inputSchema": {
        "properties": {
          "alive": {
            "description": "true = answered its paid route on our last probe; false = did not; omit for both.",
            "title": "Alive",
            "type": "boolean"
          },
          "limit": {
            "default": 20,
            "description": "Page size, 1-100; out-of-range values are clamped.",
            "title": "Limit",
            "type": "integer"
          },
          "max_price_usd": {
            "description": "Only endpoints priced at or below this USD amount per call; omit for any price.",
            "title": "Max Price Usd",
            "type": "number"
          },
          "network": {
            "description": "CAIP-2 network id to filter on, e.g. eip155:8453 (Base mainnet); omit for all networks.",
            "title": "Network",
            "type": "string"
          },
          "offset": {
            "default": 0,
            "description": "Rows to skip for paging; negative is treated as 0.",
            "title": "Offset",
            "type": "integer"
          },
          "q": {
            "description": "Case-insensitive substring matched against the resource URL, description and service name; omit for no text filter.",
            "title": "Q",
            "type": "string"
          },
          "source": {
            "description": "Listing source: cdp (Coinbase CDP bazaar), payai (PayAI discovery) or quietforge (our own endpoints); omit for all sources.",
            "title": "Source",
            "type": "string"
          }
        },
        "title": "x402_searchArguments",
        "type": "object"
      },
      "name": "x402_search"
    },
    {
      "description": "Use this to check whether one endpoint from x402_search is reliable enough to pay: its record plus its last 20 health probes (status code, latency, alive) and uptime across them.",
      "inputSchema": {
        "properties": {
          "id": {
            "description": "Service id exactly as returned by x402_search.",
            "title": "Id",
            "type": "string"
          }
        },
        "required": [
          "id"
        ],
        "title": "x402_serviceArguments",
        "type": "object"
      },
      "name": "x402_service"
    }
  ]
}

What the leaf hashes

{"body":"c98b0b961fcc12e4bdc1fadb15454054a8f79a0c6e39337afb2f834c6f4afd89","id":275738,"kind":"mcp.tools","method":"probe.mcp/1","observed_us":1793040791651590,"prev":null,"subject":"2395fd2a-dfc0-47a2-955d-efef907f088c","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. 0x7cec6e22f0bb3fd2718fafd317f43ef3e6e796e292a59dda5e979769d5a1bc6d
  2. 0xd34b1fa36176c7f78e00301440959d6c453b4ddd855e145ee9a54057c19408fe
  3. 0x5143d6b5f4be9e5f36a54d0bef43c5b86e7e9bd1b8983a12fd40186e5ff279ed
  4. 0x9d289d4634d4bf829ea9ba740b533d55c7eaf0e4b7d0eb67a6c76fb53837b11c
  5. 0x39bd58a9b2f0cff6b0bd83d5c60fa11edaf44e89f6f9092c28ca31807d15b561
  6. 0xef67ff104ca7e7dab32309dc6709ed6631c86d61fc3672b7ce23e45c641fb8ab
  7. 0xb1c25d2ad813d33d7053705740e7b913959fdd92d8a0840a58433ef7734a6834
  8. 0x354bc6b8aeb51bd026e07bfcdee12cbee908417336ed6fb6ca314fa05eafbfc6
  9. 0x08b3760a00c7c63570a34f14cb3fff681c9dc8817ae7392edd6927f2dce3759c
  10. 0xf0ed0e925a8a7da0329fe426ca59f504fc92f30b2f6f61a5828a859ff9cdb816
  11. 0x05b818019343d04f2973b36329a447f88301721891653961b94822610edda553
  12. 0x779c77295186b32da6387dfb36d3a76522e7d713472a7cebed7c93529ccc4be6
  13. 0x0bffb634300aa5609bddaa79e8d31d7cde36c0a5a4465472f809b9f5287e40d2
  14. 0x7721d38652b6444b18e1193824e50490ade04851ce6221771f6e374c4527d80f
  15. 0x15039087bf60ae9b06b756ec3cbc299760e59923a438bbd91e34d105186db0ed
  16. 0x2b6e23e3624a1b66e1d2298cfbce99a93ce6b13d24a58112a71802d79c5f7a76
  17. 0xd21942ae3214eff88e08ab04884fd4b11958b51af9a0741b7668e2d07a2c56c9
  18. 0x9a9024edb5069d88a324facb310a5ce8e495214bbaa968f077bede437390194f
  19. 0x9b9ce5b74b9bab5121612ef6b64920a8d453cbf311096a423eef9702747e868a
Day root
0xf43e8dcc3d451a4788b26be904c55e8c4c0fa75c9666796c51db38d37e2c0df8
Chained
0x702d5ac508f08b0d1accf36af25822d8e5660367494edd17a642fb61e158a57a
Published
On Arc Testnet, block 69251483: 0x495162f8936e19f0039918feebe6c307f327cd6bf8c37219620b1970041fa9ae

How to check it · This row as JSON