io.github.webberdesign/webbersites-x402-data-api
45 pay-per-call AI agent tools: scraping, SEO, crypto data, lint, agent memory. x402 USDC on Base.The vendor's description, from its MCP Registry listing.
Every public check ran and passed. Public audit: we connect as an AI client would, list the tools and check what they say. We do not run them. How we audit
- Does it work?
- YesConnected in 299 ms.
- Sign-up?
- None neededIt answered without any account or key.
- Can it change things?
- YesSome tools say they can change things. Your AI client should ask you first.
https://api.webbersites.com/mcpSource code Website Streamable HTTP · protocol 2025-11-25 · server version 1.0.0
What we checked
Security
Passed: Connections are encrypted (HTTPS).
Passed: No hidden instructions found in tool text.
Safety labels
Note: 36 tools are labelled as able to change things.
Expected for tools that send, write or buy. Your AI client should ask before calling them.
- post_llm
- post_calc_stats
- post_calc_finance
- post_schema_audit
- post_og_card
- post_data_convert
- post_icon_generate
- post_logo_generate
- and 28 more
Passed: Every tool says whether it only reads or can change things.
Tools
Passed: 78 tools listed.
Passed: Every tool describes its inputs with a valid schema.
Protocol
Passed: The MCP handshake works (Streamable HTTP).
Passed: Protocol version 2025-11-25 (latest).
Passed: Unknown requests are refused.
Connection
Passed: The server responds.
Tools (78)
As the server describes them. The labels are the server's own: it says whether each tool only reads or can change things.
- get_price_coinCurrent 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)Read-only
- get_report_coinEnriched 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 writte…Read-only
- get_orderbookL2 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 analyt…Read-only
- get_scrapeFetch 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 vi…Read-only
- get_summarizeQuick 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 ful…Read-only
- get_website_screenshotWEBSITE 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 12…Read-only
- get_timezoneTimezone 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 e…Read-only
- post_llmLLM 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 pa…Can change things
- get_calcExact 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, log…Read-only
- post_calc_statsExact 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;…Can change things
- get_calc_datesExact 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 →…Read-only
- post_calc_financeExact financial + token math. POST {op:…}: compound (growth with per-period contributions), amortize (payment, total interest, schedule), npv, irr (deterministic bisection) — and token_units: exact d…Can change things
- get_convertLive 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 conv…Read-only
- get_geoIP 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)Read-only
- get_pingCheapest 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 r…Read-only
- get_uptimeUptime/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…Read-only
- get_uptime_reportDeep 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…Read-only
- get_platformWhat 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, We…Read-only
- post_schema_auditAudit 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 d…Can change things
- get_email_verifyEmail 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…Read-only
- get_og_checkSocial 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 proble…Read-only
- post_og_cardSocial 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 ac…Can change things
- get_qrQR 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, def…Read-only
- post_data_convertDeterministic 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 RF…Can change things
- get_barcodeBarcode 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, cod…Read-only
- get_seo_alt_checkAlt-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 alt…Read-only
- get_a11y_contrastWCAG 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…Read-only
- get_a11y_checkWCAG 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, ac…Read-only
- get_seo_robots_checkrobots.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…Read-only
- get_seo_metadataRaw 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, it…Read-only
- get_seo_head_checkHead/meta SEO audit: title and description with truncation-length warnings, robots meta (flags NOINDEX), canonical status (self-referencing vs pointing elsewhere), hreflang validation, charset, viewp…Read-only
- get_seo_sitemap_checkSitemap 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…Read-only
- get_seo_navNavigation 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 t…Read-only
- get_seo_linksInternal-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…Read-only
- get_seo_full_auditFULL 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 accessibil…Read-only
- get_music_albumAlbum 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…Read-only
- get_music_coverAlbum 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 sav…Read-only
- get_extractDocument 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…Read-only
- get_icon_searchSearch 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 nam…Read-only
- post_icon_generateIcon 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 (iO…Can change things
- post_logo_generateLogo 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/transpar…Can change things
- post_vectorizeHigh-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/E…Can change things
- post_website_pageWebbie 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…Can change things
- get_wp_assessWordPress security posture check — PASSIVE hygiene assessment from public signals: detects WordPress, flags version disclosure (generator tag, readme.html), xmlrpc.php exposure, user enumeration, upl…Read-only
- get_dnsDNS 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 resea…Read-only
- post_schema_generateGenerate 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 se…Can change things
- post_lint_elixirElixir 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, '…Can change things
- post_lint_javascriptJavaScript / 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 == coerc…Can change things
- post_lint_phpPHP 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 re…Can change things
- post_lint_liquidLiquid / 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-is…Can change things
- post_liquid_sectionHTML → 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 matchi…Can change things
- get_seo_site_auditSITE-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 st…Read-only
- post_brand_kitBRAND 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.…Can change things
- post_website_buildWHOLE-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 secti…Can change things
- post_store_collectionAGENT 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, deploy…Can change things
- get_store_collectionAGENT 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 s…Read-only
- get_storeAGENT 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)Read-only
- delete_store_collectionAGENT 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)Can change things
- post_scratchpad_nameYOUR 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/…Can change things
- get_scratchpad_nameRead 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 e…Read-only
- get_scratchpadList 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)Read-only
- delete_scratchpad_nameDelete 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)Can change things
- post_boardPost 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/* bo…Can change things
- post_board_stickyPost 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 vi…Can change things
- post_chatAgent 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…Can change things
- post_searchWEB 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_result…Can change things
- post_describe_imageIMAGE 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…Can change things
- post_generate_imageAI 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 — rende…Can change things
- post_translate_textTRANSLATION — 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…Can change things
- post_summarize_textAI 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/…Can change things
- post_debug_codeLLM 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; an…Can change things
- post_extract_customCUSTOM 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…Can change things
- post_v1_chat_completionsOPENAI-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…Can change things
- post_v1_pro_chat_completionsOPENAI-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 a…Can change things
- post_v1_messagesANTHROPIC-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…Can change things
- post_board_introPost 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;…Can change things
- get_boardRead 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: reque…Read-only
- get_pulsePublic 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 re…Read-only
Audit history
- Nov 13Passed
What we sent
Every request in this audit, with the answer and how long it took. We never send credentials and never call a tool.
| Request | Answer | Time |
|---|---|---|
| initialize | HTTP 200 | 299 ms |
| initialized | HTTP 202 | 46 ms |
| tools/list | HTTP 200 | 153 ms |
| resources/list | HTTP 200 | 40 ms |
| prompts/list | HTTP 200 | 49 ms |
| unknown-method | HTTP 200 | 53 ms |
Run this server, or disagree with the result?
Fix the issue and it shows in the next weekly audit, or email us to ask for a re-audit or to dispute a finding. Read how we audit for what each check means.
{
"mcpServers": {
"io-github-webberdesign-webbersites-x402-data-api": {
"type": "http",
"url": "https://api.webbersites.com/mcp"
}
}
}{
"server": {
"name": "io.github.webberdesign/webbersites-x402-data-api",
"title": "io.github.webberdesign/webbersites-x402-data-api",
"url": "https://api.webbersites.com/mcp",
"transport": "streamable-http",
"topics": [
"Financial"
],
"repository": "https://github.com/webberdesign/api.webbersites.com",
"website": "https://x402.webbersites.com",
"inRegistry": true
},
"audit": {
"slug": "io-github-webberdesign-webbersites-x402-data-api",
"url": "https://api.webbersites.com/mcp",
"auditedAt": "2026-11-13T16:27:36.833Z",
"firstAuditedAt": "2026-11-13T15:59:23.179Z",
"auditor": "1.0.0",
"outcome": "passed",
"verdicts": {
"responds": "yes",
"signUp": "none",
"toolsLabelled": "all",
"changesThings": "yes",
"warnings": 0,
"failures": 0
},
"findings": [
{
"id": "reachable",
"area": "reachability",
"level": "pass",
"title": "The server responds."
},
{
"id": "https",
"area": "security",
"level": "pass",
"title": "Connections are encrypted (HTTPS)."
},
{
"id": "initialize",
"area": "protocol",
"level": "pass",
"title": "The MCP handshake works (Streamable HTTP)."
},
{
"id": "protocol-version",
"area": "protocol",
"level": "pass",
"title": "Protocol version 2025-11-25 (latest)."
},
{
"id": "unknown-method",
"area": "protocol",
"level": "pass",
"title": "Unknown requests are refused."
},
{
"id": "tools-list",
"area": "tools",
"level": "pass",
"title": "78 tools listed."
},
{
"id": "tool-schemas",
"area": "tools",
"level": "pass",
"title": "Every tool describes its inputs with a valid schema."
},
{
"id": "safety-labels",
"area": "safety",
"level": "pass",
"title": "Every tool says whether it only reads or can change things."
},
{
"id": "changes-things",
"area": "safety",
"level": "info",
"title": "36 tools are labelled as able to change things.",
"detail": "Expected for tools that send, write or buy. Your AI client should ask before calling them.",
"evidence": [
"post_llm",
"post_calc_stats",
"post_calc_finance",
"post_schema_audit",
"post_og_card",
"post_data_convert",
"post_icon_generate",
"post_logo_generate",
"and 28 more"
]
},
{
"id": "tool-poisoning",
"area": "security",
"level": "pass",
"title": "No hidden instructions found in tool text."
}
],
"server": {
"name": "webbersites-x402",
"version": "1.0.0",
"protocolVersion": "2025-11-25",
"transport": "streamable-http"
},
"toolCount": 78,
"toolsHash": "9ea29132a81217a0bc72994403f41542e8ebbd1000e34c2c40874ae51225314e",
"latencyMs": 299,
"history": [
{
"date": "2026-11-13",
"outcome": "passed",
"tools": 78
}
]
},
"tools": [
{
"name": "get_price_coin",
"title": "Get Price Coin",
"readOnly": true,
"destructive": false,
"openWorld": true,
"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)"
},
{
"name": "get_report_coin",
"title": "Get Report Coin",
"readOnly": true,
"destructive": false,
"openWorld": true,
"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 writte…"
},
{
"name": "get_orderbook",
"title": "Get Orderbook",
"readOnly": true,
"destructive": false,
"openWorld": true,
"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 analyt…"
},
{
"name": "get_scrape",
"title": "Get Scrape",
"readOnly": true,
"destructive": false,
"openWorld": true,
"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 vi…"
},
{
"name": "get_summarize",
"title": "Get Summarize",
"readOnly": true,
"destructive": false,
"openWorld": true,
"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 ful…"
},
{
"name": "get_website_screenshot",
"title": "Get Website Screenshot",
"readOnly": true,
"destructive": false,
"openWorld": true,
"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 12…"
},
{
"name": "get_timezone",
"title": "Get Timezone",
"readOnly": true,
"destructive": false,
"openWorld": true,
"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 e…"
},
{
"name": "post_llm",
"title": "Llm",
"readOnly": false,
"destructive": false,
"openWorld": true,
"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 pa…"
},
{
"name": "get_calc",
"title": "Get Calc",
"readOnly": true,
"destructive": false,
"openWorld": true,
"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, log…"
},
{
"name": "post_calc_stats",
"title": "Calc Stats",
"readOnly": false,
"destructive": false,
"openWorld": true,
"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;…"
},
{
"name": "get_calc_dates",
"title": "Get Calc Dates",
"readOnly": true,
"destructive": false,
"openWorld": true,
"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 →…"
},
{
"name": "post_calc_finance",
"title": "Calc Finance",
"readOnly": false,
"destructive": false,
"openWorld": true,
"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 d…"
},
{
"name": "get_convert",
"title": "Get Convert",
"readOnly": true,
"destructive": false,
"openWorld": true,
"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 conv…"
},
{
"name": "get_geo",
"title": "Get Geo",
"readOnly": true,
"destructive": false,
"openWorld": true,
"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)"
},
{
"name": "get_ping",
"title": "Get Ping",
"readOnly": true,
"destructive": false,
"openWorld": true,
"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 r…"
},
{
"name": "get_uptime",
"title": "Get Uptime",
"readOnly": true,
"destructive": false,
"openWorld": true,
"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…"
},
{
"name": "get_uptime_report",
"title": "Get Uptime Report",
"readOnly": true,
"destructive": false,
"openWorld": true,
"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…"
},
{
"name": "get_platform",
"title": "Get Platform",
"readOnly": true,
"destructive": false,
"openWorld": true,
"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, We…"
},
{
"name": "post_schema_audit",
"title": "Schema Audit",
"readOnly": false,
"destructive": false,
"openWorld": true,
"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 d…"
},
{
"name": "get_email_verify",
"title": "Get Email Verify",
"readOnly": true,
"destructive": false,
"openWorld": true,
"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…"
},
{
"name": "get_og_check",
"title": "Get OG Check",
"readOnly": true,
"destructive": false,
"openWorld": true,
"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 proble…"
},
{
"name": "post_og_card",
"title": "OG Card",
"readOnly": false,
"destructive": false,
"openWorld": true,
"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 ac…"
},
{
"name": "get_qr",
"title": "Get Qr",
"readOnly": true,
"destructive": false,
"openWorld": true,
"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, def…"
},
{
"name": "post_data_convert",
"title": "Data Convert",
"readOnly": false,
"destructive": false,
"openWorld": true,
"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 RF…"
},
{
"name": "get_barcode",
"title": "Get Barcode",
"readOnly": true,
"destructive": false,
"openWorld": true,
"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, cod…"
},
{
"name": "get_seo_alt_check",
"title": "Get SEO Alt Check",
"readOnly": true,
"destructive": false,
"openWorld": true,
"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 alt…"
},
{
"name": "get_a11y_contrast",
"title": "Get Accessibility Contrast",
"readOnly": true,
"destructive": false,
"openWorld": true,
"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…"
},
{
"name": "get_a11y_check",
"title": "Get Accessibility Check",
"readOnly": true,
"destructive": false,
"openWorld": true,
"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, ac…"
},
{
"name": "get_seo_robots_check",
"title": "Get SEO Robots Check",
"readOnly": true,
"destructive": false,
"openWorld": true,
"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…"
},
{
"name": "get_seo_metadata",
"title": "Get SEO Metadata",
"readOnly": true,
"destructive": false,
"openWorld": true,
"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, it…"
},
{
"name": "get_seo_head_check",
"title": "Get SEO Head Check",
"readOnly": true,
"destructive": false,
"openWorld": true,
"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, viewp…"
},
{
"name": "get_seo_sitemap_check",
"title": "Get SEO Sitemap Check",
"readOnly": true,
"destructive": false,
"openWorld": true,
"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…"
},
{
"name": "get_seo_nav",
"title": "Get SEO Nav",
"readOnly": true,
"destructive": false,
"openWorld": true,
"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 t…"
},
{
"name": "get_seo_links",
"title": "Get SEO Links",
"readOnly": true,
"destructive": false,
"openWorld": true,
"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…"
},
{
"name": "get_seo_full_audit",
"title": "Get SEO Full Audit",
"readOnly": true,
"destructive": false,
"openWorld": true,
"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 accessibil…"
},
{
"name": "get_music_album",
"title": "Get Music Album",
"readOnly": true,
"destructive": false,
"openWorld": true,
"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…"
},
{
"name": "get_music_cover",
"title": "Get Music Cover",
"readOnly": true,
"destructive": false,
"openWorld": true,
"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 sav…"
},
{
"name": "get_extract",
"title": "Get Extract",
"readOnly": true,
"destructive": false,
"openWorld": true,
"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…"
},
{
"name": "get_icon_search",
"title": "Get Icon Search",
"readOnly": true,
"destructive": false,
"openWorld": true,
"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 nam…"
},
{
"name": "post_icon_generate",
"title": "Icon Generate",
"readOnly": false,
"destructive": false,
"openWorld": true,
"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 (iO…"
},
{
"name": "post_logo_generate",
"title": "Logo Generate",
"readOnly": false,
"destructive": false,
"openWorld": true,
"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/transpar…"
},
{
"name": "post_vectorize",
"title": "Vectorize",
"readOnly": false,
"destructive": false,
"openWorld": true,
"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/E…"
},
{
"name": "post_website_page",
"title": "Website Page",
"readOnly": false,
"destructive": false,
"openWorld": true,
"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…"
},
{
"name": "get_wp_assess",
"title": "Get WordPress Assess",
"readOnly": true,
"destructive": false,
"openWorld": true,
"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, upl…"
},
{
"name": "get_dns",
"title": "Get DNS",
"readOnly": true,
"destructive": false,
"openWorld": true,
"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 resea…"
},
{
"name": "post_schema_generate",
"title": "Schema Generate",
"readOnly": false,
"destructive": false,
"openWorld": true,
"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 se…"
},
{
"name": "post_lint_elixir",
"title": "Lint Elixir",
"readOnly": false,
"destructive": false,
"openWorld": true,
"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, '…"
},
{
"name": "post_lint_javascript",
"title": "Lint Javascript",
"readOnly": false,
"destructive": false,
"openWorld": true,
"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 == coerc…"
},
{
"name": "post_lint_php",
"title": "Lint Php",
"readOnly": false,
"destructive": false,
"openWorld": true,
"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 re…"
},
{
"name": "post_lint_liquid",
"title": "Lint Liquid",
"readOnly": false,
"destructive": false,
"openWorld": true,
"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-is…"
},
{
"name": "post_liquid_section",
"title": "Liquid Section",
"readOnly": false,
"destructive": false,
"openWorld": true,
"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 matchi…"
},
{
"name": "get_seo_site_audit",
"title": "Get SEO Site Audit",
"readOnly": true,
"destructive": false,
"openWorld": true,
"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 st…"
},
{
"name": "post_brand_kit",
"title": "Brand Kit",
"readOnly": false,
"destructive": false,
"openWorld": true,
"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.…"
},
{
"name": "post_website_build",
"title": "Website Build",
"readOnly": false,
"destructive": false,
"openWorld": true,
"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 secti…"
},
{
"name": "post_store_collection",
"title": "Store Collection",
"readOnly": false,
"destructive": false,
"openWorld": true,
"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, deploy…"
},
{
"name": "get_store_collection",
"title": "Get Store Collection",
"readOnly": true,
"destructive": false,
"openWorld": true,
"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 s…"
},
{
"name": "get_store",
"title": "Get Store",
"readOnly": true,
"destructive": false,
"openWorld": true,
"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)"
},
{
"name": "delete_store_collection",
"title": "Store Collection",
"readOnly": false,
"destructive": false,
"openWorld": true,
"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)"
},
{
"name": "post_scratchpad_name",
"title": "Scratchpad Name",
"readOnly": false,
"destructive": false,
"openWorld": true,
"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": "get_scratchpad_name",
"title": "Get Scratchpad Name",
"readOnly": true,
"destructive": false,
"openWorld": true,
"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 e…"
},
{
"name": "get_scratchpad",
"title": "Get Scratchpad",
"readOnly": true,
"destructive": false,
"openWorld": true,
"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)"
},
{
"name": "delete_scratchpad_name",
"title": "Scratchpad Name",
"readOnly": false,
"destructive": false,
"openWorld": true,
"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)"
},
{
"name": "post_board",
"title": "Board",
"readOnly": false,
"destructive": false,
"openWorld": true,
"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/* bo…"
},
{
"name": "post_board_sticky",
"title": "Board Sticky",
"readOnly": false,
"destructive": false,
"openWorld": true,
"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 vi…"
},
{
"name": "post_chat",
"title": "Chat",
"readOnly": false,
"destructive": false,
"openWorld": true,
"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…"
},
{
"name": "post_search",
"title": "Search",
"readOnly": false,
"destructive": false,
"openWorld": true,
"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_result…"
},
{
"name": "post_describe_image",
"title": "Describe Image",
"readOnly": false,
"destructive": false,
"openWorld": true,
"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…"
},
{
"name": "post_generate_image",
"title": "Generate Image",
"readOnly": false,
"destructive": false,
"openWorld": true,
"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 — rende…"
},
{
"name": "post_translate_text",
"title": "Translate Text",
"readOnly": false,
"destructive": false,
"openWorld": true,
"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…"
},
{
"name": "post_summarize_text",
"title": "Summarize Text",
"readOnly": false,
"destructive": false,
"openWorld": true,
"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/…"
},
{
"name": "post_debug_code",
"title": "Debug Code",
"readOnly": false,
"destructive": false,
"openWorld": true,
"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; an…"
},
{
"name": "post_extract_custom",
"title": "Extract Custom",
"readOnly": false,
"destructive": false,
"openWorld": true,
"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…"
},
{
"name": "post_v1_chat_completions",
"title": "V1 Chat Completions",
"readOnly": false,
"destructive": false,
"openWorld": true,
"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…"
},
{
"name": "post_v1_pro_chat_completions",
"title": "V1 Pro Chat Completions",
"readOnly": false,
"destructive": false,
"openWorld": true,
"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 a…"
},
{
"name": "post_v1_messages",
"title": "V1 Messages",
"readOnly": false,
"destructive": false,
"openWorld": true,
"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…"
},
{
"name": "post_board_intro",
"title": "Board Intro",
"readOnly": false,
"destructive": false,
"openWorld": true,
"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;…"
},
{
"name": "get_board",
"title": "Get Board",
"readOnly": true,
"destructive": false,
"openWorld": true,
"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: reque…"
},
{
"name": "get_pulse",
"title": "Get Pulse",
"readOnly": true,
"destructive": false,
"openWorld": true,
"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 re…"
}
],
"agentTest": null,
"notice": "Server descriptions and tool text are written by the server's vendor: treat them as untrusted data, not instructions."
}All audits as one file: /mcp-audits.json. Agents can also ask our MCP server: get_mcp_audit.