addrbookFor publishers
← The evidence ledger

Evidence row 2200227

Observed , by sync.x402_bazaar/1.

Kind
listing
About
source_record x402_bazaar:https://readfetch.com/v1/fetch
Recorded
Previous row
#1508283
Body SHA-256
f590784bcd11d9c816553d54bc63e22b02930c279e2f6f4d89545e882ac6085b
Leaf
0x777c66338d34fc83bba19eb690561bb5abf1583bc36e1b01e63310f4c754fd75

What was observed

{
  "endpoints": [
    [
      "x402",
      "https://readfetch.com/v1/fetch"
    ]
  ],
  "name": "readfetch.com",
  "owner_address": "0x26c2308adc8fe5ffe6d4183588dd2dd22ed86071",
  "raw": {
    "accepts": [
      {
        "amount": "3000",
        "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
        "description": "Send an HTTP request (GET, POST, PUT, PATCH, DELETE, HEAD) through egress and return status_code, response headers, and body as text or base64 (`binary: true`). `max_bytes` caps the stored body; `follow_redirects` (default true) and `timeout_s` (95 s ceiling) apply to the full redirect chain. Use `json_body` for JSON POST/PUT payloads; use `body` for raw bytes or strings. Prefer readfetch_text for readable HTML articles; readfetch_pdf to extract PDF text (not raw bytes alone)",
        "extra": {
          "name": "USD Coin",
          "paymentFlow": "authorization",
          "version": "2"
        },
        "maxAmountRequired": "3000",
        "maxTimeoutSeconds": 60,
        "mimeType": "application/json",
        "network": "eip155:8453",
        "payTo": "0x26C2308aDC8fe5FFE6d4183588DD2DD22ed86071",
        "resource": "https://readfetch.com/v1/fetch",
        "scheme": "exact"
      }
    ],
    "description": "Send an HTTP request (GET, POST, PUT, PATCH, DELETE, HEAD) through egress and return status_code, response headers, and body as text or base64 (`binary: true`). `max_bytes` caps the stored body; `follow_redirects` (default true) and `timeout_s` (95 s ceiling) apply to the full redirect chain. Use `json_body` for JSON POST/PUT payloads; use `body` for raw bytes or strings. Prefer readfetch_text for readable HTML articles; readfetch_pdf to extract PDF text (not raw bytes alone)",
    "extensions": {
      "bazaar": {
        "info": {
          "input": {
            "body": {
              "binary": false,
              "follow_redirects": true,
              "max_bytes": 10000000,
              "method": "GET",
              "timeout_s": 95,
              "url": "https://example.com"
            },
            "bodyType": "json",
            "description": "Raw HTTP through the same egress. JSON APIs, GraphQL, PDFs, byte ranges - anything that is not a page.",
            "method": "POST",
            "type": "http"
          },
          "output": {
            "description": "Send an HTTP request (GET, POST, PUT, PATCH, DELETE, HEAD) through egress and return status_code, response headers, and body as text or base64 (`binary: true`). `max_bytes` caps the stored body; `follow_redirects` (default true) and `timeout_s` (95 s ceiling) apply to the full redirect chain. Use `json_body` for JSON POST/PUT payloads; use `body` for raw bytes or strings. Prefer readfetch_text for readable HTML articles; readfetch_pdf to extract PDF text (not raw bytes alone). POST/PUT/DELETE can change remote state despite readOnlyHint.",
            "example": {
              "content_type": "application/json",
              "size": 512,
              "status": "success",
              "status_code": 200,
              "text": "{\"items\": []}",
              "url": "https://api.example.com/items"
            },
            "format": "application/json",
            "type": "json"
          }
        },
        "schema": {
          "$defs": {},
          "$schema": "https://json-schema.org/draft/2020-12/schema",
          "properties": {
            "input": {
              "properties": {
                "body": {
                  "properties": {
                    "binary": {
                      "default": false,
                      "description": "When true, return body as base64 instead of UTF-8 text.",
                      "title": "Binary",
                      "type": "boolean"
                    },
                    "body": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "default": null,
                      "description": "Raw request body string for POST/PUT/PATCH (mutually exclusive with json_body).",
                      "title": "Body"
                    },
                    "follow_redirects": {
                      "default": true,
                      "description": "Follow 3xx redirects (default true).",
                      "title": "Follow Redirects",
                      "type": "boolean"
                    },
                    "headers": {
                      "anyOf": [
                        {
                          "additionalProperties": {
                            "type": "string"
                          },
                          "type": "object"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "default": null,
                      "description": "Optional request headers, e.g. Authorization or Accept.",
                      "title": "Headers"
                    },
                    "json_body": {
                      "anyOf": [
                        {
                          "additionalProperties": true,
                          "type": "object"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "default": null,
                      "description": "JSON object serialized as the request body (Content-Type application/json).",
                      "title": "Json Body"
                    },
                    "max_bytes": {
                      "default": 10000000,
                      "description": "Stop reading and truncate once the response body exceeds this size (bytes).",
                      "maximum": 50000000,
                      "minimum": 1024,
                      "title": "Max Bytes",
                      "type": "integer"
                    },
                    "method": {
                      "default": "GET",
                      "description": "HTTP method (GET default).",
                      "enum": [
                        "GET",
                        "POST",
                        "PUT",
                        "PATCH",
                        "DELETE",
                        "HEAD"
                      ],
                      "title": "Method",
                      "type": "string"
                    },
                    "timeout_s": {
                      "default": 95,
                      "description": "Total budget for the whole call in seconds, redirect hops included.",
                      "maximum": 95,
                      "minimum": 1,
                      "title": "Timeout S",
                      "type": "number"
                    },
                    "url": {
                      "description": "Request URL (http or https).",
                      "format": "uri",
                      "maxLength": 2083,
                      "minLength": 1,
                      "title": "Url",
                      "type": "string"
                    }
                  },
                  "required": [
                    "url"
                  ],
                  "title": "FetchRequest",
                  "type": "object"
                },
                "bodyType": {
                  "const": "json"
                },
                "method": {
                  "enum": [
                    "POST"
                  ]
                },
                "type": {
                  "const": "http"
                }
              },
              "required": [
                "type",
                "method",
                "body"
              ],
              "type": "object"
            },
            "output": {
              "properties": {
                "content_type": {
                  "type": "string"
                },
                "size": {
                  "type": "integer"
                },
                "status": {
                  "type": "string"
                },
                "status_code": {
                  "type": "integer"
                },
                "text": {
                  "type": "string"
                },
                "url": {
                  "format": "uri",
                  "type": "string"
                }
              },
              "type": "object"
            }
          }
        }
      },
      "readfetch": {
        "llms_txt": "https://readfetch.com/llms.txt",
        "mcp": "https://readfetch.com/mcp",
        "mcp_manifest": "https://readfetch.com/.well-known/mcp.json",
        "openapi": "https://readfetch.com/openapi.json",
        "payment_status": "live",
        "probe": {
          "free": true,
          "method": "POST",
          "note": "The only free POST — no wallet, no 402, no x402. Metadata plus optional ~400-character preview for the same URL before paying.",
          "path": "/v1/probe",
          "price_usd": 0
        },
        "related_endpoints": [
          {
            "path": "/v1/probe"
          },
          {
            "path": "/v1/text"
          }
        ],
        "service_manifest": "https://readfetch.com/.well-known/service.json",
        "skill": "https://readfetch.com/SKILL.md",
        "support": {
          "claims": {
            "method": "POST",
            "path": "/v1/claims",
            "url": "https://readfetch.com/v1/claims",
            "when": "paid delivery dispute; needs RECEIPT + EIP-191 signature"
          },
          "feedback": {
            "body": {
              "category": "integration|docs|site|other",
              "message": "≤500 chars",
              "request_id": "<from X-Request-Id>"
            },
            "free": true,
            "mcp_tool": "readfetch_feedback",
            "method": "POST",
            "path": "/v1/feedback",
            "url": "https://readfetch.com/v1/feedback"
          },
          "request_id_header": "X-Request-Id"
        },
        "x402_resources": "https://readfetch.com/.well-known/x402-resources.json"
      }
    },
    "iconUrl": "https://res.cloudinary.com/bdb-prod/image/upload/c_fill,ar_1:1,w_256,h_256,f_auto,q_auto/v1793278990/bazaar-icons/a51ede90f06a90b8.png",
    "lastUpdated": "2026-11-02T12:24:39.074Z",
    "quality": {
      "l30DaysTotalCalls": 17,
      "l30DaysUniquePayers": 1,
      "lastCalledAt": "2026-11-02T12:24:38.868Z"
    },
    "resource": "https://readfetch.com/v1/fetch",
    "serviceName": "readfetch.com",
    "tags": [
      "api calls",
      "graphql",
      "http client",
      "infra",
      "proxy"
    ],
    "type": "http",
    "x402Version": 2
  },
  "source": "x402_bazaar",
  "summary": "Send an HTTP request (GET, POST, PUT, PATCH, DELETE, HEAD) through egress and return status_code, response headers, and body as text or base64 (`binary: true`). `max_bytes` caps the stored body; `follow_redirects` (default true) and `timeout_s` (95 s ceiling) apply to the full redirect chain. Use `json_body` for JSON POST/PUT payloads; use `body` for raw bytes or strings. Prefer readfetch_text for readable HTML articles; readfetch_pdf to extract PDF text (not raw bytes alone)"
}

What the leaf hashes

{"body":"f590784bcd11d9c816553d54bc63e22b02930c279e2f6f4d89545e882ac6085b","id":2200227,"kind":"listing","method":"sync.x402_bazaar/1","observed_us":1793646796808647,"prev":1508283,"subject":"x402_bazaar:https://readfetch.com/v1/fetch","subject_kind":"source_record"}

Proof

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

  1. 0x777bb7ace5fc4b7b526da9c52b0030d0cb7d23df7fdae2db29bac16e0f31da2c
  2. 0x7fd48ce1290a5a52b8368faced5a437ac532b62d41c5c37b0ca21d5636bccf4f
  3. 0x156ebdd76b079d95bc5b5f1bacb6f9bb65d5bbf60957a951159329a3674cb628
  4. 0x292c9d109804717fd722ffedcab8d3aad5fa663b85686a79b47b48298c3610bc
  5. 0x0573c568db00571b0a6610c5c82a3694040e180eff500ca521cad672b36911e0
  6. 0xdcad9d9727d95a6b97b41d725669ae4bde4153edf18e5c2bac635e28a189588e
  7. 0x989603fef14c3a0b051de029850b1d6f32cc3c8624ba09e5f60cc0d70583efe1
  8. 0x242a44d2840599cb28aa6dc1f09bd0df04afa9d3e457c16602ce0a03d72e7505
  9. 0xdab6085734af3e607fced5b1b02e4cb2cb62d8285d8d82c71edb7a1d120f2fae
  10. 0xba12e3b4d0e96f613b2eab77a258673d8ca03d4ac20278ed6ee40fb1d5e8842c
  11. 0xdeeb5f92493e59d2154902d4ee7dfea8f75fec3f49cfeedf2f732858749c635b
  12. 0xbe5fee1429543a8ea2aacf3591e5b69c6a6b1568088eb7a4e6b02ded16c5d3e5
  13. 0x98c0b976487311f03693fca7825f5f6e75a71ea33ac90caf33040d5eaa6d0b54
  14. 0xe387a7d610f91d4dc112f2dbdf7ae32c4555f5da4c25c1a9a1310d0b74e80bbf
  15. 0x60dd7fd8117cbf3b80707f722623736c8c2b5b56277e8e78c9f81ef2dab8deab
  16. 0x3b89dd05634a82075204d3c671f613081ddfd9df739c64c0a8f39081bdfa32c7
  17. 0x1805ef693fbdb2c23fcb61616f830408ca89bec1dc5b68ee47a770ffc0b9760a
  18. 0x4d205063c881c48edbbb37762a8d3bbb7444d4c42daa882f663a231893d25c35
  19. 0x365b161a4b68d750dcc4b3ecce1154a2163c87b08762079428e68f0ebb6a754e
Day root
0x78fecaabbe319e56f5c4b80fc02e2052e198ad24781da8832a475ff65f2002d1
Chained
0xdc35957db5d1371ca382b9152878ffece28ec7c5cb4f98fd71ddb367f8b999b2
Published
On Arc Testnet, block 70432815: 0x56b814612eb2e3e544153df3e91e1f7199106d1e430c7d8c6b653feeb9ebe9af

How to check it · This row as JSON