addrbookFor publishers
← The evidence ledger

Evidence row 2200219

Observed , by sync.x402_bazaar/1.

Kind
listing
About
source_record x402_bazaar:https://readfetch.com/v1/pdf
Recorded
Previous row
#1261541
Body SHA-256
8526777e318c2e1092e805903f7b071eecbe75033a96b8e4d133c5c6ae1b1ab5
Leaf
0x5da06703cfc36baf4071f173e6ac654e4d9eb21d86521178c69c5c000e14d02b

What was observed

{
  "endpoints": [
    [
      "x402",
      "https://readfetch.com/v1/pdf"
    ]
  ],
  "name": "readfetch.com",
  "owner_address": "0x26c2308adc8fe5ffe6d4183588dd2dd22ed86071",
  "raw": {
    "accepts": [
      {
        "amount": "5000",
        "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
        "description": "Extract text from a PDF (%PDF- magic, not Content-Type). Send exactly one of `url` (public http(s) link — egress GET, ≤ 20 MB) or `content_base64` (bytes you already have, ≤ 20 MB decoded; optional `filename` labels the upload). Returns `pages` (per-page text), one concatenated `markdown` body, `title`, and `metadata`; $0.005 per document, not per page. `max_pages` limits extraction (default 50, max 200); documents over 200 pages or above your cap return 413 and are not bille",
        "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/pdf",
        "scheme": "exact"
      }
    ],
    "description": "Extract text from a PDF (%PDF- magic, not Content-Type). Send exactly one of `url` (public http(s) link — egress GET, ≤ 20 MB) or `content_base64` (bytes you already have, ≤ 20 MB decoded; optional `filename` labels the upload). Returns `pages` (per-page text), one concatenated `markdown` body, `title`, and `metadata`; $0.005 per document, not per page. `max_pages` limits extraction (default 50, max 200); documents over 200 pages or above your cap return 413 and are not bille",
    "extensions": {
      "bazaar": {
        "info": {
          "input": {
            "body": {
              "max_pages": 50,
              "url": "https://example.com/paper.pdf"
            },
            "bodyType": "json",
            "description": "Documents, not pages: page text plus one Markdown body, priced per document rather than per page.",
            "method": "POST",
            "type": "http"
          },
          "output": {
            "description": "Extract text from a PDF (%PDF- magic, not Content-Type). Send exactly one of `url` (public http(s) link — egress GET, ≤ 20 MB) or `content_base64` (bytes you already have, ≤ 20 MB decoded; optional `filename` labels the upload). Returns `pages` (per-page text), one concatenated `markdown` body, `title`, and `metadata`; $0.005 per document, not per page. `max_pages` limits extraction (default 50, max 200); documents over 200 pages or above your cap return 413 and are not billed. Scanned/image-only PDFs may return empty text with `billed: false` and a `hint`. Prefer readfetch_text or readfetch_scrape for HTML articles; readfetch_fetch for raw PDF bytes without extraction; readfetch_batch for many HTML URLs, not PDFs. Read-only server-side; paid x402 like other routes.",
            "example": {
              "billed": true,
              "content_sha256": "...",
              "hint": null,
              "markdown": "# Title\n\n...",
              "metadata": {
                "author": "...",
                "created": "2026-01-04",
                "producer": "..."
              },
              "page_count": 12,
              "pages": [
                {
                  "page": 1,
                  "text": "..."
                }
              ],
              "source": "https://example.com/report.pdf",
              "status": "success",
              "title": "Annual Report"
            },
            "format": "application/json",
            "type": "json"
          }
        },
        "schema": {
          "$defs": {},
          "$schema": "https://json-schema.org/draft/2020-12/schema",
          "properties": {
            "input": {
              "properties": {
                "body": {
                  "anyOf": [
                    {
                      "required": [
                        "url"
                      ]
                    },
                    {
                      "required": [
                        "content_base64"
                      ]
                    }
                  ],
                  "properties": {
                    "content_base64": {
                      "description": "Base64-encoded PDF bytes (≤ 20 MB). Mutually exclusive with url; pair with filename when the label matters.",
                      "type": "string"
                    },
                    "filename": {
                      "description": "Optional label when using content_base64 (default upload.pdf); ignored for url-only requests.",
                      "type": "string"
                    },
                    "max_pages": {
                      "default": 50,
                      "description": "Extract at most this many pages. Default 50; raise up to 200 when the document is longer. Over cap → 413, unbilled.",
                      "maximum": 200,
                      "minimum": 1,
                      "type": "number"
                    },
                    "url": {
                      "description": "Public PDF URL; fetched through egress (≤ 20 MB). Mutually exclusive with content_base64.",
                      "example": "https://example.com/paper.pdf",
                      "format": "uri",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "bodyType": {
                  "const": "json"
                },
                "method": {
                  "enum": [
                    "POST"
                  ]
                },
                "type": {
                  "const": "http"
                }
              },
              "required": [
                "type",
                "method",
                "body"
              ],
              "type": "object"
            },
            "output": {
              "properties": {
                "billed": {
                  "type": "boolean"
                },
                "content_sha256": {
                  "type": "string"
                },
                "hint": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "markdown": {
                  "type": "string"
                },
                "metadata": {
                  "properties": {
                    "author": {
                      "type": "string"
                    },
                    "created": {
                      "type": "string"
                    },
                    "producer": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "page_count": {
                  "type": "integer"
                },
                "pages": {
                  "items": {
                    "properties": {
                      "page": {
                        "type": "integer"
                      },
                      "text": {
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                },
                "source": {
                  "format": "uri",
                  "type": "string"
                },
                "status": {
                  "type": "string"
                },
                "title": {
                  "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-02T13:00:33.032Z",
    "quality": {
      "l30DaysTotalCalls": 3,
      "l30DaysUniquePayers": 1,
      "lastCalledAt": "2026-11-02T13:00:32.419Z"
    },
    "resource": "https://readfetch.com/v1/pdf",
    "serviceName": "readfetch.com",
    "tags": [
      "data",
      "document text",
      "markdown",
      "metadata",
      "page text"
    ],
    "type": "http",
    "x402Version": 2
  },
  "source": "x402_bazaar",
  "summary": "Extract text from a PDF (%PDF- magic, not Content-Type). Send exactly one of `url` (public http(s) link — egress GET, ≤ 20 MB) or `content_base64` (bytes you already have, ≤ 20 MB decoded; optional `filename` labels the upload). Returns `pages` (per-page text), one concatenated `markdown` body, `title`, and `metadata`; $0.005 per document, not per page. `max_pages` limits extraction (default 50, max 200); documents over 200 pages or above your cap return 413 and are not bille"
}

What the leaf hashes

{"body":"8526777e318c2e1092e805903f7b071eecbe75033a96b8e4d133c5c6ae1b1ab5","id":2200219,"kind":"listing","method":"sync.x402_bazaar/1","observed_us":1793646796782710,"prev":1261541,"subject":"x402_bazaar:https://readfetch.com/v1/pdf","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. 0x5da04df95368533ac8e89d390317bc6088bc971e05ee7e723d341aea6f50a3d2
  2. 0x371ea3feb5a85858b1aed482056c6728e501e793e0709c31e043970dc5d19118
  3. 0xded57ae2706fa19c48f906faba6d2019b269935116ab2e8a9b4835152c14b76f
  4. 0xc6137c9768ad1ada819eb1194c719cb99c0decae7cdbfa42c779511468c23a21
  5. 0x176f5c9a9a08a3241c914879d2b89ea80d62f659d3efa52e367cb900fdeb04a3
  6. 0x02fce4164bc07ad92964aeff700936b8503afc215868e5723126fa0634c1dd0c
  7. 0xbb6fc2deb5baa64ea3f8ff861571b4ac2901f8c60a08501d8fe1bbeafd8c593a
  8. 0x35a405f8548364d955bbed62c595c1eb0986893a8c0fbb49c17aa0132931a45a
  9. 0x1ffe540930f7aa460f6b57be4d9f63717fb885aca1d1d7ead87990b4d97245eb
  10. 0x79c21b065efa8b66e2cfd40549f7b16783ed2a2112d93b597678e291a5484433
  11. 0x109cc600d9e5681d81b1c806e442cb092de1539ae1d3befea2d2961d5dc7e2f6
  12. 0xfdde22dc0ff8090b6068b0dcf3aba740d9ea8edcee4ae8d3c3441afa11bcf422
  13. 0x0f0789866ea2f1bd292c9e7a2eaf20360ccfd54bcd03afc0a8ce21b6555e86f5
  14. 0x463370b8390b2f93f44023fe6ce3fd4ebff0a7fecb7894dd4f82f8253ec8661f
  15. 0x52242d46cadab5f421a6f86c1edc6379b085ae98482fa80904e4a3028c1849a3
  16. 0x1068659ec8f2bcf26e4ad39786557a8c45d60e5ebba4fce2fb9962b2c9c59920
  17. 0xf9973981f80219d4f00fa9186b40a8144accc0c9875572fb79eaea312a21a187
  18. 0x4d205063c881c48edbbb37762a8d3bbb7444d4c42daa882f663a231893d25c35
  19. 0x365b161a4b68d750dcc4b3ecce1154a2163c87b08762079428e68f0ebb6a754e
Day root
0x78fecaabbe319e56f5c4b80fc02e2052e198ad24781da8832a475ff65f2002d1
Chained
0xdc35957db5d1371ca382b9152878ffece28ec7c5cb4f98fd71ddb367f8b999b2
Published
On Arc Testnet, block 70432815: 0x56b814612eb2e3e544153df3e91e1f7199106d1e430c7d8c6b653feeb9ebe9af

How to check it · This row as JSON