addrbookFor publishers
← The evidence ledger

Evidence row 1508284

Observed , by sync.x402_bazaar/1.

Kind
listing
About
source_record x402_bazaar:https://readfetch.com/v1/text
Recorded
Previous row
#1261547
Body SHA-256
b65f2243f06c9754b157280dbbbf095a891dac790bb18aef281c0e4e3e125520
Leaf
0x6be7f659fdc88132119c8ec0d06e0d1e86ca7995ac9c5df226bba10d4ccf2203

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-30T22:02:00.031Z",
    "quality": {
      "l30DaysTotalCalls": 24,
      "l30DaysUniquePayers": 2,
      "lastCalledAt": "2026-10-30T22:01:59.723Z"
    },
    "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":"b65f2243f06c9754b157280dbbbf095a891dac790bb18aef281c0e4e3e125520","id":1508284,"kind":"listing","method":"sync.x402_bazaar/1","observed_us":1793472709207010,"prev":1261547,"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 (246033 rows).

  1. 0x6be80441dbfc1bf7a2c7b681f6b358073174579b11d147504c424c5652025d72
  2. 0xdb0c21be00ab8b7aa354e05ef6a57cebecca8a7fa285d679fb3ac5ff3bebfd35
  3. 0xc1fe0d81a8da47a821183ec24bc58780d32a4cde3ab21ed582e6cc0fe9af8311
  4. 0x0133a1aa9aa5ad287dd4dbfe7fdfff44af2953cf07efba766e145795f13f850b
  5. 0x019a52268755cc7c4b8ae605ff4c9ab4ae7bcf6161a546474e3922f30a381b59
  6. 0x2f7de6ae2a62fcd842ea75d5fe1baf936d771fe662ead4f52c48a8a51b846a73
  7. 0x2dc9f363e092753a56b2cbb4eda660603f474e368809ebda2461db42adfd25c8
  8. 0xb3d7c3149be2cc81d0cb8831969a1df44344ef183840ea8d58b9b4542dd4ff32
  9. 0xb617701ca46b5fa082470542631f69392be6d2d8d5b51f76af7f20976a9e352b
  10. 0x4ba17f791a7caa5450d8cf7372e76f66b38f39a92ca6cd6b95a6c7a26b261ca9
  11. 0x0559baa7ac25598e4bab8e8399c3dd2d58abdaecd77ae17c1e3f0793aa14358c
  12. 0x635285598f7839cd88475306d5c6447a244f696422894fe5e26896696234472b
  13. 0x1c2c743fc81bf98ad9011edc47e35ecce58da21b909d893da38929bde1fd5d8c
  14. 0xac33b3310fc2d37a4e515e0c8775d4934592f3daaaf032bec47eccec8e01df31
  15. 0xda82240eda32eeb01478d5898342fa15b35b5682549347c7a22660b37913617f
  16. 0x919f237dec4df392868ab95f1d4300b185479ae64464cbc2e7385ad1fd6ab390
  17. 0xa00a931d72706fa2402bfc9b441a12eb7c6a61ff42a542916106e3637177f101
  18. 0x59f83f7228f07febe2780660e422e171b0359b8aa031ee3be07e991118130c15
Day root
0x24463725d1c0d9894bd6123691d532547aaa79f0762c0e45aa6a68acf1fd71ab
Chained
0x7d4824ff313dee7252a46f9d5c37b452851deb6c9f24a40c2f74ee0e53c82980
Published
On Arc Testnet, block 70093156: 0xedb7b832f4ebf6781b5ecd2ed241c435b862f4d3761541fa31adc1831b8c44a0

How to check it · This row as JSON