{"name":"ISHOB (testnet)","description":"A growing machine-readable archive of structured knowledge resources, normalized to structured JSON with full license/attribution metadata. Discovery and search are free; document content is paid per request via the x402 HTTP payment protocol (USDC).","environment":"staging","endpoints":{"free":{"GET /api":"this document","GET /api/catalog":"paginated catalog, 100 per page: ?topic=&page=N (follow `next`)","GET /api/topics":"topics with document counts","GET /api/search":"?q=(<=200 chars; all words must match)&topic=&year_from=&year_to=&license=CC0|PDM|CC-BY|CC-BY-SA&fulltext=true|false&limit=(<=50)&offset=(<=1000); q or topic required","GET /api/stats":"archive totals","GET /.well-known/ai-data.json":"machine discovery document","GET /openapi.json":"OpenAPI 3.1 description"},"paid":{"GET /api/document/{id}":"metadata + abstract + rights ($0.001)","GET /api/document/{id}/fulltext":"structured full text ($0.01)","GET /api/document/{id}/references":"parsed references ($0.002)","GET /api/topic/{slug}/content?part=N":"JSONL bundle part (up to 5,000 documents' metadata) of a topic ($0.5 per part; see bundle_parts in /api/topics)","POST /v1/extract":"live web page -> Markdown ($0.0005)","POST /v1/search":"full-text + technical-spec search ($0.001)","POST /v1/specs":"structured specification table ($0.001)","GET /v1/metadata":"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). ($0.0002)","GET /v1/dataset/{key}":"Static Knowledge Base: open, commercially reusable datasets (world cities, countries, ISHOB topics) by page, by id or by facet filter, with licence and attribution ($0.0001)","GET /v1/weather":"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 ($0.0003)","POST /v1/domain":"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. ($0.0004)","GET /v1/geocode":"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 ($0.0002)","POST /v1/pdf-tables":"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) ($0.0008)","GET /v1/finance":"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 ($0.0005)","POST /v1/screenshot":"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 ($0.001)","POST /v1/ping-status":"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) ($0.0002)","GET /v1/feed-reader":"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 ($0.0003)","POST /v1/embed":"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) ($0.0002)","GET /v1/site-speed":"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 ($0.0008)","POST /v1/render-doc":"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 ($0.001)"},"free_tools":{"GET /v1/datasets":"catalogue of the Static Knowledge Base datasets (licence, size, filters)","POST /mcp":"remote MCP server exposing every tool above (see /.well-known/mcp.json)"}},"id_format":"pmc-<digits> | pmid-<digits> | doi-<20 hex chars> | oa-w<digits> | arxiv-<arXiv id> | doaj-<32 hex> (take ids from /api/catalog or /api/search)","pricing":{"currency":"USD (settled in USDC)","document_metadata":"0.001","document_fulltext":"0.01","document_references":"0.002","topic_bundle":"0.5"},"payment":{"protocol":"x402","x402_version":2,"scheme":"exact","network":"eip155:84532","network_name":"Base Sepolia (testnet)","asset":"USDC","pay_to":"0x906F87F107B4675dD890b3f8EB2d51885E50e09d","facilitator":"https://x402.org/facilitator","status":"active","flow":["GET a paid endpoint without payment -> HTTP 402 with PAYMENT-REQUIRED header (base64 JSON payment requirements)","Sign an x402 payment for one of the `accepts` requirements","Repeat the GET with the PAYMENT-SIGNATURE header","On success: HTTP 200 with content and PAYMENT-RESPONSE header (settlement receipt)","Requests for missing documents return 404 before any payment is requested; failed handlers are never charged"],"specification":"https://github.com/x402-foundation/x402"},"licensing":{"policy":"Only documents whose license explicitly permits commercial redistribution and derivatives are published: CC0, Public Domain, CC BY, CC BY-SA.","rejected":"CC BY-NC*, CC BY-ND*, unknown/missing licenses, all-rights-reserved","obligations":"Every response carries license, license_url, attribution and copyright_notice. Reusers must keep attribution; CC BY-SA content must stay CC BY-SA."},"limits":{"max_query_length":200,"max_page_size":50,"rate_limit":"per-IP, HTTP 429 with Retry-After"},"contact":null}