{
  "x402Version": 2,
  "lastUpdated": "2026-10-03T12:57:13.690Z",
  "resources": [
    {
      "resource": "https://grist.tools/v1/archive-extract-file",
      "type": "http",
      "method": "POST",
      "x402Version": 2,
      "accepts": [
        {
          "scheme": "exact",
          "network": "eip155:8453",
          "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "amount": "3000",
          "payTo": "0x2C5d7FAe8338e5472755a9B9cafcDEad90a8F81C",
          "maxTimeoutSeconds": 111,
          "extra": {
            "name": "USD Coin",
            "version": "2"
          }
        }
      ],
      "metadata": {
        "name": "archive-extract-file",
        "description": "Extracts one named entry from a remote zip, tar or tar.gz and returns its bytes (base64) with a sha256.",
        "family": "archives",
        "price_usd": "0.003",
        "free": false,
        "max_timeout_seconds": 111,
        "schema_url": "https://grist.tools/v1/archive-extract-file/schema",
        "docs_url": "https://grist.tools/docs/archive-extract-file"
      }
    },
    {
      "resource": "https://grist.tools/v1/archive-inspect",
      "type": "http",
      "method": "POST",
      "x402Version": 2,
      "accepts": [
        {
          "scheme": "exact",
          "network": "eip155:8453",
          "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "amount": "3000",
          "payTo": "0x2C5d7FAe8338e5472755a9B9cafcDEad90a8F81C",
          "maxTimeoutSeconds": 81,
          "extra": {
            "name": "USD Coin",
            "version": "2"
          }
        }
      ],
      "metadata": {
        "name": "archive-inspect",
        "description": "Lists the entries of a remote zip, tar or tar.gz (paths, sizes, compression and CRC) without extracting any of them.",
        "family": "archives",
        "price_usd": "0.003",
        "free": false,
        "max_timeout_seconds": 81,
        "schema_url": "https://grist.tools/v1/archive-inspect/schema",
        "docs_url": "https://grist.tools/docs/archive-inspect"
      }
    },
    {
      "resource": "https://grist.tools/v1/audio-convert",
      "type": "http",
      "method": "POST",
      "x402Version": 2,
      "accepts": [
        {
          "scheme": "exact",
          "network": "eip155:8453",
          "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "amount": "3000",
          "payTo": "0x2C5d7FAe8338e5472755a9B9cafcDEad90a8F81C",
          "maxTimeoutSeconds": 115,
          "extra": {
            "name": "USD Coin",
            "version": "2"
          }
        }
      ],
      "metadata": {
        "name": "audio-convert",
        "description": "Transcodes an audio file between WAV, MP3, FLAC, AAC and Opus, with an optional bit rate and sample rate.",
        "family": "av",
        "price_usd": "0.003",
        "free": false,
        "max_timeout_seconds": 115,
        "schema_url": "https://grist.tools/v1/audio-convert/schema",
        "docs_url": "https://grist.tools/docs/audio-convert"
      }
    },
    {
      "resource": "https://grist.tools/v1/audio-extract",
      "type": "http",
      "method": "POST",
      "x402Version": 2,
      "accepts": [
        {
          "scheme": "exact",
          "network": "eip155:8453",
          "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "amount": "3000",
          "payTo": "0x2C5d7FAe8338e5472755a9B9cafcDEad90a8F81C",
          "maxTimeoutSeconds": 115,
          "extra": {
            "name": "USD Coin",
            "version": "2"
          }
        }
      ],
      "metadata": {
        "name": "audio-extract",
        "description": "Extracts the audio track from a video (or any container) and returns it in a chosen audio format.",
        "family": "av",
        "price_usd": "0.003",
        "free": false,
        "max_timeout_seconds": 115,
        "schema_url": "https://grist.tools/v1/audio-extract/schema",
        "docs_url": "https://grist.tools/docs/audio-extract"
      }
    },
    {
      "resource": "https://grist.tools/v1/color-palette-extract",
      "type": "http",
      "method": "POST",
      "x402Version": 2,
      "accepts": [
        {
          "scheme": "exact",
          "network": "eip155:8453",
          "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "amount": "3000",
          "payTo": "0x2C5d7FAe8338e5472755a9B9cafcDEad90a8F81C",
          "maxTimeoutSeconds": 81,
          "extra": {
            "name": "USD Coin",
            "version": "2"
          }
        }
      ],
      "metadata": {
        "name": "color-palette-extract",
        "description": "Extracts an image's dominant colours as a small palette (hex, RGB and coverage fraction).",
        "family": "images",
        "price_usd": "0.003",
        "free": false,
        "max_timeout_seconds": 81,
        "schema_url": "https://grist.tools/v1/color-palette-extract/schema",
        "docs_url": "https://grist.tools/docs/color-palette-extract"
      }
    },
    {
      "resource": "https://grist.tools/v1/csv-to-json",
      "type": "http",
      "method": "POST",
      "x402Version": 2,
      "accepts": [
        {
          "scheme": "exact",
          "network": "eip155:8453",
          "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "amount": "5000",
          "payTo": "0x2C5d7FAe8338e5472755a9B9cafcDEad90a8F81C",
          "maxTimeoutSeconds": 51,
          "extra": {
            "name": "USD Coin",
            "version": "2"
          }
        }
      ],
      "metadata": {
        "name": "csv-to-json",
        "description": "Parses a CSV/TSV document into JSON rows, keyed by a header row or as arrays; the delimiter is auto-detected.",
        "family": "documents",
        "price_usd": "0.005",
        "free": false,
        "max_timeout_seconds": 51,
        "schema_url": "https://grist.tools/v1/csv-to-json/schema",
        "docs_url": "https://grist.tools/docs/csv-to-json"
      }
    },
    {
      "resource": "https://grist.tools/v1/dns-lookup",
      "type": "http",
      "method": "POST",
      "x402Version": 2,
      "accepts": [],
      "metadata": {
        "name": "dns-lookup",
        "description": "DNS records for a domain (A, AAAA, MX, TXT, NS, CNAME, SOA, CAA) with their TTLs.",
        "family": "domain",
        "price_usd": "0",
        "free": true,
        "max_timeout_seconds": 6,
        "schema_url": "https://grist.tools/v1/dns-lookup/schema",
        "docs_url": "https://grist.tools/docs/dns-lookup"
      }
    },
    {
      "resource": "https://grist.tools/v1/docx-to-markdown",
      "type": "http",
      "method": "POST",
      "x402Version": 2,
      "accepts": [
        {
          "scheme": "exact",
          "network": "eip155:8453",
          "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "amount": "5000",
          "payTo": "0x2C5d7FAe8338e5472755a9B9cafcDEad90a8F81C",
          "maxTimeoutSeconds": 61,
          "extra": {
            "name": "USD Coin",
            "version": "2"
          }
        }
      ],
      "metadata": {
        "name": "docx-to-markdown",
        "description": "Converts a Word .docx to Markdown, surfacing anything that did not translate as warnings.",
        "family": "documents",
        "price_usd": "0.005",
        "free": false,
        "max_timeout_seconds": 61,
        "schema_url": "https://grist.tools/v1/docx-to-markdown/schema",
        "docs_url": "https://grist.tools/docs/docx-to-markdown"
      }
    },
    {
      "resource": "https://grist.tools/v1/email-validate",
      "type": "http",
      "method": "POST",
      "x402Version": 2,
      "accepts": [
        {
          "scheme": "exact",
          "network": "eip155:8453",
          "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "amount": "2000",
          "payTo": "0x2C5d7FAe8338e5472755a9B9cafcDEad90a8F81C",
          "maxTimeoutSeconds": 26,
          "extra": {
            "name": "USD Coin",
            "version": "2"
          }
        }
      ],
      "metadata": {
        "name": "email-validate",
        "description": "Validates an email address: syntax, MX records for its domain, and whether it is a disposable or role account.",
        "family": "domain",
        "price_usd": "0.002",
        "free": false,
        "max_timeout_seconds": 26,
        "schema_url": "https://grist.tools/v1/email-validate/schema",
        "docs_url": "https://grist.tools/docs/email-validate"
      }
    },
    {
      "resource": "https://grist.tools/v1/epub-to-text",
      "type": "http",
      "method": "POST",
      "x402Version": 2,
      "accepts": [
        {
          "scheme": "exact",
          "network": "eip155:8453",
          "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "amount": "5000",
          "payTo": "0x2C5d7FAe8338e5472755a9B9cafcDEad90a8F81C",
          "maxTimeoutSeconds": 66,
          "extra": {
            "name": "USD Coin",
            "version": "2"
          }
        }
      ],
      "metadata": {
        "name": "epub-to-text",
        "description": "Extracts an EPUB’s reading-order text and Dublin Core metadata, chapter by chapter.",
        "family": "documents",
        "price_usd": "0.005",
        "free": false,
        "max_timeout_seconds": 66,
        "schema_url": "https://grist.tools/v1/epub-to-text/schema",
        "docs_url": "https://grist.tools/docs/epub-to-text"
      }
    },
    {
      "resource": "https://grist.tools/v1/favicon-extract",
      "type": "http",
      "method": "POST",
      "x402Version": 2,
      "accepts": [
        {
          "scheme": "exact",
          "network": "eip155:8453",
          "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "amount": "3000",
          "payTo": "0x2C5d7FAe8338e5472755a9B9cafcDEad90a8F81C",
          "maxTimeoutSeconds": 66,
          "extra": {
            "name": "USD Coin",
            "version": "2"
          }
        }
      ],
      "metadata": {
        "name": "favicon-extract",
        "description": "Discovers a page's favicons and returns the best one decoded to a normalised PNG with its size.",
        "family": "images",
        "price_usd": "0.003",
        "free": false,
        "max_timeout_seconds": 66,
        "schema_url": "https://grist.tools/v1/favicon-extract/schema",
        "docs_url": "https://grist.tools/docs/favicon-extract"
      }
    },
    {
      "resource": "https://grist.tools/v1/feed-discover",
      "type": "http",
      "method": "POST",
      "x402Version": 2,
      "accepts": [
        {
          "scheme": "exact",
          "network": "eip155:8453",
          "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "amount": "2000",
          "payTo": "0x2C5d7FAe8338e5472755a9B9cafcDEad90a8F81C",
          "maxTimeoutSeconds": 29,
          "extra": {
            "name": "USD Coin",
            "version": "2"
          }
        }
      ],
      "metadata": {
        "name": "feed-discover",
        "description": "Fetches a web page and returns the RSS, Atom and JSON feeds it declares in its <head>, as absolute URLs with their type and title.",
        "family": "feeds",
        "price_usd": "0.002",
        "free": false,
        "max_timeout_seconds": 29,
        "schema_url": "https://grist.tools/v1/feed-discover/schema",
        "docs_url": "https://grist.tools/docs/feed-discover"
      }
    },
    {
      "resource": "https://grist.tools/v1/file-type-detect",
      "type": "http",
      "method": "POST",
      "x402Version": 2,
      "accepts": [
        {
          "scheme": "exact",
          "network": "eip155:8453",
          "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "amount": "3000",
          "payTo": "0x2C5d7FAe8338e5472755a9B9cafcDEad90a8F81C",
          "maxTimeoutSeconds": 51,
          "extra": {
            "name": "USD Coin",
            "version": "2"
          }
        }
      ],
      "metadata": {
        "name": "file-type-detect",
        "description": "Detects a remote file's true type from its magic bytes, returning the canonical extension and media type.",
        "family": "archives",
        "price_usd": "0.003",
        "free": false,
        "max_timeout_seconds": 51,
        "schema_url": "https://grist.tools/v1/file-type-detect/schema",
        "docs_url": "https://grist.tools/docs/file-type-detect"
      }
    },
    {
      "resource": "https://grist.tools/v1/html-clean-text",
      "type": "http",
      "method": "POST",
      "x402Version": 2,
      "accepts": [
        {
          "scheme": "exact",
          "network": "eip155:8453",
          "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "amount": "2000",
          "payTo": "0x2C5d7FAe8338e5472755a9B9cafcDEad90a8F81C",
          "maxTimeoutSeconds": 33,
          "extra": {
            "name": "USD Coin",
            "version": "2"
          }
        }
      ],
      "metadata": {
        "name": "html-clean-text",
        "description": "Fetches a web page and returns the article as clean text and markdown, with its declared metadata.",
        "family": "fetch",
        "price_usd": "0.002",
        "free": false,
        "max_timeout_seconds": 33,
        "schema_url": "https://grist.tools/v1/html-clean-text/schema",
        "docs_url": "https://grist.tools/docs/html-clean-text"
      }
    },
    {
      "resource": "https://grist.tools/v1/html-to-pdf",
      "type": "http",
      "method": "POST",
      "x402Version": 2,
      "accepts": [
        {
          "scheme": "exact",
          "network": "eip155:8453",
          "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "amount": "5000",
          "payTo": "0x2C5d7FAe8338e5472755a9B9cafcDEad90a8F81C",
          "maxTimeoutSeconds": 33,
          "extra": {
            "name": "USD Coin",
            "version": "2"
          }
        }
      ],
      "metadata": {
        "name": "html-to-pdf",
        "description": "Renders a web page or an inline HTML string to a PDF, returned base64-encoded with its page count.",
        "family": "documents",
        "price_usd": "0.005",
        "free": false,
        "max_timeout_seconds": 33,
        "schema_url": "https://grist.tools/v1/html-to-pdf/schema",
        "docs_url": "https://grist.tools/docs/html-to-pdf"
      }
    },
    {
      "resource": "https://grist.tools/v1/http-headers",
      "type": "http",
      "method": "POST",
      "x402Version": 2,
      "accepts": [
        {
          "scheme": "exact",
          "network": "eip155:8453",
          "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "amount": "2000",
          "payTo": "0x2C5d7FAe8338e5472755a9B9cafcDEad90a8F81C",
          "maxTimeoutSeconds": 29,
          "extra": {
            "name": "USD Coin",
            "version": "2"
          }
        }
      ],
      "metadata": {
        "name": "http-headers",
        "description": "Returns the response headers, final status, redirect chain and a security-header grade for a URL, without downloading the body.",
        "family": "fetch",
        "price_usd": "0.002",
        "free": false,
        "max_timeout_seconds": 29,
        "schema_url": "https://grist.tools/v1/http-headers/schema",
        "docs_url": "https://grist.tools/docs/http-headers"
      }
    },
    {
      "resource": "https://grist.tools/v1/image-compress",
      "type": "http",
      "method": "POST",
      "x402Version": 2,
      "accepts": [
        {
          "scheme": "exact",
          "network": "eip155:8453",
          "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "amount": "3000",
          "payTo": "0x2C5d7FAe8338e5472755a9B9cafcDEad90a8F81C",
          "maxTimeoutSeconds": 81,
          "extra": {
            "name": "USD Coin",
            "version": "2"
          }
        }
      ],
      "metadata": {
        "name": "image-compress",
        "description": "Re-encodes an image in its own format at a lower quality to shrink the file, keeping its dimensions.",
        "family": "images",
        "price_usd": "0.003",
        "free": false,
        "max_timeout_seconds": 81,
        "schema_url": "https://grist.tools/v1/image-compress/schema",
        "docs_url": "https://grist.tools/docs/image-compress"
      }
    },
    {
      "resource": "https://grist.tools/v1/image-convert",
      "type": "http",
      "method": "POST",
      "x402Version": 2,
      "accepts": [
        {
          "scheme": "exact",
          "network": "eip155:8453",
          "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "amount": "3000",
          "payTo": "0x2C5d7FAe8338e5472755a9B9cafcDEad90a8F81C",
          "maxTimeoutSeconds": 81,
          "extra": {
            "name": "USD Coin",
            "version": "2"
          }
        }
      ],
      "metadata": {
        "name": "image-convert",
        "description": "Transcodes an image to PNG, JPEG or WebP at a chosen quality, returned base64-encoded.",
        "family": "images",
        "price_usd": "0.003",
        "free": false,
        "max_timeout_seconds": 81,
        "schema_url": "https://grist.tools/v1/image-convert/schema",
        "docs_url": "https://grist.tools/docs/image-convert"
      }
    },
    {
      "resource": "https://grist.tools/v1/image-metadata",
      "type": "http",
      "method": "POST",
      "x402Version": 2,
      "accepts": [
        {
          "scheme": "exact",
          "network": "eip155:8453",
          "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "amount": "3000",
          "payTo": "0x2C5d7FAe8338e5472755a9B9cafcDEad90a8F81C",
          "maxTimeoutSeconds": 51,
          "extra": {
            "name": "USD Coin",
            "version": "2"
          }
        }
      ],
      "metadata": {
        "name": "image-metadata",
        "description": "Reads an image's EXIF/ICC/IPTC/XMP metadata and can return a copy with all metadata stripped.",
        "family": "images",
        "price_usd": "0.003",
        "free": false,
        "max_timeout_seconds": 51,
        "schema_url": "https://grist.tools/v1/image-metadata/schema",
        "docs_url": "https://grist.tools/docs/image-metadata"
      }
    },
    {
      "resource": "https://grist.tools/v1/image-probe",
      "type": "http",
      "method": "POST",
      "x402Version": 2,
      "accepts": [
        {
          "scheme": "exact",
          "network": "eip155:8453",
          "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "amount": "3000",
          "payTo": "0x2C5d7FAe8338e5472755a9B9cafcDEad90a8F81C",
          "maxTimeoutSeconds": 41,
          "extra": {
            "name": "USD Coin",
            "version": "2"
          }
        }
      ],
      "metadata": {
        "name": "image-probe",
        "description": "Reports an image's format and pixel dimensions from its header, without decoding the pixels.",
        "family": "images",
        "price_usd": "0.003",
        "free": false,
        "max_timeout_seconds": 41,
        "schema_url": "https://grist.tools/v1/image-probe/schema",
        "docs_url": "https://grist.tools/docs/image-probe"
      }
    },
    {
      "resource": "https://grist.tools/v1/image-resize",
      "type": "http",
      "method": "POST",
      "x402Version": 2,
      "accepts": [
        {
          "scheme": "exact",
          "network": "eip155:8453",
          "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "amount": "3000",
          "payTo": "0x2C5d7FAe8338e5472755a9B9cafcDEad90a8F81C",
          "maxTimeoutSeconds": 81,
          "extra": {
            "name": "USD Coin",
            "version": "2"
          }
        }
      ],
      "metadata": {
        "name": "image-resize",
        "description": "Resizes an image to a target width/height under a chosen fit, returned base64-encoded.",
        "family": "images",
        "price_usd": "0.003",
        "free": false,
        "max_timeout_seconds": 81,
        "schema_url": "https://grist.tools/v1/image-resize/schema",
        "docs_url": "https://grist.tools/docs/image-resize"
      }
    },
    {
      "resource": "https://grist.tools/v1/ip-info",
      "type": "http",
      "method": "POST",
      "x402Version": 2,
      "accepts": [
        {
          "scheme": "exact",
          "network": "eip155:8453",
          "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "amount": "2000",
          "payTo": "0x2C5d7FAe8338e5472755a9B9cafcDEad90a8F81C",
          "maxTimeoutSeconds": 26,
          "extra": {
            "name": "USD Coin",
            "version": "2"
          }
        }
      ],
      "metadata": {
        "name": "ip-info",
        "description": "Reverse DNS (PTR) and network ownership for an IP address or a domain.",
        "family": "domain",
        "price_usd": "0.002",
        "free": false,
        "max_timeout_seconds": 26,
        "schema_url": "https://grist.tools/v1/ip-info/schema",
        "docs_url": "https://grist.tools/docs/ip-info"
      }
    },
    {
      "resource": "https://grist.tools/v1/json-to-csv",
      "type": "http",
      "method": "POST",
      "x402Version": 2,
      "accepts": [
        {
          "scheme": "exact",
          "network": "eip155:8453",
          "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "amount": "5000",
          "payTo": "0x2C5d7FAe8338e5472755a9B9cafcDEad90a8F81C",
          "maxTimeoutSeconds": 51,
          "extra": {
            "name": "USD Coin",
            "version": "2"
          }
        }
      ],
      "metadata": {
        "name": "json-to-csv",
        "description": "Renders JSON objects as raw CSV with no spreadsheet formula protection; columns are inferred or given, nested values are JSON-encoded.",
        "family": "documents",
        "price_usd": "0.005",
        "free": false,
        "max_timeout_seconds": 51,
        "schema_url": "https://grist.tools/v1/json-to-csv/schema",
        "docs_url": "https://grist.tools/docs/json-to-csv"
      }
    },
    {
      "resource": "https://grist.tools/v1/link-extract",
      "type": "http",
      "method": "POST",
      "x402Version": 2,
      "accepts": [
        {
          "scheme": "exact",
          "network": "eip155:8453",
          "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "amount": "2000",
          "payTo": "0x2C5d7FAe8338e5472755a9B9cafcDEad90a8F81C",
          "maxTimeoutSeconds": 29,
          "extra": {
            "name": "USD Coin",
            "version": "2"
          }
        }
      ],
      "metadata": {
        "name": "link-extract",
        "description": "Fetches a web page and returns every link on it, resolved to absolute, each tagged with its rel, a nofollow flag and whether it stays on the same site.",
        "family": "fetch",
        "price_usd": "0.002",
        "free": false,
        "max_timeout_seconds": 29,
        "schema_url": "https://grist.tools/v1/link-extract/schema",
        "docs_url": "https://grist.tools/docs/link-extract"
      }
    },
    {
      "resource": "https://grist.tools/v1/markdown-to-pdf",
      "type": "http",
      "method": "POST",
      "x402Version": 2,
      "accepts": [
        {
          "scheme": "exact",
          "network": "eip155:8453",
          "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "amount": "5000",
          "payTo": "0x2C5d7FAe8338e5472755a9B9cafcDEad90a8F81C",
          "maxTimeoutSeconds": 33,
          "extra": {
            "name": "USD Coin",
            "version": "2"
          }
        }
      ],
      "metadata": {
        "name": "markdown-to-pdf",
        "description": "Renders a Markdown document to a PDF, returned base64-encoded with its page count.",
        "family": "documents",
        "price_usd": "0.005",
        "free": false,
        "max_timeout_seconds": 33,
        "schema_url": "https://grist.tools/v1/markdown-to-pdf/schema",
        "docs_url": "https://grist.tools/docs/markdown-to-pdf"
      }
    },
    {
      "resource": "https://grist.tools/v1/media-probe",
      "type": "http",
      "method": "POST",
      "x402Version": 2,
      "accepts": [
        {
          "scheme": "exact",
          "network": "eip155:8453",
          "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "amount": "3000",
          "payTo": "0x2C5d7FAe8338e5472755a9B9cafcDEad90a8F81C",
          "maxTimeoutSeconds": 51,
          "extra": {
            "name": "USD Coin",
            "version": "2"
          }
        }
      ],
      "metadata": {
        "name": "media-probe",
        "description": "Reads a media file's container, duration, bit rate and per-stream codec/resolution without decoding it.",
        "family": "av",
        "price_usd": "0.003",
        "free": false,
        "max_timeout_seconds": 51,
        "schema_url": "https://grist.tools/v1/media-probe/schema",
        "docs_url": "https://grist.tools/docs/media-probe"
      }
    },
    {
      "resource": "https://grist.tools/v1/ocr-image-to-text",
      "type": "http",
      "method": "POST",
      "x402Version": 2,
      "accepts": [
        {
          "scheme": "exact",
          "network": "eip155:8453",
          "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "amount": "5000",
          "payTo": "0x2C5d7FAe8338e5472755a9B9cafcDEad90a8F81C",
          "maxTimeoutSeconds": 66,
          "extra": {
            "name": "USD Coin",
            "version": "2"
          }
        }
      ],
      "metadata": {
        "name": "ocr-image-to-text",
        "description": "Reads the text out of an image (scan, screenshot, photo) with Tesseract, returned with a mean confidence.",
        "family": "documents",
        "price_usd": "0.005",
        "free": false,
        "max_timeout_seconds": 66,
        "schema_url": "https://grist.tools/v1/ocr-image-to-text/schema",
        "docs_url": "https://grist.tools/docs/ocr-image-to-text"
      }
    },
    {
      "resource": "https://grist.tools/v1/page-metadata",
      "type": "http",
      "method": "POST",
      "x402Version": 2,
      "accepts": [
        {
          "scheme": "exact",
          "network": "eip155:8453",
          "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "amount": "2000",
          "payTo": "0x2C5d7FAe8338e5472755a9B9cafcDEad90a8F81C",
          "maxTimeoutSeconds": 29,
          "extra": {
            "name": "USD Coin",
            "version": "2"
          }
        }
      ],
      "metadata": {
        "name": "page-metadata",
        "description": "Fetches a page and returns its <head> metadata -- title, description, canonical, language, hreflang, favicon, Open Graph and Twitter cards -- with every URL resolved to absolute.",
        "family": "fetch",
        "price_usd": "0.002",
        "free": false,
        "max_timeout_seconds": 29,
        "schema_url": "https://grist.tools/v1/page-metadata/schema",
        "docs_url": "https://grist.tools/docs/page-metadata"
      }
    },
    {
      "resource": "https://grist.tools/v1/pdf-merge",
      "type": "http",
      "method": "POST",
      "x402Version": 2,
      "accepts": [
        {
          "scheme": "exact",
          "network": "eip155:8453",
          "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "amount": "5000",
          "payTo": "0x2C5d7FAe8338e5472755a9B9cafcDEad90a8F81C",
          "maxTimeoutSeconds": 66,
          "extra": {
            "name": "USD Coin",
            "version": "2"
          }
        }
      ],
      "metadata": {
        "name": "pdf-merge",
        "description": "Concatenates 2–8 source PDFs, in order, into one PDF returned base64-encoded. Maximum output PDF size: 25 MiB before base64 encoding.",
        "family": "documents",
        "price_usd": "0.005",
        "free": false,
        "max_timeout_seconds": 66,
        "schema_url": "https://grist.tools/v1/pdf-merge/schema",
        "docs_url": "https://grist.tools/docs/pdf-merge"
      }
    },
    {
      "resource": "https://grist.tools/v1/pdf-metadata",
      "type": "http",
      "method": "POST",
      "x402Version": 2,
      "accepts": [
        {
          "scheme": "exact",
          "network": "eip155:8453",
          "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "amount": "5000",
          "payTo": "0x2C5d7FAe8338e5472755a9B9cafcDEad90a8F81C",
          "maxTimeoutSeconds": 46,
          "extra": {
            "name": "USD Coin",
            "version": "2"
          }
        }
      ],
      "metadata": {
        "name": "pdf-metadata",
        "description": "Reads a PDF's page count, document-info fields, version and encryption flag without rendering it.",
        "family": "documents",
        "price_usd": "0.005",
        "free": false,
        "max_timeout_seconds": 46,
        "schema_url": "https://grist.tools/v1/pdf-metadata/schema",
        "docs_url": "https://grist.tools/docs/pdf-metadata"
      }
    },
    {
      "resource": "https://grist.tools/v1/pdf-split",
      "type": "http",
      "method": "POST",
      "x402Version": 2,
      "accepts": [
        {
          "scheme": "exact",
          "network": "eip155:8453",
          "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "amount": "5000",
          "payTo": "0x2C5d7FAe8338e5472755a9B9cafcDEad90a8F81C",
          "maxTimeoutSeconds": 51,
          "extra": {
            "name": "USD Coin",
            "version": "2"
          }
        }
      ],
      "metadata": {
        "name": "pdf-split",
        "description": "Extracts a 1-indexed page selection (e.g. \"1,3-4\") from a PDF into one new PDF, returned base64-encoded. Maximum output PDF size: 25 MiB before base64 encoding.",
        "family": "documents",
        "price_usd": "0.005",
        "free": false,
        "max_timeout_seconds": 51,
        "schema_url": "https://grist.tools/v1/pdf-split/schema",
        "docs_url": "https://grist.tools/docs/pdf-split"
      }
    },
    {
      "resource": "https://grist.tools/v1/pdf-to-markdown",
      "type": "http",
      "method": "POST",
      "x402Version": 2,
      "accepts": [
        {
          "scheme": "exact",
          "network": "eip155:8453",
          "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "amount": "5000",
          "payTo": "0x2C5d7FAe8338e5472755a9B9cafcDEad90a8F81C",
          "maxTimeoutSeconds": 61,
          "extra": {
            "name": "USD Coin",
            "version": "2"
          }
        }
      ],
      "metadata": {
        "name": "pdf-to-markdown",
        "description": "Converts a PDF to Markdown, inferring headings from font size (best-effort, not layout-perfect; no OCR).",
        "family": "documents",
        "price_usd": "0.005",
        "free": false,
        "max_timeout_seconds": 61,
        "schema_url": "https://grist.tools/v1/pdf-to-markdown/schema",
        "docs_url": "https://grist.tools/docs/pdf-to-markdown"
      }
    },
    {
      "resource": "https://grist.tools/v1/pdf-to-text",
      "type": "http",
      "method": "POST",
      "x402Version": 2,
      "accepts": [
        {
          "scheme": "exact",
          "network": "eip155:8453",
          "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "amount": "5000",
          "payTo": "0x2C5d7FAe8338e5472755a9B9cafcDEad90a8F81C",
          "maxTimeoutSeconds": 61,
          "extra": {
            "name": "USD Coin",
            "version": "2"
          }
        }
      ],
      "metadata": {
        "name": "pdf-to-text",
        "description": "Extracts the text layer of a PDF, page by page, in reading order (no OCR).",
        "family": "documents",
        "price_usd": "0.005",
        "free": false,
        "max_timeout_seconds": 61,
        "schema_url": "https://grist.tools/v1/pdf-to-text/schema",
        "docs_url": "https://grist.tools/docs/pdf-to-text"
      }
    },
    {
      "resource": "https://grist.tools/v1/pptx-to-text",
      "type": "http",
      "method": "POST",
      "x402Version": 2,
      "accepts": [
        {
          "scheme": "exact",
          "network": "eip155:8453",
          "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "amount": "5000",
          "payTo": "0x2C5d7FAe8338e5472755a9B9cafcDEad90a8F81C",
          "maxTimeoutSeconds": 61,
          "extra": {
            "name": "USD Coin",
            "version": "2"
          }
        }
      ],
      "metadata": {
        "name": "pptx-to-text",
        "description": "Extracts the slide text of a PowerPoint .pptx, slide by slide, in order (body text only, up to 1,000 slides).",
        "family": "documents",
        "price_usd": "0.005",
        "free": false,
        "max_timeout_seconds": 61,
        "schema_url": "https://grist.tools/v1/pptx-to-text/schema",
        "docs_url": "https://grist.tools/docs/pptx-to-text"
      }
    },
    {
      "resource": "https://grist.tools/v1/remote-file-hash",
      "type": "http",
      "method": "POST",
      "x402Version": 2,
      "accepts": [
        {
          "scheme": "exact",
          "network": "eip155:8453",
          "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "amount": "3000",
          "payTo": "0x2C5d7FAe8338e5472755a9B9cafcDEad90a8F81C",
          "maxTimeoutSeconds": 81,
          "extra": {
            "name": "USD Coin",
            "version": "2"
          }
        }
      ],
      "metadata": {
        "name": "remote-file-hash",
        "description": "Computes the sha256, sha1 or md5 digest of a remote file, buffered in memory under a size cap, for checksum verification.",
        "family": "archives",
        "price_usd": "0.003",
        "free": false,
        "max_timeout_seconds": 81,
        "schema_url": "https://grist.tools/v1/remote-file-hash/schema",
        "docs_url": "https://grist.tools/docs/remote-file-hash"
      }
    },
    {
      "resource": "https://grist.tools/v1/robots-check",
      "type": "http",
      "method": "POST",
      "x402Version": 2,
      "accepts": [
        {
          "scheme": "exact",
          "network": "eip155:8453",
          "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "amount": "2000",
          "payTo": "0x2C5d7FAe8338e5472755a9B9cafcDEad90a8F81C",
          "maxTimeoutSeconds": 29,
          "extra": {
            "name": "USD Coin",
            "version": "2"
          }
        }
      ],
      "metadata": {
        "name": "robots-check",
        "description": "Fetches robots.txt and answers whether a user agent may crawl a URL, showing the group, the winning rule and every rule that competed with it.",
        "family": "feeds",
        "price_usd": "0.002",
        "free": false,
        "max_timeout_seconds": 29,
        "schema_url": "https://grist.tools/v1/robots-check/schema",
        "docs_url": "https://grist.tools/docs/robots-check"
      }
    },
    {
      "resource": "https://grist.tools/v1/rss-parse",
      "type": "http",
      "method": "POST",
      "x402Version": 2,
      "accepts": [
        {
          "scheme": "exact",
          "network": "eip155:8453",
          "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "amount": "2000",
          "payTo": "0x2C5d7FAe8338e5472755a9B9cafcDEad90a8F81C",
          "maxTimeoutSeconds": 29,
          "extra": {
            "name": "USD Coin",
            "version": "2"
          }
        }
      ],
      "metadata": {
        "name": "rss-parse",
        "description": "Fetches an RSS, Atom or RSS 1.0 feed and returns its channel metadata and a normalised list of items -- id, title, link, summary, content, author, dates and categories -- with every date in ISO 8601 UTC.",
        "family": "feeds",
        "price_usd": "0.002",
        "free": false,
        "max_timeout_seconds": 29,
        "schema_url": "https://grist.tools/v1/rss-parse/schema",
        "docs_url": "https://grist.tools/docs/rss-parse"
      }
    },
    {
      "resource": "https://grist.tools/v1/sitemap-parse",
      "type": "http",
      "method": "POST",
      "x402Version": 2,
      "accepts": [
        {
          "scheme": "exact",
          "network": "eip155:8453",
          "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "amount": "2000",
          "payTo": "0x2C5d7FAe8338e5472755a9B9cafcDEad90a8F81C",
          "maxTimeoutSeconds": 35,
          "extra": {
            "name": "USD Coin",
            "version": "2"
          }
        }
      ],
      "metadata": {
        "name": "sitemap-parse",
        "description": "Parses a sitemap, a sitemap index or a bare origin into a flat, bounded list of URLs with lastmod, changefreq and priority.",
        "family": "feeds",
        "price_usd": "0.002",
        "free": false,
        "max_timeout_seconds": 35,
        "schema_url": "https://grist.tools/v1/sitemap-parse/schema",
        "docs_url": "https://grist.tools/docs/sitemap-parse"
      }
    },
    {
      "resource": "https://grist.tools/v1/ssl-cert-info",
      "type": "http",
      "method": "POST",
      "x402Version": 2,
      "accepts": [
        {
          "scheme": "exact",
          "network": "eip155:8453",
          "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "amount": "2000",
          "payTo": "0x2C5d7FAe8338e5472755a9B9cafcDEad90a8F81C",
          "maxTimeoutSeconds": 31,
          "extra": {
            "name": "USD Coin",
            "version": "2"
          }
        }
      ],
      "metadata": {
        "name": "ssl-cert-info",
        "description": "Fetches the TLS certificate a host presents: issuer, subject, SAN list, validity window, days to expiry and the full chain.",
        "family": "domain",
        "price_usd": "0.002",
        "free": false,
        "max_timeout_seconds": 31,
        "schema_url": "https://grist.tools/v1/ssl-cert-info/schema",
        "docs_url": "https://grist.tools/docs/ssl-cert-info"
      }
    },
    {
      "resource": "https://grist.tools/v1/structured-data-extract",
      "type": "http",
      "method": "POST",
      "x402Version": 2,
      "accepts": [
        {
          "scheme": "exact",
          "network": "eip155:8453",
          "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "amount": "2000",
          "payTo": "0x2C5d7FAe8338e5472755a9B9cafcDEad90a8F81C",
          "maxTimeoutSeconds": 29,
          "extra": {
            "name": "USD Coin",
            "version": "2"
          }
        }
      ],
      "metadata": {
        "name": "structured-data-extract",
        "description": "Fetches a web page and returns its embedded machine-readable data -- JSON-LD, OpenGraph, microdata and meta tags -- plus a normalised merge across all four.",
        "family": "fetch",
        "price_usd": "0.002",
        "free": false,
        "max_timeout_seconds": 29,
        "schema_url": "https://grist.tools/v1/structured-data-extract/schema",
        "docs_url": "https://grist.tools/docs/structured-data-extract"
      }
    },
    {
      "resource": "https://grist.tools/v1/subtitle-convert",
      "type": "http",
      "method": "POST",
      "x402Version": 2,
      "accepts": [
        {
          "scheme": "exact",
          "network": "eip155:8453",
          "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "amount": "3000",
          "payTo": "0x2C5d7FAe8338e5472755a9B9cafcDEad90a8F81C",
          "maxTimeoutSeconds": 36,
          "extra": {
            "name": "USD Coin",
            "version": "2"
          }
        }
      ],
      "metadata": {
        "name": "subtitle-convert",
        "description": "Converts a subtitle track between SubRip (.srt) and WebVTT (.vtt), normalising the cues.",
        "family": "av",
        "price_usd": "0.003",
        "free": false,
        "max_timeout_seconds": 36,
        "schema_url": "https://grist.tools/v1/subtitle-convert/schema",
        "docs_url": "https://grist.tools/docs/subtitle-convert"
      }
    },
    {
      "resource": "https://grist.tools/v1/subtitle-extract",
      "type": "http",
      "method": "POST",
      "x402Version": 2,
      "accepts": [
        {
          "scheme": "exact",
          "network": "eip155:8453",
          "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "amount": "3000",
          "payTo": "0x2C5d7FAe8338e5472755a9B9cafcDEad90a8F81C",
          "maxTimeoutSeconds": 81,
          "extra": {
            "name": "USD Coin",
            "version": "2"
          }
        }
      ],
      "metadata": {
        "name": "subtitle-extract",
        "description": "Extracts a text subtitle track from a media container (MKV, MP4, WebM) as SubRip or WebVTT.",
        "family": "av",
        "price_usd": "0.003",
        "free": false,
        "max_timeout_seconds": 81,
        "schema_url": "https://grist.tools/v1/subtitle-extract/schema",
        "docs_url": "https://grist.tools/docs/subtitle-extract"
      }
    },
    {
      "resource": "https://grist.tools/v1/svg-to-png",
      "type": "http",
      "method": "POST",
      "x402Version": 2,
      "accepts": [
        {
          "scheme": "exact",
          "network": "eip155:8453",
          "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "amount": "3000",
          "payTo": "0x2C5d7FAe8338e5472755a9B9cafcDEad90a8F81C",
          "maxTimeoutSeconds": 81,
          "extra": {
            "name": "USD Coin",
            "version": "2"
          }
        }
      ],
      "metadata": {
        "name": "svg-to-png",
        "description": "Rasterises an SVG to a PNG at a chosen resolution, returned base64-encoded.",
        "family": "images",
        "price_usd": "0.003",
        "free": false,
        "max_timeout_seconds": 81,
        "schema_url": "https://grist.tools/v1/svg-to-png/schema",
        "docs_url": "https://grist.tools/docs/svg-to-png"
      }
    },
    {
      "resource": "https://grist.tools/v1/url-to-markdown",
      "type": "http",
      "method": "POST",
      "x402Version": 2,
      "accepts": [
        {
          "scheme": "exact",
          "network": "eip155:8453",
          "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "amount": "2000",
          "payTo": "0x2C5d7FAe8338e5472755a9B9cafcDEad90a8F81C",
          "maxTimeoutSeconds": 33,
          "extra": {
            "name": "USD Coin",
            "version": "2"
          }
        }
      ],
      "metadata": {
        "name": "url-to-markdown",
        "description": "Fetches a web page and returns the article as clean markdown, with its title, byline and final URL.",
        "family": "fetch",
        "price_usd": "0.002",
        "free": false,
        "max_timeout_seconds": 33,
        "schema_url": "https://grist.tools/v1/url-to-markdown/schema",
        "docs_url": "https://grist.tools/docs/url-to-markdown"
      }
    },
    {
      "resource": "https://grist.tools/v1/url-unshorten",
      "type": "http",
      "method": "POST",
      "x402Version": 2,
      "accepts": [
        {
          "scheme": "exact",
          "network": "eip155:8453",
          "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "amount": "2000",
          "payTo": "0x2C5d7FAe8338e5472755a9B9cafcDEad90a8F81C",
          "maxTimeoutSeconds": 31,
          "extra": {
            "name": "USD Coin",
            "version": "2"
          }
        }
      ],
      "metadata": {
        "name": "url-unshorten",
        "description": "Follows a shortened or tracking URL to its real destination and returns every hop it went through.",
        "family": "fetch",
        "price_usd": "0.002",
        "free": false,
        "max_timeout_seconds": 31,
        "schema_url": "https://grist.tools/v1/url-unshorten/schema",
        "docs_url": "https://grist.tools/docs/url-unshorten"
      }
    },
    {
      "resource": "https://grist.tools/v1/video-thumbnail",
      "type": "http",
      "method": "POST",
      "x402Version": 2,
      "accepts": [
        {
          "scheme": "exact",
          "network": "eip155:8453",
          "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "amount": "3000",
          "payTo": "0x2C5d7FAe8338e5472755a9B9cafcDEad90a8F81C",
          "maxTimeoutSeconds": 81,
          "extra": {
            "name": "USD Coin",
            "version": "2"
          }
        }
      ],
      "metadata": {
        "name": "video-thumbnail",
        "description": "Grabs a single frame from a video at a chosen timestamp as a PNG or JPEG, optionally scaled to a width.",
        "family": "av",
        "price_usd": "0.003",
        "free": false,
        "max_timeout_seconds": 81,
        "schema_url": "https://grist.tools/v1/video-thumbnail/schema",
        "docs_url": "https://grist.tools/docs/video-thumbnail"
      }
    },
    {
      "resource": "https://grist.tools/v1/waveform-data",
      "type": "http",
      "method": "POST",
      "x402Version": 2,
      "accepts": [
        {
          "scheme": "exact",
          "network": "eip155:8453",
          "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "amount": "3000",
          "payTo": "0x2C5d7FAe8338e5472755a9B9cafcDEad90a8F81C",
          "maxTimeoutSeconds": 111,
          "extra": {
            "name": "USD Coin",
            "version": "2"
          }
        }
      ],
      "metadata": {
        "name": "waveform-data",
        "description": "Reduces an audio file to a fixed number of normalised waveform peaks for drawing, without shipping samples.",
        "family": "av",
        "price_usd": "0.003",
        "free": false,
        "max_timeout_seconds": 111,
        "schema_url": "https://grist.tools/v1/waveform-data/schema",
        "docs_url": "https://grist.tools/docs/waveform-data"
      }
    },
    {
      "resource": "https://grist.tools/v1/wellknown-fetch",
      "type": "http",
      "method": "POST",
      "x402Version": 2,
      "accepts": [
        {
          "scheme": "exact",
          "network": "eip155:8453",
          "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "amount": "2000",
          "payTo": "0x2C5d7FAe8338e5472755a9B9cafcDEad90a8F81C",
          "maxTimeoutSeconds": 33,
          "extra": {
            "name": "USD Coin",
            "version": "2"
          }
        }
      ],
      "metadata": {
        "name": "wellknown-fetch",
        "description": "Fetches and parses a domain's well-known files -- security.txt (RFC 9116), ads.txt and humans.txt -- returning typed fields, seller records and a cross-file summary in one call.",
        "family": "feeds",
        "price_usd": "0.002",
        "free": false,
        "max_timeout_seconds": 33,
        "schema_url": "https://grist.tools/v1/wellknown-fetch/schema",
        "docs_url": "https://grist.tools/docs/wellknown-fetch"
      }
    },
    {
      "resource": "https://grist.tools/v1/whois",
      "type": "http",
      "method": "POST",
      "x402Version": 2,
      "accepts": [
        {
          "scheme": "exact",
          "network": "eip155:8453",
          "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "amount": "2000",
          "payTo": "0x2C5d7FAe8338e5472755a9B9cafcDEad90a8F81C",
          "maxTimeoutSeconds": 33,
          "extra": {
            "name": "USD Coin",
            "version": "2"
          }
        }
      ],
      "metadata": {
        "name": "whois",
        "description": "Registration record for a domain over whois: registrar, creation/update/expiry dates, status codes and nameservers, with the raw response.",
        "family": "domain",
        "price_usd": "0.002",
        "free": false,
        "max_timeout_seconds": 33,
        "schema_url": "https://grist.tools/v1/whois/schema",
        "docs_url": "https://grist.tools/docs/whois"
      }
    },
    {
      "resource": "https://grist.tools/v1/xlsx-to-json",
      "type": "http",
      "method": "POST",
      "x402Version": 2,
      "accepts": [
        {
          "scheme": "exact",
          "network": "eip155:8453",
          "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "amount": "5000",
          "payTo": "0x2C5d7FAe8338e5472755a9B9cafcDEad90a8F81C",
          "maxTimeoutSeconds": 61,
          "extra": {
            "name": "USD Coin",
            "version": "2"
          }
        }
      ],
      "metadata": {
        "name": "xlsx-to-json",
        "description": "Reads an Excel .xlsx into JSON rows, keyed by a header row or as arrays; dates become ISO strings. Archives are limited to 64 worksheets.",
        "family": "documents",
        "price_usd": "0.005",
        "free": false,
        "max_timeout_seconds": 61,
        "schema_url": "https://grist.tools/v1/xlsx-to-json/schema",
        "docs_url": "https://grist.tools/docs/xlsx-to-json"
      }
    }
  ]
}