← 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).
- 0x777bb7ace5fc4b7b526da9c52b0030d0cb7d23df7fdae2db29bac16e0f31da2c
- 0x7fd48ce1290a5a52b8368faced5a437ac532b62d41c5c37b0ca21d5636bccf4f
- 0x156ebdd76b079d95bc5b5f1bacb6f9bb65d5bbf60957a951159329a3674cb628
- 0x292c9d109804717fd722ffedcab8d3aad5fa663b85686a79b47b48298c3610bc
- 0x0573c568db00571b0a6610c5c82a3694040e180eff500ca521cad672b36911e0
- 0xdcad9d9727d95a6b97b41d725669ae4bde4153edf18e5c2bac635e28a189588e
- 0x989603fef14c3a0b051de029850b1d6f32cc3c8624ba09e5f60cc0d70583efe1
- 0x242a44d2840599cb28aa6dc1f09bd0df04afa9d3e457c16602ce0a03d72e7505
- 0xdab6085734af3e607fced5b1b02e4cb2cb62d8285d8d82c71edb7a1d120f2fae
- 0xba12e3b4d0e96f613b2eab77a258673d8ca03d4ac20278ed6ee40fb1d5e8842c
- 0xdeeb5f92493e59d2154902d4ee7dfea8f75fec3f49cfeedf2f732858749c635b
- 0xbe5fee1429543a8ea2aacf3591e5b69c6a6b1568088eb7a4e6b02ded16c5d3e5
- 0x98c0b976487311f03693fca7825f5f6e75a71ea33ac90caf33040d5eaa6d0b54
- 0xe387a7d610f91d4dc112f2dbdf7ae32c4555f5da4c25c1a9a1310d0b74e80bbf
- 0x60dd7fd8117cbf3b80707f722623736c8c2b5b56277e8e78c9f81ef2dab8deab
- 0x3b89dd05634a82075204d3c671f613081ddfd9df739c64c0a8f39081bdfa32c7
- 0x1805ef693fbdb2c23fcb61616f830408ca89bec1dc5b68ee47a770ffc0b9760a
- 0x4d205063c881c48edbbb37762a8d3bbb7444d4c42daa882f663a231893d25c35
- 0x365b161a4b68d750dcc4b3ecce1154a2163c87b08762079428e68f0ebb6a754e
- Day root
- 0x78fecaabbe319e56f5c4b80fc02e2052e198ad24781da8832a475ff65f2002d1
- Chained
- 0xdc35957db5d1371ca382b9152878ffece28ec7c5cb4f98fd71ddb367f8b999b2
- Published
- On Arc Testnet, block 70432815: 0x56b814612eb2e3e544153df3e91e1f7199106d1e430c7d8c6b653feeb9ebe9af