{
  "name": "x.c00l.site",
  "title": "x.c00l.site — pay-per-call APIs for AI agents",
  "version": "2026-07-31",
  "homepage": "https://x.c00l.site/",
  "summary": "5 independent HTTP APIs exposing 24 paid endpoints, priced $0.001-$0.25 per call and paid with x402 (HTTP 402 + USDC on Base mainnet). There is no account, no API key, no rate limit and no minimum spend: any client holding USDC on Base can call any endpoint immediately. Capabilities are web page to clean Markdown (readable), data format conversion and JSON Schema tooling (dataforge), DNS/email/TLS/IP intelligence (netintel), web search with verifiable citations (aisearch), and LLM extraction of arbitrary sources into a JSON Schema you supply (structura). Failed requests (any 4xx or 5xx) are never settled, so a retry after an error costs nothing. Prices below are the exact amounts served in each live 402 challenge.",
  "documents": {
    "self": "https://x.c00l.site/index.json",
    "llmsTxt": "https://x.c00l.site/llms.txt",
    "openapi": "https://x.c00l.site/openapi.json",
    "status": "https://x.c00l.site/status",
    "health": "https://x.c00l.site/health",
    "humanReadable": "https://x.c00l.site/"
  },
  "howToCall": {
    "tldr": "Make the request normally. If it returns 402, base64-decode the `payment-required` header, sign accepts[0] as an EIP-3009 TransferWithAuthorization, then replay the identical request with a `payment-signature` header. A conforming x402 client does all of this for you.",
    "steps": [
      {
        "n": 1,
        "action": "Send the request with no auth of any kind.",
        "result": "200 if the endpoint is free, otherwise 402 with a `payment-required` header."
      },
      {
        "n": 2,
        "action": "Base64-decode `payment-required` to get the challenge JSON.",
        "result": "{ x402Version, resource, accepts: [{ scheme, network, amount, asset, payTo, maxTimeoutSeconds, extra }], extensions }"
      },
      {
        "n": 3,
        "action": "Sign accepts[0] as an EIP-3009 TransferWithAuthorization over the USDC EIP-712 domain. Off-chain; costs no gas.",
        "result": "A PaymentPayload echoing `accepted` byte-identically, plus the signature."
      },
      {
        "n": 4,
        "action": "Replay the identical request with the base64 payload in a `payment-signature` header.",
        "result": "200 with your data and a `payment-response` header (base64 { success, transaction }) as the settlement receipt."
      }
    ],
    "clients": [
      {
        "language": "javascript",
        "packages": [
          "@x402/fetch",
          "@x402/evm",
          "viem"
        ],
        "snippet": "import { wrapFetchWithPaymentFromConfig } from \"@x402/fetch\";\nimport { ExactEvmScheme } from \"@x402/evm/exact/client\";\nimport { privateKeyToAccount } from \"viem/accounts\";\nconst account = privateKeyToAccount(process.env.PRIVATE_KEY);\nconst pay = wrapFetchWithPaymentFromConfig(fetch, {\n  schemes: [{ network: \"eip155:*\", client: new ExactEvmScheme(account) }],\n});\nconst res = await pay(\"https://readable.x.c00l.site/extract\", {\n  method: \"POST\",\n  headers: { \"content-type\": \"application/json\" },\n  body: JSON.stringify({ url: \"https://example.com\" }),\n});"
      },
      {
        "language": "any",
        "packages": [],
        "snippet": "No SDK is required. The protocol is three HTTP facts: a 402 with a base64 `payment-required` header, an EIP-3009 signature over accepts[0], and a replay with a base64 `payment-signature` header."
      }
    ]
  },
  "payment": {
    "protocol": "x402",
    "protocolVersion": 2,
    "scheme": "exact",
    "network": "eip155:8453",
    "networkName": "Base mainnet",
    "chainId": 8453,
    "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
    "assetSymbol": "USDC",
    "assetName": "USD Coin",
    "assetDecimals": 6,
    "eip712Domain": {
      "name": "USD Coin",
      "version": "2"
    },
    "payTo": "0x49db736f346BD2f68E9b97069E2E090222d75c82",
    "facilitator": "https://facilitator.payai.network",
    "maxTimeoutSeconds": 300,
    "signatureType": "EIP-3009 TransferWithAuthorization",
    "gas": "Paid by the facilitator. The caller needs USDC on Base and no ETH.",
    "challengeHeader": "payment-required",
    "paymentHeader": "payment-signature",
    "receiptHeader": "payment-response",
    "identical": "These parameters are identical for every endpoint in the catalogue, so one client configuration covers all of them."
  },
  "conventions": {
    "auth": "none",
    "apiKeys": "none",
    "accounts": "none",
    "rateLimits": "none",
    "cors": "Access-Control-Allow-Origin: * on every service, with the x402 headers exposed.",
    "errorShape": "{\"error\":{\"code\":\"snake_case_code\",\"message\":\"human readable\"}}",
    "failedCalls": "Any response with status >= 400 skips settlement entirely. Bad input, upstream failures and refused requests are all free. Validation runs before the 402 where possible, so malformed input never even reaches a challenge.",
    "freeOnEveryService": [
      "GET /",
      "GET /health",
      "GET /openapi.json"
    ],
    "discovery": "Every paid endpoint declares the x402 bazaar extension and is indexed in the Coinbase Developer Platform x402 discovery API with its input schema and a worked example."
  },
  "pricing": {
    "currency": "USDC",
    "network": "eip155:8453",
    "decimals": 6,
    "min": "$0.001",
    "max": "$0.25",
    "unit": "per call, unless `price.per.basis` is 'per-item'",
    "atomicNote": "`price.atomicAmount` is the exact string the 402 challenge carries. 1 USDC = 1000000 atomic units, so \"4000\" is $0.004. Use it for arithmetic; use `price.usd` for display."
  },
  "counts": {
    "services": 5,
    "paidEndpoints": 24,
    "freeEndpoints": 20
  },
  "endpointIndex": [
    {
      "id": "readable.extract",
      "method": "POST",
      "url": "https://readable.x.c00l.site/extract",
      "usd": "$0.004",
      "atomicAmount": "4000",
      "perItem": false,
      "does": "Page to Markdown"
    },
    {
      "id": "readable.unfurl",
      "method": "POST",
      "url": "https://readable.x.c00l.site/unfurl",
      "usd": "$0.001",
      "atomicAmount": "1000",
      "perItem": false,
      "does": "Link-preview metadata"
    },
    {
      "id": "readable.links",
      "method": "POST",
      "url": "https://readable.x.c00l.site/links",
      "usd": "$0.002",
      "atomicAmount": "2000",
      "perItem": false,
      "does": "Every link on a page"
    },
    {
      "id": "readable.batch",
      "method": "POST",
      "url": "https://readable.x.c00l.site/batch",
      "usd": "$0.003",
      "atomicAmount": "3000",
      "perItem": true,
      "does": "Extract up to 20 URLs at once"
    },
    {
      "id": "dataforge.convert",
      "method": "POST",
      "url": "https://dataforge.x.c00l.site/convert",
      "usd": "$0.002",
      "atomicAmount": "2000",
      "perItem": false,
      "does": "Convert between formats"
    },
    {
      "id": "dataforge.query",
      "method": "POST",
      "url": "https://dataforge.x.c00l.site/query",
      "usd": "$0.002",
      "atomicAmount": "2000",
      "perItem": false,
      "does": "JSONPath / JSON Pointer query"
    },
    {
      "id": "dataforge.schema",
      "method": "POST",
      "url": "https://dataforge.x.c00l.site/schema",
      "usd": "$0.003",
      "atomicAmount": "3000",
      "perItem": false,
      "does": "Infer or validate a JSON Schema"
    },
    {
      "id": "dataforge.transform",
      "method": "POST",
      "url": "https://dataforge.x.c00l.site/transform",
      "usd": "$0.003",
      "atomicAmount": "3000",
      "perItem": false,
      "does": "Declarative transform pipeline"
    },
    {
      "id": "dataforge.diff",
      "method": "POST",
      "url": "https://dataforge.x.c00l.site/diff",
      "usd": "$0.002",
      "atomicAmount": "2000",
      "perItem": false,
      "does": "Structural diff, as RFC 6902"
    },
    {
      "id": "dataforge.patch",
      "method": "POST",
      "url": "https://dataforge.x.c00l.site/patch",
      "usd": "$0.002",
      "atomicAmount": "2000",
      "perItem": false,
      "does": "Apply an RFC 6902 patch"
    },
    {
      "id": "netintel.dns",
      "method": "POST",
      "url": "https://netintel.x.c00l.site/dns",
      "usd": "$0.002",
      "atomicAmount": "2000",
      "perItem": false,
      "does": "DNS lookup with DNSSEC + cross-check"
    },
    {
      "id": "netintel.email",
      "method": "POST",
      "url": "https://netintel.x.c00l.site/email",
      "usd": "$0.003",
      "atomicAmount": "3000",
      "perItem": false,
      "does": "Email deliverability audit"
    },
    {
      "id": "netintel.tls",
      "method": "POST",
      "url": "https://netintel.x.c00l.site/tls",
      "usd": "$0.004",
      "atomicAmount": "4000",
      "perItem": false,
      "does": "TLS certificate + security-header grade"
    },
    {
      "id": "netintel.ip",
      "method": "POST",
      "url": "https://netintel.x.c00l.site/ip",
      "usd": "$0.002",
      "atomicAmount": "2000",
      "perItem": false,
      "does": "IP / CIDR / hostname intelligence"
    },
    {
      "id": "netintel.propagation",
      "method": "POST",
      "url": "https://netintel.x.c00l.site/propagation",
      "usd": "$0.005",
      "atomicAmount": "5000",
      "perItem": false,
      "does": "DNS propagation across resolvers"
    },
    {
      "id": "aisearch.answer",
      "method": "POST",
      "url": "https://aisearch.x.c00l.site/answer",
      "usd": "$0.008",
      "atomicAmount": "8000",
      "perItem": false,
      "does": "Fast cited factual answer"
    },
    {
      "id": "aisearch.search",
      "method": "POST",
      "url": "https://aisearch.x.c00l.site/search",
      "usd": "$0.02",
      "atomicAmount": "20000",
      "perItem": false,
      "does": "Cited search with synthesised answer"
    },
    {
      "id": "aisearch.compare",
      "method": "POST",
      "url": "https://aisearch.x.c00l.site/compare",
      "usd": "$0.03",
      "atomicAmount": "30000",
      "perItem": false,
      "does": "Researched side-by-side comparison"
    },
    {
      "id": "aisearch.research",
      "method": "POST",
      "url": "https://aisearch.x.c00l.site/research",
      "usd": "$0.25",
      "atomicAmount": "250000",
      "perItem": false,
      "does": "Agentic deep research report"
    },
    {
      "id": "structura.extract",
      "method": "POST",
      "url": "https://structura.x.c00l.site/extract",
      "usd": "$0.015",
      "atomicAmount": "15000",
      "perItem": false,
      "does": "Extract into your schema"
    },
    {
      "id": "structura.infer",
      "method": "POST",
      "url": "https://structura.x.c00l.site/infer",
      "usd": "$0.02",
      "atomicAmount": "20000",
      "perItem": false,
      "does": "Infer a schema and fill it"
    },
    {
      "id": "structura.table",
      "method": "POST",
      "url": "https://structura.x.c00l.site/table",
      "usd": "$0.012",
      "atomicAmount": "12000",
      "perItem": false,
      "does": "Extract every table"
    },
    {
      "id": "structura.batch",
      "method": "POST",
      "url": "https://structura.x.c00l.site/batch",
      "usd": "$0.012",
      "atomicAmount": "12000",
      "perItem": true,
      "does": "One schema across many sources"
    },
    {
      "id": "structura.classify",
      "method": "POST",
      "url": "https://structura.x.c00l.site/classify",
      "usd": "$0.006",
      "atomicAmount": "6000",
      "perItem": false,
      "does": "Classify text against your labels"
    }
  ],
  "services": [
    {
      "id": "readable",
      "baseUrl": "https://readable.x.c00l.site",
      "tagline": "Any URL to clean, LLM-ready Markdown",
      "description": "Fetches a page, strips nav, ads, cookie banners, comments and sidebars with a Readability-style density heuristic, then emits Markdown with correct headings, nested lists, GFM tables, fenced code and absolute links. The pre-processing step for RAG indexing and summarisation.",
      "tags": [
        "markdown",
        "scraping",
        "rag",
        "web"
      ],
      "openapi": "https://readable.x.c00l.site/openapi.json",
      "docs": "https://readable.x.c00l.site",
      "priceRange": {
        "min": "$0.001",
        "max": "$0.004"
      },
      "freeEndpoints": [
        {
          "method": "GET",
          "path": "/",
          "url": "https://readable.x.c00l.site/",
          "description": "HTML documentation",
          "price": "$0.00"
        },
        {
          "method": "GET",
          "path": "/health",
          "url": "https://readable.x.c00l.site/health",
          "description": "Liveness probe",
          "price": "$0.00"
        },
        {
          "method": "GET",
          "path": "/openapi.json",
          "url": "https://readable.x.c00l.site/openapi.json",
          "description": "OpenAPI 3.1 spec",
          "price": "$0.00"
        }
      ],
      "endpoints": [
        {
          "id": "readable.extract",
          "service": "readable",
          "url": "https://readable.x.c00l.site/extract",
          "path": "/extract",
          "method": "POST",
          "methods": [
            "POST",
            "GET"
          ],
          "title": "Page to Markdown",
          "description": "Fetch a URL, strip boilerplate, return the article body as Markdown (or text/HTML) plus title, byline, publish date, site name, language, excerpt, word count and reading time.",
          "price": {
            "usd": "$0.004",
            "usdAmount": "0.004",
            "atomicAmount": "4000",
            "asset": "USDC",
            "assetDecimals": 6,
            "per": {
              "basis": "flat",
              "note": "One flat amount per call, regardless of input size."
            }
          },
          "input": {
            "contentType": "application/json",
            "required": [
              "url"
            ],
            "optional": [
              "format",
              "includeImages",
              "includeLinks",
              "maxChars"
            ],
            "fields": {
              "url": "string — absolute http(s) URL of the page.",
              "format": "enum markdown|text|html (default markdown).",
              "includeImages": "boolean (default true) — keep ![alt](src).",
              "includeLinks": "boolean (default true) — keep [text](url).",
              "maxChars": "integer 100..2000000 — truncate on a word boundary."
            },
            "example": {
              "url": "https://en.wikipedia.org/wiki/Markdown",
              "format": "markdown"
            },
            "note": "Also callable as GET with ?url=... for convenience."
          },
          "output": {
            "contentType": "application/json",
            "shape": "{ url, finalUrl, title, byline, publishedAt, siteName, lang, excerpt, content, wordCount, readingTimeMinutes, truncated, meta }"
          },
          "curl": "curl -s https://readable.x.c00l.site/extract \\\n  -H 'content-type: application/json' \\\n  -d '{\"url\":\"https://en.wikipedia.org/wiki/Markdown\",\"format\":\"markdown\"}'",
          "x402": {
            "scheme": "exact",
            "network": "eip155:8453",
            "networkName": "Base mainnet",
            "chainId": 8453,
            "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
            "assetSymbol": "USDC",
            "assetDecimals": 6,
            "payTo": "0x49db736f346BD2f68E9b97069E2E090222d75c82",
            "maxTimeoutSeconds": 300,
            "extra": {
              "name": "USD Coin",
              "version": "2"
            },
            "facilitator": "https://facilitator.payai.network"
          }
        },
        {
          "id": "readable.unfurl",
          "service": "readable",
          "url": "https://readable.x.c00l.site/unfurl",
          "path": "/unfurl",
          "method": "POST",
          "methods": [
            "POST",
            "GET"
          ],
          "title": "Link-preview metadata",
          "description": "Head-only metadata for a URL: title, description, OpenGraph image, favicon, canonical, site name, type, theme colour, author, date, feeds and oEmbed endpoints. Cheapest call in the catalogue.",
          "price": {
            "usd": "$0.001",
            "usdAmount": "0.001",
            "atomicAmount": "1000",
            "asset": "USDC",
            "assetDecimals": 6,
            "per": {
              "basis": "flat",
              "note": "One flat amount per call, regardless of input size."
            }
          },
          "input": {
            "contentType": "application/json",
            "required": [
              "url"
            ],
            "optional": [],
            "fields": {
              "url": "string — absolute http(s) URL."
            },
            "example": {
              "url": "https://github.com"
            },
            "note": "Also callable as GET with ?url=... for convenience."
          },
          "output": {
            "contentType": "application/json",
            "shape": "{ url, title, description, image, favicon, canonical, siteName, type, themeColor, author, date, feeds, oembed }"
          },
          "curl": "curl -s https://readable.x.c00l.site/unfurl \\\n  -H 'content-type: application/json' \\\n  -d '{\"url\":\"https://github.com\"}'",
          "x402": {
            "scheme": "exact",
            "network": "eip155:8453",
            "networkName": "Base mainnet",
            "chainId": 8453,
            "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
            "assetSymbol": "USDC",
            "assetDecimals": 6,
            "payTo": "0x49db736f346BD2f68E9b97069E2E090222d75c82",
            "maxTimeoutSeconds": 300,
            "extra": {
              "name": "USD Coin",
              "version": "2"
            },
            "facilitator": "https://facilitator.payai.network"
          }
        },
        {
          "id": "readable.links",
          "service": "readable",
          "url": "https://readable.x.c00l.site/links",
          "path": "/links",
          "method": "POST",
          "methods": [
            "POST",
            "GET"
          ],
          "title": "Every link on a page",
          "description": "Every anchor on the page, absolutised, tracking parameters stripped, deduplicated, and classified internal/external/nofollow with its anchor text and page region (nav, main, footer).",
          "price": {
            "usd": "$0.002",
            "usdAmount": "0.002",
            "atomicAmount": "2000",
            "asset": "USDC",
            "assetDecimals": 6,
            "per": {
              "basis": "flat",
              "note": "One flat amount per call, regardless of input size."
            }
          },
          "input": {
            "contentType": "application/json",
            "required": [
              "url"
            ],
            "optional": [
              "limit"
            ],
            "fields": {
              "url": "string — absolute http(s) URL.",
              "limit": "integer — cap the number of links returned."
            },
            "example": {
              "url": "https://news.ycombinator.com"
            },
            "note": "Also callable as GET with ?url=... for convenience."
          },
          "output": {
            "contentType": "application/json",
            "shape": "{ url, count, links: [{ href, text, rel, region, internal, nofollow }] }"
          },
          "curl": "curl -s https://readable.x.c00l.site/links \\\n  -H 'content-type: application/json' \\\n  -d '{\"url\":\"https://news.ycombinator.com\"}'",
          "x402": {
            "scheme": "exact",
            "network": "eip155:8453",
            "networkName": "Base mainnet",
            "chainId": 8453,
            "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
            "assetSymbol": "USDC",
            "assetDecimals": 6,
            "payTo": "0x49db736f346BD2f68E9b97069E2E090222d75c82",
            "maxTimeoutSeconds": 300,
            "extra": {
              "name": "USD Coin",
              "version": "2"
            },
            "facilitator": "https://facilitator.payai.network"
          }
        },
        {
          "id": "readable.batch",
          "service": "readable",
          "url": "https://readable.x.c00l.site/batch",
          "path": "/batch",
          "method": "POST",
          "methods": [
            "POST"
          ],
          "title": "Extract up to 20 URLs at once",
          "description": "Concurrent /extract across 1-20 URLs. Charged $0.003 x urls.length, so the amount is derivable from the request before you pay and one signature covers the whole batch. Each result carries its own ok/error.",
          "price": {
            "usd": "$0.003",
            "usdAmount": "0.003",
            "atomicAmount": "3000",
            "asset": "USDC",
            "assetDecimals": 6,
            "per": {
              "basis": "per-item",
              "field": "urls",
              "unit": "URL",
              "maxItems": 20,
              "formula": "atomicAmount = 3000 * len(body.urls)",
              "note": "The total is derivable from the request, so the 402 challenge already states the exact amount and one signature covers the whole batch."
            }
          },
          "input": {
            "contentType": "application/json",
            "required": [
              "urls"
            ],
            "optional": [
              "format",
              "includeImages",
              "includeLinks",
              "maxChars"
            ],
            "fields": {
              "urls": "string[] — 1..20 absolute http(s) URLs.",
              "format": "enum markdown|text|html (default markdown).",
              "includeImages": "boolean (default true).",
              "includeLinks": "boolean (default true).",
              "maxChars": "integer — per-document truncation."
            },
            "example": {
              "urls": [
                "https://example.com",
                "https://example.org"
              ],
              "format": "markdown"
            }
          },
          "output": {
            "contentType": "application/json",
            "shape": "{ count, results: [{ ok, url, ...extract | error }] }"
          },
          "curl": "curl -s https://readable.x.c00l.site/batch \\\n  -H 'content-type: application/json' \\\n  -d '{\"urls\":[\"https://example.com\",\"https://example.org\"],\"format\":\"markdown\"}'",
          "x402": {
            "scheme": "exact",
            "network": "eip155:8453",
            "networkName": "Base mainnet",
            "chainId": 8453,
            "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
            "assetSymbol": "USDC",
            "assetDecimals": 6,
            "payTo": "0x49db736f346BD2f68E9b97069E2E090222d75c82",
            "maxTimeoutSeconds": 300,
            "extra": {
              "name": "USD Coin",
              "version": "2"
            },
            "facilitator": "https://facilitator.payai.network"
          }
        }
      ]
    },
    {
      "id": "dataforge",
      "baseUrl": "https://dataforge.x.c00l.site",
      "tagline": "Deterministic data conversion, query, schema and diff",
      "description": "Nine formats in, nine out — CSV, TSV, JSON, JSONL, YAML, TOML, XML, INI, Java properties — with RFC 4180 CSV, YAML anchors, TOML v1.0.0 and XML attributes/CDATA handled properly. Plus JSONPath querying, JSON Schema 2020-12 inference and validation, a declarative transform pipeline and RFC 6902 diff/patch. No model in the loop, so it is exact and repeatable.",
      "tags": [
        "data",
        "csv",
        "yaml",
        "json-schema"
      ],
      "openapi": "https://dataforge.x.c00l.site/openapi.json",
      "docs": "https://dataforge.x.c00l.site",
      "priceRange": {
        "min": "$0.002",
        "max": "$0.003"
      },
      "freeEndpoints": [
        {
          "method": "GET",
          "path": "/",
          "url": "https://dataforge.x.c00l.site/",
          "description": "HTML documentation",
          "price": "$0.00"
        },
        {
          "method": "GET",
          "path": "/health",
          "url": "https://dataforge.x.c00l.site/health",
          "description": "Liveness probe",
          "price": "$0.00"
        },
        {
          "method": "GET",
          "path": "/openapi.json",
          "url": "https://dataforge.x.c00l.site/openapi.json",
          "description": "OpenAPI 3.1 spec",
          "price": "$0.00"
        },
        {
          "method": "GET",
          "path": "/formats",
          "url": "https://dataforge.x.c00l.site/formats",
          "description": "Supported formats, transform ops and hard limits",
          "price": "$0.00"
        },
        {
          "method": "POST",
          "path": "/detect",
          "url": "https://dataforge.x.c00l.site/detect",
          "description": "Sniff the format of a document",
          "price": "$0.00"
        }
      ],
      "endpoints": [
        {
          "id": "dataforge.convert",
          "service": "dataforge",
          "url": "https://dataforge.x.c00l.site/convert",
          "path": "/convert",
          "method": "POST",
          "methods": [
            "POST"
          ],
          "title": "Convert between formats",
          "description": "Convert a document between any two of json, jsonl, csv, tsv, yaml, toml, xml, ini and properties. Handles quoted CSV fields with embedded commas/newlines, BOMs, CRLF and ragged rows.",
          "price": {
            "usd": "$0.002",
            "usdAmount": "0.002",
            "atomicAmount": "2000",
            "asset": "USDC",
            "assetDecimals": 6,
            "per": {
              "basis": "flat",
              "note": "One flat amount per call, regardless of input size."
            }
          },
          "input": {
            "contentType": "application/json",
            "required": [
              "data",
              "to"
            ],
            "optional": [
              "from",
              "options",
              "fromOptions",
              "toOptions"
            ],
            "fields": {
              "data": "string — the source document.",
              "to": "enum json|jsonl|csv|tsv|yaml|toml|xml|ini|properties.",
              "from": "same enum, or auto (default) to sniff it.",
              "options": "object — shared parser/serialiser options (delimiter, indent, rootName...).",
              "fromOptions": "object — parser options for the source format only.",
              "toOptions": "object — serialiser options for the target format only."
            },
            "example": {
              "data": "name,age\nada,36",
              "from": "csv",
              "to": "json"
            }
          },
          "output": {
            "contentType": "application/json",
            "shape": "{ data, from, to, bytes, rows }"
          },
          "curl": "curl -s https://dataforge.x.c00l.site/convert \\\n  -H 'content-type: application/json' \\\n  -d '{\"data\":\"name,age\\nada,36\",\"from\":\"csv\",\"to\":\"json\"}'",
          "x402": {
            "scheme": "exact",
            "network": "eip155:8453",
            "networkName": "Base mainnet",
            "chainId": 8453,
            "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
            "assetSymbol": "USDC",
            "assetDecimals": 6,
            "payTo": "0x49db736f346BD2f68E9b97069E2E090222d75c82",
            "maxTimeoutSeconds": 300,
            "extra": {
              "name": "USD Coin",
              "version": "2"
            },
            "facilitator": "https://facilitator.payai.network"
          }
        },
        {
          "id": "dataforge.query",
          "service": "dataforge",
          "url": "https://dataforge.x.c00l.site/query",
          "path": "/query",
          "method": "POST",
          "methods": [
            "POST"
          ],
          "title": "JSONPath / JSON Pointer query",
          "description": "Query any supported format with JSONPath — recursive descent, unions, slices, negative indices, filter expressions — or with an RFC 6901 JSON Pointer. Output in any format.",
          "price": {
            "usd": "$0.002",
            "usdAmount": "0.002",
            "atomicAmount": "2000",
            "asset": "USDC",
            "assetDecimals": 6,
            "per": {
              "basis": "flat",
              "note": "One flat amount per call, regardless of input size."
            }
          },
          "input": {
            "contentType": "application/json",
            "required": [
              "data",
              "path"
            ],
            "optional": [
              "from",
              "syntax",
              "limit",
              "pathStyle",
              "to",
              "options"
            ],
            "fields": {
              "data": "string — the source document.",
              "path": "string — e.g. `$.items[?(@.price<10)].name` or `/items/0/name`.",
              "syntax": "enum jsonpath|pointer (default jsonpath).",
              "limit": "integer — cap matches.",
              "to": "output format.",
              "from": "source format enum, or auto (default) to sniff it.",
              "pathStyle": "enum dot|bracket — how returned match paths are rendered.",
              "options": "object — shared parser/serialiser options."
            },
            "example": {
              "data": "{\"items\":[{\"name\":\"a\",\"price\":5}]}",
              "from": "json",
              "path": "$.items[?(@.price<10)].name"
            }
          },
          "output": {
            "contentType": "application/json",
            "shape": "{ matches, count, paths }"
          },
          "curl": "curl -s https://dataforge.x.c00l.site/query \\\n  -H 'content-type: application/json' \\\n  -d '{\n       \"data\": \"{\\\"items\\\":[{\\\"name\\\":\\\"a\\\",\\\"price\\\":5}]}\",\n       \"from\": \"json\",\n       \"path\": \"$.items[?(@.price<10)].name\"\n     }'",
          "x402": {
            "scheme": "exact",
            "network": "eip155:8453",
            "networkName": "Base mainnet",
            "chainId": 8453,
            "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
            "assetSymbol": "USDC",
            "assetDecimals": 6,
            "payTo": "0x49db736f346BD2f68E9b97069E2E090222d75c82",
            "maxTimeoutSeconds": 300,
            "extra": {
              "name": "USD Coin",
              "version": "2"
            },
            "facilitator": "https://facilitator.payai.network"
          }
        },
        {
          "id": "dataforge.schema",
          "service": "dataforge",
          "url": "https://dataforge.x.c00l.site/schema",
          "path": "/schema",
          "method": "POST",
          "methods": [
            "POST"
          ],
          "title": "Infer or validate a JSON Schema",
          "description": "Without `validate`, infers a draft 2020-12 schema: array elements merged, a property marked required only when present in every sample, enums when a field has few repeated values, formats detected. With `validate`, checks the document and returns per-pointer errors.",
          "price": {
            "usd": "$0.003",
            "usdAmount": "0.003",
            "atomicAmount": "3000",
            "asset": "USDC",
            "assetDecimals": 6,
            "per": {
              "basis": "flat",
              "note": "One flat amount per call, regardless of input size."
            }
          },
          "input": {
            "contentType": "application/json",
            "required": [
              "data"
            ],
            "optional": [
              "from",
              "validate",
              "options"
            ],
            "fields": {
              "data": "string — the document.",
              "validate": "object — a JSON Schema to check against. Omit to infer instead.",
              "from": "source format enum, or auto (default) to sniff it.",
              "options": "object — shared parser options."
            },
            "example": {
              "data": "{\"id\":1,\"email\":\"a@b.com\"}",
              "from": "json"
            }
          },
          "output": {
            "contentType": "application/json",
            "shape": "{ schema } or { valid, errors: [{ pointer, message, keyword }] }"
          },
          "curl": "curl -s https://dataforge.x.c00l.site/schema \\\n  -H 'content-type: application/json' \\\n  -d '{\"data\":\"{\\\"id\\\":1,\\\"email\\\":\\\"a@b.com\\\"}\",\"from\":\"json\"}'",
          "x402": {
            "scheme": "exact",
            "network": "eip155:8453",
            "networkName": "Base mainnet",
            "chainId": 8453,
            "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
            "assetSymbol": "USDC",
            "assetDecimals": 6,
            "payTo": "0x49db736f346BD2f68E9b97069E2E090222d75c82",
            "maxTimeoutSeconds": 300,
            "extra": {
              "name": "USD Coin",
              "version": "2"
            },
            "facilitator": "https://facilitator.payai.network"
          }
        },
        {
          "id": "dataforge.transform",
          "service": "dataforge",
          "url": "https://dataforge.x.c00l.site/transform",
          "path": "/transform",
          "method": "POST",
          "methods": [
            "POST"
          ],
          "title": "Declarative transform pipeline",
          "description": "Reshape tabular or nested data with an ordered pipeline: select, drop, rename, filter, compute, cast, sort, groupBy, flatten, unflatten, pivot, unpivot, dedupe, limit, offset. Read CSV, group and pivot it, write YAML, in one call.",
          "price": {
            "usd": "$0.003",
            "usdAmount": "0.003",
            "atomicAmount": "3000",
            "asset": "USDC",
            "assetDecimals": 6,
            "per": {
              "basis": "flat",
              "note": "One flat amount per call, regardless of input size."
            }
          },
          "input": {
            "contentType": "application/json",
            "required": [
              "data",
              "pipeline"
            ],
            "optional": [
              "from",
              "to",
              "options",
              "toOptions"
            ],
            "fields": {
              "data": "string — the source document.",
              "pipeline": "object[] — ordered ops, each { op, ...args }.",
              "to": "output format.",
              "from": "source format enum, or auto (default) to sniff it.",
              "options": "object — shared parser options.",
              "toOptions": "object — serialiser options for the target format."
            },
            "example": {
              "data": "region,sales\neu,10\neu,5\nus,7",
              "from": "csv",
              "pipeline": [
                {
                  "op": "groupBy",
                  "by": [
                    "region"
                  ],
                  "agg": {
                    "sales": "sum"
                  }
                }
              ],
              "to": "json"
            }
          },
          "output": {
            "contentType": "application/json",
            "shape": "{ data, rows, applied }"
          },
          "curl": "curl -s https://dataforge.x.c00l.site/transform \\\n  -H 'content-type: application/json' \\\n  -d '{\n       \"data\": \"region,sales\\neu,10\\neu,5\\nus,7\",\n       \"from\": \"csv\",\n       \"pipeline\": [\n         {\n           \"op\": \"groupBy\",\n           \"by\": [\n             \"region\"\n           ],\n           \"agg\": {\n             \"sales\": \"sum\"\n           }\n         }\n       ],\n       \"to\": \"json\"\n     }'",
          "x402": {
            "scheme": "exact",
            "network": "eip155:8453",
            "networkName": "Base mainnet",
            "chainId": 8453,
            "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
            "assetSymbol": "USDC",
            "assetDecimals": 6,
            "payTo": "0x49db736f346BD2f68E9b97069E2E090222d75c82",
            "maxTimeoutSeconds": 300,
            "extra": {
              "name": "USD Coin",
              "version": "2"
            },
            "facilitator": "https://facilitator.payai.network"
          }
        },
        {
          "id": "dataforge.diff",
          "service": "dataforge",
          "url": "https://dataforge.x.c00l.site/diff",
          "path": "/diff",
          "method": "POST",
          "methods": [
            "POST"
          ],
          "title": "Structural diff, as RFC 6902",
          "description": "Diff two documents of any supported format and get a JSON Patch that turns `a` into `b`, plus a human-readable summary and per-op counts. Arrays are diffed with an LCS, so a single insertion produces one add rather than a cascade of replaces.",
          "price": {
            "usd": "$0.002",
            "usdAmount": "0.002",
            "atomicAmount": "2000",
            "asset": "USDC",
            "assetDecimals": 6,
            "per": {
              "basis": "flat",
              "note": "One flat amount per call, regardless of input size."
            }
          },
          "input": {
            "contentType": "application/json",
            "required": [
              "a",
              "b"
            ],
            "optional": [
              "from",
              "fromA",
              "fromB",
              "options"
            ],
            "fields": {
              "a": "string — the left document.",
              "b": "string — the right document.",
              "fromA": "format of `a` (default auto).",
              "fromB": "format of `b` (default auto).",
              "from": "format of both documents, if they share one (default auto).",
              "options": "object — shared parser options."
            },
            "example": {
              "a": "{\"v\":1,\"name\":\"x\"}",
              "b": "{\"v\":2,\"name\":\"x\"}"
            }
          },
          "output": {
            "contentType": "application/json",
            "shape": "{ patch: [RFC6902 ops], summary, counts: { add, remove, replace } }"
          },
          "curl": "curl -s https://dataforge.x.c00l.site/diff \\\n  -H 'content-type: application/json' \\\n  -d '{\"a\":\"{\\\"v\\\":1,\\\"name\\\":\\\"x\\\"}\",\"b\":\"{\\\"v\\\":2,\\\"name\\\":\\\"x\\\"}\"}'",
          "x402": {
            "scheme": "exact",
            "network": "eip155:8453",
            "networkName": "Base mainnet",
            "chainId": 8453,
            "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
            "assetSymbol": "USDC",
            "assetDecimals": 6,
            "payTo": "0x49db736f346BD2f68E9b97069E2E090222d75c82",
            "maxTimeoutSeconds": 300,
            "extra": {
              "name": "USD Coin",
              "version": "2"
            },
            "facilitator": "https://facilitator.payai.network"
          }
        },
        {
          "id": "dataforge.patch",
          "service": "dataforge",
          "url": "https://dataforge.x.c00l.site/patch",
          "path": "/patch",
          "method": "POST",
          "methods": [
            "POST"
          ],
          "title": "Apply an RFC 6902 patch",
          "description": "Apply add, remove, replace, move, copy and test operations in order with strict pointer resolution. A failure names the operation index and the reason. Output in any format.",
          "price": {
            "usd": "$0.002",
            "usdAmount": "0.002",
            "atomicAmount": "2000",
            "asset": "USDC",
            "assetDecimals": 6,
            "per": {
              "basis": "flat",
              "note": "One flat amount per call, regardless of input size."
            }
          },
          "input": {
            "contentType": "application/json",
            "required": [
              "data",
              "patch"
            ],
            "optional": [
              "from",
              "to",
              "options",
              "toOptions"
            ],
            "fields": {
              "data": "string — the document to patch.",
              "patch": "object[] — RFC 6902 operations.",
              "to": "output format.",
              "from": "source format enum, or auto (default) to sniff it.",
              "options": "object — shared parser options.",
              "toOptions": "object — serialiser options for the target format."
            },
            "example": {
              "data": "{\"v\":1}",
              "patch": [
                {
                  "op": "replace",
                  "path": "/v",
                  "value": 2
                }
              ]
            }
          },
          "output": {
            "contentType": "application/json",
            "shape": "{ data, applied }"
          },
          "curl": "curl -s https://dataforge.x.c00l.site/patch \\\n  -H 'content-type: application/json' \\\n  -d '{\"data\":\"{\\\"v\\\":1}\",\"patch\":[{\"op\":\"replace\",\"path\":\"/v\",\"value\":2}]}'",
          "x402": {
            "scheme": "exact",
            "network": "eip155:8453",
            "networkName": "Base mainnet",
            "chainId": 8453,
            "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
            "assetSymbol": "USDC",
            "assetDecimals": 6,
            "payTo": "0x49db736f346BD2f68E9b97069E2E090222d75c82",
            "maxTimeoutSeconds": 300,
            "extra": {
              "name": "USD Coin",
              "version": "2"
            },
            "facilitator": "https://facilitator.payai.network"
          }
        }
      ]
    },
    {
      "id": "netintel",
      "baseUrl": "https://netintel.x.c00l.site",
      "tagline": "DNS, email deliverability, TLS and IP intelligence",
      "description": "Network reconnaissance from inside the Cloudflare edge: DNS-over-HTTPS against eleven public resolvers, a raw TLS handshake over TCP sockets that can read certificates a normal HTTPS client refuses to look at (expired, self-signed, wrong host), and edge metadata. If a lookup fails the field is null and warnings[] says why — never a plausible guess.",
      "tags": [
        "dns",
        "tls",
        "email",
        "asn"
      ],
      "openapi": "https://netintel.x.c00l.site/openapi.json",
      "docs": "https://netintel.x.c00l.site",
      "priceRange": {
        "min": "$0.002",
        "max": "$0.005"
      },
      "freeEndpoints": [
        {
          "method": "GET",
          "path": "/",
          "url": "https://netintel.x.c00l.site/",
          "description": "HTML documentation",
          "price": "$0.00"
        },
        {
          "method": "GET",
          "path": "/health",
          "url": "https://netintel.x.c00l.site/health",
          "description": "Liveness probe",
          "price": "$0.00"
        },
        {
          "method": "GET",
          "path": "/openapi.json",
          "url": "https://netintel.x.c00l.site/openapi.json",
          "description": "OpenAPI 3.1 spec",
          "price": "$0.00"
        },
        {
          "method": "GET",
          "path": "/whoami",
          "url": "https://netintel.x.c00l.site/whoami",
          "description": "Your IP, geo, ASN, TLS version and cipher, HTTP protocol, Cloudflare colo and TCP RTT",
          "price": "$0.00"
        }
      ],
      "endpoints": [
        {
          "id": "netintel.dns",
          "service": "netintel",
          "url": "https://netintel.x.c00l.site/dns",
          "path": "/dns",
          "method": "POST",
          "methods": [
            "POST"
          ],
          "title": "DNS lookup with DNSSEC + cross-check",
          "description": "Resolve up to 12 record types at once, report DNSSEC validation status, and cross-check the answer against a second independent resolver so a poisoned or stale answer is visible.",
          "price": {
            "usd": "$0.002",
            "usdAmount": "0.002",
            "atomicAmount": "2000",
            "asset": "USDC",
            "assetDecimals": 6,
            "per": {
              "basis": "flat",
              "note": "One flat amount per call, regardless of input size."
            }
          },
          "input": {
            "contentType": "application/json",
            "required": [
              "name"
            ],
            "optional": [
              "types",
              "dnssec",
              "crossCheck"
            ],
            "fields": {
              "name": "string — the domain to resolve.",
              "types": "string[] — up to 12 of A, AAAA, MX, TXT, NS, CNAME, SOA, PTR, SRV, CAA, DS, DNSKEY, TLSA, SVCB, HTTPS... (default A, AAAA, MX, TXT, NS).",
              "dnssec": "boolean — request and report DNSSEC status.",
              "crossCheck": "boolean — compare against a second resolver."
            },
            "example": {
              "name": "cloudflare.com",
              "types": [
                "A",
                "MX",
                "TXT"
              ]
            }
          },
          "output": {
            "contentType": "application/json",
            "shape": "{ name, records: { A: [...], MX: [...] }, dnssec, crossCheck, warnings }"
          },
          "curl": "curl -s https://netintel.x.c00l.site/dns \\\n  -H 'content-type: application/json' \\\n  -d '{\"name\":\"cloudflare.com\",\"types\":[\"A\",\"MX\",\"TXT\"]}'",
          "x402": {
            "scheme": "exact",
            "network": "eip155:8453",
            "networkName": "Base mainnet",
            "chainId": 8453,
            "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
            "assetSymbol": "USDC",
            "assetDecimals": 6,
            "payTo": "0x49db736f346BD2f68E9b97069E2E090222d75c82",
            "maxTimeoutSeconds": 300,
            "extra": {
              "name": "USD Coin",
              "version": "2"
            },
            "facilitator": "https://facilitator.payai.network"
          }
        },
        {
          "id": "netintel.email",
          "service": "netintel",
          "url": "https://netintel.x.c00l.site/email",
          "path": "/email",
          "method": "POST",
          "methods": [
            "POST"
          ],
          "title": "Email deliverability audit",
          "description": "Audit an address or its domain without sending anything: MX records, SPF policy and lookup-count budget, DMARC policy and alignment, DKIM selector discovery, disposable and role-account detection, and syntax validity.",
          "price": {
            "usd": "$0.003",
            "usdAmount": "0.003",
            "atomicAmount": "3000",
            "asset": "USDC",
            "assetDecimals": 6,
            "per": {
              "basis": "flat",
              "note": "One flat amount per call, regardless of input size."
            }
          },
          "input": {
            "contentType": "application/json",
            "required": [
              "email"
            ],
            "optional": [],
            "fields": {
              "email": "string — an address (the domain is audited)."
            },
            "example": {
              "email": "hello@stripe.com"
            }
          },
          "output": {
            "contentType": "application/json",
            "shape": "{ email, domain, valid, mx, spf, dmarc, dkim, disposable, role, score, warnings }"
          },
          "curl": "curl -s https://netintel.x.c00l.site/email \\\n  -H 'content-type: application/json' \\\n  -d '{\"email\":\"hello@stripe.com\"}'",
          "x402": {
            "scheme": "exact",
            "network": "eip155:8453",
            "networkName": "Base mainnet",
            "chainId": 8453,
            "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
            "assetSymbol": "USDC",
            "assetDecimals": 6,
            "payTo": "0x49db736f346BD2f68E9b97069E2E090222d75c82",
            "maxTimeoutSeconds": 300,
            "extra": {
              "name": "USD Coin",
              "version": "2"
            },
            "facilitator": "https://facilitator.payai.network"
          }
        },
        {
          "id": "netintel.tls",
          "service": "netintel",
          "url": "https://netintel.x.c00l.site/tls",
          "path": "/tls",
          "method": "POST",
          "methods": [
            "POST"
          ],
          "title": "TLS certificate + security-header grade",
          "description": "Raw TLS handshake over a TCP socket, so it reads expired, self-signed and wrong-host certificates that a normal client refuses. Returns the chain, validity window, SANs, signature algorithm, negotiated versions, plus HSTS/CSP/X-Frame security headers, graded A-F.",
          "price": {
            "usd": "$0.004",
            "usdAmount": "0.004",
            "atomicAmount": "4000",
            "asset": "USDC",
            "assetDecimals": 6,
            "per": {
              "basis": "flat",
              "note": "One flat amount per call, regardless of input size."
            }
          },
          "input": {
            "contentType": "application/json",
            "required": [
              "host"
            ],
            "optional": [
              "port",
              "probeVersions",
              "httpHeaders"
            ],
            "fields": {
              "host": "string — hostname to connect to.",
              "port": "integer (default 443).",
              "probeVersions": "boolean — probe which TLS versions are accepted.",
              "httpHeaders": "boolean — fetch and grade security headers too."
            },
            "example": {
              "host": "badssl.com",
              "httpHeaders": true
            }
          },
          "output": {
            "contentType": "application/json",
            "shape": "{ host, grade, certificate: { subject, issuer, notBefore, notAfter, sans, ... }, chain, versions, headers, findings }"
          },
          "curl": "curl -s https://netintel.x.c00l.site/tls \\\n  -H 'content-type: application/json' \\\n  -d '{\"host\":\"badssl.com\",\"httpHeaders\":true}'",
          "x402": {
            "scheme": "exact",
            "network": "eip155:8453",
            "networkName": "Base mainnet",
            "chainId": 8453,
            "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
            "assetSymbol": "USDC",
            "assetDecimals": 6,
            "payTo": "0x49db736f346BD2f68E9b97069E2E090222d75c82",
            "maxTimeoutSeconds": 300,
            "extra": {
              "name": "USD Coin",
              "version": "2"
            },
            "facilitator": "https://facilitator.payai.network"
          }
        },
        {
          "id": "netintel.ip",
          "service": "netintel",
          "url": "https://netintel.x.c00l.site/ip",
          "path": "/ip",
          "method": "POST",
          "methods": [
            "POST"
          ],
          "title": "IP / CIDR / hostname intelligence",
          "description": "Geolocation, ASN and AS organisation, reverse DNS, network class (datacenter, residential, Tor, cloud provider) and DNS blocklist status for an IPv4, IPv6, CIDR block or hostname.",
          "price": {
            "usd": "$0.002",
            "usdAmount": "0.002",
            "atomicAmount": "2000",
            "asset": "USDC",
            "assetDecimals": 6,
            "per": {
              "basis": "flat",
              "note": "One flat amount per call, regardless of input size."
            }
          },
          "input": {
            "contentType": "application/json",
            "required": [
              "ip"
            ],
            "optional": [
              "dnsbl"
            ],
            "fields": {
              "ip": "string — IPv4, IPv6, CIDR block, or hostname. Max 260 chars.",
              "dnsbl": "boolean (default true) — query DNS blocklists (public IPv4 only)."
            },
            "example": {
              "ip": "8.8.8.8"
            }
          },
          "output": {
            "contentType": "application/json",
            "shape": "{ ip, version, asn, asOrg, geo, reverse, kind, dnsbl, warnings }"
          },
          "curl": "curl -s https://netintel.x.c00l.site/ip \\\n  -H 'content-type: application/json' \\\n  -d '{\"ip\":\"8.8.8.8\"}'",
          "x402": {
            "scheme": "exact",
            "network": "eip155:8453",
            "networkName": "Base mainnet",
            "chainId": 8453,
            "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
            "assetSymbol": "USDC",
            "assetDecimals": 6,
            "payTo": "0x49db736f346BD2f68E9b97069E2E090222d75c82",
            "maxTimeoutSeconds": 300,
            "extra": {
              "name": "USD Coin",
              "version": "2"
            },
            "facilitator": "https://facilitator.payai.network"
          }
        },
        {
          "id": "netintel.propagation",
          "service": "netintel",
          "url": "https://netintel.x.c00l.site/propagation",
          "path": "/propagation",
          "method": "POST",
          "methods": [
            "POST"
          ],
          "title": "DNS propagation across resolvers",
          "description": "Query one record across many public resolvers concurrently and report which ones agree. The call to make after a DNS change, to see how far it has actually spread.",
          "price": {
            "usd": "$0.005",
            "usdAmount": "0.005",
            "atomicAmount": "5000",
            "asset": "USDC",
            "assetDecimals": 6,
            "per": {
              "basis": "flat",
              "note": "One flat amount per call, regardless of input size."
            }
          },
          "input": {
            "contentType": "application/json",
            "required": [
              "name"
            ],
            "optional": [
              "type",
              "resolvers"
            ],
            "fields": {
              "name": "string — the record name.",
              "type": "enum A|AAAA|MX|TXT|NS|CNAME|SOA|CAA|SRV|... (default A).",
              "resolvers": "string[] — subset of resolvers to query."
            },
            "example": {
              "name": "example.com",
              "type": "A"
            }
          },
          "output": {
            "contentType": "application/json",
            "shape": "{ name, type, consensus, agreement, resolvers: [{ name, answer, ms, ok }] }"
          },
          "curl": "curl -s https://netintel.x.c00l.site/propagation \\\n  -H 'content-type: application/json' \\\n  -d '{\"name\":\"example.com\",\"type\":\"A\"}'",
          "x402": {
            "scheme": "exact",
            "network": "eip155:8453",
            "networkName": "Base mainnet",
            "chainId": 8453,
            "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
            "assetSymbol": "USDC",
            "assetDecimals": 6,
            "payTo": "0x49db736f346BD2f68E9b97069E2E090222d75c82",
            "maxTimeoutSeconds": 300,
            "extra": {
              "name": "USD Coin",
              "version": "2"
            },
            "facilitator": "https://facilitator.payai.network"
          }
        }
      ]
    },
    {
      "id": "aisearch",
      "baseUrl": "https://aisearch.x.c00l.site",
      "tagline": "Web search with citations that cannot be invented",
      "description": "Every endpoint returns Markdown with inline [n] markers plus a citations[] array. The markers are rendered from the search API's own source attribution rather than written by the model, so a fabricated citation is structurally impossible. Returns an explicit \"could not find a reliable source\" instead of guessing.",
      "tags": [
        "search",
        "citations",
        "research",
        "ai"
      ],
      "openapi": "https://aisearch.x.c00l.site/openapi.json",
      "docs": "https://aisearch.x.c00l.site",
      "priceRange": {
        "min": "$0.008",
        "max": "$0.25"
      },
      "freeEndpoints": [
        {
          "method": "GET",
          "path": "/",
          "url": "https://aisearch.x.c00l.site/",
          "description": "HTML documentation",
          "price": "$0.00"
        },
        {
          "method": "GET",
          "path": "/health",
          "url": "https://aisearch.x.c00l.site/health",
          "description": "Liveness probe",
          "price": "$0.00"
        },
        {
          "method": "GET",
          "path": "/openapi.json",
          "url": "https://aisearch.x.c00l.site/openapi.json",
          "description": "OpenAPI 3.1 spec",
          "price": "$0.00"
        }
      ],
      "endpoints": [
        {
          "id": "aisearch.answer",
          "service": "aisearch",
          "url": "https://aisearch.x.c00l.site/answer",
          "path": "/answer",
          "method": "POST",
          "methods": [
            "POST"
          ],
          "title": "Fast cited factual answer",
          "description": "Single-shot factual lookup: one short cited paragraph, no report structure. The cheap call for grounding a single fact. Flags a false premise in the question rather than answering it, and says so plainly when no reliable source exists.",
          "price": {
            "usd": "$0.008",
            "usdAmount": "0.008",
            "atomicAmount": "8000",
            "asset": "USDC",
            "assetDecimals": 6,
            "per": {
              "basis": "flat",
              "note": "One flat amount per call, regardless of input size."
            }
          },
          "input": {
            "contentType": "application/json",
            "required": [
              "query"
            ],
            "optional": [
              "recency"
            ],
            "fields": {
              "query": "string — the question.",
              "recency": "enum day|week|month|year|any — restrict source age."
            },
            "example": {
              "query": "What is the current block time on Base?"
            }
          },
          "output": {
            "contentType": "application/json",
            "shape": "{ answer, citations: [{ n, url, title, snippet }], confidence, falsePremise }"
          },
          "curl": "curl -s https://aisearch.x.c00l.site/answer \\\n  -H 'content-type: application/json' \\\n  -d '{\"query\":\"What is the current block time on Base?\"}'",
          "x402": {
            "scheme": "exact",
            "network": "eip155:8453",
            "networkName": "Base mainnet",
            "chainId": 8453,
            "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
            "assetSymbol": "USDC",
            "assetDecimals": 6,
            "payTo": "0x49db736f346BD2f68E9b97069E2E090222d75c82",
            "maxTimeoutSeconds": 300,
            "extra": {
              "name": "USD Coin",
              "version": "2"
            },
            "facilitator": "https://facilitator.payai.network"
          }
        },
        {
          "id": "aisearch.search",
          "service": "aisearch",
          "url": "https://aisearch.x.c00l.site/search",
          "path": "/search",
          "method": "POST",
          "methods": [
            "POST"
          ],
          "title": "Cited search with synthesised answer",
          "description": "Searches the web and returns a cited Markdown answer, the citation list, the raw result set and follow-up questions. depth=standard additionally searches for evidence against the working answer before committing to it.",
          "price": {
            "usd": "$0.02",
            "usdAmount": "0.02",
            "atomicAmount": "20000",
            "asset": "USDC",
            "assetDecimals": 6,
            "per": {
              "basis": "flat",
              "note": "One flat amount per call, regardless of input size."
            }
          },
          "input": {
            "contentType": "application/json",
            "required": [
              "query"
            ],
            "optional": [
              "depth",
              "maxResults",
              "recency",
              "includeRaw"
            ],
            "fields": {
              "query": "string — the search query.",
              "depth": "enum quick|standard (default quick). standard runs a counter-evidence pass.",
              "maxResults": "integer — number of sources to consider.",
              "recency": "enum day|week|month|year|any.",
              "includeRaw": "boolean — include the unsynthesised result set."
            },
            "example": {
              "query": "x402 protocol adoption 2026",
              "depth": "standard"
            }
          },
          "output": {
            "contentType": "application/json",
            "shape": "{ answer, citations, results, followUps }"
          },
          "curl": "curl -s https://aisearch.x.c00l.site/search \\\n  -H 'content-type: application/json' \\\n  -d '{\"query\":\"x402 protocol adoption 2026\",\"depth\":\"standard\"}'",
          "x402": {
            "scheme": "exact",
            "network": "eip155:8453",
            "networkName": "Base mainnet",
            "chainId": 8453,
            "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
            "assetSymbol": "USDC",
            "assetDecimals": 6,
            "payTo": "0x49db736f346BD2f68E9b97069E2E090222d75c82",
            "maxTimeoutSeconds": 300,
            "extra": {
              "name": "USD Coin",
              "version": "2"
            },
            "facilitator": "https://facilitator.payai.network"
          }
        },
        {
          "id": "aisearch.compare",
          "service": "aisearch",
          "url": "https://aisearch.x.c00l.site/compare",
          "path": "/compare",
          "method": "POST",
          "methods": [
            "POST"
          ],
          "title": "Researched side-by-side comparison",
          "description": "Researches 2-6 subjects independently, then returns a verdict, a Markdown comparison table, the differences that would actually change a decision, caveats, and the same data as a structured JSON matrix you can sort and filter.",
          "price": {
            "usd": "$0.03",
            "usdAmount": "0.03",
            "atomicAmount": "30000",
            "asset": "USDC",
            "assetDecimals": 6,
            "per": {
              "basis": "flat",
              "note": "One flat amount per call, regardless of input size."
            }
          },
          "input": {
            "contentType": "application/json",
            "required": [
              "subjects"
            ],
            "optional": [
              "criteria",
              "recency"
            ],
            "fields": {
              "subjects": "string[] — 2..6 things to compare.",
              "criteria": "string[] — dimensions to compare on. Inferred if omitted.",
              "recency": "enum day|week|month|year|any."
            },
            "example": {
              "subjects": [
                "Cloudflare Workers",
                "AWS Lambda"
              ],
              "criteria": [
                "cold start",
                "pricing"
              ]
            }
          },
          "output": {
            "contentType": "application/json",
            "shape": "{ verdict, table (markdown), matrix, deciders, caveats, citations }"
          },
          "curl": "curl -s https://aisearch.x.c00l.site/compare \\\n  -H 'content-type: application/json' \\\n  -d '{\n       \"subjects\": [\n         \"Cloudflare Workers\",\n         \"AWS Lambda\"\n       ],\n       \"criteria\": [\n         \"cold start\",\n         \"pricing\"\n       ]\n     }'",
          "x402": {
            "scheme": "exact",
            "network": "eip155:8453",
            "networkName": "Base mainnet",
            "chainId": 8453,
            "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
            "assetSymbol": "USDC",
            "assetDecimals": 6,
            "payTo": "0x49db736f346BD2f68E9b97069E2E090222d75c82",
            "maxTimeoutSeconds": 300,
            "extra": {
              "name": "USD Coin",
              "version": "2"
            },
            "facilitator": "https://facilitator.payai.network"
          }
        },
        {
          "id": "aisearch.research",
          "service": "aisearch",
          "url": "https://aisearch.x.c00l.site/research",
          "path": "/research",
          "method": "POST",
          "methods": [
            "POST"
          ],
          "title": "Agentic deep research report",
          "description": "Multi-step agentic investigation: plans sub-questions, searches each, opens and reads promising pages with an SSRF-hardened reader, identifies its own gaps, searches for counter-evidence, then writes a cited report. Minutes, not seconds. The most expensive call in the catalogue and the only one priced above $0.05.",
          "price": {
            "usd": "$0.25",
            "usdAmount": "0.25",
            "atomicAmount": "250000",
            "asset": "USDC",
            "assetDecimals": 6,
            "per": {
              "basis": "flat",
              "note": "One flat amount per call, regardless of input size."
            }
          },
          "input": {
            "contentType": "application/json",
            "required": [
              "query"
            ],
            "optional": [
              "focus",
              "recency",
              "maxTurns"
            ],
            "fields": {
              "query": "string — the research question.",
              "focus": "string — steer what the report should emphasise.",
              "recency": "enum day|week|month|year|any.",
              "maxTurns": "integer — cap the agent loop."
            },
            "example": {
              "query": "State of stablecoin micropayment rails for AI agents",
              "maxTurns": 6
            }
          },
          "output": {
            "contentType": "application/json",
            "shape": "{ report (markdown), plan, findings, gaps, counterEvidence, citations, turns }"
          },
          "curl": "curl -s https://aisearch.x.c00l.site/research \\\n  -H 'content-type: application/json' \\\n  -d '{\n       \"query\": \"State of stablecoin micropayment rails for AI agents\",\n       \"maxTurns\": 6\n     }'",
          "x402": {
            "scheme": "exact",
            "network": "eip155:8453",
            "networkName": "Base mainnet",
            "chainId": 8453,
            "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
            "assetSymbol": "USDC",
            "assetDecimals": 6,
            "payTo": "0x49db736f346BD2f68E9b97069E2E090222d75c82",
            "maxTimeoutSeconds": 300,
            "extra": {
              "name": "USD Coin",
              "version": "2"
            },
            "facilitator": "https://facilitator.payai.network"
          }
        }
      ]
    },
    {
      "id": "structura",
      "baseUrl": "https://structura.x.c00l.site",
      "tagline": "Any source plus your JSON Schema, out comes conforming JSON",
      "description": "Give it a URL, raw HTML, plain text or a document blob and a JSON Schema; the output is validated against your exact schema locally before it is returned. If the model's first attempt does not conform, the per-pointer errors are fed back and it repairs; if it still fails after the attempt cap you get a 5xx and are not charged. Non-conforming data is never returned as a success, and an absent value comes back null rather than invented.",
      "tags": [
        "extraction",
        "json-schema",
        "llm",
        "structured"
      ],
      "openapi": "https://structura.x.c00l.site/openapi.json",
      "docs": "https://structura.x.c00l.site",
      "priceRange": {
        "min": "$0.006",
        "max": "$0.02"
      },
      "freeEndpoints": [
        {
          "method": "GET",
          "path": "/",
          "url": "https://structura.x.c00l.site/",
          "description": "HTML documentation",
          "price": "$0.00"
        },
        {
          "method": "GET",
          "path": "/health",
          "url": "https://structura.x.c00l.site/health",
          "description": "Liveness probe",
          "price": "$0.00"
        },
        {
          "method": "GET",
          "path": "/openapi.json",
          "url": "https://structura.x.c00l.site/openapi.json",
          "description": "OpenAPI 3.1 spec",
          "price": "$0.00"
        },
        {
          "method": "GET",
          "path": "/limits",
          "url": "https://structura.x.c00l.site/limits",
          "description": "Machine-readable limits and prices",
          "price": "$0.00"
        },
        {
          "method": "POST",
          "path": "/validate",
          "url": "https://structura.x.c00l.site/validate",
          "description": "Dry-run: check a JSON Schema is usable, free",
          "price": "$0.00"
        }
      ],
      "endpoints": [
        {
          "id": "structura.extract",
          "service": "structura",
          "url": "https://structura.x.c00l.site/extract",
          "path": "/extract",
          "method": "POST",
          "methods": [
            "POST"
          ],
          "title": "Extract into your schema",
          "description": "Source plus JSON Schema in, conformant JSON out, validated before the response is built. Every response carries per-field confidence and an absent[] list of what the source did not contain.",
          "price": {
            "usd": "$0.015",
            "usdAmount": "0.015",
            "atomicAmount": "15000",
            "asset": "USDC",
            "assetDecimals": 6,
            "per": {
              "basis": "flat",
              "note": "One flat amount per call, regardless of input size."
            }
          },
          "input": {
            "contentType": "application/json",
            "required": [
              "source",
              "schema"
            ],
            "optional": [
              "instructions",
              "strict",
              "maxAttempts",
              "maxChars"
            ],
            "fields": {
              "source": "object — exactly one of { url } | { html } | { text }.",
              "schema": "object — a JSON Schema. Make fields nullable; absent values come back null.",
              "instructions": "string — extra guidance for ambiguous fields.",
              "strict": "boolean — fail rather than widen the schema.",
              "maxAttempts": "integer — repair attempts before giving up (and not charging).",
              "maxChars": "integer — truncate the source."
            },
            "example": {
              "source": {
                "url": "https://example.com/product"
              },
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "price": {
                    "type": [
                      "number",
                      "null"
                    ]
                  }
                }
              }
            }
          },
          "output": {
            "contentType": "application/json",
            "shape": "{ data, confidence: { field: 0..1 }, absent: [...], attempts, validated: true }"
          },
          "curl": "curl -s https://structura.x.c00l.site/extract \\\n  -H 'content-type: application/json' \\\n  -d '{\n       \"source\": {\n         \"url\": \"https://example.com/product\"\n       },\n       \"schema\": {\n         \"type\": \"object\",\n         \"properties\": {\n           \"name\": {\n             \"type\": [\n               \"string\",\n               \"null\"\n             ]\n           },\n           \"price\": {\n             \"type\": [\n               \"number\",\n               \"null\"\n             ]\n           }\n         }\n       }\n     }'",
          "x402": {
            "scheme": "exact",
            "network": "eip155:8453",
            "networkName": "Base mainnet",
            "chainId": 8453,
            "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
            "assetSymbol": "USDC",
            "assetDecimals": 6,
            "payTo": "0x49db736f346BD2f68E9b97069E2E090222d75c82",
            "maxTimeoutSeconds": 300,
            "extra": {
              "name": "USD Coin",
              "version": "2"
            },
            "facilitator": "https://facilitator.payai.network"
          }
        },
        {
          "id": "structura.infer",
          "service": "structura",
          "url": "https://structura.x.c00l.site/infer",
          "path": "/infer",
          "method": "POST",
          "methods": [
            "POST"
          ],
          "title": "Infer a schema and fill it",
          "description": "For \"just structure this for me\". No schema from you: it identifies what the document is, designs the schema a competent engineer would have written, then extracts into it and returns both the schema and the data.",
          "price": {
            "usd": "$0.02",
            "usdAmount": "0.02",
            "atomicAmount": "20000",
            "asset": "USDC",
            "assetDecimals": 6,
            "per": {
              "basis": "flat",
              "note": "One flat amount per call, regardless of input size."
            }
          },
          "input": {
            "contentType": "application/json",
            "required": [
              "source"
            ],
            "optional": [
              "instructions",
              "maxAttempts",
              "maxChars"
            ],
            "fields": {
              "source": "object — exactly one of { url } | { html } | { text }.",
              "instructions": "string — steer the schema design.",
              "maxAttempts": "integer.",
              "maxChars": "integer."
            },
            "example": {
              "source": {
                "url": "https://example.com/invoice"
              }
            }
          },
          "output": {
            "contentType": "application/json",
            "shape": "{ schema, data, documentType, confidence, absent }"
          },
          "curl": "curl -s https://structura.x.c00l.site/infer \\\n  -H 'content-type: application/json' \\\n  -d '{\"source\":{\"url\":\"https://example.com/invoice\"}}'",
          "x402": {
            "scheme": "exact",
            "network": "eip155:8453",
            "networkName": "Base mainnet",
            "chainId": 8453,
            "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
            "assetSymbol": "USDC",
            "assetDecimals": 6,
            "payTo": "0x49db736f346BD2f68E9b97069E2E090222d75c82",
            "maxTimeoutSeconds": 300,
            "extra": {
              "name": "USD Coin",
              "version": "2"
            },
            "facilitator": "https://facilitator.payai.network"
          }
        },
        {
          "id": "structura.table",
          "service": "structura",
          "url": "https://structura.x.c00l.site/table",
          "path": "/table",
          "method": "POST",
          "methods": [
            "POST"
          ],
          "title": "Extract every table",
          "description": "All tabular data in the document as clean arrays of objects, with detected headers, per-column types and units, and RFC 4180 CSV alongside the JSON. Merged and multi-row headers are resolved.",
          "price": {
            "usd": "$0.012",
            "usdAmount": "0.012",
            "atomicAmount": "12000",
            "asset": "USDC",
            "assetDecimals": 6,
            "per": {
              "basis": "flat",
              "note": "One flat amount per call, regardless of input size."
            }
          },
          "input": {
            "contentType": "application/json",
            "required": [
              "source"
            ],
            "optional": [
              "instructions",
              "maxChars"
            ],
            "fields": {
              "source": "object — exactly one of { url } | { html } | { text }.",
              "instructions": "string — e.g. which table you care about.",
              "maxChars": "integer."
            },
            "example": {
              "source": {
                "url": "https://en.wikipedia.org/wiki/List_of_countries_by_GDP_(nominal)"
              }
            }
          },
          "output": {
            "contentType": "application/json",
            "shape": "{ tables: [{ caption, headers, rows, columns: [{ name, type, unit }], csv }] }"
          },
          "curl": "curl -s https://structura.x.c00l.site/table \\\n  -H 'content-type: application/json' \\\n  -d '{\n       \"source\": {\n         \"url\": \"https://en.wikipedia.org/wiki/List_of_countries_by_GDP_(nominal)\"\n       }\n     }'",
          "x402": {
            "scheme": "exact",
            "network": "eip155:8453",
            "networkName": "Base mainnet",
            "chainId": 8453,
            "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
            "assetSymbol": "USDC",
            "assetDecimals": 6,
            "payTo": "0x49db736f346BD2f68E9b97069E2E090222d75c82",
            "maxTimeoutSeconds": 300,
            "extra": {
              "name": "USD Coin",
              "version": "2"
            },
            "facilitator": "https://facilitator.payai.network"
          }
        },
        {
          "id": "structura.batch",
          "service": "structura",
          "url": "https://structura.x.c00l.site/batch",
          "path": "/batch",
          "method": "POST",
          "methods": [
            "POST"
          ],
          "title": "One schema across many sources",
          "description": "Apply one schema to up to 15 sources. The total is computed from the item count, so the 402 challenge already states the exact amount and one signature covers the batch. Each item reports its own success independently.",
          "price": {
            "usd": "$0.012",
            "usdAmount": "0.012",
            "atomicAmount": "12000",
            "asset": "USDC",
            "assetDecimals": 6,
            "per": {
              "basis": "per-item",
              "field": "sources",
              "unit": "source",
              "maxItems": 15,
              "formula": "atomicAmount = 12000 * len(body.sources)",
              "note": "The total is derivable from the request, so the 402 challenge already states the exact amount and one signature covers the whole batch."
            }
          },
          "input": {
            "contentType": "application/json",
            "required": [
              "sources",
              "schema"
            ],
            "optional": [
              "instructions",
              "strict",
              "maxAttempts",
              "maxChars"
            ],
            "fields": {
              "sources": "object[] — 1..15, each exactly one of { url } | { html } | { text }.",
              "schema": "object — one JSON Schema applied to all of them.",
              "instructions": "string — extra guidance, applied to every item.",
              "strict": "boolean — fail rather than widen the schema.",
              "maxAttempts": "integer — repair attempts per item before that item fails.",
              "maxChars": "integer — per-source truncation."
            },
            "example": {
              "sources": [
                {
                  "url": "https://example.com/a"
                },
                {
                  "url": "https://example.com/b"
                }
              ],
              "schema": {
                "type": "object",
                "properties": {
                  "title": {
                    "type": [
                      "string",
                      "null"
                    ]
                  }
                }
              }
            }
          },
          "output": {
            "contentType": "application/json",
            "shape": "{ count, results: [{ ok, data, confidence, absent } | { ok: false, error }] }"
          },
          "curl": "curl -s https://structura.x.c00l.site/batch \\\n  -H 'content-type: application/json' \\\n  -d '{\n       \"sources\": [\n         {\n           \"url\": \"https://example.com/a\"\n         },\n         {\n           \"url\": \"https://example.com/b\"\n         }\n       ],\n       \"schema\": {\n         \"type\": \"object\",\n         \"properties\": {\n           \"title\": {\n             \"type\": [\n               \"string\",\n               \"null\"\n             ]\n           }\n         }\n       }\n     }'",
          "x402": {
            "scheme": "exact",
            "network": "eip155:8453",
            "networkName": "Base mainnet",
            "chainId": 8453,
            "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
            "assetSymbol": "USDC",
            "assetDecimals": 6,
            "payTo": "0x49db736f346BD2f68E9b97069E2E090222d75c82",
            "maxTimeoutSeconds": 300,
            "extra": {
              "name": "USD Coin",
              "version": "2"
            },
            "facilitator": "https://facilitator.payai.network"
          }
        },
        {
          "id": "structura.classify",
          "service": "structura",
          "url": "https://structura.x.c00l.site/classify",
          "path": "/classify",
          "method": "POST",
          "methods": [
            "POST"
          ],
          "title": "Classify text against your labels",
          "description": "Every label is scored 0-1, not just the winner, so you can threshold it yourself and see how close the call was via `margin`. The label set is baked into the model constraint, so an off-list label cannot come back. Supports multi-label.",
          "price": {
            "usd": "$0.006",
            "usdAmount": "0.006",
            "atomicAmount": "6000",
            "asset": "USDC",
            "assetDecimals": 6,
            "per": {
              "basis": "flat",
              "note": "One flat amount per call, regardless of input size."
            }
          },
          "input": {
            "contentType": "application/json",
            "required": [
              "text",
              "labels"
            ],
            "optional": [
              "multi",
              "rubric",
              "threshold"
            ],
            "fields": {
              "text": "string — the text to classify.",
              "labels": "string[] — the allowed label set.",
              "multi": "boolean — allow more than one label.",
              "rubric": "string — how to decide between labels.",
              "threshold": "number 0..1 — minimum score to include."
            },
            "example": {
              "text": "The invoice is 30 days overdue.",
              "labels": [
                "billing",
                "support",
                "sales"
              ]
            }
          },
          "output": {
            "contentType": "application/json",
            "shape": "{ label, scores: { label: 0..1 }, margin, multi }"
          },
          "curl": "curl -s https://structura.x.c00l.site/classify \\\n  -H 'content-type: application/json' \\\n  -d '{\n       \"text\": \"The invoice is 30 days overdue.\",\n       \"labels\": [\n         \"billing\",\n         \"support\",\n         \"sales\"\n       ]\n     }'",
          "x402": {
            "scheme": "exact",
            "network": "eip155:8453",
            "networkName": "Base mainnet",
            "chainId": 8453,
            "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
            "assetSymbol": "USDC",
            "assetDecimals": 6,
            "payTo": "0x49db736f346BD2f68E9b97069E2E090222d75c82",
            "maxTimeoutSeconds": 300,
            "extra": {
              "name": "USD Coin",
              "version": "2"
            },
            "facilitator": "https://facilitator.payai.network"
          }
        }
      ]
    }
  ]
}