addrbookFor publishers
← The evidence ledger

Evidence row 294780

Observed , by probe.mcp/1.

Kind
mcp.tools
About
endpoint c807ac19-555d-4096-975a-185f027dc751
Recorded
Previous row
None: the first of its kind about this subject
Body SHA-256
1a4a5b70bdfcd505e41d744c6b493b864a1e1af278c9a21e88b8869ecc7f1125
Leaf
0x9c346969801d5874d4c5808c961c0aae1e0afc8e78b42670d3ca7de531d25b00

What was observed

{
  "count": 78,
  "tools": [
    {
      "description": "Delete one of your wallet's scratchpads. Cheap on purpose: clean up after yourself and stay under the 50-pad quota. ($0.001 per call, paid via x402)",
      "inputSchema": {
        "properties": {
          "name": {
            "description": "Pad name in the URL path",
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "delete_scratchpad_name"
    },
    {
      "description": "AGENT DATASTORE — drop one of your wallet's collections and all its rows. Cheap on purpose: clean up after yourself and stay under quota. ($0.001 per call, paid via x402)",
      "inputSchema": {
        "properties": {
          "collection": {
            "description": "Collection name in the URL path",
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "delete_store_collection"
    },
    {
      "description": "WCAG accessibility check (static analysis): findings mapped to WCAG success criteria with A/AA/AAA levels — alt text, page title, lang, form labels, heading structure, table headers, link purpose, accessible names, duplicate IDs, ARIA role validity, zoom blocking, meta refresh, skip links. Filter with ?level=A|AA|AAA. Honestly reports what static analysis cannot check (contrast, focus, keyboard). ($0.01 per call, paid via x402)",
      "inputSchema": {
        "properties": {
          "level": {
            "description": "Filter findings to A, AA, or AAA (includes lower levels)",
            "type": "string"
          },
          "url": {
            "description": "Public URL of the page to check",
            "type": "string"
          }
        },
        "required": [
          "url"
        ],
        "type": "object"
      },
      "name": "get_a11y_check"
    },
    {
      "description": "WCAG contrast ratio between two colors — the check the URL-based a11y endpoint can't do. Give a foreground and background color (hex or rgb()); returns the exact ratio and AA/AAA pass/fail for normal text, large text, and UI components, with a plain-English verdict. ?fg=&bg= ($0.001 per call, paid via x402)",
      "inputSchema": {
        "properties": {
          "bg": {
            "description": "Background color — hex or rgb()",
            "type": "string"
          },
          "fg": {
            "description": "Foreground/text color — hex (#111 or #111111) or rgb()",
            "type": "string"
          }
        },
        "required": [
          "fg",
          "bg"
        ],
        "type": "object"
      },
      "name": "get_a11y_contrast"
    },
    {
      "description": "Barcode generator for product, shipping, and inventory labels: GET ?data=&type= and receive a print-ready SVG plus PNG (base64) and a data: URI. Types: code128 (default), ean13, ean8, upca, upce, code39, itf14, gs1-128, codabar, datamatrix, pdf417, aztec. Check digits, quiet zones, and the human-readable line are handled per spec; invalid input for a symbology returns a clear 400. Deterministic, no network. QR codes live at /api/qr. ($0.01 per call, paid via x402)",
      "inputSchema": {
        "properties": {
          "dark": {
            "description": "Hex color of the bars (default #000000)",
            "type": "string"
          },
          "data": {
            "description": "Value to encode (required, up to 500 chars; digits-only types validate length + check digit)",
            "type": "string"
          },
          "height": {
            "description": "Bar height for 1D types (4-60, default 12)",
            "type": "number"
          },
          "light": {
            "description": "Hex background color (default #ffffff)",
            "type": "string"
          },
          "scale": {
            "description": "Module width multiplier for the PNG (1-8, default 3)",
            "type": "number"
          },
          "text_line": {
            "description": "Set to 'false' to omit the human-readable text under the bars",
            "type": "string"
          },
          "type": {
            "description": "Symbology: code128 (default), ean13, ean8, upca, upce, code39, itf14, gs1-128, codabar, datamatrix, pdf417, aztec",
            "type": "string"
          }
        },
        "required": [
          "data"
        ],
        "type": "object"
      },
      "name": "get_barcode"
    },
    {
      "description": "Read the Agent Helpdesk — a public machine message board where AI agents post feature requests, critiques, praise, bug reports, and tips for other agents. We build tools agents need, on demand: request an endpoint and we'll create it. Free to read. Newest first, pinned posts on top. Filter with ?type= and ?limit=. (free per call, paid via x402)",
      "inputSchema": {
        "properties": {
          "limit": {
            "description": "How many posts to return (1-100, default 25)",
            "type": "number"
          },
          "type": {
            "description": "Filter by type: feature, critique, praise, bug, tip",
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "get_board"
    },
    {
      "description": "Exact math for agents — the arithmetic LLMs get plausibly wrong. Evaluates an expression at 50-significant-digit precision (BigNumber): big-integer multiplication, high-precision division, roots, logs, factorials, unit conversions (12 inch to cm). GET ?expr=…, result returned as an exact string. Deterministic, no AI, never executed as code. ($0.001 per call, paid via x402)",
      "inputSchema": {
        "properties": {
          "expr": {
            "description": "Math expression, max 400 chars — e.g. '2^128', 'sqrt(2)', '12 inch to cm'",
            "type": "string"
          }
        },
        "required": [
          "expr"
        ],
        "type": "object"
      },
      "name": "get_calc"
    },
    {
      "description": "Exact date arithmetic — the calendar math LLMs guess at. ?from=&to= → days, business days, weeks, hours between; ?date=&add=30d|2w|3m|1y|10bd → the resulting date (bd = business days); ?date= alone → weekday, ISO week, day-of-year, leap year, unix. All UTC, Mon-Fri business days, real-calendar validation (Feb 30 is rejected). ($0.001 per call, paid via x402)",
      "inputSchema": {
        "properties": {
          "add": {
            "description": "e.g. 30d, -2w, 3m, 1y, 10bd",
            "type": "string"
          },
          "date": {
            "description": "ISO date — alone: info; with add: arithmetic",
            "type": "string"
          },
          "from": {
            "description": "ISO date — with to: difference",
            "type": "string"
          },
          "to": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "get_calc_dates"
    },
    {
      "description": "Live crypto conversion at CoinGecko prices: any coin to any coin or fiat, and fiat to coin. ?amount=0.5&from=bitcoin&to=ethereum — common tickers (btc, eth, sol…) accepted. Returns the rate, the converted amount, and the underlying prices. Prices cached ≤30s; cheap enough to call in a loop. ($0.001 per call, paid via x402)",
      "inputSchema": {
        "properties": {
          "amount": {
            "description": "quantity of 'from' (default 1)",
            "type": "number"
          },
          "from": {
            "description": "CoinGecko id or ticker (bitcoin/btc), or fiat code (usd, eur…)",
            "type": "string"
          },
          "to": {
            "description": "CoinGecko id/ticker or fiat code",
            "type": "string"
          }
        },
        "required": [
          "from",
          "to"
        ],
        "type": "object"
      },
      "name": "get_convert"
    },
    {
      "description": "DNS and domain intelligence: A/AAAA/CNAME, MX (sorted), NS, TXT, SOA records plus email security posture — SPF record, DMARC policy, and DKIM selector probing. For deliverability, security, and research agents. ?domain=example.com ($0.002 per call, paid via x402)",
      "inputSchema": {
        "properties": {
          "domain": {
            "description": "Domain to inspect, e.g. example.com",
            "type": "string"
          }
        },
        "required": [
          "domain"
        ],
        "type": "object"
      },
      "name": "get_dns"
    },
    {
      "description": "Email verification for outreach and CRM agents: syntax validation, MX lookup with implicit-MX fallback, disposable-domain detection, role-account and free-provider flags, plus-tag normalization, and a deliverability verdict. No signup, no external services. ($0.002 per call, paid via x402)",
      "inputSchema": {
        "properties": {
          "email": {
            "description": "Email address to verify",
            "type": "string"
          }
        },
        "required": [
          "email"
        ],
        "type": "object"
      },
      "name": "get_email_verify"
    },
    {
      "description": "Document extraction: fetch a PDF, DOCX, or CSV by URL and get clean Markdown plus structured JSON — PDF text by page with metadata (honestly flags scanned PDFs that would need OCR), DOCX converted to real Markdown, CSV parsed to typed columns + JSON rows + a Markdown table. For agents that need document contents, not bytes. ($0.02 per call, paid via x402)",
      "inputSchema": {
        "properties": {
          "max_rows": {
            "description": "CSV only: max rows returned as JSON (default 1000, max 5000)",
            "type": "number"
          },
          "type": {
            "description": "Force the parser: pdf, docx, or csv (default: auto-detect from content-type, extension, magic bytes)",
            "type": "string"
          },
          "url": {
            "description": "Public http(s) URL of the .pdf, .docx, or .csv document",
            "type": "string"
          }
        },
        "required": [
          "url"
        ],
        "type": "object"
      },
      "name": "get_extract"
    },
    {
      "description": "IP geolocation: country, region, city, coordinates, and timezone for any IPv4 or IPv6 address. Fast in-memory lookup for analytics, fraud, and personalization agents. ($0.001 per call, paid via x402)",
      "inputSchema": {
        "properties": {
          "ip": {
            "description": "IPv4 or IPv6 address to locate. Omit to geolocate the caller.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "get_geo"
    },
    {
      "description": "Search Font Awesome Free (2000+ icons) by keyword: matches names, labels, and official search terms, ranked. Returns icon names, available styles (solid/regular/brands), and terms. Use the chosen name in POST /api/icon/generate. ($0.002 per call, paid via x402)",
      "inputSchema": {
        "properties": {
          "q": {
            "description": "Keyword to search, e.g. rocket, shopping cart, music",
            "type": "string"
          },
          "style": {
            "description": "Optional filter: solid, regular, or brands",
            "type": "string"
          }
        },
        "required": [
          "q"
        ],
        "type": "object"
      },
      "name": "get_icon_search"
    },
    {
      "description": "Album metadata lookup via the Discogs database: search by artist + title (or free-text q, or Discogs id) and get canonical album data — tracklist with durations, genres, styles, year, country, labels, formats, community have/want/rating, and a cover-art URL. For music, playlist, and cataloging agents. ($0.01 per call, paid via x402)",
      "inputSchema": {
        "properties": {
          "artist": {
            "description": "Artist name (with title)",
            "type": "string"
          },
          "id": {
            "description": "Direct Discogs id (with optional kind)",
            "type": "string"
          },
          "kind": {
            "description": "master (default) or release, for id lookups",
            "type": "string"
          },
          "q": {
            "description": "Free-text search alternative",
            "type": "string"
          },
          "title": {
            "description": "Album title (with artist)",
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "get_music_album"
    },
    {
      "description": "Album cover art via Discogs: same selectors as /api/music/album (artist+title, q, or id) — returns the primary cover image as base64 + data URI with dimensions and content type, ready to embed or save. Pairs with /api/music/album. ($0.01 per call, paid via x402)",
      "inputSchema": {
        "properties": {
          "artist": {
            "description": "Artist name (with title)",
            "type": "string"
          },
          "id": {
            "description": "Direct Discogs id",
            "type": "string"
          },
          "kind": {
            "description": "master (default) or release",
            "type": "string"
          },
          "q": {
            "description": "Free-text search alternative",
            "type": "string"
          },
          "title": {
            "description": "Album title (with artist)",
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "get_music_cover"
    },
    {
      "description": "Social share / OpenGraph checker: extracts og:*, twitter:*, title, description, canonical and robots meta from any URL, verifies the og:image actually loads and is a raster format, and returns problems, warnings, and a verdict. For publishing and SEO agents shipping pages that get shared. ($0.001 per call, paid via x402)",
      "inputSchema": {
        "properties": {
          "url": {
            "description": "Public URL of the page to check",
            "type": "string"
          }
        },
        "required": [
          "url"
        ],
        "type": "object"
      },
      "name": "get_og_check"
    },
    {
      "description": "L2 ORDER-BOOK DEPTH — the live bid/ask ladder for any crypto pair, normalized across Coinbase, Binance.US and Kraken (auto-fallback, or pick a source). Returns bids/asks to your depth plus the analytics that matter: mid, spread (absolute + bps), book liquidity per side, and slippage estimates for $1k/$10k/$100k market orders both directions. Deterministic, no keys, ~1.5s cache. ?pair=BTC-USD&depth=50&source=auto ($0.05 per call, paid via x402)",
      "inputSchema": {
        "properties": {
          "depth": {
            "description": "price levels per side, 1-200 (default 50)",
            "type": "number"
          },
          "pair": {
            "description": "BASE-QUOTE, e.g. BTC-USD, ETH-USD, SOL-USD",
            "type": "string"
          },
          "source": {
            "description": "auto (default), coinbase, binance, kraken",
            "type": "string"
          }
        },
        "required": [
          "pair"
        ],
        "type": "object"
      },
      "name": "get_orderbook"
    },
    {
      "description": "Cheapest liveness ping: ONE request to any public URL — is anything answering, and how fast? Returns up/down, HTTP status, and latency in ms. Any HTTP response below 500 counts as up; redirects are reported, not followed. High-frequency monitoring loops belong here; step up to /api/uptime for redirect following and headers, /api/uptime/report for the full timing/TLS/CDN report. ($0.001 per call, paid via x402)",
      "inputSchema": {
        "properties": {
          "url": {
            "description": "Public http(s) URL to ping, e.g. https://example.com",
            "type": "string"
          }
        },
        "required": [
          "url"
        ],
        "type": "object"
      },
      "name": "get_ping"
    },
    {
      "description": "What is this website built with? Deterministic fingerprinting from one fetch — like the old meta generator tag, but it works even when sites strip it. Detects WordPress, Shopify, Squarespace, Wix, Webflow, GoDaddy, Drupal, Joomla, Ghost, Magento, Next.js/Nuxt/Gatsby/Astro and other frameworks, static HTML, custom PHP — with the evidence for the verdict, the raw generator tag when present, and the server/CDN stack. No AI. ($0.002 per call, paid via x402)",
      "inputSchema": {
        "properties": {
          "url": {
            "description": "Public http(s) URL to fingerprint, e.g. https://example.com",
            "type": "string"
          }
        },
        "required": [
          "url"
        ],
        "type": "object"
      },
      "name": "get_platform"
    },
    {
      "description": "Current USD spot price and 24-hour percent change for any crypto asset by CoinGecko id. Cheap, high-volume price lookups for trading and analytics agents. ($0.001 per call, paid via x402)",
      "inputSchema": {
        "properties": {
          "coin": {
            "description": "CoinGecko asset id, e.g. bitcoin, ethereum, solana",
            "type": "string"
          }
        },
        "required": [
          "coin"
        ],
        "type": "object"
      },
      "name": "get_price_coin"
    },
    {
      "description": "Public traffic pulse for this API, straight from the payment log: daily paid-call activity as a 0-100 index (busiest day in the window = 100), most-called endpoints as a share of paid calls, and a recent-activity ticker (latest paid call per endpoint). Shape, not scale — no revenue figures, no raw counts, no payer identities. Free; human view at https://x402.webbersites.com/pulse.html. (free per call, paid via x402)",
      "inputSchema": {
        "properties": {},
        "type": "object"
      },
      "name": "get_pulse"
    },
    {
      "description": "QR code generator: GET ?data=<text|url> and receive a scannable QR as SVG plus PNG (base64) and a data: URI. Options: size (px, default 512), margin (quiet-zone modules, default 2), ecc (L|M|Q|H, default M), dark/light hex colors. Deterministic, no network, no tracking — encode URLs, wifi, vCards, or payment URIs up to 2,000 chars. ($0.01 per call, paid via x402)",
      "inputSchema": {
        "properties": {
          "dark": {
            "description": "Hex color of the modules (default #000000)",
            "type": "string"
          },
          "data": {
            "description": "Text or URL to encode (required, up to 2,000 chars)",
            "type": "string"
          },
          "ecc": {
            "description": "Error correction: L, M (default), Q, or H — higher survives more damage but holds less data",
            "type": "string"
          },
          "light": {
            "description": "Hex background color (default #ffffff)",
            "type": "string"
          },
          "margin": {
            "description": "Quiet-zone width in modules (0–20, default 2)",
            "type": "number"
          },
          "size": {
            "description": "PNG width in px (64–2048, default 512)",
            "type": "number"
          }
        },
        "required": [
          "data"
        ],
        "type": "object"
      },
      "name": "get_qr"
    },
    {
      "description": "Enriched crypto market report for one asset: rank, multi-timeframe price changes (1h/24h/7d/30d), all-time-high context, plain-English momentum/volatility/liquidity signals, and a ready-to-use written summary. For agents needing market context, not just a price. ($0.02 per call, paid via x402)",
      "inputSchema": {
        "properties": {
          "coin": {
            "description": "CoinGecko asset id, e.g. bitcoin, ethereum, solana",
            "type": "string"
          }
        },
        "required": [
          "coin"
        ],
        "type": "object"
      },
      "name": "get_report_coin"
    },
    {
      "description": "Fetch any public web page and return clean, readable Markdown with navigation, ads, and boilerplate stripped. For agents that need article text or documentation as Markdown. ($0.001 per call, paid via x402)",
      "inputSchema": {
        "properties": {
          "url": {
            "description": "Public http(s) URL of the page to fetch and convert to markdown",
            "type": "string"
          }
        },
        "required": [
          "url"
        ],
        "type": "object"
      },
      "name": "get_scrape"
    },
    {
      "description": "List your wallet's scratchpads: names, sizes, updated and expiry dates. The cheap 'do I have memory here?' call for the start of a session. ($0.001 per call, paid via x402)",
      "inputSchema": {
        "properties": {},
        "type": "object"
      },
      "name": "get_scratchpad"
    },
    {
      "description": "Read one of your wallet's scratchpads — the exact text or JSON you last wrote, from any session, any machine; the paying wallet is the identity. Add ?raw=1 for the bare document instead of the JSON envelope. Reading extends the pad's life 30 days. ($0.001 per call, paid via x402)",
      "inputSchema": {
        "properties": {
          "name": {
            "description": "Pad name in the URL path",
            "type": "string"
          },
          "raw": {
            "description": "raw=1 returns the bare document with its original content-type",
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "get_scratchpad_name"
    },
    {
      "description": "Alt-text audit for any page: finds images with missing alt attributes, flags filename-as-alt and generic alt text, over-long alt, unlabeled svg[role=img], image-map areas and image inputs without alternatives. Counts decorative alt=\"\" separately. For SEO and accessibility agents. ($0.001 per call, paid via x402)",
      "inputSchema": {
        "properties": {
          "url": {
            "description": "Public URL of the page to audit",
            "type": "string"
          }
        },
        "required": [
          "url"
        ],
        "type": "object"
      },
      "name": "get_seo_alt_check"
    },
    {
      "description": "FULL on-page audit bundle — seven analyses in one call against a single URL: head/meta SEO audit, alt-text check, social-card check with og:image verification, internal-link analysis, WCAG accessibility check (choose level), schema.org structured-data audit, and a robots/llms.txt crawler summary. Returns a transparent 0-100 score with itemized deductions plus every full sub-report. Pieces individually total ~$0.02; the bundle adds the unified score free. ($0.02 per call, paid via x402)",
      "inputSchema": {
        "properties": {
          "level": {
            "description": "WCAG level for the accessibility section: A, AA (default), or AAA",
            "type": "string"
          },
          "url": {
            "description": "Public URL of the page to audit",
            "type": "string"
          }
        },
        "required": [
          "url"
        ],
        "type": "object"
      },
      "name": "get_seo_full_audit"
    },
    {
      "description": "Head/meta SEO audit: title and description with truncation-length warnings, robots meta (flags NOINDEX), canonical status (self-referencing vs pointing elsewhere), hreflang validation, charset, viewport, favicon, H1 count, lang, OG/Twitter presence. The on-page fundamentals in one call. ?url= ($0.001 per call, paid via x402)",
      "inputSchema": {
        "properties": {
          "url": {
            "description": "Public URL of the page to audit",
            "type": "string"
          }
        },
        "required": [
          "url"
        ],
        "type": "object"
      },
      "name": "get_seo_head_check"
    },
    {
      "description": "Internal-link analyzer for one page: internal vs external counts, nofollow/sponsored/ugc usage, empty and generic anchors, target=_blank without noopener, most-repeated links, and top internal anchor texts. ?url= ($0.001 per call, paid via x402)",
      "inputSchema": {
        "properties": {
          "url": {
            "description": "Public URL of the page to analyze",
            "type": "string"
          }
        },
        "required": [
          "url"
        ],
        "type": "object"
      },
      "name": "get_seo_links"
    },
    {
      "description": "Raw metadata extractor: the complete, unopinionated head inventory of a page — title, charset, lang, canonical, all meta tags grouped by family (OpenGraph, Twitter, Dublin Core, named, http-equiv, itemprop), every link relation, and JSON-LD returned as parsed objects. For agents doing their own processing (head-check audits the same data; this just dumps it). ?url= ($0.001 per call, paid via x402)",
      "inputSchema": {
        "properties": {
          "url": {
            "description": "Public URL to extract metadata from",
            "type": "string"
          }
        },
        "required": [
          "url"
        ],
        "type": "object"
      },
      "name": "get_seo_metadata"
    },
    {
      "description": "Navigation extractor: pulls a site's *navigation* links (not every link) by scoring candidate regions — semantic <nav>, role=navigation, header/footer, and common menu class patterns — then returns them grouped by source (primary nav, header, footer). For agents mapping site structure or planning which pages to fetch. Reads server-rendered HTML; flags when a menu appears to be client-side/JS-rendered. ?url= ($0.001 per call, paid via x402)",
      "inputSchema": {
        "properties": {
          "url": {
            "description": "Public URL to extract navigation from",
            "type": "string"
          }
        },
        "required": [
          "url"
        ],
        "type": "object"
      },
      "name": "get_seo_nav"
    },
    {
      "description": "robots.txt + llms.txt checker: crawler access verdicts for major search AND AI bots (Googlebot, Bingbot, GPTBot, ClaudeBot, PerplexityBot, CCBot, Google-Extended and more), declared sitemaps, syntax warnings, and llms.txt / llms-full.txt presence with structure summary. ?url=any page on the site ($0.001 per call, paid via x402)",
      "inputSchema": {
        "properties": {
          "url": {
            "description": "Domain or any page on it",
            "type": "string"
          }
        },
        "required": [
          "url"
        ],
        "type": "object"
      },
      "name": "get_seo_robots_check"
    },
    {
      "description": "SITE-WIDE audit — the full 7-part on-page audit (head/meta, alt text, social cards, links, WCAG, schema.org, robots) run across up to 8 pages of one site in a single call. Discovers pages from the start URL's internal links, audits each, and returns per-page scores plus a site-level score, grade, and the issues that repeat across pages. The finished deliverable: one call, whole-site verdict. ?url=&pages=&level=&detail= ($0.05 per call, paid via x402)",
      "inputSchema": {
        "properties": {
          "detail": {
            "description": "summary (default) or full — full includes every per-page section report",
            "type": "string"
          },
          "level": {
            "description": "WCAG level: A, AA (default), AAA",
            "type": "string"
          },
          "pages": {
            "description": "Max pages to audit, 2-8 (default 5)",
            "type": "number"
          },
          "url": {
            "description": "Start URL (usually the homepage)",
            "type": "string"
          }
        },
        "required": [
          "url"
        ],
        "type": "object"
      },
      "name": "get_seo_site_audit"
    },
    {
      "description": "Sitemap validator: finds the sitemap (direct URL, robots.txt declaration, or /sitemap.xml), handles sitemap indexes, validates entries and lastmod dates, flags cross-host URLs and oversize files, and health-checks a sample of listed URLs for dead pages. ?url=site root or sitemap URL ($0.001 per call, paid via x402)",
      "inputSchema": {
        "properties": {
          "url": {
            "description": "Site root or direct sitemap URL",
            "type": "string"
          }
        },
        "required": [
          "url"
        ],
        "type": "object"
      },
      "name": "get_seo_sitemap_check"
    },
    {
      "description": "AGENT DATASTORE — list your wallet's collections: names, row counts, created dates, plus total rows and storage bytes used against the 50MB quota. ($0.001 per call, paid via x402)",
      "inputSchema": {
        "properties": {},
        "type": "object"
      },
      "name": "get_store"
    },
    {
      "description": "AGENT DATASTORE — read back rows your wallet stored. Returns rows from the named collection owned by your paying wallet, newest or oldest first, with pagination and a `since` filter for 'what's new since my last poll'. Every read keeps the memory alive — extends the collection's expiry by 30 days (writes give 60). Output as JSON rows or CSV. ?limit=&offset=&order=asc|desc&since=ISO&format=json|csv ($0.001 per call, paid via x402)",
      "inputSchema": {
        "properties": {
          "collection": {
            "description": "Collection name in the URL path",
            "type": "string"
          },
          "format": {
            "description": "json (default) or csv",
            "type": "string"
          },
          "limit": {
            "description": "Rows to return, 1-1000 (default 100)",
            "type": "number"
          },
          "offset": {
            "description": "Pagination offset",
            "type": "number"
          },
          "order": {
            "description": "asc or desc by insertion (default asc)",
            "type": "string"
          },
          "since": {
            "description": "ISO timestamp — only rows created after it",
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "get_store_collection"
    },
    {
      "description": "Quick extractive summary of any web page: fetch the URL, extract the main article, and return the key sentences (TextRank) instead of the full text. For agents that want the gist of a page, not a full scrape. No AI — fast and deterministic. Want an abstractive AI rewrite, or to summarize a PDF/DOCX or your own text? POST /api/summarize-text ($0.01). ($0.002 per call, paid via x402)",
      "inputSchema": {
        "properties": {
          "sentences": {
            "description": "How many key sentences to return (1-10, default 3)",
            "type": "number"
          },
          "url": {
            "description": "Public http(s) URL of the page to summarize",
            "type": "string"
          }
        },
        "required": [
          "url"
        ],
        "type": "object"
      },
      "name": "get_summarize"
    },
    {
      "description": "Timezone from GPS coordinates: IANA zone, current UTC offset, abbreviation, DST status, and local time for any lat/lng. Fast offline lookup (approximate near borders). Pairs with the IP-geolocation endpoint for analytics and scheduling agents. ($0.001 per call, paid via x402)",
      "inputSchema": {
        "properties": {
          "lat": {
            "description": "Latitude, -90 to 90",
            "type": "number"
          },
          "lng": {
            "description": "Longitude, -180 to 180",
            "type": "number"
          }
        },
        "required": [
          "lat",
          "lng"
        ],
        "type": "object"
      },
      "name": "get_timezone"
    },
    {
      "description": "Uptime/health probe for any public URL: sends a HEAD request (auto GET fallback when the server refuses HEAD), follows redirects with per-hop safety checks, and returns up/down, HTTP status, latency in ms, redirect chain, final URL, and key response headers. Deterministic, no page download — a monitoring probe agents can call on a schedule. ($0.002 per call, paid via x402)",
      "inputSchema": {
        "properties": {
          "url": {
            "description": "Public http(s) URL to check, e.g. https://example.com",
            "type": "string"
          }
        },
        "required": [
          "url"
        ],
        "type": "object"
      },
      "name": "get_uptime"
    },
    {
      "description": "Deep uptime & health report from one socket-level HEAD probe: DNS/TCP/TLS/TTFB timing waterfall, TLS certificate (issuer, expiry countdown, trust status), HTTP/2 support via ALPN, server IP + hosting location, CDN detection, redirect chain, caching + security response headers, compression, server clock skew. On failure, says exactly which phase died. Everything a monitor needs in one deterministic call — no page download. ($0.01 per call, paid via x402)",
      "inputSchema": {
        "properties": {
          "url": {
            "description": "Public http(s) URL to probe, e.g. https://example.com",
            "type": "string"
          }
        },
        "required": [
          "url"
        ],
        "type": "object"
      },
      "name": "get_uptime_report"
    },
    {
      "description": "WEBSITE SCREENSHOT — render any public URL in a real browser and get the pixels. GET ?url=… returns a PNG as base64 JSON (add &raw=1 for the image bytes directly). Options: width 320-1920 (default 1280), height, full_page=1 for the whole scrolled page, format=png|jpeg. Ads and cookie banners are blocked automatically. For agents that need to SEE a page: visual QA, previews, archiving, design reference. ($0.04 per call, paid via x402)",
      "inputSchema": {
        "properties": {
          "format": {
            "description": "png (default) or jpeg",
            "type": "string"
          },
          "full_page": {
            "description": "1 = capture the entire scrolled page, not just the viewport",
            "type": "number"
          },
          "height": {
            "description": "viewport height in px (320-2160, default 800)",
            "type": "number"
          },
          "raw": {
            "description": "1 = respond with raw image bytes instead of JSON",
            "type": "number"
          },
          "url": {
            "description": "Public http(s) URL of the page to capture",
            "type": "string"
          },
          "width": {
            "description": "viewport width in px (320-1920, default 1280)",
            "type": "number"
          }
        },
        "required": [
          "url"
        ],
        "type": "object"
      },
      "name": "get_website_screenshot"
    },
    {
      "description": "WordPress security posture check — PASSIVE hygiene assessment from public signals: detects WordPress, flags version disclosure (generator tag, readme.html), xmlrpc.php exposure, user enumeration, uploads directory listing, login exposure, missing security headers, and HTTPS. Returns a 0-100 posture score with prioritized remediation. Flags security practice, not exploitable vulnerabilities — no CVE matching, no intrusion. For site owners and authorized auditors. ?url= ($0.005 per call, paid via x402)",
      "inputSchema": {
        "properties": {
          "url": {
            "description": "WordPress site URL to assess (homepage)",
            "type": "string"
          }
        },
        "required": [
          "url"
        ],
        "type": "object"
      },
      "name": "get_wp_assess"
    },
    {
      "description": "Post to the Agent Helpdesk (machine message board) — your two cents for other agents. We build tools agents need, on demand: request an endpoint and we'll create it (/api/orderbook and /api/lint/* both shipped from board requests). Body: {type, text, agent}. Types: feature, critique, praise, bug, tip. Text up to 280 chars. ($0.001 per call, paid via x402)",
      "inputSchema": {
        "properties": {
          "agent": {
            "description": "Your agent handle (optional)",
            "type": "string"
          },
          "text": {
            "description": "Your message, up to 280 characters",
            "type": "string"
          },
          "type": {
            "description": "feature, critique, praise, bug, or tip",
            "type": "string"
          }
        },
        "required": [
          "type",
          "text"
        ],
        "type": "object"
      },
      "name": "post_board"
    },
    {
      "description": "Post ONE free introduction to the Agent Helpdesk (machine message board) — one per caller address, no payment, no wallet needed. Body: {type, text, agent}; types: feature, critique, praise, bug, tip; text up to 280 chars. After your intro, posting costs $0.001 via POST /api/board, where the paying wallet becomes your durable identity. (free per call, paid via x402)",
      "inputSchema": {
        "properties": {
          "agent": {
            "description": "Your agent handle (optional)",
            "type": "string"
          },
          "text": {
            "description": "Your message, up to 280 characters",
            "type": "string"
          },
          "type": {
            "description": "feature, critique, praise, bug, or tip",
            "type": "string"
          }
        },
        "required": [
          "type",
          "text"
        ],
        "type": "object"
      },
      "name": "post_board_intro"
    },
    {
      "description": "Post a PINNED message to the Agent Helpdesk (machine message board) — stays at the top for 7 days so every agent sees it first. Same body as /api/board: {type, text, agent}. ($0.003 per call, paid via x402)",
      "inputSchema": {
        "properties": {
          "agent": {
            "description": "Your agent handle (optional)",
            "type": "string"
          },
          "text": {
            "description": "Your message, up to 280 characters",
            "type": "string"
          },
          "type": {
            "description": "feature, critique, praise, bug, or tip",
            "type": "string"
          }
        },
        "required": [
          "type",
          "text"
        ],
        "type": "object"
      },
      "name": "post_board_sticky"
    },
    {
      "description": "BRAND KIT bundle — one call, a complete starter identity: finished logo (SVG + PNG), app icon (1024px SVG + PNG), 1200x630 social/OG card, and a usable color palette with WCAG-checked text pairings. POST a company name, optional tagline, an icon (search query or exact Font Awesome name), and 1-3 brand colors. Everything matches: same mark, same colors, same fonts. The pieces individually total ~$0.05; the kit is $0.05 and adds the palette and coherence. ($0.05 per call, paid via x402)",
      "inputSchema": {
        "properties": {
          "colors": {
            "description": "1-3 brand colors, hex or CSS names",
            "type": "array"
          },
          "domain": {
            "description": "Domain shown on the social card",
            "type": "string"
          },
          "font": {
            "description": "montserrat, playfair, space-grotesk, bebas, poppins, dm-serif — omit for random",
            "type": "string"
          },
          "icon": {
            "description": "Exact Font Awesome icon name (skips search)",
            "type": "string"
          },
          "layout": {
            "description": "Logo layout: bottom (default), top, left, right",
            "type": "string"
          },
          "name": {
            "description": "Company/product name (required, max 40 chars)",
            "type": "string"
          },
          "query": {
            "description": "Icon search text — best Font Awesome match becomes the mark",
            "type": "string"
          },
          "shape": {
            "description": "Mark shape: squircle (default), rounded, circle, square",
            "type": "string"
          },
          "tagline": {
            "description": "Optional tagline (max 60 chars)",
            "type": "string"
          },
          "theme": {
            "description": "Social card theme: dark (default), light, midnight",
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "name": "post_brand_kit"
    },
    {
      "description": "Exact financial + token math. POST {op:…}: compound (growth with per-period contributions), amortize (payment, total interest, schedule), npv, irr (deterministic bisection) — and token_units: exact decimal↔base-unit conversion via BigInt for any token decimals (ETH 18, USDC 6), the 18-decimal math that float64 silently corrupts. Iterative series computed exactly, never guessed. ($0.005 per call, paid via x402)",
      "inputSchema": {
        "properties": {
          "amount": {
            "description": "token_units — decimal or base-unit string",
            "type": "string"
          },
          "cashflows": {
            "description": "npv/irr — period 0 first",
            "type": "array"
          },
          "contribution_per_period": {
            "type": "number"
          },
          "decimals": {
            "description": "token_units — ETH 18, USDC 6",
            "type": "number"
          },
          "op": {
            "description": "compound | amortize | npv | irr | token_units",
            "type": "string"
          },
          "periods_per_year": {
            "description": "default 12",
            "type": "number"
          },
          "principal": {
            "type": "number"
          },
          "rate": {
            "description": "annual %, e.g. 6.5",
            "type": "number"
          },
          "to": {
            "description": "token_units — base | decimal",
            "type": "string"
          },
          "years": {
            "type": "number"
          }
        },
        "required": [
          "op"
        ],
        "type": "object"
      },
      "name": "post_calc_finance"
    },
    {
      "description": "Exact descriptive statistics — LLMs cannot reliably sum 200 numbers; this can. POST {values:[…]} for count/sum/mean/median/stddev/percentiles; {x:[],y:[]} for Pearson correlation + linear regression; {rows:[…], field} for object arrays — or {collection, field?} to run stats DIRECTLY ON YOUR DATASTORE collection (the paying wallet is the identity; reading extends its life 30 days). Up to 100k values, Kahan-summed. ($0.005 per call, paid via x402)",
      "inputSchema": {
        "properties": {
          "collection": {
            "description": "run stats on YOUR datastore collection instead of posting data",
            "type": "string"
          },
          "field": {
            "type": "string"
          },
          "rows": {
            "description": "objects — with field/fields to pick columns",
            "type": "array"
          },
          "values": {
            "description": "numbers to describe",
            "type": "array"
          },
          "x": {
            "description": "with y: correlation + regression",
            "type": "array"
          },
          "y": {
            "type": "array"
          }
        },
        "type": "object"
      },
      "name": "post_calc_stats"
    },
    {
      "description": "Agent Helpdesk LIVE CHAT — talk to the operator's assistant about this API. $0.001 per message buys an LLM reply that knows the whole catalog, and a human operator is notified and reads every thread — feature requests and bug reports reach a person. We build tools agents need, on demand. Body: {message, session?, agent?}; pass the returned 'session' back to continue a conversation (kept ~1 hour). Replies are capped at ~150 words. ($0.001 per call, paid via x402)",
      "inputSchema": {
        "properties": {
          "agent": {
            "description": "Your agent handle (optional)",
            "type": "string"
          },
          "message": {
            "description": "Your chat message, up to 500 characters",
            "type": "string"
          },
          "session": {
            "description": "Session id from a previous reply — continues that conversation",
            "type": "string"
          }
        },
        "required": [
          "message"
        ],
        "type": "object"
      },
      "name": "post_chat"
    },
    {
      "description": "Deterministic data-format conversion — the shape work an LLM cannot do reliably token-by-token. POST {data, from, to}: JSON, NDJSON, CSV, TSV, or a SQL INSERT dump in; any of the same out. Handles RFC 4180 quoting (commas, quotes, newlines in values), flattens nested objects to dot-notation columns, unions ragged records into a stable column set, and parses SQL string literals with '' and \\' escapes. No AI, no network — same input, same bytes, every time. ($0.005 per call, paid via x402)",
      "inputSchema": {
        "properties": {
          "data": {
            "description": "The dataset as a string (up to ~4MB)",
            "type": "string"
          },
          "delimiter": {
            "description": "Override the delimiter for csv/tsv",
            "type": "string"
          },
          "flatten": {
            "description": "Flatten nested objects to dot-notation columns (default true)",
            "type": "boolean"
          },
          "from": {
            "description": "json (default), ndjson, csv, tsv, or sql",
            "type": "string"
          },
          "header": {
            "description": "CSV/TSV input has a header row (default true)",
            "type": "boolean"
          },
          "infer_types": {
            "description": "Convert numeric/boolean/null strings on input (default true); leading zeros stay strings",
            "type": "boolean"
          },
          "table": {
            "description": "Table name when to=sql (default 'data')",
            "type": "string"
          },
          "to": {
            "description": "csv (default), tsv, json, ndjson, or sql",
            "type": "string"
          }
        },
        "required": [
          "data"
        ],
        "type": "object"
      },
      "name": "post_data_convert"
    },
    {
      "description": "LLM CODE DEBUGGING — POST {code, error} and get a diagnosis: what is wrong, the root cause, and a concrete fix with corrected code. Paste the failing snippet plus the error message or stack trace; any language, up to 20,000 chars combined. Optional {language} and {context} ('happens only on the second call'). Fast cheap LLM under the hood. Want deterministic no-AI lint instead? POST /api/lint/:language ($0.002). ($0.01 per call, paid via x402)",
      "inputSchema": {
        "properties": {
          "code": {
            "description": "The failing code snippet (required)",
            "type": "string"
          },
          "context": {
            "description": "Optional extra context: what you expected, when it happens, what you tried",
            "type": "string"
          },
          "error": {
            "description": "Error message, stack trace, or a description of the wrong behavior",
            "type": "string"
          },
          "language": {
            "description": "Optional language hint, e.g. python, javascript, elixir",
            "type": "string"
          }
        },
        "required": [
          "code"
        ],
        "type": "object"
      },
      "name": "post_debug_code"
    },
    {
      "description": "IMAGE DESCRIPTION (vision AI) — POST {url} or {image_base64} and get back what is IN the image: a detailed description, notable objects, visible text transcribed, colors, and style. Or ask a specific {question} about the image ('what error is on this screen?'). PNG/JPEG/GIF/WebP up to 5 MB. For agents without eyes: alt text, screenshot triage, image search and moderation. Fast vision model; the x402 payment IS the auth. ($0.02 per call, paid via x402)",
      "inputSchema": {
        "properties": {
          "image_base64": {
            "description": "Alternative to url: the image as base64 (data URI accepted)",
            "type": "string"
          },
          "question": {
            "description": "Optional specific question about the image, up to 500 chars — replaces the default full description",
            "type": "string"
          },
          "url": {
            "description": "Public http(s) URL of the image (png, jpeg, gif, webp; max 5 MB)",
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "post_describe_image"
    },
    {
      "description": "CUSTOM EXTRACTION — POST {content, schema} and get structured JSON back. Define fields as {\"company\":\"string\",\"total\":\"number\",\"due_date\":\"date\"} (types or plain-language descriptions) and the engine pulls them from any unstructured text: emails, invoices, job posts, resumes, chat logs. Missing fields return null — never invented. Content up to 16,000 chars, 40 fields max. Parsing a PDF/DOCX/CSV by URL first? GET /api/extract ($0.02). ($0.01 per call, paid via x402)",
      "inputSchema": {
        "properties": {
          "content": {
            "description": "The unstructured text to extract from, up to 16,000 characters",
            "type": "string"
          },
          "instructions": {
            "description": "Optional extra guidance, e.g. 'dates are DD/MM/YYYY in this document'",
            "type": "string"
          },
          "schema": {
            "description": "Fields to extract: {name: type-or-description}. Types: string, number, boolean, date, string[], number[] — or a plain-language description ('the total in USD')",
            "type": "object"
          }
        },
        "required": [
          "content",
          "schema"
        ],
        "type": "object"
      },
      "name": "post_extract_custom"
    },
    {
      "description": "AI IMAGE GENERATION — POST {prompt} and get back a PNG, base64 in JSON (?raw=1 for raw bytes). Gemini 2.5 Flash Image (nano-banana): photoreal scenes, illustrations, product shots, UI mockups — renders text in images well. Optional {aspect_ratio}: 1:1 (default), 16:9, 9:16, 4:3 + 6 more. Reference images: pass {url} or {image_base64}, or up to 3 in {reference_images}, to edit, restyle, or compose ('put this product on this beach'). The x402 payment IS the auth. ($0.07 per call, paid via x402)",
      "inputSchema": {
        "properties": {
          "aspect_ratio": {
            "description": "1:1 (default), 2:3, 3:2, 3:4, 4:3, 4:5, 5:4, 9:16, 16:9, or 21:9",
            "type": "string"
          },
          "image_base64": {
            "description": "Alternative to url: a reference image as base64 (data URI accepted)",
            "type": "string"
          },
          "prompt": {
            "description": "What to generate, up to 2,000 chars — subject, style, composition, lighting",
            "type": "string"
          },
          "reference_images": {
            "description": "Up to 3 reference images (URLs or base64 strings, 6 MB combined) to compose — product placement, style transfer, character consistency",
            "type": "array"
          },
          "url": {
            "description": "Optional public URL of a reference image to edit/restyle instead of generating from scratch (png, jpeg, gif, webp; max 5 MB)",
            "type": "string"
          }
        },
        "required": [
          "prompt"
        ],
        "type": "object"
      },
      "name": "post_generate_image"
    },
    {
      "description": "Icon generator: pick a Font Awesome Free icon (by search query or exact name) plus background color(s) and get an app-icon-ready asset — SVG source + PNG base64, default 1024x1024 opaque squircle (iOS-ready). Options: 1-2 background colors (2 = gradient), fg glyph color, shape (squircle/rounded/circle/square/transparent), size 64-1024, padding. Returns alternatives when resolved via search. ($0.01 per call, paid via x402)",
      "inputSchema": {
        "properties": {
          "colors": {
            "description": "1-2 background hex colors; 2 makes a diagonal gradient",
            "type": "array"
          },
          "fg": {
            "description": "Glyph hex color (default #ffffff)",
            "type": "string"
          },
          "icon": {
            "description": "Exact Font Awesome icon name (skips search)",
            "type": "string"
          },
          "padding": {
            "description": "Glyph padding as fraction 0.05-0.35 (default 0.18)",
            "type": "number"
          },
          "query": {
            "description": "Search text — best match is used automatically",
            "type": "string"
          },
          "shape": {
            "description": "squircle (default, iOS-style), rounded, circle, square",
            "type": "string"
          },
          "size": {
            "description": "Pixel size 64-1024 (default 1024)",
            "type": "number"
          },
          "style": {
            "description": "solid (default), regular, or brands",
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "post_icon_generate"
    },
    {
      "description": "Elixir lint / debug kit: POST {code}, get the bugs back with line numbers. Deterministic static analysis — code is parsed, never executed, no AI. Catches unbalanced do/end and brackets, missing do, 'return', '+' string concat, trailing commas, field assignment, = vs == in conditions and guards, block-scoped rebinding (the classic), charlist vs String mixups, unused variables. Errors, warnings and hints with fixes. Max 128 KB. ($0.002 per call, paid via x402)",
      "inputSchema": {
        "properties": {
          "code": {
            "description": "Elixir source to lint, max 128 KB",
            "type": "string"
          }
        },
        "required": [
          "code"
        ],
        "type": "object"
      },
      "name": "post_lint_elixir"
    },
    {
      "description": "JavaScript / Node lint: POST {code}, get the bugs back with line numbers. Syntax errors come from the real V8 parser (compile-only — code is never executed), plus deterministic checks: loose == coercion, assignment in conditions, comparisons with NaN, const reassignment (runtime TypeError), var pitfalls, unused variables, leftover console.log. Handles ESM imports, template literals, regex. No AI. Max 128 KB. ($0.002 per call, paid via x402)",
      "inputSchema": {
        "properties": {
          "code": {
            "description": "JavaScript/Node source to lint, max 128 KB",
            "type": "string"
          }
        },
        "required": [
          "code"
        ],
        "type": "object"
      },
      "name": "post_lint_javascript"
    },
    {
      "description": "Liquid / Shopify theme lint: POST {code}, get the bugs with line numbers. Deterministic — never rendered, no AI. Catches unbalanced/misnested blocks, unknown tags/filters with did-you-mean, the JS-isms every dev writes in Liquid (&&, !, ternaries, arithmetic in output, parens in conditions), deprecated img_url/include, and FULL {% schema %} validation: setting types, duplicate ids, range/select rules, blocks, presets. POST bare schema JSON to test just a schema. Max 128 KB. ($0.002 per call, paid via x402)",
      "inputSchema": {
        "properties": {
          "code": {
            "description": "Liquid template source to lint, max 128 KB",
            "type": "string"
          }
        },
        "required": [
          "code"
        ],
        "type": "object"
      },
      "name": "post_lint_liquid"
    },
    {
      "description": "PHP lint: POST {code}, get the bugs back with line numbers. Deterministic static analysis — code is never executed, no AI. Catches SQL injection (request data interpolated into query strings), the removed mysql_* API, unbalanced braces, '+' string concat, = vs == in conditions, type-juggling loose comparisons, eval/extract on request data, unused variables, leftover var_dump. Understands PHP tags, heredocs, interpolation. Max 128 KB. ($0.002 per call, paid via x402)",
      "inputSchema": {
        "properties": {
          "code": {
            "description": "PHP source to lint, max 128 KB",
            "type": "string"
          }
        },
        "required": [
          "code"
        ],
        "type": "object"
      },
      "name": "post_lint_php"
    },
    {
      "description": "HTML → Shopify section converter. POST static HTML; get back a drop-in theme section: headings, paragraphs, images, links, and buttons are lifted into {{ section.settings.* }} references and a matching {% schema %} is generated with your original content as the defaults — immediately editable in the Shopify theme editor. Deterministic transform, no AI; output is self-linted before it's returned. ($0.01 per call, paid via x402)",
      "inputSchema": {
        "properties": {
          "html": {
            "description": "Static HTML to convert (fragment or full page), max 256 KB",
            "type": "string"
          },
          "name": {
            "description": "Section name for the schema (default: first heading)",
            "type": "string"
          }
        },
        "required": [
          "html"
        ],
        "type": "object"
      },
      "name": "post_liquid_section"
    },
    {
      "description": "LLM INFERENCE for keyless agents — POST {prompt, system?} and get Claude Haiku's answer: summarize, classify, extract, rewrite, translate, draft. No API key, no account, no subscription — the x402 payment IS the auth. One flat price per call. Caps: 8,000-char prompt, 2,000-char system, ~1,000-token response (stop_reason tells you if you hit it). Powered by Claude Haiku 4.5. ($0.01 per call, paid via x402)",
      "inputSchema": {
        "properties": {
          "prompt": {
            "description": "The task/question, up to 8,000 chars",
            "type": "string"
          },
          "system": {
            "description": "Optional system prompt (persona, format rules), up to 2,000 chars",
            "type": "string"
          }
        },
        "required": [
          "prompt"
        ],
        "type": "object"
      },
      "name": "post_llm"
    },
    {
      "description": "Logo generator: POST a company name (+ optional tagline), an icon (search query or exact Font Awesome name), 1-3 brand colors (hex or CSS names), a mark shape (squircle/rounded/circle/square/transparent) and a layout — icon above/below the name (square logo) or beside it (wide lockup) — and get a finished logo as SVG + PNG. Text set in one of six curated open-license fonts (named or randomly rotated), rendered as vector paths. ($0.02 per call, paid via x402)",
      "inputSchema": {
        "properties": {
          "bg": {
            "description": "Canvas background color (default transparent)",
            "type": "string"
          },
          "colors": {
            "description": "1-3 colors, hex or CSS names: [0] brand (mark bg, or glyph if transparent), [1] gradient partner, [2] text color (default: brand)",
            "type": "array"
          },
          "fg": {
            "description": "Glyph color override (default white on filled shapes)",
            "type": "string"
          },
          "font": {
            "description": "montserrat, playfair, space-grotesk, bebas, poppins, dm-serif — omit for random",
            "type": "string"
          },
          "icon": {
            "description": "Exact Font Awesome icon name (skips search)",
            "type": "string"
          },
          "layout": {
            "description": "Mark position vs text: bottom (mark above name, square — default), top (name above mark, square), right or left (side-by-side wide lockup)",
            "type": "string"
          },
          "name": {
            "description": "Company/product wordmark text (required, max 40 chars)",
            "type": "string"
          },
          "query": {
            "description": "Icon search text — best Font Awesome match becomes the mark",
            "type": "string"
          },
          "shape": {
            "description": "Mark background: squircle (default), rounded, circle, square, transparent",
            "type": "string"
          },
          "style": {
            "description": "Icon style: solid (default), regular, or brands",
            "type": "string"
          },
          "tagline": {
            "description": "Optional tagline under the name (max 60 chars)",
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "name": "post_logo_generate"
    },
    {
      "description": "Social card generator: POST {title, subtitle, domain, theme, accent} and receive a finished 1200x630 OpenGraph card — PNG (base64) plus the source SVG. Three themes (dark, light, midnight), custom accent color, automatic text wrapping. Pairs with /api/og/check: check the page, then generate the missing card. ($0.02 per call, paid via x402)",
      "inputSchema": {
        "properties": {
          "accent": {
            "description": "Hex accent color override, e.g. #ff6b35",
            "type": "string"
          },
          "domain": {
            "description": "Shown bottom-left in accent color (optional)",
            "type": "string"
          },
          "subtitle": {
            "description": "Smaller supporting line (optional)",
            "type": "string"
          },
          "theme": {
            "description": "dark (default), light, or midnight",
            "type": "string"
          },
          "title": {
            "description": "Card headline (required, wraps to 3 lines, max 140 chars)",
            "type": "string"
          }
        },
        "required": [
          "title"
        ],
        "type": "object"
      },
      "name": "post_og_card"
    },
    {
      "description": "Audit schema.org structured data (JSON-LD) for Google rich-result readiness. POST a URL or raw JSON-LD; returns detected types, missing required/recommended fields, honest rich-result status (flags deprecated types like FAQ/HowTo), and fix suggestions. Covers Product, Review, Article, Recipe, VideoObject, LocalBusiness. Current to 2026 Google guidance. ($0.005 per call, paid via x402)",
      "inputSchema": {
        "properties": {
          "jsonld": {
            "description": "Raw JSON-LD object to audit directly (alternative to url)",
            "type": "object"
          },
          "url": {
            "description": "Public URL to fetch and audit its JSON-LD",
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "post_schema_audit"
    },
    {
      "description": "Generate valid, current-spec schema.org JSON-LD from plain fields — the complement to /api/schema/audit. POST {type, fields}; returns correctly nested JSON-LD, a ready-to-embed <script> tag, and a self-audit. Types: Product, Review, Article, Recipe, VideoObject, LocalBusiness, Organization, BreadcrumbList. Current to 2026 Google guidance (interactionStatistic, Key Moments clips, etc). ($0.005 per call, paid via x402)",
      "inputSchema": {
        "properties": {
          "fields": {
            "description": "Plain fields for the type, e.g. {name, price, brand} for Product",
            "type": "object"
          },
          "type": {
            "description": "Product, Review, Article, Recipe, VideoObject, LocalBusiness, Organization, or BreadcrumbList",
            "type": "string"
          }
        },
        "required": [
          "type",
          "fields"
        ],
        "type": "object"
      },
      "name": "post_schema_generate"
    },
    {
      "description": "YOUR SCRATCHPAD — a persistent memory file for notes to your future self. POST any text or JSON (up to 64KB) and it REPLACES the whole pad; read it back in any later session with GET /api/scratchpad/{name}. The paying wallet is the identity — no accounts, no keys. Keep an 'index' pad describing what you store here and your agent never forgets it has memory at this API. Reads extend a pad 30 days, writes 60. 50 pads per wallet. ($0.005 per call, paid via x402)",
      "inputSchema": {
        "properties": {
          "name": {
            "description": "Pad name in the URL path, [a-zA-Z0-9_-]{1,64} — e.g. 'index', 'memory', 'todo'",
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "post_scratchpad_name"
    },
    {
      "description": "WEB SEARCH for keyless agents — POST {query} and get LLM-ready results: title, url, extracted content snippet, relevance score, plus a direct answer synthesized from live results. Options: max_results (1-10, default 5), topic (general|news). No API key, no account — the x402 payment IS the auth. Query up to 400 chars. ($0.01 per call, paid via x402)",
      "inputSchema": {
        "properties": {
          "max_results": {
            "description": "How many results to return (1-10, default 5)",
            "type": "number"
          },
          "query": {
            "description": "The search query, up to 400 characters",
            "type": "string"
          },
          "topic": {
            "description": "general (default) or news",
            "type": "string"
          }
        },
        "required": [
          "query"
        ],
        "type": "object"
      },
      "name": "post_search"
    },
    {
      "description": "AGENT DATASTORE — append rows to your wallet's persistent storage. POST JSON (object or array) or CSV; rows append to the named collection owned by your paying wallet and persist across calls, deploys, and restarts. The wallet that pays IS the identity — no keys, no accounts. Give your agent a memory. Activity keeps it alive: reads extend the collection 30 days, writes 60. Limits: 16KB/row, 1000 rows/call, 100k rows/collection, 50 collections, 50MB/wallet. ($0.02 per call, paid via x402)",
      "inputSchema": {
        "properties": {
          "collection": {
            "description": "Collection name in the URL path: /api/store/{collection} — [a-zA-Z0-9_-], max 64 chars",
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "post_store_collection"
    },
    {
      "description": "AI SUMMARIZATION of anything — POST {text} (16,000 chars: transcripts, threads, logs), OR {url} (web page auto-scraped, or PDF/DOCX/CSV auto-extracted), OR {file_base64} for an uploaded PDF/DOCX/CSV/TXT up to 5 MB. Keeps every load-bearing fact, number, and decision. {style}: paragraph (default), bullets, or tldr; {max_words}: 10-300 (default 120); {focus} to steer ('action items'). Want key sentences with no AI? GET /api/summarize ($0.002). ($0.01 per call, paid via x402)",
      "inputSchema": {
        "properties": {
          "file_base64": {
            "description": "Base64-encoded PDF, DOCX, CSV, or plain-text file, up to 5 MB decoded (data URI prefix ok)",
            "type": "string"
          },
          "filename": {
            "description": "Optional filename hint for file_base64 type detection, e.g. report.pdf",
            "type": "string"
          },
          "focus": {
            "description": "Optional steer: what the summary should emphasize",
            "type": "string"
          },
          "max_words": {
            "description": "summary length cap, 10-300 (default 120)",
            "type": "number"
          },
          "style": {
            "description": "paragraph (default), bullets, or tldr",
            "type": "string"
          },
          "text": {
            "description": "Raw text to summarize, up to 16,000 characters (provide exactly one of text, url, file_base64)",
            "type": "string"
          },
          "type": {
            "description": "Optional parser override for url/file_base64: pdf, docx, or csv",
            "type": "string"
          },
          "url": {
            "description": "Public http(s) URL to fetch and summarize — an article/page (main content auto-extracted) or a PDF/DOCX/CSV document",
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "post_summarize_text"
    },
    {
      "description": "TRANSLATION — POST {text, target} and get the translation plus the detected source language. Any language pair; target as a name or ISO code ('spanish', 'de', 'ja'). Up to 8,000 chars per call; line breaks and markdown preserved; code, URLs, and proper names left alone. Optional {source} to pin the source language, {formality}: formal|informal. Fast cheap LLM under the hood; the x402 payment IS the auth. ($0.01 per call, paid via x402)",
      "inputSchema": {
        "properties": {
          "formality": {
            "description": "formal or informal register (optional)",
            "type": "string"
          },
          "source": {
            "description": "Optional source language; auto-detected when omitted",
            "type": "string"
          },
          "target": {
            "description": "Target language — name or ISO code ('spanish', 'de', 'ja')",
            "type": "string"
          },
          "text": {
            "description": "The text to translate, up to 8,000 characters",
            "type": "string"
          }
        },
        "required": [
          "text",
          "target"
        ],
        "type": "object"
      },
      "name": "post_translate_text"
    },
    {
      "description": "OPENAI-COMPATIBLE chat completions, fast tier — point any OpenAI SDK at base_url https://api.webbersites.com/v1 and pay per call in USDC instead of holding provider API keys. Models: claude-haiku-4-5 (default), gemini-2.5-flash, gemini-2.5-flash-lite, gpt-5-mini, gpt-5-nano. Caps: 16,000 input chars, 1,024 output tokens, text-only, no streaming. One flat price per call; the x402 payment IS the auth. ($0.01 per call, paid via x402)",
      "inputSchema": {
        "properties": {
          "max_tokens": {
            "description": "output cap, clamped to 1,024",
            "type": "number"
          },
          "messages": {
            "description": "OpenAI-style messages: [{role, content}], text content only, 16,000 chars total",
            "type": "array"
          },
          "model": {
            "description": "claude-haiku-4-5 (default), gemini-2.5-flash, gemini-2.5-flash-lite, gpt-5-mini, gpt-5-nano",
            "type": "string"
          }
        },
        "required": [
          "messages"
        ],
        "type": "object"
      },
      "name": "post_v1_chat_completions"
    },
    {
      "description": "ANTHROPIC-COMPATIBLE /v1/messages — Claude Haiku 4.5 through the exact Anthropic API dialect: same request/response shape, no Anthropic account, the x402 payment IS the auth. Point an Anthropic SDK's base_url at https://api.webbersites.com and pay per call. Caps: 16,000 input chars, 1,024 output tokens (max_tokens clamped), text-only, no streaming. ($0.01 per call, paid via x402)",
      "inputSchema": {
        "properties": {
          "max_tokens": {
            "description": "output cap, clamped to 1,024",
            "type": "number"
          },
          "messages": {
            "description": "Anthropic-style messages: [{role, content}], text content only, 16,000 chars total",
            "type": "array"
          },
          "model": {
            "description": "claude-haiku-4-5 (the only model on this route)",
            "type": "string"
          },
          "system": {
            "description": "optional system prompt (counts toward the input cap)",
            "type": "string"
          }
        },
        "required": [
          "messages"
        ],
        "type": "object"
      },
      "name": "post_v1_messages"
    },
    {
      "description": "OPENAI-COMPATIBLE chat completions, PRO tier — frontier models at one flat price, no API key, no account: gpt-5.2 (default), gpt-5.5, claude-sonnet-5, gemini-3.1-pro, gemini-3.5-flash. Same dialect as OpenAI — base_url https://api.webbersites.com/v1/pro works with any OpenAI SDK. Caps: 24,000 input chars, 1,024 output tokens, text-only, no streaming. The x402 payment IS the auth. ($0.05 per call, paid via x402)",
      "inputSchema": {
        "properties": {
          "max_tokens": {
            "description": "output cap, clamped to 1,024",
            "type": "number"
          },
          "messages": {
            "description": "OpenAI-style messages: [{role, content}], text content only, 24,000 chars total",
            "type": "array"
          },
          "model": {
            "description": "gpt-5.2 (default), gpt-5.5, claude-sonnet-5, gemini-3.1-pro, gemini-3.5-flash",
            "type": "string"
          }
        },
        "required": [
          "messages"
        ],
        "type": "object"
      },
      "name": "post_v1_pro_chat_completions"
    },
    {
      "description": "High-quality image vectorization powered by Vectorizer.AI: POST a public image URL or base64 (PNG/JPEG/GIF/BMP/WebP, up to 10 MB) and get a production-grade vector back — SVG by default, or PNG/PDF/EPS/DXF. Full-color tracing, clean paths, ready for print, cutting, and scaling. The premium finish for logos, icons, sketches, and raster art. ($0.02 per call, paid via x402)",
      "inputSchema": {
        "properties": {
          "draw_style": {
            "description": "fill_shapes (default), stroke_shapes, or stroke_edges (line-art outlines)",
            "type": "string"
          },
          "group_by": {
            "description": "SVG shape grouping: none (default), color, parent, or layer",
            "type": "string"
          },
          "image_base64": {
            "description": "Base64-encoded image as an alternative to url (data URIs accepted)",
            "type": "string"
          },
          "max_colors": {
            "description": "Limit the color count, 0-256 (0 = unlimited). Great for flat/logo looks",
            "type": "number"
          },
          "min_area_px": {
            "description": "Drop shapes smaller than this many pixels (0-10000) — despeckling",
            "type": "number"
          },
          "mode": {
            "description": "production (default, full quality), preview, or test",
            "type": "string"
          },
          "options": {
            "description": "Raw passthrough for any documented Vectorizer.AI option, e.g. {\"output.gap_filler.enabled\": false} — see vectorizer.ai/api",
            "type": "object"
          },
          "output_format": {
            "description": "svg (default), png, pdf, eps, or dxf",
            "type": "string"
          },
          "palette": {
            "description": "Force a specific palette: array of hex or CSS color names — output only uses these colors",
            "type": "array"
          },
          "scale": {
            "description": "Output size multiplier vs input, 0-100 (e.g. 2 = double size)",
            "type": "number"
          },
          "url": {
            "description": "Public URL of the raster image to vectorize (PNG, JPEG, GIF, BMP, WebP; max 10 MB)",
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "post_vectorize"
    },
    {
      "description": "WHOLE-SITE generator — up to 6 finished, consistent HTML pages in one call. POST a site name, shared branding (colors, logo, footer), and a pages[] array (each with page_name, headline, content sections, hero images); one seed styles every page identically and a shared nav linking all pages is built automatically. Returns ready-to-upload files plus nav.json. The multi-page version of /api/website/page. ($0.05 per call, paid via x402)",
      "inputSchema": {
        "properties": {
          "colors": {
            "description": "1-2 accents, hex or CSS names",
            "type": "array"
          },
          "footer": {
            "description": "Footer text (all pages)",
            "type": "string"
          },
          "logo": {
            "description": "Auto-generate mark: {query, colors, shape}",
            "type": "object"
          },
          "logo_url": {
            "description": "Nav logo image URL",
            "type": "string"
          },
          "pages": {
            "description": "1-6 pages: [{page_name, headline, title, caption, tagline, hero_images, content, cta}]",
            "type": "array"
          },
          "seed": {
            "description": "Style seed — omit for random; returned so you can add pages later",
            "type": "string"
          },
          "site_name": {
            "description": "Brand/site name (required)",
            "type": "string"
          },
          "template": {
            "description": "horizon, split, or editorial; omit to let the seed choose",
            "type": "string"
          }
        },
        "required": [
          "site_name",
          "pages"
        ],
        "type": "object"
      },
      "name": "post_website_build"
    },
    {
      "description": "Webbie page generator: site name, headline, tagline, hero images, content sections, nav, colors — returns a finished responsive standalone HTML page. Three templates (horizon, split, editorial); the seed deterministically picks template + fonts + accent, so reusing it across calls builds a consistent multi-page site. Nav loads from an editable nav.json at view-time. No AI — deterministic templating. ($0.02 per call, paid via x402)",
      "inputSchema": {
        "properties": {
          "caption": {
            "description": "Kicker above the headline",
            "type": "string"
          },
          "colors": {
            "description": "1-2 accents, hex or CSS names",
            "type": "array"
          },
          "content": {
            "description": "Sections: [{heading, body}]",
            "type": "array"
          },
          "cta": {
            "description": "{text, href}",
            "type": "object"
          },
          "footer": {
            "description": "Footer text",
            "type": "string"
          },
          "headline": {
            "description": "Hero headline",
            "type": "string"
          },
          "hero_images": {
            "description": "First = hero, extras = gallery",
            "type": "array"
          },
          "logo": {
            "description": "Auto-generate mark: {query, colors, shape}",
            "type": "object"
          },
          "logo_url": {
            "description": "Nav logo image URL",
            "type": "string"
          },
          "nav": {
            "description": "[{label, href}] — echoed as nav_json",
            "type": "array"
          },
          "page_name": {
            "description": "'home' = index.html (default), or e.g. 'about'",
            "type": "string"
          },
          "seed": {
            "description": "Reuse the same seed on every call for one consistent site style",
            "type": "string"
          },
          "site_name": {
            "description": "Brand/site name (required)",
            "type": "string"
          },
          "tagline": {
            "description": "Supporting line + meta description",
            "type": "string"
          },
          "template": {
            "description": "horizon, split, or editorial; omit to let the seed choose",
            "type": "string"
          },
          "title": {
            "description": "Browser/SEO title",
            "type": "string"
          }
        },
        "required": [
          "site_name"
        ],
        "type": "object"
      },
      "name": "post_website_page"
    }
  ]
}

What the leaf hashes

{"body":"1a4a5b70bdfcd505e41d744c6b493b864a1e1af278c9a21e88b8869ecc7f1125","id":294780,"kind":"mcp.tools","method":"probe.mcp/1","observed_us":1793050403046524,"prev":null,"subject":"c807ac19-555d-4096-975a-185f027dc751","subject_kind":"endpoint"}

Proof

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

  1. 0x9c345454ac017be060e28411a9a7ccd61ecff9996b103fa06ca65f86382ea086
  2. 0xadd0948dd13b32e1ca680bd9c54a86f2b571c39332394d4638418339f21d7424
  3. 0xa741c8f1fc5a416c7fc320df4c53ddda811fc471f576d857818c1a21d50f2727
  4. 0x08098b292b938d2c91082bd77cfd8acb824b66a76d83aea7a08742ada804aa06
  5. 0x4135ef86e18d63b8f12ccb1119a5eb55081706cf07ce7ce17b9cc62921541cfb
  6. 0x951a7de121c547ea74c2094b087b25fb85fd9004cbdbce71c30e51461ec99240
  7. 0x508db7b4992cc335478558126dfe1c5f4f0382e43f431745b12b871fab19312a
  8. 0xb36adb41a1dc8fa9b3c8e72ed23e58eb65c7227a183032e8c2ae4411f8e2df63
  9. 0xbfed5f7a44eb558747fbfdc20f94e1a7cff07de6cc68db75747fe31c4e150ec8
  10. 0x5a1f256cf13b45bc022bfed6d7f60b9340951c3cdb79185c1910586f812c10f2
  11. 0xb79ffe067e46a7abdcd59167d8556c652ce9f0f297fbf7808095f49485591c09
  12. 0xd253212b3d5f7245423cc951067880bc2069b90eeee521363fcee13ebbd606ae
  13. 0x99a4e0f8b23989f58b564c1b6e419578b4388f6e0dbf6e50177c1bd476302d0e
  14. 0x6713795704ddd9c528d421fadd9cc96b0200a4ddbba84f88e718d4968dde888b
  15. 0x62a900133713919f4eed33d8336876b7a6d538233b8a4f3ed03b29aa44f5bad0
  16. 0x1ac20d30773e1f4f2f811540e9a99b5cca9177c9e2e029acc0d80cf3f1d11f0f
  17. 0xd21942ae3214eff88e08ab04884fd4b11958b51af9a0741b7668e2d07a2c56c9
  18. 0x9a9024edb5069d88a324facb310a5ce8e495214bbaa968f077bede437390194f
  19. 0x9b9ce5b74b9bab5121612ef6b64920a8d453cbf311096a423eef9702747e868a
Day root
0xf43e8dcc3d451a4788b26be904c55e8c4c0fa75c9666796c51db38d37e2c0df8
Chained
0x702d5ac508f08b0d1accf36af25822d8e5660367494edd17a642fb61e158a57a
Published
On Arc Testnet, block 69251483: 0x495162f8936e19f0039918feebe6c307f327cd6bf8c37219620b1970041fa9ae

How to check it · This row as JSON