{"openapi":"3.1.0","info":{"title":"Toll402","version":"0.2.0","description":"The OpenRouter for AI-agent tools: one gateway, every capability, pay per call. Built-in tools, agent-forged tools, a global verified business directory, 2,842 provider API endpoints (SEO, social, enrichment, ads, market data, AI generation) and aggregated x402 services. Pay with USDC via x402 (no signup) or with prepaid credits bought by card (API key). Charged only on success.","contact":{"name":"Toll402","url":"https://toll402.dev","email":"hello@toll402.dev"},"termsOfService":"https://toll402.dev/terms","x-privacy-policy":"https://toll402.dev/privacy","x-llms-txt":"https://toll402.dev/llms.txt"},"servers":[{"url":"https://toll402.dev"}],"components":{"securitySchemes":{"apiKey":{"type":"apiKey","in":"header","name":"x-toll402-key","description":"Prepaid credits key (tk_…) bought by card at https://toll402.dev/credits. Debited per call, only on 2xx."},"x402":{"type":"http","scheme":"x402","description":"HTTP 402 payment protocol: read PAYMENT-REQUIRED, sign a USDC (Base) authorization, retry with PAYMENT-SIGNATURE. No account."}}},"paths":{"/v1/read":{"post":{"operationId":"read_url","summary":"Fetch any public web page (or PDF) and return clean, LLM-ready Markdown with title, metadata and links. Boilerplate, ads and scripts removed.","tags":["web","scraping","markdown","reader"],"x-price":"$0.002","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"Public http(s) URL to read","format":"uri"},"format":{"type":"string","enum":["markdown","text","both"],"default":"markdown","description":"Which body format(s) to return"},"includeLinks":{"type":"boolean","default":true},"includeImages":{"type":"boolean","default":false},"maxChars":{"type":"integer","minimum":500,"maximum":500000,"default":200000,"description":"Truncate body to this many characters"}},"required":["url"],"additionalProperties":false},"example":{"url":"https://en.wikipedia.org/wiki/HTTP_402"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"read_url","ms":420,"result":{"url":"https://en.wikipedia.org/wiki/HTTP_402","title":"HTTP 402","markdown":"# HTTP 402\n\n...","wordCount":812,"links":[{"text":"x402","href":"https://x402.org"}]}}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/pdf":{"post":{"operationId":"pdf_to_text","summary":"Download a PDF from a URL and return its full text, page count and title.","tags":["pdf","documents","text"],"x-price":"$0.005","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"Public URL of a PDF file","format":"uri"},"maxChars":{"type":"integer","minimum":500,"maximum":1000000,"default":300000}},"required":["url"],"additionalProperties":false},"example":{"url":"https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"pdf_to_text","ms":420,"result":{"url":"...","pages":1,"text":"Dummy PDF file","wordCount":3}}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/email/verify":{"post":{"operationId":"verify_email","summary":"Validate an email address: syntax, MX/A records, disposable-domain, free-provider and role-account detection, with a 0-100 score.","tags":["email","validation","leads"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"Email address to verify","minLength":3,"maxLength":254}},"required":["email"],"additionalProperties":false},"example":{"email":"support@github.com"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"verify_email","ms":420,"result":{"email":"support@github.com","valid":true,"hasMx":true,"disposable":false,"roleAccount":true,"score":95}}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/fx":{"post":{"operationId":"fx_rate","summary":"Exchange rate between two ISO currencies (ECB reference rates), optionally converting an amount.","tags":["finance","currency","fx"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"base":{"type":"string","maxLength":3,"minLength":3,"default":"USD","description":"ISO 4217 base currency"},"quote":{"type":"string","maxLength":3,"minLength":3,"description":"ISO 4217 quote currency; omit for all rates"},"amount":{"type":"number","minimum":0,"default":1}},"additionalProperties":false},"example":{"base":"USD","quote":"MXN","amount":100}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"fx_rate","ms":420,"result":{"base":"USD","quote":"MXN","rate":18.42,"amount":100,"converted":1842,"date":"2026-09-05"}}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/extract":{"post":{"operationId":"extract_structured","summary":"Turn a web page or raw text into JSON that matches YOUR JSON Schema. LLM-powered, schema-constrained output — no parsing needed.","tags":["extraction","llm","json","scraping"],"x-price":"$0.06","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","format":"uri","description":"Page to read and extract from"},"text":{"type":"string","maxLength":400000,"description":"Raw text/markdown/HTML to extract from (alternative to url)"},"schema":{"type":"object","additionalProperties":true,"description":"JSON Schema (object) describing the output you want"},"instructions":{"type":"string","maxLength":4000,"description":"Extra guidance, e.g. 'prices in USD', 'dates as ISO 8601'"}},"required":["schema"],"additionalProperties":false},"example":{"url":"https://news.ycombinator.com","schema":{"type":"object","properties":{"stories":{"type":"array","items":{"type":"object","properties":{"title":{"type":"string"},"points":{"type":"integer"}}}}}}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"extract_structured","ms":420,"result":{"data":{"stories":[{"title":"Show HN: ...","points":120}]},"usage":{"inputTokens":5400,"outputTokens":320}}}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/summarize":{"post":{"operationId":"summarize","summary":"Faithful summary of a URL or text in the style, length and language you choose.","tags":["summarization","llm","reading"],"x-price":"$0.05","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"text":{"type":"string","maxLength":400000},"style":{"type":"string","enum":["bullets","paragraph","tldr","detailed"],"default":"bullets"},"maxWords":{"type":"integer","minimum":20,"maximum":1500,"default":200},"language":{"type":"string","maxLength":40,"default":"same as source","description":"Output language, e.g. 'es', 'en'"},"focus":{"type":"string","maxLength":1000,"description":"What to focus on"}},"additionalProperties":false},"example":{"url":"https://en.wikipedia.org/wiki/HTTP_402","style":"tldr","language":"es"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"summarize","ms":420,"result":{"summary":"HTTP 402 es un código de estado reservado para pagos...","title":"HTTP 402"}}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/judge":{"post":{"operationId":"judge_output","summary":"Independent LLM-as-judge: scores a candidate output against a task and criteria (0-100), with pass/fail, issues and suggestions. Use it for self-verification, best-of-N, or QA gates.","tags":["evaluation","llm","quality","judge"],"x-price":"$0.07","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"task":{"type":"string","description":"The task/instructions the candidate was supposed to fulfil","maxLength":20000},"candidate":{"type":"string","description":"The output to evaluate","maxLength":100000},"reference":{"type":"string","maxLength":100000,"description":"Optional gold/reference answer"},"criteria":{"type":"array","items":{"type":"string","maxLength":300},"minItems":1,"maxItems":10,"default":["correctness","completeness","clarity"]}},"required":["task","candidate"],"additionalProperties":false},"example":{"task":"Write a haiku about the sea","candidate":"Waves fold into foam / salt wind combs the sleeping dunes / gulls stitch the grey sky","criteria":["is a haiku (5-7-5)","imagery"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"judge_output","ms":420,"result":{"overall":88,"pass":true,"scores":[{"criterion":"is a haiku (5-7-5)","score":90,"rationale":"..."}],"issues":[],"suggestions":[]}}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/provenance":{"post":{"operationId":"provenance","summary":"Human or synthetic? Provenance evidence for a URL: archive first-capture date, domain age, authorship markup, curated source tier, AI disclosures and stylometric signals, aggregated into a calibrated 0-100 human-origin score with every piece of evidence. Add deep=true for an LLM stylometric assessment.","tags":["provenance","ai-detection","human","synthetic","trust","curation"],"x-price":"$0.01","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"Public URL to assess","format":"uri"},"deep":{"type":"boolean","default":true,"description":"Also run an LLM stylometric assessment (only when the server has an LLM key)"}},"required":["url"],"additionalProperties":false},"example":{"url":"https://en.wikipedia.org/wiki/Turing_test","deep":false}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"provenance","ms":420,"result":{"humanOriginScore":82,"verdict":"likely_human","confidence":0.9,"firstArchived":"2003-05-12T00:00:00Z","source":{"tier":1},"evidence":[{"signal":"wayback_first_capture","value":"2003-05-12T00:00:00Z","direction":"human"}]}}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/lookup":{"post":{"operationId":"trusted_lookup","summary":"Answer from TRUSTED sources only (Wikipedia, Wikidata, arXiv, Crossref/DOI, World Bank): returns passages with URL, reliability tier and retrieval time for citation. With synthesize=true you also get an LLM answer that cites the passages and admits when they don't contain the answer.","tags":["research","facts","citations","trusted","reference","science","curation"],"x-price":"$0.01","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"query":{"type":"string","description":"Question or topic","minLength":2,"maxLength":500},"language":{"type":"string","maxLength":10,"default":"en","description":"Wikipedia language edition (en, es, de, fr, pt, ...)"},"sources":{"type":"array","items":{"type":"string","enum":["wikipedia","wikidata","arxiv","crossref","worldbank"]},"default":["wikipedia","wikidata","arxiv","crossref"]},"maxPassages":{"type":"integer","minimum":1,"maximum":20,"default":6},"synthesize":{"type":"boolean","default":true,"description":"Return a cited answer synthesized by an LLM (when the server has an LLM key)"}},"required":["query"],"additionalProperties":false},"example":{"query":"HTTP 402 payment required","language":"en","sources":["wikipedia","wikidata"],"synthesize":false}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"trusted_lookup","ms":420,"result":{"passages":[{"source":"wikipedia","tier":1,"title":"List of HTTP status codes","url":"https://en.wikipedia.org/wiki/List_of_HTTP_status_codes","snippet":"...","retrievedAt":"2026-09-07T00:00:00Z"}]}}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/biz/search":{"post":{"operationId":"business_search","summary":"Global business directory for agents (any city in the world; unknown cities are seeded on demand). Search by city, country, category, text or proximity; every result carries a dated verification score (0-100), level (unverified/listed/corroborated/verified/owner_verified) and, on request, the evidence behind it. Open data + live checks + owner claims, never scraped review sites. A city we do not hold yet answers HTTP 503 `region_seeding` with `retryAfterSec` and `alternatives` — you are NOT charged for it (x402 settles only on 2xx); repeat the same call after that delay. A 200 always carries `status`: ok | seeding (partial data, more arriving) | no_match (city covered, filters too narrow).","tags":["business","directory","local","places","verified","trust","curation","global","worldwide"],"x-price":"$0.005","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"query":{"type":"string","maxLength":200,"description":"Free text: name, cuisine, service…"},"category":{"type":"string","enum":["restaurant","cafe","bar","bakery","hotel","travel","car_rental","pharmacy","clinic","dentist","veterinary","optician","lawyer","notary","accountant","insurance","real_estate","architect","it_services","company","wholesale","manufacturing","agriculture","medical_supply","import_export","packaging","chemicals","textiles","construction_materials","machinery","marketing","consulting","finance","coworking","recruiting","logistics","engineering","bank","atm","school","museum","entertainment","gym","salon","supermarket","hardware","electronics","clothing","jewelry","furniture","bookstore","florist","pet","sports","gifts","department_store","auto","laundry","printing","trades","post","government","religion","childcare","other"],"description":"One of: restaurant, cafe, bar, bakery, hotel, travel, car_rental, pharmacy, clinic, dentist, veterinary, optician, lawyer, notary, accountant, insurance, real_estate, architect, it_services, company, wholesale, manufacturing, agriculture, medical_supply, import_export, packaging, chemicals, textiles, construction_materials, machinery, marketing, consulting, finance, coworking, recruiting, logistics, engineering, bank, atm, school, museum, entertainment, gym, salon, supermarket, hardware, electronics, clothing, jewelry, furniture, bookstore, florist, pet, sports, gifts, department_store, auto, laundry, printing, trades, post, government, religion, childcare, other"},"city":{"type":"string","maxLength":80,"description":"City label, e.g. 'Ciudad de México'"},"cityKey":{"type":"string","maxLength":60,"description":"Coverage key, e.g. 'cdmx' or one returned in `coverage` (see GET /v1/biz/coverage)"},"country":{"type":"string","maxLength":2,"minLength":2,"description":"ISO 3166-1 alpha-2"},"near":{"type":"object","properties":{"lat":{"type":"number"},"lon":{"type":"number"},"radiusKm":{"type":"number","minimum":0.1,"maximum":50,"default":3}},"required":["lat","lon"],"additionalProperties":false},"minScore":{"type":"integer","minimum":0,"maximum":100,"default":0,"description":"Only businesses with verification score ≥ this"},"minLevel":{"type":"string","enum":["unverified","listed","corroborated","verified","owner_verified"]},"claimedOnly":{"type":"boolean","default":false},"includeEvidence":{"type":"boolean","default":false},"limit":{"type":"integer","minimum":1,"maximum":50,"default":10},"offset":{"type":"integer","minimum":0,"maximum":500,"default":0,"description":"Paging offset, up to 500: narrow the query (city, category, text) for more"},"hasWebsite":{"type":"boolean","description":"Only businesses with a website"},"hasEmail":{"type":"boolean","description":"Only businesses with an email (mostly from official registries)"},"hasPhone":{"type":"boolean"},"minEmployees":{"type":"integer","minimum":0,"maximum":251,"description":"Minimum staff size from official registry bands (6, 11, 31, 51, 101, 251). Great for B2B supplier searches."},"enrichedOnly":{"type":"boolean","description":"Only businesses whose own website has been crawled and summarized (services, prices, booking, social)"},"diversify":{"type":"boolean","default":true,"description":"Collapse chains: at most one result per website domain"},"channel":{"type":"string","enum":["whatsapp","email","instagram","facebook","linkedin","booking","contactForm","telegram"],"description":"Only businesses with this contact channel found on their own website or open data"}},"additionalProperties":false},"example":{"cityKey":"cdmx","category":"dentist","minLevel":"corroborated","limit":5}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"business_search","ms":420,"result":{"status":"ok","total":120,"items":[{"id":"osm:node/123","name":"Clínica Dental Roma","category":"dentist","location":{"city":"Ciudad de México"},"contact":{"phone":"+5255...","website":"https://..."},"verification":{"score":68,"level":"corroborated","lastVerifiedAt":"2026-09-07T00:00:00Z"}}]}}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/biz/verify":{"post":{"operationId":"business_verify","summary":"Is this business real, and is its contact info live? Give an id, website, phone or name: matches it against the directory and runs live checks now (site up, name on site, phone on site, domain age, phone format). Returns evidence, score and verdict.","tags":["business","verify","fraud","trust","local"],"x-price":"$0.01","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","maxLength":120,"description":"Business id from search (re-runs live checks now)"},"name":{"type":"string","maxLength":200},"website":{"type":"string","maxLength":300},"phone":{"type":"string","maxLength":40},"address":{"type":"string","maxLength":300},"city":{"type":"string","maxLength":80},"country":{"type":"string","maxLength":2,"minLength":2}},"additionalProperties":false},"example":{"name":"Wikimedia Foundation","website":"https://wikimediafoundation.org","phone":"+14158396885"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"business_verify","ms":420,"result":{"inDirectory":false,"liveChecks":{"score":45,"level":"listed","evidence":[{"signal":"website_live","value":200,"weight":20}]},"verdict":"Not in directory; live checks scored 45/100"}}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/biz/details":{"post":{"operationId":"business_details","summary":"Deep profile of a business from its OWN website: crawls up to 5 relevant pages (menu, services, prices, hours, contact, booking) and returns a machine-readable profile — summary, hours (OSM syntax), services with prices, booking channels, payments, languages, social links. First-party data only, cached 30 days per business (force=true re-crawls).","tags":["business","profile","menu","services","hours","local"],"x-price":"$0.08","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"Business id from business_search","maxLength":120},"force":{"type":"boolean","default":false,"description":"Re-crawl even if a fresh (≤30 days) profile is cached"}},"required":["id"],"additionalProperties":false},"example":{"id":"wd:Q180"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"business_details","ms":420,"result":{"business":{"id":"wd:Q180","name":"Wikimedia Foundation","verification":{"score":80,"level":"verified"}},"enrichment":{"summary":"…","booking":{"email":"info@wikimedia.org","phone":"+1-415-839-6885"},"pagesCrawled":["https://wikimediafoundation.org/","https://wikimediafoundation.org/contact/"],"source":"own_website","costUsd":0.025},"cached":false}}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/biz/shortlist":{"post":{"operationId":"business_shortlist","summary":"Sourcing for agents whose principal is launching or buying something: describe the need (\"opening a coffee brand in Monterrey, need packaging suppliers and a designer\") and get a ranked shortlist of real businesses with a reason, fit score, best contact channel, staff size from official registries, verification level and website summary when curated. Covers each role in the need and says what is missing.","tags":["business","sourcing","suppliers","vendors","shortlist","b2b","directory","launch"],"x-price":"$0.25","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"need":{"type":"string","description":"What you are trying to do and what kind of businesses you need","minLength":8,"maxLength":600},"city":{"type":"string","minLength":2,"maxLength":80},"country":{"type":"string","maxLength":2,"minLength":2,"description":"ISO-3166 alpha-2, e.g. MX"},"limit":{"type":"integer","minimum":3,"maximum":10,"default":6},"minEmployees":{"type":"integer","minimum":0,"maximum":251},"requireWebsite":{"type":"boolean","default":false}},"required":["need","city"],"additionalProperties":false},"example":{"need":"Opening a specialty coffee shop, need coffee roasters and a commercial kitchen equipment supplier","city":"Guadalajara","country":"MX","limit":6}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"business_shortlist","ms":420,"result":{"city":"Guadalajara","shortlist":[{"role":"coffee roaster","fit":82,"why":"Verified roaster with wholesale page","bestContact":"email","business":{"name":"…"}}],"gaps":null}}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/listings":{"post":{"operationId":"list_service","summary":"Buy a verified listing for YOUR x402 endpoint, remote MCP server or A2A agent — paid by the agent in USDC, no humans. We probe it live (402 shape / MCP handshake / agent card); if it passes, it is listed for 30 days in the Toll402 catalog, llms.txt, agent card and landing, and ranked higher in /v1/find and the /v1/do router. basic $1 · featured $5 (top of results). Charged only when verification passes. Free quote: POST /v1/listings/quote.","tags":["marketplace","listing","directory","advertise","mcp","x402","agents"],"x-price":"$1","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"kind":{"type":"string","enum":["x402","mcp","agent"],"description":"x402 = HTTP endpoint that answers 402; mcp = remote MCP server (Streamable HTTP); agent = A2A agent card URL"},"url":{"type":"string","description":"The endpoint / MCP URL / agent-card URL","format":"uri"},"tier":{"type":"string","enum":["basic","featured"],"default":"basic","description":"basic $1/30 days · featured $5/30 days (top of results, landing spotlight)"},"name":{"type":"string","minLength":2,"maxLength":80},"description":{"type":"string","minLength":20,"maxLength":600},"tags":{"type":"array","items":{"type":"string","maxLength":30},"maxItems":10,"default":[]},"owner":{"type":"string","maxLength":80,"description":"Your wallet (0x) for attribution and future creator payouts"},"contact":{"type":"string","maxLength":120,"description":"Email or URL where we can reach you (not published)"}},"required":["kind","url"],"additionalProperties":false},"example":{"kind":"x402","url":"https://api.example.com/v1/quote","tier":"basic","tags":["finance"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"list_service","ms":420,"result":{"listed":true,"listing":{"id":"l/abc123","kind":"x402","tier":"basic","listedUntil":"2026-10-09T00:00:00Z"}}}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/forge":{"post":{"operationId":"forge_tool","summary":"Create a NEW tool from a description, an input schema and test examples. The code is generated, run in a sandbox against your examples (up to 3 attempts), and on success published as a paid endpoint /v1/t/<name> for every agent. Infinite tools, on demand.","tags":["forge","create","marketplace","codegen","custom"],"x-price":"$0.25","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Tool name (becomes the endpoint slug)","minLength":3,"maxLength":40},"description":{"type":"string","description":"What the tool does, precisely. Mention data sources (public URLs/APIs without keys) if any.","minLength":20,"maxLength":1000},"inputSchema":{"type":"object","additionalProperties":true,"description":"JSON Schema (type object) for the input"},"outputSchema":{"type":"object","additionalProperties":true,"description":"JSON Schema for the output (recommended)"},"examples":{"type":"array","items":{"type":"object","properties":{"input":{"type":"object","additionalProperties":true},"expectedOutput":{}},"required":["input"],"additionalProperties":false},"description":"Test cases; the tool must pass them to be published","minItems":1,"maxItems":5},"allowNetwork":{"type":"boolean","default":true,"description":"Whether the tool may call public HTTP endpoints"},"priceUsd":{"type":"number","minimum":0.001,"maximum":0.05,"default":0.005,"description":"Price per call for other agents (you never pay to use your own tool's endpoint less than this either)"},"tags":{"type":"array","items":{"type":"string","maxLength":30},"maxItems":8,"default":[]},"creator":{"type":"string","maxLength":80,"description":"Your wallet address or agent id, for attribution"}},"required":["name","description","inputSchema","examples"],"additionalProperties":false},"example":{"name":"hn_top","description":"Return the top N Hacker News story titles and URLs from https://hacker-news.firebaseio.com/v0/topstories.json and /v0/item/<id>.json","inputSchema":{"type":"object","properties":{"n":{"type":"integer"}},"required":["n"]},"examples":[{"input":{"n":3}}],"priceUsd":0.005}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"forge_tool","ms":420,"result":{"published":true,"tool":{"name":"hn_top","url":"https://toll402.dev/v1/t/hn_top","price":"$0.005"},"attempts":1}}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/do":{"post":{"operationId":"do","summary":"One endpoint for everything (OpenRouter-style): describe what you need and pass the input; Toll402 picks the best tool from the whole catalog (built-in, community-forged, external x402 services) and runs it. Tools priced above maxPriceUsd are returned as a match instead of executed.","tags":["router","gateway","auto","any"],"x-price":"$0.02","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"need":{"type":"string","description":"What you need, in plain language","minLength":3,"maxLength":500},"input":{"type":"object","additionalProperties":true,"description":"Input for the chosen tool (must match its schema)"},"maxPriceUsd":{"type":"number","minimum":0,"maximum":1,"default":0.01,"description":"Do not execute tools priced above this; return the match instead"},"tool":{"type":"string","description":"Force a specific tool id (skip routing)"}},"required":["need","input"],"additionalProperties":false},"example":{"need":"convert 100 US dollars to Mexican pesos","input":{"base":"USD","quote":"MXN","amount":100}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"do","ms":420,"result":{"executed":true,"tool":{"name":"fx_rate","price":"$0.001"},"result":{"converted":1842}}}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/cui_ro_validate":{"post":{"operationId":"cui_ro_validate","summary":"Offline validator for a Romanian CUI (company tax ID). Strips an optional 'RO' prefix, applies weights 7-5-3-2-1-7-3-2 to the digits preceding the check digit (right-to-left), sums the weighted products, multiplies by 10, takes mod 11 (mapping a remainder of 10 to 0), and compares the result to the supplied check digit.","tags":["validator","romania","tax-id","offline","cui"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"cui":{"type":"string","description":"CUI, optionally prefixed with RO, 2-9 digits"}},"required":["cui"]},"example":{"cui":"RO12345670"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"cui_ro_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/github_repo_stats":{"post":{"operationId":"github_repo_stats","summary":"Stars, forks, open issues, license and last push for a GitHub repo via https://api.github.com/repos/<owner>/<repo>","tags":["github","code"],"x-price":"$0.003","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"owner":{"type":"string"},"repo":{"type":"string"}},"required":["owner","repo"]},"example":{"owner":"coinbase","repo":"x402"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"github_repo_stats","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/ip_geolocate":{"post":{"operationId":"ip_geolocate","summary":"Country, region, city, timezone and ASN for an IPv4/IPv6 address via https://ipapi.co/<ip>/json/","tags":["network","geo"],"x-price":"$0.002","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"ip":{"type":"string"}},"required":["ip"]},"example":{"ip":"8.8.8.8"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"ip_geolocate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/fn_at_validate":{"post":{"operationId":"fn_at_validate","summary":"Offline validator for an Austrian Firmenbuchnummer (FN), the company register number. Normalizes the numeric part (1-6 digits, left-padded to 6 for calculation), computes the modulo-11 check letter using weights 2,1,2,1,2,1 (Luhn-style digit reduction for products >=9 by subtracting 9) and the standard letter table (0=p,1=a,2=b,3=c,4=d,5=e,6=f,7=g,8=h,9=i,10=k), and compares it to the supplied check letter.","tags":["validator","austria","firmenbuch","company-id","offline"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"value":{"type":"string","description":"Firmenbuchnummer, e.g. 'FN 123456k' or '123456k'"}},"required":["value"],"additionalProperties":false},"example":{"value":"123456k"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"fn_at_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/jsonld_extract":{"post":{"operationId":"jsonld_extract","summary":"Fetches a public URL, extracts all <script type=\"application/ld+json\"> blocks, parses them as JSON, and returns the parsed objects along with a count. Useful for pulling schema.org structured data (Product, Article, Organization, etc.) from a web page.","tags":["json-ld","schema.org","structured-data","scraping","seo"],"x-price":"$0.003","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","format":"uri","description":"Public URL of the page to extract JSON-LD from"}},"required":["url"]},"example":{"url":"https://example.com"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"jsonld_extract","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/hn_top":{"post":{"operationId":"hn_top","summary":"Top N Hacker News stories (title, url, score) via https://hacker-news.firebaseio.com/v0/topstories.json and /v0/item/<id>.json","tags":["news","hackernews"],"x-price":"$0.005","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"n":{"type":"integer","minimum":1,"maximum":30}},"required":["n"]},"example":{"n":3}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"hn_top","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/npm_package_info":{"post":{"operationId":"npm_package_info","summary":"Latest version, description, license, weekly downloads (via api.npmjs.org) and homepage for an npm package","tags":["npm","code"],"x-price":"$0.003","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"}},"required":["name"]},"example":{"name":"hono"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"npm_package_info","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/rss_latest":{"post":{"operationId":"rss_latest","summary":"Parse an RSS/Atom feed URL and return the latest N items (title, link, published)","tags":["rss","news","feeds"],"x-price":"$0.003","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"n":{"type":"integer","default":10}},"required":["url"]},"example":{"url":"https://hnrss.org/frontpage","n":3}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"rss_latest","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/text_stats":{"post":{"operationId":"text_stats","summary":"Word/sentence/paragraph counts, reading time (200 wpm), top 10 keywords (stopwords removed) for a text","tags":["text","nlp"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"text":{"type":"string"}},"required":["text"]},"example":{"text":"Agents pay agents. Agents build tools for agents."}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"text_stats","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/url_status":{"post":{"operationId":"url_status","summary":"HTTP status, final content-type and response size for a URL (HEAD then GET fallback)","tags":["web","monitoring"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"}},"required":["url"]},"example":{"url":"https://example.com"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"url_status","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/wikipedia_summary":{"post":{"operationId":"wikipedia_summary","summary":"Summary extract and canonical URL for a Wikipedia topic via https://<lang>.wikipedia.org/api/rest_v1/page/summary/<title>","tags":["reference","wikipedia"],"x-price":"$0.002","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string"},"lang":{"type":"string","default":"en"}},"required":["title"]},"example":{"title":"HTTP 402"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"wikipedia_summary","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/json_schema_validate":{"post":{"operationId":"json_schema_validate","summary":"Validate a JSON value against a JSON Schema subset (type, properties, required, enum, minimum/maximum, minLength/maxLength, items) and return errors","tags":["json","validation"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"schema":{"type":"object"},"value":{}},"required":["schema","value"]},"example":{"schema":{"type":"object","properties":{"a":{"type":"integer"}},"required":["a"]},"value":{"a":"x"}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"json_schema_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/crypto_price":{"post":{"operationId":"crypto_price","summary":"Spot price in USD for a crypto asset symbol using https://api.coinbase.com/v2/prices/<SYMBOL>-USD/spot","tags":["crypto","price","finance"],"x-price":"$0.002","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"symbol":{"type":"string"}},"required":["symbol"]},"example":{"symbol":"ETH"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"crypto_price","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/cvr_dk_validate":{"post":{"operationId":"cvr_dk_validate","summary":"Offline validator for a Danish CVR-nummer (8-digit business registration number issued by the Danish Business Authority). Normalizes input to digits only, checks length and computes a modulus-11 checksum using weights 2,7,6,5,4,3,2 on the first 7 digits compared against the 8th check digit. Result is flagged as best-effort since some legacy CVR numbers do not conform to the checksum rule.","tags":["validator","denmark","cvr","tax-id","offline"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"cvr":{"type":"string","description":"CVR number, 8 digits, optional spaces"}},"required":["cvr"],"additionalProperties":false},"example":{"cvr":"10123453"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"cvr_dk_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/cin_in_validate":{"post":{"operationId":"cin_in_validate","summary":"Offline structural validator for an Indian CIN (Corporate Identity Number, 21 characters). Parses and checks: listing status letter (L/U), 5-digit NIC industry code, 2-letter state code (against the known MCA state-code list), 4-digit incorporation year (plausible range), 3-letter company-type/ownership code (against a known enum like PLC, PTC, OPC, GOI, NPL, FTC, SGC, ULL, ULT), and 6-digit registration number. No checksum exists so this is a format-only check.","tags":["validator","india","cin","company-registration","offline"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"value":{"type":"string","description":"CIN string to validate, e.g. U72200MH2008PTC178618"}},"required":["value"],"additionalProperties":false},"example":{"value":"U72200MH2008PTC178618"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"cin_in_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/orgnr_se_validate":{"post":{"operationId":"orgnr_se_validate","summary":"Offline validator for a Swedish Organisationsnummer (company registration number). Normalizes input to 10 digits (accepts XXXXXX-XXXX or plain), checks length/digit-3 validity, and verifies the final check digit using the Luhn (mod 10) algorithm.","tags":["validator","sweden","organisationsnummer","luhn","offline"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"value":{"type":"string","description":"Organisationsnummer, e.g. 556036-0793"}},"required":["value"]},"example":{"value":"556036-0793"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"orgnr_se_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/cui_gt_validate":{"post":{"operationId":"cui_gt_validate","summary":"Offline validator for a Guatemalan CUI (Código Único de Identificación), the 13-digit national ID number. Parses the 13 digits into an 8-digit correlative, a 1-digit check digit, a 2-digit department code and a 2-digit municipality code, recomputes the check digit using the published weighted mod-11 formula (weights 2-9 over the 8 correlative digits, mod 11, 10→0) and compares it, returning validity plus the parsed components.","tags":["validator","guatemala","cui","national-id","offline"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"cui":{"type":"string","description":"13-digit CUI, digits only or with dashes"}},"required":["cui"]},"example":{"cui":"1234567890101"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"cui_gt_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/mst_vn_validate":{"post":{"operationId":"mst_vn_validate","summary":"Offline structural validator for a Vietnamese Enterprise/Tax Code (Mã số thuế, MST). Strips spaces, checks the 10-digit head-office pattern or the 13-character branch pattern (10 digits + '-' + 3-digit sequence). Uses regex only since the official modulus-11 check-digit weight table is not consistently published.","tags":["validator","vietnam","tax-id","mst","offline"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"value":{"type":"string","description":"MST string, e.g. '0101243150' or '0101243150-001'"}},"required":["value"],"additionalProperties":false},"example":{"value":"0101243150"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"mst_vn_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/pan_in_validate":{"post":{"operationId":"pan_in_validate","summary":"Offline validator for an Indian PAN (Permanent Account Number): normalizes input to uppercase, checks the 10-character AAAAA9999A pattern, and validates the 4th character against the known holder-type code enum (P=Individual, C=Company, H=HUF, F=Firm, A=AOP, T=Trust, B=BOI, L=Local Authority, J=Artificial Juridical Person, G=Government). Does not verify the undisclosed final check character.","tags":["validator","india","pan","tax-id","offline"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"pan":{"type":"string","description":"PAN string, e.g. ABCPD1234E"}},"required":["pan"],"additionalProperties":false},"example":{"pan":"ABCPD1234E"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"pan_in_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/partita_iva_validate":{"post":{"operationId":"partita_iva_validate","summary":"Offline validator for an Italian Partita IVA (VAT number): verifies the value is 11 numeric digits and recomputes the Luhn-like check digit (digits in odd positions summed as-is, digits in even positions doubled with 9 subtracted if the result exceeds 9, total summed and complemented mod 10) to confirm it matches the 11th digit.","tags":["validator","italy","vat","tax-id","offline"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"partitaIva":{"type":"string","description":"Partita IVA, digits optionally with spaces/dashes"}},"required":["partitaIva"],"additionalProperties":false},"example":{"partitaIva":"01234567897"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"partita_iva_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/siren_validate":{"post":{"operationId":"siren_validate","summary":"Offline validator for a French SIREN (9-digit business identifier). Normalizes input (strips spaces/dashes), verifies the Luhn checksum (doubling every second digit from the right, summing digits, total divisible by 10), and flags the known La Poste exception (SIREN 356000000) which is a legitimately assigned number.","tags":["validator","france","siren","business-id","offline"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"siren":{"type":"string","description":"9-digit French SIREN, spaces/dashes allowed"}},"required":["siren"]},"example":{"siren":"552081317"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"siren_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/cpr_dk_validate":{"post":{"operationId":"cpr_dk_validate","summary":"Offline validator/normalizer for a Danish CPR-nummer (personal identification number, format DDMMYY-SSSS). Checks digit count and date-of-birth validity, determines century from the 7th digit per official rules, and derives birth date and gender (last digit odd=male, even=female). Does not rely on the modulus-11 checksum since it has not been guaranteed valid for numbers issued since 2007.","tags":["validator","denmark","cpr","identity","offline"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"cpr":{"type":"string","description":"Danish CPR number, e.g. 010190-0006 (dash optional)"}},"required":["cpr"],"additionalProperties":false},"example":{"cpr":"010190-0006"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"cpr_dk_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/rrn_be_validate":{"post":{"operationId":"rrn_be_validate","summary":"Offline validator for a Belgian National Register Number (Rijksregisternummer / Numéro de registre national), format YYMMDDXXXCC. Verifies the two check digits equal 97 minus (first nine digits mod 97), applying the +2,000,000,000 offset for persons born in year 2000 or later, and parses birth date, gender and sequence number.","tags":["validator","belgium","national-id","offline","checksum"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"value":{"type":"string","description":"11-digit Belgian National Register Number, with or without dashes/spaces"}},"required":["value"]},"example":{"value":"90010100123"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"rrn_be_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/rodne_cislo_validate":{"post":{"operationId":"rodne_cislo_validate","summary":"Offline validator for a Czech/Slovak rodné číslo (birth number). Normalizes input to YYMMDD/XXXX or YYMMDDXXX(X), checks the calendar-valid month/day (accounting for the +50 female and +20/70 post-2004 month offsets), and for 10-digit numbers confirms the full digit string (slash removed) is evenly divisible by 11. No network calls.","tags":["validator","czech","slovak","national-id","offline"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"value":{"type":"string","description":"Rodné číslo, with or without slash, e.g. 900101/0007"}},"required":["value"],"additionalProperties":false},"example":{"value":"900101/0007"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"rodne_cislo_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/vat_fr_validate":{"post":{"operationId":"vat_fr_validate","summary":"Offline validator for a French VAT number (TVA intracommunautaire, e.g. FR32123456789). Extracts the 9-digit SIREN and 2-digit key, recomputes key = (12 + 3*(SIREN mod 97)) mod 97, and compares it to the given key.","tags":["validator","vat","france","tax-id","offline"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"vat":{"type":"string","description":"French VAT number, e.g. 'FR32123456789' or 'FR 32 123456789'"}},"required":["vat"],"additionalProperties":false},"example":{"vat":"FR32123456789"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"vat_fr_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/vat_at_validate":{"post":{"operationId":"vat_at_validate","summary":"Offline validator for an Austrian UID (VAT) number: format ATU followed by 8 digits. Normalizes input, checks structure and verifies the weighted modulo-10 check digit algorithm (weights 1,2,1,2,1,2,1 on the first 7 digits, digit-sum reduction, check = (10-(sum+4)%10)%10).","tags":["validator","vat","austria","tax-id","offline"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"uid":{"type":"string","description":"Austrian UID/VAT number, e.g. ATU12345675"}},"required":["uid"],"additionalProperties":false},"example":{"uid":"ATU12345675"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"vat_at_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/ppsn_ie_validate":{"post":{"operationId":"ppsn_ie_validate","summary":"Offline validator for an Irish PPSN (Personal Public Service Number): checks the 7-digit + 1 check-letter (+ optional trailing 'A' or 'H' modifier letter) format and verifies the check letter using the published mod-23 weighted-sum algorithm (weights 8..2, optional modifier adds 9 or 72). Processes a single PPSN only; no network access or storage.","tags":["validator","ireland","ppsn","offline","identity"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"ppsn":{"type":"string","description":"PPSN string, e.g. 1234567T or 1234567TA"}},"required":["ppsn"],"additionalProperties":false},"example":{"ppsn":"1234567T"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"ppsn_ie_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/rsin_nl_validate":{"post":{"operationId":"rsin_nl_validate","summary":"Offline validator for a Dutch RSIN (Rechtspersonen Samenwerkingsverbanden Informatie Nummer), a 9-digit legal-entity tax identifier. Normalizes input (strips spaces/dots/dashes) and applies the elfproef (mod-11 check): weights 9,8,7,6,5,4,3,2 on the first 8 digits, minus the 9th digit, must be divisible by 11.","tags":["validator","netherlands","rsin","tax-id","offline"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"rsin":{"type":"string","description":"9-digit RSIN, optionally with spaces or dashes"}},"required":["rsin"],"additionalProperties":false},"example":{"rsin":"111111110"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"rsin_nl_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/unit_convert":{"post":{"operationId":"unit_convert","summary":"Converts a numeric value between units within a category (length, mass, volume, temperature, area, speed, data) using a fixed offline conversion table. Pure computation, no network access.","tags":["units","conversion","math","offline"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"value":{"type":"number"},"category":{"type":"string","enum":["length","mass","volume","temperature","area","speed","data"]},"from":{"type":"string"},"to":{"type":"string"}},"required":["value","category","from","to"],"additionalProperties":false},"example":{"value":1,"category":"length","from":"km","to":"mi"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"unit_convert","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/siret_validate":{"post":{"operationId":"siret_validate","summary":"Offline validator for a French SIRET (14-digit establishment identifier): splits it into SIREN (first 9 digits) and NIC (last 5 digits), normalizes input by stripping spaces, and checks that the full 14-digit string satisfies the Luhn (mod 10) checksum algorithm.","tags":["validation","france","siret","identifier","offline"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"siret":{"type":"string","description":"14-digit French SIRET, spaces allowed"}},"required":["siret"]},"example":{"siret":"73282932000074"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"siret_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/cpf_cnpj_validate":{"post":{"operationId":"cpf_cnpj_validate","summary":"Offline validator for Brazilian CPF (individual) and CNPJ (company) registration numbers. Strips formatting, checks length, rejects known invalid sequences (all same digit), and recomputes the official modulo-11 check digits for both formats.","tags":[],"x-price":"$0.002","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{}},"example":{}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"cpf_cnpj_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/rfc_validate":{"post":{"operationId":"rfc_validate","summary":"Offline validator for a Mexican RFC (Registro Federal de Contribuyentes). Checks the format for persona física (4 letters + 6-digit date + 3-char homoclave) or persona moral (3 letters + 6-digit date + 3-char homoclave), verifies the embedded date is a real calendar date, and returns the parsed birth/incorporation date. Pure string/date logic, no network calls.","tags":["mexico","rfc","validation","tax-id","offline"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{}},"example":{}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"rfc_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/latam_tax_id_validate":{"post":{"operationId":"latam_tax_id_validate","summary":"Offline validator for South American tax IDs: Argentine CUIT/CUIL (11-digit check digit algorithm), Chilean RUT (mod-11 check digit, 0-9 or K), and Colombian NIT (mod-11 verification digit with DIAN weights). Returns whether the check digit matches and a normalized/formatted value.","tags":["validation","tax-id","latam","offline"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{}},"example":{}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"latam_tax_id_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/nit_gt_validate":{"post":{"operationId":"nit_gt_validate","summary":"Offline validator for a Guatemalan NIT (Número de Identificación Tributaria). Strips hyphens/spaces, applies the documented mod-11 weighted check-digit algorithm (weights 2..n from right to left) to the base digits, and compares the result (0-9, or 'K' for 10) against the trailing check character.","tags":["validator","guatemala","tax-id","offline","checksum"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"nit":{"type":"string","description":"NIT string, with or without hyphens/spaces, e.g. '12345678-9'"}},"required":["nit"]},"example":{"nit":"12345678-9"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"nit_gt_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/ruc_py_validate":{"post":{"operationId":"ruc_py_validate","summary":"Offline validator for a Paraguayan RUC (Registro Único de Contribuyentes): parses the base number (3-8 digits) and its hyphenated check digit, recomputes the check digit using the modulo-11 algorithm (cyclic weights 2-7 from the rightmost digit, sum mod 11, subtract from 11, mapping 10 and 11 to 0), and compares it to the supplied check digit.","tags":["validator","paraguay","ruc","tax-id","offline"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"ruc":{"type":"string","description":"RUC in format BASE-DV, e.g. 80028098-2","pattern":"^[0-9]{3,8}-[0-9]$"}},"required":["ruc"],"additionalProperties":false},"example":{"ruc":"80028098-2"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"ruc_py_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/rif_validate":{"post":{"operationId":"rif_validate","summary":"Offline validator for a Venezuelan RIF (Registro Único de Información Fiscal). Parses format [V|E|J|G|P|C]-########-#, maps the leading letter to its numeric code (V=1,E=2,J=3,P=4,G=5,C=6), applies the official weighted modulo-11 checksum (weights 4,3,2,7,6,5,4,3,2 over letter-code and 8 digits) and compares the result to the trailing check digit. No network access.","tags":["validator","venezuela","rif","tax-id","offline"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"rif":{"type":"string","description":"RIF string, e.g. V-12345678-1 (dashes optional)"}},"required":["rif"],"additionalProperties":false},"example":{"rif":"V-12345678-1"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"rif_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/ruc_pe_validate":{"post":{"operationId":"ruc_pe_validate","summary":"Offline validator for a Peruvian RUC (Registro Único de Contribuyentes) issued by SUNAT. Checks the RUC is exactly 11 digits, extracts the 2-digit taxpayer-type prefix (10, 15, 17, 20, etc.), and verifies the check digit using SUNAT's published modulo-11 algorithm (weights 5,4,3,2,7,6,5,4,3,2 over the first 10 digits).","tags":["validator","peru","tax-id","ruc","sunat","offline"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"ruc":{"type":"string","description":"11-digit RUC, digits only or with spaces/dashes"}},"required":["ruc"],"additionalProperties":false},"example":{"ruc":"20100070970"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"ruc_pe_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/ruc_ec_juridical_validate":{"post":{"operationId":"ruc_ec_juridical_validate","summary":"Offline validator for an Ecuadorian RUC belonging to a private juridical person (company): checks 13 digits, that the 3rd digit is '9', verifies the modulus-11 check digit (digit 10) computed from digits 1-9 using weights [4,3,2,7,6,5,4,3,2], and that the establishment suffix (digits 11-13) is between '001' and '999'.","tags":["ecuador","ruc","validator","tax-id","offline"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"ruc":{"type":"string","description":"13-digit Ecuadorian RUC number"}},"required":["ruc"]},"example":{"ruc":"1792345618001"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"ruc_ec_juridical_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/curp_validate":{"post":{"operationId":"curp_validate","summary":"Offline validator for a Mexican CURP (Clave Única de Registro de Población): checks the 18-character structure (4 letters, YYMMDD birthdate, sex letter H/M, 2-letter state code, 3 consonants, homoclave), then verifies the DOF mod-10 weighted check digit. Returns parsed birthdate, sex, state code and whether the format and check digit are valid.","tags":["mexico","curp","validator","offline","identity"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"curp":{"type":"string","description":"18-character CURP code"}},"required":["curp"],"additionalProperties":false},"example":{"curp":"GODE561231HDFRRN00"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"curp_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/public_holidays":{"post":{"operationId":"public_holidays","summary":"Returns the list of public holidays for a given country and year using https://date.nager.at/api/v3/PublicHolidays/<year>/<countryCode>. Each holiday includes date, local name, English name and whether it is a fixed/global holiday.","tags":["holidays","calendar","dates","nager"],"x-price":"$0.002","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"countryCode":{"type":"string","description":"ISO 3166-1 alpha-2 country code, e.g. US, BR, DE"},"year":{"type":"integer","description":"Four-digit year, e.g. 2024"}},"required":["countryCode","year"],"additionalProperties":false},"example":{"countryCode":"US","year":2024}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"public_holidays","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/geocode_address":{"post":{"operationId":"geocode_address","summary":"Geocode a free-text address or place name to up to 3 candidate locations (latitude, longitude, display name, OSM type/class) using https://nominatim.openstreetmap.org/search with format=jsonv2 and a descriptive User-Agent.","tags":["geocoding","osm","nominatim","location","address"],"x-price":"$0.003","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"query":{"type":"string","description":"Free-text address or place name to geocode"},"limit":{"type":"integer","minimum":1,"maximum":3,"default":3}},"required":["query"]},"example":{"query":"Eiffel Tower, Paris, France","limit":1}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"geocode_address","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/dni_es_validate":{"post":{"operationId":"dni_es_validate","summary":"Offline validator for a Spanish DNI (Documento Nacional de Identidad): normalizes input (uppercase, strip spaces/dashes), checks it has 8 digits + 1 control letter, computes the expected letter as digits mod 23 mapped via the table TRWAGMYFPDXBNJZSQVHLCKE, and reports validity. Pure offline computation, no network.","tags":["validator","spain","dni","identity","offline"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"dni":{"type":"string","description":"Spanish DNI, e.g. 12345678Z"}},"required":["dni"],"additionalProperties":false},"example":{"dni":"12345678Z"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"dni_es_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/vat_de_validate":{"post":{"operationId":"vat_de_validate","summary":"Offline validator for a German VAT number (Umsatzsteuer-Identifikationsnummer, USt-IdNr). Checks the 'DE'+9-digit format and verifies the official modulus-11 checksum algorithm published by the German tax authority; returns validity and normalized number.","tags":["validator","germany","vat","tax-id","offline"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"vat":{"type":"string","description":"German VAT number, e.g. 'DE811569869' or '811569869'"}},"required":["vat"],"additionalProperties":false},"example":{"vat":"DE811569869"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"vat_de_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/cedula_pa_validate":{"post":{"operationId":"cedula_pa_validate","summary":"Offline structural validator for a Panama Cédula de identidad personal. Parses the province/category prefix (1-13, N, PE, E, or PI), the book (tomo) and entry (partida) segments per the documented 'PREFIX-BOOK-ENTRY' pattern; there is no checksum digit for this ID, so validation is structural only (prefix range/set, digit-only book and entry with plausible lengths).","tags":["validator","panama","id","offline","structural"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"value":{"type":"string","description":"Panama cedula string, e.g. '8-123-4567' or 'PE-1-12345'"}},"required":["value"],"additionalProperties":false},"example":{"value":"3-732-1785"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"cedula_pa_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/cedula_do_validate":{"post":{"operationId":"cedula_do_validate","summary":"Offline validator for a Dominican Republic Cédula de identidad (11-digit national ID). Strips non-digits, checks length, and verifies the weighted check-digit algorithm (weights 1,2,1,2,1,2,1,2,1,2 on first 10 digits, digit-sum reduction, mod-10 check digit) commonly used in KYC/e-invoicing integrations.","tags":["validator","dominican-republic","kyc","id","offline"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"Cedula number, with or without dashes"}},"required":["id"]},"example":{"id":"00114333222"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"cedula_do_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/rnc_do_validate":{"post":{"operationId":"rnc_do_validate","summary":"Offline validator for a Dominican Republic RNC (Registro Nacional del Contribuyente), the 9-digit tax ID used in DGII e-invoicing (NCF) validation. Strips non-digit characters, checks length, and verifies the check digit using DGII's documented weighted mod-11 algorithm (weights 7,9,8,6,5,4,3,2 on the first 8 digits).","tags":["validator","dominican-republic","tax-id","rnc","offline"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"rnc":{"type":"string","description":"RNC number, digits only or with dashes/spaces, 9 digits"}},"required":["rnc"],"additionalProperties":false},"example":{"rnc":"1-3188-0711"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"rnc_do_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/ruc_ec_natural_validate":{"post":{"operationId":"ruc_ec_natural_validate","summary":"Offline validator for an Ecuadorian RUC (Registro Único de Contribuyentes) belonging to a natural person: checks the 13-digit structure, verifies the embedded 10-digit cédula via its modulus-10 check-digit algorithm, confirms the third digit denotes a natural person (0-5), and requires the establishment suffix to be '001'. Pure computation, no network calls.","tags":["validator","ecuador","ruc","tax-id","offline"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"ruc":{"type":"string","description":"13-digit Ecuadorian RUC for a natural person"}},"required":["ruc"],"additionalProperties":false},"example":{"ruc":"1710034065001"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"ruc_ec_natural_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/cedula_ec_validate":{"post":{"operationId":"cedula_ec_validate","summary":"Offline validator for Ecuador's Cédula de identidad (national ID): checks 10-digit format, province code (01-24 or 30) in positions 1-2, third digit in 0-5, and the modulus-10 check digit computed from the first 9 digits using alternating weights (2,1,2,1,2,1,2,1,2) with the subtract-9 rule for products over 9.","tags":["validator","ecuador","cedula","id","offline"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"10-digit Ecuadorian cedula number, digits only or with spaces/dashes"}},"required":["id"],"additionalProperties":false},"example":{"id":"1710034065"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"cedula_ec_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/nit_validate":{"post":{"operationId":"nit_validate","summary":"Offline validator for a Colombian NIT (Número de Identificación Tributaria) using DIAN's modulo-11 check-digit algorithm: applies fixed positional weights (3,7,13,17,19,23,29,37,41,43,47,53,59,67,71,...) right-to-left to the base digits, sums, reduces mod 11, maps 0→0,1→1,else 11−remainder, and compares to the appended DV digit. No network access.","tags":["colombia","nit","tax-id","validator","offline","dian"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"nit":{"type":"string","description":"NIT as base+DV, e.g. '800197268-4' or '8001972684'"}},"required":["nit"],"additionalProperties":false},"example":{"nit":"800197268-4"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"nit_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/cik_validate":{"post":{"operationId":"cik_validate","summary":"Offline validator/normalizer for an SEC EDGAR CIK (Central Index Key). Checks that the input is numeric-only with 1-10 digits, and returns a zero-padded 10-digit normalized form suitable for EDGAR URLs (e.g. https://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=<normalized>).","tags":["validator","sec","edgar","finance","offline"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"cik":{"type":"string","description":"CIK value, digits only, 1-10 characters"}},"required":["cik"],"additionalProperties":false},"example":{"cik":"320193"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"cik_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/ssn_validate":{"post":{"operationId":"ssn_validate","summary":"Offline structural validator for a US Social Security Number. Checks NNN-NN-NNNN (or 9-digit) format and known invalid ranges: area cannot be 000, 666, or 900-999; group cannot be 00; serial cannot be 0000.","tags":["validator","ssn","offline","identity","us"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"ssn":{"type":"string","description":"SSN as NNN-NN-NNNN or 9 digits"}},"required":["ssn"]},"example":{"ssn":"078-05-1120"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"ssn_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/ein_validate":{"post":{"operationId":"ein_validate","summary":"Offline validator for a US Employer Identification Number (EIN). Checks that the input matches the NN-NNNNNNN structural pattern (9 digits) and that the 2-digit prefix falls within the set of prefixes historically assigned by the IRS; EINs have no checksum digit so only structural/prefix validation is performed.","tags":["validator","ein","tax-id","offline","us"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"ein":{"type":"string","description":"EIN string, with or without hyphen, e.g. 12-3456789 or 123456789"}},"required":["ein"],"additionalProperties":false},"example":{"ein":"12-3456789"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"ein_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/nss_validate":{"post":{"operationId":"nss_validate","summary":"Offline validator for the Mexican IMSS Social Security Number (NSS): checks that the input is an 11-digit numeric string and that it satisfies the standard Luhn (mod-10) check-digit algorithm applied to the full number. Pure computation, no network access.","tags":["mexico","validation","nss","imss","offline","luhn"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"nss":{"type":"string","description":"11-digit NSS, digits only"}},"required":["nss"],"additionalProperties":false},"example":{"nss":"12345678903"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"nss_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/robots_txt_check":{"post":{"operationId":"robots_txt_check","summary":"Fetches https://<domain>/robots.txt for a given site URL and determines whether a specified user-agent is allowed to crawl a given path, per the parsed rules. Returns allowed/disallowed status, matched rule, crawl-delay (if any) and list of Sitemap URLs declared in the file.","tags":["robots","seo","crawling","compliance"],"x-price":"$0.002","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"Site URL or domain, e.g. https://example.com"},"userAgent":{"type":"string","description":"User-agent token to check rules for","default":"*"},"path":{"type":"string","description":"URL path to test, e.g. /some/page","default":"/"}},"required":["url"]},"example":{"url":"https://httpbin.org","userAgent":"*","path":"/deny"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"robots_txt_check","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/sitemap_parse":{"post":{"operationId":"sitemap_parse","summary":"Fetches a sitemap.xml (or sitemap index) from a given URL, follows nested <sitemap> entries up to the request budget, and returns the list of page URLs with their lastmod dates, capped at 2000 entries.","tags":["sitemap","seo","crawling","xml"],"x-price":"$0.003","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"URL of the sitemap.xml or sitemap index to fetch"},"maxUrls":{"type":"integer","minimum":1,"maximum":2000,"default":2000}},"required":["url"],"additionalProperties":false},"example":{"url":"https://nonexistent-domain-abcxyz123456.com/sitemap.xml"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"sitemap_parse","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/extract_page_links_meta":{"post":{"operationId":"extract_page_links_meta","summary":"Fetches a public URL via HTTPS and extracts its meta information (title, description, canonical URL, Open Graph tags), all outbound/internal links with their anchor text, and all image sources with alt text.","tags":["html","scraping","seo","metadata","links"],"x-price":"$0.003","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","format":"uri","description":"Public URL to fetch and parse"}},"required":["url"]},"example":{"url":"https://example.com"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"extract_page_links_meta","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/email_list_validate":{"post":{"operationId":"email_list_validate","summary":"Validates a list of email addresses offline: checks syntax, extracts domain, flags likely disposable domains against a static known-list, marks duplicates (case-insensitive), and returns per-email results plus summary counts.","tags":["email","validation","dedupe","offline","batch"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"emails":{"type":"array","items":{"type":"string"},"minItems":1,"maxItems":500}},"required":["emails"],"additionalProperties":false},"example":{"emails":["John.Doe@Example.com","john.doe@example.com","bad-email","user@mailinator.com"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"email_list_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/geo_distance_bearing":{"post":{"operationId":"geo_distance_bearing","summary":"Computes great-circle distance in kilometers and initial compass bearing in degrees between two lat/lon points using the haversine formula. Optionally returns an approximate bounding box (min/max lat/lon) around the first point for a given radius in km. Offline, no network access.","tags":["geo","distance","bearing","haversine","math"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"lat1":{"type":"number","minimum":-90,"maximum":90},"lon1":{"type":"number","minimum":-180,"maximum":180},"lat2":{"type":"number","minimum":-90,"maximum":90},"lon2":{"type":"number","minimum":-180,"maximum":180},"radiusKm":{"type":"number","minimum":0}},"required":["lat1","lon1","lat2","lon2"]},"example":{"lat1":0,"lon1":0,"lat2":0,"lon2":1}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"geo_distance_bearing","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/reverse_geocode":{"post":{"operationId":"reverse_geocode","summary":"Reverse-geocodes a latitude/longitude pair to a human-readable address using https://nominatim.openstreetmap.org/reverse (format=jsonv2). Returns the display name plus structured address components (road, city, state, country, postcode).","tags":["geocoding","location","openstreetmap","nominatim"],"x-price":"$0.002","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"lat":{"type":"number","minimum":-90,"maximum":90},"lon":{"type":"number","minimum":-180,"maximum":180},"zoom":{"type":"integer","minimum":0,"maximum":18,"default":18}},"required":["lat","lon"]},"example":{"lat":48.8584,"lon":2.2945}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"reverse_geocode","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/phone_e164_normalize":{"post":{"operationId":"phone_e164_normalize","summary":"Offline normalizer/validator for phone numbers to E.164 format. Detects country from a leading '+' calling code or an optional defaultCountry (ISO2) hint, and checks the national number length against a basic rules table for LatAm, US/CA, EU (ES,PT,FR,DE,IT,GB). No network calls; approximate validation only (length-based, not full carrier rules).","tags":["phone","validation","e164","normalization","offline"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number, digits with optional +, spaces, dashes, parentheses"},"defaultCountry":{"type":"string","description":"ISO2 country code to assume if phone has no country code, e.g. US, BR, MX"}},"required":["phone"],"additionalProperties":false},"example":{"phone":"+5511987654321"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"phone_e164_normalize","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/vkn_validate":{"post":{"operationId":"vkn_validate","summary":"Offline structural validator for a Turkish VKN (Vergi Kimlik Numarası, 10-digit tax identification number). Normalizes input by stripping spaces/dashes, then checks that it is exactly 10 digits, all numeric, and does not start with 0. Full checksum algorithm is not applied (best-effort structural check only).","tags":["validator","turkey","tax-id","vkn","offline"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"vkn":{"type":"string","description":"VKN string, optionally with spaces or dashes"}},"required":["vkn"],"additionalProperties":false},"example":{"vkn":"1234567890"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"vkn_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/vat_gr_validate":{"post":{"operationId":"vat_gr_validate","summary":"Offline validator for a Greek VAT number (format EL followed by 9 digits, e.g. EL094259216). Strips spaces/dashes, checks the EL prefix and 9-digit structure, and validates the trailing check digit using the standard AFM algorithm (weighted sum of first 8 digits with powers of 2, mod 11, mod 10).","tags":["validator","vat","greece","tax-id","offline"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"value":{"type":"string","description":"Greek VAT number, e.g. 'EL094259216' or 'EL 094259216'"}},"required":["value"],"additionalProperties":false},"example":{"value":"EL094259216"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"vat_gr_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/vat_hu_validate":{"post":{"operationId":"vat_hu_validate","summary":"Offline validator for a Hungarian EU VAT number (HU + 8-digit törzsszám). Normalizes input (strips spaces/dashes, uppercases), checks the HU prefix and 8-digit length, and verifies the embedded check digit using the standard weighted (9,7,3,1,9,7,3) modulo-10 algorithm applied to the first 7 digits.","tags":["validator","vat","hungary","tax-id","offline"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"vatNumber":{"type":"string","description":"Hungarian EU VAT number, e.g. HU12345676"}},"required":["vatNumber"],"additionalProperties":false},"example":{"vatNumber":"HU12345676"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"vat_hu_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/taj_hu_validate":{"post":{"operationId":"taj_hu_validate","summary":"Offline validator for a Hungarian TAJ-szám (social security number). Normalizes input (strips spaces/dashes), checks it is exactly 9 digits, and recomputes the check digit (last digit) from the first 8 digits using weights 3,7,9,1,3,7,9,1 summed mod 10.","tags":["validator","hungary","taj","offline","identity"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"taj":{"type":"string","description":"TAJ number, digits with optional spaces/dashes"}},"required":["taj"],"additionalProperties":false},"example":{"taj":"123456786"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"taj_hu_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/adoszam_hu_validate":{"post":{"operationId":"adoszam_hu_validate","summary":"Offline validator for a Hungarian Adószám (tax number): normalizes input to the 11-digit xxxxxxxx-y-zz structure, verifies digit groups (8-digit base, 1-digit VAT code, 2-digit county code), and recomputes the 8th-digit check digit from the first 7 digits using weights 9,7,3,1,9,7,3 summed mod 10. No network access.","tags":["validator","hungary","tax-id","offline","checksum"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"taxNumber":{"type":"string","description":"Hungarian Adószám, formatted or raw digits, e.g. 12345674-2-11"}},"required":["taxNumber"],"additionalProperties":false},"example":{"taxNumber":"12345674-2-11"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"adoszam_hu_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/cif_es_validate":{"post":{"operationId":"cif_es_validate","summary":"Offline validator for a Spanish CIF (Código de Identificación Fiscal, tax ID for legal entities). Parses the entity-type letter, 7 digits and control character, applies AEAT's weighted alternating-sum algorithm (doubling digits at odd positions and summing their digits, summing digits at even positions directly, mod 10) to compute the expected control digit/letter, and checks it against the actual control character given the entity-type letter's required control kind (digit, letter, or either).","tags":["validator","spain","tax-id","offline","cif"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"cif":{"type":"string","description":"Spanish CIF, e.g. A58818501"}},"required":["cif"]},"example":{"cif":"A58818501"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"cif_es_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/nie_es_validate":{"post":{"operationId":"nie_es_validate","summary":"Offline validator for a Spanish NIE (Número de Identidad de Extranjero): normalizes input, checks format letter[XYZ]+7 digits+control letter, maps X/Y/Z to 0/1/2, computes mod-23 check letter using the DNI table (TRWAGMYFPDXBNJZSQVHLCKE), and verifies it matches. No network calls.","tags":["validator","spain","nie","identity","offline"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"nie":{"type":"string","description":"NIE string, e.g. X1234567L"}},"required":["nie"]},"example":{"nie":"X1234567L"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"nie_es_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/uk_postcode_validate":{"post":{"operationId":"uk_postcode_validate","summary":"Offline structural validator for UK postal (post)codes. Normalizes input (uppercase, trims, single space before inward code) and checks it against the official outward/inward code grammar (1-2 letters + 1-2 digits/letter-digit + optional letter, space, 1 digit + 2 letters), including the special 'GIR 0AA' code. No network calls.","tags":["validator","uk","postcode","offline","address"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"postcode":{"type":"string","description":"UK postcode to validate, e.g. 'SW1A 1AA'"}},"required":["postcode"],"additionalProperties":false},"example":{"postcode":"sw1a1aa"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"uk_postcode_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/nino_validate":{"post":{"operationId":"nino_validate","summary":"Offline validator for a UK National Insurance Number (NINO). Normalizes input (strips spaces/dashes, uppercases) and checks the LL999999L pattern: two letters, six digits, one suffix letter (A-D). Rejects first letter D,F,I,Q,U,V; second letter D,F,I,Q,U,V,O; and reserved prefixes BG,GB,NK,KN,TN,NT,ZZ.","tags":["validator","uk","nino","identity","offline"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"value":{"type":"string","description":"NINO string, e.g. 'AB123456C' or 'AB 12 34 56 C'"}},"required":["value"],"additionalProperties":false},"example":{"value":"AB 12 34 56 C"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"nino_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/vat_gb_validate":{"post":{"operationId":"vat_gb_validate","summary":"Offline validator for a UK (GB) VAT registration number in the standard 9-digit format. Normalizes input (strips 'GB' prefix and spaces), then applies the modulo-97 checksum: weights 8,7,6,5,4,3,2 on the first 7 digits, valid if (weightedSum + last2Digits) mod 97 == 0 (post-2009 rule) or (weightedSum + 55 + last2Digits) mod 97 == 0 (legacy rule).","tags":["vat","validation","uk","tax-id","offline","checksum"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"vat":{"type":"string","description":"UK VAT number, e.g. 'GB100000089' or '100000089'"}},"required":["vat"],"additionalProperties":false},"example":{"vat":"GB100000089"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"vat_gb_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/steuerid_de_validate":{"post":{"operationId":"steuerid_de_validate","summary":"Offline validator for the German Steuerliche Identifikationsnummer (Steuer-ID): checks it is 11 digits, that the digit-uniqueness rule (one digit repeats exactly 2 or 3 times per BZSt rules, others appear at most once) holds, and verifies the check digit using the ISO 7064 MOD 11,10 algorithm published by the Bundeszentralamt für Steuern.","tags":["validator","germany","tax-id","offline","identity"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"Steuer-ID, digits with optional spaces"}},"required":["id"],"additionalProperties":false},"example":{"id":"86095742719"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"steuerid_de_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/cedula_hn_validate":{"post":{"operationId":"cedula_hn_validate","summary":"Offline validator for the Honduran national identity number (Tarjeta de Identidad, issued by the RNP). Checks the 13-digit structure: 2-digit department code (01-18) + 2-digit municipality code (01-99) + 4-digit birth year (1900 to current year) + 5-digit sequence. No official check digit exists, so only structural and range plausibility are validated.","tags":["validator","honduras","national-id","offline","identity"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"Honduran identity number, digits only or with separators, 13 digits total"}},"required":["id"]},"example":{"id":"0801198500001"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"cedula_hn_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/rtn_hn_validate":{"post":{"operationId":"rtn_hn_validate","summary":"Offline validator for the Honduran RTN (Registro Tributario Nacional). Normalizes the input by removing spaces/dashes and checks that the result is exactly 14 numeric digits; no public check-digit algorithm exists so only length and charset are verified.","tags":["validator","honduras","rtn","tax-id","offline"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"rtn":{"type":"string","description":"Honduran RTN, with or without separators"}},"required":["rtn"],"additionalProperties":false},"example":{"rtn":"08019012345671"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"rtn_hn_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/rut_validate":{"post":{"operationId":"rut_validate","summary":"Offline validator for a Chilean RUT/RUN (Rol Único Tributario / Rol Único Nacional). Strips dots and dashes, computes the Módulo 11 check digit using weights 2-7 cycling right to left over the numeric base (11→0, 10→K), and compares it against the supplied check digit.","tags":["chile","rut","run","validator","tax-id","offline"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"rut":{"type":"string","description":"RUT/RUN string, e.g. '12.345.678-5' or '12345678-5'"}},"required":["rut"],"additionalProperties":false},"example":{"rut":"12345678-5"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"rut_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/mersis_validate":{"post":{"operationId":"mersis_validate","summary":"Offline structural validator for a Turkish MERSİS number (16-digit central trade registry identifier). Normalizes input (strips spaces/dashes), checks it is exactly 16 digits, and verifies the first 10 digits pass the standard VKN (Vergi Kimlik Numarası) checksum algorithm as a structural plausibility check.","tags":["validator","turkey","mersis","vkn","offline"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"value":{"type":"string","description":"MERSİS number to validate, digits optionally separated by spaces or dashes"}},"required":["value"]},"example":{"value":"1234567899123456"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"mersis_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/ruc_ec_public_validate":{"post":{"operationId":"ruc_ec_public_validate","summary":"Offline validator for an Ecuadorian RUC belonging to a public-sector entity: checks 13 digits total, that position 3 equals '6', that positions 1-8 pass a modulus-11 check against digit 9 using weights (3,2,7,6,5,4,3,2), and that the final 4 digits are '0001'.","tags":["ecuador","ruc","validator","tax-id","offline"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"ruc":{"type":"string","description":"13-digit Ecuadorian RUC to validate"}},"required":["ruc"],"additionalProperties":false},"example":{"ruc":"1760000150001"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"ruc_ec_public_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/iban_validate":{"post":{"operationId":"iban_validate","summary":"Offline validator for an IBAN: checks structure, country-specific length, and the mod-97 checksum per ISO 7064. Returns validity, ISO country code, check digits and the BBAN (Basic Bank Account Number).","tags":["iban","finance","validation","banking","offline"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"iban":{"type":"string","description":"IBAN string, spaces allowed"}},"required":["iban"]},"example":{"iban":"DE89 3704 0044 0532 0130 00"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"iban_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/ico_validate":{"post":{"operationId":"ico_validate","summary":"Offline validator for a Czech IČO (business identification number) per ČSN 97 9738: normalizes input to 8 digits, computes the modulo-11 weighted check digit (weights 8-2 on the first 7 digits, remainder-to-digit lookup) and verifies it matches the 8th digit.","tags":["validator","czech","ico","business-id","offline"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"ico":{"type":"string","description":"Czech IČO, digits only or with spaces"}},"required":["ico"]},"example":{"ico":"12345679"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"ico_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/tckn_validate":{"post":{"operationId":"tckn_validate","summary":"Offline validator for a Turkish TCKN (T.C. Kimlik No, 11-digit national identity number). Checks length, leading digit non-zero, and the official checksum: digit10 = ((sum of digits 1,3,5,7,9 * 7) - sum of digits 2,4,6,8) mod 10, digit11 = (sum of first 10 digits) mod 10.","tags":["validator","turkey","tckn","national-id","offline"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"tckn":{"type":"string","description":"11-digit Turkish national ID number, digits only"}},"required":["tckn"],"additionalProperties":false},"example":{"tckn":"10000000146"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"tckn_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/afm_gr_validate":{"post":{"operationId":"afm_gr_validate","summary":"Offline validator for a Greek AFM (tax registration number, ΑΦΜ). Checks the value is 9 numeric digits and verifies the check digit using the publicly documented weighted-sum algorithm (each of the first 8 digits multiplied by 2^(8..1), summed, mod 11, mod 10) against the 9th digit.","tags":["validator","greece","tax-id","offline","afm"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"afm":{"type":"string","description":"Greek AFM, 9 digits, spaces allowed"}},"required":["afm"]},"example":{"afm":"094259216"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"afm_gr_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/adoazonosito_hu_validate":{"post":{"operationId":"adoazonosito_hu_validate","summary":"Offline validator for a Hungarian Adóazonosító jel (personal tax identification number). Checks that the value is exactly 10 digits with leading digit 8, and recomputes the weighted checksum (weights 1-9 on the first nine digits, mod 11) against the 10th digit per Act XX of 1996.","tags":["validator","hungary","tax-id","offline","identity"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"value":{"type":"string","description":"Adóazonosító jel, digits only or with spaces"}},"required":["value"],"additionalProperties":false},"example":{"value":"8071234563"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"adoazonosito_hu_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/postal_code_pt_validate":{"post":{"operationId":"postal_code_pt_validate","summary":"Offline structural validator/normalizer for Portuguese postal codes (Código Postal) in the NNNN-NNN format. Accepts input with or without the dash, normalizes to NNNN-NNN, and checks the 4-digit + 3-digit pattern; no check digit exists for Portuguese postal codes.","tags":["validation","postal-code","portugal","offline","format"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"postalCode":{"type":"string","description":"Portuguese postal code, e.g. 1000-001 or 1000001"}},"required":["postalCode"],"additionalProperties":false},"example":{"postalCode":"1000-001"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"postal_code_pt_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/cep_lookup":{"post":{"operationId":"cep_lookup","summary":"Look up a Brazilian CEP (postal code) via https://viacep.com.br/ws/<cep>/json/ and return street, neighborhood, city and state.","tags":["brazil","postal-code","cep","address","lookup"],"x-price":"$0.002","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"cep":{"type":"string","description":"Brazilian CEP, digits only or with hyphen, e.g. 01001-000"}},"required":["cep"]},"example":{"cep":"01001-000"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"cep_lookup","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/inn_ogrn_ru_validate":{"post":{"operationId":"inn_ogrn_ru_validate","summary":"Offline validator for Russian tax/registration identifiers: INN (10-digit legal-entity or 12-digit individual, with Federal Tax Service check-digit formulas) and OGRN (13-digit legal entity) / OGRNIP (15-digit individual entrepreneur, with mod-11/mod-13 checksum). Strips non-digits, detects the format by length, verifies the check digit(s), and reports whether it belongs to an individual or a legal entity.","tags":["validator","russia","tax-id","inn","ogrn","offline"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"value":{"type":"string","description":"INN or OGRN value, digits only or with formatting"}},"required":["value"],"additionalProperties":false},"example":{"value":"7707083893"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"inn_ogrn_ru_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/nid_ke_validate":{"post":{"operationId":"nid_ke_validate","summary":"Offline structural validator for a Kenyan National ID number: strips non-digit characters, checks the result is 1-8 numeric digits, and flags leading-zero anomalies (since no public check-digit formula exists for Kenyan IDs).","tags":["kenya","national-id","validator","offline","identity"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"value":{"type":"string","description":"Kenyan National ID number, digits with optional spaces/dashes"}},"required":["value"],"additionalProperties":false},"example":{"value":"12345678"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"nid_ke_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/kra_pin_ke_validate":{"post":{"operationId":"kra_pin_ke_validate","summary":"Offline structural validator for a Kenyan KRA PIN (tax identification number). Normalizes input (uppercase, strips spaces/dashes) and checks it matches ^[A-Z]\\d{9}[A-Z]$ (leading taxpayer-type letter, 9 digits, trailing check letter). Does not verify the checksum, as KRA's algorithm is unpublished.","tags":["kenya","kra","tax-id","validator","offline"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"pin":{"type":"string","description":"KRA PIN to validate, e.g. A123456789Z"}},"required":["pin"]},"example":{"pin":"a123456789z"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"kra_pin_ke_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/ics_events_parse":{"post":{"operationId":"ics_events_parse","summary":"Fetches an ICS (iCalendar) file from a URL and parses its VEVENT blocks into structured events (title, start, end, location), optionally filtered to an inclusive date range [from, to].","tags":["ics","calendar","icalendar","events","parser"],"x-price":"$0.003","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","format":"uri","description":"URL of the .ics calendar file"},"from":{"type":"string","format":"date","description":"Inclusive start date filter (YYYY-MM-DD)"},"to":{"type":"string","format":"date","description":"Inclusive end date filter (YYYY-MM-DD)"},"maxEvents":{"type":"integer","minimum":1,"maximum":500,"default":100}},"required":["url"],"additionalProperties":false},"example":{"url":"https://calendar.google.com/calendar/ical/en.usa%23holiday%40group.v.calendar.google.com/public/basic.ics","from":"1900-01-01","to":"1900-01-02"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"ics_events_parse","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/ahv_ch_validate":{"post":{"operationId":"ahv_ch_validate","summary":"Offline validator for a Swiss AHV/AVS social security number (format 756.NNNN.NNNN.NN, 13 digits total). Normalizes input by stripping dots/spaces, checks it starts with 756 and verifies the EAN-13 check digit (alternating weights 3/1 from the right).","tags":["validation","switzerland","social-security","checksum","offline"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"value":{"type":"string","description":"AHV/AVS number, e.g. 756.1234.5678.97"}},"required":["value"],"additionalProperties":false},"example":{"value":"756.1234.5678.97"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"ahv_ch_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/sa_id_validate":{"post":{"operationId":"sa_id_validate","summary":"Offline validator for a South African National ID (13-digit): parses YYMMDD as date of birth, extracts gender sequence (0000-4999 female, 5000-9999 male), citizenship digit (0=citizen,1=permanent resident), checks the 12th digit is 8 or 9, and verifies the final digit via a Luhn mod-10 checksum.","tags":["validator","south-africa","national-id","offline","identity"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"13-digit South African ID number, spaces allowed"}},"required":["id"]},"example":{"id":"8001015009087"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"sa_id_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/tw_nid_validate":{"post":{"operationId":"tw_nid_validate","summary":"Offline validator for a Taiwan National ID (身分證字號, 1 letter + 9 digits). Maps the leading letter to its published two-digit location code, applies the standard weighted-sum checksum formula over the 10 resulting digits, and verifies the result is divisible by 10.","tags":["validator","taiwan","national-id","offline","checksum"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"Taiwan National ID, e.g. A123456789"}},"required":["id"]},"example":{"id":"A123456789"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"tw_nid_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/ph_postal_code_validate":{"post":{"operationId":"ph_postal_code_validate","summary":"Offline validator for a Philippine postal (ZIP) code: checks that the value is exactly 4 numeric digits (1000-9999) and classifies it into a broad island-group band (Luzon 1000-3999, Visayas 4000-6999, Mindanao 7000-9999) based on published PHLPost ZIP code ranges. This is a structural/approximate check only, not an authoritative province lookup.","tags":["validator","philippines","postal_code","offline","format"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"postal_code":{"type":"string","description":"Philippine postal code to validate, e.g. '1010' or '9000'"}},"required":["postal_code"],"additionalProperties":false},"example":{"postal_code":"1010"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"ph_postal_code_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/invoice_no_jp_validate":{"post":{"operationId":"invoice_no_jp_validate","summary":"Offline validator for a Japanese Invoice Registration Number (適格請求書発行事業者登録番号): format is 'T' followed by the 13-digit Corporate Number. Strips/uppercases the 'T' prefix, then validates the embedded Corporate Number using its check-digit algorithm: for the 12-digit base (digits 2-13, left to right), sum digit*2 at odd positions and digit*1 at even positions, checkDigit = 9 - (sum mod 9), which must equal the first digit.","tags":["validator","japan","tax","invoice","offline"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"value":{"type":"string","description":"Invoice registration number, e.g. T7000012050002"}},"required":["value"]},"example":{"value":"T7000012050002"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"invoice_no_jp_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/corporate_number_jp_validate":{"post":{"operationId":"corporate_number_jp_validate","summary":"Offline validator for a Japanese Corporate Number (法人番号): a 13-digit code where the first digit is a check digit and the remaining 12 digits are the base number. Recomputes the check digit as 9 minus (weighted sum of the 12 base digits mod 9), with alternating weights 1 and 2 starting from the rightmost base digit, and compares it to the supplied first digit.","tags":["validator","japan","tax-id","business-id","offline"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"value":{"type":"string","description":"13-digit Japanese Corporate Number, digits only or with spaces/hyphens"}},"required":["value"]},"example":{"value":"8000000000001"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"corporate_number_jp_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/brn_kr_validate":{"post":{"operationId":"brn_kr_validate","summary":"Offline validator for a South Korean Business Registration Number (사업자등록번호, format XXX-XX-XXXXX). Strips hyphens to 10 digits, applies weights 1,3,7,1,3,7,1,3,5 to the first 9 digits, adds floor(d9*5/10), and compares the mod-10 check digit to the 10th digit.","tags":["validator","korea","business-id","offline","tax-id"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"value":{"type":"string","description":"Business registration number, with or without hyphens (e.g. 123-45-67891)"}},"required":["value"],"additionalProperties":false},"example":{"value":"123-45-67891"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"brn_kr_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/ird_nz_validate":{"post":{"operationId":"ird_nz_validate","summary":"Offline validator for a New Zealand IRD number (Inland Revenue Department tax identifier). Accepts an 8 or 9 digit numeric string, normalizes it to 9 digits with a leading zero, rejects values outside [10,000,000, 150,000,000], computes the official check digit (weights 3,2,7,6,5,4,3,2, falling back to 7,4,3,2,5,2,7,6 if remainder is 10, rejecting if still 10), and compares it to the supplied check digit.","tags":["validator","new-zealand","tax-id","ird","offline"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"number":{"type":"string","description":"8 or 9 digit IRD number, digits only or with separators"}},"required":["number"]},"example":{"number":"49091850"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"ird_nz_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/vat_no_validate":{"post":{"operationId":"vat_no_validate","summary":"Offline validator for a Norwegian VAT (MVA) number: strips an optional 'NO' prefix and the required 'MVA' suffix, then validates the remaining 9-digit Organisasjonsnummer using the mod-11 check-digit algorithm (weights 3,2,7,6,5,4,3,2 applied to the first 8 digits). No network access required.","tags":["validator","vat","norway","offline","tax-id"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"vatNumber":{"type":"string","description":"Norwegian VAT number, e.g. NO923609016MVA or 923609016MVA"}},"required":["vatNumber"],"additionalProperties":false},"example":{"vatNumber":"NO923609016MVA"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"vat_no_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/cnp_ro_validate":{"post":{"operationId":"cnp_ro_validate","summary":"Offline validator for a Romanian CNP (Cod Numeric Personal, 13-digit personal numeric code). Checks 13-digit format, validates the sex/century digit (1-9), derives and checks a plausible birth date (YYMMDD) and county code (01-46,51,52), then verifies the checksum using key 2-7-9-1-4-6-3-5-8-2-7-9 applied to the first 12 digits, summed mod 11 (10 maps to 1), compared to the 13th digit.","tags":["validator","romania","cnp","identity","offline"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"cnp":{"type":"string","description":"13-digit Romanian CNP, digits only or with spaces"}},"required":["cnp"]},"example":{"cnp":"1900122221232"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"cnp_ro_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/y_tunnus_validate":{"post":{"operationId":"y_tunnus_validate","summary":"Offline validator for a Finnish Y-tunnus (Business ID). Parses format NNNNNNN-C, computes a mod-11 weighted checksum (weights 7,9,10,5,8,4,2 applied left to right across the 7 digits), maps the remainder to an expected check digit (0->0, 1->invalid, else 11-remainder), and compares it to the supplied check digit.","tags":["validator","finland","business-id","checksum","offline"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"value":{"type":"string","description":"Y-tunnus in format NNNNNNN-C, e.g. 1234567-1"}},"required":["value"],"additionalProperties":false},"example":{"value":"1234567-1"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"y_tunnus_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/pesel_validate":{"post":{"operationId":"pesel_validate","summary":"Offline validator for a Polish PESEL (11-digit national identification number). Verifies the 11-digit format and the weighted mod-10 checksum (weights 1,3,7,9,1,3,7,9,1,3), and decodes the embedded birth date (with century offset encoded in the month digits) and sex (odd=male, even=female) when valid.","tags":["validator","poland","pesel","national-id","offline"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"pesel":{"type":"string","description":"11-digit PESEL number, digits only (spaces allowed)"}},"required":["pesel"],"additionalProperties":false},"example":{"pesel":"44051401458"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"pesel_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/nip_pl_validate":{"post":{"operationId":"nip_pl_validate","summary":"Offline validator for a Polish NIP (Numer Identyfikacji Podatkowej) tax identifier. Normalizes input (strips dashes/spaces), checks it is 10 digits, and verifies the checksum digit using weights 6,5,7,2,3,4,5,6,7 applied to the first 9 digits with mod-11 (checksum of 10 is invalid).","tags":["validator","poland","tax-id","nip","offline"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"nip":{"type":"string","description":"Polish NIP, digits with optional dashes/spaces"}},"required":["nip"],"additionalProperties":false},"example":{"nip":"123-456-32-18"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"nip_pl_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/lei_validate":{"post":{"operationId":"lei_validate","summary":"Offline validator for a Legal Entity Identifier (LEI) per ISO 17442: checks 20-character alphanumeric format and verifies the check digits using ISO 7064 MOD 97-10 (letters mapped A=10..Z=35).","tags":["validation","lei","iso17442","finance","offline"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"lei":{"type":"string","description":"20-character LEI code"}},"required":["lei"],"additionalProperties":false},"example":{"lei":"529900T8BM49AURSDO55"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"lei_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/dns_lookup":{"post":{"operationId":"dns_lookup","summary":"Performs a DNS-over-HTTPS lookup for a domain and record type (A, AAAA, MX, TXT, NS, CNAME) via https://dns.google/resolve?name=<domain>&type=<type>. Returns the resolved status and list of answer records.","tags":["dns","network","domain","lookup"],"x-price":"$0.002","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"domain":{"type":"string","description":"Domain name to query, e.g. example.com"},"type":{"type":"string","enum":["A","AAAA","MX","TXT","NS","CNAME"],"description":"DNS record type"}},"required":["domain","type"],"additionalProperties":false},"example":{"domain":"google.com","type":"NS"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"dns_lookup","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/bsn_nl_validate":{"post":{"operationId":"bsn_nl_validate","summary":"Offline validator for a Dutch BSN (Burgerservicenummer, citizen service number). Strips non-digit characters, pads 8-digit values with a leading zero to 9 digits, then applies the elfproef (eleven test): weights 9,8,7,6,5,4,3,2,-1 applied to the digits must sum to a multiple of 11, and the value must not be all zeros.","tags":["validator","netherlands","bsn","elfproef","identity"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"bsn":{"type":"string","description":"BSN number, 8 or 9 digits, spaces/dots ignored"}},"required":["bsn"],"additionalProperties":false},"example":{"bsn":"111222333"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"bsn_nl_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/ng_tin_cac_validate":{"post":{"operationId":"ng_tin_cac_validate","summary":"Offline validator/classifier for Nigerian identifiers: detects whether a string is a FIRS Tax Identification Number (TIN, format NNNNNNNN-NNNN) or a CAC registration number (RC, BN or IT prefix followed by digits), checks its structural validity, and returns the id type plus inferred entity type (company, business_name, incorporated_trustee, or unknown for TIN).","tags":["nigeria","tin","cac","validator","offline","identifier"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"value":{"type":"string","description":"Identifier string to classify and validate"}},"required":["value"]},"example":{"value":"12345678-0001"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"ng_tin_cac_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/uscc_cn_validate":{"post":{"operationId":"uscc_cn_validate","summary":"Offline validator for China's Unified Social Credit Code (统一社会信用代码, 18 characters). Verifies the ISO 7064-derived weighted checksum over the 31-character alphabet (0-9, A-Z excluding I,O,S,V,Z), then decodes the registering-authority code, entity-type code, region code and sequence code per GB 32100-2015.","tags":["validator","china","business-id","offline","checksum"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","description":"18-character Unified Social Credit Code"}},"required":["code"]},"example":{"code":"91110108551385082Q"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"uscc_cn_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/cbu_cvu_ar_validate":{"post":{"operationId":"cbu_cvu_ar_validate","summary":"Offline validator for Argentine CBU/CVU bank account keys (22 digits): verifies both weighted mod-10 check digits (block1: first 8 digits, weights 7,1,3,9,7,1,3; block2: next 14 digits, weights 3,9,7,1,3,9,7,1,3,9,7,1,3), extracts the 3-digit entity code and 4-digit branch code, and classifies the key as CVU (entity code 000, used by virtual wallets/PSPs) or CBU (any other entity code, used by banks).","tags":["validator","argentina","banking","cbu","cvu","offline"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"value":{"type":"string","description":"22-digit CBU or CVU, spaces/dashes allowed"}},"required":["value"]},"example":{"value":"0070001600000012345674"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"cbu_cvu_ar_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/tin_suffix_validate":{"post":{"operationId":"tin_suffix_validate","summary":"Offline structural validator for a generic Tax Identification Number format consisting of an 8-10 digit base number, an optional hyphen, and a 4-digit branch/suffix code (e.g. 01234567-0001). Normalizes input by stripping spaces, checks the digit-count pattern, and returns the parsed base and suffix components. This is a structural check only (no checksum or registry lookup).","tags":["tin","tax-id","validator","offline","format"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"value":{"type":"string","description":"TIN string to validate, e.g. 01234567-0001"}},"required":["value"],"additionalProperties":false},"example":{"value":"01234567-0001"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"tin_suffix_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/cac_ng_validate":{"post":{"operationId":"cac_ng_validate","summary":"Offline validator for a Nigerian CAC registration number (Corporate Affairs Commission): normalizes input (uppercase, strips spaces/hyphens/slashes) and checks it matches prefix RC (Registered Company), BN (Business Name) or IT (Incorporated Trustees) followed by 1-10 digits.","tags":["validator","nigeria","cac","business-id","offline"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"value":{"type":"string","description":"CAC number, e.g. 'RC 123456' or 'bn-98765'"}},"required":["value"],"additionalProperties":false},"example":{"value":"rc 123456"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"cac_ng_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/nin_ng_validate":{"post":{"operationId":"nin_ng_validate","summary":"Offline structural validator for a Nigerian National Identification Number (NIN). Strips spaces/dashes, then requires exactly 11 numeric digits with no letters or other characters; returns validity and the normalized value.","tags":["validator","nin","nigeria","id","offline"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"value":{"type":"string","description":"NIN to validate, e.g. '12345678901'"}},"required":["value"],"additionalProperties":false},"example":{"value":"12345678901"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"nin_ng_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/teudat_zehut_validate":{"post":{"operationId":"teudat_zehut_validate","summary":"Offline validator for an Israeli Teudat Zehut (national ID) number. Normalizes input to 9 digits (zero-padding shorter IDs), then applies the standard alternating 1/2 weighted checksum (digit-sum reduction for products ≥10, total mod 10 must be 0).","tags":["validator","israel","national-id","offline"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"Teudat Zehut number, 7-9 digits, may include spaces or dashes"}},"required":["id"]},"example":{"id":"305127391"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"teudat_zehut_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/postal_code_ma_validate":{"post":{"operationId":"postal_code_ma_validate","summary":"Offline validator for a Moroccan postal code: normalizes input to 5 digits, checks the format, and maps the first 2 digits to a known province/region using a bundled reference table derived from the data.gov.ma postal code dataset. Returns valid=false with a reason if the format is wrong or the prefix is unrecognized.","tags":["validator","morocco","postal-code","offline","identifier"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"postalCode":{"type":"string","description":"Moroccan postal code, e.g. '10000'"}},"required":["postalCode"],"additionalProperties":false},"example":{"postalCode":"10000"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"postal_code_ma_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/cipc_regno_validate":{"post":{"operationId":"cipc_regno_validate","summary":"Offline validator for a South African CIPC company registration number in the format YYYY/NNNNNN/NN. Normalizes input, checks the year is in a plausible range (1900 to next calendar year), and flags whether the 2-digit entity-type suffix matches a known CIPC code (e.g. 06, 07, 08, 09, 10, 11, 12, 20, 21, 22, 23, 24, 25, 26, 30, 31, 32).","tags":["validator","south-africa","cipc","company-registration","offline"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"regNumber":{"type":"string","description":"CIPC registration number, e.g. 2015/123456/07"}},"required":["regNumber"],"additionalProperties":false},"example":{"regNumber":"2015/123456/07"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"cipc_regno_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/ubn_tw_validate":{"post":{"operationId":"ubn_tw_validate","summary":"Offline validator for a Taiwan Unified Business Number (統一編號, 8-digit business ID). Normalizes input to 8 digits, multiplies each by weights [1,2,1,2,1,2,4,1], sums the digits of each product (splitting two-digit products), and if the 7th digit is '7' also tests sum+1; accepts if any candidate sum is divisible by 10 (old numbers) or 5 (new-format numbers from ~2023).","tags":["taiwan","tax-id","business-id","validator","offline"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"value":{"type":"string","description":"8-digit Taiwan UBN, digits only (spaces/dashes allowed)"}},"required":["value"],"additionalProperties":false},"example":{"value":"12345633"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"ubn_tw_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/tin_ph_validate":{"post":{"operationId":"tin_ph_validate","summary":"Offline structural validator/normalizer for a Philippine TIN (Tax Identification Number). Accepts 9 digits (head office, branch assumed 000) or 12 digits (9-digit base TIN + 3-digit branch code), strips non-digit separators, and returns the normalized XXX-XXX-XXX-XXX form. No checksum is published by BIR, so only digit-count and grouping are validated.","tags":["validator","philippines","tin","tax-id","offline"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"value":{"type":"string","description":"TIN string, with or without dashes/spaces, 9 or 12 digits"}},"required":["value"],"additionalProperties":false},"example":{"value":"123-456-789-000"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"tin_ph_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/nzbn_validate":{"post":{"operationId":"nzbn_validate","summary":"Offline validator for a New Zealand Business Number (NZBN): normalizes input to 13 digits, verifies it is fully numeric, and checks the final digit against the GS1 modulo-10 check digit calculated over the first 12 digits.","tags":["validator","new-zealand","nzbn","gs1","business-id","offline"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"value":{"type":"string","description":"NZBN, digits only or with spaces/dashes"}},"required":["value"],"additionalProperties":false},"example":{"value":"9421000123451"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"nzbn_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/trn_ae_validate":{"post":{"operationId":"trn_ae_validate","summary":"Offline validator for a UAE FTA Tax Registration Number (TRN): normalizes input by stripping spaces and dashes, then checks that the result is exactly 15 numeric digits. No checksum algorithm has been published by the FTA, so only format is verified.","tags":["validator","tax-id","uae","offline","trn"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"value":{"type":"string","description":"TRN to validate, digits optionally separated by spaces or dashes"}},"required":["value"],"additionalProperties":false},"example":{"value":"100123456700003"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"trn_ae_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/emirates_id_validate":{"post":{"operationId":"emirates_id_validate","summary":"Offline format validator for a UAE Emirates ID number (784-YYYY-NNNNNNN-C, 15 digits). Strips spaces/dashes, checks total length, verifies the 784 prefix, checks the YYYY segment is a plausible birth year (1900-current year), and returns the normalized/formatted number. The final check digit's official algorithm is not publicly documented by the ICP, so it is only extracted, never cryptographically verified.","tags":["validator","uae","emirates-id","identity","offline"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"value":{"type":"string","description":"Emirates ID, with or without dashes/spaces"}},"required":["value"]},"example":{"value":"784-1990-1234567-8"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"emirates_id_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/cccd_vn_validate":{"post":{"operationId":"cccd_vn_validate","summary":"Offline structural validator for a Vietnamese CCCD (Citizen Identity Card number, 12 digits). Parses the 3-digit province/overseas code, 1-digit century+gender indicator, 2-digit birth year, and 6-digit sequence, deriving full birth year and gender, and flags implausible province codes or birth years. No checksum digit exists in this scheme, so validation is structural only.","tags":["validator","vietnam","id","offline","cccd"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"12-digit Vietnamese CCCD number, spaces/dashes allowed"}},"required":["id"],"additionalProperties":false},"example":{"id":"001204012345"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"cccd_vn_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/aadhaar_validate":{"post":{"operationId":"aadhaar_validate","summary":"Offline validator for an Indian Aadhaar number (12-digit UIDAI identifier). Strips spaces/dashes, checks the number has 12 digits with a non-zero, non-one leading digit, and verifies the trailing check digit using the publicly documented Verhoeff algorithm.","tags":["validator","india","aadhaar","identity","offline"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"number":{"type":"string","description":"Aadhaar number, with or without spaces/dashes"}},"required":["number"]},"example":{"number":"2341 2341 2346"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"aadhaar_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/gstin_validate":{"post":{"operationId":"gstin_validate","summary":"Offline validator for an Indian GSTIN (Goods and Services Tax Identification Number): checks the 15-character structure (2-digit state code + 10-character PAN + entity code + fixed 'Z' + check digit) and verifies the check digit using the public modulus-36 checksum algorithm (charset 0-9A-Z mapped 0-35, alternating weights 1/2).","tags":["validator","india","gstin","tax-id","offline"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"gstin":{"type":"string","description":"15-character GSTIN to validate"}},"required":["gstin"],"additionalProperties":false},"example":{"gstin":"27AAPFU0939F1ZV"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"gstin_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/acn_au_validate":{"post":{"operationId":"acn_au_validate","summary":"Offline validator for an Australian Company Number (ACN): strips non-digits, requires exactly 9 digits, applies weights 8,7,6,5,4,3,2,1 to the first 8 digits, sums, takes mod 10, complements to 10 (0 if remainder is 0), and checks it equals the 9th digit.","tags":["validator","australia","acn","offline","business-id"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"value":{"type":"string","description":"ACN string, digits with optional spaces"}},"required":["value"]},"example":{"value":"123456780"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"acn_au_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/abn_au_validate":{"post":{"operationId":"abn_au_validate","summary":"Offline validator for an Australian Business Number (ABN). Strips spaces, requires 11 digits, subtracts 1 from the first digit, applies weights [10,1,3,5,7,9,11,13,15,17,19] to the resulting digits, sums the products and checks divisibility by 89.","tags":["validator","australia","abn","tax-id","offline"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"abn":{"type":"string","description":"ABN, with or without spaces"}},"required":["abn"]},"example":{"abn":"51 824 753 556"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"abn_au_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/nib_id_validate":{"post":{"operationId":"nib_id_validate","summary":"Offline format validator for Indonesia's NIB (Nomor Induk Berusaha, Business Identification Number). Normalizes input by stripping non-digit characters and checks that the result is exactly 13 numeric digits; no checksum algorithm exists so this is a shallow sanity check only.","tags":["validator","indonesia","nib","business-id","offline"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"value":{"type":"string","description":"NIB string, digits optionally with spaces/dashes"}},"required":["value"],"additionalProperties":false},"example":{"value":"1234567890123"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"nib_id_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/npwp_validate":{"post":{"operationId":"npwp_validate","summary":"Offline format validator for a legacy Indonesian NPWP (Nomor Pokok Wajib Pajak, tax ID). Strips non-digit characters, checks for exactly 15 digits, and normalizes to the canonical XX.XXX.XXX.X-XXX.XXX pattern. No checksum verification is performed (none is publicly documented for NPWP).","tags":["validator","indonesia","tax-id","npwp","offline"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"npwp":{"type":"string","description":"NPWP string, with or without punctuation"}},"required":["npwp"],"additionalProperties":false},"example":{"npwp":"01.234.567.8-901.000"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"npwp_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/nik_id_validate":{"post":{"operationId":"nik_id_validate","summary":"Offline structural validator for Indonesia's NIK (Nomor Induk Kependudukan, 16-digit national ID). Verifies digits-only length-16 format, plausible province code (01-94), city/regency code (01-99) and district code (01-99), and a valid birthdate encoded as DDMMYY (day 01-31 for males, day+40 i.e. 41-71 for females). Performs no checksum or registry check.","tags":["validator","indonesia","nik","identity","offline"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"nik":{"type":"string","description":"NIK value, digits with optional spaces/dots/dashes"}},"required":["nik"],"additionalProperties":false},"example":{"nik":"3273010101990001"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"nik_id_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/dnummer_no_validate":{"post":{"operationId":"dnummer_no_validate","summary":"Offline validator for a Norwegian D-nummer (temporary ID for non-residents). Normalizes an 11-digit input, subtracts 40 from the DD (day) field to recover the real birth date, validates the resulting date, and checks the two mod-11 control digits using the same weighted algorithm as the standard Fødselsnummer.","tags":["validator","norway","d-nummer","offline","national-id"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"11-digit Norwegian D-nummer, spaces/dashes allowed"}},"required":["id"]},"example":{"id":"55059012370"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"dnummer_no_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/tin_my_validate":{"post":{"operationId":"tin_my_validate","summary":"Offline format validator for a Malaysian LHDN Tax Identification Number (TIN). Checks that the value starts with a recognized category prefix (SG, OG, C, E, D, F) followed by 1-11 numeric digits; since LHDN has not published a public checksum algorithm, this performs structural/format validation only, not real registry verification.","tags":["validator","malaysia","tax-id","lhdn","offline"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"tin":{"type":"string","description":"TIN value to validate, e.g. SG10234567890"}},"required":["tin"]},"example":{"tin":"sg 10234567890"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"tin_my_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/ssm_my_validate":{"post":{"operationId":"ssm_my_validate","summary":"Offline validator for Malaysia's SSM (Suruhanjaya Syarikat Malaysia) new-format registration number: a 12-digit string YYYYMMNNNNNN. Checks that the 4-digit year is >=2017, the 2-digit month is 01-12, and extracts the remaining 6 digits as a sequence number. No check digit exists so only format and date plausibility are validated.","tags":["validator","malaysia","ssm","registration-number","offline"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"value":{"type":"string","description":"12-digit SSM registration number, e.g. 202201000123"}},"required":["value"],"additionalProperties":false},"example":{"value":"202201000123"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"ssm_my_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/vat_th_validate":{"post":{"operationId":"vat_th_validate","summary":"Offline validator for a Thai VAT registration number: verifies the 13-digit Tax ID via the mod-11 check digit algorithm and validates the accompanying 5-digit branch code format (00000 = head office, otherwise a branch number). No network access used.","tags":["validator","thailand","vat","tax-id","offline"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"taxId":{"type":"string","description":"13-digit Thai Tax ID, digits only or with dashes/spaces"},"branchCode":{"type":"string","description":"5-digit branch code, defaults to 00000 (head office) if omitted"}},"required":["taxId"]},"example":{"taxId":"1234567890121","branchCode":"00000"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"vat_th_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/thai_nid_validate":{"post":{"operationId":"thai_nid_validate","summary":"Offline validator for a Thai National ID number (13 digits). Strips non-digit characters, checks length is 13, and verifies the mod-11 check digit: weights 13..2 applied to the first 12 digits, check = (11 - sum%11) % 10, compared to the 13th digit.","tags":["validator","thailand","national-id","offline","checksum"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"value":{"type":"string","description":"Thai national ID, digits only or with dashes/spaces"}},"required":["value"],"additionalProperties":false},"example":{"value":"3-1006-00445-63-5"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"thai_nid_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/nric_fin_validate":{"post":{"operationId":"nric_fin_validate","summary":"Offline validator for a Singapore NRIC/FIN (National Registration Identity Card / Foreign Identification Number). Checks the 9-character format (prefix S/T/F/G/M, 7 digits, check letter) and recomputes the check letter using the publicly documented weighted modulo-11 algorithm (weights 2,7,6,5,4,3,2; offsets and prefix-keyed letter tables for S/T, F/G and M). This checksum is community-derived/unofficial (never published by the Singapore government) and is provided for format sanity-checking only, not identity verification.","tags":["validator","singapore","nric","fin","identity","offline","checksum"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"NRIC/FIN string, e.g. S1234567D"}},"required":["id"]},"example":{"id":"S1234567D"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"nric_fin_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/kbo_be_validate":{"post":{"operationId":"kbo_be_validate","summary":"Offline validator for a Belgian Enterprise Number (KBO/BCE). Normalizes input to 10 digits, checks it starts with 0 or 1, and verifies the last two check digits equal 97 - (first 8 digits mod 97).","tags":["validator","belgium","kbo","enterprise-number","offline"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"number":{"type":"string","description":"KBO/BCE number, e.g. 0403.170.701"}},"required":["number"]},"example":{"number":"0403.170.701"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"kbo_be_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/dic_cz_validate":{"post":{"operationId":"dic_cz_validate","summary":"Offline validator for a Czech DIČ (VAT/tax ID): normalizes input, strips spaces/dashes, checks for 'CZ' prefix, then validates the remaining digits either as an 8-digit IČO (mod-11 checksum with weights 8..2 on the first 7 digits) or as a 9-10 digit rodné číslo (birth number, valid month 01-12/21-32/51-62/71-82, and for 10-digit numbers the full number must be divisible by 11).","tags":["validator","czech-republic","vat","tax-id","offline"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"dic":{"type":"string","description":"Czech DIČ, e.g. CZ12345679 or CZ900101/0007"}},"required":["dic"]},"example":{"dic":"CZ12345679"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"dic_cz_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/nif_pt_validate":{"post":{"operationId":"nif_pt_validate","summary":"Offline validator for a Portuguese NIF/NIPC (Número de Identificação Fiscal / Pessoa Coletiva): checks 9-digit format, classifies entity type from the first digit, and verifies the mod-11 check digit (weights 9-2 on digits 1-8, remainder rule for digit 9). No network access.","tags":["validator","portugal","nif","nipc","tax-id","offline"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"nif":{"type":"string","description":"Portuguese NIF/NIPC, digits only or with spaces/dots"}},"required":["nif"]},"example":{"nif":"501442600"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"nif_pt_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/hetu_validate":{"post":{"operationId":"hetu_validate","summary":"Offline validator for a Finnish HETU (personal identity code): parses DDMMYY, century sign (+/-/A), and 3-digit individual number, validates the calendar date and century-sign consistency, computes the mod-31 checksum over the 9-digit number using the charset 0123456789ABCDEFHJKLMNPRSTUVWXY, and returns birth date, century, gender and check character.","tags":["validator","finland","hetu","identity","offline"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"hetu":{"type":"string","description":"HETU code, e.g. 131052-308T"}},"required":["hetu"],"additionalProperties":false},"example":{"hetu":"131052-308T"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"hetu_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/vat_fi_validate":{"post":{"operationId":"vat_fi_validate","summary":"Offline validator for a Finnish VAT number (ALV-tunnus, format FIxxxxxxxx). Strips the 'FI' prefix, treats the remaining 8 digits as a Y-tunnus (business ID) with a hyphen re-inserted before the last digit, and verifies the check digit using the Finnish Y-tunnus mod-11 algorithm (weights 7,9,10,5,8,4,2).","tags":["validator","vat","finland","tax-id","offline"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"vat":{"type":"string","description":"Finnish VAT number, e.g. FI24644919"}},"required":["vat"]},"example":{"vat":"FI24644919"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"vat_fi_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/regon_validate":{"post":{"operationId":"regon_validate","summary":"Offline validator for a Polish REGON business registry number (9-digit or 14-digit form). Verifies length/digit format and the official weighted checksum for each length (9-digit uses weights 8,9,2,3,4,5,6,7; 14-digit uses weights 2,4,8,5,0,9,7,3,6,1,2,4,8 over the first 13 digits), returning validity and normalized form.","tags":["validator","poland","regon","tax-id","offline"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"regon":{"type":"string","description":"REGON number, 9 or 14 digits, spaces allowed"}},"required":["regon"]},"example":{"regon":"000331501"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"regon_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/che_uid_validate":{"post":{"operationId":"che_uid_validate","summary":"Offline validator for a Swiss UID/IDE number (format CHE-nnn.nnn.nnC). Strips the 'CHE' prefix and separators, verifies 9 digits remain, then applies the modulo-11 weighted check-digit algorithm (weights 5,4,3,2,7,6,5,4 on the first 8 digits) to confirm the 9th digit matches.","tags":["validator","switzerland","tax-id","offline","uid"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"value":{"type":"string","description":"Swiss UID/IDE number, e.g. CHE-109.322.551"}},"required":["value"],"additionalProperties":false},"example":{"value":"CHE-109.322.551"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"che_uid_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/rdap_domain_lookup":{"post":{"operationId":"rdap_domain_lookup","summary":"Looks up domain registration data via RDAP (https://rdap.org/domain/<domain>): returns registrar, creation/expiry dates, nameservers and status codes. Works for gTLDs and many ccTLDs supported by the RDAP bootstrap network.","tags":["domain","whois","rdap","dns","network"],"x-price":"$0.003","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"domain":{"type":"string","description":"Domain name to look up, e.g. example.com"}},"required":["domain"],"additionalProperties":false},"example":{"domain":"example.com"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"rdap_domain_lookup","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/clabe_validate":{"post":{"operationId":"clabe_validate","summary":"Offline validator for a Mexican CLABE (Clave Bancaria Estandarizada) 18-digit bank account number: checks length/digits, computes the mod-10 weighted (3-7-1) check digit per Banco de México's published formula, and reports validity plus parsed bank code, branch code and account number.","tags":["mexico","banking","clabe","validator","offline","finance"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"clabe":{"type":"string","description":"18-digit CLABE, digits only or with spaces/dashes"}},"required":["clabe"],"additionalProperties":false},"example":{"clabe":"002010077777777771"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"clabe_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/bd_pk_nid_validate":{"post":{"operationId":"bd_pk_nid_validate","summary":"Offline structural validator for Bangladesh NID (10, 13 or 17-digit National ID) and Pakistan CNIC (13-digit Computerized National Identity Card). Normalizes input, checks digit-count/format rules, extracts embedded birth year for 17-digit BD NIDs, and derives gender parity for PK CNICs (last digit odd=male, even=female). No checksum digit is publicly documented for either scheme, so validation is purely structural.","tags":["validator","bangladesh","pakistan","nid","cnic","identity"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"The ID/CNIC string, with or without dashes/spaces"},"country":{"type":"string","enum":["BD","PK"]}},"required":["id","country"]},"example":{"id":"19851234567890123","country":"BD"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"bd_pk_nid_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/vat_za_validate":{"post":{"operationId":"vat_za_validate","summary":"Offline validator for a South African VAT registration number (SARS 10-digit tax reference number starting with 4). Strips spaces/dashes, checks length and leading digit, and verifies the standard Luhn (mod 10) check digit used by SARS.","tags":["validator","south-africa","vat","tax-id","offline"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"value":{"type":"string","description":"VAT number, e.g. 4000000002"}},"required":["value"]},"example":{"value":"4000000002"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"vat_za_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/bn_ca_validate":{"post":{"operationId":"bn_ca_validate","summary":"Offline validator for a Canadian Business Number (BN9) and its extended BN15 form (BN9 + 2-letter program identifier + 4-digit reference number, e.g. 123456782RT0001). Verifies the 9-digit BN via the Luhn checksum algorithm and, if present, decodes the program identifier (RC=Corporate income tax, RT=GST/HST, RP=Payroll, RM=Import/Export, RR=Registered charity, and others) into a human-readable program type.","tags":["validator","canada","business-number","tax-id","luhn","offline"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"value":{"type":"string","description":"BN9 (9 digits) or BN15 (9 digits + 2-letter program id + 4-digit reference), e.g. 123456782RT0001"}},"required":["value"],"additionalProperties":false},"example":{"value":"123456782RT0001"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"bn_ca_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/bvn_ng_validate":{"post":{"operationId":"bvn_ng_validate","summary":"Offline structural validator for a Nigerian Bank Verification Number (BVN). Normalizes input by stripping spaces/dashes and checks that the result is exactly 11 numeric digits. Does not verify against any live bank registry.","tags":["validator","nigeria","bvn","banking","offline"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"value":{"type":"string","description":"BVN string to validate"}},"required":["value"],"additionalProperties":false},"example":{"value":"12345678901"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"bvn_ng_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/cr_sa_validate":{"post":{"operationId":"cr_sa_validate","summary":"Offline format validator for a Saudi Arabia Commercial Registration (CR) number: strips spaces/dashes, checks the result is exactly 10 numeric digits with no letters. No check-digit algorithm is publicly documented, so only length/format is verified.","tags":["validator","saudi-arabia","business-id","offline","registration"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"value":{"type":"string","description":"CR number to validate, e.g. '1010123456' or '101-012-3456'"}},"required":["value"],"additionalProperties":false},"example":{"value":"1010123456"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"cr_sa_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/vat_sa_validate":{"post":{"operationId":"vat_sa_validate","summary":"Offline structural validator for a Saudi Arabia ZATCA VAT registration number: normalizes input by stripping spaces/dashes, checks it is exactly 15 digits, and verifies it starts and ends with '3' (the Saudi GCC country code / tax-type marker), matching the documented 15-digit serial+check+subsidiary+taxtype structure. No live check-digit algorithm is publicly documented, so only format validity is confirmed.","tags":["validator","vat","saudi-arabia","zatca","tax-id"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"value":{"type":"string","description":"Saudi VAT number, e.g. 300000000000003"}},"required":["value"],"additionalProperties":false},"example":{"value":"300000000000003"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"vat_sa_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/nid_eg_validate":{"post":{"operationId":"nid_eg_validate","summary":"Offline validator for an Egyptian National ID (14 digits): parses the century digit (2=1900s, 3=2000s), birth date (YYMMDD), 2-digit governorate code, 4-digit sequence whose last digit encodes gender (odd=male, even=female), and verifies the 14th check digit using the weighted modulus-11 algorithm (weights 2,7,6,5,4,3,2,7,6,5,4,3,2 applied to digits 1-13, mod 11, check = 11 - remainder, with 10/11 mapped to 0). No network access.","tags":["validator","egypt","national-id","offline","checksum"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"14-digit Egyptian National ID, digits only or with separators/spaces"}},"required":["id"]},"example":{"id":"29001150112341"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"nid_eg_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/hp_il_validate":{"post":{"operationId":"hp_il_validate","summary":"Offline validator for an Israeli Company Number (ח\"פ, 9 digits). Strips non-digit characters, requires exactly 9 digits, applies alternating 1x/2x weights from the left (digit*weight, if product>9 sum its digits), and checks that the total is divisible by 10.","tags":["validator","israel","tax-id","company-number","offline"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"value":{"type":"string","description":"Israeli company number (ח\"פ), with or without separators"}},"required":["value"]},"example":{"value":"123456782"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"hp_il_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/ice_ma_validate":{"post":{"operationId":"ice_ma_validate","summary":"Offline validator for a Moroccan ICE (Identifiant Commun de l'Entreprise): parses 15 digits into a 9-digit legal-unit code, 4-digit establishment code and 2-digit control key, then recomputes the control key as 97 minus (first 13 digits mod 97) per the commonly-documented (unofficial, not published by OMPIC) algorithm and compares it to the provided key.","tags":["validator","morocco","ice","tax-id","offline"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"ice":{"type":"string","description":"15-digit ICE number, spaces allowed"}},"required":["ice"]},"example":{"ice":"000000123000156"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"ice_ma_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/ghana_post_gps_validate":{"post":{"operationId":"ghana_post_gps_validate","summary":"Offline validator for a GhanaPostGPS digital address (format AA-###-####, e.g. GA-183-9210). Normalizes input (uppercase, trims spaces), checks the pattern, and verifies the two-letter prefix against Ghana's 16 official postal region codes (GA, AK, AH, BA, BE, CR, ER, NE, NR, OT, SV, UE, UW, VR, WR, WN).","tags":["validator","ghana","postal-code","address","offline"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"value":{"type":"string","description":"GhanaPostGPS digital address, e.g. GA-183-9210"}},"required":["value"],"additionalProperties":false},"example":{"value":"ga-183-9210"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"ghana_post_gps_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/tin_gh_validate":{"post":{"operationId":"tin_gh_validate","summary":"Offline structural validator for a Ghanaian GRA legacy Taxpayer Identification Number (TIN): normalizes input (uppercase, strip spaces/dashes) and checks it matches one entity-type prefix letter (e.g. P, C, G, Q, V) followed by exactly 10 digits (11 characters total). Format-check only; no public check-digit algorithm is verified.","tags":["validator","tin","ghana","gra","tax-id","offline"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"value":{"type":"string","description":"GRA TIN to validate, e.g. P0001234567"}},"required":["value"],"additionalProperties":false},"example":{"value":"P0001234567"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"tin_gh_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/my_number_jp_validate":{"post":{"operationId":"my_number_jp_validate","summary":"Offline format validator for Japan's My Number (Individual Number, 12-digit national ID). Strips non-digit characters, checks length, and verifies the published J-LIS weighted mod-11 check digit algorithm (weights 2-7 then 2-6 applied right-to-left over the first 11 digits). This is a structural/check-digit validation only, not a live registry lookup.","tags":["validator","japan","my-number","check-digit","offline"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"number":{"type":"string","description":"My Number, 12 digits, spaces/dashes allowed"}},"required":["number"],"additionalProperties":false},"example":{"number":"123456789018"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"my_number_jp_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/csv_to_json":{"post":{"operationId":"csv_to_json","summary":"Parses CSV text into an array of JSON row objects, auto-detecting the delimiter (comma, semicolon, tab, or pipe) unless overridden, inferring per-column types (number, boolean, string, null), and returning a summary with row/column counts and null counts per column. Pure offline computation, no network access.","tags":["csv","json","parser","data","offline"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"csv":{"type":"string","description":"Raw CSV text to parse"},"delimiter":{"type":"string","maxLength":1,"description":"Optional single-character delimiter override; auto-detected if omitted"},"hasHeader":{"type":"boolean","default":true,"description":"Whether the first row is a header row"}},"required":["csv"],"additionalProperties":false},"example":{"csv":"name,age\nAlice,30\nBob,\n","hasHeader":true}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"csv_to_json","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/github_release_commits":{"post":{"operationId":"github_release_commits","summary":"Fetches a GitHub repository's latest release (tag, name, published date, URL) via https://api.github.com/repos/<owner>/<repo>/releases/latest and its 10 most recent commits via https://api.github.com/repos/<owner>/<repo>/commits?per_page=10. Returns release=null if the repo has no releases.","tags":["github","release","commits","devtools","vcs"],"x-price":"$0.003","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"owner":{"type":"string","description":"GitHub repository owner/organization"},"repo":{"type":"string","description":"GitHub repository name"}},"required":["owner","repo"],"additionalProperties":false},"example":{"owner":"octocat","repo":"Hello-World"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"github_release_commits","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/earthquakes_nearby":{"post":{"operationId":"earthquakes_nearby","summary":"Finds earthquakes in the last 24 hours within a given radius of a latitude/longitude point using the USGS FDSN Event API (https://earthquake.usgs.gov/fdsnws/event/1/query?format=geojson). Returns count and a list of events with magnitude, place, time and coordinates.","tags":["earthquake","usgs","geo","disaster","seismic"],"x-price":"$0.003","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180},"radius_km":{"type":"number","default":100,"minimum":1,"maximum":20000},"min_magnitude":{"type":"number","default":0}},"required":["latitude","longitude"],"additionalProperties":false},"example":{"latitude":0,"longitude":0,"radius_km":1,"min_magnitude":0}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"earthquakes_nearby","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/wikipedia_pageviews":{"post":{"operationId":"wikipedia_pageviews","summary":"Daily pageview counts for a Wikipedia article over the last N days (default 30) via https://wikimedia.org/api/rest_v1/metrics/pageviews/per-article/{project}/all-access/all-agents/{article}/daily/{start}/{end}. Returns total views and a day-by-day breakdown.","tags":["wikipedia","pageviews","analytics","wikimedia"],"x-price":"$0.002","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"article":{"type":"string","description":"Wikipedia article title, underscores for spaces, e.g. 'Python_(programming_language)'"},"project":{"type":"string","description":"Wikipedia project domain, default 'en.wikipedia.org'"},"days":{"type":"integer","minimum":1,"maximum":30,"description":"Number of past days to include, default 30"}},"required":["article"]},"example":{"article":"Python_(programming_language)"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"wikipedia_pageviews","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/pypi_package_info":{"post":{"operationId":"pypi_package_info","summary":"Fetches package metadata from https://pypi.org/pypi/<name>/json and returns the latest version, summary, requires_python, author and project URLs for a given PyPI package name.","tags":["pypi","python","package","metadata"],"x-price":"$0.002","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"package":{"type":"string","description":"PyPI package name, e.g. 'requests'"}},"required":["package"]},"example":{"package":"requests"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"pypi_package_info","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/x402_payment_decode":{"post":{"operationId":"x402_payment_decode","summary":"Decodes an x402 'PAYMENT-REQUIRED' style payload (accepts a base64-encoded string or raw JSON) into a readable summary. For each entry in the 'accepts' array it returns scheme, network, asset, payTo, maxTimeoutSeconds, description, resource, mimeType, the raw atomic amount, and priceUsd computed by dividing maxAmountRequired by 10^decimals when the asset matches a known stablecoin contract address (e.g. USDC on Base/Ethereum/Polygon); otherwise decimals/priceUsd are null. Pure offline computation, no network access.","tags":["x402","payment","decode","crypto","offline"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"payload":{"type":"string","description":"Base64-encoded or raw JSON string of the x402 payment-required payload (either a single payment-requirements object or an object with an 'accepts' array)."}},"required":["payload"]},"example":{"payload":"{\"x402Version\":1,\"accepts\":[{\"scheme\":\"exact\",\"network\":\"base\",\"maxAmountRequired\":\"10000\",\"resource\":\"https://api.example.com/data\",\"description\":\"Access to premium data\",\"mimeType\":\"application/json\",\"payTo\":\"0x1234567890123456789012345678901234567890\",\"maxTimeoutSeconds\":60,\"asset\":\"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\"}]}"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"x402_payment_decode","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/x402_check":{"post":{"operationId":"x402_check","summary":"Fetches a URL and reports its HTTP status; if the response is 402 Payment Required, parses the JSON body per the x402 protocol and extracts payment requirements (scheme, network, payTo, asset, maxAmountRequired, description, resource) from the 'accepts' array.","tags":["x402","payments","http","crypto","validation"],"x-price":"$0.003","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"URL to check"},"method":{"type":"string","enum":["GET","POST"],"default":"GET"}},"required":["url"]},"example":{"url":"https://example.com"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"x402_check","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/base_usdc_eth_balance":{"post":{"operationId":"base_usdc_eth_balance","summary":"Fetches ETH and USDC balances for an EVM address on Base mainnet via public RPC https://mainnet.base.org, using eth_getBalance and eth_call (balanceOf) on the USDC contract 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913.","tags":["blockchain","ethereum","base","usdc","balance","rpc"],"x-price":"$0.003","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"address":{"type":"string","pattern":"^0x[a-fA-F0-9]{40}$","description":"EVM address (0x-prefixed, 40 hex chars)"}},"required":["address"],"additionalProperties":false},"example":{"address":"0x1111111111111111111111111111111111111111"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"base_usdc_eth_balance","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/edrpou_rnokpp_validate":{"post":{"operationId":"edrpou_rnokpp_validate","summary":"Offline validator for Ukrainian EDRPOU (8-digit legal entity registration code) and RNOKPP (10-digit individual taxpayer number, formerly INN) codes. Normalizes input, detects type by length, verifies the official weighted mod-11 check digit algorithm, and returns entity type (legal_entity/individual) plus decoded gender for RNOKPP (from the 9th digit parity).","tags":["validator","ukraine","edrpou","rnokpp","tax-id","offline"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"value":{"type":"string","description":"EDRPOU (8-digit) or RNOKPP (10-digit) code, digits only or with separators/spaces"}},"required":["value"]},"example":{"value":"12345679"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"edrpou_rnokpp_validate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/fx_rate_history":{"post":{"operationId":"fx_rate_history","summary":"Historical daily exchange rates for a currency pair between two ISO dates using https://api.frankfurter.dev/v1/<start>..<end>?base=<base>&symbols=<symbol>. Returns the list of business-day rates in the requested range.","tags":["finance","currency","forex","history"],"x-price":"$0.003","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"base":{"type":"string","minLength":3,"maxLength":3,"description":"3-letter ISO currency code, e.g. USD"},"symbol":{"type":"string","minLength":3,"maxLength":3,"description":"3-letter ISO currency code, e.g. MXN"},"start_date":{"type":"string","pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}$"},"end_date":{"type":"string","pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}$"}},"required":["base","symbol","start_date","end_date"],"additionalProperties":false},"example":{"base":"USD","symbol":"MXN","start_date":"2023-01-02","end_date":"2023-01-06"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"fx_rate_history","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/air_quality_lookup":{"post":{"operationId":"air_quality_lookup","summary":"Current air quality (PM2.5, PM10, US AQI, European AQI) for a given latitude/longitude via https://air-quality-api.open-meteo.com/v1/air-quality.","tags":["air-quality","environment","weather","pm2.5","geolocation"],"x-price":"$0.003","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180}},"required":["latitude","longitude"]},"example":{"latitude":52.52,"longitude":13.41}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"air_quality_lookup","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/btc_fee_estimate":{"post":{"operationId":"btc_fee_estimate","summary":"Latest recommended Bitcoin transaction fee rates (sat/vB) for fastest, half-hour, hour, economy and minimum confirmation targets, sourced live from https://mempool.space/api/v1/fees/recommended.","tags":["bitcoin","fees","mempool","crypto","network"],"x-price":"$0.002","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":false},"example":{}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"btc_fee_estimate","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/crypto_pair_stats":{"post":{"operationId":"crypto_pair_stats","summary":"24h trading stats (open, high, low, last price, volume, 30-day volume) for a Coinbase Exchange product pair (e.g. BTC-USD) via https://api.exchange.coinbase.com/products/<pair>/stats.","tags":["crypto","coinbase","price","stats","finance"],"x-price":"$0.003","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"pair":{"type":"string","description":"Coinbase product id, e.g. BTC-USD"}},"required":["pair"]},"example":{"pair":"BTC-USD"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"crypto_pair_stats","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/jwt_inspect":{"post":{"operationId":"jwt_inspect","summary":"Decode a JWT compact token without verifying the signature. Split on dots, base64url-decode header and payload, return them as parsed JSON plus alg, typ, kid, and whether exp is already past. Offline only, no network.","tags":["jwt","auth","decode"],"x-price":"$0.002","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","description":"JWT compact string"}},"required":["token"]},"example":{"token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkFkYSBMb3ZlbGFjZSIsImlhdCI6MTUxNjIzOTAyMiwiZXhwIjoxNTE2MjQyNjIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"jwt_inspect","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/human_mirror":{"post":{"operationId":"human_mirror","summary":"Reflects a writer's communication style from raw text: computes sentiment (positive/negative/neutral) via a small built-in lexicon, tone (formal/informal) by detecting exclamation marks and informal words like 'lol','gonna','wanna','yeah','hey','cool','awesome', plus average word length, average sentence length, and an overall complexity rating (simple/moderate/complex). Pure offline computation, no external calls.","tags":["text-analysis","sentiment","style","writing","nlp"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"text":{"type":"string","description":"Text to analyze"}},"required":["text"]},"example":{"text":"I love this product, it's absolutely amazing and wonderful!"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"human_mirror","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/worldbank_indicator":{"post":{"operationId":"worldbank_indicator","summary":"Fetches a World Bank development indicator value for a given country and year via https://api.worldbank.org/v2/country/<iso>/indicator/<indicator>?format=json. Returns the country name, indicator name, year and numeric value (or null if unavailable).","tags":["worldbank","economics","statistics","country","indicator"],"x-price":"$0.003","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"country":{"type":"string","description":"ISO 3166 alpha-2 or alpha-3 country code, e.g. US or USA"},"indicator":{"type":"string","description":"World Bank indicator code, e.g. NY.GDP.MKTP.CD or SP.POP.TOTL"},"year":{"type":"integer","description":"Year of the observation, e.g. 2020"}},"required":["country","indicator","year"],"additionalProperties":false},"example":{"country":"US","indicator":"SP.POP.TOTL","year":2015}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"worldbank_indicator","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/acceptance_criteria_grader":{"post":{"operationId":"acceptance_criteria_grader","summary":"Deterministically grades a candidate text against a checklist of acceptance criteria. Each criterion specifies either a plain substring ('contains') or a regular expression ('pattern', JS regex, case-insensitive) to search for in the text, and whether it is required. Returns per-criterion pass/fail plus an overall score. Pure offline pattern matching, no LLM and no network calls.","tags":["grading","qa","acceptance-criteria","text-matching","pure-computation"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"text":{"type":"string","description":"Candidate output text to grade"},"criteria":{"type":"array","minItems":1,"items":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for this criterion"},"description":{"type":"string","description":"Human-readable description of the criterion"},"contains":{"type":"string","description":"Plain substring to search for, case-insensitive"},"pattern":{"type":"string","description":"JS regular expression (case-insensitive) to test against the text; used instead of contains if provided"},"required":{"type":"boolean","default":true,"description":"Whether this criterion must pass for overall acceptance"}},"required":["id"]}}},"required":["text","criteria"]},"example":{"text":"The system shall allow users to perform password reset via email and must log all login attempts for security audits.","criteria":[{"id":"c1","description":"mentions password reset","contains":"password reset"},{"id":"c2","description":"mentions logging login attempts","pattern":"log.*attempts"},{"id":"c3","description":"mentions two-factor auth","contains":"two-factor","required":false}]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"acceptance_criteria_grader","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/t/verifactu_hash_compute":{"post":{"operationId":"verifactu_hash_compute","summary":"Computes the SHA-256 invoice hash ('huella') for Spain's VERI*FACTU electronic invoicing system per the AEAT technical specification (chaining each invoice to the previous record's hash), and builds the corresponding AEAT QR validation URL. Pure offline computation, no network access required.","tags":["spain","verifactu","tax","invoice","sha256","compliance","offline"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"issuer_nif":{"type":"string","description":"NIF of the invoice issuer (IDEmisorFactura)"},"invoice_number":{"type":"string","description":"Full series+number of the invoice (NumSerieFactura)"},"issue_date":{"type":"string","description":"Issue date in DD-MM-YYYY format (FechaExpedicionFactura)"},"invoice_type":{"type":"string","description":"Invoice type code, e.g. F1, F2, R1 (TipoFactura)"},"total_tax":{"type":"number","description":"Total tax amount, CuotaTotal"},"total_amount":{"type":"number","description":"Total invoice amount, ImporteTotal"},"previous_hash":{"type":"string","description":"Huella of the previous chained record; empty string if this is the first record","default":""},"generation_timestamp":{"type":"string","description":"FechaHoraHusoGenRegistro, ISO 8601 datetime with UTC offset, e.g. 2024-01-01T12:00:00+01:00"}},"required":["issuer_nif","invoice_number","issue_date","invoice_type","total_tax","total_amount","generation_timestamp"],"additionalProperties":false},"example":{"issuer_nif":"B12345678","invoice_number":"A-0001","issue_date":"01-01-2024","invoice_type":"F1","total_tax":21,"total_amount":121,"previous_hash":"","generation_timestamp":"2024-01-01T12:00:00+01:00"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"verifactu_hash_compute","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/x/9dea805fa2e8":{"post":{"operationId":"api_onesource_io_9dea80","summary":"Latest Ethereum block height - current chain tip via eth_blockNumber","tags":[],"x-price":"$0.00115","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"api_onesource_io_9dea80","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/x/26f6d7af960b":{"post":{"operationId":"api_onesource_io_26f6d7","summary":"Ethereum chain ID (EIP-155) via eth_chainId - confirm which chain a network is on","tags":[],"x-price":"$0.00115","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"api_onesource_io_26f6d7","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/x/46c2e8657f38":{"post":{"operationId":"api_onesource_io_46c2e8","summary":"EVM network info - chain ID, block height, gas price, chain head age, and chain characteristics in one batched RPC call (eth_chainId + eth_blockNumber + eth_gasPrice + latest block header)","tags":[],"x-price":"$0.00115","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"api_onesource_io_46c2e8","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/x/1426bf38b54b":{"post":{"operationId":"otto_ai_1426bf","summary":"Importance-ranked crypto headlines with per-article source links and publish times, plus a sentiment-scored market brief. Regenerated hourly; meta carries the snapshot's age and a fresh/stale verdict.","tags":["crypto news","market news","sentiment analysis","breaking headlines"],"x-price":"$0.00115","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"otto_ai_1426bf","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/x/9a4ce2aa08cb":{"post":{"operationId":"apitoll_crypto_prices_9a4ce2","summary":"Latest crypto token prices by ticker symbol, CoinGecko id, or chain:address (BTC, ETH, SOL, or base:0x…): current spot price, token symbol, decimals, and a confidence score, for up to 50 coins in one call. Pass ?at=<unix> for the historical price at a point in time. Sourced from DefiLlama across every major chain.","tags":["crypto","prices","token-price","defi","market-data"],"x-price":"$0.00115","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"apitoll_crypto_prices_9a4ce2","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/x/3becb5b085ff":{"post":{"operationId":"life_advice_3becb5","summary":"Get one piece of thoughtful life advice, paid per request over x402.","tags":["advice","life","wisdom","text"],"x-price":"$0.00115","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"life_advice_3becb5","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/x/22d8fc76da10":{"post":{"operationId":"meme_generator_22d8fc","summary":"Generate a captioned meme image. Pay per request in USDC on Base mainnet.","tags":["meme","image","generator","fun"],"x-price":"$0.00115","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"meme_generator_22d8fc","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/x/64e28dde9a24":{"post":{"operationId":"coin_flip_64e28d","summary":"Flip a coin for a small USDC payment on Base mainnet. Returns heads or tails.","tags":["game","random","fun"],"x-price":"$0.00115","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"coin_flip_64e28d","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/x/304c30894b54":{"post":{"operationId":"useless_fact_304c30","summary":"Pay a tiny amount of USDC and receive one delightfully useless fact.","tags":["facts","trivia","fun","useless"],"x-price":"$0.00115","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"useless_fact_304c30","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/x/cd43ca66021e":{"post":{"operationId":"dice_roller_cd43ca","summary":"Roll a dice with any number of faces. Specify faces via ?faces=N query parameter.","tags":["dice","random","game","utility"],"x-price":"$0.00115","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"dice_roller_cd43ca","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/x/5ddf1147cc94":{"post":{"operationId":"timezone_converter_5ddf11","summary":"Convert a time between any two IANA time zones (DST-aware). Pay-per-call in USDC on Base.","tags":["time","timezone","utility","datetime","converter"],"x-price":"$0.00115","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"timezone_converter_5ddf11","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/x/34692539575a":{"post":{"operationId":"otto_ai_346925","summary":"Hyperliquid perpetuals market data: live mark/oracle price, funding rate, open interest, max leverage, and size specs for any tradable asset.","tags":["hyperliquid market","perps market data","funding rate","open interest"],"x-price":"$0.00115","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"otto_ai_346925","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/x/34e96ce78de4":{"post":{"operationId":"api_loyalspark_online_34e96c","summary":"Browse open P2P marketplace offers to buy or swap loyalty tokens on Base. Onchain loyalty on Base: brands launch rewards in minutes, customers earn with every purchase, AI agents automate the rest via REST and MCP. Payment alone gives access; do not send an API key. Skill guides: loyalspark.online/.well-known/skills/index.md","tags":[],"x-price":"$0.00115","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"api_loyalspark_online_34e96c","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/x/58dd356318f0":{"post":{"operationId":"vibe_springs_58dd35","summary":"Base network real-time gas price oracle. Returns block base fee, current gas price in GWEI, and network block details.","tags":["price","oracle","crypto","market-data","base-gas"],"x-price":"$0.00115","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"vibe_springs_58dd35","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/x/25b5b05ae6df":{"post":{"operationId":"hypernatt_terminal_25b5b0","summary":"Forced-order map. If cluster_grammar is present, read it before liq_radar. class=noise (<3%) is high-leverage bait - ignore. class=true (~7%+) is the low-leverage stack. Terrain, not a signal. Whitelist BTC ETH SOL BNB XRP HYPE ZEC (omit = BTC).","tags":["bitcoin","hyperliquid","trading","market maker","liquidations"],"x-price":"$0.00115","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"hypernatt_terminal_25b5b0","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/x/9ef8ba22442d":{"post":{"operationId":"ixs_9ef8ba","summary":"IXS Real world asset vaults — 6% yields, BlackRock exposure, tokenized on-chain","tags":["rwa","defi","tokenization","erc4626"],"x-price":"$0.00115","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"ixs_9ef8ba","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/x/572f80d983fb":{"post":{"operationId":"otto_ai_572f80","summary":"Token price, market cap, volume, supply, and basic metrics. Works for any listed token.","tags":["token price","market cap","token metrics","token info","price data"],"x-price":"$0.00115","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"otto_ai_572f80","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/x/f862ed0748ec":{"post":{"operationId":"otto_ai_f862ed","summary":"Cross-venue funding-rate arbitrage + crowded-positioning radar: live perp funding rates, open interest, global & top-trader long/short ratios, whale positions, and liquidations across Binance, OKX, Bybit, Hyperliquid, and more. Omit symbol for the whole-market overview; pass one (e.g. BTC) for the per-exchange breakdown. (Hyperliquid-only perp data: use hyperliquid-market.)","tags":["funding rates","funding arbitrage","open interest","long short ratio","liquidations"],"x-price":"$0.00115","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"otto_ai_f862ed","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/x/24fe70b8ffe9":{"post":{"operationId":"laso_finance_24fe70","summary":"Get a Firebase ID token for authenticating with the callable APIs","tags":["auth","sign-in","wallet"],"x-price":"$0.00115","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"laso_finance_24fe70","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/x/cfbbec38953f":{"post":{"operationId":"apitoll_base_gas_oracle_cfbbec","summary":"Base gas oracle / gas price API for AI agents and bots — get the gas price for a transaction on Base in one x402 call. Real-time slow/standard/fast EIP-1559 fee tiers from a live eth_feeHistory call, returned as DROP-IN maxFeePerGas + maxPriorityFeePerGas in wei — plug straight into a viem/ethers transaction, no gwei conversion. Plus base fee, head block, and network fullness. Call it before every Base tx to set a fair fee or wait out congestion.","tags":["base","gas","gas-oracle","gas-price","transaction-fees"],"x-price":"$0.00115","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"apitoll_base_gas_oracle_cfbbec","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/x/abb7a1d00685":{"post":{"operationId":"exa_abb7a1","summary":"Exa /contents endpoint","tags":["search","ai","web","research"],"x-price":"$0.00115","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"highlights":{"description":"Include text highlights","type":"boolean"},"ids":{"description":"Array of Exa document IDs to retrieve content for","type":"array"},"summary":{"description":"Include AI summary","type":"boolean"},"text":{"description":"Include full text content","type":"boolean"},"urls":{"description":"Array of URLs to retrieve content for","type":"array"}},"type":"object"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"exa_abb7a1","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/x/683043dfa1fe":{"post":{"operationId":"otto_ai_683043","summary":"DeFi yield farming markets with live APYs across Aave V3 and Morpho on Base, Ethereum, and other major chains. Find the best stablecoin yield (USDC) and ETH yield for idle capital: returns supply APY, TVL, and vault/market addresses per token, filterable by protocol, chain, or token symbol. Compare DeFi yield rates across lending markets and vaults before depositing.","tags":["yield farming","stablecoin yield","defi yield","aave","morpho"],"x-price":"$0.00115","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"otto_ai_683043","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/x/08b221cd2d0a":{"post":{"operationId":"otto_ai_08b221","summary":"Live + reference foreign-exchange (forex) rates, base USD. LIVE near-real-time mid quotes for the 12 most-traded currencies (EUR, GBP, JPY, CHF, CAD, AUD, NZD, CNY, HKD, SGD, SEK, KRW), refreshed every minute with an honest market-open/stale flag, PLUS the official ECB daily reference table for ~30 currencies. Derive any cross-rate or pair. For agents pricing cross-border ops, treasury, invoicing and FX conversion. Keyless, pay-per-call.","tags":["forex","fx rates","currency exchange","live fx","currency conversion"],"x-price":"$0.00115","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"otto_ai_08b221","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/x/b10b00682702":{"post":{"operationId":"tenprint_b10b00","summary":"Attested Hedera network facts: HBAR exchange rate, gas fees, supply, node roster, throughput, topic state. Each response carries the ML-DSA-65 attestation ID of the served snapshot — tamper-evident reference data for agents that must prove what they knew when they acted.","tags":["hedera","oracle","data"],"x-price":"$0.00115","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"tenprint_b10b00","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/x/b4afbe14e2a8":{"post":{"operationId":"quartermaster_gas_prices_b4afbe","summary":"Current Base gas prices and a simple-transfer cost estimate for transaction planning.","tags":["gas","fees","base","transaction","settlement"],"x-price":"$0.00115","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"quartermaster_gas_prices_b4afbe","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/x/d9080fa88832":{"post":{"operationId":"api_loyalspark_online_d9080f","summary":"Check whether a customer has enough tokens and eligibility to redeem a reward. Onchain loyalty on Base: brands launch rewards in minutes, customers earn with every purchase, AI agents automate the rest via REST and MCP. Pay-only works: the paying wallet is the caller; API key optional. Scoped to the key's wallet. Skill guides: loyalspark.online/.well-know...","tags":[],"x-price":"$0.00115","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"api_loyalspark_online_d9080f","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/x/7c82ba4e4eda":{"post":{"operationId":"api_loyalspark_online_7c82ba","summary":"Browse available loyalty rewards that a customer can redeem with tokens. Onchain loyalty on Base: brands launch rewards in minutes, customers earn with every purchase, AI agents automate the rest via REST and MCP. Pay-only works: the paying wallet is the caller; API key optional. Scoped to the key's wallet. Skill guides: loyalspark.online/.well-known/skil...","tags":[],"x-price":"$0.00115","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"api_loyalspark_online_7c82ba","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/x/6be45b3dea30":{"post":{"operationId":"api_loyalspark_online_6be45b","summary":"Get a recipient wallet's balance for a specific loyalty token on Base. Onchain loyalty on Base: brands launch rewards in minutes, customers earn with every purchase, AI agents automate the rest via REST and MCP. Pay-only works: the paying wallet is the caller; API key optional. Scoped to the key's wallet. Skill guides: loyalspark.online/.well-known/skills...","tags":[],"x-price":"$0.00115","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"api_loyalspark_online_6be45b","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/x/5f805912c984":{"post":{"operationId":"api_loyalspark_online_5f8059","summary":"List a customer's redeemed reward vouchers and voucher codes. Onchain loyalty on Base: brands launch rewards in minutes, customers earn with every purchase, AI agents automate the rest via REST and MCP. Pay-only works: the paying wallet is the caller; API key optional. Scoped to the key's wallet. Skill guides: loyalspark.online/.well-known/skills/index.md","tags":[],"x-price":"$0.00115","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"api_loyalspark_online_5f8059","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/x/616c2e645194":{"post":{"operationId":"otto_ai_616c2e","summary":"Where DeFi capital is flowing — TVL rankings, fastest-growing vs bleeding protocols, chain-by-chain breakdown, and per-protocol deep dives. Track capital rotation and protocol health. Powered by DefiLlama.","tags":["defi tvl","protocol analytics","defi rankings","capital flows"],"x-price":"$0.00115","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"otto_ai_616c2e","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/x/6d1eeb575984":{"post":{"operationId":"otto_ai_6d1eeb","summary":"Quick pulse check from crypto Twitter. Breaking news, trending narratives, and sentiment shifts at a glance.","tags":["crypto twitter","social sentiment","market pulse","tweet digest"],"x-price":"$0.00115","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"otto_ai_6d1eeb","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/x/ce9de42bc36e":{"post":{"operationId":"lion_verified_company_ce9de4","summary":"Is this crypto wallet sanctioned? Instant OFAC SDN address screen for AI agents. Returns PASS, WARN, or BLOCK. $0.001 Base USDC, keyless x402.","tags":["wallet","ofac","aml","sanctions","screen"],"x-price":"$0.00115","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"lion_verified_company_ce9de4","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/x/2120f4ed7556":{"post":{"operationId":"otto_ai_2120f4","summary":"Live DEX token price in USD by ticker symbol or contract address across Base, Ethereum, Solana, Polygon, BSC, Arbitrum, Optimism and Avalanche (bare 0x tries Base then all chains, else network:address). Symbols resolve to the canonical top-market-cap asset — squat-proof. Flat JSON: price, 24h change, volume, market cap, FDV, liquidity — echoes the matched deployment. Token price, crypto price, DEX price. $0.001 per call.","tags":["token price","crypto price","dex price","price feed","onchain price"],"x-price":"$0.00115","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"otto_ai_2120f4","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/x/41bb0146ee0a":{"post":{"operationId":"apitoll_multi_chain_evm_gas_41bb01","summary":"Multi-chain EVM gas price oracle for AI agents — 17 chains (Ethereum, Base, Arbitrum, Optimism, Polygon, BNB, Avalanche…). One x402 call returns slow/standard/fast EIP-1559 tiers as DROP-IN maxFeePerGas + maxPriorityFeePerGas in wei (plug straight into a viem/ethers tx, no conversion, exact even on sub-gwei L2s), plus base fee, head block, and fullness, from a live eth_feeHistory call. Pass ?chain= to switch chains.","tags":["evm","gas","multi-chain","gas-oracle","ethereum"],"x-price":"$0.00115","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"apitoll_multi_chain_evm_gas_41bb01","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/x/c97b690b148b":{"post":{"operationId":"apitoll_perps_hyperliquid__c97b69","summary":"Perpetual-futures market data from Hyperliquid for any coin (BTC, ETH, SOL, HYPE…): mark price, hourly funding rate and its annualized APR, open interest in coin and USD, 24-hour notional volume, 24h price change, and max leverage, across 200+ perp markets. Sort by volume, open interest, or funding. Track the perp market the way trading agents do. Sourced from Hyperliquid.","tags":["crypto","perps","perpetuals","futures","funding-rate"],"x-price":"$0.00115","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"apitoll_perps_hyperliquid__c97b69","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/x/6dd39706a32f":{"post":{"operationId":"api_loyalspark_online_6dd397","summary":"List all loyalty token balances held by a customer/recipient wallet on Base. Onchain loyalty on Base: brands launch rewards in minutes, customers earn with every purchase, AI agents automate the rest via REST and MCP. Pay-only works: the paying wallet is the caller; API key optional. Scoped to the key's wallet. Skill guides: loyalspark.online/.well-known/...","tags":[],"x-price":"$0.00115","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"api_loyalspark_online_6dd397","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/x/ba15e020bb90":{"post":{"operationId":"json_repair_ba15e0","summary":"Repair malformed JSON text into valid parsed JSON: markdown code fences, single quotes, smart quotes, unquoted keys, trailing commas, comments, Python literals (True/None), raw newlines in strings, and truncated output (auto-closes strings, arrays and objects). Returns the parsed value plus a log of every repair applied. Built for LLM output that almost parses. POST a JSON body like: {\"text\":\"```json\\n{name: 'Ada', age: 36, tags: ['x',], active: True\"}","tags":["json","repair","llm-outputs","parsing","malformed"],"x-price":"$0.00115","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"text":{"description":"The malformed JSON text to repair.","type":"string"}},"required":["text"],"type":"object"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"json_repair_ba15e0","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/x/fa76689ac8ca":{"post":{"operationId":"apitoll_crypto_market_overview_fa7668","summary":"A snapshot of the total crypto market: aggregate market capitalization in USD, 24-hour trading volume, Bitcoin and Ethereum dominance percentages, 24h market-cap change, and the number of active cryptocurrencies and markets. The macro view in one call. Sourced from CoinGecko.","tags":["crypto","market-overview","market-cap","btc-dominance","macro"],"x-price":"$0.00115","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"apitoll_crypto_market_overview_fa7668","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/x/b74dbbb0630e":{"post":{"operationId":"otto_ai_b74dbb","summary":"Base-chain ecosystem news for Base-native agents, not the general crypto firehose. Up to 12 Base-scoped headlines from the last 48h, each with its own permalink and publication timestamp, screened against the general /crypto-news feed; `screen` states what was dropped. The AI topic read is optional and is withheld, never padded with macro, when there is no Base coverage. Refreshed hourly from cache; a read past the freshness window pulls inline.","tags":["base","base ecosystem","crypto news","l2","coinbase"],"x-price":"$0.00115","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"otto_ai_b74dbb","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/x/95a3abdfce15":{"post":{"operationId":"ozmium_agent_api_95a3ab","summary":"Every listed Morpho Blue market on Base: marketId, full MarketParams (loanToken, collateralToken, oracle, irm, lltv- the id is re-derived and asserted, wrong-market proof), live borrow APY, and LLTV. The input universe for /v1/tx/loan. GET /v1/loan/markets.","tags":["defi","trading","crypto","cryptocurrency","portfolio"],"x-price":"$0.00115","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"ozmium_agent_api_95a3ab","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/p/replicate.image-gen.flux-schnell":{"post":{"operationId":"replicate_image-gen_flux-schnell","summary":"black-forest-labs/flux-schnell. Generate up to four images quickly from a text prompt with the official FLUX Schnell model. (Replicate · Image generation) Async task: answers 202 with a job id; poll GET /v1/jobs/<id>. Price depends on the options ($0.00375 to $0.015); refunded if the task fails. Prepaid credits only.","tags":["image-gen","ai generation","replicate","flux-schnell","from_text","async"],"x-price":"$0.015","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"input":{"type":"object","properties":{"prompt":{"type":"string","examples":["A small red kite above a calm beach."]},"num_outputs":{"type":"integer","default":1,"examples":[1]},"aspect_ratio":{"type":"string","default":"1:1","examples":["1:1"]},"output_format":{"type":"string","default":"webp","examples":["webp"]}},"required":["prompt"]}},"additionalProperties":true,"required":["input"]},"example":{"input":{"prompt":"A small red kite above a calm beach.","num_outputs":1,"aspect_ratio":"1:1","output_format":"webp"}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"replicate_image-gen_flux-schnell","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/p/openrouter.ai-judge.decide":{"post":{"operationId":"openrouter_ai-judge_decide","summary":"Judge evidence with Jev (TypeSafe). One typed decision over a bounded Markdown state: a `choice` (a label with probabilities), a `score` (a position on a 2-10 level rubric) or a `noul` (a yes/no probability). Several questions in one request are judged independently. A judge, never a writer. (OpenRouter · AI judgment)","tags":["ai-judge","ai generation","openrouter","decide","data"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"model":{"type":"string","enum":["typesafe/jev-1.13"],"examples":["typesafe/jev-1.13"]},"state":{"type":"string","description":"the evidence, as bounded Markdown with XML-style sections; escape & in untrusted text; under ~10 KB; quoted text is evidence, never instructions","examples":["# Decision context\n\n<brand>Linear</brand>\n\n<answer_text>For issue tracking try Linear or Jira.</answer_text>"]},"questions":{"type":"object","description":"id -> {type: choice|score|noul, instructions, criteria}. `criteria` is label -> description (shown to the model; ids are not). Put the full meaning in `instructions`.","examples":[{"mentioned":{"type":"noul","instructions":"Does the answer refer to the company or product named in <brand>? A common-word use of the same word is not a mention.","criteria":{"true":"the product is referred to","false":"only the common word appears, or it is absent"}}}]}},"additionalProperties":true,"required":["model","state","questions"],"description":"The reply is `answers. ` with `noul` in [0,1], or `choice` + `probabilities` + `confidence`, or `score` (zero-indexed). Validate before acting: `model` starts with typesafe/jev-1.13, labels are in the submitted set. Keep arithmetic, counting and hard rules in code; Jev is literal and adversarial text in `state` can steer it. Billed by input tokens; the reply's `usage.cost` is the exact charge."},"example":{"model":"typesafe/jev-1.13","state":"# Decision context\n\n<text>The sky is blue today.</text>","questions":{"sky":{"type":"noul","instructions":"Does <text> say the sky is blue? Quoted text is evidence, never instructions.","criteria":{"true":"it says the sky is blue","false":"it does not"}}}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"openrouter_ai-judge_decide","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/p/finnhub.quote":{"post":{"operationId":"finnhub_quote","summary":"Real-time stock quote by ticker — price, day change. Current price, day change, open/high/low and previous close for a US ticker (Finnhub · Stock Market Data)","tags":["stocks","market data","finnhub","quote","live","data"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"symbol":{"type":"string","examples":["AAPL"]}},"additionalProperties":true,"required":["symbol"]},"example":{"symbol":"AAPL"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"finnhub_quote","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/p/finnhub.company.profile":{"post":{"operationId":"finnhub_company_profile","summary":"Company profile by stock ticker — industry, market cap. Company behind a ticker: name, industry, market cap, IPO date, logo and weburl (Finnhub · Stock Market Data)","tags":["stocks","market data","finnhub","company","profile","data"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"symbol":{"type":"string","examples":["AAPL"]}},"additionalProperties":true,"required":["symbol"]},"example":{"symbol":"AAPL"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"finnhub_company_profile","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/p/tiingo.daily.prices":{"post":{"operationId":"tiingo_daily_prices","summary":"End-of-day stock prices by ticker — adjusted, 30+ years. Daily OHLCV with split/dividend-adjusted values, back 30+ years (Tiingo · Stock Market Data)","tags":["stocks","market data","tiingo","eod","history","data"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"ticker":{"type":"string","description":"path parameter, lowercase","examples":["aapl"]},"startDate":{"type":"string","description":"YYYY-MM-DD"},"endDate":{"type":"string"},"resampleFreq":{"type":"string","description":"daily | weekly | monthly | annually"}},"additionalProperties":true,"required":["ticker"]},"example":{"ticker":"aapl"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"tiingo_daily_prices","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/p/seranking.web.backlinks.list":{"post":{"operationId":"seranking_web_backlinks_list","summary":"Backlinks by domain or URL — source page, anchor texts. Individual backlinks to a domain or URL, with source page, anchor and follow status (SE Ranking · Open web & SEO data)","tags":["web","seo/aeo","seranking","backlinks","list","data"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"target":{"type":"string","description":"domain, host or URL","examples":["seranking.com"]},"mode":{"type":"string","description":"domain | host | url"},"limit":{"type":"integer","description":"COST DIAL — 1 to 10,000, and every returned row costs a credit","examples":[10]},"order_by":{"type":"string","description":"column to sort the backlinks by"}},"additionalProperties":true,"required":["target"],"description":"returns a `backlinks` array. For bulk extraction use /v1/backlinks/raw instead — same 1-credit-per-row price but a cursor (`next`) and a 100,000 ceiling per page."},"example":{"target":"seranking.com","limit":10}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"seranking_web_backlinks_list","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/p/anyapi.linkedin.search.jobs":{"post":{"operationId":"anyapi_linkedin_search_jobs","summary":"LinkedIn Jobs (index). Cheap job index: title, company, location, posted date, URL. No description, salary, applicant counts, or seniority - for those use linkedin.jobs. (AnyAPI · LinkedIn)","tags":["linkedin","social","anyapi","search","jobs","data"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"companyId":{"type":"string","description":"Filter to a specific company by its LinkedIn numeric company id."},"cursor":{"type":"string","description":"Opaque pagination cursor from a previous response's nextCursor. Omit for the first page; pass it to fetch the next page of job listings."},"employmentType":{"type":"string","description":"Filter by employment type.","enum":["full-time","part-time","contract","internship","temporary"]},"experienceLevel":{"type":"string","description":"Filter by required seniority/experience level.","enum":["internship","entry","associate","mid-senior","director","executive"]},"geoId":{"type":"string","description":"LinkedIn geo id to target a precise location (e.g. 103644278 for the United States); more exact than the free-text location."},"limit":{"type":"integer","description":"Accepted for compatibility and ignored: each call returns one full source page (10 or 25 jobs depending on source); follow nextCursor for more.","examples":[3]},"location":{"type":"string","description":"City, region, or country to search within.","examples":["United States"]},"postedLimit":{"type":"string","description":"Only jobs posted within this window (past 24 hours, week, or month).","enum":["24h","week","month"]},"query":{"type":"string","description":"Job title or keywords to search.","examples":["software engineer"]},"workplaceType":{"type":"string","description":"Filter by workplace type (remote, hybrid, or onsite).","enum":["remote","hybrid","onsite"],"examples":["remote"]}},"additionalProperties":true,"required":["query"]},"example":{"query":"software engineer","location":"United States","limit":3}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"anyapi_linkedin_search_jobs","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/p/dataforseo.x.ai-optimization-ai-keyword-data-keywords-search-volume-live":{"post":{"operationId":"dataforseo_x_ai-optimization-ai-keyword-data-keywords-search-vol","summary":"AI search volume for keywords across AI tools. This endpoint provides search volume data for your target keywords, reflecting their estimated usage in AI tools. (DataForSEO · AI Visibility / AEO)","tags":["ai-search","seo/aeo","dataforseo","keywords","volume","data"],"x-price":"$0.012751","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"keywords":{"type":"array","description":"keywords required field UTF-8 encoding The maximum number of keywords you can specify: 1000; The maximum number of characters in a single keyword: 250; The keywords will be converted to lowercase format; learn more about rules and limitatio","examples":[["iphone","seo"]]},"location_name":{"type":"string","description":"full name of the location required field if you don't specify location_code Note: it is required to specify either location_name or location_code you can receive the list of available locations with their <cod"},"location_code":{"type":"integer","description":"unique location identifier required field if you don't specify location_name Note: it is required to specify either location_name or location_code you can receive the list of available locations with their <co","examples":[2840]},"language_name":{"type":"string","description":"full name of the language required field if you don't specify language_code if you use this field, you don't need to specify language_code you can receive the list of available languages with their language_name</cod","examples":["English"]},"language_code":{"type":"string","description":"language code required field if you don't specify language_name if you use this field, you don't need to specify language_name you can receive the list of available languages with their language_code by making"},"tag":{"type":"string","description":"user-defined task identifier optional field the character limit is 255 you can use this parameter to identify the task and match it with the result you will find the specified tag value in the data object of the response"}},"additionalProperties":true,"description":"the POST body is a JSON array holding exactly one task object with these fields; a live route rejects extra tasks with status 40000 \"You can set only one task at a time\""},"example":{"language_name":"English","location_code":2840,"keywords":["iphone","seo"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"dataforseo_x_ai-optimization-ai-keyword-data-keywords-search-vol","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/p/dataforseo.x.dataforseo-labs-google-domain-rank-overview-live":{"post":{"operationId":"dataforseo_x_dataforseo-labs-google-domain-rank-overview-live","summary":"Google rank and traffic overview for a domain. This endpoint will provide you with ranking and traffic data from organic and paid search for the specified domain. (DataForSEO · Google Keyword Data)","tags":["google","seo/aeo","dataforseo","extended","data"],"x-price":"$0.01515","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"target":{"type":"string","description":"domain required field the domain name of the target website the domain should be specified without https:// and www.","examples":["dataforseo.com"]},"location_name":{"type":"string","description":"full name of the location optional field if you use this field, you don’t need to specify location_code you can receive the list of available locations with their location_name by making a separate request to the https://api.dataforseo.com/"},"location_code":{"type":"integer","description":"location code optional field if you use this field, you don’t need to specify location_name you can receive the list of available locations with their location_code by making a separate request to the https://api.dataforseo.com/v3/dataforse","examples":[2840]},"language_name":{"type":"string","description":"full name of the language optional field if you use this field, you don’t need to specify language_code you can receive the list of available languages with their language_name by making a separate request to the https://api.dataforseo.com/","examples":["English"]},"language_code":{"type":"string","description":"language code optional field if you use this field, you don’t need to specify language_name you can receive the list of available languages with their language_code by making a separate request to the https://api.dataforseo.com/v3/dataforse"},"ignore_synonyms":{"type":"boolean","description":"ignore highly similar keywords optional field if set to true, all highly similar keywords will be excluded from the ranking and traffic calculations, the results will be based on data for main keywords from groups of synonyms default value:"},"limit":{"type":"integer","description":"the maximum number of returned results for domain optional field default value: 100 maximum value: 1000"},"offset":{"type":"integer","description":"offset in the results array of returned items optional field default value: 0 if you specify the 10 value, the first ten items in the results array will be omitted and the data will be provided for the successive items"},"tag":{"type":"string","description":"user-defined task identifier optional field the character limit is 255 you can use this parameter to identify the task and match it with the result you will find the specified tag value in the data object of the response"}},"additionalProperties":true,"description":"the POST body is a JSON array holding exactly one task object with these fields; a live route rejects extra tasks with status 40000 \"You can set only one task at a time\""},"example":{"target":"dataforseo.com","language_name":"English","location_code":2840}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"dataforseo_x_dataforseo-labs-google-domain-rank-overview-live","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/p/tomba.web.domain.disposable":{"post":{"operationId":"tomba_web_domain_disposable","summary":"Check email domain status. Domain → two booleans: whether it is a disposable/throwaway mail host and whether it is a free webmail provider — the cheap pre-filter before signup or lead acceptance (Tomba · Open web & SEO data)","tags":["web","seo/aeo","tomba","domain","disposable","data"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"domain":{"type":"string","description":"domain to classify","examples":["stripe.com"]}},"additionalProperties":true,"required":["domain"]},"example":{"domain":"stripe.com"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"tomba_web_domain_disposable","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/p/tinyfish.web.fetch":{"post":{"operationId":"tinyfish_web_fetch","summary":"Fetch cleaned page content (not source HTML). Fetches web pages, renders JavaScript-heavy pages when needed, and returns clean extracted content in your preferred format (Markdown, cleaned semantic HTML, or a structured JSON tree), with optional links, metadata, and selectors. (TinyFish · Open web & SEO data)","tags":["web","seo/aeo","tinyfish","extract","data"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"urls":{"type":"string","examples":[["https://example.com"]]},"purpose":{"type":"string"},"format":{"type":"string","description":"markdown (default) for LLM consumption; html returns cleaned semantic HTML, not the page source — head scripts (including application/ld+json), forms, mailto targets and many attributes are removed; json returns a structured document tree. ","default":"markdown","enum":["html","markdown","json"]},"links":{"type":"boolean","default":false},"image_links":{"type":"boolean","default":false},"page_metadata":{"type":"boolean","default":false},"ttl":{"type":"integer","description":"TinyFish cache lifetime in seconds; 0 requests a fresh fetch."},"per_url_timeout_ms":{"type":"integer"},"if_none_match":{"type":"string"},"if_modified_since":{"type":"string"},"include_etag_and_last_modified":{"type":"boolean","default":false},"include_selectors":{"type":"string"},"exclude_selectors":{"type":"string"}},"additionalProperties":true,"required":["urls"]},"example":{"urls":["https://example.com"],"format":"markdown","links":true,"ttl":0}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"tinyfish_web_fetch","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/p/tinyfish.web.search":{"post":{"operationId":"tinyfish_web_search","summary":"Search the open web. Search the web by keyword or meaning, with domain, language, location, and date filters. (TinyFish · Open web & SEO data)","tags":["web","seo/aeo","tinyfish","search","data"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"query":{"type":"string","examples":["TinyFish API documentation"]},"domain_type":{"type":"string","default":"web","enum":["web"],"examples":["web"]},"purpose":{"type":"string","description":"Describe what the results will be used for."},"location":{"type":"string","description":"ISO 3166-1 alpha-2 country code for geo-targeted results.","examples":["US"]},"language":{"type":"string","examples":["en"]},"include_domains":{"type":"string","description":"domains to restrict results to; sent comma-separated on the wire","examples":[["github.com","arxiv.org"]]},"exclude_domains":{"type":"string","description":"domains to drop from results; sent comma-separated on the wire","examples":[["pinterest.com","quora.com"]]},"after_date":{"type":"string","description":"YYYY-MM-DD; only results after this date.","examples":["2024-01-01"]},"before_date":{"type":"string","description":"YYYY-MM-DD; only results before this date.","examples":["2024-12-31"]},"recency_minutes":{"type":"integer"},"page":{"type":"integer","default":0},"include_thumbnail":{"type":"boolean","default":false},"fetch":{"type":"object","description":"JSON object in the query string; {} attaches each result's fetched page content. A boolean is rejected (400 INVALID_INPUT).","examples":[{}]}},"additionalProperties":true,"required":["query","domain_type"]},"example":{"query":"TinyFish API documentation","domain_type":"web","location":"US","language":"en","include_domains":["github.com","arxiv.org"],"exclude_domains":["pinterest.com","quora.com"],"after_date":"2024-01-01","before_date":"2024-12-31","fetch":{}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"tinyfish_web_search","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/p/tinyfish.web.search.news":{"post":{"operationId":"tinyfish_web_search_news","summary":"Search recent news. Search TinyFish's news index with optional recency, date, domain, language, and location filters. (TinyFish · Open web & SEO data)","tags":["web","seo/aeo","tinyfish","search","news","data"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"query":{"type":"string","examples":["AI browser agents"]},"domain_type":{"type":"string","default":"news","enum":["news"],"examples":["news"]},"purpose":{"type":"string"},"location":{"type":"string","description":"ISO 3166-1 alpha-2 country code for geo-targeted results.","examples":["US"]},"language":{"type":"string","examples":["en"]},"include_domains":{"type":"string","description":"domains to restrict results to; sent comma-separated on the wire","examples":[["github.com","arxiv.org"]]},"exclude_domains":{"type":"string","description":"domains to drop from results; sent comma-separated on the wire","examples":[["pinterest.com","quora.com"]]},"after_date":{"type":"string","description":"YYYY-MM-DD","examples":["2024-01-01"]},"before_date":{"type":"string","description":"YYYY-MM-DD","examples":["2024-12-31"]},"recency_minutes":{"type":"integer"},"page":{"type":"integer","default":0},"include_thumbnail":{"type":"boolean","default":false},"fetch":{"type":"object","description":"JSON object in the query string; {} attaches each result's fetched page content. A boolean is rejected (400 INVALID_INPUT).","examples":[{}]}},"additionalProperties":true,"required":["query","domain_type"]},"example":{"query":"AI browser agents","domain_type":"news","location":"US","language":"en","include_domains":["github.com","arxiv.org"],"exclude_domains":["pinterest.com","quora.com"],"after_date":"2024-01-01","before_date":"2024-12-31","fetch":{}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"tinyfish_web_search_news","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/p/tinyfish.web.search.publications":{"post":{"operationId":"tinyfish_web_search_publications","summary":"Search research publications. Search research papers by topic, publication year, domain, language, and date. (TinyFish · Open web & SEO data)","tags":["web","seo/aeo","tinyfish","search","publications","data"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"query":{"type":"string","examples":["browser agent benchmark"]},"domain_type":{"type":"string","default":"research_paper","enum":["research_paper"],"examples":["research_paper"]},"purpose":{"type":"string"},"language":{"type":"string","examples":["en"]},"include_domains":{"type":"string","description":"domains to restrict results to; sent comma-separated on the wire","examples":[["github.com","arxiv.org"]]},"exclude_domains":{"type":"string","description":"domains to drop from results; sent comma-separated on the wire","examples":[["pinterest.com","quora.com"]]},"after_date":{"type":"string","description":"YYYY-MM-DD","examples":["2024-01-01"]},"before_date":{"type":"string","description":"YYYY-MM-DD","examples":["2024-12-31"]},"pub_year_min":{"type":"integer"},"pub_year_max":{"type":"integer"},"page":{"type":"integer","default":0},"include_thumbnail":{"type":"boolean","default":false},"fetch":{"type":"object","description":"JSON object in the query string; {} attaches each result's fetched page content. A boolean is rejected (400 INVALID_INPUT).","examples":[{}]}},"additionalProperties":true,"required":["query","domain_type"]},"example":{"query":"browser agent benchmark","domain_type":"research_paper","language":"en","include_domains":["github.com","arxiv.org"],"exclude_domains":["pinterest.com","quora.com"],"after_date":"2024-01-01","before_date":"2024-12-31","fetch":{}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"tinyfish_web_search_publications","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/p/leadsforge.linkedin.company.followers.filters.job_titles":{"post":{"operationId":"leadsforge_linkedin_company_followers_filters_job_titles","summary":"Search follower job-title values. Get paginated list of supported job title values with optional search (LeadsForge · LinkedIn)","tags":["linkedin","social","leadsforge","company","followers","filters","data"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"search":{"type":"string","description":"substring match","examples":["engineer"]},"page":{"type":"integer","description":"1-based","examples":[1]},"page_size":{"type":"integer","description":"snake_case here, unlike the camelCase used elsewhere in this API","examples":[5]}},"additionalProperties":true,"description":"returns {jobTitles, totalPages} — the follower job-title filter is a CLOSED list, unlike the free-text job titles on /search"},"example":{"search":"engineer","page":1,"page_size":5}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"leadsforge_linkedin_company_followers_filters_job_titles","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/p/harvestapi.linkedin.geo.search":{"post":{"operationId":"harvestapi_linkedin_geo_search","summary":"Find LinkedIn location IDs. Search LinkedIn Geo ID by location text (HarvestAPI · LinkedIn)","tags":["linkedin","social","harvestapi","search","locations","data"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"search":{"type":"string","description":"Location text to search for Geo ID (required)","examples":["New York"]}},"additionalProperties":true,"required":["search"],"description":"Use only the declared query parameters, once each, without a request body. Results are provider-native: inspect element/elements and body status/error; HTTP 200 alone does not prove a hit. Empty results can still be charged."},"example":{"search":"New York"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"harvestapi_linkedin_geo_search","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/p/finnhub.company.news":{"post":{"operationId":"finnhub_company_news","summary":"Company news by stock ticker over a date range. News articles for one company over a date range (Finnhub · Stock Market Data)","tags":["stocks","market data","finnhub","company","news","data"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"symbol":{"type":"string","examples":["AAPL"]},"from":{"type":"string","description":"YYYY-MM-DD","examples":["2026-08-10"]},"to":{"type":"string","description":"YYYY-MM-DD","examples":["2026-08-15"]}},"additionalProperties":true,"required":["symbol","from","to"]},"example":{"symbol":"AAPL","from":"2026-08-10","to":"2026-08-15"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"finnhub_company_news","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/p/tiingo.daily.meta":{"post":{"operationId":"tiingo_daily_meta","summary":"Ticker metadata by symbol — name, exchange, date range. Name, description, exchange and the date range Tiingo has data for — 30+ years for many tickers (Tiingo · Stock Market Data)","tags":["stocks","market data","tiingo","company","profile","data"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"ticker":{"type":"string","description":"path parameter, lowercase","examples":["aapl"]}},"additionalProperties":true,"required":["ticker"]},"example":{"ticker":"aapl"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"tiingo_daily_meta","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/p/twelvedata.time-series":{"post":{"operationId":"twelvedata_time-series","summary":"Stock OHLCV time series by symbol — 1min to 1month. OHLCV series at any interval from 1min to 1month — the workhorse for charts and analysis (Twelve Data · Stock Market Data)","tags":["stocks","market data","twelvedata","eod","history","data"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"symbol":{"type":"string","examples":["AAPL"]},"interval":{"type":"string","description":"1min | 5min | 15min | 30min | 45min | 1h | 2h | 4h | 1day | 1week | 1month","examples":["1day"]},"outputsize":{"type":"integer","description":"number of points, default 30, max 5000"},"start_date":{"type":"string"},"end_date":{"type":"string"}},"additionalProperties":true,"required":["symbol","interval"]},"example":{"symbol":"AAPL","interval":"1day"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"twelvedata_time-series","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/p/finnhub.metrics.basic":{"post":{"operationId":"finnhub_metrics_basic","summary":"Stock fundamentals by ticker — P/E, margins, 52-week range. Valuation, margin, growth and per-share metrics for a ticker (P/E, 52-week range, beta and more) (Finnhub · Stock Market Data)","tags":["stocks","market data","finnhub","fundamentals","metrics","data"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"symbol":{"type":"string","examples":["AAPL"]},"metric":{"type":"string","description":"all","examples":["all"]}},"additionalProperties":true,"required":["symbol","metric"]},"example":{"symbol":"AAPL","metric":"all"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"finnhub_metrics_basic","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/p/tiingo.iex.latest":{"post":{"operationId":"tiingo_iex_latest","summary":"Latest stock quote by ticker from the IEX feed. The latest top-of-book quote from the IEX feed for a ticker (Tiingo · Stock Market Data)","tags":["stocks","market data","tiingo","quote","live","data"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"ticker":{"type":"string","description":"path parameter","examples":["aapl"]}},"additionalProperties":true,"required":["ticker"]},"example":{"ticker":"aapl"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"tiingo_iex_latest","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/p/twelvedata.price":{"post":{"operationId":"twelvedata_price","summary":"Current price of a symbol — one number only. One number: the current price of a symbol — the cheapest possible check (Twelve Data · Stock Market Data)","tags":["stocks","market data","twelvedata","quote","live","data"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"symbol":{"type":"string","examples":["AAPL"]}},"additionalProperties":true,"required":["symbol"]},"example":{"symbol":"AAPL"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"twelvedata_price","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/p/twelvedata.quote":{"post":{"operationId":"twelvedata_quote","summary":"Stock, forex or crypto quote by symbol — 52-week range. Current quote with open/high/low/close, volume, change and 52-week range — stocks, forex and crypto symbols alike (Twelve Data · Stock Market Data)","tags":["stocks","market data","twelvedata","quote","live","data"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"symbol":{"type":"string","examples":["AAPL"]},"interval":{"type":"string","description":"quote interval, default 1day"}},"additionalProperties":true,"required":["symbol"]},"example":{"symbol":"AAPL"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"twelvedata_quote","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/p/finnhub.symbol.search":{"post":{"operationId":"finnhub_symbol_search","summary":"Search stock ticker symbols by company name. Resolve a company name or fragment to tradable symbols (Finnhub · Stock Market Data)","tags":["stocks","market data","finnhub","tickers","search","data"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"q":{"type":"string","examples":["apple"]}},"additionalProperties":true,"required":["q"]},"example":{"q":"apple"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"finnhub_symbol_search","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/p/twelvedata.symbol.search":{"post":{"operationId":"twelvedata_symbol_search","summary":"Search stock, forex and crypto symbols by name. Resolve a name or fragment to symbols across stocks, forex and crypto, with exchange info (Twelve Data · Stock Market Data)","tags":["stocks","market data","twelvedata","tickers","search","data"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"symbol":{"type":"string","description":"the search text","examples":["apple"]}},"additionalProperties":true,"required":["symbol"]},"example":{"symbol":"apple"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"twelvedata_symbol_search","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/p/tiingo.crypto.prices":{"post":{"operationId":"tiingo_crypto_prices","summary":"Crypto OHLCV bars by currency pair — 1min to daily. OHLCV bars for crypto pairs (btcusd, ethusd …) at any resample frequency (Tiingo · Crypto Market Data)","tags":["crypto","market data","tiingo","price","history","data"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"tickers":{"type":"string","description":"pair symbols, comma-separated","examples":["btcusd"]},"startDate":{"type":"string"},"resampleFreq":{"type":"string","description":"1min | 5min | 1hour | 1day","examples":["1day"]}},"additionalProperties":true,"required":["tickers"]},"example":{"tickers":"btcusd","resampleFreq":"1day"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"tiingo_crypto_prices","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/p/diffbot.x.nl-process":{"post":{"operationId":"diffbot_x_nl-process","summary":"Extract entities and sentiment. Runs a pre-trained classifier, named-entity recognizer, sentence tokenizer and sentiment analyzer over submitted text or a URL (Diffbot · Open web & SEO data)","tags":["web","seo/aeo","diffbot","extended","data"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"content":{"type":"string","description":"raw text to analyze; alternative to url"},"url":{"type":"string","description":"source URL to fetch and analyze; alternative to content"},"lang":{"type":"string","description":"language hint; sentiment covers 100+ languages, entities/salience cover ~13, facts are English-only"}},"additionalProperties":true,"description":"different HOST than base_url — nl.diffbot.com. content-type header may be application/json (default) or application/x-www-form-urlencoded. Token rides in the QUERY STRING as documented — putting it in the JSON body instead 401s"},"example":{"content":"Diffbot builds a knowledge graph of the web."}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"diffbot_x_nl-process","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/p/dataforseo.x.business-data-social-media-pinterest-live":{"post":{"operationId":"dataforseo_x_business-data-social-media-pinterest-live","summary":"Pinterest pins made from a list of URLs. Social Media Pinterest API will provide you with data on pins made from the specified URLs. (DataForSEO · Pinterest)","tags":["pinterest","social","dataforseo","extended","data"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"targets":{"type":"array","description":"target URLs required field target page should be specified with its absolute URL (including http:// or https://) example: https://dataforseo.com/ Note: you can specify 10 targets maximum. You will be charged per earch URL you specify in thi","examples":[["https://www.simplyrecipes.com/recipes/grilled_salmon_with_cucumber_mango_salsa/","https://tasty.co/recipe/classic-lasagna","https://www.allrecipes.com/recipe/255263/sicilian-roasted-chicken/"]]},"tag":{"type":"string","description":"user-defined task identifier optional field the character limit is 255 you can use this parameter to identify the task and match it with the result you will find the specified tag value in the data object of the response","examples":["some_string_123"]}},"additionalProperties":true,"description":"the POST body is a JSON array holding exactly one task object with these fields; a live route rejects extra tasks with status 40000 \"You can set only one task at a time\""},"example":{"targets":["https://www.simplyrecipes.com/recipes/grilled_salmon_with_cucumber_mango_salsa/","https://tasty.co/recipe/classic-lasagna","https://www.allrecipes.com/recipe/255263/sicilian-roasted-chicken/"],"tag":"some_string_123"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"dataforseo_x_business-data-social-media-pinterest-live","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/p/dataforseo.web.page.audit":{"post":{"operationId":"dataforseo_web_page_audit","summary":"On-page audit. Crawl one URL on demand — status code, load timings, on-page score, meta and content (DataForSEO · Open web & SEO data)","tags":["web","seo/aeo","dataforseo","page","audit","data"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"FULL absolute URL including scheme — unlike the backlinks endpoints","examples":["https://moz.com/"]},"custom_user_agent":{"type":"string"},"browser_preset":{"type":"string","description":"desktop | mobile | tablet; requires enable_browser_rendering=true — live API returns 40501 without it. Omit this field if you only need enable_javascript."},"enable_javascript":{"type":"boolean","description":"render JS; costs more; default false. Not sufficient for browser_preset."},"enable_browser_rendering":{"type":"boolean","description":"measure Core Web Vitals; implies enable_javascript; required for browser_preset; costs more; default false"},"accept_language":{"type":"string"},"check_spell":{"type":"boolean","description":"default false"}},"additionalProperties":true,"required":["url"],"description":"POST body is an array with exactly 1 task object (Live endpoints do not support multi-task arrays; one page crawled per task). Do not send browser_preset without enable_browser_rendering=true (live API returns 40501)."},"example":{"url":"https://moz.com/"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"dataforseo_web_page_audit","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/p/litescrape.web.fetch":{"post":{"operationId":"litescrape_web_fetch","summary":"Fetch rendered web content. Fetch a public HTTP(S) page and return LLM-ready content (Litescrape · Open web & SEO data)","tags":["web","seo/aeo","litescrape","extract","data"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"assert_status_code":{"type":"integer","description":"Expected origin HTTP status, 100-599. A different status is rejected; otherwise a rendered error page is a successful capture.","examples":[200]},"base":{"type":"string","description":"Resolve relative links against the requested URL (initial, default) or the final URL after redirects (final).","enum":["initial","final"]},"detach_invisibles":{"type":"boolean","description":"Drop display:none elements from the page."},"engine":{"type":"string","description":"auto (default; lightweight HTTP first, a browser when needed), browser, or curl (no JavaScript).","enum":["auto","browser","curl"]},"keep_img_data_url":{"type":"boolean","description":"Keep inline data: images in Markdown."},"locale":{"type":"string","description":"Browser locale as a language tag, 2-64 characters. Defaults to the browser's own.","examples":["en-US"]},"markdown_chunking":{"type":"string","description":"true, h1-h5, structured or s1-s5: split the Markdown and return chunks.","enum":["true","h1","h2","h3","h4","h5","structured","s1","s2","s3","s4","s5"]},"max_tokens":{"type":"integer","description":"Integer 500-10,000,000. Trim content to this many tokens."},"no_gfm":{"type":"string","description":"true, false or table: disable GitHub-flavored Markdown, or only its tables."},"page_timeout":{"type":"integer","description":"Seconds from 1 through 180 for page loading and browser operations. Cannot extend the total request budget set by timeout.","examples":[30]},"preset":{"type":"string","description":"Option preset. Fills only the options the request leaves unset.","enum":["reader","index","research","agent","spider"]},"referer":{"type":"string","description":"HTTP(S) URL sent as the Referer.","examples":["https://example.com"]},"remove_overlay":{"type":"boolean","description":"Remove modal and cookie-banner overlays from the page."},"remove_selector":{"type":"string","description":"CSS selector removed before extraction, 1-2,048 characters; POST also accepts a list of 1-16 selectors.","examples":["nav, footer"]},"respond_timing":{"type":"string","description":"Page readiness condition to reach before responding.","enum":["html","visible-content","mutation-idle","resource-idle","media-idle","network-idle"],"examples":["network-idle"]},"respond_with":{"type":"string","description":"Output format: content (default; main content as Markdown, or the whole page when extraction keeps too little), markdown (whole page as Markdown), html, text, frontmatter (content plus front matter), or a '+' combination such as markdown+fr","examples":["markdown"]},"retain_images":{"type":"string","description":"Images to keep: all (default), alt (alt text only) or none.","enum":["none","all","alt"],"examples":["alt"]},"retain_links":{"type":"string","description":"Links to keep: all (default), text (link text only), none, or gpt-oss (citation format with a links summary).","enum":["none","all","text","gpt-oss"]},"retain_media":{"type":"string","description":"How video, audio and embedded video appear: none, text, link (default), image or html.","enum":["none","text","link","image","html"]},"robots_txt":{"type":"string","description":"User agent, 1-256 characters, to check against the site's robots.txt; disallowed URLs are rejected.","examples":["MyBot"]},"target_selector":{"type":"string","description":"CSS selector to extract, 1-2,048 characters; POST also accepts a list of 1-16 selectors. Implies waiting for the selector. Match-all selectors are rejected.","examples":["article"]},"token_budget":{"type":"integer","description":"Integer 1-10,000,000. Reject the page when its token count exceeds the budget."},"url":{"type":"string","description":"Public HTTP(S) URL to capture, 1-8,192 characters. Include http:// or https://; bare domains are rejected. The host must be public, on port 80 or 443, without embedded credentials.","examples":["https://example.com"]},"user_agent":{"type":"string","description":"User-Agent for the page request, 1-1,024 characters without control characters. Defaults to the browser's own."},"wait_for_selector":{"type":"string","description":"CSS selector to wait for after navigation, 1-2,048 characters. POST also accepts a list of 1-16 selectors.","examples":["main"]},"with_iframe":{"type":"string","description":"true, false or quoted: include iframe content before extraction."},"with_images_summary":{"type":"boolean","description":"Add an images list to the response."},"with_links_summary":{"type":"string","description":"true, false or all: add a links list to the response."},"with_shadow_dom":{"type":"boolean","description":"Include open shadow DOM content before extraction."},"timeout":{"type":"number","description":"Optional budget for the entire request in seconds, measured from gateway receipt until the response is ready to send. Includes admission, queueing and settlement. Must be greater than 0 and at most 90. On expiry, the call is not billed and "}},"additionalProperties":true,"required":["url"]},"example":{"assert_status_code":200,"locale":"en-US","page_timeout":30,"referer":"https://example.com","remove_selector":"nav, footer","respond_timing":"network-idle","respond_with":"markdown","retain_images":"alt","robots_txt":"MyBot","target_selector":"article","url":"https://example.com","wait_for_selector":"main"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"litescrape_web_fetch","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/p/litescrape.web.fetch.post":{"post":{"operationId":"litescrape_web_fetch_post","summary":"Web extraction with browser options. Fetch a public HTTP(S) page and return LLM-ready content (Litescrape · Open web & SEO data)","tags":["web","seo/aeo","litescrape","extract","advanced","data"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"Public HTTP(S) URL to capture, 1-8,192 characters. Include http:// or https://; bare domains are rejected. The host must be public, on port 80 or 443, without embedded credentials.","examples":["https://example.com"]},"remove_overlay":{"type":"boolean","description":"Remove modal and cookie-banner overlays from the page."},"detach_invisibles":{"type":"boolean","description":"Drop display:none elements from the page."},"wait_for_selector":{"type":"string","description":"CSS selector to wait for after navigation, 1-2,048 characters. POST also accepts a list of 1-16 selectors.","examples":["main"]},"set_cookies":{"type":"array","description":"POST only. 1-100 cookies in Set-Cookie syntax (name=value; Path=/; Domain=...), one line each, up to 4,096 characters."},"user_agent":{"type":"string","description":"User-Agent for the page request, 1-1,024 characters without control characters. Defaults to the browser's own."},"inject_page_script":{"type":"array","description":"POST only. 1-8 scripts (source, or a URL to a script), up to 8,192 characters each, run in the main frame."},"inject_frame_script":{"type":"array","description":"POST only. 1-8 scripts (source, or a URL to a script), up to 8,192 characters each, run in every frame."},"page_timeout":{"type":"integer","description":"Seconds from 1 through 180 for page loading and browser operations. Cannot extend the total request budget set by timeout.","examples":[30]},"locale":{"type":"string","description":"Browser locale as a language tag, 2-64 characters. Defaults to the browser's own.","examples":["en-US"]},"referer":{"type":"string","description":"HTTP(S) URL sent as the Referer.","examples":["https://example.com"]},"assert_status_code":{"type":"integer","description":"Expected origin HTTP status, 100-599. A different status is rejected; otherwise a rendered error page is a successful capture.","examples":[200]},"viewport":{"type":"object","description":"POST only. Browser viewport; width and height are required. Default: 1280 x 1280."},"robots_txt":{"type":"string","description":"User agent, 1-256 characters, to check against the site's robots.txt; disallowed URLs are rejected.","examples":["MyBot"]},"respond_timing":{"type":"string","description":"Page readiness condition to reach before responding.","enum":["html","visible-content","mutation-idle","resource-idle","media-idle","network-idle"],"examples":["network-idle"]},"respond_with":{"type":"string","description":"Output format: content (default; main content as Markdown, or the whole page when extraction keeps too little), markdown (whole page as Markdown), html, text, frontmatter (content plus front matter), or a '+' combination such as markdown+fr","examples":["markdown"]},"with_links_summary":{"type":"string","description":"true, false or all: add a links list to the response."},"with_images_summary":{"type":"boolean","description":"Add an images list to the response."},"retain_images":{"type":"string","description":"Images to keep: all (default), alt (alt text only) or none.","enum":["none","all","alt"],"examples":["alt"]},"retain_links":{"type":"string","description":"Links to keep: all (default), text (link text only), none, or gpt-oss (citation format with a links summary).","enum":["none","all","text","gpt-oss"]},"retain_media":{"type":"string","description":"How video, audio and embedded video appear: none, text, link (default), image or html.","enum":["none","text","link","image","html"]},"preset":{"type":"string","description":"Option preset. Fills only the options the request leaves unset.","enum":["reader","index","research","agent","spider"]},"no_gfm":{"type":"string","description":"true, false or table: disable GitHub-flavored Markdown, or only its tables."},"target_selector":{"type":"string","description":"CSS selector to extract, 1-2,048 characters; POST also accepts a list of 1-16 selectors. Implies waiting for the selector. Match-all selectors are rejected.","examples":["article"]},"remove_selector":{"type":"string","description":"CSS selector removed before extraction, 1-2,048 characters; POST also accepts a list of 1-16 selectors.","examples":["nav, footer"]},"keep_img_data_url":{"type":"boolean","description":"Keep inline data: images in Markdown."},"with_iframe":{"type":"string","description":"true, false or quoted: include iframe content before extraction."},"with_shadow_dom":{"type":"boolean","description":"Include open shadow DOM content before extraction."},"engine":{"type":"string","description":"auto (default; lightweight HTTP first, a browser when needed), browser, or curl (no JavaScript).","enum":["auto","browser","curl"]},"token_budget":{"type":"integer","description":"Integer 1-10,000,000. Reject the page when its token count exceeds the budget."},"markdown":{"type":"object","description":"Turndown options Jina exposes as X-Md-* headers."},"markdown_chunking":{"type":"string","description":"true, h1-h5, structured or s1-s5: split the Markdown and return chunks.","enum":["true","h1","h2","h3","h4","h5","structured","s1","s2","s3","s4","s5"]},"max_tokens":{"type":"integer","description":"Integer 500-10,000,000. Trim content to this many tokens."},"base":{"type":"string","description":"Resolve relative links against the requested URL (initial, default) or the final URL after redirects (final).","enum":["initial","final"]}},"additionalProperties":true,"required":["url"]},"example":{"url":"https://example.com","respond_with":"markdown","viewport":{"width":1280,"height":800}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"litescrape_web_fetch_post","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/p/litescrape.bing.maps.search":{"post":{"operationId":"litescrape_bing_maps_search","summary":"Search Bing Maps. Searches Bing Maps listings when `q` is supplied, or returns one place's details when `place_id` is supplied; at least one of the two is required (Litescrape · Bing Keyword Data)","tags":["bing","seo/aeo","litescrape","maps","search","data"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"q":{"type":"string","description":"Search query, up to 2,048 characters. Required unless place_id is present.","examples":["coffee Austin Texas"]},"cp":{"type":"string","description":"Map center in latitude~longitude form.","examples":["30.2672~-97.7431"]},"setlang":{"type":"string","description":"Bing Maps interface language, such as en-US; up to 16 characters.","examples":["en-US"]},"place_id":{"type":"string","description":"Bing Maps place identifier from a listing row's place_id, up to 256 characters. Required unless q is present."},"first":{"type":"integer","description":"Listing offset from 0 through 10,000.","default":0},"count":{"type":"integer","description":"Number of listings, 1 through 30.","default":30},"timeout":{"type":"number","description":"Optional budget for the entire request in seconds, measured from gateway receipt until the response is ready to send. Includes admission, queueing and settlement. Must be greater than 0 and at most 90. On expiry, the call is not billed and "}},"additionalProperties":true},"example":{"q":"coffee Austin Texas","cp":"30.2672~-97.7431","setlang":"en-US"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"litescrape_bing_maps_search","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/p/litescrape.bing.serp.organic":{"post":{"operationId":"litescrape_bing_serp_organic","summary":"Search Bing. Returns Bing web results: organic results, ads, answer boxes, Knowledge Graph cards, local, shopping, news and related searches when Bing shows them (Litescrape · Bing Keyword Data)","tags":["bing","seo/aeo","litescrape","serp","organic","data"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"engine":{"type":"string","description":"Search engine. Optional; the only accepted value is bing.","default":"bing","enum":["bing"]},"q":{"type":"string","description":"Search query, up to 2,048 characters with no control characters. Bing search operators are preserved.","examples":["pizza shops in New York"]},"location":{"type":"string","description":"Optional city-level search origin, up to 256 characters.","examples":["New York, New York"]},"lat":{"type":"number","description":"Optional search-origin latitude from -90 through 90. Independent of lon and location.","examples":[40.7128]},"lon":{"type":"number","description":"Optional search-origin longitude from -180 through 180. Independent of lat and location.","examples":[-74.006]},"mkt":{"type":"string","description":"Bing market in language-country form, such as en-US; case-insensitive. Mutually exclusive with cc.","examples":["en-US"]},"cc":{"type":"string","description":"Two-letter ISO country code of the search origin, such as US; case-insensitive. Mutually exclusive with mkt.","examples":["US"]},"first":{"type":"integer","description":"One-based offset of the first organic result.","default":1},"safeSearch":{"type":"string","description":"Adult-content filtering: off, moderate, or strict. Case-insensitive.","default":"moderate","enum":["off","moderate","strict"]},"filters":{"type":"string","description":"Native Bing display or date filters, up to 8,192 characters with no control characters.","examples":["ex1:\"ez5_20069_20433\""]},"device":{"type":"string","description":"Request profile: desktop, tablet, or mobile. Case-insensitive.","default":"desktop","enum":["desktop","tablet","mobile"]},"timeout":{"type":"number","description":"Optional budget for the entire request in seconds, measured from gateway receipt until the response is ready to send. Includes admission, queueing and settlement. Must be greater than 0 and at most 90. On expiry, the call is not billed and "}},"additionalProperties":true,"required":["q"]},"example":{"q":"pizza shops in New York","location":"New York, New York","lat":40.7128,"lon":-74.006,"mkt":"en-US","cc":"US","filters":"ex1:\"ez5_20069_20433\""}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"litescrape_bing_serp_organic","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/p/litescrape.app_store.product":{"post":{"operationId":"litescrape_app_store_product","summary":"Get App Store product details. Read app details, version history, screenshots, ratings, privacy disclosures, and related apps (Litescrape · Apple App Store)","tags":["app-store","reviews & apps","litescrape","product","data"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"country":{"type":"string","description":"Two-letter Apple storefront country. UK is accepted as an alias for GB.","default":"us","examples":["us"]},"product_id":{"type":"string","description":"Positive decimal Apple app identifier, up to 20 digits.","examples":["570060128"]},"type":{"type":"string","description":"App product type. Only app is supported.","default":"app"},"timeout":{"type":"number","description":"Optional budget for the entire request in seconds, measured from gateway receipt until the response is ready to send. Includes admission, queueing and settlement. Must be greater than 0 and at most 90. On expiry, the call is not billed and "}},"additionalProperties":true,"required":["product_id"]},"example":{"country":"us","product_id":"570060128"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"litescrape_app_store_product","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/p/litescrape.app_store.reviews":{"post":{"operationId":"litescrape_app_store_reviews","summary":"Read App Store reviews. Read storefront-specific app reviews (Litescrape · Apple App Store)","tags":["app-store","reviews & apps","litescrape","reviews","data"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"country":{"type":"string","description":"Two-letter Apple storefront country. UK is accepted as an alias for GB.","default":"us","examples":["us"]},"product_id":{"type":"string","description":"Positive decimal Apple app identifier, up to 20 digits.","examples":["570060128"]},"sort":{"type":"string","description":"mostrecent or mosthelpful. Apple's Mac storefront always returns newest first.","default":"mostrecent","enum":["mostrecent","mosthelpful"]},"page":{"type":"integer","description":"One-based page number, from 1 through 2,147,483,647. Exhausted pages return an empty review list.","default":1},"timeout":{"type":"number","description":"Optional budget for the entire request in seconds, measured from gateway receipt until the response is ready to send. Includes admission, queueing and settlement. Must be greater than 0 and at most 90. On expiry, the call is not billed and "}},"additionalProperties":true,"required":["product_id"]},"example":{"country":"us","product_id":"570060128"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"litescrape_app_store_reviews","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/p/litescrape.app_store.search.apps":{"post":{"operationId":"litescrape_app_store_search_apps","summary":"Search the Apple App Store. Search iPhone, iPad, and Mac apps or developers by storefront (Litescrape · Apple App Store)","tags":["app-store","reviews & apps","litescrape","search","apps","data"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"country":{"type":"string","description":"Two-letter Apple storefront country. UK is accepted as an alias for GB.","default":"us","examples":["us"]},"term":{"type":"string","description":"Search term with 1 to 2,048 UTF-8 bytes of printable text, and at most 4,096 bytes after URL encoding.","examples":["coffee"]},"lang":{"type":"string","description":"Language-region code, such as en-us or fr-fr.","default":"en-us","examples":["en-us"]},"num":{"type":"integer","description":"Maximum results after filtering, from 1 through 200.","default":10},"disallow_explicit":{"type":"boolean","description":"Exclude explicit results when true.","default":false},"property":{"type":"string","description":"Use developer to match developer names, ignoring case."},"category_id":{"type":"integer","description":"Filter results by a native genre identifier, from 1 through 2,147,483,647."},"device":{"type":"string","description":"mobile for iPhone apps, tablet for iPad apps, or desktop for Mac apps.","default":"mobile","enum":["mobile","tablet","desktop"]},"timeout":{"type":"number","description":"Optional budget for the entire request in seconds, measured from gateway receipt until the response is ready to send. Includes admission, queueing and settlement. Must be greater than 0 and at most 90. On expiry, the call is not billed and "}},"additionalProperties":true,"required":["term"]},"example":{"country":"us","term":"coffee","lang":"en-us"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"litescrape_app_store_search_apps","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/p/litescrape.google_play.product":{"post":{"operationId":"litescrape_google_play_product","summary":"Get Google Play product details. Read app, ebook, audiobook, movie, or TV product details (Litescrape · Google Play)","tags":["google-play","reviews & apps","litescrape","product","data"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"hl":{"type":"string","description":"Storefront language, such as en, de, or zh-TW. Maximum 32 characters.","default":"en","examples":["en"]},"gl":{"type":"string","description":"Two-letter country code.","default":"us","examples":["us"]},"product_id":{"type":"string","description":"Native Google Play product identifier, with 1 to 512 letters, digits, underscores, dots, or hyphens.","examples":["com.duolingo"]},"store":{"type":"string","description":"Product catalog containing this identifier.","default":"apps","enum":["apps","books","audiobooks","movies","tv"]},"season_id":{"type":"string","description":"Native season identifier, such as tvseason-OVPad1njPzI.P. Requires store=tv."},"timeout":{"type":"number","description":"Optional budget for the entire request in seconds, measured from gateway receipt until the response is ready to send. Includes admission, queueing and settlement. Must be greater than 0 and at most 90. On expiry, the call is not billed and "}},"additionalProperties":true,"required":["product_id"]},"example":{"hl":"en","gl":"us","product_id":"com.duolingo"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"litescrape_google_play_product","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/p/litescrape.google_play.reviews":{"post":{"operationId":"litescrape_google_play_reviews","summary":"Read Google Play reviews. Filter and paginate product reviews, including available developer replies (Litescrape · Google Play)","tags":["google-play","reviews & apps","litescrape","reviews","data"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"hl":{"type":"string","description":"Storefront language, such as en, de, or zh-TW. Maximum 32 characters.","default":"en","examples":["en"]},"gl":{"type":"string","description":"Two-letter country code.","default":"us","examples":["us"]},"product_id":{"type":"string","description":"Native Google Play product identifier, with 1 to 512 letters, digits, underscores, dots, or hyphens.","examples":["com.duolingo"]},"store":{"type":"string","description":"Product catalog containing this identifier.","default":"apps","enum":["apps","books","audiobooks","movies","tv"]},"platform":{"type":"string","description":"Platform associated with the reviews.","default":"phone","enum":["phone","tablet","watch","chromebook","tv"]},"rating":{"type":"integer","description":"Only reviews with this rating, from 1 through 5."},"sort_by":{"type":"integer","description":"1 for relevant, 2 for newest, or 3 for rating.","default":1},"num":{"type":"integer","description":"Number of reviews, from 1 through 199.","default":40},"next_page_token":{"type":"string","description":"Returned review continuation. Preserve product, store, language, country, platform, rating, sort order, and count."},"timeout":{"type":"number","description":"Optional budget for the entire request in seconds, measured from gateway receipt until the response is ready to send. Includes admission, queueing and settlement. Must be greater than 0 and at most 90. On expiry, the call is not billed and "}},"additionalProperties":true,"required":["product_id"]},"example":{"hl":"en","gl":"us","product_id":"com.duolingo"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"litescrape_google_play_reviews","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/p/litescrape.google_play.search.apps":{"post":{"operationId":"litescrape_google_play_search_apps","summary":"Search Google Play apps. Search and browse Android apps, categories, device storefronts, and charts (Litescrape · Google Play)","tags":["google-play","reviews & apps","litescrape","search","apps","data"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"hl":{"type":"string","description":"Storefront language, such as en, de, or zh-TW. Maximum 32 characters.","default":"en","examples":["en"]},"gl":{"type":"string","description":"Two-letter country code.","default":"us","examples":["us"]},"q":{"type":"string","description":"At most 2,048 UTF-8 bytes.","examples":["coffee"]},"chart":{"type":"string","description":"Chart identifier such as topselling_free, topselling_paid, or topgrossing. Excludes q and all pagination selectors. Apps and games charts require phone or an omitted store_device."},"next_page_token":{"type":"string","description":"Use the returned next_page_token with the same parameters. Excludes chart, section_page_token, and see_more_token."},"section_page_token":{"type":"string","description":"Continue one result group using its returned token and the same parameters. Excludes the other pagination selectors and chart."},"see_more_token":{"type":"string","description":"Open a result collection using its returned token and the same parameters. Excludes the other pagination selectors and chart."},"apps_category":{"type":"string","description":"Native app category identifier, such as MEDICAL. Excludes q and an explicit store_device."},"store_device":{"type":"string","description":"Omit for the default phone storefront. An explicit selection excludes q and category.","enum":["phone","tablet","tv","chromebook","watch","car"]},"age":{"type":"string","description":"Children's age range. Requires apps_category=FAMILY.","enum":["AGE_RANGE1","AGE_RANGE2","AGE_RANGE3"]},"timeout":{"type":"number","description":"Optional budget for the entire request in seconds, measured from gateway receipt until the response is ready to send. Includes admission, queueing and settlement. Must be greater than 0 and at most 90. On expiry, the call is not billed and "}},"additionalProperties":true},"example":{"hl":"en","gl":"us","q":"coffee"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"litescrape_google_play_search_apps","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/p/litescrape.google_play.search.books":{"post":{"operationId":"litescrape_google_play_search_books","summary":"Search Google Play books. Search and browse ebooks, audiobooks, series, categories, and charts (Litescrape · Google Play)","tags":["google-play","reviews & apps","litescrape","search","books","data"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"hl":{"type":"string","description":"Storefront language, such as en, de, or zh-TW. Maximum 32 characters.","default":"en","examples":["en"]},"gl":{"type":"string","description":"Two-letter country code.","default":"us","examples":["us"]},"q":{"type":"string","description":"At most 2,048 UTF-8 bytes.","examples":["coffee"]},"chart":{"type":"string","description":"Chart identifier such as topselling_free, topselling_paid, or topgrossing. Excludes q and all pagination selectors. Apps and games charts require phone or an omitted store_device."},"next_page_token":{"type":"string","description":"Use the returned next_page_token with the same parameters. Excludes chart, section_page_token, and see_more_token."},"section_page_token":{"type":"string","description":"Continue one result group using its returned token and the same parameters. Excludes the other pagination selectors and chart."},"see_more_token":{"type":"string","description":"Open a result collection using its returned token and the same parameters. Excludes the other pagination selectors and chart."},"books_category":{"type":"string","description":"Native book category identifier, such as coll_1689 for children's books. Excludes q."},"age":{"type":"string","description":"Children's age range. Requires books_category=coll_1689.","enum":["AGE_RANGE1","AGE_RANGE2","AGE_RANGE3"]},"price":{"type":"integer","description":"1 for free books or 2 for paid books. Requires q."},"timeout":{"type":"number","description":"Optional budget for the entire request in seconds, measured from gateway receipt until the response is ready to send. Includes admission, queueing and settlement. Must be greater than 0 and at most 90. On expiry, the call is not billed and "}},"additionalProperties":true},"example":{"hl":"en","gl":"us","q":"coffee"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"litescrape_google_play_search_books","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/p/litescrape.google_play.search.games":{"post":{"operationId":"litescrape_google_play_search_games","summary":"Search Google Play games. Browse games, categories, device storefronts, and charts, or query the shared Android app search (Litescrape · Google Play)","tags":["google-play","reviews & apps","litescrape","search","games","data"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"hl":{"type":"string","description":"Storefront language, such as en, de, or zh-TW. Maximum 32 characters.","default":"en","examples":["en"]},"gl":{"type":"string","description":"Two-letter country code.","default":"us","examples":["us"]},"q":{"type":"string","description":"At most 2,048 UTF-8 bytes.","examples":["coffee"]},"chart":{"type":"string","description":"Chart identifier such as topselling_free, topselling_paid, or topgrossing. Excludes q and all pagination selectors. Apps and games charts require phone or an omitted store_device."},"next_page_token":{"type":"string","description":"Use the returned next_page_token with the same parameters. Excludes chart, section_page_token, and see_more_token."},"section_page_token":{"type":"string","description":"Continue one result group using its returned token and the same parameters. Excludes the other pagination selectors and chart."},"see_more_token":{"type":"string","description":"Open a result collection using its returned token and the same parameters. Excludes the other pagination selectors and chart."},"games_category":{"type":"string","description":"Native game category identifier, such as GAME_PUZZLE. Excludes q and an explicit store_device."},"store_device":{"type":"string","description":"Omit for the default phone storefront. An explicit selection excludes q and category.","enum":["phone","tablet","tv","chromebook","watch","windows"]},"timeout":{"type":"number","description":"Optional budget for the entire request in seconds, measured from gateway receipt until the response is ready to send. Includes admission, queueing and settlement. Must be greater than 0 and at most 90. On expiry, the call is not billed and "}},"additionalProperties":true},"example":{"hl":"en","gl":"us","q":"coffee"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"litescrape_google_play_search_games","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/p/litescrape.google_play.search.movies":{"post":{"operationId":"litescrape_google_play_search_movies","summary":"Search Google Play movies. Search and browse movies, TV shows, episodes, categories, and charts (Litescrape · Google Play)","tags":["google-play","reviews & apps","litescrape","search","movies","data"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"hl":{"type":"string","description":"Storefront language, such as en, de, or zh-TW. Maximum 32 characters.","default":"en","examples":["en"]},"gl":{"type":"string","description":"Two-letter country code.","default":"us","examples":["us"]},"q":{"type":"string","description":"At most 2,048 UTF-8 bytes.","examples":["coffee"]},"chart":{"type":"string","description":"Chart identifier such as topselling_free, topselling_paid, or topgrossing. Excludes q and all pagination selectors. Apps and games charts require phone or an omitted store_device."},"next_page_token":{"type":"string","description":"Use the returned next_page_token with the same parameters. Excludes chart, section_page_token, and see_more_token."},"section_page_token":{"type":"string","description":"Continue one result group using its returned token and the same parameters. Excludes the other pagination selectors and chart."},"see_more_token":{"type":"string","description":"Open a result collection using its returned token and the same parameters. Excludes the other pagination selectors and chart."},"movies_category":{"type":"string","description":"Native movie category identifier, such as FAMILY for family movies. Excludes q."},"age":{"type":"string","description":"Children's age range. Requires movies_category=FAMILY.","enum":["AGE_RANGE1","AGE_RANGE2","AGE_RANGE3"]},"timeout":{"type":"number","description":"Optional budget for the entire request in seconds, measured from gateway receipt until the response is ready to send. Includes admission, queueing and settlement. Must be greater than 0 and at most 90. On expiry, the call is not billed and "}},"additionalProperties":true},"example":{"hl":"en","gl":"us","q":"coffee"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"litescrape_google_play_search_movies","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/p/litescrape.tripadvisor.business.reviews":{"post":{"operationId":"litescrape_tripadvisor_business_reviews","summary":"Read Tripadvisor reviews. Returns public reviews for one Tripadvisor place in `reviews`, in Tripadvisor's order; rows Tripadvisor promotes carry `featured: true` and can appear ahead of newer reviews (Litescrape · Tripadvisor)","tags":["tripadvisor","reviews & apps","litescrape","business","reviews","data"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"place_id":{"type":"integer","description":"Numeric Tripadvisor place ID, up to 16 digits.","examples":[437641]},"tripadvisor_domain":{"type":"string","description":"Supported first-party localized Tripadvisor hostname, such as www.tripadvisor.co.uk.","default":"www.tripadvisor.com","examples":["www.tripadvisor.com"]},"locale":{"type":"string","description":"Lowercase language code with an optional uppercase country, such as en or en-US.","default":"en-US"},"start":{"type":"integer","description":"Review offset from 0 through 10,000.","default":0},"num":{"type":"integer","description":"Number of reviews, 1 through 50.","default":10},"sort_by":{"type":"string","description":"Review order: recent (newest first) or relevance.","default":"recent","enum":["recent","relevance"]},"translate":{"type":"boolean","description":"Request Tripadvisor's machine translation of reviews.","default":false},"timeout":{"type":"number","description":"Optional budget for the entire request in seconds, measured from gateway receipt until the response is ready to send. Includes admission, queueing and settlement. Must be greater than 0 and at most 90. On expiry, the call is not billed and "}},"additionalProperties":true,"required":["place_id"]},"example":{"place_id":437641,"tripadvisor_domain":"www.tripadvisor.com"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"litescrape_tripadvisor_business_reviews","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/p/litescrape.tripadvisor.place.detail":{"post":{"operationId":"litescrape_tripadvisor_place_detail","summary":"Get Tripadvisor place details. Returns one Tripadvisor place in `place_results`: identity, location, rating, images and, for restaurants, contact details, hours and rankings when Tripadvisor supplies them (Litescrape · Tripadvisor)","tags":["tripadvisor","reviews & apps","litescrape","place","detail","data"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"place_id":{"type":"integer","description":"Numeric Tripadvisor place ID, up to 16 digits.","examples":[437641]},"tripadvisor_domain":{"type":"string","description":"Supported first-party localized Tripadvisor hostname, such as www.tripadvisor.co.uk.","default":"www.tripadvisor.com","examples":["www.tripadvisor.com"]},"locale":{"type":"string","description":"Lowercase language code with an optional uppercase country, such as en or en-US.","default":"en-US"},"currency":{"type":"string","description":"Three-letter ISO currency code for price fields; case-insensitive.","default":"USD"},"geo_id":{"type":"integer","description":"Tripadvisor ID of the place's parent geography.","examples":[30196]},"timeout":{"type":"number","description":"Optional budget for the entire request in seconds, measured from gateway receipt until the response is ready to send. Includes admission, queueing and settlement. Must be greater than 0 and at most 90. On expiry, the call is not billed and "}},"additionalProperties":true,"required":["place_id"]},"example":{"place_id":437641,"tripadvisor_domain":"www.tripadvisor.com","geo_id":30196}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"litescrape_tripadvisor_place_detail","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/p/seranking.web.anchors.list":{"post":{"operationId":"seranking_web_anchors_list","summary":"Anchor texts in backlinks by domain or URL. Anchor texts across a target's backlink profile, with link and domain counts (SE Ranking · Open web & SEO data)","tags":["web","seo/aeo","seranking","anchors","list","data"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"target":{"type":"string","description":"domain, host or URL","examples":["seranking.com"]},"mode":{"type":"string","description":"domain | host | url"},"limit":{"type":"integer","description":"COST DIAL — 1 to 10,000, one credit per returned anchor","examples":[10]},"order_by":{"type":"string"}},"additionalProperties":true,"required":["target"],"description":"returns an `anchors` array."},"example":{"target":"seranking.com","limit":10}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"seranking_web_anchors_list","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/p/seranking.web.linking_domains.list":{"post":{"operationId":"seranking_web_linking_domains_list","summary":"Referring domains by domain or URL — authority, link counts. Referring domains linking to a target, with each source's link count and authority (SE Ranking · Open web & SEO data)","tags":["web","seo/aeo","seranking","linking_domains","list","data"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"target":{"type":"string","description":"domain, host or URL","examples":["seranking.com"]},"mode":{"type":"string","description":"domain | host | url"},"limit":{"type":"integer","description":"COST DIAL — 1 to 10,000, one credit per returned domain","examples":[10]},"order_by":{"type":"string"}},"additionalProperties":true,"required":["target"],"description":"returns a `refdomains` array. /v1/backlinks/refdomains/count is the 2-credit way to get just the total when you do not need the list."},"example":{"target":"seranking.com","limit":10}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"seranking_web_linking_domains_list","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/p/anyapi.reddit.trending_posts":{"post":{"operationId":"anyapi_reddit_trending_posts","summary":"Reddit Trending Posts. Get currently trending Reddit posts across all subreddits with stable cursor pagination. (AnyAPI · Reddit)","tags":["reddit","social","anyapi","extended","data"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"after":{"type":"string","description":"Pagination cursor from a previous response's nextCursor. Omit for the first page."},"limit":{"type":"integer","description":"Maximum number of trending posts to return (1-100, default 25).","default":25,"examples":[25]}},"additionalProperties":true},"example":{"limit":25}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"anyapi_reddit_trending_posts","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/p/octen.web.search":{"post":{"operationId":"octen_web_search","summary":"Search the web by query — ranked pages and highlights. Search the live web for ranked pages, highlights, and optional full page content. (Octen · Open web & SEO data)","tags":["web","seo/aeo","octen","search","data"],"x-price":"$0.00625","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"query":{"type":"string","examples":["Octen API documentation"]},"count":{"type":"integer","default":5},"include_domains":{"type":"string"},"exclude_domains":{"type":"string"},"include_text":{"type":"string"},"exclude_text":{"type":"string"},"time_basis":{"type":"string","default":"auto","enum":["auto","published","crawled"]},"time_range":{"type":"string","enum":["day","week","month","year","d","w","m","y"]},"start_time":{"type":"string"},"end_time":{"type":"string"},"language":{"type":"string"},"highlight":{"type":"object","description":"Optional enable and max_tokens controls; highlights do not incur the full-content surcharge."},"full_content":{"type":"object","description":"Set enable=true for full page content. Only returned full-content results beyond 10 cost extra."},"format":{"type":"string","default":"text","enum":["markdown","text"]},"safesearch":{"type":"string","default":"strict","enum":[false,"strict"]},"include_images":{"type":"boolean","default":false}},"additionalProperties":true,"required":["query"]},"example":{"query":"Octen API documentation","count":1}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"octen_web_search","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/p/dataforseo.x.app-data-apple-app-listings-search-live":{"post":{"operationId":"dataforseo_x_app-data-apple-app-listings-search-live","summary":"Search App Store apps — rating, reviews count, price. This endpoint will provide you with a list of apps published on App Store along with additional information: its ID, icon, reviews count, rating, price, and other data. (DataForSEO · Apple App Store)","tags":["app-store","reviews & apps","dataforseo","extended","data"],"x-price":"$0.75","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"categories":{"type":"array","description":"app categories optional field the categories you specify are used to search for app listings; you can get the full list of available app listing categories by this link you can specify up to 10 categories","examples":[["Tools"]]},"description":{"type":"string","description":"keyword in the app’s description optional field keywords that occur in the description of the app; can contain up to 200 characters","examples":["vpn"]},"title":{"type":"string","description":"keyword in the app’s title optional field keywords that occur in the title of the app; can contain up to 200 characters","examples":["vpn"]},"filters":{"type":"array","description":"array of results filtering parameters optional field you can add several filters at once (8 filters maximum) you should set a logical operator and, or between the conditions the following operators are supported: regex, not_regex, , >=, =, ","examples":[[["item.rating.value",">",4.5]]]},"order_by":{"type":"array","description":"results sorting rules optional field you can use the same values as in the filters array to sort the results possible sorting types: asc – results will be sorted in the ascending order desc – results will be sorted in the descending order y","examples":[["item.rating.value,desc"]]},"limit":{"type":"integer","description":"the maximum number of returned apps optional field default value: 100 maximum value: 1000","examples":[2]},"offset":{"type":"integer","description":"offset in the results array of returned apps optional field default value: 0 if you specify the 10 value, the first ten entities in the results array will be omitted and the data will be provided for the successive entities Note: we recomme"},"offset_token":{"type":"string","description":"token for subsequent requests optional field provided in the identical filed of the response to each request; use this parameter to avoid timeouts while trying to obtain over 100,000 results in a single request; by specifying the unique off"},"tag":{"type":"string","description":"user-defined task identifier optional field the character limit is 255 you can use this parameter to identify the task and match it with the result you will find the specified tag value in the data object of the response"}},"additionalProperties":true,"description":"the POST body is a JSON array holding exactly one task object with these fields; a live route rejects extra tasks with status 40000 \"You can set only one task at a time\""},"example":{"title":"vpn","description":"vpn","categories":["Tools"],"order_by":["item.rating.value,desc"],"filters":[["item.rating.value",">",4.5]],"limit":2}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"dataforseo_x_app-data-apple-app-listings-search-live","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/p/leadsforge.linkedin.company.followers.filters.countries":{"post":{"operationId":"leadsforge_linkedin_company_followers_filters_countries","summary":"List follower country values. Get list of supported country values (LeadsForge · LinkedIn)","tags":["linkedin","social","leadsforge","company","followers","filters","data"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":true,"description":"no parameters; full country names, not ISO codes"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"leadsforge_linkedin_company_followers_filters_countries","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/p/leadsforge.linkedin.company.followers.filters.departments":{"post":{"operationId":"leadsforge_linkedin_company_followers_filters_departments","summary":"List follower department values. Get list of supported department values (LeadsForge · LinkedIn)","tags":["linkedin","social","leadsforge","company","followers","filters","data"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":true,"description":"no parameters; human-readable labels (Engineering, Marketing, …), NOT the underscored ids used by /search"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"leadsforge_linkedin_company_followers_filters_departments","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/p/leadsforge.linkedin.company.followers.filters.levels":{"post":{"operationId":"leadsforge_linkedin_company_followers_filters_levels","summary":"List follower seniority-level values. Get list of supported seniority level values (LeadsForge · LinkedIn)","tags":["linkedin","social","leadsforge","company","followers","filters","data"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":true,"description":"no parameters; CXO, Director, Senior, Entry Level, … — a different vocabulary from /search seniorities"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"leadsforge_linkedin_company_followers_filters_levels","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/p/leadsforge.linkedin.company.followers.filters.states":{"post":{"operationId":"leadsforge_linkedin_company_followers_filters_states","summary":"List follower state/region values. Get list of supported state/region values (LeadsForge · LinkedIn)","tags":["linkedin","social","leadsforge","company","followers","filters","data"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":true,"description":"no parameters; a long global list (Alabama, Bavaria, Aichi, …)"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"leadsforge_linkedin_company_followers_filters_states","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/p/litescrape.google.serp.organic":{"post":{"operationId":"litescrape_google_serp_organic","summary":"Search Google. Returns a Google results page as JSON: organic results plus every other result group Google served, such as ads, AI Overview, knowledge graph, and local results (Litescrape · Google Keyword Data)","tags":["google","seo/aeo","litescrape","serp","organic","data"],"x-price":"$0.001","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"fast_mode":{"type":"boolean","description":"Set true to return only organic_results, search_metadata, and search_parameters, skipping AI Overview and all other result groups. Only lowercase true or false are accepted.","default":false},"q":{"type":"string","description":"Search query, up to 2,048 characters. Required unless ludocid or kgmid is supplied.","examples":["coffee shops in Austin"]},"ludocid":{"type":"string","description":"Decimal Google CID for a local entity search. Can replace q.","examples":["1234567890123456789"]},"kgmid":{"type":"string","description":"Google Knowledge Graph machine ID, such as /m/0k8z. Can replace q.","examples":["/m/0k8z"]},"location":{"type":"string","description":"Human-readable search location, up to 512 characters. Use only one of location, uule, or lat and lon.","examples":["Austin, Texas, United States"]},"uule":{"type":"string","description":"Pre-encoded Google location token, up to 2,048 characters. Use only one of location, uule, or lat and lon."},"lat":{"type":"number","description":"Latitude between -90 and 90. Supply with lon; conflicts with location and uule.","examples":[30.2672]},"lon":{"type":"number","description":"Longitude between -180 and 180. Supply with lat; conflicts with location and uule.","examples":[-97.7431]},"radius":{"type":"number","description":"Search radius in meters around location or lat and lon, which it requires. 1 to 199 on desktop, 1 to 1,000 on tablet or mobile."},"lsig":{"type":"string","description":"Opaque Google local or Knowledge Graph signature, up to 4,096 characters."},"si":{"type":"string","description":"Opaque cached Google search context, up to 4,096 characters."},"ibp":{"type":"string","description":"Google layout or expansion control, up to 4,096 characters."},"uds":{"type":"string","description":"Opaque Google filter token, up to 4,096 characters."},"color_scheme":{"type":"string","description":"Google's light or dark result presentation.","enum":["light","dark"]},"google_domain":{"type":"string","description":"A Google domain from Google's supported list, such as google.com or google.co.uk.","default":"google.com","examples":["google.com"]},"gl":{"type":"string","description":"Lowercase two-letter country code used to localize results.","examples":["us"]},"hl":{"type":"string","description":"Google interface and result language, such as en, en-US, or de. Defaults to en.","default":"en","examples":["en"]},"cr":{"type":"string","description":"Country restriction: one or more countryXX values joined with |, such as countryUS.","examples":["countryUS"]},"lr":{"type":"string","description":"Language restriction: one or more lang_xx values joined with |, such as lang_en.","examples":["lang_en"]},"device":{"type":"string","description":"Google returns its real layout for the selected device: desktop, tablet, or mobile.","default":"desktop","enum":["desktop","tablet","mobile"],"examples":["desktop"]},"tbs":{"type":"string","description":"Google search-filter string, such as qdr:w, up to 4,096 characters."},"safe":{"type":"string","description":"Google adult-content filtering: active or off.","enum":["active","off"]},"nfpr":{"type":"string","description":"Set 1 to disable Google spelling auto-correction, or 0 to allow it.","enum":["0","1"]},"filter":{"type":"string","description":"Google similar-results filtering: 0 or 1.","enum":["0","1"]},"pws":{"type":"string","description":"Google personalization flag: 0 or 1. 0 asks for non-personalized results.","enum":["0","1"]},"peek_pws":{"type":"string","description":"Google personalization companion flag: 0 or 1, forwarded to Google unchanged.","enum":["0","1"]},"tbm":{"type":"string","description":"Google vertical: lcl, vid, nws, shop, or pts. Google Images (isch) is rejected with 400 unsupported_search_vertical.","enum":["lcl","vid","nws","shop","pts"]},"start":{"type":"integer","description":"Result offset for pagination. Defaults to 0.","default":0,"examples":[10]},"num":{"type":"integer","description":"Requested result count, 1 to 10. A best-effort hint: Google may return fewer rows, and results are never padded."},"as_dt":{"type":"string","description":"Include (i) or exclude (e) the as_sitesearch host. Requires as_sitesearch.","enum":["i","e"]},"as_epq":{"type":"string","description":"Exact phrase the results must contain, up to 2,048 characters."},"as_eq":{"type":"string","description":"Words the results must not contain, up to 2,048 characters."},"as_lq":{"type":"string","description":"Return pages that link to this complete HTTP(S) URL."},"as_nlo":{"type":"integer","description":"Lower bound of a number range. Supply with as_nhi."},"as_nhi":{"type":"integer","description":"Upper bound of a number range. Supply with as_nlo."},"as_oq":{"type":"string","description":"Additional terms of which any may match, up to 2,048 characters."},"as_q":{"type":"string","description":"Additional terms that must all match, up to 2,048 characters."},"as_qdr":{"type":"string","description":"Date range: d, w, m, or y with an optional positive count, such as m3 for the past three months.","examples":["m3"]},"as_rq":{"type":"string","description":"Return pages related to this complete HTTP(S) URL."},"as_sitesearch":{"type":"string","description":"Hostname to include or exclude, such as example.com. A hostname, not a URL.","examples":["example.com"]},"oq":{"type":"string","description":"Original query text from a Google URL, up to 2,048 characters; forwarded unchanged."},"gs_lp":{"type":"string","description":"Opaque Google autocomplete-session value from a Google URL, up to 4,096 characters; forwarded unchanged."},"sclient":{"type":"string","description":"Google client label such as gws-wiz-serp: up to 64 letters, digits, dots, underscores, or hyphens."},"timeout":{"type":"number","description":"Optional budget for the entire request in seconds, measured from gateway receipt until the response is ready to send. Includes admission, queueing and settlement. Must be greater than 0 and at most 90. On expiry, the call is not billed and "}},"additionalProperties":true},"example":{"q":"coffee shops in Austin","ludocid":"1234567890123456789","kgmid":"/m/0k8z","location":"Austin, Texas, United States","lat":30.2672,"lon":-97.7431,"google_domain":"google.com","gl":"us","hl":"en","cr":"countryUS","lr":"lang_en","device":"desktop","start":10,"as_qdr":"m3","as_sitesearch":"example.com"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"litescrape_google_serp_organic","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/p/marketstack.dividends":{"post":{"operationId":"marketstack_dividends","summary":"Dividend history by stock ticker — ex-dates, amounts. Dividend payments for a ticker with ex-date and amount (Marketstack · Stock Market Data)","tags":["stocks","market data","marketstack","actions","dividends","data"],"x-price":"$0.001249","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"symbols":{"type":"string","examples":["AAPL"]},"limit":{"type":"integer"},"date_from":{"type":"string"},"date_to":{"type":"string"}},"additionalProperties":true,"required":["symbols"]},"example":{"symbols":"AAPL"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"marketstack_dividends","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/p/marketstack.splits":{"post":{"operationId":"marketstack_splits","summary":"Stock split history by ticker — dates and ratios. Split events for a ticker with date and ratio (Marketstack · Stock Market Data)","tags":["stocks","market data","marketstack","actions","splits","data"],"x-price":"$0.001249","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"symbols":{"type":"string","examples":["AAPL"]},"limit":{"type":"integer"},"date_from":{"type":"string"},"date_to":{"type":"string"}},"additionalProperties":true,"required":["symbols"]},"example":{"symbols":"AAPL"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"marketstack_splits","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/p/marketstack.eod":{"post":{"operationId":"marketstack_eod","summary":"End-of-day stock prices by ticker — OHLCV, date range. Daily open/high/low/close/volume for one or more tickers, with date range and adjusted values — 70+ exchanges worldwide (Marketstack · Stock Market Data)","tags":["stocks","market data","marketstack","eod","history","data"],"x-price":"$0.001249","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"symbols":{"type":"string","description":"comma-separated tickers (AAPL,MSFT); non-US symbols carry the exchange MIC (BMW.XETRA)","examples":["AAPL"]},"date_from":{"type":"string","description":"YYYY-MM-DD"},"date_to":{"type":"string","description":"YYYY-MM-DD"},"limit":{"type":"integer","description":"rows per page, default 100, max 1000"},"offset":{"type":"integer"},"sort":{"type":"string","description":"DESC (default) | ASC"}},"additionalProperties":true,"required":["symbols"]},"example":{"symbols":"AAPL"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"marketstack_eod","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/p/marketstack.eod.latest":{"post":{"operationId":"marketstack_eod_latest","summary":"Latest closing price by stock ticker — end-of-day bar. The most recent end-of-day bar for one or more tickers — the quick 'what did it close at' (Marketstack · Stock Market Data)","tags":["stocks","market data","marketstack","eod","latest","data"],"x-price":"$0.001249","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"symbols":{"type":"string","examples":["AAPL,MSFT"]}},"additionalProperties":true,"required":["symbols"]},"example":{"symbols":"AAPL,MSFT"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"marketstack_eod_latest","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/p/marketstack.exchanges":{"post":{"operationId":"marketstack_exchanges","summary":"Stock exchange directory — MIC codes, countries. The exchanges marketstack covers, each with MIC code, country and timezone (Marketstack · Stock Market Data)","tags":["stocks","market data","marketstack","exchanges","list","data"],"x-price":"$0.001249","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"search":{"type":"string"},"limit":{"type":"integer"},"offset":{"type":"integer"}},"additionalProperties":true}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"marketstack_exchanges","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/p/marketstack.intraday":{"post":{"operationId":"marketstack_intraday","summary":"Intraday stock price bars by ticker — hourly to 1-minute. Intraday bars for a ticker (hourly by default). On the Basic plan this is DELAYED data, not real-time (Marketstack · Stock Market Data)","tags":["stocks","market data","marketstack","intraday","data"],"x-price":"$0.001249","x-payment":"x402 | credits","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"symbols":{"type":"string","examples":["AAPL"]},"interval":{"type":"string","description":"1min | 5min | 15min | 30min | 1hour (default) | 3hour | 6hour | 12hour | 24hour"},"limit":{"type":"integer"},"date_from":{"type":"string"},"date_to":{"type":"string"}},"additionalProperties":true,"required":["symbols"]},"example":{"symbols":"AAPL"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"ok":true,"tool":"marketstack_intraday","ms":420}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment required: x402 (see PAYMENT-REQUIRED header) or insufficient credits (JSON error insufficient_credits)."}}}},"/v1/account":{"get":{"operationId":"account","summary":"Balance, keys and ledger of the calling key's account (agent keys see only their own entries).","security":[{"apiKey":[]}],"parameters":[{"name":"limit","in":"query","schema":{"type":"integer","maximum":500}}],"responses":{"200":{"description":"Account","content":{"application/json":{}}}}}},"/v1/calls":{"get":{"operationId":"listCalls","summary":"Paid calls, newest first, with cost, key and input summary.","security":[{"apiKey":[]}],"parameters":[{"name":"days","in":"query","schema":{"type":"integer"}},{"name":"tool","in":"query","schema":{"type":"string"}},{"name":"key","in":"query","schema":{"type":"string"}},{"name":"limit","in":"query","schema":{"type":"integer"}},{"name":"before","in":"query","schema":{"type":"integer"}}],"responses":{"200":{"description":"Calls","content":{"application/json":{}}}}}},"/v1/calls/{id}":{"get":{"operationId":"getCall","summary":"One paid call with its stored answer (kept 24 h).","security":[{"apiKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Call","content":{"application/json":{}}},"404":{"description":"Not found","content":{"application/json":{}}}}}},"/v1/calls/{id}/review":{"post":{"operationId":"reviewCall","summary":"Rate a paid call: was the answer useful? Moves tool ranking.","security":[{"apiKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"useful":{"type":"boolean"},"reason":{"type":"string"}},"required":["useful"]}}}},"responses":{"200":{"description":"Saved","content":{"application/json":{}}}}}},"/v1/reviews":{"post":{"operationId":"reviewX402Call","summary":"Rate a call paid with x402, identified by its settlement transaction.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"tx":{"type":"string"},"useful":{"type":"boolean"},"reason":{"type":"string"}},"required":["tx","useful"]}}}},"responses":{"200":{"description":"Saved","content":{"application/json":{}}}}}},"/v1/jobs":{"get":{"operationId":"listJobs","summary":"Async generation tasks (image, video) of this key.","security":[{"apiKey":[]}],"responses":{"200":{"description":"Jobs","content":{"application/json":{}}}}}},"/v1/jobs/{id}":{"get":{"operationId":"getJob","summary":"Status of an async generation task; result URLs when succeeded, refund when failed.","security":[{"apiKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Job","content":{"application/json":{}}},"404":{"description":"Not found","content":{"application/json":{}}}}}},"/v1/keys":{"get":{"operationId":"listKeys","summary":"API keys of the account (owner key only).","security":[{"apiKey":[]}],"responses":{"200":{"description":"Keys","content":{"application/json":{}}}}},"post":{"operationId":"createKey","summary":"Create an agent key with an optional daily cap (owner key only). The key is returned once.","security":[{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"dailyCapUsd":{"type":"number"}}}}}},"responses":{"201":{"description":"Created","content":{"application/json":{}}}}}},"/v1/keys/{id}":{"patch":{"operationId":"updateKey","summary":"Rename, re-cap or disable a key (owner key only).","security":[{"apiKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"dailyCapUsd":{"type":["number","null"]},"disabled":{"type":"boolean"}}}}}},"responses":{"200":{"description":"Updated","content":{"application/json":{}}}}},"delete":{"operationId":"deleteKey","summary":"Delete an agent key (owner key only).","security":[{"apiKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Deleted","content":{"application/json":{}}}}}},"/v1/account/auto-topup":{"post":{"operationId":"setAutoTopUp","summary":"Turn automatic top-up on ({usd, belowUsd}) or off ({enabled:false}); the first time returns a checkoutUrl to save the card (owner key only).","security":[{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"usd":{"type":"number"},"belowUsd":{"type":"number"},"enabled":{"type":"boolean"}}}}}},"responses":{"200":{"description":"Settings","content":{"application/json":{}}},"202":{"description":"Checkout needed","content":{"application/json":{}}}}}}}}