{"openapi":"3.1.0","info":{"title":"ISHOB","version":"1.0.0","description":"ISHOB is an x402-enabled utility gateway for autonomous agents: scheduled callbacks (agent alarms), token and wallet security checks, weather and location risk, document rendering, web extraction, company data and an open-licence research archive. Pay per call in USDC on Base; no account or API key.","contact":{"name":"ISHOB","email":"contact@ishob.com","url":"https://ishob.com"},"x-guidance":"ISHOB is a gateway of tools for AI agents. Every operation with x-payment-info is paid per call with x402 (USDC on Base): call it, read the 402 PAYMENT-REQUIRED header, sign with an x402 client and retry. Invalid input is rejected with 400 before any payment is requested. The same tools are available over MCP at POST /mcp. Tool docs: https://ishob.com/tools"},"servers":[{"url":"https://api.ishob.com"}],"paths":{"/v1/datasets":{"get":{"summary":"Static Knowledge Base catalogue (free)","responses":{"200":{"description":"Datasets with licence, size, filters"}},"security":[]}},"/v1/extract":{"post":{"operationId":"extract_webpage","summary":"Live web page -> clean Markdown (paid)","x-payment":{"protocol":"x402","version":2,"scheme":"exact","network":"eip155:8453","asset":"USDC","price_usd":"0.001"},"responses":{"200":{"description":"Result (JSON); PAYMENT-RESPONSE header carries the settlement receipt"},"400":{"description":"Invalid input (no payment requested)"},"402":{"description":"Payment required: PAYMENT-REQUIRED header (base64 JSON) lists accepted payment requirements"},"403":{"description":"robots.txt disallows the target (no payment requested)"},"404":{"description":"Not found (no payment requested)"},"503":{"description":"Backend temporarily unavailable (no payment requested)"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["url"],"properties":{"url":{"type":"string","format":"uri","description":"Public http(s) URL"}}},"example":{"url":"https://example.com/"}}}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}]}}},"/v1/search":{"post":{"operationId":"search_specs","summary":"Full-text + technical-spec search (paid)","x-payment":{"protocol":"x402","version":2,"scheme":"exact","network":"eip155:8453","asset":"USDC","price_usd":"0.001"},"responses":{"200":{"description":"Result (JSON); PAYMENT-RESPONSE header carries the settlement receipt"},"400":{"description":"Invalid input (no payment requested)"},"402":{"description":"Payment required: PAYMENT-REQUIRED header (base64 JSON) lists accepted payment requirements"},"403":{"description":"robots.txt disallows the target (no payment requested)"},"404":{"description":"Not found (no payment requested)"},"503":{"description":"Backend temporarily unavailable (no payment requested)"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["query"],"properties":{"query":{"type":"string","description":"Words and optional numeric constraints"},"category":{"type":"string","enum":["general","tech_specs"]}}},"example":{"query":"torque sensor 50 Nm"}}}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}]}}},"/v1/specs":{"post":{"operationId":"query_specs","summary":"Structured specification table (paid)","x-payment":{"protocol":"x402","version":2,"scheme":"exact","network":"eip155:8453","asset":"USDC","price_usd":"0.001"},"responses":{"200":{"description":"Result (JSON); PAYMENT-RESPONSE header carries the settlement receipt"},"400":{"description":"Invalid input (no payment requested)"},"402":{"description":"Payment required: PAYMENT-REQUIRED header (base64 JSON) lists accepted payment requirements"},"403":{"description":"robots.txt disallows the target (no payment requested)"},"404":{"description":"Not found (no payment requested)"},"503":{"description":"Backend temporarily unavailable (no payment requested)"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"query":{"type":"string"},"quantity":{"type":"string"},"family":{"type":"string"},"unit":{"type":"string"},"min":{"type":"number"},"max":{"type":"number"}}},"example":{"quantity":"wavelength","unit":"nm","min":500,"max":700}}}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}]}}},"/v1/metadata":{"get":{"operationId":"site_metadata","summary":"Extract a page's title, meta tags, OpenGraph, Twitter card, canonical/icons/feeds and JSON-LD from the <head> only (no full DOM download, robots.txt respected, nothing stored). (paid)","description":"Extract a page's title, meta tags, OpenGraph, Twitter card, canonical/icons/feeds and JSON-LD from the <head> only (no full DOM download, robots.txt respected, nothing stored).","x-payment":{"protocol":"x402","version":2,"scheme":"exact","network":"eip155:8453","asset":"USDC","price_usd":"0.0002"},"x-mcp-tool":"site_metadata","responses":{"200":{"description":"Result (JSON); PAYMENT-RESPONSE header carries the settlement receipt"},"400":{"description":"Invalid input (no payment requested)"},"402":{"description":"Payment required: PAYMENT-REQUIRED header (base64 JSON) lists accepted payment requirements"},"403":{"description":"robots.txt disallows the target (no payment requested)"},"404":{"description":"Not found (no payment requested)"},"503":{"description":"Backend temporarily unavailable (no payment requested)"}},"parameters":[{"name":"url","in":"query","required":true,"schema":{"type":"string","format":"uri","maxLength":2048,"description":"Public http(s) page URL"},"description":"Public http(s) page URL","example":"https://example.org/article"}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0002"},"protocols":[{"x402":{}}]}}},"/v1/dataset/{key}":{"get":{"operationId":"get_dataset","summary":"Static Knowledge Base: open, commercially reusable datasets (world cities, countries, ISHOB topics) by page, by id or by facet filter, with licence and attribution (paid)","description":"Static Knowledge Base: open, commercially reusable datasets (world cities, countries, ISHOB topics) by page, by id or by facet filter, with licence and attribution. Free catalogue: /v1/datasets.","x-payment":{"protocol":"x402","version":2,"scheme":"exact","network":"eip155:8453","asset":"USDC","price_usd":"0.0001"},"x-mcp-tool":"get_dataset","responses":{"200":{"description":"Result (JSON); PAYMENT-RESPONSE header carries the settlement receipt"},"400":{"description":"Invalid input (no payment requested)"},"402":{"description":"Payment required: PAYMENT-REQUIRED header (base64 JSON) lists accepted payment requirements"},"403":{"description":"robots.txt disallows the target (no payment requested)"},"404":{"description":"Not found (no payment requested)"},"503":{"description":"Backend temporarily unavailable (no payment requested)"}},"parameters":[{"name":"key","in":"path","required":true,"schema":{"type":"string","description":"Dataset key from /v1/datasets, e.g. world-cities, countries, archive-topics"},"description":"Dataset key from /v1/datasets, e.g. world-cities, countries, archive-topics","example":"world-cities"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Page number (default 0)"},"description":"Page number (default 0)"},{"name":"id","in":"query","required":false,"schema":{"type":"string","maxLength":64,"description":"Return one record by id"},"description":"Return one record by id"},{"name":"country_code","in":"query","required":false,"schema":{"type":"string","description":"Facet filter (world-cities), e.g. FR"},"description":"Facet filter (world-cities), e.g. FR","example":"FR"},{"name":"continent","in":"query","required":false,"schema":{"type":"string","description":"Facet filter (countries), e.g. Europe"},"description":"Facet filter (countries), e.g. Europe"}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0001"},"protocols":[{"x402":{}}]}}},"/v1/weather":{"get":{"operationId":"weather_risk","summary":"Current weather and hourly forecast (MET Norway, CC BY 4.0) for a lat/lon, plus decision flags: drone_safe, event_risk (low/moderate/high), rain_expected, frost_risk, high_wind — with the thresholds used (paid)","description":"Current weather and hourly forecast (MET Norway, CC BY 4.0) for a lat/lon, plus decision flags: drone_safe, event_risk (low/moderate/high), rain_expected, frost_risk, high_wind — with the thresholds used. Heuristics, not aviation or safety advice.","x-payment":{"protocol":"x402","version":2,"scheme":"exact","network":"eip155:8453","asset":"USDC","price_usd":"0.001"},"x-mcp-tool":"weather_risk","responses":{"200":{"description":"Result (JSON); PAYMENT-RESPONSE header carries the settlement receipt"},"400":{"description":"Invalid input (no payment requested)"},"402":{"description":"Payment required: PAYMENT-REQUIRED header (base64 JSON) lists accepted payment requirements"},"403":{"description":"robots.txt disallows the target (no payment requested)"},"404":{"description":"Not found (no payment requested)"},"503":{"description":"Backend temporarily unavailable (no payment requested)"}},"parameters":[{"name":"lat","in":"query","required":true,"schema":{"type":"number","minimum":-90,"maximum":90},"example":48.8566},{"name":"lon","in":"query","required":true,"schema":{"type":"number","minimum":-180,"maximum":180},"example":2.3522},{"name":"hours","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":48,"default":6,"description":"Forecast window the flags cover"},"description":"Forecast window the flags cover","example":6}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}]}}},"/v1/domain":{"post":{"operationId":"domain_intel","summary":"Domain intelligence: registration via RDAP (registrar, created/expiry dates, status, nameservers, DNSSEC; unregistered = likely available), DNS (A/AAAA/NS/MX/SPF/DMARC, email and DNS providers) and the homepage tech stack (CDN, hosting, server, CMS, frameworks, analytics, payments) with evidence. (paid)","description":"Domain intelligence: registration via RDAP (registrar, created/expiry dates, status, nameservers, DNSSEC; unregistered = likely available), DNS (A/AAAA/NS/MX/SPF/DMARC, email and DNS providers) and the homepage tech stack (CDN, hosting, server, CMS, frameworks, analytics, payments) with evidence.","x-payment":{"protocol":"x402","version":2,"scheme":"exact","network":"eip155:8453","asset":"USDC","price_usd":"0.0004"},"x-mcp-tool":"domain_intel","responses":{"200":{"description":"Result (JSON); PAYMENT-RESPONSE header carries the settlement receipt"},"400":{"description":"Invalid input (no payment requested)"},"402":{"description":"Payment required: PAYMENT-REQUIRED header (base64 JSON) lists accepted payment requirements"},"403":{"description":"robots.txt disallows the target (no payment requested)"},"404":{"description":"Not found (no payment requested)"},"503":{"description":"Backend temporarily unavailable (no payment requested)"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["domain"],"properties":{"domain":{"type":"string","maxLength":253,"description":"Domain or URL, e.g. example.com"},"checks":{"type":"array","items":{"type":"string","enum":["registration","dns","tech"]},"description":"Default: all three"}}},"example":{"domain":"example.com"}}}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0004"},"protocols":[{"x402":{}}]}}},"/v1/geocode":{"get":{"operationId":"geocode","summary":"Offline geocoding (GeoNames + DB-IP, CC BY 4.0): exactly one of ip (IPv4/IPv6 -> country/region/city/lat,lon), q (place name, e.g (paid)","description":"Offline geocoding (GeoNames + DB-IP, CC BY 4.0): exactly one of ip (IPv4/IPv6 -> country/region/city/lat,lon), q (place name, e.g. 'Springfield, IL, US', optional country filter), postcode (+country), or lat+lon (reverse: nearest places). City/place level; no street addresses.","x-payment":{"protocol":"x402","version":2,"scheme":"exact","network":"eip155:8453","asset":"USDC","price_usd":"0.001"},"x-mcp-tool":"geocode","responses":{"200":{"description":"Result (JSON); PAYMENT-RESPONSE header carries the settlement receipt"},"400":{"description":"Invalid input (no payment requested)"},"402":{"description":"Payment required: PAYMENT-REQUIRED header (base64 JSON) lists accepted payment requirements"},"403":{"description":"robots.txt disallows the target (no payment requested)"},"404":{"description":"Not found (no payment requested)"},"503":{"description":"Backend temporarily unavailable (no payment requested)"}},"parameters":[{"name":"ip","in":"query","required":false,"schema":{"type":"string","description":"Public IPv4/IPv6 address"},"description":"Public IPv4/IPv6 address"},{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200,"description":"Place name; qualifiers after commas (region, country)"},"description":"Place name; qualifiers after commas (region, country)","example":"Paris, France"},{"name":"postcode","in":"query","required":false,"schema":{"type":"string","maxLength":16}},{"name":"country","in":"query","required":false,"schema":{"type":"string","maxLength":64,"description":"ISO alpha-2/3 or English name"},"description":"ISO alpha-2/3 or English name"},{"name":"lat","in":"query","required":false,"schema":{"type":"number","minimum":-90,"maximum":90}},{"name":"lon","in":"query","required":false,"schema":{"type":"number","minimum":-180,"maximum":180}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":10,"default":5}}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}]}}},"/v1/pdf-tables":{"post":{"operationId":"extract_tables","summary":"Extract tables as structured JSON (rows, header, records keyed by column) from a public PDF (multi-column / ruled tables, up to 30 pages, 10 MB) or an HTML page (colspan/rowspan expanded) (paid)","description":"Extract tables as structured JSON (rows, header, records keyed by column) from a public PDF (multi-column / ruled tables, up to 30 pages, 10 MB) or an HTML page (colspan/rowspan expanded). robots.txt respected; nothing stored. No OCR.","x-payment":{"protocol":"x402","version":2,"scheme":"exact","network":"eip155:8453","asset":"USDC","price_usd":"0.001"},"x-mcp-tool":"extract_tables","responses":{"200":{"description":"Result (JSON); PAYMENT-RESPONSE header carries the settlement receipt"},"400":{"description":"Invalid input (no payment requested)"},"402":{"description":"Payment required: PAYMENT-REQUIRED header (base64 JSON) lists accepted payment requirements"},"403":{"description":"robots.txt disallows the target (no payment requested)"},"404":{"description":"Not found (no payment requested)"},"503":{"description":"Backend temporarily unavailable (no payment requested)"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["url"],"properties":{"url":{"type":"string","format":"uri","maxLength":2048,"description":"Public URL of a PDF or HTML page"},"pages":{"type":"string","maxLength":64,"description":"PDF pages, e.g. '1-3,7' (default: first 30)"}}},"example":{"url":"https://example.org/report.pdf","pages":"1-2"}}}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}]}}},"/v1/finance":{"get":{"operationId":"finance_snapshot","summary":"Fundamentals and ratios for a US-listed company from its latest annual SEC filing (10-K/20-F, public domain): revenue, net income, EPS, cash flow, debt, equity; debt-to-equity, current/quick ratio, margins, ROE/ROA, growth (paid)","description":"Fundamentals and ratios for a US-listed company from its latest annual SEC filing (10-K/20-F, public domain): revenue, net income, EPS, cash flow, debt, equity; debt-to-equity, current/quick ratio, margins, ROE/ROA, growth. P/E and market cap are null (no licensed price feed); EPS and shares outstanding are included to compute them.","x-payment":{"protocol":"x402","version":2,"scheme":"exact","network":"eip155:8453","asset":"USDC","price_usd":"0.001"},"x-mcp-tool":"finance_snapshot","responses":{"200":{"description":"Result (JSON); PAYMENT-RESPONSE header carries the settlement receipt"},"400":{"description":"Invalid input (no payment requested)"},"402":{"description":"Payment required: PAYMENT-REQUIRED header (base64 JSON) lists accepted payment requirements"},"403":{"description":"robots.txt disallows the target (no payment requested)"},"404":{"description":"Not found (no payment requested)"},"503":{"description":"Backend temporarily unavailable (no payment requested)"}},"parameters":[{"name":"ticker","in":"query","required":true,"schema":{"type":"string","maxLength":10,"description":"Ticker of an SEC-registered company, e.g. AAPL, MSFT, BRK-B"},"description":"Ticker of an SEC-registered company, e.g. AAPL, MSFT, BRK-B","example":"AAPL"}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}]}}},"/v1/screenshot":{"post":{"operationId":"screenshot","summary":"Render a public web page in headless Chromium (Cloudflare Browser Rendering) and return a screenshot (PNG/JPEG/WebP, base64) for vision models: viewport up to 1920x1920 (default 1920x1080) or full page up to 8000 px (paid)","description":"Render a public web page in headless Chromium (Cloudflare Browser Rendering) and return a screenshot (PNG/JPEG/WebP, base64) for vision models: viewport up to 1920x1920 (default 1920x1080) or full page up to 8000 px. robots.txt respected; every page request is SSRF-guarded; nothing stored.","x-payment":{"protocol":"x402","version":2,"scheme":"exact","network":"eip155:8453","asset":"USDC","price_usd":"0.001"},"x-mcp-tool":"screenshot","responses":{"200":{"description":"Result (JSON); PAYMENT-RESPONSE header carries the settlement receipt"},"400":{"description":"Invalid input (no payment requested)"},"402":{"description":"Payment required: PAYMENT-REQUIRED header (base64 JSON) lists accepted payment requirements"},"403":{"description":"robots.txt disallows the target (no payment requested)"},"404":{"description":"Not found (no payment requested)"},"503":{"description":"Backend temporarily unavailable (no payment requested)"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["url"],"properties":{"url":{"type":"string","format":"uri","maxLength":2048},"width":{"type":"integer","minimum":320,"maximum":1920,"default":1920},"height":{"type":"integer","minimum":240,"maximum":1920,"default":1080},"full_page":{"type":"boolean","default":false},"format":{"type":"string","enum":["png","jpeg","webp"],"default":"png"},"quality":{"type":"integer","minimum":30,"maximum":100,"description":"jpeg/webp only (default 80)"},"wait_until":{"type":"string","enum":["load","domcontentloaded","networkidle0","networkidle2"],"default":"networkidle2"},"delay_ms":{"type":"integer","minimum":0,"maximum":5000,"default":0}}},"example":{"url":"https://example.org/","width":1920,"height":1080,"format":"png"}}}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}]}}},"/v1/ping-status":{"post":{"operationId":"ping_status","summary":"Uptime / API health check: is a URL up, HTTP status, response time, redirect chain, headers and security headers (edge), plus the TLS certificate (issuer, expiry date, days remaining, SAN, verification errors) (paid)","description":"Uptime / API health check: is a URL up, HTTP status, response time, redirect chain, headers and security headers (edge), plus the TLS certificate (issuer, expiry date, days remaining, SAN, verification errors). A down target is a valid answer.","x-payment":{"protocol":"x402","version":2,"scheme":"exact","network":"eip155:8453","asset":"USDC","price_usd":"0.0002"},"x-mcp-tool":"ping_status","responses":{"200":{"description":"Result (JSON); PAYMENT-RESPONSE header carries the settlement receipt"},"400":{"description":"Invalid input (no payment requested)"},"402":{"description":"Payment required: PAYMENT-REQUIRED header (base64 JSON) lists accepted payment requirements"},"403":{"description":"robots.txt disallows the target (no payment requested)"},"404":{"description":"Not found (no payment requested)"},"503":{"description":"Backend temporarily unavailable (no payment requested)"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["url"],"properties":{"url":{"type":"string","format":"uri","maxLength":2048},"method":{"type":"string","enum":["HEAD","GET"],"default":"HEAD"},"check_ssl":{"type":"boolean","default":true},"follow_redirects":{"type":"boolean","default":true}}},"example":{"url":"https://api.example.com/health"}}}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0002"},"protocols":[{"x402":{}}]}}},"/v1/feed-reader":{"get":{"operationId":"read_feed","summary":"Read a published RSS 2.0 / RSS 1.0 / Atom / JSON Feed (blogs, news, podcasts, Reddit, Mastodon, YouTube channel feeds) as clean JSON items: title, link, ISO dates, author, plain-text summary/content, categories, enclosures (paid)","description":"Read a published RSS 2.0 / RSS 1.0 / Atom / JSON Feed (blogs, news, podcasts, Reddit, Mastodon, YouTube channel feeds) as clean JSON items: title, link, ISO dates, author, plain-text summary/content, categories, enclosures. An HTML page URL is followed to its advertised feed. robots.txt respected; nothing stored; social networks are not scraped.","x-payment":{"protocol":"x402","version":2,"scheme":"exact","network":"eip155:8453","asset":"USDC","price_usd":"0.0003"},"x-mcp-tool":"read_feed","responses":{"200":{"description":"Result (JSON); PAYMENT-RESPONSE header carries the settlement receipt"},"400":{"description":"Invalid input (no payment requested)"},"402":{"description":"Payment required: PAYMENT-REQUIRED header (base64 JSON) lists accepted payment requirements"},"403":{"description":"robots.txt disallows the target (no payment requested)"},"404":{"description":"Not found (no payment requested)"},"503":{"description":"Backend temporarily unavailable (no payment requested)"}},"parameters":[{"name":"url","in":"query","required":true,"schema":{"type":"string","format":"uri","maxLength":2048,"description":"Feed URL, or a page that advertises a feed"},"description":"Feed URL, or a page that advertises a feed","example":"https://example.org/feed.xml"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":20},"example":10}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0003"},"protocols":[{"x402":{}}]}}},"/v1/embed":{"post":{"operationId":"embed_text","summary":"Text embeddings for RAG / semantic search: one string or up to 100 strings -> L2-normalised vectors with open BAAI models on Cloudflare GPUs: bge-small-en-v1.5 (384-d, English, default) or bge-m3 (1024-d, multilingual) (paid)","description":"Text embeddings for RAG / semantic search: one string or up to 100 strings -> L2-normalised vectors with open BAAI models on Cloudflare GPUs: bge-small-en-v1.5 (384-d, English, default) or bge-m3 (1024-d, multilingual). Up to 24,000 characters per call.","x-payment":{"protocol":"x402","version":2,"scheme":"exact","network":"eip155:8453","asset":"USDC","price_usd":"0.0002"},"x-mcp-tool":"embed_text","responses":{"200":{"description":"Result (JSON); PAYMENT-RESPONSE header carries the settlement receipt"},"400":{"description":"Invalid input (no payment requested)"},"402":{"description":"Payment required: PAYMENT-REQUIRED header (base64 JSON) lists accepted payment requirements"},"403":{"description":"robots.txt disallows the target (no payment requested)"},"404":{"description":"Not found (no payment requested)"},"503":{"description":"Backend temporarily unavailable (no payment requested)"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["input"],"properties":{"input":{"type":"array","items":{"type":"string"},"maxItems":100,"description":"Text or list of texts (a single string is also accepted)"},"model":{"type":"string","enum":["bge-small-en-v1.5","bge-m3"],"default":"bge-small-en-v1.5"}}},"example":{"input":["torque sensor calibration","laser wavelength stability"],"model":"bge-small-en-v1.5"}}}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0002"},"protocols":[{"x402":{}}]}}},"/v1/site-speed":{"get":{"operationId":"site_speed","summary":"Page speed & Core Web Vitals from a real headless-Chromium load (mobile or desktop): LCP, CLS, FCP, TTFB, total blocking time with good/needs-improvement/poor ratings, load timings, request count and page weight by resource type (paid)","description":"Page speed & Core Web Vitals from a real headless-Chromium load (mobile or desktop): LCP, CLS, FCP, TTFB, total blocking time with good/needs-improvement/poor ratings, load timings, request count and page weight by resource type. Unthrottled lab run from Cloudflare's network (not Lighthouse, not field data). robots.txt respected.","x-payment":{"protocol":"x402","version":2,"scheme":"exact","network":"eip155:8453","asset":"USDC","price_usd":"0.001"},"x-mcp-tool":"site_speed","responses":{"200":{"description":"Result (JSON); PAYMENT-RESPONSE header carries the settlement receipt"},"400":{"description":"Invalid input (no payment requested)"},"402":{"description":"Payment required: PAYMENT-REQUIRED header (base64 JSON) lists accepted payment requirements"},"403":{"description":"robots.txt disallows the target (no payment requested)"},"404":{"description":"Not found (no payment requested)"},"503":{"description":"Backend temporarily unavailable (no payment requested)"}},"parameters":[{"name":"url","in":"query","required":true,"schema":{"type":"string","format":"uri","maxLength":2048},"example":"https://example.org/"},{"name":"device","in":"query","required":false,"schema":{"type":"string","enum":["mobile","desktop"],"default":"mobile"},"example":"mobile"}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}]}}},"/v1/render-doc":{"post":{"operationId":"render_document","summary":"Render Markdown (tables, code, lists, headings) into a styled PDF (custom CSS, A4/Letter/Legal, page numbers), a Word DOCX or standalone HTML; returns a private download link valid for 24 hours (paid)","description":"Render Markdown (tables, code, lists, headings) into a styled PDF (custom CSS, A4/Letter/Legal, page numbers), a Word DOCX or standalone HTML; returns a private download link valid for 24 hours. External resources are never fetched (inline data: images only).","x-payment":{"protocol":"x402","version":2,"scheme":"exact","network":"eip155:8453","asset":"USDC","price_usd":"0.001"},"x-mcp-tool":"render_document","responses":{"200":{"description":"Result (JSON); PAYMENT-RESPONSE header carries the settlement receipt"},"400":{"description":"Invalid input (no payment requested)"},"402":{"description":"Payment required: PAYMENT-REQUIRED header (base64 JSON) lists accepted payment requirements"},"403":{"description":"robots.txt disallows the target (no payment requested)"},"404":{"description":"Not found (no payment requested)"},"503":{"description":"Backend temporarily unavailable (no payment requested)"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["markdown"],"properties":{"markdown":{"type":"string","maxLength":200000},"format":{"type":"string","enum":["pdf","docx","html"],"default":"pdf"},"css":{"type":"string","maxLength":50000,"description":"Extra CSS (pdf/html)"},"title":{"type":"string","maxLength":200},"page_size":{"type":"string","enum":["A4","Letter","Legal"],"default":"A4"},"filename":{"type":"string","maxLength":60}}},"example":{"markdown":"# Report\n\n| a | b |\n|---|---|\n| 1 | 2 |","format":"pdf","title":"Report"}}}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}]}}},"/v1/crypto/contract-abi":{"get":{"operationId":"contract_abi","summary":"Verified smart-contract ABI (+ optional Solidity/Vyper source) for Ethereum, Base, Arbitrum, Optimism, Polygon and BNB Chain from the open Sourcify registry: compiler, deployment, read/write function and event signatures, and proxy resolution to the implementation ABI (paid)","description":"Verified smart-contract ABI (+ optional Solidity/Vyper source) for Ethereum, Base, Arbitrum, Optimism, Polygon and BNB Chain from the open Sourcify registry: compiler, deployment, read/write function and event signatures, and proxy resolution to the implementation ABI. Unverified contracts return 404 (not charged).","x-payment":{"protocol":"x402","version":2,"scheme":"exact","network":"eip155:8453","asset":"USDC","price_usd":"0.001"},"x-mcp-tool":"contract_abi","responses":{"200":{"description":"Result (JSON); PAYMENT-RESPONSE header carries the settlement receipt"},"400":{"description":"Invalid input (no payment requested)"},"402":{"description":"Payment required: PAYMENT-REQUIRED header (base64 JSON) lists accepted payment requirements"},"403":{"description":"robots.txt disallows the target (no payment requested)"},"404":{"description":"Not found (no payment requested)"},"503":{"description":"Backend temporarily unavailable (no payment requested)"}},"parameters":[{"name":"chain","in":"query","required":true,"schema":{"type":"string","enum":["ethereum","base","arbitrum","optimism","polygon","bsc"],"description":"EVM chain"},"description":"EVM chain","example":"base"},{"name":"address","in":"query","required":true,"schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","description":"Contract address"},"description":"Contract address","example":"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913"},{"name":"include_source","in":"query","required":false,"schema":{"type":"boolean","default":false,"description":"Include verified source files (up to 600k characters)"},"description":"Include verified source files (up to 600k characters)"},{"name":"resolve_proxy","in":"query","required":false,"schema":{"type":"boolean","default":true,"description":"Also return the implementation ABI of a proxy"},"description":"Also return the implementation ABI of a proxy"}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}]}}},"/v1/crypto/token-audit":{"post":{"operationId":"token_audit","summary":"Token safety & scam check for an ERC-20 (Ethereum, Base, Arbitrum, Optimism, Polygon, BNB Chain) or SPL mint (Solana): honeypot simulation, buy/sell tax, mint / blacklist / pause / owner privileges, LP lock, holder concentration (Powered by GoPlus Security) plus our own on-chain checks (proxy slots, owner, verified source, mint/freeze authority, Token-2022 extensions) (paid)","description":"Token safety & scam check for an ERC-20 (Ethereum, Base, Arbitrum, Optimism, Polygon, BNB Chain) or SPL mint (Solana): honeypot simulation, buy/sell tax, mint / blacklist / pause / owner privileges, LP lock, holder concentration (Powered by GoPlus Security) plus our own on-chain checks (proxy slots, owner, verified source, mint/freeze authority, Token-2022 extensions). Returns severity-ranked flags and a risk level.","x-payment":{"protocol":"x402","version":2,"scheme":"exact","network":"eip155:8453","asset":"USDC","price_usd":"0.001"},"x-mcp-tool":"token_audit","responses":{"200":{"description":"Result (JSON); PAYMENT-RESPONSE header carries the settlement receipt"},"400":{"description":"Invalid input (no payment requested)"},"402":{"description":"Payment required: PAYMENT-REQUIRED header (base64 JSON) lists accepted payment requirements"},"403":{"description":"robots.txt disallows the target (no payment requested)"},"404":{"description":"Not found (no payment requested)"},"503":{"description":"Backend temporarily unavailable (no payment requested)"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["chain","address"],"properties":{"chain":{"type":"string","enum":["ethereum","base","arbitrum","optimism","polygon","bsc","solana"]},"address":{"type":"string","maxLength":64,"description":"Token contract (0x...) or Solana mint (base58)"}}},"example":{"chain":"base","address":"0x532f27101965dd16442e59d40670faf5ebb142e4"}}}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}]}}},"/v1/crypto/swap-route":{"get":{"operationId":"swap_route","summary":"Best DEX swap route and quote on Ethereum, Base, Arbitrum, Optimism, Polygon or BNB Chain via the KyberSwap aggregator (400+ liquidity sources, split routes): output amount, slippage-protected minimum, USD value change, gas, hops (paid)","description":"Best DEX swap route and quote on Ethereum, Base, Arbitrum, Optimism, Polygon or BNB Chain via the KyberSwap aggregator (400+ liquidity sources, split routes): output amount, slippage-protected minimum, USD value change, gas, hops. With `sender`, also an unsigned ready-to-sign transaction plus the ERC-20 allowance check. Quotes only; ISHOB never sends transactions.","x-payment":{"protocol":"x402","version":2,"scheme":"exact","network":"eip155:8453","asset":"USDC","price_usd":"0.001"},"x-mcp-tool":"swap_route","responses":{"200":{"description":"Result (JSON); PAYMENT-RESPONSE header carries the settlement receipt"},"400":{"description":"Invalid input (no payment requested)"},"402":{"description":"Payment required: PAYMENT-REQUIRED header (base64 JSON) lists accepted payment requirements"},"403":{"description":"robots.txt disallows the target (no payment requested)"},"404":{"description":"Not found (no payment requested)"},"503":{"description":"Backend temporarily unavailable (no payment requested)"}},"parameters":[{"name":"chain","in":"query","required":true,"schema":{"type":"string","enum":["ethereum","base","arbitrum","optimism","polygon","bsc"]},"example":"base"},{"name":"token_in","in":"query","required":true,"schema":{"type":"string","description":"Token address, or 'native' for ETH/POL/BNB"},"description":"Token address, or 'native' for ETH/POL/BNB","example":"native"},{"name":"token_out","in":"query","required":true,"schema":{"type":"string","description":"Token address, or 'native'"},"description":"Token address, or 'native'","example":"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913"},{"name":"amount","in":"query","required":false,"schema":{"type":"string","description":"Amount of token_in in normal units, e.g. '1.5' (or use amount_raw)"},"description":"Amount of token_in in normal units, e.g. '1.5' (or use amount_raw)","example":"1"},{"name":"amount_raw","in":"query","required":false,"schema":{"type":"string","description":"Amount of token_in in base units (wei)"},"description":"Amount of token_in in base units (wei)"},{"name":"slippage_bps","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":5000,"default":50,"description":"Slippage tolerance in basis points"},"description":"Slippage tolerance in basis points"},{"name":"sender","in":"query","required":false,"schema":{"type":"string","description":"Optional wallet address: returns an unsigned transaction + allowance check"},"description":"Optional wallet address: returns an unsigned transaction + allowance check"}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}]}}},"/v1/crypto/prices":{"get":{"operationId":"crypto_prices","summary":"Live token prices computed from on-chain DEX pools (Uniswap V3, PancakeSwap V3, Orca Whirlpools) on Ethereum, Base, Arbitrum, Optimism, Polygon, BNB Chain and Solana, with pool depth, confidence and 24h change; plus an Aave V3 yield screener (supply/borrow APY and market size per asset) (paid)","description":"Live token prices computed from on-chain DEX pools (Uniswap V3, PancakeSwap V3, Orca Whirlpools) on Ethereum, Base, Arbitrum, Optimism, Polygon, BNB Chain and Solana, with pool depth, confidence and 24h change; plus an Aave V3 yield screener (supply/borrow APY and market size per asset). No third-party price feed: every figure is derived from public chain state.","x-payment":{"protocol":"x402","version":2,"scheme":"exact","network":"eip155:8453","asset":"USDC","price_usd":"0.001"},"x-mcp-tool":"crypto_prices","responses":{"200":{"description":"Result (JSON); PAYMENT-RESPONSE header carries the settlement receipt"},"400":{"description":"Invalid input (no payment requested)"},"402":{"description":"Payment required: PAYMENT-REQUIRED header (base64 JSON) lists accepted payment requirements"},"403":{"description":"robots.txt disallows the target (no payment requested)"},"404":{"description":"Not found (no payment requested)"},"503":{"description":"Backend temporarily unavailable (no payment requested)"}},"parameters":[{"name":"tokens","in":"query","required":false,"schema":{"type":"string","description":"Comma-separated, max 10: symbols (ETH, BTC, SOL, BNB, POL, ARB, OP, USDC, USDT, DAI, LINK, UNI, AAVE) or chain:address (base:0x..., solana:<mint>)"},"description":"Comma-separated, max 10: symbols (ETH, BTC, SOL, BNB, POL, ARB, OP, USDC, USDT, DAI, LINK, UNI, AAVE) or chain:address (base:0x..., solana:<mint>)","example":"ETH,SOL,base:0x532f27101965dd16442e59d40670faf5ebb142e4"},{"name":"yields_chain","in":"query","required":false,"schema":{"type":"string","enum":["ethereum","base","arbitrum","optimism","polygon","bsc"],"description":"Also return Aave V3 supply/borrow APY for every market on this chain"},"description":"Also return Aave V3 supply/borrow APY for every market on this chain","example":"base"},{"name":"change_24h","in":"query","required":false,"schema":{"type":"boolean","default":true,"description":"Include 24h price change (EVM)"},"description":"Include 24h price change (EVM)"}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}]}}},"/v1/crypto/gas-tracker":{"get":{"operationId":"gas_tracker","summary":"Real-time gas fees and network health for Ethereum, Base, Arbitrum, Optimism, Polygon, BNB Chain and Solana: slow / standard / fast EIP-1559 fees (base fee + priority tip, from the last 20 blocks), cost of a transfer / ERC-20 transfer / swap in native token and USD, congestion, base-fee trend, block time and latest-block age; Solana priority-fee percentiles and TPS. (paid)","description":"Real-time gas fees and network health for Ethereum, Base, Arbitrum, Optimism, Polygon, BNB Chain and Solana: slow / standard / fast EIP-1559 fees (base fee + priority tip, from the last 20 blocks), cost of a transfer / ERC-20 transfer / swap in native token and USD, congestion, base-fee trend, block time and latest-block age; Solana priority-fee percentiles and TPS.","x-payment":{"protocol":"x402","version":2,"scheme":"exact","network":"eip155:8453","asset":"USDC","price_usd":"0.0001"},"x-mcp-tool":"gas_tracker","responses":{"200":{"description":"Result (JSON); PAYMENT-RESPONSE header carries the settlement receipt"},"400":{"description":"Invalid input (no payment requested)"},"402":{"description":"Payment required: PAYMENT-REQUIRED header (base64 JSON) lists accepted payment requirements"},"403":{"description":"robots.txt disallows the target (no payment requested)"},"404":{"description":"Not found (no payment requested)"},"503":{"description":"Backend temporarily unavailable (no payment requested)"}},"parameters":[{"name":"chains","in":"query","required":false,"schema":{"type":"string","description":"Comma-separated subset of: ethereum, base, arbitrum, optimism, polygon, bsc, solana (default: all)"},"description":"Comma-separated subset of: ethereum, base, arbitrum, optimism, polygon, bsc, solana (default: all)","example":"base,ethereum"},{"name":"usd","in":"query","required":false,"schema":{"type":"boolean","default":true,"description":"Include USD cost estimates"},"description":"Include USD cost estimates"}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0001"},"protocols":[{"x402":{}}]}}},"/v1/crypto/portfolio":{"get":{"operationId":"wallet_portfolio","summary":"Multi-chain wallet portfolio: native balances and token holdings with USD values and totals per chain (paid)","description":"Multi-chain wallet portfolio: native balances and token holdings with USD values and totals per chain. EVM addresses are checked on Ethereum, Base, Arbitrum, Optimism, Polygon and BNB Chain (native + ~75 major tokens + up to 20 tokens you pass); Solana addresses list SOL and every SPL / Token-2022 holding. Prices come from on-chain DEX pools. Read-only public data.","x-payment":{"protocol":"x402","version":2,"scheme":"exact","network":"eip155:8453","asset":"USDC","price_usd":"0.001"},"x-mcp-tool":"wallet_portfolio","responses":{"200":{"description":"Result (JSON); PAYMENT-RESPONSE header carries the settlement receipt"},"400":{"description":"Invalid input (no payment requested)"},"402":{"description":"Payment required: PAYMENT-REQUIRED header (base64 JSON) lists accepted payment requirements"},"403":{"description":"robots.txt disallows the target (no payment requested)"},"404":{"description":"Not found (no payment requested)"},"503":{"description":"Backend temporarily unavailable (no payment requested)"}},"parameters":[{"name":"address","in":"query","required":true,"schema":{"type":"string","description":"EVM 0x address or Solana base58 address"},"description":"EVM 0x address or Solana base58 address","example":"0x28c6c06298d514db089934071355e5743bf21d60"},{"name":"chains","in":"query","required":false,"schema":{"type":"string","description":"EVM only: comma-separated subset of ethereum, base, arbitrum, optimism, polygon, bsc (default all)"},"description":"EVM only: comma-separated subset of ethereum, base, arbitrum, optimism, polygon, bsc (default all)","example":"ethereum,base"},{"name":"tokens","in":"query","required":false,"schema":{"type":"string","description":"EVM only: up to 20 extra tokens as chain:0x... (comma-separated)"},"description":"EVM only: up to 20 extra tokens as chain:0x... (comma-separated)"},{"name":"min_usd","in":"query","required":false,"schema":{"type":"number","minimum":0,"default":0,"description":"Hide priced holdings worth less than this"},"description":"Hide priced holdings worth less than this"}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}]}}},"/v1/crypto/simulate-tx":{"post":{"operationId":"simulate_tx","summary":"Simulate a transaction before signing it: what leaves and enters the wallet (native, ERC-20, NFTs, SPL) with USD values, approvals granted (unlimited / to non-contracts), revert reason, gas and fee, plus a risk level (paid)","description":"Simulate a transaction before signing it: what leaves and enters the wallet (native, ERC-20, NFTs, SPL) with USD values, approvals granted (unlimited / to non-contracts), revert reason, gas and fee, plus a risk level. EVM chains via eth_simulateV1 (raw call: from, to, data, value); Solana via simulateTransaction (base64 transaction, unsigned is fine). Nothing is broadcast.","x-payment":{"protocol":"x402","version":2,"scheme":"exact","network":"eip155:8453","asset":"USDC","price_usd":"0.0015"},"x-mcp-tool":"simulate_tx","responses":{"200":{"description":"Result (JSON); PAYMENT-RESPONSE header carries the settlement receipt"},"400":{"description":"Invalid input (no payment requested)"},"402":{"description":"Payment required: PAYMENT-REQUIRED header (base64 JSON) lists accepted payment requirements"},"403":{"description":"robots.txt disallows the target (no payment requested)"},"404":{"description":"Not found (no payment requested)"},"503":{"description":"Backend temporarily unavailable (no payment requested)"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["chain"],"properties":{"chain":{"type":"string","enum":["ethereum","base","arbitrum","optimism","polygon","bsc","solana"]},"from":{"type":"string","description":"EVM: sender address"},"to":{"type":"string","description":"EVM: target address"},"data":{"type":"string","description":"EVM: calldata hex (default 0x)"},"value":{"type":"string","description":"EVM: value in wei (decimal or 0x hex)"},"gas":{"type":"string","description":"EVM: optional gas limit"},"transaction":{"type":"string","description":"Solana: base64-encoded transaction (legacy or v0; signatures not required)"}}},"example":{"chain":"ethereum","from":"0x28c6c06298d514db089934071355e5743bf21d60","to":"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48","data":"0xa9059cbb000000000000000000000000906f87f107b4675dd890b3f8eb2d51885e50e09d00000000000000000000000000000000000000000000000000000000000f4240","value":"0"}}}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0015"},"protocols":[{"x402":{}}]}}},"/v1/crypto/token-report":{"post":{"operationId":"token_report","summary":"Token due diligence in one call: a 0-100 safety score and verdict (low-risk / caution / high-risk / avoid) with every deduction explained (paid)","description":"Token due diligence in one call: a 0-100 safety score and verdict (low-risk / caution / high-risk / avoid) with every deduction explained. Combines the token audit (honeypot, taxes, mint/blacklist/pause, LP lock, holders — Powered by GoPlus Security), a verified-contract scan for owner powers, price and real DEX liquidity, and live sell tests ($100 and $1,000 to USDC). Ethereum, Base, Arbitrum, Optimism, Polygon, BNB Chain, Solana.","x-payment":{"protocol":"x402","version":2,"scheme":"exact","network":"eip155:8453","asset":"USDC","price_usd":"0.05"},"x-mcp-tool":"token_report","responses":{"200":{"description":"Result (JSON); PAYMENT-RESPONSE header carries the settlement receipt"},"400":{"description":"Invalid input (no payment requested)"},"402":{"description":"Payment required: PAYMENT-REQUIRED header (base64 JSON) lists accepted payment requirements"},"403":{"description":"robots.txt disallows the target (no payment requested)"},"404":{"description":"Not found (no payment requested)"},"503":{"description":"Backend temporarily unavailable (no payment requested)"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["chain","address"],"properties":{"chain":{"type":"string","enum":["ethereum","base","arbitrum","optimism","polygon","bsc","solana"]},"address":{"type":"string","maxLength":64,"description":"Token contract (0x...) or Solana mint"}}},"example":{"chain":"base","address":"0x532f27101965dd16442e59d40670faf5ebb142e4"}}}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.05"},"protocols":[{"x402":{}}]}}},"/v1/crypto/token-verdict":{"post":{"operationId":"token_verdict","summary":"Should I touch this token? A fast plain-English verdict (low-risk / caution / high-risk / avoid) with a 0-100 score, the top 3 reasons, the good signals and the key facts (honeypot, taxes, liquidity, holders, owner) (paid)","description":"Should I touch this token? A fast plain-English verdict (low-risk / caution / high-risk / avoid) with a 0-100 score, the top 3 reasons, the good signals and the key facts (honeypot, taxes, liquidity, holders, owner). Rule-based, no AI: same token, same answer. Optional 1200x630 SVG share card. Powered by GoPlus Security plus on-chain checks and real DEX liquidity. Ethereum, Base, Arbitrum, Optimism, Polygon, BNB Chain, Solana.","x-payment":{"protocol":"x402","version":2,"scheme":"exact","network":"eip155:8453","asset":"USDC","price_usd":"0.01"},"x-mcp-tool":"token_verdict","responses":{"200":{"description":"Result (JSON); PAYMENT-RESPONSE header carries the settlement receipt"},"400":{"description":"Invalid input (no payment requested)"},"402":{"description":"Payment required: PAYMENT-REQUIRED header (base64 JSON) lists accepted payment requirements"},"403":{"description":"robots.txt disallows the target (no payment requested)"},"404":{"description":"Not found (no payment requested)"},"503":{"description":"Backend temporarily unavailable (no payment requested)"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["chain","address"],"properties":{"chain":{"type":"string","enum":["ethereum","base","arbitrum","optimism","polygon","bsc","solana"]},"address":{"type":"string","maxLength":64,"description":"Token contract (0x...) or Solana mint"},"card":{"type":"boolean","default":false,"description":"Also return card_svg, a 1200x630 SVG image of the verdict"}}},"example":{"chain":"base","address":"0x532f27101965dd16442e59d40670faf5ebb142e4"}}}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.01"},"protocols":[{"x402":{}}]}}},"/v1/crypto/token-flows":{"get":{"operationId":"token_flows","summary":"Who is buying and selling a token right now: every on-chain transfer in the last 1h / 6h / 24h split into DEX buys, sells and wallet transfers (paid)","description":"Who is buying and selling a token right now: every on-chain transfer in the last 1h / 6h / 24h split into DEX buys, sells and wallet transfers. Returns buy vs sell volume and net flow in USD, unique buyers and sellers, top net buyers and sellers, the largest trades (with tx hashes) and an organic-activity score with wash-trading signals (round-tripping, volume concentration, repeated bot-size trades). Ethereum, Base, Arbitrum, Optimism, Polygon, BNB Chain.","x-payment":{"protocol":"x402","version":2,"scheme":"exact","network":"eip155:8453","asset":"USDC","price_usd":"0.01"},"x-mcp-tool":"token_flows","responses":{"200":{"description":"Result (JSON); PAYMENT-RESPONSE header carries the settlement receipt"},"400":{"description":"Invalid input (no payment requested)"},"402":{"description":"Payment required: PAYMENT-REQUIRED header (base64 JSON) lists accepted payment requirements"},"403":{"description":"robots.txt disallows the target (no payment requested)"},"404":{"description":"Not found (no payment requested)"},"503":{"description":"Backend temporarily unavailable (no payment requested)"}},"parameters":[{"name":"chain","in":"query","required":true,"schema":{"type":"string","enum":["ethereum","base","arbitrum","optimism","polygon","bsc"]},"example":"base"},{"name":"address","in":"query","required":true,"schema":{"type":"string","maxLength":42,"description":"Token contract (0x...)"},"description":"Token contract (0x...)","example":"0x532f27101965dd16442e59d40670faf5ebb142e4"},{"name":"window","in":"query","required":false,"schema":{"type":"string","enum":["1h","6h","24h"],"default":"1h","description":"Look-back window"},"description":"Look-back window","example":"1h"}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.01"},"protocols":[{"x402":{}}]}}},"/v1/crypto/explain-tx":{"get":{"operationId":"explain_transaction","summary":"Explain any mined transaction in plain English: what happened (swap, transfer, approval, NFT buy/sell/mint, wrap, contract deploy, failed + revert reason), the sender's net token changes with USD values, every token and native-coin movement, approvals granted, the function called (named from the verified ABI or a signature database, with decoded arguments) and the fee (paid)","description":"Explain any mined transaction in plain English: what happened (swap, transfer, approval, NFT buy/sell/mint, wrap, contract deploy, failed + revert reason), the sender's net token changes with USD values, every token and native-coin movement, approvals granted, the function called (named from the verified ABI or a signature database, with decoded arguments) and the fee. Rule-based, no AI. Ethereum, Base, Arbitrum, Optimism, Polygon, BNB Chain.","x-payment":{"protocol":"x402","version":2,"scheme":"exact","network":"eip155:8453","asset":"USDC","price_usd":"0.005"},"x-mcp-tool":"explain_transaction","responses":{"200":{"description":"Result (JSON); PAYMENT-RESPONSE header carries the settlement receipt"},"400":{"description":"Invalid input (no payment requested)"},"402":{"description":"Payment required: PAYMENT-REQUIRED header (base64 JSON) lists accepted payment requirements"},"403":{"description":"robots.txt disallows the target (no payment requested)"},"404":{"description":"Not found (no payment requested)"},"503":{"description":"Backend temporarily unavailable (no payment requested)"}},"parameters":[{"name":"chain","in":"query","required":true,"schema":{"type":"string","enum":["ethereum","base","arbitrum","optimism","polygon","bsc"]},"example":"base"},{"name":"hash","in":"query","required":true,"schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{64}$","description":"Transaction hash (0x + 64 hex)"},"description":"Transaction hash (0x + 64 hex)","example":"0x08ee682f9d01628aa8397e1ecc0c37cf47e468d67f711f3bc7e94addba0efffe"}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.005"},"protocols":[{"x402":{}}]}}},"/v1/crypto/resolve-name":{"get":{"operationId":"resolve_name","summary":"Resolve ENS names and Basenames both ways (paid)","description":"Resolve ENS names and Basenames both ways. name -> Ethereum address, Base address and profile records (avatar, description, url, email, Twitter/X, GitHub, Discord, Telegram) and whether it is that address's primary name; address -> its primary ENS name and primary Basename, each verified to resolve back to the same address. Works for .eth, *.base.eth, subnames and offchain (CCIP-Read) names. Unknown name or address = 404, not charged.","x-payment":{"protocol":"x402","version":2,"scheme":"exact","network":"eip155:8453","asset":"USDC","price_usd":"0.001"},"x-mcp-tool":"resolve_name","responses":{"200":{"description":"Result (JSON); PAYMENT-RESPONSE header carries the settlement receipt"},"400":{"description":"Invalid input (no payment requested)"},"402":{"description":"Payment required: PAYMENT-REQUIRED header (base64 JSON) lists accepted payment requirements"},"403":{"description":"robots.txt disallows the target (no payment requested)"},"404":{"description":"Not found (no payment requested)"},"503":{"description":"Backend temporarily unavailable (no payment requested)"}},"parameters":[{"name":"name","in":"query","required":false,"schema":{"type":"string","maxLength":255,"description":"ENS name or Basename, e.g. vitalik.eth or jesse.base.eth (ASCII). Use this or address"},"description":"ENS name or Basename, e.g. vitalik.eth or jesse.base.eth (ASCII). Use this or address","example":"jesse.base.eth"},{"name":"address","in":"query","required":false,"schema":{"type":"string","maxLength":42,"description":"0x address to find the primary name of. Use this or name"},"description":"0x address to find the primary name of. Use this or name"}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}]}}},"/v1/crypto/wallet-report":{"get":{"operationId":"wallet_report","summary":"Wallet risk & activity report in one call — vet a counterparty before you transact: the address's own reputation (sanctions, phishing, theft, laundering, mixer.. (paid)","description":"Wallet risk & activity report in one call — vet a counterparty before you transact: the address's own reputation (sanctions, phishing, theft, laundering, mixer... Powered by GoPlus Security), open token approvals with risky spenders, scam tokens held, and the full portfolio with USD values across Ethereum, Base, Arbitrum, Optimism, Polygon and BNB Chain (or Solana: holdings only). Verdict: clean / caution / high-risk / flagged / incomplete, with every reason listed.","x-payment":{"protocol":"x402","version":2,"scheme":"exact","network":"eip155:8453","asset":"USDC","price_usd":"0.03"},"x-mcp-tool":"wallet_report","responses":{"200":{"description":"Result (JSON); PAYMENT-RESPONSE header carries the settlement receipt"},"400":{"description":"Invalid input (no payment requested)"},"402":{"description":"Payment required: PAYMENT-REQUIRED header (base64 JSON) lists accepted payment requirements"},"403":{"description":"robots.txt disallows the target (no payment requested)"},"404":{"description":"Not found (no payment requested)"},"503":{"description":"Backend temporarily unavailable (no payment requested)"}},"parameters":[{"name":"address","in":"query","required":true,"schema":{"type":"string","description":"EVM 0x address or Solana base58 address"},"description":"EVM 0x address or Solana base58 address","example":"0x098b716b8aaf21512996dc57eb0615e2383e2f96"},{"name":"chains","in":"query","required":false,"schema":{"type":"string","description":"EVM only: comma-separated subset of ethereum, base, arbitrum, optimism, polygon, bsc (default all)"},"description":"EVM only: comma-separated subset of ethereum, base, arbitrum, optimism, polygon, bsc (default all)"}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.03"},"protocols":[{"x402":{}}]}}},"/v1/company-snapshot":{"get":{"operationId":"company_snapshot","summary":"Company snapshot in one call for any SEC-registered company: fundamentals and ratios from the latest annual report (revenue, margins, growth, debt, cash flow, EPS), SEC profile (industry, exchange, state, fiscal year), recent filings (latest 10-K / 10-Q, 8-K events, insider-trading activity in 90 days) and the official website's health (uptime, TLS expiry, email security, registration) (paid)","description":"Company snapshot in one call for any SEC-registered company: fundamentals and ratios from the latest annual report (revenue, margins, growth, debt, cash flow, EPS), SEC profile (industry, exchange, state, fiscal year), recent filings (latest 10-K / 10-Q, 8-K events, insider-trading activity in 90 days) and the official website's health (uptime, TLS expiry, email security, registration). Sources: SEC EDGAR (public domain), Wikidata (CC0).","x-payment":{"protocol":"x402","version":2,"scheme":"exact","network":"eip155:8453","asset":"USDC","price_usd":"0.05"},"x-mcp-tool":"company_snapshot","responses":{"200":{"description":"Result (JSON); PAYMENT-RESPONSE header carries the settlement receipt"},"400":{"description":"Invalid input (no payment requested)"},"402":{"description":"Payment required: PAYMENT-REQUIRED header (base64 JSON) lists accepted payment requirements"},"403":{"description":"robots.txt disallows the target (no payment requested)"},"404":{"description":"Not found (no payment requested)"},"503":{"description":"Backend temporarily unavailable (no payment requested)"}},"parameters":[{"name":"ticker","in":"query","required":true,"schema":{"type":"string","maxLength":10,"description":"Ticker of an SEC-registered company, e.g. AAPL, MSFT, BRK-B"},"description":"Ticker of an SEC-registered company, e.g. AAPL, MSFT, BRK-B","example":"NVDA"},{"name":"domain","in":"query","required":false,"schema":{"type":"string","maxLength":253,"description":"Optional website to check instead of the one on record"},"description":"Optional website to check instead of the one on record"}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.05"},"protocols":[{"x402":{}}]}}},"/v1/site-audit":{"post":{"operationId":"site_audit","summary":"Full website audit in one call: an A-F grade with four 0-100 scores (performance, SEO, security, availability) and every issue listed with a fix (paid)","description":"Full website audit in one call: an A-F grade with four 0-100 scores (performance, SEO, security, availability) and every issue listed with a fix. One real browser load gives Core Web Vitals, SEO of the rendered page (title, description, headings, canonical, alt text, Open Graph, JSON-LD) and an optional screenshot; plus uptime, HTTP→HTTPS redirect, TLS expiry, security headers, SPF/DMARC email security, domain registration, robots.txt and sitemap. robots.txt respected; nothing stored.","x-payment":{"protocol":"x402","version":2,"scheme":"exact","network":"eip155:8453","asset":"USDC","price_usd":"0.02"},"x-mcp-tool":"site_audit","responses":{"200":{"description":"Result (JSON); PAYMENT-RESPONSE header carries the settlement receipt"},"400":{"description":"Invalid input (no payment requested)"},"402":{"description":"Payment required: PAYMENT-REQUIRED header (base64 JSON) lists accepted payment requirements"},"403":{"description":"robots.txt disallows the target (no payment requested)"},"404":{"description":"Not found (no payment requested)"},"503":{"description":"Backend temporarily unavailable (no payment requested)"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["url"],"properties":{"url":{"type":"string","format":"uri","maxLength":2048},"device":{"type":"string","enum":["mobile","desktop"],"default":"mobile"},"screenshot":{"type":"boolean","default":true,"description":"Include a 1280x800 JPEG screenshot (base64)"}}},"example":{"url":"https://example.org/"}}}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.02"},"protocols":[{"x402":{}}]}}},"/v1/research-brief":{"post":{"operationId":"research_brief","summary":"Research brief on any topic in one call: the best papers from ISHOB's open-licence archive, filled with a live search of 250M+ scholarly works, each with authors, year, venue, DOI and citations; abstracts only for openly licensed papers (CC0 / public domain / CC BY / CC BY-SA), metadata and link for the rest; plus a short AI synthesis citing the papers as [n] (paid)","description":"Research brief on any topic in one call: the best papers from ISHOB's open-licence archive, filled with a live search of 250M+ scholarly works, each with authors, year, venue, DOI and citations; abstracts only for openly licensed papers (CC0 / public domain / CC BY / CC BY-SA), metadata and link for the rest; plus a short AI synthesis citing the papers as [n]. Checked before payment: if nothing is found anywhere the answer is a free 404 'not_covered'.","x-payment":{"protocol":"x402","version":2,"scheme":"exact","network":"eip155:8453","asset":"USDC","price_usd":"0.05"},"x-mcp-tool":"research_brief","responses":{"200":{"description":"Result (JSON); PAYMENT-RESPONSE header carries the settlement receipt"},"400":{"description":"Invalid input (no payment requested)"},"402":{"description":"Payment required: PAYMENT-REQUIRED header (base64 JSON) lists accepted payment requirements"},"403":{"description":"robots.txt disallows the target (no payment requested)"},"404":{"description":"Not found (no payment requested)"},"503":{"description":"Backend temporarily unavailable (no payment requested)"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["query"],"properties":{"query":{"type":"string","minLength":3,"maxLength":200,"description":"Research question or topic"},"max_papers":{"type":"integer","minimum":1,"maximum":8,"default":5},"year_from":{"type":"integer","minimum":1900,"description":"Only papers published in or after this year"},"include_live":{"type":"boolean","default":true,"description":"Fill with live results from open scholarly sources when the archive has fewer papers"},"synthesize":{"type":"boolean","default":true,"description":"Add the AI-written brief"}}},"example":{"query":"perovskite solar cell stability","max_papers":5}}}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.05"},"protocols":[{"x402":{}}]}}},"/v1/location-report":{"get":{"operationId":"location_report","summary":"Location risk report in one call: resolve a place name (or reverse-geocode lat/lon), then weather risk for the next hours (drone-safe, outdoor-event risk, wind, rain, frost, extremes), local time, today's sunrise / sunset / daylight, and country facts (region, population, GDP, income group) (paid)","description":"Location risk report in one call: resolve a place name (or reverse-geocode lat/lon), then weather risk for the next hours (drone-safe, outdoor-event risk, wind, rain, frost, extremes), local time, today's sunrise / sunset / daylight, and country facts (region, population, GDP, income group). For logistics, travel, events and drone planning.","x-payment":{"protocol":"x402","version":2,"scheme":"exact","network":"eip155:8453","asset":"USDC","price_usd":"0.01"},"x-mcp-tool":"location_report","responses":{"200":{"description":"Result (JSON); PAYMENT-RESPONSE header carries the settlement receipt"},"400":{"description":"Invalid input (no payment requested)"},"402":{"description":"Payment required: PAYMENT-REQUIRED header (base64 JSON) lists accepted payment requirements"},"403":{"description":"robots.txt disallows the target (no payment requested)"},"404":{"description":"Not found (no payment requested)"},"503":{"description":"Backend temporarily unavailable (no payment requested)"}},"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200,"description":"Place name, e.g. 'Lisbon' or 'Springfield, IL, US' (or use lat+lon)"},"description":"Place name, e.g. 'Lisbon' or 'Springfield, IL, US' (or use lat+lon)","example":"Lisbon"},{"name":"lat","in":"query","required":false,"schema":{"type":"number","minimum":-90,"maximum":90}},{"name":"lon","in":"query","required":false,"schema":{"type":"number","minimum":-180,"maximum":180}},{"name":"hours","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":48,"default":24,"description":"Forecast window"},"description":"Forecast window"}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.01"},"protocols":[{"x402":{}}]}}},"/v1/alarm":{"post":{"operationId":"set_agent_alarm","summary":"Schedule a signed webhook to wake an AI agent later: ISHOB POSTs your JSON payload to your https callback at deliver_at or after delay_seconds (60 s to 30 days ahead), retrying failed deliveries (1, 5, 15, 30, 60 min) (paid)","description":"Schedule a signed webhook to wake an AI agent later: ISHOB POSTs your JSON payload to your https callback at deliver_at or after delay_seconds (60 s to 30 days ahead), retrying failed deliveries (1, 5, 15, 30, 60 min). Each delivery carries X-ISHOB-Signature (HMAC-SHA256 with the signing_secret returned once). Free status: GET /v1/alarm/{id}; free cancel: POST /v1/alarm/{id}/cancel. Charged only when the alarm is accepted.","x-payment":{"protocol":"x402","version":2,"scheme":"exact","network":"eip155:8453","asset":"USDC","price_usd":"0.001"},"x-mcp-tool":"set_agent_alarm","responses":{"200":{"description":"Result (JSON); PAYMENT-RESPONSE header carries the settlement receipt"},"400":{"description":"Invalid input (no payment requested)"},"402":{"description":"Payment required: PAYMENT-REQUIRED header (base64 JSON) lists accepted payment requirements"},"403":{"description":"robots.txt disallows the target (no payment requested)"},"404":{"description":"Not found (no payment requested)"},"503":{"description":"Backend temporarily unavailable (no payment requested)"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["callback_url"],"properties":{"delay_seconds":{"type":"integer","minimum":60,"maximum":2592000,"description":"Deliver this many seconds from now (60 to 2592000). Use this or deliver_at"},"deliver_at":{"type":"string","maxLength":40,"description":"Or an absolute time: ISO-8601 with timezone (2026-10-15T14:00:00Z) or Unix seconds; 60 s to 30 days ahead"},"callback_url":{"type":"string","format":"uri","maxLength":2048,"description":"Public https URL that receives the POST"},"payload":{"type":"object","description":"JSON object sent back on delivery (max 8192 bytes)"},"retry_count":{"type":"integer","minimum":0,"maximum":5,"default":3,"description":"Retries after a failed delivery"}}},"example":{"delay_seconds":300,"callback_url":"https://agent.example.com/webhook","payload":{"task_id":"abc-123","action":"resume_market_check"}}}}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}]}}},"/v1/barcode":{"post":{"operationId":"generate_barcode","summary":"Generate a barcode or QR code as SVG or PNG: QR, DataMatrix, PDF417, Code 128, Code 39, EAN-13, EAN-8, UPC-A, ISBN-13, ITF and GS1-128 (paid)","description":"Generate a barcode or QR code as SVG or PNG: QR, DataMatrix, PDF417, Code 128, Code 39, EAN-13, EAN-8, UPC-A, ISBN-13, ITF and GS1-128. EAN/UPC/ISBN check digits are computed (or verified, never silently replaced). QR and DataMatrix support colours, square/rounded/dot styles and (QR) a centre logo from an https URL. Every format is verified scannable. Returns SVG text or base64 PNG plus a data URI ready to embed in HTML, PDF or labels.","x-payment":{"protocol":"x402","version":2,"scheme":"exact","network":"eip155:8453","asset":"USDC","price_usd":"0.001"},"x-mcp-tool":"generate_barcode","responses":{"200":{"description":"Result (JSON); PAYMENT-RESPONSE header carries the settlement receipt"},"400":{"description":"Invalid input (no payment requested)"},"402":{"description":"Payment required: PAYMENT-REQUIRED header (base64 JSON) lists accepted payment requirements"},"403":{"description":"robots.txt disallows the target (no payment requested)"},"404":{"description":"Not found (no payment requested)"},"503":{"description":"Backend temporarily unavailable (no payment requested)"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["text"],"properties":{"type":{"type":"string","enum":["qrcode","datamatrix","pdf417","code128","code39","ean13","ean8","upca","isbn13","itf","gs1_128"],"default":"qrcode","description":"Barcode format"},"text":{"type":"string","minLength":1,"maxLength":2000,"description":"Data to encode (URL, text, digits for EAN/UPC/ISBN...)"},"format":{"type":"string","enum":["svg","png"],"default":"svg","description":"Output image format"},"scale":{"type":"integer","minimum":1,"maximum":20,"description":"Size: pixels per module (2D) or bar-width step (1D); default 4 (SVG) / 8 (PNG)"},"color":{"type":"string","pattern":"^#[0-9a-fA-F]{6}$","default":"#000000","description":"Foreground colour #RRGGBB"},"background":{"type":"string","pattern":"^#[0-9a-fA-F]{6}$","default":"#FFFFFF","description":"Background colour #RRGGBB"},"style":{"type":"string","enum":["square","rounded","dots"],"default":"square","description":"Module style (qrcode, datamatrix)"},"ec":{"type":"string","enum":["L","M","Q","H"],"default":"M","description":"QR error correction level (H when a logo is used)"},"logo_url":{"type":"string","format":"uri","description":"QR only: https URL of a PNG/JPEG/WebP logo (max 200 KB) placed in the centre"},"include_text":{"type":"boolean","default":true,"description":"Print the human-readable text under linear barcodes"},"height_mm":{"type":"number","minimum":5,"maximum":100,"default":15,"description":"Bar height for linear barcodes, in mm"}}},"example":{"type":"qrcode","text":"https://ishob.com","format":"svg"}}}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}]}}},"/v1/product-code":{"get":{"operationId":"lookup_product_code","summary":"Look up a product barcode number: identify and validate EAN-13, EAN-8, UPC-A, UPC-E, GTIN-14, ISBN-13/10, ISSN and ISMN codes (wrong check digits are reported with the correct digit), convert between forms (GTIN-14, EAN-13, UPC-A, ISBN-10 <-> 13) and decode the GS1 prefix (paid)","description":"Look up a product barcode number: identify and validate EAN-13, EAN-8, UPC-A, UPC-E, GTIN-14, ISBN-13/10, ISSN and ISMN codes (wrong check digits are reported with the correct digit), convert between forms (GTIN-14, EAN-13, UPC-A, ISBN-10 <-> 13) and decode the GS1 prefix. Then fetch product data from open databases: name, brand, quantity, categories, image, labels, Nutri-Score (food, cosmetics, pet food via Open Food Facts) or title, authors, publisher and cover (books via Open Library).","x-payment":{"protocol":"x402","version":2,"scheme":"exact","network":"eip155:8453","asset":"USDC","price_usd":"0.001"},"x-mcp-tool":"lookup_product_code","responses":{"200":{"description":"Result (JSON); PAYMENT-RESPONSE header carries the settlement receipt"},"400":{"description":"Invalid input (no payment requested)"},"402":{"description":"Payment required: PAYMENT-REQUIRED header (base64 JSON) lists accepted payment requirements"},"403":{"description":"robots.txt disallows the target (no payment requested)"},"404":{"description":"Not found (no payment requested)"},"503":{"description":"Backend temporarily unavailable (no payment requested)"}},"parameters":[{"name":"code","in":"query","required":true,"schema":{"type":"string","maxLength":20,"description":"Barcode number: 8/12/13/14 digits or ISBN-10 (spaces and hyphens ignored), e.g. 3017620422003"},"description":"Barcode number: 8/12/13/14 digits or ISBN-10 (spaces and hyphens ignored), e.g. 3017620422003","example":"3017620422003"},{"name":"lookup","in":"query","required":false,"schema":{"type":"boolean","default":true,"description":"Also fetch product / book data from open databases (false = validate and convert only)"},"description":"Also fetch product / book data from open databases (false = validate and convert only)"}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}]}}},"/v1/barcode/read":{"post":{"operationId":"read_barcode","summary":"Read barcodes and QR codes from an image (URL or base64): QR, Micro QR, DataMatrix, Aztec, PDF417, MaxiCode, EAN-13/8, UPC-A/E, Code 128/39/93, Codabar, ITF and DataBar (paid)","description":"Read barcodes and QR codes from an image (URL or base64): QR, Micro QR, DataMatrix, Aztec, PDF417, MaxiCode, EAN-13/8, UPC-A/E, Code 128/39/93, Codabar, ITF and DataBar. Finds every code in the picture, even rotated, small or inverted (phone photos, receipts, labels, screenshots), and returns each one's text, format, position and meaning (URL, Wi-Fi network, vCard, e-mail, phone, location, crypto payment URI, product GTIN). No code found = not charged.","x-payment":{"protocol":"x402","version":2,"scheme":"exact","network":"eip155:8453","asset":"USDC","price_usd":"0.001"},"x-mcp-tool":"read_barcode","responses":{"200":{"description":"Result (JSON); PAYMENT-RESPONSE header carries the settlement receipt"},"400":{"description":"Invalid input (no payment requested)"},"402":{"description":"Payment required: PAYMENT-REQUIRED header (base64 JSON) lists accepted payment requirements"},"403":{"description":"robots.txt disallows the target (no payment requested)"},"404":{"description":"Not found (no payment requested)"},"503":{"description":"Backend temporarily unavailable (no payment requested)"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"image_url":{"type":"string","format":"uri","maxLength":2048,"description":"Public URL of the image (PNG, JPEG, WebP, GIF, BMP, TIFF; max 8 MB). Use this or image_base64"},"image_base64":{"type":"string","description":"The image as base64 (or a data: URI), max 8 MB. Use this or image_url"},"formats":{"type":"array","items":{"type":"string","enum":["qrcode","microqrcode","datamatrix","aztec","pdf417","maxicode","ean13","ean8","upca","upce","code128","code39","code93","codabar","itf","databar","databarexpanded"]},"description":"Only look for these formats (default: all)"},"max_results":{"type":"integer","minimum":1,"maximum":20,"default":10,"description":"Maximum codes to return"}}},"example":{"image_url":"https://api.ishob.com/v1/files/example/qr.png"}}}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}]}}},"/api/catalog":{"get":{"summary":"Catalog (free, 100 per page)","parameters":[{"name":"topic","in":"query","required":false,"schema":{"type":"string"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer"}}],"responses":{"200":{"description":"Catalog page"}},"security":[]}},"/api/topics":{"get":{"summary":"Topics (free)","responses":{"200":{"description":"Topics"}},"security":[]}},"/api/search":{"get":{"summary":"Search (free)","parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string"}},{"name":"topic","in":"query","required":false,"schema":{"type":"string"}},{"name":"year_from","in":"query","required":false,"schema":{"type":"integer"}},{"name":"year_to","in":"query","required":false,"schema":{"type":"integer"}},{"name":"license","in":"query","required":false,"schema":{"type":"string"}},{"name":"fulltext","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer"}}],"responses":{"200":{"description":"Results"},"400":{"description":"Invalid query"}},"security":[]}},"/api/stats":{"get":{"summary":"Totals (free)","responses":{"200":{"description":"Stats"}},"security":[]}},"/api/document/{id}":{"get":{"summary":"Document metadata + abstract + rights (paid)","parameters":[{"name":"id","in":"path","required":true,"example":"pmc-4853116","schema":{"type":"string","pattern":"^(?:pmc-\\d{1,12}|pmid-\\d{1,12}|doi-[0-9a-f]{20}|oa-w\\d{1,15}|arxiv-[a-z0-9][a-z0-9.\\-]{3,40}|doaj-[0-9a-f]{32})$"}}],"x-payment":{"protocol":"x402","version":2,"scheme":"exact","network":"eip155:8453","asset":"USDC","price_usd":"0.001"},"responses":{"200":{"description":"Content (JSON) with license + attribution; PAYMENT-RESPONSE header carries the settlement receipt"},"400":{"description":"Invalid id"},"402":{"description":"Payment required. PAYMENT-REQUIRED header (base64 JSON) lists accepted payment requirements"},"404":{"description":"Not found (no payment requested)"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}]}}},"/api/document/{id}/fulltext":{"get":{"summary":"Structured full text (paid)","parameters":[{"name":"id","in":"path","required":true,"example":"pmc-4853116","schema":{"type":"string","pattern":"^(?:pmc-\\d{1,12}|pmid-\\d{1,12}|doi-[0-9a-f]{20}|oa-w\\d{1,15}|arxiv-[a-z0-9][a-z0-9.\\-]{3,40}|doaj-[0-9a-f]{32})$"}}],"x-payment":{"protocol":"x402","version":2,"scheme":"exact","network":"eip155:8453","asset":"USDC","price_usd":"0.01"},"responses":{"200":{"description":"Content (JSON) with license + attribution; PAYMENT-RESPONSE header carries the settlement receipt"},"400":{"description":"Invalid id"},"402":{"description":"Payment required. PAYMENT-REQUIRED header (base64 JSON) lists accepted payment requirements"},"404":{"description":"Not found (no payment requested)"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.01"},"protocols":[{"x402":{}}]}}},"/api/document/{id}/references":{"get":{"summary":"References (paid)","parameters":[{"name":"id","in":"path","required":true,"example":"pmc-4853116","schema":{"type":"string","pattern":"^(?:pmc-\\d{1,12}|pmid-\\d{1,12}|doi-[0-9a-f]{20}|oa-w\\d{1,15}|arxiv-[a-z0-9][a-z0-9.\\-]{3,40}|doaj-[0-9a-f]{32})$"}}],"x-payment":{"protocol":"x402","version":2,"scheme":"exact","network":"eip155:8453","asset":"USDC","price_usd":"0.002"},"responses":{"200":{"description":"Content (JSON) with license + attribution; PAYMENT-RESPONSE header carries the settlement receipt"},"400":{"description":"Invalid id"},"402":{"description":"Payment required. PAYMENT-REQUIRED header (base64 JSON) lists accepted payment requirements"},"404":{"description":"Not found (no payment requested)"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.002"},"protocols":[{"x402":{}}]}}},"/api/topic/{slug}/content":{"get":{"summary":"Topic JSONL bundle (paid)","parameters":[{"name":"slug","in":"path","required":true,"example":"laser-calibration","schema":{"type":"string","pattern":"^[a-z0-9-]{1,64}$"}},{"name":"part","in":"query","required":false,"schema":{"type":"integer","minimum":1}}],"x-payment":{"protocol":"x402","version":2,"scheme":"exact","network":"eip155:8453","asset":"USDC","price_usd":"0.5"},"responses":{"200":{"description":"Content (JSON) with license + attribution; PAYMENT-RESPONSE header carries the settlement receipt"},"400":{"description":"Invalid id"},"402":{"description":"Payment required. PAYMENT-REQUIRED header (base64 JSON) lists accepted payment requirements"},"404":{"description":"Not found (no payment requested)"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.5"},"protocols":[{"x402":{}}]}}},"/mcp":{"post":{"operationId":"mcp","summary":"Remote MCP server (Streamable HTTP JSON-RPC). Discovery is free; paid tools settle inside tools/call","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"},"example":{"jsonrpc":"2.0","id":1,"method":"tools/list"}}}},"responses":{"200":{"description":"JSON-RPC response"}},"security":[]}},"/v1/alarm/{id}":{"get":{"operationId":"alarm_status","summary":"Agent alarm status (free)","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Alarm status and delivery attempts"},"404":{"description":"Unknown alarm"}},"security":[]}}}}