addrbookFor publishers
← The evidence ledger

Evidence row 1261547

Observed , by sync.x402_bazaar/1.

Kind
listing
About
source_record x402_bazaar:https://readfetch.com/v1/text
Recorded
Previous row
#1039794
Body SHA-256
9256e74f3181ad97121a8f857b5c574c90254ec7ac75f46043ea4c350a857ae3
Leaf
0x599978d05d6c7174091a40aa763193901b578da66cbea409904a7051b821d87a

What was observed

{
  "endpoints": [
    [
      "x402",
      "https://readfetch.com/v1/text"
    ]
  ],
  "name": "readfetch.com",
  "owner_address": "0x26c2308adc8fe5ffe6d4183588dd2dd22ed86071",
  "raw": {
    "accepts": [
      {
        "amount": "5000",
        "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
        "description": "Fetch a public URL and return its main readable content as Markdown or plain text, plus title, author, published date and site name. Strips navigation, ads and boilerplate. No JavaScript rendering, so it costs a fraction of a browser scrape; use /v1/scrape when the content only appears after JavaScript runs.",
        "extra": {
          "name": "USD Coin",
          "paymentFlow": "authorization",
          "version": "2"
        },
        "maxAmountRequired": "5000",
        "maxTimeoutSeconds": 60,
        "mimeType": "application/json",
        "network": "eip155:8453",
        "payTo": "0x26C2308aDC8fe5FFE6d4183588DD2DD22ed86071",
        "resource": "https://readfetch.com/v1/text",
        "scheme": "exact"
      }
    ],
    "description": "Fetch a public URL and return its main readable content as Markdown or plain text, plus title, author, published date and site name. Strips navigation, ads and boilerplate. No JavaScript rendering, so it costs a fraction of a browser scrape; use /v1/scrape when the content only appears after JavaScript runs.",
    "extensions": {
      "bazaar": {
        "info": {
          "input": {
            "body": {
              "format": "markdown",
              "max_bytes": 5000000,
              "timeout_s": 30,
              "url": "https://example.com"
            },
            "bodyType": "json",
            "description": "Article text and metadata, boilerplate stripped. No browser by default; falls back to one when a page blocks plain HTTP.",
            "method": "POST",
            "type": "http"
          },
          "output": {
            "description": "Fetch a public URL and return its main readable content as Markdown or plain text, plus title, author, published date and site name. Strips navigation, ads and boilerplate. No JavaScript rendering, so it costs a fraction of a browser scrape; use /v1/scrape when the content only appears after JavaScript runs.",
            "example": {
              "format": "markdown",
              "metadata": {
                "author": "A. Writer",
                "date": "2026-04-01",
                "sitename": "Example"
              },
              "size": 48213,
              "status": "success",
              "status_code": 200,
              "text": "# Post title\n\nBody as Markdown...",
              "title": "Post title",
              "url": "https://example.com/blog/post"
            },
            "format": "application/json",
            "type": "json"
          }
        },
        "schema": {
          "$defs": {},
          "$schema": "https://json-schema.org/draft/2020-12/schema",
          "properties": {
            "input": {
              "properties": {
                "body": {
                  "properties": {
                    "accept_language": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "default": null,
                      "description": "Accept-Language header, e.g. 'de-DE,de;q=0.9'. Defaults to en-US.",
                      "title": "Accept Language"
                    },
                    "egress": {
                      "description": "Exit to leave through: `direct` (this service's own datacentre egress) or `residential` (a residential address pool, for targets that refuse datacentre addresses). Omit to use the default route.",
                      "title": "Egress",
                      "type": "string"
                    },
                    "egress_fallback": {
                      "description": "Pool to retry through once when the first attempt is refused (bot check, wall, empty extraction, origin 403/429/5xx); must differ from `egress`. Absent keeps one exit for the whole call.",
                      "title": "Egress Fallback",
                      "type": "string"
                    },
                    "format": {
                      "default": "markdown",
                      "description": "Output flavour: Markdown keeps headings, lists and tables.",
                      "enum": [
                        "markdown",
                        "text"
                      ],
                      "title": "Format",
                      "type": "string"
                    },
                    "max_bytes": {
                      "default": 5000000,
                      "description": "Abort if the response body exceeds this many bytes.",
                      "maximum": 20000000,
                      "minimum": 1024,
                      "title": "Max Bytes",
                      "type": "integer"
                    },
                    "timeout_s": {
                      "default": 30,
                      "description": "Total budget for the whole call in seconds: DNS, redirects, the render fallback and any retry share it.",
                      "maximum": 60,
                      "minimum": 1,
                      "title": "Timeout S",
                      "type": "number"
                    },
                    "url": {
                      "description": "Public http(s) URL to read.",
                      "format": "uri",
                      "maxLength": 2083,
                      "minLength": 1,
                      "title": "Url",
                      "type": "string"
                    }
                  },
                  "required": [
                    "url"
                  ],
                  "title": "TextRequest",
                  "type": "object"
                },
                "bodyType": {
                  "const": "json"
                },
                "method": {
                  "enum": [
                    "POST"
                  ]
                },
                "type": {
                  "const": "http"
                }
              },
              "required": [
                "type",
                "method",
                "body"
              ],
              "type": "object"
            },
            "output": {
              "properties": {
                "format": {
                  "type": "string"
                },
                "metadata": {
                  "properties": {
                    "author": {
                      "type": "string"
                    },
                    "date": {
                      "type": "string"
                    },
                    "sitename": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "size": {
                  "type": "integer"
                },
                "status": {
                  "type": "string"
                },
                "status_code": {
                  "type": "integer"
                },
                "text": {
                  "type": "string"
                },
                "title": {
                  "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": {
          "method": "POST",
          "note": "Free ~400-character preview for the same URL before paying",
          "path": "/v1/probe",
          "price_usd": 0
        },
        "related_endpoints": [
          {
            "path": "/v1/probe"
          },
          {
            "path": "/v1/scrape"
          }
        ],
        "service_manifest": "https://readfetch.com/.well-known/service.json",
        "skill": "https://readfetch.com/SKILL.md",
        "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-10-30T16:24:58.965Z",
    "quality": {
      "l30DaysTotalCalls": 18,
      "l30DaysUniquePayers": 2,
      "lastCalledAt": "2026-10-30T16:25:14.996Z"
    },
    "resource": "https://readfetch.com/v1/text",
    "serviceName": "readfetch.com",
    "tags": [
      "ai agents",
      "article extraction",
      "data",
      "html to markdown",
      "html to text"
    ],
    "type": "http",
    "x402Version": 2
  },
  "source": "x402_bazaar",
  "summary": "Fetch a public URL and return its main readable content as Markdown or plain text, plus title, author, published date and site name. Strips navigation, ads and boilerplate. No JavaScript rendering, so it costs a fraction of a browser scrape; use /v1/scrape when the content only appears after JavaScript runs."
}

What the leaf hashes

{"body":"9256e74f3181ad97121a8f857b5c574c90254ec7ac75f46043ea4c350a857ae3","id":1261547,"kind":"listing","method":"sync.x402_bazaar/1","observed_us":1793385513234765,"prev":1039794,"subject":"x402_bazaar:https://readfetch.com/v1/text","subject_kind":"source_record"}

Proof

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

  1. 0x599a3e49afde31bdaa88b3d1c7c9d3b79829931905776a190117068f95011791
  2. 0x3f171282b5d6ec10c894906d206a12a91676d60e8e91fc85a472e69a9b3f133f
  3. 0xa70306977fc04470c7ea60d80bbf672e9dd4455b5bf09094050a2c64c6d0fe41
  4. 0xe029ebd14cfe976399681db3aacaf5920f388f636630a5238f1ff353f91a73d4
  5. 0x38e89bed6bf12c1733594e0c72901b67b92c2db99eab6d0e24305e1f418101e7
  6. 0x962798f4bda19333e943f6e446908127da2592cb297ef9f3a6cc8a9525469efd
  7. 0xa8ebbc3a9b9254674a08ad1016cfe7c2cc551566fb24cb04941ebce673a10f41
  8. 0x2b9b216fdf1adbf40c8d1d1bddc4be9eae93e6c636c803f52cfcd02dc134d810
  9. 0xd19c171ebc7e407e7bd2f9fb6edf89bd5e6713e14443f7ada705b9f982800e00
  10. 0xc25489674f3dd3d08b5012c019e31f44cb02543f1c7f0b09b627d5ea3d2d6112
  11. 0x903361bd8b3971da6ca5f753c5215165181617b94c6f0d29538d5761a68f1a1e
  12. 0x54ec80395857c9719ea9c92c5ed7e57a962472bbc13e8619615a1c4817119b2c
  13. 0x2ec0a6d79ff828ec3f4a33d6574863da0ead3c7bbeae5ac9a5f800d4be6a010b
  14. 0xd036f65644c5bb700403844636b74b07a0ecb42fea108fce98c04207855ccb3e
  15. 0x7ecc532de10b728de98de2eb2a81fbd8da2254ff32b38b6ffde14af9964fc470
  16. 0x910a91495535ac1a9e959d27d607e185616d2d41b45bc7071c6357f426f372d8
  17. 0xffe660edb9e5c6e3449a49454634c3e7b2f9fe703e5697f723b021735647ab7e
  18. 0x30a81d8fcef4e8f9e2877c62796cfc5612fc1b251127d531dee28f8dbd5c5147
Day root
0x0826c7ad6039e06a2360ca0a4a3a4fe7f2626c6dc19f71a37599386f78b39875
Chained
0x36b4c8a1063758f0b8765fa1bdf75fa92fb543cc183add3e261880ee2bd1f822
Published
On Arc Testnet, block 69923247: 0x8704744146c6967c8abc9e9a99de4db7283b29e840922ea83a69b6fe776e6861

How to check it · This row as JSON