{"service":"2s","description":"The (most) everything API — one pay-per-call API giving AI agents ground-truth data across hundreds of endpoints, settled in USDC on Base or Solana via x402. No accounts, no API keys.","auth":{"flows":[{"kind":"x402","description":"HTTP-native per-call payments. Call the endpoint with no auth, receive 402 with a multi-network PaymentRequirements envelope (Base USDC + Solana USDC). Sign either EIP-3009 transferWithAuthorization (Base) OR a partial SPL token transfer (Solana). Retry with PAYMENT-SIGNATURE header (X-PAYMENT also accepted for v1 clients).","version":2,"network":"base-sepolia","asset":"USDC","facilitator":"https://api.cdp.coinbase.com/platform/v2/x402","spec":"https://x402.org","networks":[{"network":"base-sepolia","caip2":"eip155:84532","asset":"USDC"},{"network":"solana","caip2":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","asset":"USDC"}]}]},"pricing":{"currency":"USD","settlement":"USDC on Base","note":"USDC on Base, settled per-call via the x402 facilitator (EIP-3009 transferWithAuthorization). No prefunded account required for x402 callers."},"endpoints":[{"id":"agent.knowledge-delta","group":"agent","description":"What's happened in a given topic since a given date? Pass a free-text topic + ISO date; receive a deduplicated, ranked list of recent events drawn from US federal regulations, US House + Senate roll-call votes, academic papers (arXiv + PubMed + Semantic Scholar), and federal court opinions. Each event includes title, 1-2 sentence summary, date, source label, source URL, and a 1-5 significance score. Designed so an AI agent can spend one call to catch up on a domain since its LLM training cutoff. LLM-backed source routing and synthesis.","versions":[{"version":null,"path":"/api/agent/knowledge-delta","method":"POST","deprecated":false,"price":{"usd":0.06},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"topic":{"type":"string","minLength":2,"maxLength":200,"description":"Free-text domain. Examples: \"oncology immunotherapy\", \"Rust language ecosystem\", \"SEC enforcement against crypto exchanges\"."},"since":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Earliest date (YYYY-MM-DD). Typically the agent's LLM training cutoff date."},"until":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Latest date (YYYY-MM-DD). Default = today."},"maxEvents":{"type":"integer","minimum":1,"maximum":50,"default":20,"description":"Max events to return (1-50). Default 20."}},"required":["topic","since"],"additionalProperties":false}}]},{"id":"agriculture.drought","group":"agriculture","description":"US Drought Monitor severity for a county (5-digit FIPS) or state (2-letter code). Returns the weekly percent of area in each drought category — None, D0 (Abnormally Dry), D1 (Moderate), D2 (Severe), D3 (Extreme), D4 (Exceptional) — newest week first, plus the worst category present each week. Keyless, public-domain (NDMC/USDA/NOAA). This is the official metric behind USDA disaster-program eligibility; use for crop-risk, water, and insurance reasoning.","versions":[{"version":null,"path":"/api/agriculture/drought","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"area":{"type":"string","minLength":2,"maxLength":5},"weeks":{"type":"integer","minimum":1,"maximum":260}},"required":["area"],"additionalProperties":false}}]},{"id":"agriculture.stats","group":"agriculture","description":"USDA NASS QuickStats — authoritative US agricultural statistics: crop yields, acreage, production, livestock inventory, and prices received. Filter by commodity (e.g. CORN, SOYBEANS, CATTLE), year (or year__GE/year__LE range), state (2-letter), county, statistic category (YIELD, PRODUCTION, AREA HARVESTED, PRICE RECEIVED), and aggregation level (NATIONAL/STATE/COUNTY). Returns normalized rows with value + unit. QuickStats caps results at 50,000 rows, so narrow broad queries (a 400 RESULT_TOO_LARGE tells you to add filters). Public-domain federal data.","versions":[{"version":null,"path":"/api/agriculture/stats","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"commodity_desc":{"type":"string","minLength":2,"maxLength":60},"year":{"type":"string","pattern":"^\\d{4}$"},"year__GE":{"type":"string","pattern":"^\\d{4}$"},"year__LE":{"type":"string","pattern":"^\\d{4}$"},"state_alpha":{"type":"string","minLength":2,"maxLength":2},"county_name":{"type":"string","maxLength":60},"statisticcat_desc":{"type":"string","maxLength":60},"agg_level_desc":{"type":"string","maxLength":30},"short_desc":{"type":"string","maxLength":200},"freq_desc":{"type":"string","maxLength":20}},"required":["commodity_desc"],"additionalProperties":false}}]},{"id":"ai.chat","group":"ai","description":"OpenAI-compatible chat completions across every frontier model on one endpoint — GPT-5, Claude, Gemini, Grok, DeepSeek, Llama, Mistral and ~290 more. POST { model, messages, max_tokens?, temperature?, top_p?, stop? } and get back a standard chat.completion (choices[].message + usage). Pay per call in USDC via x402 — no accounts, no provider keys, no subscriptions. Price scales with the model and max_tokens and is quoted in the 402. List selectable models at GET /api/ai/models.","versions":[{"version":null,"path":"/api/ai/chat","method":"POST","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"legacy","billing":"actual-usage-upto-max","params":{"type":"object","properties":{"model":{"type":"string","minLength":1,"maxLength":80,"description":"Gateway model id, e.g. openai/gpt-5, anthropic/claude-opus-4.8, google/gemini-3-pro-preview. Full list: GET /api/ai/models."},"messages":{"type":"array","items":{"type":"object","properties":{"role":{"type":"string","enum":["system","user","assistant"]},"content":{"type":"string"}},"required":["role","content"],"additionalProperties":false},"minItems":1,"description":"OpenAI-style message list."},"max_tokens":{"type":"integer","minimum":1,"maximum":8192,"description":"Max output tokens (default 1024)."},"temperature":{"type":"number","minimum":0,"maximum":2},"top_p":{"type":"number","minimum":0,"maximum":1},"stop":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}},"required":["model","messages"],"additionalProperties":false}}]},{"id":"ai.classify","group":"ai","description":"Zero-shot text classification. POST { text, labels[], multiLabel? }. Assigns the text to one of your labels (or several when multiLabel=true) with a confidence score and a one-line rationale. No training data needed — define the labels at call time. Great for routing, tagging, triage, and intent detection.","versions":[{"version":null,"path":"/api/ai/classify","method":"POST","deprecated":false,"price":{"usd":0.018},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":12000},"labels":{"type":"array","items":{"type":"string","minLength":1,"maxLength":60},"minItems":2,"maxItems":20,"description":"Candidate labels to choose from."},"multiLabel":{"type":"boolean","description":"Allow multiple labels (default single)."}},"required":["text","labels"],"additionalProperties":false}}]},{"id":"ai.council","group":"ai","description":"Ask several frontier models the same question and get one synthesized answer. Choose a preset council — fast (3 quick models), balanced (3 strong models with a peer-refine round), or deep (5 models plus refine) — or supply your own set of 2–8 models. A chairman model merges the responses into a single consensus with a confidence score and any points of dissent, and each member’s individual answer is returned alongside. Price scales with the council size and answer length, and is quoted up front in the 402. Models auto-resolve to their latest available version; any unavailable model simply drops out (at least 2 are needed).","versions":[{"version":null,"path":"/api/ai/council","method":"POST","deprecated":false,"price":{"usd":0.012},"accepts":["x402"],"responseShape":"normalized","billing":"actual-usage-upto-max","params":{"type":"object","properties":{"prompt":{"type":"string","minLength":1,"maxLength":12000,"description":"The question to put to the council."},"mode":{"type":"string","enum":["fast","balanced","deep"],"description":"Preset council. Default balanced. Ignored if `models` is given."},"models":{"type":"array","items":{"type":"string","minLength":1,"maxLength":80},"minItems":2,"maxItems":8,"description":"Custom council of 2–8 gateway model ids, e.g. [\"openai/gpt-5\",\"anthropic/claude-opus\",\"google/gemini-3-pro\"] (overrides `mode`). Full selectable list + live prices: GET /api/ai/council/menu."},"maxTokens":{"type":"integer","minimum":128,"maximum":4096,"description":"Max output tokens per model. Default 640."}},"required":["prompt"],"additionalProperties":false}}]},{"id":"ai.describe-image","group":"ai","description":"Describe an image. POST { imageUrl, instruction? }. Returns { imageUrl, altText (5-15 word accessibility text), description (2-3 sentences), contentType (photograph|illustration|screenshot|diagram|document|mixed|other), text (verbatim OCR transcription, \"\" if none), mainObjects[], dominantColors[] (hex) }. Accepts JPEG, PNG, GIF, WebP. 1MB image size cap.","versions":[{"version":null,"path":"/api/ai/describe-image","method":"POST","deprecated":false,"price":{"usd":0.018},"accepts":["x402"],"responseShape":"normalized","billing":"actual-usage-upto-max","params":{"type":"object","properties":{"imageUrl":{"type":"string","format":"uri","maxLength":2048,"description":"HTTPS URL of a JPEG, PNG, GIF, or WebP image (≤1MB)."},"instruction":{"type":"string","maxLength":1000,"description":"Optional caller-supplied focus hint, e.g. \"describe the chart axes\"."}},"required":["imageUrl"],"additionalProperties":false}}]},{"id":"ai.entities","group":"ai","description":"Named-entity recognition. POST { text }. Extracts people, organizations, locations, dates, money, products, laws, events and more — each with a standard type and mention count. For knowledge extraction, redaction prep, and document indexing.","versions":[{"version":null,"path":"/api/ai/entities","method":"POST","deprecated":false,"price":{"usd":0.036},"accepts":["x402"],"responseShape":"normalized","billing":"actual-usage-upto-max","params":{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":12000}},"required":["text"],"additionalProperties":false}}]},{"id":"ai.extract","group":"ai","description":"Extract structured data from a webpage. POST { url, schema, instruction? }. The schema is a JSON Schema object (top-level type:\"object\") describing the shape you want back; output is guaranteed to conform. Returns { url, finalUrl, extracted, meta:{ truncated } }.","versions":[{"version":null,"path":"/api/ai/extract","method":"POST","deprecated":false,"price":{"usd":0.075},"accepts":["x402"],"responseShape":"normalized","billing":"actual-usage-upto-max","params":{"type":"object","properties":{"url":{"type":"string","format":"uri","maxLength":2048},"schema":{"type":"object","additionalProperties":{}},"instruction":{"type":"string","maxLength":2000}},"required":["url","schema"],"additionalProperties":false}}]},{"id":"ai.image","group":"ai","description":"Generate images from a text prompt across the gateway’s image models (gpt-image, Gemini image, FLUX, Grok Imagine, …) on one endpoint. POST { model, prompt, n?, size? } → OpenAI-style { created, data: [{ b64_json }] }. Pay per call in USDC via x402 — no accounts or provider keys. Priced per model from $0.03/image (quoted in the 402). List models at GET /api/ai/models.","versions":[{"version":null,"path":"/api/ai/image","method":"POST","deprecated":false,"price":{"usd":0.036},"accepts":["x402"],"responseShape":"legacy","params":{"type":"object","properties":{"model":{"type":"string","minLength":1,"maxLength":80,"description":"Gateway image model id, e.g. openai/gpt-image-1, google/gemini-3-pro-image, black-forest-labs/flux-1.1-pro."},"prompt":{"type":"string","minLength":1,"maxLength":4000,"description":"Text prompt."},"n":{"type":"integer","minimum":1,"maximum":4,"description":"Number of images (1-4, default 1)."},"size":{"type":"string","maxLength":16,"description":"Optional WxH, e.g. 1024x1024."}},"required":["model","prompt"],"additionalProperties":false}}]},{"id":"ai.moderate","group":"ai","description":"Content moderation. POST { text }. Flags content across categories — hate, harassment, sexual, sexual/minors, violence, self-harm, dangerous, illicit — with a per-category boolean and 0..1 severity score, plus an overall flagged verdict. For UGC filtering, trust & safety, and pre-publish checks.","versions":[{"version":null,"path":"/api/ai/moderate","method":"POST","deprecated":false,"price":{"usd":0.018},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":12000}},"required":["text"],"additionalProperties":false}}]},{"id":"ai.ocr","group":"ai","description":"OCR + layout extraction. POST { imageUrl, instruction? }. Returns verbatim transcribed text in reading order, any detected tables as markdown, the primary language, and a handwriting flag. For reading receipts, forms, screenshots, scanned pages, and labels. JPEG/PNG/GIF/WebP.","versions":[{"version":null,"path":"/api/ai/ocr","method":"POST","deprecated":false,"price":{"usd":0.036},"accepts":["x402"],"responseShape":"normalized","billing":"actual-usage-upto-max","params":{"type":"object","properties":{"imageUrl":{"type":"string","format":"uri","maxLength":2048,"description":"Public image URL (JPEG/PNG/GIF/WebP)."},"instruction":{"type":"string","maxLength":500,"description":"Optional steering, e.g. \"only the table\" or \"preserve line numbers\"."}},"required":["imageUrl"],"additionalProperties":false}}]},{"id":"ai.pii","group":"ai","description":"PII detection. POST { text }. Finds personally identifiable information — names, emails, phones, addresses, SSNs, credit cards, bank/IP/passport/DOB and more — returning each finding with its type and exact substring so you can redact it. For compliance, logging hygiene, and data-minimization before storing or sending text.","versions":[{"version":null,"path":"/api/ai/pii","method":"POST","deprecated":false,"price":{"usd":0.03},"accepts":["x402"],"responseShape":"normalized","billing":"actual-usage-upto-max","params":{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":12000}},"required":["text"],"additionalProperties":false}}]},{"id":"ai.research","group":"ai","description":"Grounded research brief. POST { query, urls? }. Gathers sources (Wikipedia + any URLs you supply), then synthesizes a factual, cited brief: a 2-4 sentence summary, key facts, and the source list. Grounded only in the fetched sources (no free-form invention). For agent research, due diligence, and topic primers.","versions":[{"version":null,"path":"/api/ai/research","method":"POST","deprecated":false,"price":{"usd":0.042},"accepts":["x402"],"responseShape":"normalized","billing":"actual-usage-upto-max","params":{"type":"object","properties":{"query":{"type":"string","minLength":2,"maxLength":400,"description":"Topic, entity, or question to research."},"urls":{"type":"array","items":{"type":"string","format":"uri","maxLength":2048},"maxItems":5,"description":"Optional source URLs to ground the brief in, alongside Wikipedia."}},"required":["query"],"additionalProperties":false}}]},{"id":"ai.screenshot","group":"ai","description":"Render a URL as a screenshot. POST { url, width?, height?, fullPage?, format?, quality?, waitUntil?, timeoutMs?, deviceScaleFactor?, blockAds? }. Returns raw image bytes (no JSON envelope) with X-2s-Render-Ms and X-2s-Image-Bytes headers. Viewport clamped 320-3840 × 320-2160. Timeout clamped 1-15s. Defaults: 1280×720 PNG, networkidle2 wait, ad-blocking on. Use cases: visual verification, archival, change detection, OG-card generation, RSS thumbnails.","versions":[{"version":null,"path":"/api/ai/screenshot","method":"POST","deprecated":false,"price":{"usd":0.0075},"accepts":["x402"],"responseShape":"legacy","params":{"type":"object","properties":{"url":{"type":"string","format":"uri","maxLength":2048,"description":"HTTPS URL to render."},"width":{"type":"integer","minimum":320,"maximum":3840,"description":"Viewport width (320-3840). Default 1280."},"height":{"type":"integer","minimum":320,"maximum":2160,"description":"Viewport height (320-2160). Default 720."},"fullPage":{"type":"boolean","description":"Capture the full scrollable page instead of the viewport."},"format":{"type":"string","enum":["png","jpeg","webp"],"description":"Image format. Default png."},"quality":{"type":"integer","minimum":1,"maximum":100,"description":"JPEG/WebP quality 1-100. Ignored for PNG."},"waitUntil":{"type":"string","enum":["load","domcontentloaded","networkidle0","networkidle2"],"description":"Wait condition before snap. Default networkidle2."},"timeoutMs":{"type":"integer","minimum":1000,"maximum":15000,"description":"Render timeout in milliseconds (1000-15000). Default 8000."},"deviceScaleFactor":{"type":"integer","minimum":1,"maximum":3,"description":"Pixel density multiplier 1-3. Default 1."},"blockAds":{"type":"boolean","description":"Block ads + trackers. Default true."}},"required":["url"],"additionalProperties":false}}]},{"id":"ai.sentiment","group":"ai","description":"Sentiment analysis. POST { text }. Returns overall sentiment (positive/negative/neutral/mixed), a polarity score from -1 to 1, a confidence, and a one-line rationale. For reviews, social posts, support messages, and feedback triage.","versions":[{"version":null,"path":"/api/ai/sentiment","method":"POST","deprecated":false,"price":{"usd":0.018},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":12000}},"required":["text"],"additionalProperties":false}}]},{"id":"ai.summarize","group":"ai","description":"Summarize a webpage. POST { url, instruction? }. Returns { url, finalUrl, summary (1-3 sentences), keyPoints (3-7 bullets), title, audience, estimatedReadingMinutes, meta:{ truncated } }. Sibling to /api/ai/extract — use extract when you need a typed payload conforming to your own schema; use summarize when you want a ready-made digest. Supports x402 upto billing: authorize the quoted max, pay only your actual usage.","versions":[{"version":null,"path":"/api/ai/summarize","method":"POST","deprecated":false,"price":{"usd":0.063},"accepts":["x402"],"responseShape":"normalized","billing":"actual-usage-upto-max","params":{"type":"object","properties":{"url":{"type":"string","format":"uri","maxLength":2048},"instruction":{"type":"string","maxLength":1000}},"required":["url"],"additionalProperties":false}}]},{"id":"ai.translate","group":"ai","description":"Translate text. POST { text, targetLanguage, sourceLanguage? } — language codes are BCP-47 (e.g. \"en\", \"es-MX\", \"zh-Hans\"). Source auto-detected when omitted. Returns { text, targetLanguage, detectedSourceLanguage, confidence (high|medium|low) }. Best for short-to-medium passages; chunk long documents on your side.","versions":[{"version":null,"path":"/api/ai/translate","method":"POST","deprecated":false,"price":{"usd":0.0282},"accepts":["x402"],"responseShape":"normalized","billing":"actual-usage-upto-max","params":{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":6000,"description":"Source text to translate (1-6000 chars)."},"targetLanguage":{"type":"string","minLength":2,"maxLength":20,"description":"Target language as BCP-47 (e.g. \"en\", \"es-MX\", \"zh-Hans\")."},"sourceLanguage":{"type":"string","minLength":2,"maxLength":20,"description":"Source language as BCP-47. Auto-detected when omitted."}},"required":["text","targetLanguage"],"additionalProperties":false}}]},{"id":"ai.web-answer","group":"ai","description":"Answer a question from the live web. POST { query, topic?, maxResults? }. Runs a deep web search and returns a synthesized, citation-backed answer plus the ranked source pages (title, URL, snippet). For up-to-the-minute questions an LLM alone can't answer — news, prices, current events, recent releases. topic=news biases toward recent reporting.","versions":[{"version":null,"path":"/api/ai/web-answer","method":"POST","deprecated":false,"price":{"usd":0.033},"accepts":["x402"],"responseShape":"normalized","billing":"actual-usage-upto-max","params":{"type":"object","properties":{"query":{"type":"string","minLength":2,"maxLength":400},"topic":{"type":"string","enum":["general","news"]},"maxResults":{"type":"integer","minimum":1,"maximum":10}},"required":["query"],"additionalProperties":false}}]},{"id":"aircraft.lookup","group":"aircraft","description":"Look up a US-registered aircraft by tail number (N-number, e.g. N757F) or icao24 Mode-S hex (e.g. aa3487). Pass exactly one of `tail` or `icao24`. Returns the airframe: registration, manufacturer, model, ICAO type code + class, serial number, operator, owner, build year, engines, category, plus the icao24 Mode-S address that ADS-B transponders broadcast — use it to join live flight-tracking feeds. ~307k US airframes. 404 if no match. Source: OpenSky Network aircraft database (CC-BY-SA).","versions":[{"version":null,"path":"/api/aircraft/lookup","method":"GET","deprecated":false,"price":{"usd":0.00144},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"tail":{"type":"string","pattern":"^[Nn][0-9A-Za-z]{1,5}$"},"icao24":{"type":"string","pattern":"^[0-9a-fA-F]{6}$"}},"additionalProperties":false}}]},{"id":"aircraft.profile","group":"aircraft","description":"Identify a US-registered aircraft by tail (N-number) or icao24 Mode-S hex, AND screen its owner and operator against the OFAC sanctions list — in one call. Returns the full aircraft record (registration, manufacturer, model, type, serial, owner, operator, year built) plus a sanctions screen of the owner and operator names against OFAC SDN, with fuzzy-match confidence and a flagged boolean. OSINT, asset-tracing, sanctions-evasion investigation, due diligence. Composition of /api/aircraft/lookup + /api/law/sanctions-check (the sanctions section reports found/error independently). Note: screening is name-based and probabilistic — review flagged matches manually.","versions":[{"version":null,"path":"/api/aircraft/profile","method":"GET","deprecated":false,"price":{"usd":0.00432},"accepts":["x402"],"responseShape":"legacy","params":{"type":"object","properties":{"tail":{"type":"string","minLength":2,"maxLength":10},"icao24":{"type":"string","pattern":"^[0-9a-fA-F]{6}$"},"threshold":{"type":"number","minimum":0.1,"maximum":1,"default":0.5}},"additionalProperties":false}}]},{"id":"airport.lookup","group":"airport","description":"Look up an airport by 3-letter IATA (e.g. SFO) or 4-letter ICAO (e.g. KSFO) code. Query: code (3-5 chars, alphanumeric). Returns { airport: { id, ident, type, name, latitude, longitude, elevationFt, continent, isoCountry, isoRegion, municipality, scheduledService, icaoCode, iataCode, gpsCode, localCode, wikipediaLink } } or 404 NOT_FOUND.","versions":[{"version":null,"path":"/api/airport/lookup","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"code":{"type":"string","minLength":3,"maxLength":5,"description":"3-letter IATA or 4-letter ICAO airport code (e.g. SFO, KSFO)."}},"required":["code"],"additionalProperties":false}}]},{"id":"airport.near","group":"airport","description":"Airports within a radius of a coordinate, sorted by distance. Query: lat (-90..90), lon (-180..180), radius_km (1-2000, default 200), limit (1-100, default 20), type (optional: large_airport|medium_airport|small_airport|heliport|seaplane_base|balloonport|closed), country (optional 2-letter ISO 3166-1), scheduled_service (optional bool, true = commercial-service airports only). Returns { query, count, airports: [{ id, ident, name, iataCode, icaoCode, type, latitude, longitude, distanceKm, ... }] }.","versions":[{"version":null,"path":"/api/airport/near","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"lat":{"type":"number","minimum":-90,"maximum":90,"description":"Latitude in decimal degrees (-90 to 90)."},"lon":{"type":"number","minimum":-180,"maximum":180,"description":"Longitude in decimal degrees (-180 to 180)."},"radius_km":{"type":"number","minimum":1,"maximum":2000,"default":200,"description":"Search radius in kilometers (1-2000). Default 200."},"limit":{"type":"integer","minimum":1,"maximum":100,"default":20,"description":"Max airports to return (1-100). Default 20."},"type":{"type":"string","enum":["large_airport","medium_airport","small_airport","heliport","seaplane_base","balloonport","closed"],"description":"Filter by airport type."},"country":{"type":"string","pattern":"^[A-Z]{2}$","description":"Filter by ISO 3166-1 alpha-2 country code (e.g. US)."},"scheduled_service":{"type":"boolean","description":"When true, only commercial-service airports."}},"required":["lat","lon"],"additionalProperties":false}}]},{"id":"aviation.accidents","group":"aviation","description":"Search the NTSB civil aviation accident & incident database (CAROL) — US events from 1962 to present plus selected foreign investigations. Filter by aircraft registration (N-number, partial match), US state (2-letter code or name), make, model, city, and/or event date range (dateFrom/dateTo as YYYY-MM-DD). At least one filter is required. Returns matching events newest-first: NTSB number, event date/type, city/state/country, aircraft registration(s)/make(s)/model(s), highest injury level, onboard & on-ground injury counts, report type/status, and a link to the official NTSB case page. Data: NTSB (U.S. public domain), live. For aviation safety research, fleet/tail-number history, incident due-diligence, and accident-trend analysis.","versions":[{"version":null,"path":"/api/aviation/accidents","method":"GET","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"legacy","params":{"type":"object","properties":{"registration":{"type":"string","minLength":1,"maxLength":20,"description":"Aircraft registration / N-number (partial match)."},"state":{"type":"string","minLength":2,"maxLength":40,"description":"US state, 2-letter code or full name."},"make":{"type":"string","minLength":1,"maxLength":60,"description":"Aircraft make (partial match), e.g. Cessna."},"model":{"type":"string","minLength":1,"maxLength":60,"description":"Aircraft model (partial match), e.g. 172."},"city":{"type":"string","minLength":1,"maxLength":80,"description":"Event city (partial match)."},"dateFrom":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Earliest event date, YYYY-MM-DD."},"dateTo":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Latest event date, YYYY-MM-DD."},"limit":{"type":"integer","minimum":1,"maximum":100,"default":25,"description":"Max records to return (1-100, default 25)."}},"additionalProperties":false}}]},{"id":"aviation.metar","group":"aviation","description":"Current aviation weather observation (METAR) for one or more airports. Pass ids = comma-separated ICAO station ids (e.g. KATL, EGLL, KJFK). Returns the raw METAR plus decoded fields: flight category (VFR/MVFR/IFR/LIFR), temperature + dewpoint (°C), wind direction/speed/gust (kt), visibility, altimeter (inHg), and cloud layers. Source: NOAA Aviation Weather Center (keyless, public domain).","versions":[{"version":null,"path":"/api/aviation/metar","method":"GET","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"ids":{"type":"string","minLength":3,"maxLength":120}},"required":["ids"],"additionalProperties":false}}]},{"id":"aviation.sigmet","group":"aviation","description":"Active in-flight weather hazard advisories (SIGMETs and AIRMETs) from the NOAA Aviation Weather Center. Returns current advisories over a lookback window (1-24h), optionally filtered by hazard (CONVECTIVE, TURB turbulence, ICE icing, IFR, MTN OBSCN mountain obscuration, ASH volcanic ash). Each advisory carries the issuing office, type (SIGMET/AIRMET/OUTLOOK), hazard, severity, valid-from/to times, affected altitude band (feet MSL), movement (direction/speed), and the raw text bulletin. Keyless, public-domain (NOAA). The active-hazard layer aviation agents need — distinct from aviation.metar (station conditions) and aviation.taf (forecasts). Not for navigation.","versions":[{"version":null,"path":"/api/aviation/sigmet","method":"GET","deprecated":false,"price":{"usd":0.00108},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"hazard":{"type":"string","minLength":2,"maxLength":20},"hours":{"type":"integer","minimum":1,"maximum":24},"limit":{"type":"integer","minimum":1,"maximum":50}},"additionalProperties":false}}]},{"id":"aviation.taf","group":"aviation","description":"Terminal Aerodrome Forecast (TAF) for one or more airports — the official aviation forecast issued for an airport (~24–30h ahead). Pass ids = comma-separated ICAO station ids (e.g. KATL). Returns the raw TAF text + issue time. Source: NOAA Aviation Weather Center (keyless). For current conditions use aviation.metar.","versions":[{"version":null,"path":"/api/aviation/taf","method":"GET","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"ids":{"type":"string","minLength":3,"maxLength":120}},"required":["ids"],"additionalProperties":false}}]},{"id":"bank.lookup","group":"bank","description":"FDIC-insured US bank directory lookup. Lookup by name (fuzzy match), FDIC certificate number, RSSD ID, or state. Each record includes name + short name, web address, active flag, city/state/county/zip, established + insured dates, charter class, bank class, primary federal regulator, number of branches, assets and deposits ($1000s), and closed-date + reason for inactive institutions. Public-domain FDIC data, free.","versions":[{"version":null,"path":"/api/bank/lookup","method":"GET","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"name":{"type":"string","minLength":2,"maxLength":200},"cert":{"type":"string","pattern":"^\\d{1,7}$"},"rssdId":{"type":"string","pattern":"^\\d{1,10}$"},"state":{"type":"string","minLength":2,"maxLength":2,"pattern":"^[A-Za-z]{2}$"},"status":{"type":"string","enum":["active","inactive","any"],"default":"active"},"limit":{"type":"integer","minimum":1,"maximum":50,"default":10},"offset":{"type":"integer","minimum":0,"maximum":10000,"default":0}},"additionalProperties":false}}]},{"id":"barcode.generate","group":"barcode","description":"Generate QR / Aztec / Data Matrix / PDF417 codes from structured payloads (url, wifi, vcard, vevent, email, sms, tel, geo, bitcoin, json, text). QR supports rounded or dotted modules, solid colors or linear/radial gradients, transparent backgrounds, configurable error correction, and a centered logo image (URL or data URI).","versions":[{"version":null,"path":"/api/barcode/generate","method":"POST","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"legacy","params":{"type":"object","properties":{"format":{"type":"string","enum":["qr","aztec","datamatrix","pdf417"],"default":"qr"},"data":{"anyOf":[{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string","minLength":1,"maxLength":2000}},"required":["type","text"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["url"]},"url":{"type":"string","format":"uri","maxLength":2000}},"required":["type","url"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["email"]},"to":{"type":"string","format":"email"},"subject":{"type":"string","maxLength":200},"body":{"type":"string","maxLength":1000}},"required":["type","to"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["sms"]},"to":{"type":"string","minLength":1,"maxLength":50},"body":{"type":"string","maxLength":1000}},"required":["type","to"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["phone"]},"number":{"type":"string","minLength":1,"maxLength":50}},"required":["type","number"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["wifi"]},"ssid":{"type":"string","minLength":1,"maxLength":100},"password":{"type":"string","maxLength":200},"security":{"type":"string","enum":["WPA","WEP","none"]},"hidden":{"type":"boolean"}},"required":["type","ssid"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["vcard"]},"name":{"type":"string","minLength":1,"maxLength":200},"firstName":{"type":"string","maxLength":100},"lastName":{"type":"string","maxLength":100},"phone":{"type":"string","maxLength":50},"email":{"type":"string","format":"email"},"org":{"type":"string","maxLength":200},"title":{"type":"string","maxLength":200},"url":{"type":"string","format":"uri"},"note":{"type":"string","maxLength":500}},"required":["type","name"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["geo"]},"lat":{"type":"number","minimum":-90,"maximum":90},"lon":{"type":"number","minimum":-180,"maximum":180},"altitude":{"type":"number"}},"required":["type","lat","lon"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["bitcoin"]},"address":{"type":"string","minLength":1,"maxLength":100},"amount":{"type":"number","exclusiveMinimum":true,"minimum":0},"label":{"type":"string","maxLength":200},"message":{"type":"string","maxLength":500}},"required":["type","address"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["calendar"]},"title":{"type":"string","minLength":1,"maxLength":200},"start":{"type":"string","format":"date-time"},"end":{"type":"string","format":"date-time"},"location":{"type":"string","maxLength":200},"description":{"type":"string","maxLength":1000}},"required":["type","title","start","end"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["json"]},"value":{}},"required":["type"],"additionalProperties":false}]},"output":{"type":"string","enum":["svg","png","dataurl"],"default":"svg"},"size":{"type":"integer","minimum":64,"maximum":4096,"default":512},"margin":{"type":"integer","minimum":0,"maximum":16,"default":4},"errorCorrection":{"type":"string","enum":["L","M","Q","H"],"default":"M","description":"L=~7%, M=~15%, Q=~25%, H=~30% recoverable damage (QR only)."},"style":{"type":"object","properties":{"modules":{"type":"string","enum":["square","rounded","dots"]},"foreground":{"anyOf":[{"type":"string"},{"type":"object","properties":{"type":{"type":"string","enum":["linear","radial"],"description":"Gradient type."},"stops":{"type":"array","items":{"type":"object","properties":{"offset":{"type":"number","minimum":0,"maximum":1},"color":{"type":"string"}},"required":["offset","color"],"additionalProperties":false},"minItems":2,"maxItems":10},"rotation":{"type":"number","description":"Linear gradient rotation in degrees."}},"required":["type","stops"],"additionalProperties":false}]},"background":{"type":"string","description":"CSS color or \"transparent\"."},"logo":{"type":"object","properties":{"source":{"type":"string","description":"https:// URL or data: URI. QR only."},"sizePct":{"type":"number","minimum":0.05,"maximum":0.4},"padding":{"type":"number","minimum":0,"maximum":32},"background":{"type":"string"},"cornerRadius":{"type":"number","minimum":0,"maximum":64}},"required":["source"],"additionalProperties":false}},"additionalProperties":false}},"required":["data"],"additionalProperties":false}}]},{"id":"batch.run","group":"batch","description":"Run up to 50 endpoint calls behind ONE x402 payment. Price is the exact sum of the sub-call prices (no batch discount). Atomic: every sub-call must succeed or nothing is charged — the failing calls are returned and you can retry for free. Eligible sub-calls are ordinary catalog endpoints (no bearer-only, deprecated, variable-priced, or metered-upstream endpoints, and no nested batch).","versions":[{"version":null,"path":"/api/batch/run","method":"POST","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"calls":{"type":"array","items":{"type":"object","properties":{"endpoint":{"type":"string","minLength":3,"maxLength":64,"pattern":"^[a-z0-9-]+\\.[a-z0-9-]+$"},"params":{"type":"object","additionalProperties":{},"default":{}}},"required":["endpoint"],"additionalProperties":false},"minItems":1,"maxItems":50}},"required":["calls"],"additionalProperties":false}}]},{"id":"bio.gene","group":"bio","description":"Look up a gene by its official symbol (e.g. \"TP53\", \"BRCA1\", \"CFTR\") and organism (taxid, default 9606 = human), merging NCBI Gene with UniProt. Returns the gene symbol, NCBI Gene ID, full description, organism, chromosome + cytogenetic map location, alias symbols, and the curated RefSeq function summary; plus the reviewed protein from UniProt — accession, entry id, recommended protein name, length in amino acids, and the curated function description. NCBI + UniProt links. Bioinformatics, clinical-genetics research, education. Public-domain NCBI + CC-BY UniProt data. Common organism taxids: human 9606, mouse 10090, zebrafish 7955, fruit fly 7227, yeast 559292.","versions":[{"version":null,"path":"/api/bio/gene","method":"GET","deprecated":false,"price":{"usd":0.00192},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"symbol":{"type":"string","minLength":1,"maxLength":30},"taxid":{"type":"integer","minimum":1,"maximum":9999999,"default":9606}},"required":["symbol"],"additionalProperties":false}}]},{"id":"bio.protein","group":"bio","description":"Look up a protein in UniProtKB by accession (e.g. \"P04637\", \"Q9Y6K9\", \"P0DTC2\"). Returns the entry id, reviewed (Swiss-Prot) flag, recommended + alternative protein names, gene names, organism + taxid, sequence length and molecular weight, the curated function description, subcellular locations, Gene Ontology terms (id + term + aspect: biological_process / molecular_function / cellular_component), PDB structure ids, and keywords. Bioinformatics, structural biology, drug-target research, education. Gene-centric sibling: /api/bio/gene. CC-BY UniProt data.","versions":[{"version":null,"path":"/api/bio/protein","method":"GET","deprecated":false,"price":{"usd":0.00144},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"accession":{"type":"string","minLength":2,"maxLength":20,"pattern":"^[A-Za-z0-9]+$"}},"required":["accession"],"additionalProperties":false}}]},{"id":"bio.species","group":"bio","description":"Resolve any organism by scientific or common name to the GBIF taxonomic backbone — the canonical free reference for life on Earth. Returns the accepted scientific name + canonical name, taxonomic rank and status, the match type/confidence, the full classification (kingdom → phylum → class → order → family → genus → species), up to 8 English vernacular (common) names, the count of recorded occurrences worldwide, and the GBIF species URL. Biodiversity, ecology, education, and as a taxonomy normalizer for other pipelines. Fuzzy-matches misspellings. CC-BY GBIF data.","versions":[{"version":null,"path":"/api/bio/species","method":"GET","deprecated":false,"price":{"usd":0.00144},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"name":{"type":"string","minLength":2,"maxLength":120}},"required":["name"],"additionalProperties":false}}]},{"id":"bls.series","group":"bls","description":"US Bureau of Labor Statistics time-series data. Pass seriesIds = comma-separated BLS series IDs (1-10 per call), optional startYear + endYear bracket (max 10 years). Each observation: year, period (M01-M12 monthly, Q01-Q04 quarterly, A01 annual, S01/S02 semiannual), periodName, value (verbatim string from BLS) + numericValue (parsed number), latest flag, footnote texts. Common series IDs: LNS14000000 (unemployment rate), CUUR0000SA0 (CPI-U all items), CES0000000001 (nonfarm employment), LNS11300000 (labor force participation). Unauthenticated upstream — ~25 queries/day per IP.","versions":[{"version":null,"path":"/api/bls/series","method":"GET","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"seriesIds":{"type":"string","minLength":4,"maxLength":400},"startYear":{"type":"integer","minimum":1900,"maximum":2100},"endYear":{"type":"integer","minimum":1900,"maximum":2100}},"required":["seriesIds"],"additionalProperties":false}}]},{"id":"book.search","group":"book","description":"Open Library book metadata search. Lookup by free-text query (matches title + author), or by individual title / author / ISBN (10 or 13 digit). Each record includes Open Library work key, title, author names + Open Library author keys, first publish year, edition count, cover image URL, sample ISBNs, publishers, languages, subject tags, fulltext flag, ebook access tier (public/borrowable/printdisabled/no_ebook), and canonical openlibrary.org URL. CC0 public-domain metadata.","versions":[{"version":null,"path":"/api/book/search","method":"GET","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"q":{"type":"string","minLength":2,"maxLength":200},"title":{"type":"string","minLength":2,"maxLength":200},"author":{"type":"string","minLength":2,"maxLength":200},"isbn":{"type":"string","minLength":9,"maxLength":17},"limit":{"type":"integer","minimum":1,"maximum":50,"default":10},"page":{"type":"integer","minimum":1,"maximum":100,"default":1}},"additionalProperties":false}}]},{"id":"business.br-cnpj","group":"business","description":"Brazilian company registry lookup by CNPJ (the 14-digit national company tax ID). Returns the legal name (razão social), trade name, registration status and reason, start date, legal nature, company size, share capital (BRL), primary economic activity (CNAE code + description), contact email/phone, full address, and the partners/officers (QSA — name + role). Free, open Brazilian government data (Receita Federal via BrasilAPI). The canonical \"who is this Brazilian company\" lookup for KYB, diligence, and cross-border onboarding — complements business.lei (GLEIF) and business.sos-search (US).","versions":[{"version":null,"path":"/api/business/br-cnpj","method":"GET","deprecated":false,"price":{"usd":0.00108},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"cnpj":{"type":"string","minLength":14,"maxLength":20,"description":"14-digit CNPJ."}},"required":["cnpj"],"additionalProperties":false}}]},{"id":"business.entity-match","group":"business","description":"Fuzzy entity resolution: resolve a messy, free-text company name to its canonical GLEIF Legal Entity Identifier (LEI) with a 0-1 similarity score and a high/medium/low confidence label. Tolerant of legal-suffix noise (Inc/Ltd/GmbH/S.A.), word order, ampersands, punctuation, and former/alternate names (e.g. 'Apple Computer Inc' resolves to Apple Inc. via GLEIF's recorded other-names). Returns the top candidates ranked by score plus a single bestMatch (null when nothing clears medium confidence — so a low-confidence top hit is never silently treated as a match, which is the safe default for KYB). The record-linkage complement to business.lei (name search). Optional country (ISO-2) narrows to a jurisdiction. Backed by GLEIF Golden Copy (~2.6M entities, CC0).","versions":[{"version":null,"path":"/api/business/entity-match","method":"GET","deprecated":false,"price":{"usd":0.00288},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"name":{"type":"string","minLength":2,"maxLength":200,"description":"Free-text company / legal-entity name to resolve. Messy input is fine: \"Apple Computer Inc.\", \"jp morgan chase & co\"."},"country":{"type":"string","minLength":2,"maxLength":2,"description":"Optional ISO-2 country of the entity HQ to narrow the match (e.g., \"US\", \"DE\", \"GB\")."},"limit":{"type":"integer","minimum":1,"maximum":25,"default":5,"description":"Max ranked candidates to return (1-25). Default 5."}},"required":["name"],"additionalProperties":false}}]},{"id":"business.entity-profile","group":"business","description":"Full business-entity dossier from a state registry — master record plus officers/principals, registered agent (name, phone, email, address), and filing history — the detail layer that flat registry search omits. v1 state: CT (Connecticut). Resolve by entityId (state registry record id), accountNumber, or name (partial; most recent registration wins). Returns entity status, type, registration date, mailing address, minority/woman/veteran/disability/LGBTQI ownership flags, officers, registered agent, and recent filings. KYB, vendor due-diligence, and counterparty-verification staple, sourced from the official state open-data portal.","versions":[{"version":null,"path":"/api/business/entity-profile","method":"GET","deprecated":false,"price":{"usd":0.003},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"state":{"type":"string","enum":["CT"],"description":"State registry to query (v1: CT only)."},"entityId":{"type":"string","minLength":2,"maxLength":40,"description":"State registry record id (canonical join key)."},"accountNumber":{"type":"string","minLength":2,"maxLength":40,"description":"State business account number."},"name":{"type":"string","minLength":2,"maxLength":120,"description":"Entity name, partial match."},"filingsLimit":{"type":"integer","minimum":1,"maximum":50,"default":10,"description":"Max recent filings."}},"required":["state"],"additionalProperties":false}}]},{"id":"business.entity-screen","group":"business","description":"KYC in one call: look up a business in a US state registry (NY, CO, CT) AND screen it against the OFAC sanctions list. Give a state and a name (or exact entityId). Returns the matched registered entities (id, type, status, jurisdiction, address, registered agent) and, for each, a sanctions screen of the entity name AND its registered agent against OFAC SDN — with fuzzy-match confidence and a flagged boolean. Counterparty due-diligence, vendor onboarding, AML. Composition of /api/business/sos-search + /api/law/sanctions-check (each section reports found/error independently). Note: sanctions screening is name-based and probabilistic — review flagged matches manually.","versions":[{"version":null,"path":"/api/business/entity-screen","method":"GET","deprecated":false,"price":{"usd":0.00576},"accepts":["x402"],"responseShape":"legacy","params":{"type":"object","properties":{"state":{"type":"string","enum":["NY","CO","CT"]},"name":{"type":"string","minLength":2,"maxLength":120},"entityId":{"type":"string","minLength":2,"maxLength":30},"threshold":{"type":"number","minimum":0.1,"maximum":1,"default":0.5},"limit":{"type":"integer","minimum":1,"maximum":10,"default":5}},"required":["state"],"additionalProperties":false}}]},{"id":"business.fi-companies","group":"business","description":"Official Finnish company registry search (PRH/YTJ avoindata, Finnish Patent & Registration Office). Search by company name. Each result: Business ID (Y-tunnus), current name, company form, trade-register status, primary line of business, registration date, and street address — descriptions in English where available. Free, CC BY 4.0. The authoritative FI company lookup — complements business.uk-companies and business.lei.","versions":[{"version":null,"path":"/api/business/fi-companies","method":"GET","deprecated":false,"price":{"usd":0.00144},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"name":{"type":"string","minLength":2,"maxLength":120,"description":"Company name to search."},"limit":{"type":"integer","minimum":1,"maximum":25}},"required":["name"],"additionalProperties":false}}]},{"id":"business.fr-companies","group":"business","description":"Official French company registry search (annuaire des entreprises / data.gouv.fr). Search by company name, SIREN, SIRET, or director. Each result: SIREN, legal name, legal-form code, primary NAF activity code, enterprise category (PME/ETI/GE), employee-count range, creation date, administrative status (active/ceased), head-office SIRET and address. Free, Licence Ouverte. The authoritative FR company lookup — complements business.uk-companies and business.lei.","versions":[{"version":null,"path":"/api/business/fr-companies","method":"GET","deprecated":false,"price":{"usd":0.00144},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"q":{"type":"string","minLength":2,"maxLength":120,"description":"Company name, SIREN, SIRET, or director name."},"limit":{"type":"integer","minimum":1,"maximum":25}},"required":["q"],"additionalProperties":false}}]},{"id":"business.id-resolve","group":"business","description":"Resolve a legal entity across identifier systems. Give exactly one of name, lei, cik, or ticker and get the others back: LEI (GLEIF), SEC CIK, ticker(s) with exchange, jurisdiction, and a canonical entity name. This is the COMPANY-ENTITY resolver: it joins the legal entity (LEI) to its SEC filer identity (CIK/ticker) and back. For SECURITIES (FIGI, ISIN, share-class identifiers) use finance.security-resolve instead -- this one deliberately stays at the legal-entity layer. Composes SEC company_tickers_exchange (public domain) + GLEIF (CC0). The SEC<->GLEIF link is by name-match when you anchor on ticker/cik (best-effort, flagged via bridge + leiName); a supplied LEI is authoritative. Per-source status is returned so a partial resolve is explicit. No CUSIP/SEDOL.","versions":[{"version":null,"path":"/api/business/id-resolve","method":"GET","deprecated":false,"price":{"usd":0.0048},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"name":{"type":"string","minLength":2,"maxLength":200,"description":"Legal/common entity name to search (GLEIF)."},"lei":{"type":"string","pattern":"^[A-Za-z0-9]{20}$","description":"20-char LEI."},"cik":{"type":"string","minLength":1,"maxLength":13,"description":"SEC CIK, leading zeros optional."},"ticker":{"type":"string","minLength":1,"maxLength":12,"description":"US stock ticker."}},"additionalProperties":false}}]},{"id":"business.kyb-360","group":"business","description":"Full Know-Your-Business (KYB) intelligence dossier on a company, in one call. Pass name (legal/common company name); optional state narrows federal awards, and optional ticker pulls the company's SEC EDGAR identity + recent filings (SEC has no name search). Fans out to seven authoritative sources and merges them: SAM.gov registration (UEI/CAGE, active status), SAM exclusions (federal debarment/suspension), OFAC SDN sanctions screen, GLEIF LEI (legal-entity identifier + jurisdiction), USAspending federal contract awards, FARA foreign-agent registration (a disclosure status, not wrongdoing), and USPTO trademarks owned (brand/IP footprint). Returns headline riskFlags and a cleared boolean (strictly debarment + sanctions), a summary of every signal, and a found/error block per source so one slow or empty source never fails the rest. For vendor onboarding, KYB/AML, procurement due diligence, and competitive/IP research. Probabilistic name matching — confirm with a hard identifier (UEI/LEI/CIK) before acting; public records, not legal advice.","versions":[{"version":null,"path":"/api/business/kyb-360","method":"GET","deprecated":false,"price":{"usd":0.0144},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"name":{"type":"string","minLength":2,"maxLength":200},"state":{"type":"string","minLength":2,"maxLength":2},"ticker":{"type":"string","minLength":1,"maxLength":10},"threshold":{"type":"number","minimum":0,"maximum":1},"limit":{"type":"integer","minimum":1,"maximum":20}},"required":["name"],"additionalProperties":false}}]},{"id":"business.lei","group":"business","description":"Look up or search the global LEI (Legal Entity Identifier) registry — the authoritative ISO 17442 directory of ~2.6M legal entities worldwide. Pass `lei` for an exact 20-character LEI, or `query` to search by legal/other name (ranked best-match first). Filter name search by `country` (ISO 2-letter, HQ country) and `status` (active = currently active entities only; all = default). Each result returns the LEI, legal name, an alternate/other name, legal jurisdiction, entity category (GENERAL/FUND/BRANCH/…), ISO 20275 legal-form code, entity status (ACTIVE/INACTIVE), LEI registration status (ISSUED/LAPSED/RETIRED/…), headquarters city/region/country/postal code, the initial registration + last update + next renewal dates, and the managing LOU. Use this to canonicalize a company name to its LEI, resolve a counterparty, or enrich a vendor master. Data: GLEIF Golden Copy (CC0, public domain).","versions":[{"version":null,"path":"/api/business/lei","method":"GET","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"lei":{"type":"string","pattern":"^[A-Za-z0-9]{20}$"},"query":{"type":"string","minLength":1,"maxLength":200},"country":{"type":"string","pattern":"^[A-Za-z]{2}$"},"status":{"type":"string","enum":["active","all"]},"limit":{"type":"integer","minimum":1,"maximum":100},"offset":{"type":"integer","minimum":0}},"additionalProperties":false}}]},{"id":"business.lei-hierarchy","group":"business","description":"Corporate ownership graph for a legal entity by LEI (GLEIF Level-2 relationships, live). Returns the direct parent and ultimate parent (each: LEI, legal name, jurisdiction, country, status), the direct children (paged), and total counts of direct and ultimate children. The authoritative 'who owns whom' lookup for KYB, beneficial-ownership, and corporate-tree mapping — complements business.lei (entity reference) and business.lei-isins.","versions":[{"version":null,"path":"/api/business/lei-hierarchy","method":"GET","deprecated":false,"price":{"usd":0.00144},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"lei":{"type":"string","pattern":"^[A-Za-z0-9]{20}$","description":"20-character LEI, e.g. HWUPKR0MPOU8FGXBT394 (Apple Inc.)."},"childLimit":{"type":"integer","minimum":1,"maximum":50,"description":"Max direct children to return (1-50, default 10)."}},"required":["lei"],"additionalProperties":false}}]},{"id":"business.lei-isins","group":"business","description":"ISIN ↔ LEI mapping (GLEIF, live, CC0). Two modes: pass lei to list every ISIN (security identifier) issued by that entity; or pass isin to resolve the issuer's LEI (with legal name, jurisdiction, country). Bridges securities to their legal-entity issuers for finance, compliance, and reference-data joins — complements business.lei and business.lei-hierarchy.","versions":[{"version":null,"path":"/api/business/lei-isins","method":"GET","deprecated":false,"price":{"usd":0.00144},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"lei":{"type":"string","pattern":"^[A-Za-z0-9]{20}$","description":"LEI → list its ISINs."},"isin":{"type":"string","pattern":"^[A-Za-z0-9]{12}$","description":"ISIN → resolve issuer LEI, e.g. US0378331005."},"limit":{"type":"integer","minimum":1,"maximum":200,"description":"Max ISINs in lei mode (1-200, default 100)."}},"additionalProperties":false}}]},{"id":"business.naics","group":"business","description":"Look up or search NAICS 2022 industry classification codes (US Census Bureau, public domain). Pass `code` for an exact NAICS code — 2–6 digits or a combined sector like 31-33 — and get its official title, hierarchy path, full official description, activity index terms, and direct child codes. Or pass `query` for free-text search (e.g. 'software publishers', 'coffee shop') over titles plus the official ~20k-entry activity index → ranked candidate codes, optionally filtered by `level` (2=sector … 6=national industry). Ground truth for industry coding in KYC, business registration, government filings, and ERP vendor/customer setup.","versions":[{"version":null,"path":"/api/business/naics","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"code":{"type":"string","pattern":"^(\\d{2}-\\d{2}|\\d{2,6})$","description":"Exact NAICS code (2–6 digits, or a combined sector range like 31-33). XOR with query."},"query":{"type":"string","minLength":2,"maxLength":120,"description":"Free-text industry or activity description to search. XOR with code."},"level":{"type":"integer","minimum":2,"maximum":6,"description":"Search mode only: restrict results to one hierarchy level (2=sector … 6=national industry)."},"limit":{"type":"integer","minimum":1,"maximum":50,"description":"Search mode only: max results, 1–50, default 20."}},"additionalProperties":false}}]},{"id":"business.no-companies","group":"business","description":"Official Norwegian company registry search (Brønnøysund Enhetsregisteret). Search by company name. Each result: organisation number, name, organisation form, primary industry (NACE), employee count, registration date, website, bankruptcy and dissolution flags, and business address. Free, NLOD/CC BY 4.0. The authoritative NO company lookup — complements business.uk-companies and business.lei.","versions":[{"version":null,"path":"/api/business/no-companies","method":"GET","deprecated":false,"price":{"usd":0.00144},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"name":{"type":"string","minLength":2,"maxLength":120,"description":"Company name to search."},"limit":{"type":"integer","minimum":1,"maximum":25}},"required":["name"],"additionalProperties":false}}]},{"id":"business.pl-krs","group":"business","description":"Official Polish company registry lookup by KRS number (KRS — Ministry of Justice, current extract / OdpisAktualny). Returns legal name, legal form, NIP and REGON identifiers, KRS registration date, share capital, and registered address. Register P = entrepreneurs (default); S = associations/foundations. Free, Polish public-sector open data. The authoritative PL company lookup — complements business.uk-companies and business.lei.","versions":[{"version":null,"path":"/api/business/pl-krs","method":"GET","deprecated":false,"price":{"usd":0.00144},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"krs":{"type":"string","pattern":"^\\d{10}$","description":"10-digit KRS number, e.g. 0000028860."},"register":{"type":"string","enum":["P","S"],"description":"P = entrepreneurs (default), S = associations/foundations."}},"required":["krs"],"additionalProperties":false}}]},{"id":"business.sos-search","group":"business","description":"Search state Secretary-of-State business registries, normalized to one schema across states. Currently supported: NY (active corporations + LLCs), CO (all entities incl. status), and CT (Business Registry Master incl. type, status, NAICS). Query by name (partial, case-insensitive) or exact entityId; results: state, entity id, name, type, status, formation jurisdiction, formation date, principal/registered address, registered agent. KYC, vendor due-diligence, and counterparty-verification staple. Each state sourced from its official open-data portal.","versions":[{"version":null,"path":"/api/business/sos-search","method":"GET","deprecated":false,"price":{"usd":0.00288},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"state":{"type":"string","enum":["NY","CO","CT"]},"name":{"type":"string","minLength":2,"maxLength":120},"entityId":{"type":"string","minLength":2,"maxLength":30},"limit":{"type":"integer","minimum":1,"maximum":100,"default":10},"offset":{"type":"integer","minimum":0,"default":0}},"required":["state"],"additionalProperties":false}}]},{"id":"business.uk-companies","group":"business","description":"Official UK company registry (Companies House). Two modes: pass query to search companies by name (returns company number, name, status, type, incorporation date, address), or pass companyNumber for the full registry profile — legal name, status, company type, jurisdiction, incorporation/cessation dates, SIC activity codes, registered office address, accounts (next due, last made-up-to), confirmation-statement due date, charges and insolvency flags, previous names, and the officers list (name, role, appointed/resigned dates, nationality, occupation). Free, Open Government Licence (commercial use permitted). The authoritative UK-company KYB lookup — complements business.lei (GLEIF) and business.br-cnpj (Brazil).","versions":[{"version":null,"path":"/api/business/uk-companies","method":"GET","deprecated":false,"price":{"usd":0.00144},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"query":{"type":"string","minLength":1,"maxLength":120},"companyNumber":{"type":"string","minLength":1,"maxLength":12},"limit":{"type":"integer","minimum":1,"maximum":50}},"additionalProperties":false}}]},{"id":"calendar.business-days","group":"calendar","description":"Holiday-aware business-day calculator for 200+ countries. Three modes: pass start + addDays (signed integer) to shift a date by N business days; pass start + end to count business days between two dates (exclusive of start, inclusive of end); pass start alone to check one date (is it a business day, which holiday, next/previous business day). Query: country (ISO 3166-1 alpha-2), start (YYYY-MM-DD), optional region (subdivision code), addDays XOR end, optional weekend (comma-separated days, default sat,sun — e.g. fri,sat for the Gulf), optional types (holiday types treated as closures, default public,bank). Skipped holidays are itemized in the response. Use for payment terms, SLA deadlines, and delivery-date math.","versions":[{"version":null,"path":"/api/calendar/business-days","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"country":{"type":"string","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code, e.g. US, DE, JP."},"start":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Anchor date, YYYY-MM-DD."},"addDays":{"type":"integer","minimum":-3660,"maximum":3660,"description":"Signed number of business days to add to start (non-zero, ±3660). Mutually exclusive with end."},"end":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"End date YYYY-MM-DD. Counts business days after start through end. Mutually exclusive with addDays."},"region":{"type":"string","minLength":1,"maxLength":10,"description":"Optional subdivision code — e.g. CA for US-California, BY for DE-Bavaria."},"weekend":{"type":"string","maxLength":30,"description":"Optional comma-separated weekend days (mon..sun). Default \"sat,sun\"; use \"fri,sat\" for Gulf states."},"types":{"type":"string","maxLength":60,"description":"Optional comma-separated holiday types treated as business closures (public, bank, school, optional, observance). Default \"public,bank\"."}},"required":["country","start"],"additionalProperties":false}}]},{"id":"calendar.earnings","group":"calendar","description":"Earnings release calendar — which US-listed companies report earnings in a date window, with expected and (once reported) actual EPS and revenue, and the time of day (before/after market). Pass a from/to window (YYYY-MM-DD; defaults to the next 14 days) and optionally a ticker to filter to one company. Agents cannot recall future earnings dates — this is the schedule. Data by Finnhub.","versions":[{"version":null,"path":"/api/calendar/earnings","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"from":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Start date YYYY-MM-DD (default: today)."},"to":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"End date YYYY-MM-DD (default: 14 days out)."},"ticker":{"type":"string","minLength":1,"maxLength":12,"pattern":"^[A-Za-z][A-Za-z0-9.\\-]{0,11}$","description":"Filter to a single US ticker."}},"additionalProperties":false}}]},{"id":"calendar.holidays","group":"calendar","description":"List the official holidays for a country and year, with exact observed dates including substitute days (e.g. a Saturday July 4th observed on Friday). Query: country (ISO 3166-1 alpha-2, 200+ supported), year, optional region (subdivision code like CA for US-California or BY for DE-Bavaria), optional types filter (public, bank, school, optional, observance — comma-separated), optional lang (ISO 639-1) for localized names. Returns one item per holiday: { date (YYYY-MM-DD), name, type, substitute, rule }. Dates are computed from maintained per-country rules — including movable feasts and lunar-calendar holidays — so they stay correct year over year. Use for scheduling, delivery estimates, payment terms, and SLA math.","versions":[{"version":null,"path":"/api/calendar/holidays","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"country":{"type":"string","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code, e.g. US, DE, JP. 200+ countries supported."},"year":{"type":"integer","minimum":1950,"maximum":2100,"description":"Calendar year (1950-2100)."},"region":{"type":"string","minLength":1,"maxLength":10,"description":"Optional subdivision code — e.g. CA for US-California, BY for DE-Bavaria, ON for CA-Ontario."},"types":{"type":"string","maxLength":60,"description":"Optional comma-separated holiday-type filter: public, bank, school, optional, observance. Default: all types."},"lang":{"type":"string","minLength":2,"maxLength":5,"description":"Optional ISO 639-1 language code for localized holiday names, e.g. en, de, fr."}},"required":["country","year"],"additionalProperties":false}}]},{"id":"calendar.ipo","group":"calendar","description":"IPO calendar — companies going public (or recently public) in a date window, with the expected date, symbol, name, exchange, price range, number of shares, total offering value, and status (expected/priced/filed/withdrawn). Pass a from/to window (YYYY-MM-DD; defaults to a ±30-day span around today). Data by Finnhub.","versions":[{"version":null,"path":"/api/calendar/ipo","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"from":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Start date YYYY-MM-DD (default: 15 days ago)."},"to":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"End date YYYY-MM-DD (default: 30 days out)."}},"additionalProperties":false}}]},{"id":"census.demographics","group":"census","description":"US Census ACS 5-year demographics for a state or county. Give a state (2-letter or 2-digit FIPS), optionally a 3-digit county FIPS, and get population, median age, median household income, per-capita income, poverty rate (computed), households, owner-occupancy rate (computed), median home value, and median gross rent. Free, public-domain (US Census Bureau). Complements census.zipcode (ZIP/ZCTA-level) with state- and county-level geography. Authoritative demographic data an LLM cannot recall — for market sizing, site selection, and socioeconomic research.","versions":[{"version":null,"path":"/api/census/demographics","method":"GET","deprecated":false,"price":{"usd":0.00108},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"state":{"type":"string","minLength":2,"maxLength":2,"description":"2-letter state code or 2-digit FIPS."},"county":{"type":"string","pattern":"^\\d{3}$"},"year":{"type":"integer","minimum":2010,"maximum":2100}},"required":["state"],"additionalProperties":false}}]},{"id":"census.zipcode","group":"census","description":"US Census ACS 5-year demographics for a ZIP code (ZCTA). Returns population, median age, median household income, poverty rate, household composition, race + ethnicity breakdown, education attainment, workforce (with computed unemployment rate), and housing (with computed owner-occupancy rate and median rent/home value). Backed by ~33k ZCTAs pre-ingested from api.census.gov; refreshed annually. Public-domain US government data.","versions":[{"version":null,"path":"/api/census/zipcode","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"zip":{"type":"string","pattern":"^\\d{5}$"}},"required":["zip"],"additionalProperties":false}}]},{"id":"chem.compound","group":"chem","description":"Look up a chemical compound by CID, common/IUPAC name, SMILES, or InChIKey. Returns CID, preferred name, IUPAC name, molecular formula, molecular weight, exact mass, SMILES, connectivity SMILES, InChI, InChIKey, XLogP, formal charge, the 10 most-common synonyms, a PubChem permalink, and source attribution. Data is sourced from NIH PubChem (public domain). Provide exactly one of cid, name, smiles, or inchikey.","versions":[{"version":null,"path":"/api/chem/compound","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"cid":{"type":"integer","exclusiveMinimum":true,"minimum":0,"maximum":2500000000,"description":"PubChem Compound ID (CID), e.g. 2244 for aspirin."},"name":{"type":"string","minLength":1,"maxLength":200,"description":"Common, trade, or IUPAC name, e.g. \"aspirin\" or \"ibuprofen\"."},"smiles":{"type":"string","minLength":1,"maxLength":500,"description":"SMILES structural notation, e.g. \"CC(=O)Oc1ccccc1C(=O)O\"."},"inchikey":{"type":"string","pattern":"^[A-Z]{14}-[A-Z]{10}-[A-Z]$","description":"InChIKey (27-char hashed identifier), e.g. \"BSYNRYMUTXBXSQ-UHFFFAOYSA-N\"."}},"additionalProperties":false,"description":"Provide exactly ONE of cid, name, smiles, or inchikey. Each identifies the same compound from a different namespace."}}]},{"id":"chinese.convert","group":"chinese","description":"Convert Chinese text between Simplified and Traditional scripts (and regional variants). from/to take: cn (Mainland Simplified), tw (Taiwan Traditional), twp (Taiwan w/ idioms), hk (Hong Kong Traditional), t (generic Traditional), jp (Japanese Shinjitai). E.g. from=cn to=tw. Deterministic, keyless (OpenCC mappings).","versions":[{"version":null,"path":"/api/chinese/convert","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":5000},"from":{"type":"string","enum":["cn","tw","twp","hk","t","jp"],"description":"Source variant: cn | tw | twp | hk | t | jp."},"to":{"type":"string","enum":["cn","tw","twp","hk","t","jp"],"description":"Target variant: cn | tw | twp | hk | t | jp."}},"required":["text","from","to"],"additionalProperties":false}}]},{"id":"chinese.detect","group":"chinese","description":"Detect Chinese in text: whether it contains Han characters, how many, total length, and a script classification — simplified, traditional, mixed, or han-common (characters identical in both scripts). Deterministic, keyless. Route text to the right pipeline or pick a conversion direction before calling chinese.convert.","versions":[{"version":null,"path":"/api/chinese/detect","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":5000}},"required":["text"],"additionalProperties":false}}]},{"id":"chinese.pinyin","group":"chinese","description":"Convert Chinese (Hanzi) text to pinyin romanization. Choose tone marks (symbol, e.g. hàn yǔ), numbered tones (han4 yu3), or no tones. Auto-segments words and returns the full pinyin string plus a per-syllable array. Deterministic, keyless — useful for transliteration, pronunciation, search indexing, and TTS prep.","versions":[{"version":null,"path":"/api/chinese/pinyin","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":2000},"tone":{"type":"string","enum":["symbol","num","none"]},"segmented":{"type":"boolean","description":"Include the per-word segment array."}},"required":["text"],"additionalProperties":false}}]},{"id":"class.industry-resolve","group":"class","description":"Cross-walk an industry classification code across the four major systems: NAICS <-> SIC <-> ISIC Rev.4 <-> NACE Rev.2. Pass the system + code and get the equivalent code(s) in every other system, with official titles where available, plus the vintage of each table used. The deterministic join that lets a KYC, procurement, ERP, or cross-border-reporting agent translate \"what industry is this\" between the US (NAICS/SIC), international (ISIC), and EU (NACE) standards. Backed by bundled public-domain Census concordances (NAICS<->SIC: 1997 NAICS <-> 1987 SIC; NAICS<->ISIC: 2012 NAICS <-> ISIC Rev.4) and the UNSD ISIC Rev.4 <-> NACE Rev.2 correspondence. Multi-hop links (e.g. SIC->NACE via NAICS->ISIC) are derived and explicitly flagged in notes. SIC is a retired US system; there is no newer NAICS<->SIC table.","versions":[{"version":null,"path":"/api/class/industry-resolve","method":"GET","deprecated":false,"price":{"usd":0.0036},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"system":{"type":"string","enum":["naics","sic","isic","nace"],"description":"Which system the input code is in."},"code":{"type":"string","minLength":1,"maxLength":12,"description":"The classification code in that system, e.g. 511210 (NAICS), 7372 (SIC), 5820 (ISIC), 58.21 (NACE)."}},"required":["system","code"],"additionalProperties":false}}]},{"id":"climate.station-history","group":"climate","description":"Historical daily weather observations from NOAA GHCN-Daily for one station and date range (up to 366 days per call): max/min/avg temperature (°C), precipitation (mm), snowfall and snow depth (mm), wind (m/s). Coverage reaches back to the 1800s for long-running stations — actual measured values for \"what was the weather on this date\", not model recall. Pass a GHCN station id (e.g. USW00094728 = NYC Central Park); find the nearest station for any coordinate with /api/climate/station-near first. dataTypes selects elements (default TMAX,TMIN,PRCP). NOAA public-domain data.","versions":[{"version":null,"path":"/api/climate/station-history","method":"GET","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"station":{"type":"string","pattern":"^[A-Z0-9]{11}$","description":"GHCN-Daily station id (11 chars). Find one with /api/climate/station-near."},"startDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"endDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"dataTypes":{"allOf":[{"anyOf":[{"not":{}},{"type":"string"}],"default":"TMAX,TMIN,PRCP"},{"type":"array","items":{"type":"string","enum":["TMAX","TMIN","TAVG","PRCP","SNOW","SNWD","AWND","WSF2","WSF5","EVAP"]},"minItems":1,"maxItems":10}],"description":"Comma-separated element codes (TMAX, TMIN, TAVG, PRCP, SNOW, SNWD, AWND, WSF2, WSF5, EVAP). Default TMAX,TMIN,PRCP."}},"required":["station","startDate","endDate"],"additionalProperties":false}}]},{"id":"climate.station-near","group":"climate","description":"Find NOAA GHCN-Daily weather stations near a coordinate. Returns up to 100 stations within a configurable radius (default 500 km), sorted by distance. Each station includes id, name, lat/lon, elevation, country/state, and GSN/HCN/WMO flags. Backed by a ~132k-station registry refreshed monthly from ncei.noaa.gov.","versions":[{"version":null,"path":"/api/climate/station-near","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"lat":{"type":"number","minimum":-90,"maximum":90},"lon":{"type":"number","minimum":-180,"maximum":180},"radius_km":{"type":"number","minimum":1,"maximum":5000},"limit":{"type":"integer","minimum":1,"maximum":100}},"required":["lat","lon"],"additionalProperties":false}}]},{"id":"clinical.study-detail","group":"clinical","description":"Full ClinicalTrials.gov study record by NCT id — the deep detail beyond clinical.trial-search's summary. Returns the brief + detailed description, status, phases, conditions, study design (allocation, intervention model, primary purpose, masking), enrollment, interventions, primary and secondary outcome measures (with time frames), full eligibility criteria (inclusion/exclusion text, sex, age range, healthy-volunteers, standard age groups), lead sponsor and collaborators, all facility locations (name, city, state, country), whether results are posted, and key dates. Free, public-domain (NIH NLM). Use clinical.trial-search to find an NCT id, then this for the complete protocol.","versions":[{"version":null,"path":"/api/clinical/study-detail","method":"GET","deprecated":false,"price":{"usd":0.00144},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"nctId":{"type":"string","pattern":"^NCT\\d{8}$"}},"required":["nctId"],"additionalProperties":false}}]},{"id":"clinical.trial-search","group":"clinical","description":"Search ClinicalTrials.gov — every registered US (and many international) clinical study (~500k trials). Free-text query matches title + condition + intervention; or direct lookup by NCT ID. Optional filters: recruitment status, lead sponsor, phase (PHASE1..PHASE4), country. Each record includes NCT ID, brief + official title, status, phases, study type, conditions list, interventions (with type + name), enrollment count + type, key dates (start / primary completion / completion / first posted / last update), lead sponsor + class (INDUSTRY/NIH/OTHER), hasResults flag, brief summary, and canonical clinicaltrials.gov URL. Public-domain NIH NLM data.","versions":[{"version":null,"path":"/api/clinical/trial-search","method":"GET","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"query":{"type":"string","minLength":2,"maxLength":300},"nctId":{"type":"string","pattern":"^NCT\\d{8}$"},"status":{"type":"string","enum":["RECRUITING","ACTIVE_NOT_RECRUITING","COMPLETED","TERMINATED","WITHDRAWN","NOT_YET_RECRUITING","SUSPENDED"]},"sponsor":{"type":"string","minLength":2,"maxLength":200},"phase":{"type":"string","minLength":2,"maxLength":40},"country":{"type":"string","minLength":2,"maxLength":80},"pageSize":{"type":"integer","minimum":1,"maximum":100,"default":10},"pageToken":{"type":"string","minLength":1,"maxLength":500}},"additionalProperties":false}}]},{"id":"code.repo-lookup","group":"code","description":"Look up a public GitHub repository by \"owner/name\" slug. Returns full name, owner, description, homepage, default branch, primary language, topics, license (SPDX key + name), counts (stars / forks / watchers / open issues / subscribers / network), size, timestamps (created/updated/pushed), visibility, has-issues/projects/wiki/discussions flags. Unauthenticated GitHub access is rate-limited to 60 req/hour per server IP — returns 429 UPSTREAM_RATE_LIMIT when the bucket is empty.","versions":[{"version":null,"path":"/api/code/repo-lookup","method":"GET","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"repo":{"type":"string","pattern":"^[A-Za-z0-9][\\w.-]*\\/[A-Za-z0-9._-]+$"}},"required":["repo"],"additionalProperties":false}}]},{"id":"convert.currency","group":"convert","description":"Convert an amount between currencies at a live or historical exchange rate. Pass from + to (3-letter ISO 4217 codes) and optional amount (default 1) and date (YYYY-MM-DD for a historical rate; omit for the latest). Returns the converted result, the per-unit rate, and the effective rate date. Live data from the European Central Bank reference rates (via Frankfurter) — fetched per request, never stale; weekends/holidays use the last published business day. Coverage is the ECB major currencies. Distinct from fx.rates (the raw rate table) — this is the agent-friendly \"X from = ? to\" call.","versions":[{"version":null,"path":"/api/convert/currency","method":"GET","deprecated":false,"price":{"usd":0.00144},"accepts":["x402"],"responseShape":"legacy","params":{"type":"object","properties":{"from":{"type":"string","minLength":3,"maxLength":3},"to":{"type":"string","minLength":3,"maxLength":3},"amount":{"type":"number","exclusiveMinimum":true,"minimum":0},"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},"required":["from","to"],"additionalProperties":false}}]},{"id":"convert.unit","group":"convert","description":"Convert a value between units of measure: mass (g, kg, mg, lb, oz, t, st), length (m, km, cm, mm, in, ft, yd, mi), volume (l, ml, m3, gal, gal-imp, qt, pt, cup, floz, tbsp, tsp), area (m2, km2, ft2, acre, ha), and temperature (C, F, K). Units are matched case-insensitively with common aliases (kg/kilogram/kgs). Returns {value, from, to, dimension, result}. Exact factors — the ground-truth answer a CPG/ETL pipeline needs instead of an LLM approximating conversions. Cross-dimension conversions (kg→m) return 400.","versions":[{"version":null,"path":"/api/convert/unit","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"value":{"type":"number"},"from":{"type":"string","minLength":1,"maxLength":40},"to":{"type":"string","minLength":1,"maxLength":40}},"required":["value","from","to"],"additionalProperties":false}}]},{"id":"countdown.gif","group":"countdown","description":"Animated countdown GIF from the current UTC time to endDate. Always uncached. Supports 5 templates (default, minimal, neon, retro, corporate) and full customization: colors, fonts, dimensions, padding, cell padding, labels, dividers. Animates for `seconds` frames at `fps`.","versions":[{"version":null,"path":"/api/countdown/gif","method":"GET","deprecated":false,"price":{"usd":0.006},"accepts":["x402"],"responseShape":"legacy","params":{"type":"object","properties":{"endDate":{"type":"string","format":"date-time"},"template":{"type":"string","enum":["default","minimal","neon","retro","corporate"]},"seconds":{"type":"integer","minimum":1,"maximum":60},"fps":{"type":"integer","minimum":1,"maximum":10},"width":{"type":"integer","minimum":200,"maximum":1600},"height":{"type":"integer","minimum":80,"maximum":800},"padding":{"type":"integer","minimum":0,"maximum":200},"cellPadding":{"type":"integer","minimum":0,"maximum":200},"digitFontSize":{"type":"integer","minimum":20,"maximum":300},"labelFontSize":{"type":"integer","minimum":6,"maximum":80},"labelPaddingY":{"type":"integer","minimum":0,"maximum":60},"digitPaddingY":{"type":"integer","minimum":-60,"maximum":60},"letterSpacing":{"type":"number","minimum":0,"maximum":20},"bg":{"type":"string","maxLength":40},"fg":{"type":"string","maxLength":40},"labelColor":{"type":"string","maxLength":40},"dividerColor":{"type":"string","maxLength":40},"digitFont":{"type":"string","enum":["mono","sans"]},"labelFont":{"type":"string","enum":["mono","sans"]},"digitWeight":{"type":"string","enum":["regular","bold"]},"showLabels":{"anyOf":[{"type":"boolean"},{"type":"string","enum":["true","false","0","1"]}]},"showDays":{"anyOf":[{"type":"boolean"},{"type":"string","enum":["true","false","0","1"]}]},"dividerChar":{"type":"string","minLength":1,"maxLength":3},"expiredText":{"type":"string","minLength":1,"maxLength":30},"labelDays":{"type":"string","minLength":1,"maxLength":12},"labelHours":{"type":"string","minLength":1,"maxLength":12},"labelMinutes":{"type":"string","minLength":1,"maxLength":12},"labelSeconds":{"type":"string","minLength":1,"maxLength":12}},"required":["endDate"],"additionalProperties":false}}]},{"id":"country.financials","group":"country","description":"Country-level financial and credit reference data: sovereign credit rating, equity risk premium, country risk premium, default spread, currency (name + ISO code), region/sub-region, and ISO country codes. Returns all ~249 countries by default, or pass code (ISO alpha-2 or alpha-3) to get one. Use it for cross-border valuation (discount-rate inputs) and sovereign-risk context — distinct from country.lookup (general reference). Data by Finnhub.","versions":[{"version":null,"path":"/api/country/financials","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"code":{"type":"string","minLength":2,"maxLength":3,"pattern":"^[A-Za-z]{2,3}$","description":"ISO alpha-2 or alpha-3 country code. Omit for all countries."}},"additionalProperties":false}}]},{"id":"country.lookup","group":"country","description":"Look up country metadata via REST Countries. Pass alpha2 (2-letter ISO 3166-1), alpha3 (3-letter), or name (with optional fullText=true for exact match). Returns common + official name, ISO codes, region + subregion, independence + UN-member flags, capital(s), population, area km², landlocked flag, neighboring borders (alpha-3), timezones, currencies (code → name + symbol), languages, calling code, flag emoji + SVG/PNG URLs, lat/lng coordinates, Google Maps + OSM URLs, driving side, top-level domains.","versions":[{"version":null,"path":"/api/country/lookup","method":"GET","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"alpha2":{"type":"string","minLength":2,"maxLength":2,"pattern":"^[A-Za-z]{2}$"},"alpha3":{"type":"string","minLength":3,"maxLength":3,"pattern":"^[A-Za-z]{3}$"},"name":{"type":"string","minLength":2,"maxLength":80},"fullText":{"type":"boolean","default":false}},"additionalProperties":false}}]},{"id":"crypto.address-history","group":"crypto","description":"Transaction history for an Ethereum address (via Etherscan V2). Returns normal transactions newest-first: hash, block, timestamp, from/to, value (wei + ETH), gas used, gas price, decoded method id + function name, error flag, and any contract created. Paginate with page + offset; bound with startBlock/endBlock. Defaults to Ethereum mainnet; other EVM chains are reachable by chainId where upstream coverage allows. Net-new vs crypto.tx (single-hash receipt).","versions":[{"version":null,"path":"/api/crypto/address-history","method":"GET","deprecated":false,"price":{"usd":0.00144},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"chainId":{"type":"integer","minimum":1,"default":1,"description":"EVM chain id; defaults to 1 (Ethereum). Other chains (8453 Base, 137 Polygon, 42161 Arbitrum…) require upstream multichain coverage."},"address":{"type":"string","pattern":"^0x[a-fA-F0-9]{40}$"},"page":{"type":"integer","minimum":1},"offset":{"type":"integer","minimum":1,"maximum":100},"sort":{"type":"string","enum":["asc","desc"]},"startBlock":{"type":"integer","minimum":0},"endBlock":{"type":"integer","minimum":0}},"required":["address"],"additionalProperties":false}}]},{"id":"crypto.address-safety","group":"crypto","description":"Malicious-wallet screen (via GoPlus, free/keyless). For any EVM address returns risk flags — cybercrime, money laundering, financial crime, darkweb, phishing, stealing/blackmail, fake KYC, mixer, sanctioned, honeypot-related, blacklist doubt and more — plus an overall malicious verdict and hit count. Counterparty risk check before interacting with an address.","versions":[{"version":null,"path":"/api/crypto/address-safety","method":"GET","deprecated":false,"price":{"usd":0.002},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"chainId":{"type":"string","minLength":1,"maxLength":20,"description":"EVM chain id, e.g. 1, 56, 137, 8453."},"address":{"type":"string","pattern":"^0x[a-fA-F0-9]{40}$"}},"required":["chainId","address"],"additionalProperties":false}}]},{"id":"crypto.address-screen","group":"crypto","description":"Sanctions-screen a crypto wallet address against the US Treasury OFAC SDN list's published Digital Currency Addresses (BTC/ETH/USDT/XMR and more). Exact match — returns whether the address is sanctioned, and for any hit the listed entity name, OFAC programs, source id, and the currency the address was listed under. Compliance check before transacting. Distinct from crypto.address-safety (GoPlus behavioral risk) — this is regulatory sanctions.","versions":[{"version":null,"path":"/api/crypto/address-screen","method":"GET","deprecated":false,"price":{"usd":0.002},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"address":{"type":"string","minLength":8,"maxLength":120,"description":"Wallet address (any chain). Case-insensitive."}},"required":["address"],"additionalProperties":false}}]},{"id":"crypto.address-validate","group":"crypto","description":"Validate a cryptocurrency address with full checksum verification (not just regex). Returns {chain, address, valid, canonical, format, reason}. Chains: btc (P2PKH, P2SH, Bech32 SegWit v0, Taproot Bech32m), eth (full EIP-55 checksum; non-checksummed flagged), sol (Ed25519 32-byte Base58), ltc (Base58Check L.../M.../3... + ltc1 Bech32), trx (T-prefix Base58Check 0x41), xrp (r-prefix custom Base58), bch (legacy Base58Check + bitcoincash:q... CashAddr). Catches typos via cryptographic checksum; canonical field returns the checksummed/lowercased form.","versions":[{"version":null,"path":"/api/crypto/address-validate","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"chain":{"type":"string","enum":["btc","eth","sol","ltc","trx","xrp","bch"]},"address":{"type":"string","minLength":1,"maxLength":100}},"required":["chain","address"],"additionalProperties":false}}]},{"id":"crypto.balances","group":"crypto","description":"Live native + ERC-20 token balances for an EVM address (Base, Ethereum, Polygon, Arbitrum, Optimism; keyless). Returns the native-coin balance and, for any ERC-20 contract addresses you pass, the symbol, decimals, raw and human-formatted balance — fetched in one multicall. For wallet dashboards, treasury checks, and agent payment/settlement flows.","versions":[{"version":null,"path":"/api/crypto/balances","method":"GET","deprecated":false,"price":{"usd":0.00144},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"address":{"type":"string","pattern":"^0x[a-fA-F0-9]{40}$","description":"EVM address to read."},"chain":{"type":"string","enum":["base","ethereum","polygon","arbitrum","optimism"],"description":"Default base."},"tokens":{"type":"string","maxLength":900,"description":"Comma-separated ERC-20 contract addresses (max 20)."}},"required":["address"],"additionalProperties":false}}]},{"id":"crypto.btc-address","group":"crypto","description":"Bitcoin address summary (free/keyless): confirmed balance (sats + BTC), total received/sent, transaction count, funded/spent output counts, and pending mempool balance + tx count. Works for any BTC address (legacy, SegWit, Taproot). Net-new — our on-chain reads were EVM-only.","versions":[{"version":null,"path":"/api/crypto/btc-address","method":"GET","deprecated":false,"price":{"usd":0.00144},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"address":{"type":"string","minLength":20,"maxLength":100,"description":"Bitcoin address (1.../3.../bc1...)."}},"required":["address"],"additionalProperties":false}}]},{"id":"crypto.btc-fees","group":"crypto","description":"Current Bitcoin network fee rates and mempool backlog from mempool.space. Returns recommended fee rates in satoshis per virtual byte for target confirmation speeds (fastest ~next block, half-hour, hour, economy, minimum) plus the current mempool size (transaction count, total vsize, total fees waiting). Keyless, live. The BTC counterpart to crypto.gas-oracle (Ethereum) — fresh, fast-moving network state an agent cannot recall, for wallets, payment timing, and fee estimation.","versions":[{"version":null,"path":"/api/crypto/btc-fees","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{},"additionalProperties":false}}]},{"id":"crypto.btc-mempool","group":"crypto","description":"Bitcoin mempool state (free/keyless): current unconfirmed tx count, total vsize, and total fees, plus the most recent transactions (whale radar) — filter with minBtc to surface only large pending transfers. For congestion monitoring and large-transfer alerts.","versions":[{"version":null,"path":"/api/crypto/btc-mempool","method":"GET","deprecated":false,"price":{"usd":0.00144},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"minBtc":{"type":"number","minimum":0,"description":"Only include recent txs >= this BTC value."}},"additionalProperties":false}}]},{"id":"crypto.btc-tx","group":"crypto","description":"Bitcoin transaction lookup by txid (free/keyless): confirmed status + confirmation count (vs current tip), block height + time, fee (sats + BTC), total output value, size/weight, and input/output counts. Distinct from crypto.tx (EVM) — this is Bitcoin.","versions":[{"version":null,"path":"/api/crypto/btc-tx","method":"GET","deprecated":false,"price":{"usd":0.00144},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"txid":{"type":"string","pattern":"^[0-9a-fA-F]{64}$"}},"required":["txid"],"additionalProperties":false}}]},{"id":"crypto.btc-utxos","group":"crypto","description":"Unspent transaction outputs (UTXOs) for a Bitcoin address (free/keyless): each with txid, output index, value (sats + BTC), confirmation status, and block height. Sorted largest-first. For coin selection, balance verification, and wallet tooling.","versions":[{"version":null,"path":"/api/crypto/btc-utxos","method":"GET","deprecated":false,"price":{"usd":0.00144},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"address":{"type":"string","minLength":20,"maxLength":100},"limit":{"type":"integer","minimum":1,"maximum":500}},"required":["address"],"additionalProperties":false}}]},{"id":"crypto.cex-klines","group":"crypto","description":"Centralized-exchange OHLCV candlesticks for a spot trading pair (e.g. BTC-USD, ETH-USD, SOL-USD), free/keyless. Pass interval (1m/5m/15m/1h/6h/1d) and limit. Each bar: time, open, high, low, close, volume. Net-new vs crypto.dex-ohlcv (on-chain DEX) — this is CEX spot.","versions":[{"version":null,"path":"/api/crypto/cex-klines","method":"GET","deprecated":false,"price":{"usd":0.00144},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"pair":{"type":"string","pattern":"^[A-Za-z0-9]{2,10}-[A-Za-z0-9]{2,10}$","description":"Trading pair, e.g. BTC-USD."},"interval":{"type":"string","enum":["1m","5m","15m","1h","6h","1d"]},"limit":{"type":"integer","minimum":1,"maximum":300}},"required":["pair"],"additionalProperties":false}}]},{"id":"crypto.cex-ticker","group":"crypto","description":"Centralized-exchange 24h ticker for a spot pair (e.g. BTC-USD), free/keyless: current price, best bid/ask, 24h open/high/low, 24h + 30d volume, and 24h percent change. Real CEX spot quote — distinct from crypto.token-price (CoinGecko aggregate).","versions":[{"version":null,"path":"/api/crypto/cex-ticker","method":"GET","deprecated":false,"price":{"usd":0.00144},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"pair":{"type":"string","pattern":"^[A-Za-z0-9]{2,10}-[A-Za-z0-9]{2,10}$"}},"required":["pair"],"additionalProperties":false}}]},{"id":"crypto.chain-tvl-history","group":"crypto","description":"Historical total DeFi TVL time series for a blockchain (e.g. Ethereum, Solana, Arbitrum), via DefiLlama (free/keyless). Returns daily { date, tvlUsd } points (most recent N, default 90). For charting a chain's DeFi capital over time. Pair with crypto.defi-chains for the current cross-chain leaderboard.","versions":[{"version":null,"path":"/api/crypto/chain-tvl-history","method":"GET","deprecated":false,"price":{"usd":0.00144},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"chain":{"type":"string","minLength":1,"maxLength":40,"description":"Chain name, e.g. Ethereum, Solana, Arbitrum, Base."},"limit":{"type":"integer","minimum":1,"maximum":1000,"description":"Most-recent N daily points (default 90)."}},"required":["chain"],"additionalProperties":false}}]},{"id":"crypto.coin","group":"crypto","description":"Full coin profile by CoinGecko id (e.g. bitcoin, ethereum, solana). Returns price, market cap + rank, FDV, 24h volume, all-time high/low with dates, circulating/total/max supply, price changes (1h/24h/7d/30d/1y), categories, and official links (homepage, X, GitHub, subreddit). Richer than crypto.token-price (spot only) and crypto.markets (list row).","versions":[{"version":null,"path":"/api/crypto/coin","method":"GET","deprecated":false,"price":{"usd":0.00144},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":80,"description":"CoinGecko coin id, e.g. bitcoin, ethereum, solana."}},"required":["id"],"additionalProperties":false}}]},{"id":"crypto.coin-history","group":"crypto","description":"Historical market chart for a coin by CoinGecko id: time-series of price, market cap, and volume over the last N days (1-365) in USD or another vs-currency. Granularity is auto-selected by range (hourly for short windows, daily for long). For backtests, charts, and trend analysis.","versions":[{"version":null,"path":"/api/crypto/coin-history","method":"GET","deprecated":false,"price":{"usd":0.00144},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":80,"description":"CoinGecko coin id, e.g. bitcoin."},"days":{"type":"integer","minimum":1,"maximum":365,"description":"Lookback in days (default 7)."},"vs":{"type":"string","maxLength":10,"description":"vs-currency (default usd)."}},"required":["id"],"additionalProperties":false}}]},{"id":"crypto.contract","group":"crypto","description":"Decode an EVM smart contract. Pass chain (ethereum, base, polygon, arbitrum, optimism, bsc, avalanche) + address; returns whether the contract is source-verified (Sourcify), its name/compiler/language, whether it is a proxy and its implementation address, and human-readable function and event signatures from the ABI. Optionally pass selector (a 0x 4-byte function selector) to decode what it calls — resolved from the contract's own ABI when verified, otherwise from the public 4byte directory. Pairs with crypto.tx (which gives a `to` address + calldata): turn an opaque contract + selector into \"what is this and what does it do.\" Free, keyless.","versions":[{"version":null,"path":"/api/crypto/contract","method":"GET","deprecated":false,"price":{"usd":0.0018},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"chain":{"type":"string","enum":["ethereum","base","polygon","arbitrum","optimism","bsc","avalanche"],"description":"EVM chain: ethereum, base, polygon, arbitrum, optimism, bsc, or avalanche."},"address":{"type":"string","description":"0x-prefixed 40-hex contract address."},"selector":{"type":"string","description":"Optional 0x 4-byte function selector to decode (e.g. 0xa9059cbb)."}},"required":["chain","address"],"additionalProperties":false}}]},{"id":"crypto.decode-calldata","group":"crypto","description":"Decode raw EVM transaction calldata. POST { data } (0x-prefixed hex). Resolves the 4-byte function selector to its human signature(s) via the openchain.xyz database, then ABI-decodes the parameters (address, uint/int, bool, bytesN, string, bytes, and elementary dynamic arrays). Returns selector, candidate signatures, decoded params, and the raw 32-byte words. For agents inspecting/verifying a transaction before signing. Keyless.","versions":[{"version":null,"path":"/api/crypto/decode-calldata","method":"POST","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"data":{"type":"string","pattern":"^0x?[0-9a-fA-F]{8,}$","maxLength":60000}},"required":["data"],"additionalProperties":false}}]},{"id":"crypto.defi","group":"crypto","description":"DeFi total-value-locked (TVL) metrics via DefiLlama. With no params, returns the top protocols by TVL (name, slug, category, TVL, 1-day and 7-day % change, chains) plus total DeFi TVL across all chains. Pass protocol=<slug> (e.g. lido, aave, uniswap) for a single protocol's TVL, category, momentum, and chains; or chain=<name> (e.g. ethereum, solana, arbitrum) for that chain's TVL. Distinct from crypto.markets/token-price (spot prices) — this is protocol- and chain-level capital locked in DeFi, which an agent can't know from training. Free, keyless.","versions":[{"version":null,"path":"/api/crypto/defi","method":"GET","deprecated":false,"price":{"usd":0.0018},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"protocol":{"type":"string","minLength":1,"maxLength":120,"description":"Protocol slug (e.g. lido, aave, uniswap). Omit for the top-protocols list."},"chain":{"type":"string","minLength":1,"maxLength":60,"description":"Chain name (e.g. ethereum, solana, arbitrum) for that chain's TVL."},"limit":{"type":"integer","minimum":1,"maximum":100,"description":"Number of protocols in the top list (1–100, default 20)."}},"additionalProperties":false}}]},{"id":"crypto.defi-chains","group":"crypto","description":"DeFi TVL leaderboard across all chains (via DefiLlama, free/keyless): every chain ranked by total value locked, with its native token symbol and chain id. Distinct from crypto.defi (which returns one chain's TVL by name) — this is the full ranked cross-chain comparison.","versions":[{"version":null,"path":"/api/crypto/defi-chains","method":"GET","deprecated":false,"price":{"usd":0.00144},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"limit":{"type":"integer","minimum":1,"maximum":200}},"additionalProperties":false}}]},{"id":"crypto.defi-fees","group":"crypto","description":"Protocol fees/revenue or DEX trading volume leaderboards (via DefiLlama, free/keyless). kind=fees ranks protocols by fees generated; kind=dexs ranks DEXes by trading volume. Each row has 24h/7d/30d/1y totals + 1-month change, plus catalog totals. Sort by total24h/7d/30d. The protocol-economics layer.","versions":[{"version":null,"path":"/api/crypto/defi-fees","method":"GET","deprecated":false,"price":{"usd":0.00144},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"kind":{"type":"string","enum":["fees","dexs"]},"sort":{"type":"string","enum":["total24h","total7d","total30d"]},"limit":{"type":"integer","minimum":1,"maximum":100}},"additionalProperties":false}}]},{"id":"crypto.defi-protocol-history","group":"crypto","description":"Historical total-value-locked (TVL) time series for a DeFi protocol by slug (e.g. aave, lido, uniswap), via DefiLlama (free/keyless). Returns daily { date, tvlUsd } points (most recent N, default 90) plus the protocol's chains. For charting a protocol's growth or decline over time. Net-new vs crypto.defi (current TVL only).","versions":[{"version":null,"path":"/api/crypto/defi-protocol-history","method":"GET","deprecated":false,"price":{"usd":0.00144},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"slug":{"type":"string","minLength":1,"maxLength":80,"description":"DefiLlama protocol slug, e.g. aave, lido, uniswap."},"limit":{"type":"integer","minimum":1,"maximum":1000,"description":"Most-recent N daily points (default 90)."}},"required":["slug"],"additionalProperties":false}}]},{"id":"crypto.defi-yields","group":"crypto","description":"DeFi yield & lending rates across protocols (via DefiLlama, free/keyless). Returns pools ranked by APY or TVL with base vs reward APY, TVL, 1d/7d/30d APY trend, stablecoin flag, and IL-risk. Filter by chain, project (aave, compound, lido…), symbol (USDC, ETH…), minApy, minTvlUsd. The yield/lending-rate layer beyond crypto.defi's TVL headline.","versions":[{"version":null,"path":"/api/crypto/defi-yields","method":"GET","deprecated":false,"price":{"usd":0.00144},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"chain":{"type":"string","maxLength":40},"project":{"type":"string","maxLength":60},"symbol":{"type":"string","maxLength":40},"minApy":{"type":"number","minimum":0},"minTvlUsd":{"type":"number","minimum":0},"sort":{"type":"string","enum":["apy","tvl"]},"limit":{"type":"integer","minimum":1,"maximum":100}},"additionalProperties":false}}]},{"id":"crypto.dex-networks","group":"crypto","description":"List the 100+ blockchain networks supported by the on-chain DEX endpoints (via GeckoTerminal, free/keyless). Each entry has the network slug to use with crypto.dex-pools / dex-ohlcv / dex-search / token-info, its display name, and CoinGecko asset-platform id. Call this to discover valid network slugs.","versions":[{"version":null,"path":"/api/crypto/dex-networks","method":"GET","deprecated":false,"price":{"usd":0.00144},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"limit":{"type":"integer","minimum":1,"maximum":100}},"additionalProperties":false}}]},{"id":"crypto.dex-ohlcv","group":"crypto","description":"OHLCV candlesticks for a DEX pool (via GeckoTerminal, free/keyless). Pass network + pool address + timeframe (day/hour/minute) with optional aggregate (e.g. 4 = 4-hour) and limit. Returns time/open/high/low/close/volumeUsd bars for on-chain technical analysis. Pair with crypto.dex-pools / dex-token-pools to find a pool address.","versions":[{"version":null,"path":"/api/crypto/dex-ohlcv","method":"GET","deprecated":false,"price":{"usd":0.00144},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"network":{"type":"string","minLength":1,"maxLength":40},"address":{"type":"string","minLength":1,"maxLength":120,"description":"Pool address (not token address)."},"timeframe":{"type":"string","enum":["day","hour","minute"]},"aggregate":{"type":"integer","minimum":1,"maximum":60},"limit":{"type":"integer","minimum":1,"maximum":1000}},"required":["network","address"],"additionalProperties":false}}]},{"id":"crypto.dex-pools","group":"crypto","description":"Trending or newly-created DEX liquidity pools on a network (via GeckoTerminal, free/keyless). kind=trending (hot pools) or kind=new (freshly launched — early-token discovery). Each pool: pair name, base/quote USD price, FDV, market cap, reserve, 24h volume, 24h price change, and 24h buys/sells. Networks: eth, bsc, polygon_pos, base, arbitrum, solana, and 100+ more.","versions":[{"version":null,"path":"/api/crypto/dex-pools","method":"GET","deprecated":false,"price":{"usd":0.00144},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"network":{"type":"string","minLength":1,"maxLength":40,"description":"GeckoTerminal network slug, e.g. eth, bsc, base, solana."},"kind":{"type":"string","enum":["trending","new"]},"limit":{"type":"integer","minimum":1,"maximum":50}},"required":["network"],"additionalProperties":false}}]},{"id":"crypto.dex-search","group":"crypto","description":"Search on-chain DEX liquidity pools by token name, symbol, or address (via GeckoTerminal, free/keyless). Optionally scope to one network. Returns matching pools with pair name, USD price, FDV, market cap, reserve, 24h volume + price change, and buys/sells — the fast way to find the right pool/token before pulling OHLCV or token info.","versions":[{"version":null,"path":"/api/crypto/dex-search","method":"GET","deprecated":false,"price":{"usd":0.00144},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"query":{"type":"string","minLength":1,"maxLength":120,"description":"Token name, symbol, or contract address."},"network":{"type":"string","maxLength":40,"description":"Optional network slug to scope the search."},"limit":{"type":"integer","minimum":1,"maximum":50}},"required":["query"],"additionalProperties":false}}]},{"id":"crypto.dex-token-pools","group":"crypto","description":"All DEX pools trading a given token, by contract address (via GeckoTerminal, free/keyless). Returns each pool's pair, on-chain USD price, FDV/market cap, liquidity reserve, 24h volume + price change, and buys/sells — the on-chain price + liquidity picture for any token across a network's DEXes.","versions":[{"version":null,"path":"/api/crypto/dex-token-pools","method":"GET","deprecated":false,"price":{"usd":0.00144},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"network":{"type":"string","minLength":1,"maxLength":40,"description":"Network slug, e.g. eth, bsc, base, solana."},"address":{"type":"string","minLength":1,"maxLength":120,"description":"Token contract address."},"limit":{"type":"integer","minimum":1,"maximum":50}},"required":["network","address"],"additionalProperties":false}}]},{"id":"crypto.ens-resolve","group":"crypto","description":"Resolve ENS (Ethereum Name Service) names and addresses live on Ethereum mainnet. Pass query as either an ENS name (e.g. \"vitalik.eth\") → returns the Ethereum address it points to, or a 0x address → returns its primary ENS name (reverse record). Either way it also returns the profile text records: avatar, email, url, twitter (com.twitter), github (com.github), and description. A live on-chain lookup agents can't do from their sandbox, and ENS records change after training cutoffs. Wallet UX, address-book resolution, on-chain identity. Returns address:null for an unregistered or unset name.","versions":[{"version":null,"path":"/api/crypto/ens-resolve","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"query":{"type":"string","minLength":3,"maxLength":255}},"required":["query"],"additionalProperties":false}}]},{"id":"crypto.fear-greed","group":"crypto","description":"The Crypto Fear & Greed Index — a 0–100 market-sentiment gauge (0 = Extreme Fear, 100 = Extreme Greed) updated daily. Returns the current value + its classification (Extreme Fear/Fear/Neutral/Greed/Extreme Greed) and timestamp; pass limit (up to 90) for recent history. Useful as a contrarian sentiment signal. Source: alternative.me.","versions":[{"version":null,"path":"/api/crypto/fear-greed","method":"GET","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"limit":{"type":"integer","minimum":1,"maximum":90}},"additionalProperties":false}}]},{"id":"crypto.gas-oracle","group":"crypto","description":"Live EVM gas oracle. Returns latest block baseFeePerGas + slow/standard/fast tiers derived from priority-fee percentiles (p25/p50/p75) over the trailing 4 blocks, plus a 21,000-gas transfer cost estimate in the chain native unit. Chains: base, ethereum, polygon, arbitrum, optimism. Real-time post-training data, ~5s freshness.","versions":[{"version":null,"path":"/api/crypto/gas-oracle","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"chain":{"type":"string","enum":["base","ethereum","polygon","arbitrum","optimism"],"description":"EVM chain to query: base | ethereum | polygon | arbitrum | optimism."}},"required":["chain"],"additionalProperties":false}}]},{"id":"crypto.global","group":"crypto","description":"Whole-crypto-market overview: total market cap (USD), total 24h volume, 24h market-cap % change, Bitcoin + Ethereum dominance, count of active cryptocurrencies and markets. Source: CoinGecko.","versions":[{"version":null,"path":"/api/crypto/global","method":"GET","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{},"additionalProperties":false}}]},{"id":"crypto.hyperliquid-funding","group":"crypto","description":"Live perp funding rates, open interest, and mark/oracle/mid prices across 200+ Hyperliquid perpetuals (free/keyless). Each row: coin, hourly funding rate, open interest, mark/oracle/mid price, premium, prior-day price, 24h notional volume, max leverage. Filter by coin; sort by oi, volume, or funding. On-chain perp microstructure for funding-arb and OI signals.","versions":[{"version":null,"path":"/api/crypto/hyperliquid-funding","method":"GET","deprecated":false,"price":{"usd":0.00144},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"coin":{"type":"string","maxLength":40},"sort":{"type":"string","enum":["oi","volume","funding"]},"limit":{"type":"integer","minimum":1,"maximum":250}},"additionalProperties":false}}]},{"id":"crypto.hyperliquid-predicted-funding","group":"crypto","description":"Predicted next funding rates per coin across venues (Hyperliquid + Binance/Bybit perps), free/keyless. For each coin, a list of venues with predicted funding rate, next funding time, and funding interval — for cross-venue funding-rate arbitrage. Filter by coin.","versions":[{"version":null,"path":"/api/crypto/hyperliquid-predicted-funding","method":"GET","deprecated":false,"price":{"usd":0.00144},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"coin":{"type":"string","maxLength":40},"limit":{"type":"integer","minimum":1,"maximum":250}},"additionalProperties":false}}]},{"id":"crypto.kimchi-premium","group":"crypto","description":"The \"kimchi premium\" — how much higher a crypto asset trades on Korean exchanges (Upbit, KRW) than its global USD price, as a percent. Computed as (Upbit KRW price / (global USD price × USD/KRW)) − 1. Pass symbol = ticker(s), comma-separated up to 10 (default BTC); supported majors include BTC, ETH, XRP, SOL, DOGE, ADA, TRX and more. Returns per symbol { krwPrice, usdPrice, usdKrw, globalUsdInKrw, premiumPct }. Per-symbol resilient (one unlisted symbol does not fail the rest); unresolved symbols are reported in meta.errors. Live blend of Upbit (KRW price) + CoinGecko (global USD) + ECB/Frankfurter (USD/KRW FX).","versions":[{"version":null,"path":"/api/crypto/kimchi-premium","method":"GET","deprecated":false,"price":{"usd":0.0048},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"symbol":{"allOf":[{"anyOf":[{"not":{}},{"type":"string","maxLength":120}],"default":"BTC"},{"type":"array","items":{"type":"string","pattern":"^[A-Z0-9]{2,12}$"},"minItems":1,"maxItems":10}],"description":"Comma-separated ticker symbols, up to 10 (default BTC). E.g. \"BTC,ETH,XRP,SOL\"."}},"additionalProperties":false}}]},{"id":"crypto.markets","group":"crypto","description":"Top cryptocurrencies by market cap with live price, market cap, 24h volume, and 24h + 7d % change. Pass limit (1–100, default 20). Source: CoinGecko. For a single token use crypto.token-price; for the whole-market overview use crypto.global.","versions":[{"version":null,"path":"/api/crypto/markets","method":"GET","deprecated":false,"price":{"usd":0.00144},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"limit":{"type":"integer","minimum":1,"maximum":100}},"additionalProperties":false}}]},{"id":"crypto.nft","group":"crypto","description":"Live ERC-721 NFT read (Base, Ethereum, Polygon, Arbitrum, Optimism; keyless). Given a contract + tokenId: returns current owner, collection name/symbol, and tokenURI (IPFS auto-resolved to a gateway URL). Pass metadata=1 to also fetch and normalize the token's JSON metadata (name, description, image, attributes). For NFT provenance, ownership checks, and gallery rendering.","versions":[{"version":null,"path":"/api/crypto/nft","method":"GET","deprecated":false,"price":{"usd":0.00144},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"address":{"type":"string","pattern":"^0x[a-fA-F0-9]{40}$","description":"NFT contract address."},"tokenId":{"type":"string","pattern":"^\\d+$","maxLength":80,"description":"Token id (decimal)."},"chain":{"type":"string","enum":["base","ethereum","polygon","arbitrum","optimism"],"description":"Default ethereum."},"metadata":{"type":"string","enum":["0","1","true","false"],"description":"1 to also fetch token JSON metadata."}},"required":["address","tokenId"],"additionalProperties":false}}]},{"id":"crypto.nft-security","group":"crypto","description":"NFT collection risk screening via GoPlus (free, keyless). For an ERC-721/1155 contract: verification/trust-list status, open-source + proxy flags, privileged-minting, restricted-approval, transfer-without-approval, metadata-frozen and self-destruct risks, plus owner count and volume stats. Screen a collection before minting, buying, or approving — complements crypto.nft (reads) and crypto.token-safety.","versions":[{"version":null,"path":"/api/crypto/nft-security","method":"GET","deprecated":false,"price":{"usd":0.00144},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"address":{"type":"string","pattern":"^0x[a-fA-F0-9]{40}$","description":"NFT contract address."},"chainId":{"type":"integer","exclusiveMinimum":true,"minimum":0,"description":"EVM chain id (default 1 = Ethereum)."}},"required":["address"],"additionalProperties":false}}]},{"id":"crypto.stablecoins","group":"crypto","description":"Stablecoin supply leaderboard (via DefiLlama, free/keyless): the largest stablecoins by circulating USD, with peg type (USD/EUR/…), peg mechanism (fiat-backed, crypto-backed, algorithmic), and current price. For tracking stablecoin market share and de-peg risk.","versions":[{"version":null,"path":"/api/crypto/stablecoins","method":"GET","deprecated":false,"price":{"usd":0.00144},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"limit":{"type":"integer","minimum":1,"maximum":200}},"additionalProperties":false}}]},{"id":"crypto.token-info","group":"crypto","description":"On-chain token metrics by contract address (via GeckoTerminal, free/keyless): name, symbol, decimals, on-chain USD price, FDV, market cap, total reserve in USD, 24h volume, total + normalized supply, image, and CoinGecko id. Distinct from crypto.token-price (CoinGecko aggregate spot) — this is DEX-derived on-chain data for any token across 100+ networks.","versions":[{"version":null,"path":"/api/crypto/token-info","method":"GET","deprecated":false,"price":{"usd":0.00144},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"network":{"type":"string","minLength":1,"maxLength":40,"description":"Network slug, e.g. eth, bsc, base, solana."},"address":{"type":"string","minLength":1,"maxLength":120,"description":"Token contract address."}},"required":["network","address"],"additionalProperties":false}}]},{"id":"crypto.token-metadata","group":"crypto","description":"Live on-chain token metadata for an ERC-20 or ERC-721 contract (Base, Ethereum, Polygon, Arbitrum, Optimism; keyless). Returns name, symbol, decimals, detected standard, and total supply (raw + formatted). The authoritative read straight from the contract — complements crypto.token-price and crypto.contract (ABI/source).","versions":[{"version":null,"path":"/api/crypto/token-metadata","method":"GET","deprecated":false,"price":{"usd":0.00144},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"address":{"type":"string","pattern":"^0x[a-fA-F0-9]{40}$","description":"Token contract address."},"chain":{"type":"string","enum":["base","ethereum","polygon","arbitrum","optimism"],"description":"Default base."}},"required":["address"],"additionalProperties":false}}]},{"id":"crypto.token-price","group":"crypto","description":"Current spot price and market data for crypto assets. Pass ids as comma-separated CoinGecko asset ids (e.g. bitcoin, ethereum, solana, usd-coin — lowercase id, not ticker symbol; up to 25 per call) and optionally vs (comma-separated fiat/crypto quote currencies, default usd). Returns per-asset price, market cap, 24h volume, and 24h percent change, plus the data timestamp. Live market data past any training cutoff. Price data by CoinGecko.","versions":[{"version":null,"path":"/api/crypto/token-price","method":"GET","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"ids":{"allOf":[{"type":"string","minLength":2,"maxLength":600},{"type":"array","items":{"type":"string","pattern":"^[a-z0-9-]+$"},"minItems":1,"maxItems":25}],"description":"Comma-separated CoinGecko asset ids (lowercase), e.g. \"bitcoin,ethereum\". Max 25."},"vs":{"allOf":[{"anyOf":[{"not":{}},{"type":"string","maxLength":60}],"default":"usd"},{"type":"array","items":{"type":"string","pattern":"^[a-z]{2,10}$"},"minItems":1,"maxItems":5}]}},"required":["ids"],"additionalProperties":false}}]},{"id":"crypto.token-safety","group":"crypto","description":"Token honeypot & rug-pull risk screen (via GoPlus, free/keyless). For an ERC-20 on any EVM chain, returns honeypot flag, buy/sell tax, open-source/proxy/mintable status, hidden-owner / take-back-ownership / selfdestruct / external-call risks, blacklist/whitelist/anti-whale flags, holder count, and owner/creator concentration. Essential pre-trade safety check for agents — the security layer competitors charge for.","versions":[{"version":null,"path":"/api/crypto/token-safety","method":"GET","deprecated":false,"price":{"usd":0.002},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"chainId":{"type":"string","minLength":1,"maxLength":20,"description":"EVM chain id, e.g. 1 (Ethereum), 56 (BSC), 137 (Polygon), 8453 (Base)."},"address":{"type":"string","pattern":"^0x[a-fA-F0-9]{40}$"}},"required":["chainId","address"],"additionalProperties":false}}]},{"id":"crypto.token-transfers","group":"crypto","description":"ERC-20 token transfer history for an Ethereum address (via Etherscan V2). Each transfer: hash, block, timestamp, from/to, token contract, name, symbol, decimals, and value (raw + decimal-adjusted). Optionally filter to one token contract. Paginate with page + offset. Defaults to Ethereum mainnet; other EVM chains by chainId where upstream coverage allows. Trace what tokens a wallet sent/received.","versions":[{"version":null,"path":"/api/crypto/token-transfers","method":"GET","deprecated":false,"price":{"usd":0.00144},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"chainId":{"type":"integer","minimum":1,"default":1,"description":"EVM chain id; defaults to 1 (Ethereum). Other chains require upstream multichain coverage."},"address":{"type":"string","pattern":"^0x[a-fA-F0-9]{40}$"},"contractAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]{40}$","description":"Filter to one ERC-20 contract."},"page":{"type":"integer","minimum":1},"offset":{"type":"integer","minimum":1,"maximum":100},"sort":{"type":"string","enum":["asc","desc"]}},"required":["address"],"additionalProperties":false}}]},{"id":"crypto.trending","group":"crypto","description":"The most-searched trending cryptocurrencies on CoinGecko right now (last 24h), each with symbol, name, market-cap rank, and price. A real-time popularity/attention signal. Source: CoinGecko.","versions":[{"version":null,"path":"/api/crypto/trending","method":"GET","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{},"additionalProperties":false}}]},{"id":"crypto.tx","group":"crypto","description":"Live EVM transaction status and receipt lookup. Give a transaction hash + chain and get back whether it mined successfully, reverted, or is still pending in the mempool, plus block number, confirmations, timestamp, sender and recipient, value transferred (native unit), gas used, effective gas price, total fee paid, any contract created, and event-log count. Chains: base, ethereum, polygon, arbitrum, optimism. Real-time post-training chain state — use it to confirm a payment settled, detect a reverted transaction, or wait for confirmations before acting. Unknown hash returns 404. Sibling of /api/crypto/gas-oracle (fees) and /api/crypto/address-validate (format).","versions":[{"version":null,"path":"/api/crypto/tx","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"chain":{"type":"string","enum":["base","ethereum","polygon","arbitrum","optimism"],"description":"EVM chain to query: base | ethereum | polygon | arbitrum | optimism."},"hash":{"type":"string","pattern":"^0x[0-9a-fA-F]{64}$","description":"Transaction hash: 0x followed by 64 hex characters."}},"required":["chain","hash"],"additionalProperties":false}}]},{"id":"crypto.vrf","group":"crypto","description":"Verifiable random function — deterministic, publicly verifiable randomness bound to your seed and signed by the 2s key. proof = deterministic EIP-191 signature over the seed (same seed always yields the same proof, so the outcome cannot be re-rolled or cherry-picked); random = keccak256(proof), a uniform 32-byte value. Returns the seed, signed message, proof, signer address, random (hex + uint + float in [0,1)). Verify offline: recover the signer from (message, proof) and confirm keccak256(proof) == random. For provably-fair draws, lotteries, sortition, and tie-breaks between agents.","versions":[{"version":null,"path":"/api/crypto/vrf","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"seed":{"type":"string","minLength":1,"maxLength":256,"description":"Any seed string — a request id, block hash, commitment, etc."}},"required":["seed"],"additionalProperties":false}}]},{"id":"dev.crates-search","group":"dev","description":"Search crates.io for Rust packages (keyless). Each result: name, latest stable version, description, total + recent downloads, and repository/homepage/documentation links. For agents discovering or vetting Rust dependencies.","versions":[{"version":null,"path":"/api/dev/crates-search","method":"GET","deprecated":false,"price":{"usd":0.00144},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"q":{"type":"string","minLength":1,"maxLength":200,"description":"Crate search text, e.g. \"tokio async\"."},"limit":{"type":"integer","minimum":1,"maximum":30}},"required":["q"],"additionalProperties":false}}]},{"id":"dev.csv-to-json","group":"dev","description":"Convert CSV/TSV text to a JSON array. POST { csv, delimiter?, header? }. Auto-detects comma vs tab, handles quoted fields and escaped quotes, and coerces numbers/booleans/empty→null. With header=true (default) each row becomes an object keyed by the header row; header=false returns arrays.","versions":[{"version":null,"path":"/api/dev/csv-to-json","method":"POST","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"csv":{"type":"string","minLength":1,"maxLength":200000},"delimiter":{"type":"string","maxLength":1},"header":{"type":"boolean"}},"required":["csv"],"additionalProperties":false}}]},{"id":"dev.diff-json","group":"dev","description":"Structured deep diff of two JSON values. POST { a, b }. Returns a list of changes, each with a dot-path and type (added / removed / changed) plus from/to values, and a total change count. For change-detection, config drift, and review tooling.","versions":[{"version":null,"path":"/api/dev/diff-json","method":"POST","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"a":{},"b":{}},"additionalProperties":false}}]},{"id":"dev.flatten-json","group":"dev","description":"Flatten a nested JSON object/array into dot-notation keys. POST { data, delimiter? }. E.g. {a:{b:[1,2]}} → {\"a.b.0\":1,\"a.b.1\":2}. Useful for diffing, CSV export, search indexing, or feeding flat key/value config to tools.","versions":[{"version":null,"path":"/api/dev/flatten-json","method":"POST","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"data":{},"delimiter":{"type":"string","maxLength":3}},"additionalProperties":false}}]},{"id":"dev.gitlab-search","group":"dev","description":"Search public GitLab projects (keyless), ranked by stars. Each result: full name, path, description, star and fork counts, web URL, last-activity timestamp, and topics. Complements code.repo-lookup (GitHub) for cross-host repository discovery.","versions":[{"version":null,"path":"/api/dev/gitlab-search","method":"GET","deprecated":false,"price":{"usd":0.00144},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"q":{"type":"string","minLength":2,"maxLength":200,"description":"Project search text, e.g. \"kubernetes operator\"."},"limit":{"type":"integer","minimum":1,"maximum":30}},"required":["q"],"additionalProperties":false}}]},{"id":"dev.json-to-csv","group":"dev","description":"Convert a JSON array of objects to CSV. POST { data, delimiter? }. Column headers are the union of keys across all rows; values are CSV-escaped (quotes, commas, newlines), nested objects are JSON-stringified, null→empty. Returns the CSV string + column list.","versions":[{"version":null,"path":"/api/dev/json-to-csv","method":"POST","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"data":{"type":"array","items":{},"maxItems":10000},"delimiter":{"type":"string","maxLength":1}},"required":["data"],"additionalProperties":false}}]},{"id":"dev.json-to-typescript","group":"dev","description":"Infer a TypeScript interface from a sample JSON value. POST { sample, rootName? }. Handles nested objects, arrays (merged element type), and primitives; merges keys across array elements. Returns a ready-to-paste interface string.","versions":[{"version":null,"path":"/api/dev/json-to-typescript","method":"POST","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"sample":{},"rootName":{"type":"string","pattern":"^[A-Za-z_$][\\w$]*$","maxLength":60}},"additionalProperties":false}}]},{"id":"dev.json-to-zod","group":"dev","description":"Infer a Zod schema from a sample JSON value. POST { sample, name? }. Handles nested objects, arrays, and primitives, merging keys across array elements. Returns a ready-to-paste `const name = z.object({...})` string.","versions":[{"version":null,"path":"/api/dev/json-to-zod","method":"POST","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"sample":{},"name":{"type":"string","pattern":"^[A-Za-z_$][\\w$]*$","maxLength":60}},"additionalProperties":false}}]},{"id":"dev.jwt-decode","group":"dev","description":"Decode a JWT without verifying its signature. POST { token }. Returns the decoded header and payload, plus issuedAt/expiresAt/notBefore as ISO timestamps, and expired / notYetValid flags. Signature is NOT checked — decode/inspection only. For agents reading token claims (scopes, sub, exp) before acting.","versions":[{"version":null,"path":"/api/dev/jwt-decode","method":"POST","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"token":{"type":"string","minLength":10,"maxLength":8192}},"required":["token"],"additionalProperties":false}}]},{"id":"dev.npm-search","group":"dev","description":"Search the npm registry for JavaScript/TypeScript packages (keyless). Each result: name, latest version, description, keywords, publisher, last-publish date, and npm/homepage/repository links. For agents discovering or vetting dependencies.","versions":[{"version":null,"path":"/api/dev/npm-search","method":"GET","deprecated":false,"price":{"usd":0.00144},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"q":{"type":"string","minLength":1,"maxLength":200,"description":"Package search text, e.g. \"react query\"."},"limit":{"type":"integer","minimum":1,"maximum":30}},"required":["q"],"additionalProperties":false}}]},{"id":"dev.preflight","group":"dev","description":"Check whether a shell command is runnable before you (or an agent) run it — a pre-execution gate. POST { command } with a command that targets the network (curl, wget, httpie, or anything carrying a URL). Parses out the HTTP method, target URL, and headers, then returns a structured verdict: verdict ('runnable' or 'invalid'), a runnable boolean, and a checks breakdown (hasTarget, urlValid, schemeOk, hostPresent, methodValid, privateTarget). By default the check is STATIC and deterministic — no network call — answering 'is there a well-formed http(s) target and a valid method?' (a command with no URL is invalid). Pass probe=true to also run a guarded HEAD request against the target and report dnsResolves, reachable, tlsValid, and httpStatus — answering 'would this actually connect right now?'. Private/loopback/reserved targets are refused (SSRF-safe). Built for gating agent-generated commands and CI pipelines.","versions":[{"version":null,"path":"/api/dev/preflight","method":"POST","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"command":{"type":"string","minLength":1,"maxLength":8192},"probe":{"type":"boolean"}},"required":["command"],"additionalProperties":false}}]},{"id":"dev.regex-test","group":"dev","description":"Test a JavaScript regular expression against input text. POST { pattern, flags?, input }. Returns each match with its index, numbered capture groups, and named groups (up to 1000 matches with the g flag). Pure compute, no upstream.","versions":[{"version":null,"path":"/api/dev/regex-test","method":"POST","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"pattern":{"type":"string","minLength":1,"maxLength":1000},"flags":{"type":"string","maxLength":8},"input":{"type":"string","maxLength":50000}},"required":["pattern","input"],"additionalProperties":false}}]},{"id":"dev.rfc","group":"dev","description":"Look up an IETF RFC by number. Pass number as RFC2616, 2616, or the integer 2616. Returns the RFC title, authors, publication date, status (e.g. INTERNET STANDARD, PROPOSED STANDARD, DRAFT STANDARD, INFORMATIONAL, EXPERIMENTAL, HISTORIC, BEST CURRENT PRACTICE), stream (IETF/IAB/IRTF/Independent/Legacy), DOI, canonical rfc-editor.org URL, and the full standards relationship chain: which RFCs this one obsoletes / is obsoleted by, and which it updates / is updated by. Authoritative data from the IETF/RFC Editor index. Use this to resolve whether a spec is current or superseded before relying on it.","versions":[{"version":null,"path":"/api/dev/rfc","method":"GET","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"legacy","params":{"type":"object","properties":{"number":{"type":"string","minLength":1,"maxLength":12,"description":"RFC number, e.g. RFC2616 or 2616."}},"required":["number"],"additionalProperties":false}}]},{"id":"dev.stackoverflow-search","group":"dev","description":"Search Stack Overflow questions (keyless). Each result: title, link, score, answer count, answered flag, view count, tags, creation date, and question id. Sort by relevance, votes, activity, or creation. For coding agents that need authoritative Q&A on errors, APIs, and language features.","versions":[{"version":null,"path":"/api/dev/stackoverflow-search","method":"GET","deprecated":false,"price":{"usd":0.00144},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"q":{"type":"string","minLength":2,"maxLength":200,"description":"Search query, e.g. \"async await deadlock c#\"."},"sort":{"type":"string","enum":["relevance","votes","activity","creation"],"description":"Default relevance."},"limit":{"type":"integer","minimum":1,"maximum":30}},"required":["q"],"additionalProperties":false}}]},{"id":"dev.uuid","group":"dev","description":"Generate UUIDs. version v4 (random) or v7 (time-ordered, sortable); count 1-100. Cryptographically random. Pure compute, no upstream.","versions":[{"version":null,"path":"/api/dev/uuid","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"version":{"type":"string","enum":["v4","v7"],"description":"Default v4."},"count":{"type":"integer","minimum":1,"maximum":100}},"additionalProperties":false}}]},{"id":"dns.lookup","group":"dns","description":"Resolve a hostname over public DNS and return parsed records. Query: host (required FQDN), types (comma-separated: A,AAAA,MX,TXT,NS,CAA,SRV,CNAME,PTR,SOA — default A,AAAA,MX,TXT,NS), resolver (cloudflare|google|quad9|opendns, optional). Returns one normalized JSON shape per record type with per-type error pass-through. Reserved/local TLDs (.local, .internal, .invalid, .test, localhost) are rejected. 4s per-query timeout.","versions":[{"version":null,"path":"/api/dns/lookup","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"host":{"type":"string","minLength":1,"maxLength":253},"types":{"type":"string","pattern":"^(A|AAAA|MX|TXT|NS|CAA|SRV|CNAME|PTR|SOA)(,(A|AAAA|MX|TXT|NS|CAA|SRV|CNAME|PTR|SOA)){0,9}$"},"resolver":{"type":"string","enum":["cloudflare","google","quad9","opendns"]}},"required":["host"],"additionalProperties":false}}]},{"id":"domain.ct-logs","group":"domain","description":"Certificate Transparency recon for a domain — discover its subdomains and issued certificates from public CT logs (passive attack-surface mapping). Pass domain. Returns the deduplicated set of subdomains seen across all certs (subdomains + subdomainCount), and the certificates (issuer, validity window, SAN dns names), most recent first. Sourced from SSLMate certSpotter (primary) with a crt.sh fallback — keyless. Live CT-log data over a huge append-only dataset an LLM cannot enumerate. For external attack-surface discovery, shadow-IT/subdomain inventory, and certificate monitoring. Note: CT shows names that ever appeared in a cert, not necessarily live hosts.","versions":[{"version":null,"path":"/api/domain/ct-logs","method":"GET","deprecated":false,"price":{"usd":0.00216},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"domain":{"type":"string","minLength":3,"maxLength":253},"limit":{"type":"integer","minimum":1,"maximum":500}},"required":["domain"],"additionalProperties":false}}]},{"id":"domain.email-security","group":"domain","description":"Grade a domain's email-authentication and DNS-security posture from live DNS in one call: SPF, DMARC (policy + alignment), DKIM (for the supplied or common selectors), MTA-STS, TLS-RPT, DNSSEC, CAA, and BIMI. Pass domain (and optional dkimSelector). Returns an overall letter grade, a summary (spf/dmarcPolicy/dkim/mtaSts/dnssec/caa/bimi + spoofingProtected), and a per-mechanism block with the raw record, parsed tags, and specific issues (e.g. 'DMARC p=none — monitor only', 'SPF ~all soft-fail', 'no MTA-STS'). Sourced from live public DNS via DNS-over-HTTPS — an LLM cannot know a domain's current records. For deliverability/anti-spoofing audits, vendor security review, and phishing-resistance checks. DKIM is selector-based (selectors aren't enumerable), so 'not found' only means none of the checked selectors resolved.","versions":[{"version":null,"path":"/api/domain/email-security","method":"GET","deprecated":false,"price":{"usd":0.0018},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"domain":{"type":"string","minLength":3,"maxLength":253},"dkimSelector":{"type":"string","minLength":1,"maxLength":63}},"required":["domain"],"additionalProperties":false}}]},{"id":"domain.intel","group":"domain","description":"Domain intelligence in one call — composes DNS, WHOIS/RDAP registration, and the live TLS certificate for a domain. Pass domain (e.g. example.com). Returns a summary (does it resolve, has MX, registrar, domain expiry, whether HTTPS is currently valid, days until cert expiry) plus three independent sections: dns (A/AAAA/MX/NS/TXT records), whois (registrar, registered/expires/updated dates, status codes, nameservers, DNSSEC), and tls (certificate issuer, subject, validity window, SANs, fingerprint). Each section reports found/error independently, so a domain with no HTTPS still returns DNS + WHOIS. For domain due diligence, security recon, expiry monitoring, and vendor onboarding. Individual sources: /api/dns/lookup, /api/domain/whois, /api/net/tls-cert.","versions":[{"version":null,"path":"/api/domain/intel","method":"GET","deprecated":false,"price":{"usd":0.0048},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"domain":{"type":"string","minLength":3,"maxLength":253}},"required":["domain"],"additionalProperties":false}}]},{"id":"domain.whois","group":"domain","description":"Modern WHOIS via RDAP. Query: domain (e.g. example.com). Returns { domain, ldhName, handle, registrar:{ name, ianaId, url, abuseEmail, abusePhone }, registeredAt, expiresAt, updatedAt, statuses (camelCase ICANN EPP codes), nameservers[], dnssecSigned, rdapUrl }. GDPR: registrant personal data is generally redacted upstream and not returned. Some TLDs without RDAP are not supported and return 404 TLD_NOT_SUPPORTED.","versions":[{"version":null,"path":"/api/domain/whois","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"domain":{"type":"string","minLength":3,"maxLength":253}},"required":["domain"],"additionalProperties":false}}]},{"id":"earth.events","group":"earth","description":"Global natural events tracker via NASA EONET v3 (Earth Observatory Natural Event Tracker). Returns active and historical events curated by NASA EOSDIS: wildfires, severe storms, volcanoes, floods, droughts, landslides, sea/lake ice, dust/haze, manmade incidents, water-color anomalies. Each event includes geo-located observation points with timestamps, source attribution (USGS, NWS, IRWIN, GDACS, etc.), and category. Filter by status (open/closed/all), days-back window, category, or bounding box.","versions":[{"version":null,"path":"/api/earth/events","method":"GET","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"status":{"type":"string","enum":["open","closed","all"],"default":"open"},"limit":{"type":"integer","minimum":1,"maximum":200,"default":20},"days":{"type":"integer","minimum":1,"maximum":365},"category":{"type":"string","enum":["drought","dustHaze","earthquakes","floods","landslides","manmade","seaLakeIce","severeStorms","snow","tempExtremes","volcanoes","waterColor","wildfires"]},"bbox":{"type":"string","pattern":"^-?\\d+(\\.\\d+)?,-?\\d+(\\.\\d+)?,-?\\d+(\\.\\d+)?,-?\\d+(\\.\\d+)?$"}},"additionalProperties":false}}]},{"id":"earth.now","group":"earth","description":"Situational awareness for a coordinate: recent earthquakes (USGS) and active wildfires (NIFC) within a configurable radius. Returns each with distance-from-query in km, sorted nearest-first. Multi-source synthesis from free US Government feeds. Real-time, post-training data.","versions":[{"version":null,"path":"/api/earth/now","method":"GET","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"lat":{"type":"number","minimum":-90,"maximum":90},"lon":{"type":"number","minimum":-180,"maximum":180},"radius_km":{"type":"number","minimum":1,"maximum":1000,"default":500},"hours":{"type":"number","minimum":1,"maximum":168,"default":24},"min_magnitude":{"type":"number","minimum":0,"maximum":10,"default":2}},"required":["lat","lon"],"additionalProperties":false}}]},{"id":"econ.commodity","group":"econ","description":"Latest benchmark commodity price with the prior value + % change. Pass commodity for one, or omit for all. Commodities: wti, brent, natural-gas, gasoline, diesel, heating-oil, propane, copper, aluminum, corn, wheat, sugar — i.e. crude oil (WTI + Brent), natural gas, gasoline, diesel, heating oil, propane, gold, copper, aluminum, corn, wheat, sugar. Each result names the FRED series ID + unit ($/barrel, $/gallon, $/troy oz, $/metric ton...). Daily benchmarks report a daily date; global-price series are monthly. Source: EIA / LBMA / IMF via FRED (St. Louis Fed).","versions":[{"version":null,"path":"/api/econ/commodity","method":"GET","deprecated":false,"price":{"usd":0.00144},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"commodity":{"type":"string","enum":["wti","brent","natural-gas","gasoline","diesel","heating-oil","propane","copper","aluminum","corn","wheat","sugar"]}},"additionalProperties":false}}]},{"id":"econ.cot","group":"econ","description":"CFTC Commitments of Traders (COT) — weekly futures positioning for a market (free/keyless). Match a market by name (e.g. 'E-MINI S&P', 'GOLD', 'CRUDE OIL', 'BITCOIN'). Each weekly report: open interest, large speculators (non-commercial) long/short/spread, commercials (hedgers) long/short, small (non-reportable) traders, and week-over-week changes. For positioning/sentiment analysis.","versions":[{"version":null,"path":"/api/econ/cot","method":"GET","deprecated":false,"price":{"usd":0.0018},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"market":{"type":"string","minLength":2,"maxLength":60,"description":"Market name contains, e.g. GOLD, E-MINI S&P, CRUDE OIL."},"limit":{"type":"integer","minimum":1,"maximum":50}},"required":["market"],"additionalProperties":false}}]},{"id":"econ.fred","group":"econ","description":"Any series in the Federal Reserve's FRED database (800k+ US & international economic time series). HOW TO USE: if you know the series id, pass seriesId to get the series metadata (title, units, frequency, seasonal adjustment, observation range, last updated) + its most-recent observations (date + value, newest first; optionally bound the range with start/end YYYY-MM-DD and cap with limit). If you DON'T know the id, pass query to full-text search the catalog (returns ids + titles + units + frequency, most-popular first) — then call again with the seriesId you found. Popular ids: UNRATE (unemployment rate), CPIAUCSL (CPI), PCEPI (PCE price index), GDP / GDPC1 (nominal / real GDP), PAYEMS (nonfarm payrolls), FEDFUNDS (fed funds rate), DGS10 / DGS2 (10yr / 2yr Treasury), T10Y2Y (10y-2y spread), MORTGAGE30US (30yr mortgage), SP500, VIXCLS (VIX), DEXUSEU (USD/EUR), DCOILWTICO (WTI oil), HOUST (housing starts), UMCSENT (consumer sentiment), M2SL (M2 money supply). Each series' units and frequency come back in the metadata so you know how to read the values. Free, public-domain for most series (FRED attribution). Distinct from econ.indicator (a small curated headline set) — this is the FULL catalog. Companion endpoints: econ.fred-releases (when reports are published — the data calendar) and econ.fred-vintage (point-in-time / revised values for honest backtesting).","versions":[{"version":null,"path":"/api/econ/fred","method":"GET","deprecated":false,"price":{"usd":0.00144},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"seriesId":{"type":"string","minLength":1,"maxLength":60},"query":{"type":"string","minLength":1,"maxLength":120},"limit":{"type":"integer","minimum":1,"maximum":100},"start":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"end":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},"additionalProperties":false}}]},{"id":"econ.fred-categories","group":"econ","description":"Browse the Federal Reserve FRED category tree to DISCOVER economic series. Pass a categoryId to get that category (name + parent), its child categories, and the most-popular series filed under it (id, title, units, frequency) — then pull the data with econ.fred. Omit categoryId (or pass 0) for the eight top-level categories: Money/Banking/Finance, Population/Employment/Labor, National Accounts, Production & Business Activity, Prices, International Data, U.S. Regional Data, Academic Data. Walk down via each child's id. Free, public-domain (FRED). The structured map of what FRED actually contains — far more reliable than guessing series ids. Companion to econ.fred (fetch/search) and econ.fred-releases (calendar).","versions":[{"version":null,"path":"/api/econ/fred-categories","method":"GET","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"categoryId":{"type":"integer","minimum":0,"maximum":10000000},"seriesLimit":{"type":"integer","minimum":0,"maximum":50}},"additionalProperties":false}}]},{"id":"econ.fred-regional","group":"econ","description":"Federal Reserve regional economic data: one snapshot of a FRED regional series across ALL its geographies (every U.S. state, county, or metro area) for a single period. Pass a regional series id (e.g. WIPCPI = per-capita personal income by state, or a state/county unemployment series) and get each region's name, FIPS region code, value, and per-region FRED series id, plus the group's units, frequency, and available date range. Add a date (YYYY-MM-DD) for a point-in-time cross-section; omit it for the latest. Authoritative St. Louis Fed (GeoFRED) data agents can't recite — per-state income, county unemployment, regional GDP — keyed by exact region codes. Free, public-domain. Companion to econ.fred (national series), econ.fred-categories (discover series ids), and census.demographics (ACS survey).","versions":[{"version":null,"path":"/api/econ/fred-regional","method":"GET","deprecated":false,"price":{"usd":0.0018},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"seriesId":{"type":"string","minLength":1,"maxLength":64,"description":"A FRED regional series id (e.g. WIPCPI). Resolves to its regional series group."},"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Optional YYYY-MM-DD period for a point-in-time cross-section (default: latest available)."}},"required":["seriesId"],"additionalProperties":false}}]},{"id":"econ.fred-releases","group":"econ","description":"The US economic-data release CALENDAR — when official economic reports are published, from the Federal Reserve's FRED. Returns upcoming release dates (date, release name, FRED release id), starting from `from` (default today), ascending. Filter by name to find a specific report's schedule (e.g. name=\"Consumer Price Index\" → the next CPI dates; \"Employment Situation\" → jobs report; \"Gross Domestic Product\"; \"FOMC\"), or by releaseId. Free, public-domain (FRED). Future release dates an LLM cannot possibly know — essential for trading, scheduling, and macro-monitoring agents that need to act around data drops. Pair with econ.fred to pull the actual numbers once a release is out.","versions":[{"version":null,"path":"/api/econ/fred-releases","method":"GET","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"from":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"name":{"type":"string","minLength":1,"maxLength":80},"releaseId":{"type":"integer","minimum":1,"maximum":100000},"limit":{"type":"integer","minimum":1,"maximum":100}},"additionalProperties":false}}]},{"id":"econ.fred-vintage","group":"econ","description":"Point-in-time (vintage) economic data from FRED's ALFRED archive — what an economic figure was AS FIRST REPORTED / as known on a past date, before later revisions. Give a seriesId (e.g. GDP, GDPC1, PAYEMS, INDPRO) and an asOf date to get the observations exactly as they stood on that date; omit asOf to get the current (latest-revised) values. Also returns the series' vintage (revision) dates — every date the series was revised. Free, public-domain (FRED). Critical for honest backtesting and macro research: it eliminates look-ahead bias (e.g. GDP for 2020Q1 was first reported far lower than today's revised figure). No LLM and no real-time API gives this — it's the archived state of the data through time. Pair with econ.fred (current series) and econ.fred-releases (release calendar).","versions":[{"version":null,"path":"/api/econ/fred-vintage","method":"GET","deprecated":false,"price":{"usd":0.00168},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"seriesId":{"type":"string","minLength":1,"maxLength":60},"asOf":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"start":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"end":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"limit":{"type":"integer","minimum":1,"maximum":100}},"required":["seriesId"],"additionalProperties":false}}]},{"id":"econ.indicator","group":"econ","description":"Latest reading of a curated US macroeconomic indicator, with the prior + year-ago values and YoY % change. Pass indicator for one, or omit for all. Indicators: unemployment-rate, fed-funds-rate, nonfarm-payrolls, jobless-claims, labor-force-participation, real-gdp, gdp-growth, 10y-treasury, 2y-treasury, 3m-treasury, 30y-mortgage, consumer-sentiment, housing-starts, retail-sales, industrial-production, m2, personal-saving-rate — i.e. unemployment rate, fed funds rate, nonfarm payrolls, jobless claims, labor-force participation, real GDP + GDP growth, 2y/3m/10y Treasury yields, 30y mortgage rate, consumer sentiment, housing starts, retail sales, industrial production, M2, personal saving rate. Each result names the FRED series ID + units. Source: BLS/BEA/Fed/Treasury via FRED (St. Louis Fed). For inflation specifically use inflation.rates; for any raw series use bls.series.","versions":[{"version":null,"path":"/api/econ/indicator","method":"GET","deprecated":false,"price":{"usd":0.00144},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"indicator":{"type":"string","enum":["unemployment-rate","fed-funds-rate","nonfarm-payrolls","jobless-claims","labor-force-participation","real-gdp","gdp-growth","10y-treasury","2y-treasury","3m-treasury","30y-mortgage","consumer-sentiment","housing-starts","retail-sales","industrial-production","m2","personal-saving-rate"]}},"additionalProperties":false}}]},{"id":"econ.recession","group":"econ","description":"Composite US recession-signal dashboard: the NY Fed model's recession probability (12 months ahead, %), the Sahm-rule real-time indicator (≥0.50 signals a recession has begun), and the 10-Year minus 2-Year Treasury spread (negative = inverted, a classic precursor). Returns each gauge with its latest value, date, a triggered/inverted flag, and a plain-language note, plus a count of signals currently flashing. A read of the standard gauges — not a forecast. Source: NY Fed / BLS / US Treasury via FRED.","versions":[{"version":null,"path":"/api/econ/recession","method":"GET","deprecated":false,"price":{"usd":0.00144},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{},"additionalProperties":false}}]},{"id":"econ.yield-curve","group":"econ","description":"Current US Treasury yield curve — the market yield at every constant-maturity tenor from 1 month to 30 years (1M, 3M, 6M, 1Y, 2Y, 3Y, 5Y, 7Y, 10Y, 20Y, 30Y), each as a percent as of its latest date. Also returns the 2s10s spread (10Y − 2Y), the 3m10y spread (10Y − 3M), and an inverted flag (true when 2s10s is negative — a classic recession signal). Daily data. Source: US Treasury constant-maturity rates via FRED (St. Louis Fed).","versions":[{"version":null,"path":"/api/econ/yield-curve","method":"GET","deprecated":false,"price":{"usd":0.00144},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{},"additionalProperties":false}}]},{"id":"edi.ack","group":"edi","description":"Generate the ANSI ASC X12 997 Functional Acknowledgment for a received EDI interchange. POST { edi } with the raw inbound interchange text (the 850/810/856/etc. you received); returns the ready-to-send 997 in meta.ack — sender/receiver mirrored back, delimiters echoed, one ST(997) per inbound functional group with correct AK1 (functional id + group control number), AK2/AK5 per transaction set, and AK9 with accurate included/received/accepted counts. Set status to control the response: A=Accepted (default), E=Accepted with errors, P=Partially accepted, R=Rejected, M/W/X=authentication/security rejection. Deterministic, no external calls. This is the reply leg of EDI: every transaction set you receive is supposed to be acknowledged, and assembling a valid 997 (especially the AK9 counts) is exactly the fiddly envelope bookkeeping agents shouldn't hand-roll.","versions":[{"version":null,"path":"/api/edi/ack","method":"POST","deprecated":false,"price":{"usd":0.0018},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"edi":{"type":"string","minLength":106,"maxLength":500000},"status":{"type":"string","enum":["A","E","P","R","M","W","X"]},"controlNumber":{"type":"string","maxLength":15}},"required":["edi"],"additionalProperties":false}}]},{"id":"edi.edifact","group":"edi","description":"Parse a raw UN/EDIFACT document (the B2B EDI format used across Europe, Asia, logistics and customs — the international counterpart to ANSI X12) into clean, structured JSON. POST { edi } with the raw interchange text. Reads the optional UNA service-string advice to auto-detect delimiters (or applies the UN defaults: component ':', element '+', segment \"'\", release '?'), handles release-character escaping, then returns the interchange envelope (UNB: syntax id, sender/recipient with qualifiers, date/time, control reference, test indicator), and each message with its type decoded (e.g. ORDERS = Purchase Order, INVOIC = Invoice, DESADV = Despatch Advice/ASN, ORDRSP = PO Response, CONTRL = Acknowledgment) plus version/release/agency from the UNH, every segment named (BGM, DTM, NAD, LIN, QTY, MOA, …), and a semantic summary — for an order that's the order number, document/delivery dates, parties (buyer/seller/ship-to with role decoded), and line items (product id + quantity); for an invoice the invoice number, currency, parties and total; for a despatch advice the despatch number, date and package/line counts. Deterministic, no external calls. Turns opaque EDIFACT into something an agent can use without hand-rolling a parser.","versions":[{"version":null,"path":"/api/edi/edifact","method":"POST","deprecated":false,"price":{"usd":0.0018},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"edi":{"type":"string","minLength":10,"maxLength":500000}},"required":["edi"],"additionalProperties":false}}]},{"id":"edi.edifact-generate","group":"edi","description":"Generate an outbound UN/EDIFACT document from JSON — the international counterpart to edi.generate (X12). POST type ('ORDERS' = purchase order or 'INVOIC' = invoice) + senderId, recipientId (with optional qualifiers), documentNumber, optional date (CCYYMMDD), parties (NAD role+name, e.g. BY buyer / SU supplier / IV invoicee), items (quantity, productId, price), and for INVOIC an optional total. Returns the full EDIFACT interchange in meta.edi — a correct UNA/UNB/UNH…UNT/UNZ envelope with BGM, DTM, NAD, LIN/QTY/PRI, MOA/CNT — with proper delimiters and release-character escaping. Deterministic, no external calls. Round-trips through edi.edifact.","versions":[{"version":null,"path":"/api/edi/edifact-generate","method":"POST","deprecated":false,"price":{"usd":0.0018},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"type":{"type":"string","enum":["ORDERS","INVOIC"]},"senderId":{"type":"string","minLength":1,"maxLength":35},"recipientId":{"type":"string","minLength":1,"maxLength":35},"senderQualifier":{"type":"string","minLength":1,"maxLength":4},"recipientQualifier":{"type":"string","minLength":1,"maxLength":4},"documentNumber":{"type":"string","minLength":1,"maxLength":35},"date":{"type":"string","minLength":6,"maxLength":8},"parties":{"type":"array","items":{"type":"object","properties":{"role":{"type":"string","minLength":1,"maxLength":3},"name":{"type":"string","minLength":1,"maxLength":70}},"required":["role","name"],"additionalProperties":false},"maxItems":20},"items":{"type":"array","items":{"type":"object","properties":{"quantity":{"anyOf":[{"type":"number"},{"type":"string"}]},"productId":{"type":"string","maxLength":35},"price":{"anyOf":[{"type":"number"},{"type":"string"}]},"idType":{"type":"string","maxLength":3}},"required":["quantity"],"additionalProperties":false},"minItems":1,"maxItems":1000},"total":{"type":"number"},"controlRef":{"type":"string","maxLength":14}},"required":["type","senderId","recipientId","documentNumber","items"],"additionalProperties":false}}]},{"id":"edi.generate","group":"edi","description":"Generate a ready-to-send ANSI ASC X12 EDI document from structured JSON. POST type ('850' Purchase Order, '810' Invoice, or '856' Ship Notice/ASN) plus senderId, receiverId, documentNumber (PO#/invoice#/shipment id), optional date, parties (N1 loops — role like ST/BT/VN + name), and items (quantity, uom, price, productId). For an 810 you can pass poNumber and total; for an 856 pass poNumber (the PO shipped). Returns the full X12 interchange in meta.edi — correct ISA/GS/ST…SE/GE/IEA envelope, party loops, PO1/IT1 line items (or the 856 HL Shipment→Order→Item hierarchy with LIN/SN1), and CTT/TDS totals (implied 2-decimal). Deterministic, no external calls. The outbound complement to edi.parse and edi.ack: assemble valid EDI envelopes instead of hand-rolling segment terminators and control numbers.","versions":[{"version":null,"path":"/api/edi/generate","method":"POST","deprecated":false,"price":{"usd":0.0018},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"type":{"type":"string","enum":["850","810","856"]},"senderId":{"type":"string","minLength":1,"maxLength":15},"receiverId":{"type":"string","minLength":1,"maxLength":15},"senderQualifier":{"type":"string","maxLength":2},"receiverQualifier":{"type":"string","maxLength":2},"documentNumber":{"type":"string","minLength":1,"maxLength":60},"poNumber":{"type":"string","maxLength":60},"date":{"type":"string","maxLength":10},"parties":{"type":"array","items":{"type":"object","properties":{"role":{"type":"string","minLength":1,"maxLength":3,"description":"Entity-id code (ST=ship-to, BT=bill-to, VN=vendor, SF=ship-from, …)."},"name":{"type":"string","minLength":1,"maxLength":60},"idQualifier":{"type":"string","maxLength":2},"id":{"type":"string","maxLength":80}},"required":["role","name"],"additionalProperties":false},"maxItems":20},"items":{"type":"array","items":{"type":"object","properties":{"quantity":{"anyOf":[{"type":"number"},{"type":"string"}]},"uom":{"type":"string","maxLength":2,"description":"Unit of measure (EA, CA, …; default EA)."},"price":{"anyOf":[{"type":"number"},{"type":"string"}]},"productId":{"type":"string","maxLength":48},"idQualifier":{"type":"string","maxLength":2,"description":"Product id qualifier (VP, UP, BP, …; default VP)."}},"required":["quantity"],"additionalProperties":false},"minItems":1,"maxItems":1000},"total":{"type":"number","description":"810 invoice total in USD."},"controlNumber":{"type":"string","maxLength":15},"usage":{"type":"string","enum":["P","T"]}},"required":["type","senderId","receiverId","documentNumber","items"],"additionalProperties":false}}]},{"id":"edi.parse","group":"edi","description":"Parse a raw ANSI ASC X12 EDI document (the format used for B2B purchase orders, invoices, ship notices, etc.) into clean, structured JSON. POST { edi } with the raw interchange text. Auto-detects the delimiters from the ISA envelope, then returns the interchange metadata (sender/receiver/date/control number/test-or-production), each functional group, and each transaction set with its type decoded (e.g. 850 = Purchase Order, 810 = Invoice, 856 = Ship Notice/ASN, 855 = PO Acknowledgment, 997 = Functional Acknowledgment), every segment named (BEG, N1, PO1, …), and a semantic summary — for a PO that's the PO number, dates, parties (ship-to/vendor with address), and line items (qty/uom/price/product id); for an invoice the invoice + PO numbers and total; for an ASN the shipment id and carrier; for a 997 the acknowledged group + status. Deterministic, no external calls. Turns opaque EDI into something an agent can actually use without hand-rolling an X12 parser.","versions":[{"version":null,"path":"/api/edi/parse","method":"POST","deprecated":false,"price":{"usd":0.0018},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"edi":{"type":"string","minLength":106,"maxLength":500000}},"required":["edi"],"additionalProperties":false}}]},{"id":"edu.college-scorecard","group":"edu","description":"Search US colleges + universities via the Department of Education College Scorecard API. Filter by free-text name (q), OPE/IPEDS school id, state, city, zip, ownership (1=Public | 2=Private nonprofit | 3=Private for-profit), predominant degree level (0=Not classified | 1=Certificate | 2=Associate | 3=Bachelor | 4=Graduate), enrollment range. Returns a curated field set per school: identity (name, alias, URL, location), classification (Carnegie, locale, religious affiliation, minority-serving designation), latest admissions (admit rate, SAT/ACT midpoints), cost (in-state + out-of-state tuition, total cost of attendance), aid (median debt, federal-loan rate, Pell rate), completion rate, 10-year median earnings, repayment rate, lat/lon. Every accredited US institution. Use perPage + page for pagination; page is 0-indexed.","versions":[{"version":null,"path":"/api/edu/college-scorecard","method":"GET","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"q":{"type":"string","minLength":1,"maxLength":120},"schoolId":{"type":"integer","minimum":1},"state":{"type":"string","minLength":2,"maxLength":2,"pattern":"^[A-Za-z]{2}$"},"city":{"type":"string","minLength":2,"maxLength":80},"zip":{"type":"string","pattern":"^\\d{5}$"},"ownership":{"type":"integer"},"degreePredominant":{"type":"integer"},"minEnrollment":{"type":"integer","minimum":0},"maxEnrollment":{"type":"integer","minimum":1},"perPage":{"type":"integer","minimum":1,"maximum":100,"default":20},"page":{"type":"integer","minimum":0,"default":0},"fields":{"type":"string","maxLength":2000}},"additionalProperties":false}}]},{"id":"edu.school-lookup","group":"edu","description":"Look up any US public K-12 school (~102k, NCES Common Core of Data). Search by name (partial), district (LEA name, partial), state (2-letter), city, zip, or exact ncessch (12-digit NCES id). Each school: NCES id, name, district + LEA id, address, phone, lat/lon, school level (1=primary 2=middle 3=high 4=other) and type (1=regular 2=special-ed 3=vocational 4=alternative), charter/magnet/virtual flags, enrollment, teacher FTE, grade span, CCD year. Results ordered by enrollment. Higher-ed sibling: /api/edu/college-scorecard. Public-domain federal data.","versions":[{"version":null,"path":"/api/edu/school-lookup","method":"GET","deprecated":false,"price":{"usd":0.00144},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"name":{"type":"string","minLength":2,"maxLength":120},"district":{"type":"string","minLength":2,"maxLength":120},"state":{"type":"string","minLength":2,"maxLength":2},"city":{"type":"string","minLength":2,"maxLength":60},"zip":{"type":"string","pattern":"^\\d{5}$"},"ncessch":{"type":"string","pattern":"^\\d{12}$"},"limit":{"type":"integer","minimum":1,"maximum":100,"default":10},"offset":{"type":"integer","minimum":0,"default":0}},"additionalProperties":false}}]},{"id":"email.validate","group":"email","description":"Validate an email address and return structured signals: RFC syntax validity (isSyntaxValid + reason if not), the normalized address with split local/domain, and boolean flags for isDisposable (throwaway/temp-mail domain), isRoleAccount (info@, support@, admin@, …), and isFreeProvider (gmail/outlook/yahoo/icloud/…). With checkMx (default true) it also reports hasMxRecords — whether the domain publishes MX records, looked up live via DNS-over-HTTPS — plus the MX hosts. IMPORTANT: this is NOT a deliverability or mailbox-existence guarantee (catch-all domains, greylisting, and privacy relays make that impossible to assert from a single lookup); hasMxRecords reflects DNS MX presence only. Useful for signup-flow hygiene, lead scrubbing, and flagging disposable/role addresses before sending.","versions":[{"version":null,"path":"/api/email/validate","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"email":{"type":"string","minLength":1,"maxLength":320},"checkMx":{"type":"boolean"}},"required":["email"],"additionalProperties":false}}]},{"id":"energy.carbon-intensity-uk","group":"energy","description":"Great Britain electricity grid carbon intensity (current half-hour) from National Grid ESO. Returns the forecast and actual carbon intensity in grams of CO2 per kWh, the qualitative index (very low / low / moderate / high / very high), and the live generation mix by fuel (gas, wind, nuclear, solar, imports, etc.). Free, CC BY / Open Government Licence. Live grid-decarbonisation signal an LLM cannot recall — for energy, sustainability, and demand-shifting agents. Complements our US energy.* set.","versions":[{"version":null,"path":"/api/energy/carbon-intensity-uk","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{},"additionalProperties":false}}]},{"id":"energy.electricity-rates","group":"energy","description":"Retail electricity price and sales for a US state by customer sector (residential, commercial, industrial, transportation, all), monthly, newest first, from EIA. Returns average price (cents/kWh), sales (MWh), revenue ($M), and customer count per month. Public-domain, live-wrap. More granular than energy.prices (which is the national all-sector benchmark only).","versions":[{"version":null,"path":"/api/energy/electricity-rates","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"state":{"type":"string","minLength":2,"maxLength":2},"sector":{"type":"string","enum":["residential","commercial","industrial","transportation","all"]},"months":{"type":"integer","minimum":1,"maximum":120}},"required":["state"],"additionalProperties":false}}]},{"id":"energy.fuel-stations","group":"energy","description":"Locate alternative-fuel stations across the US via NREL Alternative Fuels Data Center. Search by lat/lon + radius (miles), state, or zip. Filter by fuelType (BD=Biodiesel | CNG=Compressed Natural Gas | ELEC=Electric vehicle charging | E85=Ethanol | HY=Hydrogen | LNG=Liquefied Natural Gas | LPG=Propane | RD=Renewable Diesel), status (E=Available | P=Planned | T=Temporarily Unavailable), access (public/private), and EV network. For EV chargers, returns connector types (J1772, CHAdeMO, Tesla, etc.), Level 1/2/DC-fast counts, pricing, and access hours. Indispensable for trip-planning agents, fleet logistics, EV-adoption analysis.","versions":[{"version":null,"path":"/api/energy/fuel-stations","method":"GET","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"lat":{"type":"number","minimum":-90,"maximum":90},"lon":{"type":"number","minimum":-180,"maximum":180},"radius":{"type":"number","minimum":0.1,"maximum":500},"fuelType":{"type":"string"},"state":{"type":"string","minLength":2,"maxLength":2,"pattern":"^[A-Za-z]{2}$"},"zip":{"type":"string","pattern":"^\\d{5}$"},"status":{"type":"string","enum":["all","E","P","T"]},"accessCode":{"type":"string","enum":["all","public","private"]},"network":{"type":"string","minLength":1,"maxLength":80},"limit":{"type":"integer","minimum":1,"maximum":200,"default":25}},"additionalProperties":false}}]},{"id":"energy.generation-mix","group":"energy","description":"Electricity generation mix by fuel type for a US state (2-letter) or \"US\", from EIA — the most recent monthly net generation (thousand MWh) broken out by fuel (natural gas, coal, nuclear, solar, wind, hydro, etc.) with each fuel's percent share and the all-fuels total. Public-domain, live-wrap. Use for grid carbon-intensity, decarbonization, and energy-policy reasoning. (For benchmark energy prices use energy.prices; for retail electricity rates by state/sector use energy.electricity-rates.)","versions":[{"version":null,"path":"/api/energy/generation-mix","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"location":{"type":"string","minLength":2,"maxLength":3}},"required":["location"],"additionalProperties":false}}]},{"id":"energy.prices","group":"energy","description":"US energy benchmark prices from the EIA (Energy Information Administration) open data API. Omit series for a one-call snapshot of the latest value of every benchmark; pass series for its recent time series (newest first). Benchmarks: wti_crude / brent_crude ($/barrel), henry_hub_gas ($/MMBtu), gasoline_regular / diesel ($/gallon), electricity_retail (cents/kWh). Each observation has date, value, units, and frequency. Public-domain US government data.","versions":[{"version":null,"path":"/api/energy/prices","method":"GET","deprecated":false,"price":{"usd":0.00288},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"series":{"type":"string","enum":["wti_crude","brent_crude","henry_hub_gas","gasoline_regular","diesel","electricity_retail"],"description":"Optional benchmark id. Omit for a snapshot of all benchmarks. One of: wti_crude, brent_crude, henry_hub_gas, gasoline_regular, diesel, electricity_retail."},"limit":{"type":"integer","minimum":1,"maximum":100,"default":12,"description":"Observations to return in single-series mode (1-100). Default 12. Ignored in snapshot mode."}},"additionalProperties":false}}]},{"id":"energy.solar-forecast","group":"energy","description":"Solar irradiance + PV-yield forecast for any coordinate (free/keyless, global). Returns a daily 1-16 day forecast: GHI (kWh/m²), peak sun hours, sunshine hours, and estimated yield per kWp of panels (at a 0.75 performance ratio). For rooftop-solar planning, agrivoltaics, and EV-charge scheduling. Complements energy.solar-resource (NREL long-run averages, US).","versions":[{"version":null,"path":"/api/energy/solar-forecast","method":"GET","deprecated":false,"price":{"usd":0.00144},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180},"days":{"type":"integer","minimum":1,"maximum":16}},"required":["latitude","longitude"],"additionalProperties":false}}]},{"id":"energy.solar-resource","group":"energy","description":"Get average solar resource estimates for any latitude/longitude via NREL. Returns annual + monthly averages for: Direct Normal Irradiance (DNI, kWh/m²/day — solar concentrators), Global Horizontal Irradiance (GHI, kWh/m²/day — flat-plate panels), and Tilted-At-Latitude irradiance (optimal fixed-panel orientation). Sourced from NREL National Solar Radiation Database (NSRDB). Useful for rooftop solar feasibility, off-grid design, and renewable-energy modeling.","versions":[{"version":null,"path":"/api/energy/solar-resource","method":"GET","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"lat":{"type":"number","minimum":-90,"maximum":90},"lon":{"type":"number","minimum":-180,"maximum":180}},"required":["lat","lon"],"additionalProperties":false}}]},{"id":"energy.utility-rates","group":"energy","description":"Which electric utility serves a US latitude/longitude, and a summary of its published rate plans, from the OpenEI Utility Rate Database (URDB, CC0). Each plan returns the utility, rate name, customer sector, EIA utility id, fixed monthly charge, the first-tier energy rate ($/kWh), and a link to the full tariff. Use for solar/EV/storage economics, bill estimation, and \"who is my utility\" lookups. (For average state retail prices use energy.electricity-rates.)","versions":[{"version":null,"path":"/api/energy/utility-rates","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"lat":{"type":"number","minimum":-90,"maximum":90},"lon":{"type":"number","minimum":-180,"maximum":180},"limit":{"type":"integer","minimum":1,"maximum":25}},"required":["lat","lon"],"additionalProperties":false}}]},{"id":"factcheck.search","group":"factcheck","description":"Search the global corpus of published fact-checks (ClaimReview) by free-text claim. Returns matching claims with the claimant, claim date, and each fact-check review's verdict (textualRating, e.g. \"False\", \"Misleading\", \"True\"), the publisher (PolitiFact, Snopes, FactCheck.org, Reuters Fact Check, AFP, …), the review URL, and review date. Covers every topic — politics, health, science, viral and misinformation claims. Optional language, recency (maxAgeDays), and publisher-site filters. Aggregated by Google from publishers' schema.org ClaimReview data. Use it to check whether a claim has been independently fact-checked and how it was rated, rather than asserting from training data.","versions":[{"version":null,"path":"/api/factcheck/search","method":"GET","deprecated":false,"price":{"usd":0.0018},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"query":{"type":"string","minLength":2,"maxLength":200,"description":"Free-text claim to search the fact-check corpus for."},"language":{"type":"string","minLength":2,"maxLength":8,"description":"BCP-47 language code (e.g. en, es) to restrict results."},"maxAgeDays":{"type":"integer","minimum":1,"maximum":3650,"description":"Only return reviews published within this many days."},"publisher":{"type":"string","minLength":2,"maxLength":120,"description":"Restrict to a publisher site (e.g. factcheck.org, politifact.com)."},"limit":{"type":"integer","minimum":1,"maximum":50,"description":"Max claims to return (1–50, default 10)."}},"required":["query"],"additionalProperties":false}}]},{"id":"feedback.send","group":"feedback","description":"Send a message straight to the 2s team. POST { message } (required) plus optional subject, name, and from (your email — set as the reply-to + shown as the sender so the team can get back to you). Delivers your message by email to the 2s maintainers — use it for feedback, bug reports, endpoint requests, or to get in touch. Flat $0.10 per send; the payment keeps the channel spam-free. The recipient is fixed (the 2s team), so this is a one-way contact channel, not a general mailer. Returns { sent, id }. Trial calls are not accepted — this endpoint always requires payment.","versions":[{"version":null,"path":"/api/feedback/send","method":"POST","deprecated":false,"price":{"usd":0.1},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"message":{"type":"string","minLength":1,"maxLength":5000,"description":"Message body to send to the 2s team."},"subject":{"type":"string","maxLength":200,"description":"Optional subject line."},"name":{"type":"string","maxLength":120,"description":"Optional name to attribute the message to."},"from":{"type":"string","format":"email","maxLength":254,"description":"Your email — set as reply-to + shown as the sender."}},"required":["message"],"additionalProperties":false}}]},{"id":"finance.amortize","group":"finance","description":"Compute a loan or mortgage amortization schedule. Pass principal, annualRatePct (e.g. 6.5), and the term as termMonths or termYears; optional extraMonthly adds extra principal each month (shortening the term). Returns the fixed monthly payment, total interest, total paid, the actual payoff month count, and the full month-by-month schedule (each row: payment, principal, interest, remaining balance). Handles the 0% case and trims the final payment exactly. Deterministic — the ground-truth answer for a loan/mortgage/auto-finance question instead of an LLM approximating compound interest. No external calls.","versions":[{"version":null,"path":"/api/finance/amortize","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"principal":{"type":"number"},"annualRatePct":{"type":"number"},"termMonths":{"type":"integer","minimum":1,"maximum":1200},"termYears":{"type":"number","exclusiveMinimum":true,"minimum":0,"maximum":100},"extraMonthly":{"type":"number","minimum":0}},"required":["principal","annualRatePct"],"additionalProperties":false}}]},{"id":"finance.bank-id-resolve","group":"finance","description":"Resolve a bank / financial institution across identifier systems. Give exactly one of bic (SWIFT/BIC), lei, or fdic_cert and get the others back: LEI, every ISO 9362 BIC the institution registers, the FDIC institution record (when matched), jurisdiction, and a canonical name. The BIC<->LEI bridge is authoritative and live from GLEIF (the LEI record carries the institution BIC list, CC0); anchoring on an FDIC certificate returns the FDIC BankFind record and best-effort name-matches it to a GLEIF LEI (flagged via bridge). There is no free FDIC-cert<->BIC table, so the FDIC<->GLEIF link is name-match only -- per-source status + bridge make any partial resolve explicit. Sources: GLEIF (CC0) + FDIC BankFind (US public domain).","versions":[{"version":null,"path":"/api/finance/bank-id-resolve","method":"GET","deprecated":false,"price":{"usd":0.0048},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"bic":{"type":"string","pattern":"^[A-Za-z0-9]{8}([A-Za-z0-9]{3})?$","description":"ISO 9362 SWIFT/BIC, 8 or 11 chars, e.g. BOFAUS3N."},"lei":{"type":"string","pattern":"^[A-Za-z0-9]{20}$","description":"20-char LEI."},"fdic_cert":{"type":"string","pattern":"^\\d{1,7}$","description":"FDIC certificate number, e.g. 3511."}},"additionalProperties":false}}]},{"id":"finance.bin","group":"finance","description":"Identify a payment card from its BIN/IIN (Bank Identification Number — the leading 6-8 digits). Pass the BIN or the first digits of a card number and get the card brand (Visa, Mastercard, …), card type (debit/credit), category, issuing bank, and country (ISO alpha-2 + name). Longest-prefix match against an open community dataset (CC-BY). The BIN identifies the issuer/brand/country only — never the cardholder or account number. For payment routing, fraud checks, and checkout UX.","versions":[{"version":null,"path":"/api/finance/bin","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"bin":{"type":"string","minLength":6,"maxLength":19,"description":"BIN/IIN or leading card digits."}},"required":["bin"],"additionalProperties":false}}]},{"id":"finance.central-bank-rates","group":"finance","description":"Headline central-bank policy/benchmark rates side-by-side in one call, normalized: US (Fed effective funds rate), Euro area (ECB deposit facility rate), Japan (BoJ call-money benchmark), United Kingdom (SONIA, which tracks the BoE Bank Rate). Each result names the bank, country, the rate, the as-of date, the FRED series id, and a label stating exactly which instrument it is (banks don't all publish the same policy instrument). Pass bank to filter (one of: fed, ecb, boj, boe), or omit for all. Source: FRED (St. Louis Fed).","versions":[{"version":null,"path":"/api/finance/central-bank-rates","method":"GET","deprecated":false,"price":{"usd":0.0048},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"bank":{"type":"string","enum":["fed","ecb","boj","boe"],"description":"Bank code to filter. One of: fed, ecb, boj, boe. Omit for all."}},"additionalProperties":false}}]},{"id":"finance.cik-ticker","group":"finance","description":"Resolve SEC CIK <-> ticker in both directions. Pass a ticker to get its CIK; pass a CIK to get every ticker the issuer has (each share class, e.g. GOOG + GOOGL), each with its listing exchange (Nasdaq, NYSE, etc.) and the canonical company name. The CIK is the key to everything in EDGAR -- filings, XBRL facts, Form 4 insider trades, 13F holdings -- so this is the join that turns a ticker an agent has into the identifier EDGAR actually indexes by (and back). Data: SEC company_tickers_exchange.json (US public domain), cached and refreshed daily. Distinct from finance.security-resolve, which also crosses into FIGI/LEI/ISIN; this one is the focused, exchange-aware CIK<->ticker map.","versions":[{"version":null,"path":"/api/finance/cik-ticker","method":"GET","deprecated":false,"price":{"usd":0.0036},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"cik":{"type":"string","minLength":1,"maxLength":13,"description":"SEC CIK, leading zeros optional, e.g. 320193 or 0000320193."},"ticker":{"type":"string","minLength":1,"maxLength":12,"description":"US stock ticker, e.g. AAPL or GOOGL."}},"additionalProperties":false}}]},{"id":"finance.company-facts","group":"finance","description":"Curated XBRL financial metrics for a US public company by stock ticker. Pulls SEC EDGAR's companyfacts JSON (per-CIK XBRL filings) and extracts a top-line set of ~15 financial metrics with their most recent annual + quarterly values. Each metric returns: end date, start date (or null for balance-sheet snapshots), value, fiscal year/period, originating form (10-K/10-Q), and filed date. Available metric keys (pass any comma-separated subset via the metrics param, or omit to get all): revenue, grossProfit, operatingIncome, netIncome, eps, epsDiluted, rdExpense, totalAssets, totalLiabilities, stockholdersEquity, cash, longTermDebt, operatingCashFlow, capex, sharesOutstanding. Backed by SEC.gov; underlying data is public-domain US government records.","versions":[{"version":null,"path":"/api/finance/company-facts","method":"GET","deprecated":false,"price":{"usd":0.0048},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"ticker":{"type":"string","minLength":1,"maxLength":10,"pattern":"^[A-Za-z][A-Za-z0-9.-]{0,9}$","description":"US stock ticker (case-insensitive). Examples: AAPL, GOOGL, BRK.B."},"metrics":{"type":"string","minLength":1,"maxLength":500,"pattern":"^[a-zA-Z]+(,[a-zA-Z]+)*$","description":"Comma-separated subset of metric keys to return. Available: revenue, grossProfit, operatingIncome, netIncome, eps, epsDiluted, rdExpense, totalAssets, totalLiabilities, stockholdersEquity, cash, longTermDebt, operatingCashFlow, capex, sharesOutstanding. Omit to get all ~15."},"annualLimit":{"type":"integer","minimum":1,"maximum":20,"default":4,"description":"Max annual (FY) values per metric, most recent first. Default 4, max 20."},"quarterlyLimit":{"type":"integer","minimum":0,"maximum":20,"default":4,"description":"Max quarterly (Q1-Q4) values per metric, most recent first. Default 4, max 20. Pass 0 to skip quarterly entirely."}},"required":["ticker"],"additionalProperties":false}}]},{"id":"finance.company-profile","group":"finance","description":"Company 360 — a US public company's SEC picture in one call by ticker. Merges three SEC sources: recent filings (10-K/10-Q/8-K and all form types, with links), curated XBRL fundamentals (revenue, net income, EPS, assets, etc. — annual + quarterly series), and recent insider transactions (Form 4 buys/sells by officers & directors). Each section reports found/error independently. Equity research, due diligence, monitoring. Pass ticker (required); optional formType filters the filings section, limit caps each list. Individual sources: /api/finance/sec-filings, /api/finance/company-facts, /api/finance/insider-trades.","versions":[{"version":null,"path":"/api/finance/company-profile","method":"GET","deprecated":false,"price":{"usd":0.00576},"accepts":["x402"],"responseShape":"legacy","params":{"type":"object","properties":{"ticker":{"type":"string","minLength":1,"maxLength":8},"formType":{"type":"string","maxLength":20},"limit":{"type":"integer","minimum":1,"maximum":50,"default":10}},"required":["ticker"],"additionalProperties":false}}]},{"id":"finance.figi","group":"finance","description":"Map a security identifier to its FIGI (Financial Instrument Global Identifier) and metadata via OpenFIGI. Give an idType (ISIN, CUSIP, SEDOL, TICKER, FIGI, COMMON, WKN, CINS — or a raw OpenFIGI ID_* type) and idValue, optionally narrowed by exchCode (e.g. US, LN) or currency. Returns each matching listing with its FIGI, composite FIGI (per-country grouping), share-class FIGI (cross-country grouping), name, ticker, exchange code, security type, market sector, and description. Free, open symbology (Bloomberg OpenFIGI; FIGI is an open OMG/ANNA standard). The canonical \"what is this security and what are its identifiers across exchanges\" lookup — for trading, reference-data, and portfolio agents.","versions":[{"version":null,"path":"/api/finance/figi","method":"GET","deprecated":false,"price":{"usd":0.00144},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"idType":{"type":"string","minLength":2,"maxLength":40},"idValue":{"type":"string","minLength":1,"maxLength":64},"exchCode":{"type":"string","minLength":1,"maxLength":10},"currency":{"type":"string","minLength":3,"maxLength":3},"limit":{"type":"integer","minimum":1,"maximum":100}},"required":["idType","idValue"],"additionalProperties":false}}]},{"id":"finance.figi-search","group":"finance","description":"Free-text search for securities across global exchanges via OpenFIGI. Give a query (company name, ticker, description) and optionally narrow by exchCode (e.g. US), securityType, or marketSector (Equity, Corp, Govt, Mtge, Muni, Pfd, Comdty, Index, Curncy). Returns relevance-ranked matches with FIGI, composite/share-class FIGI, name, ticker, exchange, security type, market sector, and description, plus a `next` cursor for paging (pass it back as start). Free, open symbology (Bloomberg OpenFIGI). Distinct from finance.figi (exact identifier → FIGI): this is discovery by name/keyword.","versions":[{"version":null,"path":"/api/finance/figi-search","method":"GET","deprecated":false,"price":{"usd":0.00144},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"query":{"type":"string","minLength":1,"maxLength":120},"exchCode":{"type":"string","minLength":1,"maxLength":10},"securityType":{"type":"string","minLength":1,"maxLength":60},"marketSector":{"type":"string","minLength":1,"maxLength":20},"start":{"type":"string","minLength":1,"maxLength":200},"limit":{"type":"integer","minimum":1,"maximum":100}},"required":["query"],"additionalProperties":false}}]},{"id":"finance.form-144","group":"finance","description":"SEC Form 144 filings — notices of PROPOSED insider stock sales (intent to sell restricted/control shares), newest first, via EDGAR full-text search. Market-wide by default, or filter by ticker/company/keyword (q). Each: filer + issuer names, filing date, accession, CIKs, and a filing URL. The heads-up before a Form 4 confirms the sale. Complements finance.insider-trades.","versions":[{"version":null,"path":"/api/finance/form-144","method":"GET","deprecated":false,"price":{"usd":0.0018},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"q":{"type":"string","maxLength":120,"description":"Optional ticker/company/keyword filter, e.g. NVDA or \"Shopify\"."},"startDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"endDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"limit":{"type":"integer","minimum":1,"maximum":100}},"additionalProperties":false}}]},{"id":"finance.ifsc-india","group":"finance","description":"Indian bank branch lookup by IFSC code (the 11-character Indian Financial System Code identifying a bank branch). Returns the bank name and code, branch, centre, district, state, city, full address, contact number, MICR code, and which payment rails the branch supports (IMPS, RTGS, NEFT, UPI). Free, open data (Razorpay / RBI directory). Deterministic bank-branch reference for payments, remittance, and KYC validation in India.","versions":[{"version":null,"path":"/api/finance/ifsc-india","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"ifsc":{"type":"string","minLength":11,"maxLength":11,"description":"11-character IFSC code."}},"required":["ifsc"],"additionalProperties":false}}]},{"id":"finance.insider-trades","group":"finance","description":"Recent SEC Form 4 insider transactions for a US public company by ticker. Returns parsed transactions: insider name + relationship (director, officer/title, 10%+ owner), transaction date, SEC code (P=purchase, S=sale, A=grant, D=disposition, M=exercise, F=tax-withholding, G=gift), security title, shares, price/share, total USD value, post-transaction balance, direct vs indirect ownership. Each filing pulled separately and parsed from raw XML — bounded by limit (1-10, default 5). Backed by SEC.gov; underlying Form 4 filings are public records. For insider trades + filings + fundamentals merged by ticker in one call, see /api/finance/company-profile.","versions":[{"version":null,"path":"/api/finance/insider-trades","method":"GET","deprecated":false,"price":{"usd":0.0072},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"ticker":{"type":"string","minLength":1,"maxLength":10,"pattern":"^[A-Za-z][A-Za-z0-9.-]{0,9}$","description":"US stock ticker (case-insensitive). Examples: AAPL, GOOGL, TSLA."},"limit":{"type":"integer","minimum":1,"maximum":10,"default":5,"description":"Max Form 4 filings to fetch + parse (1-10). Each is an extra upstream call so we bound this tight. Default 5."}},"required":["ticker"],"additionalProperties":false}}]},{"id":"finance.mortgage-pulse","group":"finance","description":"Packaged US mortgage & housing-rate snapshot in one call: latest 30-year and 15-year fixed mortgage rates, the 10-year Treasury yield (which mortgage rates track), the effective federal funds rate, the median sales price of houses sold, and housing starts. Each metric carries its value, the date it is as-of, a unit, and a plain-English label. Metrics: mortgage30yr, mortgage15yr, treasury10yr, fedFunds, medianSalePrice, housingStarts. No parameters. Source: FRED (St. Louis Fed) — series MORTGAGE30US, MORTGAGE15US, DGS10, FEDFUNDS, MSPUS, HOUST.","versions":[{"version":null,"path":"/api/finance/mortgage-pulse","method":"GET","deprecated":false,"price":{"usd":0.0048},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{},"additionalProperties":false}}]},{"id":"finance.sec-filings","group":"finance","description":"Recent SEC EDGAR filings for a US publicly-traded company by stock ticker. Resolves ticker → CIK via SEC's company_tickers.json, then fetches the company's submissions index from data.sec.gov. Returns company metadata (name, CIK, SIC industry classification, exchanges, fiscal year-end, state of incorporation) plus filings with form type, filing date, report date, accession number, primary-document URL, and filing-index URL. Filter to one form type (10-K, 10-Q, 8-K, 4, 13F-HR, SC 13G, S-1, etc.) via formType param. Default 20 results, max 100. Backed by SEC.gov; underlying filings are public-domain US government records. For filings + fundamentals + insider trades merged by ticker in one call, see /api/finance/company-profile.","versions":[{"version":null,"path":"/api/finance/sec-filings","method":"GET","deprecated":false,"price":{"usd":0.0036},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"ticker":{"type":"string","minLength":1,"maxLength":10,"pattern":"^[A-Za-z][A-Za-z0-9.-]{0,9}$","description":"Stock ticker symbol (case-insensitive). Examples: AAPL, GOOGL, BRK.B, JNJ."},"formType":{"type":"string","minLength":1,"maxLength":20,"pattern":"^[A-Za-z0-9./-]+$","description":"Optional filter to a single SEC form type, e.g., \"10-K\", \"10-Q\", \"8-K\", \"13F-HR\", \"4\", \"S-1\", \"SC 13G\"."},"limit":{"type":"integer","minimum":1,"maximum":100,"default":20,"description":"Max filings to return (1-100). Default 20."}},"required":["ticker"],"additionalProperties":false}}]},{"id":"finance.security-resolve","group":"finance","description":"Universal security-identifier resolver. Give exactly one of ticker, isin, or lei and get the others back — ticker, SEC CIK, FIGI (incl. composite + share-class), LEI, and ISINs — plus the canonical issuer name. The one call that joins a security across the systems agents actually use: CIK for filings, FIGI for trading, LEI for the legal entity, ISIN for settlement. Composes SEC EDGAR, OpenFIGI, and GLEIF (CC0). Per-source status is returned, so a partial match is explicit rather than silently wrong. Note: CUSIP/SEDOL are accepted by sibling /finance/figi as inputs but never emitted here (licensed); ISINs come from GLEIF CC0 data.","versions":[{"version":null,"path":"/api/finance/security-resolve","method":"GET","deprecated":false,"price":{"usd":0.0048},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"ticker":{"type":"string","minLength":1,"maxLength":12,"description":"US stock ticker, e.g. AAPL."},"isin":{"type":"string","pattern":"^[A-Za-z0-9]{12}$","description":"ISIN, e.g. US0378331005."},"lei":{"type":"string","pattern":"^[A-Za-z0-9]{20}$","description":"20-char LEI."}},"additionalProperties":false}}]},{"id":"finance.thirteen-f","group":"finance","description":"Parsed institutional holdings from a 13F-HR filing. By investment-manager CIK (e.g. 1067983 = Berkshire Hathaway). Returns each holding's nameOfIssuer, cusip, market value (whole USD per the modern Form 13F convention), shares/principal amount + type, putCall flag for options, and voting authority (sole/shared/none). Sorted by value descending. Pass formType for amendments (13F-HR/A) or non-filings (13F-NT). Backed by SEC.gov; underlying 13F filings are public records.","versions":[{"version":null,"path":"/api/finance/thirteen-f","method":"GET","deprecated":false,"price":{"usd":0.0072},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"managerCik":{"type":"string","minLength":1,"maxLength":10,"pattern":"^\\d+$","description":"Investment manager's CIK (numeric). Berkshire Hathaway=1067983, Renaissance=1037389, Bridgewater=1350694, Vanguard=102909, BlackRock=1364742."},"formType":{"type":"string","minLength":3,"maxLength":20,"pattern":"^13F-[A-Z/]{2,10}$","default":"13F-HR","description":"13F filing variant. Default 13F-HR (original report). Use 13F-HR/A for amendments, 13F-NT for notice of non-filings."},"limit":{"type":"integer","minimum":1,"maximum":200,"default":25,"description":"Max holdings to return, sorted by value descending. (1-200). Default 25."}},"required":["managerCik"],"additionalProperties":false}}]},{"id":"finance.xbrl-frames","group":"finance","description":"SEC EDGAR XBRL Frames — one financial concept reported by every public filer for a single period, for cross-company screening and comparison. Give an XBRL tag (e.g. Revenues, NetIncomeLoss, Assets), a unit (default USD), and a period (CY2023 for annual, CY2023Q1 for a quarter, CY2023Q4I for instant balance-sheet items), and get back every filer's value — company name, CIK, location, period start/end, and the reported value — sorted high to low (or asc). Returns the total filer count and the top N. Free, public-domain (SEC). Distinct from finance.company-facts (one company, many metrics): this is one metric across all companies. For ranking, peer comparison, and market-wide analysis.","versions":[{"version":null,"path":"/api/finance/xbrl-frames","method":"GET","deprecated":false,"price":{"usd":0.00216},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"tag":{"type":"string","minLength":2,"maxLength":80},"period":{"type":"string","pattern":"^CY\\d{4}(Q[1-4]I?)?$"},"unit":{"type":"string","minLength":1,"maxLength":20},"taxonomy":{"type":"string","minLength":2,"maxLength":20},"sort":{"type":"string","enum":["desc","asc"]},"limit":{"type":"integer","minimum":1,"maximum":100}},"required":["tag","period"],"additionalProperties":false}}]},{"id":"flight.airport-board","group":"flight","description":"Live airport activity board. For an airport (ICAO like KSFO or IATA like SFO), returns recent/upcoming departures or arrivals — flight ident, registration, aircraft type, origin/destination airports, status, scheduled/estimated/actual gate times, gate and terminal. Choose the board with type. Real-time operational data for an airport; complements flight.status (single flight) and flight.route-schedule.","versions":[{"version":null,"path":"/api/flight/airport-board","method":"GET","deprecated":false,"price":{"usd":0.018},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"airport":{"type":"string","minLength":3,"maxLength":4,"pattern":"^[A-Za-z0-9]+$","description":"Airport code, ICAO (KSFO) or IATA (SFO)."},"type":{"type":"string","enum":["departures","arrivals","scheduled_departures","scheduled_arrivals"],"description":"Default departures."},"limit":{"type":"integer","minimum":1,"maximum":30,"default":15}},"required":["airport"],"additionalProperties":false}}]},{"id":"flight.route-schedule","group":"flight","description":"Scheduled flights between two airports over a date window. Pass origin and destination (ICAO or IATA) plus startDate/endDate; returns scheduled flights with ident, operator, aircraft type, origin/destination, and scheduled departure/arrival times. Answers 'what flights run SFO→JFK this week'. Complements flight.status and flight.airport-board.","versions":[{"version":null,"path":"/api/flight/route-schedule","method":"GET","deprecated":false,"price":{"usd":0.018},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"origin":{"type":"string","minLength":3,"maxLength":4,"pattern":"^[A-Za-z0-9]+$","description":"Origin airport, ICAO or IATA."},"destination":{"type":"string","minLength":3,"maxLength":4,"pattern":"^[A-Za-z0-9]+$","description":"Destination airport, ICAO or IATA."},"startDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Window start (YYYY-MM-DD)."},"endDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Window end (YYYY-MM-DD), <= 7 days after start."},"limit":{"type":"integer","minimum":1,"maximum":30,"default":15}},"required":["origin","destination","startDate","endDate"],"additionalProperties":false}}]},{"id":"flight.status","group":"flight","description":"Live flight status and tracking. Pass ident as an airline flight designator (ICAO \"UAL1\" or IATA \"UA1\") or an aircraft tail number; returns recent and upcoming instances of that flight with origin/destination airports (ICAO/IATA/name/city/timezone), status, cancellation/diversion flags, scheduled vs estimated vs actual gate and runway times (out/off/on/in), departure and arrival delays, en-route progress percent, aircraft type and registration, and route distance. limit controls how many instances return (default 5, newest first by scheduled departure). Real-time operational data — answer \"where is this flight, is it delayed, when does it land\" with live values. For aircraft registry data see /api/aircraft/lookup; for airport metadata see /api/airport/lookup.","versions":[{"version":null,"path":"/api/flight/status","method":"GET","deprecated":false,"price":{"usd":0.018},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"ident":{"type":"string","minLength":2,"maxLength":12,"pattern":"^[A-Za-z0-9-]+$","description":"Flight designator (ICAO UAL1 or IATA UA1) or aircraft tail number."},"identType":{"type":"string","enum":["designator","registration","fa_flight_id"]},"limit":{"type":"integer","minimum":1,"maximum":15,"default":5}},"required":["ident"],"additionalProperties":false}}]},{"id":"food.barcode-lookup","group":"food","description":"Resolve a food product barcode (UPC, EAN-13, EAN-8, etc.) to structured product metadata via Open Food Facts — the CC0 community-maintained database of >3M food products. Returns product name, brand, ingredient list, allergens, nutriments (per-100g + per-serving), Nutri-Score grade (a-e), NOVA processing classification (1-4), Eco-Score, categories, manufacturing origin, packaging, and product image URLs.","versions":[{"version":null,"path":"/api/food/barcode-lookup","method":"GET","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"barcode":{"type":"string","pattern":"^[0-9]{6,14}$"}},"required":["barcode"],"additionalProperties":false}}]},{"id":"food.hygiene-uk","group":"food","description":"UK Food Standards Agency food hygiene ratings (FHRS) for an establishment. Search by business name and/or postcode and get matching establishments with their hygiene rating (0-5 in England/Wales/NI; Pass / Improvement Required in Scotland), rating date, the three component scores (hygiene, structural, confidence in management — lower is better), business type, local authority, full address + postcode, and geocode. Free, Open Government Licence (commercial use permitted). Authoritative inspection data an LLM cannot recall — for food, hospitality, and consumer-safety agents.","versions":[{"version":null,"path":"/api/food/hygiene-uk","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"postcode":{"type":"string","minLength":2,"maxLength":12},"limit":{"type":"integer","minimum":1,"maximum":50}},"additionalProperties":false}}]},{"id":"fx.rates","group":"fx","description":"Daily reference exchange rates from the European Central Bank (via Frankfurter). 30+ major currencies. Pass base = 3-letter ISO 4217 currency (default USD), optional symbols = comma-separated target codes (default = all available), optional date = YYYY-MM-DD for historical rates (history back to 1999, business days only; omit for latest), optional amount to convert (default 1). Returns base, date, amount, and a map of currency code → rate.","versions":[{"version":null,"path":"/api/fx/rates","method":"GET","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"base":{"type":"string","pattern":"^[A-Za-z]{3}$","default":"USD"},"symbols":{"type":"string","minLength":3,"maxLength":200},"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"amount":{"type":"number","exclusiveMinimum":true,"minimum":0,"maximum":1000000000,"default":1}},"additionalProperties":false}}]},{"id":"fx.timeseries","group":"fx","description":"Historical daily exchange-rate series from the European Central Bank (via Frankfurter), with computed summary statistics. Pass base = 3-letter ISO 4217 currency (default USD), start = YYYY-MM-DD, optional end = YYYY-MM-DD (default = latest available), optional symbols = comma-separated target codes (default all), optional amount to scale rates (default 1). Range is capped at 366 days. Returns, per target currency, first/last/min/max/mean rate plus absolute and percentage change over the window, alongside the full daily series. ECB publishes on business days only; weekends and holidays are omitted.","versions":[{"version":null,"path":"/api/fx/timeseries","method":"GET","deprecated":false,"price":{"usd":0.00144},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"base":{"type":"string","pattern":"^[A-Za-z]{3}$","default":"USD","description":"Base currency (3-letter ISO 4217). Default USD."},"symbols":{"type":"string","minLength":3,"maxLength":200,"description":"Comma-separated target currency codes. Default: all available."},"start":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Inclusive start date YYYY-MM-DD."},"end":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Inclusive end date YYYY-MM-DD. Default: latest available."},"amount":{"type":"number","exclusiveMinimum":true,"minimum":0,"maximum":1000000000,"default":1,"description":"Amount of base currency to scale rates by. Default 1."}},"required":["start"],"additionalProperties":false}}]},{"id":"geo.elevation","group":"geo","description":"Ground elevation above sea level for a coordinate, anywhere on Earth. Pass lat + lon. Returns elevation in meters and feet (from the Copernicus/SRTM digital elevation model, ~90m resolution). Source: Open-Meteo elevation API (keyless, CC BY 4.0).","versions":[{"version":null,"path":"/api/geo/elevation","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"lat":{"type":"number","minimum":-90,"maximum":90},"lon":{"type":"number","minimum":-180,"maximum":180}},"required":["lat","lon"],"additionalProperties":false}}]},{"id":"geo.flood-zone","group":"geo","description":"Determine the FEMA flood zone for a coordinate. Pass lat and lon. Returns the FEMA flood zone code (e.g. AE, VE, X), its subtype, whether the point is in a Special Flood Hazard Area (isSFHA — the 1% annual-chance floodplain where flood insurance is mandatory for federally backed mortgages), a plain-language risk level (high / moderate / minimal / undetermined / unmapped) and description, the static base flood elevation and depth when published, and the source FIRM panel id. Data: FEMA National Flood Hazard Layer (NFHL), free and public-domain. When no flood polygon intersects the point, returns mapped=false (usually Zone X / minimal risk or unmapped — not a guarantee of zero risk). Use for property risk screening, insurance/mortgage context, and siting decisions; geocode an address with /api/geocode/address first to get the coordinate.","versions":[{"version":null,"path":"/api/geo/flood-zone","method":"GET","deprecated":false,"price":{"usd":0.00144},"accepts":["x402"],"responseShape":"legacy","params":{"type":"object","properties":{"lat":{"type":"number","minimum":-90,"maximum":90},"lon":{"type":"number","minimum":-180,"maximum":180}},"required":["lat","lon"],"additionalProperties":false}}]},{"id":"geo.ip","group":"geo","description":"Geolocate a single IPv4 or IPv6 address. Returns country (name + ISO code), region (name + code), city, ZIP, lat/lon, timezone, ISP, organization, and AS number + name. For bulk lookups (up to 100 IPs in one call) use /api/ipinfo/bulk instead. Lat/lon precision is city-level, not GPS.","versions":[{"version":null,"path":"/api/geo/ip","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"ip":{"type":"string","pattern":"^(\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}|[0-9a-fA-F:]+)$","minLength":2,"maxLength":45}},"required":["ip"],"additionalProperties":false}}]},{"id":"geo.location-dossier","group":"geo","description":"Static risk & context dossier for a US location. Pass lat+lon or a US address (geocoded for you). Composes five authoritative, keyless federal sources into one answer an agent cannot derive from training: Census place context (county, state, census tract, congressional district), FEMA flood zone + Special-Flood-Hazard-Area status, USGS ASCE 7-16 seismic design parameters (Ss, S1, SDS, SD1, seismic design category, PGA), the nearest NOAA/GHCN climate station, and — when a zip is supplied — US Census ACS 5-year demographics. Each layer is isolated: one source failing does not fail the rest. This is the slow-moving structural-risk picture (siting, insurance, due diligence), distinct from real-time weather/earthquake conditions.","versions":[{"version":null,"path":"/api/geo/location-dossier","method":"GET","deprecated":false,"price":{"usd":0.0072},"accepts":["x402"],"responseShape":"legacy","params":{"type":"object","properties":{"lat":{"type":"number","minimum":-90,"maximum":90},"lon":{"type":"number","minimum":-180,"maximum":180},"address":{"type":"string","minLength":3,"maxLength":200},"zip":{"type":"string","pattern":"^\\d{5}$"},"riskCategory":{"type":"string","enum":["I","II","III","IV"],"description":"ASCE risk category (default II)."},"siteClass":{"type":"string","enum":["A","B","C","D","E"],"description":"ASCE soil site class (default D)."}},"additionalProperties":false}}]},{"id":"geo.nearby","group":"geo","description":"Everything around a coordinate in one call: nearby airports (IATA/ICAO, type, distance), public K-12 schools (name, district, enrollment, distance), NOAA climate stations (for chaining into /api/climate/station-history), and earthquakes from the past week (magnitude, depth, time). Pass lat/lon plus optional radiusKm (default 25, max 200) and per-category limit (default 5). Each category returns an independent found/error block, so one slow source never empties the rest. Site assessment, relocation research, travel planning, and risk screening. Each category is also a standalone endpoint (/api/airport/near, /api/edu/school-lookup, /api/climate/station-near, /api/quakes/recent).","versions":[{"version":null,"path":"/api/geo/nearby","method":"GET","deprecated":false,"price":{"usd":0.0036},"accepts":["x402"],"responseShape":"legacy","params":{"type":"object","properties":{"lat":{"type":"number","minimum":-90,"maximum":90},"lon":{"type":"number","minimum":-180,"maximum":180},"radiusKm":{"type":"number","minimum":1,"maximum":200,"default":25},"limit":{"type":"integer","minimum":1,"maximum":20,"default":5}},"required":["lat","lon"],"additionalProperties":false}}]},{"id":"geo.postal","group":"geo","description":"Resolve a postal/ZIP code to its place name(s), administrative divisions, and coordinates. Pass `postalCode` and a 2-letter `country` (default US). Returns each matching locality: place, admin1 (state/province name + code), admin2 (county/district), and lat/lon. International — covers major markets (US, GB, CA, DE, FR, AU, NL, ES, IT, CH, SE, MX). Use it to normalize and enrich addresses, derive the state/county for a ZIP, or geolocate a postal code in an ETL pipeline.","versions":[{"version":null,"path":"/api/geo/postal","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"postalCode":{"type":"string","minLength":2,"maxLength":16},"country":{"type":"string","pattern":"^[A-Za-z]{2}$"}},"required":["postalCode"],"additionalProperties":false}}]},{"id":"geo.zip-resolve","group":"geo","description":"Resolve a US ZIP code to the census tract(s), county, CBSA (metro), and congressional district it covers — each with HUD-USPS allocation ratios (by residential, business, other, and total address counts). A ZIP is a mail-delivery route set, not a polygon, so it spans multiple geographies; the ratios tell you how much of the ZIP falls in each — the canonical join when you have a ZIP but a dataset is keyed by county/tract/district. Source: HUD-USPS ZIP Crosswalk (public domain).","versions":[{"version":null,"path":"/api/geo/zip-resolve","method":"GET","deprecated":false,"price":{"usd":0.0048},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"zip":{"type":"string","pattern":"^\\d{5}$","description":"5-digit US ZIP code, e.g. 90210."}},"required":["zip"],"additionalProperties":false}}]},{"id":"geocode.address","group":"geocode","description":"Forward geocoding — free-text address or place name → latitude/longitude plus structured address components (houseNumber, road, suburb, city, county, state, postcode, country, countryCode). Query: q (2-500 chars), limit (1-10, default 5), country (optional 2-letter ISO 3166-1 bias). Underlying data is OpenStreetMap (ODbL). Sister: /api/geocode/reverse.","versions":[{"version":null,"path":"/api/geocode/address","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"q":{"type":"string","minLength":2,"maxLength":500},"limit":{"type":"integer","minimum":1,"maximum":10,"default":5},"country":{"type":"string","pattern":"^[a-z]{2}$"}},"required":["q"],"additionalProperties":false}}]},{"id":"geocode.reverse","group":"geocode","description":"Reverse geocoding — latitude/longitude → nearest formatted address plus structured components (houseNumber, road, suburb, city, county, state, postcode, country, countryCode). Query: lat (-90..90), lon (-180..180). Underlying data is OpenStreetMap (ODbL). Sister: /api/geocode/address.","versions":[{"version":null,"path":"/api/geocode/reverse","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"lat":{"type":"number","minimum":-90,"maximum":90},"lon":{"type":"number","minimum":-180,"maximum":180}},"required":["lat","lon"],"additionalProperties":false}}]},{"id":"github.branches","group":"github","description":"Branches of a repository: name, head commit sha, and protection flag. Read-only; no caller key needed.","versions":[{"version":null,"path":"/api/github/branches","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"owner":{"type":"string","minLength":1,"maxLength":100},"repo":{"type":"string","minLength":1,"maxLength":120},"perPage":{"type":"integer","minimum":1,"maximum":100},"page":{"type":"integer","minimum":1}},"required":["owner","repo"],"additionalProperties":false}}]},{"id":"github.commits","group":"github","description":"Commit history for a repository: sha, message, author name + GitHub login, date, and URL. Optionally filter by branch/tag (sha), file path, or author. Paginate. Read-only; no caller key needed.","versions":[{"version":null,"path":"/api/github/commits","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"owner":{"type":"string","minLength":1,"maxLength":100},"repo":{"type":"string","minLength":1,"maxLength":120},"sha":{"type":"string","maxLength":120,"description":"Branch, tag, or commit sha to start from."},"path":{"type":"string","maxLength":400},"author":{"type":"string","maxLength":100},"perPage":{"type":"integer","minimum":1,"maximum":100},"page":{"type":"integer","minimum":1}},"required":["owner","repo"],"additionalProperties":false}}]},{"id":"github.contributors","group":"github","description":"Top contributors to a repository, ranked by commit count: login, contributions, account type, and profile URL. Read-only; no caller key needed.","versions":[{"version":null,"path":"/api/github/contributors","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"owner":{"type":"string","minLength":1,"maxLength":100},"repo":{"type":"string","minLength":1,"maxLength":120},"perPage":{"type":"integer","minimum":1,"maximum":100},"page":{"type":"integer","minimum":1}},"required":["owner","repo"],"additionalProperties":false}}]},{"id":"github.issues","group":"github","description":"List issues for a repository (pull requests excluded): number, title, state, author, labels, comment count, and created/updated times. Filter by state (open/closed/all) and labels; paginate. Read-only; no caller key needed.","versions":[{"version":null,"path":"/api/github/issues","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"owner":{"type":"string","minLength":1,"maxLength":100},"repo":{"type":"string","minLength":1,"maxLength":120},"state":{"type":"string","enum":["open","closed","all"]},"labels":{"type":"string","maxLength":200},"perPage":{"type":"integer","minimum":1,"maximum":100},"page":{"type":"integer","minimum":1}},"required":["owner","repo"],"additionalProperties":false}}]},{"id":"github.languages","group":"github","description":"Programming-language breakdown of a repository: each language with its byte count and percentage of the codebase, sorted by size. Read-only; no caller key needed.","versions":[{"version":null,"path":"/api/github/languages","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"owner":{"type":"string","minLength":1,"maxLength":100},"repo":{"type":"string","minLength":1,"maxLength":120}},"required":["owner","repo"],"additionalProperties":false}}]},{"id":"github.pulls","group":"github","description":"List pull requests for a repository: number, title, state, author, draft flag, merged status + time, head/base branch, and created time. Filter by state (open/closed/all); paginate. Read-only; no caller key needed.","versions":[{"version":null,"path":"/api/github/pulls","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"owner":{"type":"string","minLength":1,"maxLength":100},"repo":{"type":"string","minLength":1,"maxLength":120},"state":{"type":"string","enum":["open","closed","all"]},"perPage":{"type":"integer","minimum":1,"maximum":100},"page":{"type":"integer","minimum":1}},"required":["owner","repo"],"additionalProperties":false}}]},{"id":"github.readme","group":"github","description":"Fetch a repository's README, decoded to UTF-8 text (name, path, size, content, URL). Optionally pin to a branch/tag/sha via ref. Useful for summarizing or indexing a project. Read-only; no caller key needed.","versions":[{"version":null,"path":"/api/github/readme","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"owner":{"type":"string","minLength":1,"maxLength":100},"repo":{"type":"string","minLength":1,"maxLength":120},"ref":{"type":"string","maxLength":120}},"required":["owner","repo"],"additionalProperties":false}}]},{"id":"github.releases","group":"github","description":"List a repository's releases: tag, name, draft/prerelease flags, author, published time, and release notes body. Paginate. Track a project's version history. Read-only; no caller key needed.","versions":[{"version":null,"path":"/api/github/releases","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"owner":{"type":"string","minLength":1,"maxLength":100},"repo":{"type":"string","minLength":1,"maxLength":120},"perPage":{"type":"integer","minimum":1,"maximum":100},"page":{"type":"integer","minimum":1}},"required":["owner","repo"],"additionalProperties":false}}]},{"id":"github.repo","group":"github","description":"GitHub repository metadata: full name, owner, description, stars, forks, watchers, open issues, primary language, topics, SPDX license, default branch, homepage, archived flag, and created/updated/pushed timestamps. Read-only; no GitHub key needed by the caller.","versions":[{"version":null,"path":"/api/github/repo","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"owner":{"type":"string","minLength":1,"maxLength":100},"repo":{"type":"string","minLength":1,"maxLength":120}},"required":["owner","repo"],"additionalProperties":false}}]},{"id":"github.repos","group":"github","description":"List a user or organization's repositories (each with stars, forks, language, topics, license, timestamps). Sort by updated/created/pushed/full_name; filter type owner/member; paginate. Read-only; no caller key needed.","versions":[{"version":null,"path":"/api/github/repos","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"owner":{"type":"string","minLength":1,"maxLength":100},"sort":{"type":"string","enum":["updated","created","pushed","full_name"]},"type":{"type":"string","enum":["owner","member","all"]},"perPage":{"type":"integer","minimum":1,"maximum":100},"page":{"type":"integer","minimum":1}},"required":["owner"],"additionalProperties":false}}]},{"id":"github.search-code","group":"github","description":"Search code across GitHub with the code-search syntax (e.g. 'defineEndpoint repo:AlleyFord/2s' or 'addEventListener language:js'). Returns total match count + file name, path, repository, and URL for each hit. Read-only; no caller key needed.","versions":[{"version":null,"path":"/api/github/search-code","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"q":{"type":"string","minLength":1,"maxLength":400},"perPage":{"type":"integer","minimum":1,"maximum":50},"page":{"type":"integer","minimum":1}},"required":["q"],"additionalProperties":false}}]},{"id":"github.search-repos","group":"github","description":"Search GitHub repositories with the full query syntax (e.g. 'x402 language:typescript stars:>100'). Sort by stars/forks/updated. Returns total match count + repos with stars, language, topics, license, timestamps. Read-only; no caller key needed.","versions":[{"version":null,"path":"/api/github/search-repos","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"q":{"type":"string","minLength":1,"maxLength":400},"sort":{"type":"string","enum":["stars","forks","help-wanted-issues","updated"]},"order":{"type":"string","enum":["asc","desc"]},"perPage":{"type":"integer","minimum":1,"maximum":50},"page":{"type":"integer","minimum":1}},"required":["q"],"additionalProperties":false}}]},{"id":"github.tags","group":"github","description":"Git tags of a repository (name + commit sha), most recent first. Pair with github.releases for published releases. Read-only; no caller key needed.","versions":[{"version":null,"path":"/api/github/tags","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"owner":{"type":"string","minLength":1,"maxLength":100},"repo":{"type":"string","minLength":1,"maxLength":120},"perPage":{"type":"integer","minimum":1,"maximum":100},"page":{"type":"integer","minimum":1}},"required":["owner","repo"],"additionalProperties":false}}]},{"id":"github.user","group":"github","description":"GitHub user or organization profile: login, name, company, blog, location, bio, type (User/Organization), followers, following, public repo + gist counts, and account creation date. Read-only; no caller key needed.","versions":[{"version":null,"path":"/api/github/user","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"username":{"type":"string","minLength":1,"maxLength":100}},"required":["username"],"additionalProperties":false}}]},{"id":"gov.bea-gdp","group":"gov","description":"Quarterly real GDP by US state from the Bureau of Economic Analysis (BEA) Regional accounts — all-industry total, in millions of chained (inflation-adjusted) dollars. Requires state (2-letter); optionally a specific year (defaults to the last 5 years). Returns the state name plus GDP observations (period like 2025Q2, real GDP in millions USD, unit), newest quarter first. Free, public-domain (BEA). Authoritative state economic-output data an LLM cannot recall — for economic research, regional analysis, and market sizing.","versions":[{"version":null,"path":"/api/gov/bea-gdp","method":"GET","deprecated":false,"price":{"usd":0.00108},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"state":{"type":"string","minLength":2,"maxLength":2,"description":"2-letter US state/territory code."},"year":{"type":"integer","minimum":1960,"maximum":2100},"limit":{"type":"integer","minimum":1,"maximum":40}},"required":["state"],"additionalProperties":false}}]},{"id":"gov.bill-summaries","group":"gov","description":"Stream the latest US Congressional bill summaries via Congress.gov. Each row is a CRS-authored summary attached to a specific version of a bill (Introduced, Reported to House, Engrossed in Senate, Public Law, etc.). Filter by congress + bill type. Returns the underlying bill metadata + summary text + version code + action date. Use this for change-detection on bills you care about, or to power agent-side \"what did Congress just pass\" feeds.","versions":[{"version":null,"path":"/api/gov/bill-summaries","method":"GET","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"congress":{"type":"integer","minimum":1,"maximum":200},"type":{"type":"string","enum":["hr","s","hjres","sjres","hconres","sconres","hres","sres"]},"fromDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"toDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"sort":{"type":"string","enum":["updateDate+desc","updateDate+asc"],"default":"updateDate+desc"},"limit":{"type":"integer","minimum":1,"maximum":250,"default":25},"offset":{"type":"integer","minimum":0,"default":0}},"additionalProperties":false}}]},{"id":"gov.carrier-safety","group":"gov","description":"FMCSA motor-carrier (trucking/bus company) safety profile. Pass dot (USDOT number) for the full record: legal/DBA name, state, interstate/intrastate operation, operating-authority status (allowedToOperate), FMCSA safety rating, fleet size (drivers + power units), crash history (total/fatal/injury/tow-away), roadside-inspection history with driver + vehicle out-of-service rates, and the CSA BASIC measures (Unsafe Driving, Hours-of-Service, Driver Fitness, Controlled Substances, Vehicle Maintenance, Hazmat, Crash Indicator) with violation counts. Or pass name to search → matching carriers with their DOT numbers. Free, public-domain US DOT data (keyed). For commercial-auto/freight underwriting, broker/shipper vetting, and vendor due diligence — the authorization + safety record an agent can't get from training.","versions":[{"version":null,"path":"/api/gov/carrier-safety","method":"GET","deprecated":false,"price":{"usd":0.0018},"accepts":["x402"],"responseShape":"legacy","params":{"type":"object","properties":{"dot":{"type":"integer","exclusiveMinimum":true,"minimum":0},"name":{"type":"string","minLength":2,"maxLength":120},"limit":{"type":"integer","minimum":1,"maximum":50}},"additionalProperties":false}}]},{"id":"gov.congress-amendment","group":"gov","description":"Look up or list US Congressional amendments via Congress.gov. Pass congress + type + number to fetch a single amendment with full sponsor + action history. Or filter list by congress + type + date range. Amendment types: hamdt=House Amendment, samdt=Senate Amendment, suamdt=Senate Unprinted Amendment.","versions":[{"version":null,"path":"/api/gov/congress-amendment","method":"GET","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"congress":{"type":"integer","minimum":1,"maximum":200},"type":{"type":"string","enum":["hamdt","samdt","suamdt"]},"number":{"type":"integer","minimum":1},"fromDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"toDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"limit":{"type":"integer","minimum":1,"maximum":250,"default":25},"offset":{"type":"integer","minimum":0,"default":0}},"additionalProperties":false}}]},{"id":"gov.congress-bill","group":"gov","description":"Look up or search US Congressional bills via the Library of Congress Congress.gov API. Pass congress + type + number to fetch a specific bill (title, sponsors, latest action, action/amendment/committee counts, policy area, congress.gov URL). Or omit number to list bills filtered by congress, bill type (hr | s | hjres | sjres | hconres | sconres | hres | sres), date range, with pagination + sort. Bill type semantics: hr=House Bill, s=Senate Bill, hjres/sjres=joint resolution, hconres/sconres=concurrent resolution, hres/sres=simple resolution.","versions":[{"version":null,"path":"/api/gov/congress-bill","method":"GET","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"congress":{"type":"integer","minimum":1,"maximum":200},"type":{"type":"string","enum":["hr","s","hjres","sjres","hconres","sconres","hres","sres"]},"number":{"type":"integer","minimum":1},"fromDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"toDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"sort":{"type":"string","enum":["updateDate+desc","updateDate+asc"],"default":"updateDate+desc"},"limit":{"type":"integer","minimum":1,"maximum":250,"default":20},"offset":{"type":"integer","minimum":0,"default":0}},"additionalProperties":false}}]},{"id":"gov.congress-committee","group":"gov","description":"List or look up US Congressional committees (Library of Congress Congress.gov). Pass systemCode (e.g. \"hspw00\") to fetch a single committee with full detail (members, subcommittees, history, hearings, jurisdiction). Or filter list by congress + chamber (house | senate | joint). Standard system codes follow chamber prefix + abbreviation + suffix convention.","versions":[{"version":null,"path":"/api/gov/congress-committee","method":"GET","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"congress":{"type":"integer","minimum":1,"maximum":200},"chamber":{"type":"string","enum":["house","senate","joint"]},"systemCode":{"type":"string","pattern":"^[a-z]{2,8}\\d{2,4}$"},"limit":{"type":"integer","minimum":1,"maximum":250,"default":25},"offset":{"type":"integer","minimum":0,"default":0}},"additionalProperties":false}}]},{"id":"gov.congress-filings","group":"gov","description":"Track US House members' financial-disclosure filings — including Periodic Transaction Reports (PTRs), the STOCK Act filings where members must disclose their stock trades within 45 days. Defaults to PTRs; pass type=annual|candidate|amendment|all to see other disclosure kinds. Filter by member name (q), 2-letter state, filing year, or filing-date range (dateFrom/dateTo). Each result gives the member, state + district, filing type (with a readable label), the filing/disclosure date, and a direct link to the source document (docUrl). The envelope total is the full count matching your filter — so q=Pelosi or year=2026 answers 'how many PTRs did they file'. Covers 2008→present (~8,200 PTRs), refreshed daily so new filings appear within ~a day. Note: by law trades are disclosed up to 45 days after they happen — this is current-to-the-filing, not real-time. Data: US House Clerk (public domain).","versions":[{"version":null,"path":"/api/gov/congress-filings","method":"GET","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"q":{"type":"string","minLength":1,"maxLength":80},"state":{"type":"string","minLength":2,"maxLength":2},"type":{"type":"string","minLength":1,"maxLength":40},"chamber":{"type":"string","enum":["house","senate"]},"year":{"type":"integer","minimum":2008,"maximum":2100},"dateFrom":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"dateTo":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"limit":{"type":"integer","minimum":1,"maximum":100,"default":25},"offset":{"type":"integer","minimum":0,"maximum":100000,"default":0}},"additionalProperties":false}}]},{"id":"gov.congress-hearing","group":"gov","description":"Look up or list US Congressional hearings via Congress.gov. Pass congress + chamber + jacketNumber to fetch a single hearing with full detail (title, dates, committee, transcripts/recordings if available). Or filter list by congress + chamber, with optional date range. Hearings cover committee testimony from the executive branch, subject experts, and stakeholders — primary-source material for oversight + policy research.","versions":[{"version":null,"path":"/api/gov/congress-hearing","method":"GET","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"congress":{"type":"integer","minimum":1,"maximum":200},"chamber":{"type":"string","enum":["house","senate"]},"jacketNumber":{"type":"integer","minimum":1},"fromDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"toDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"limit":{"type":"integer","minimum":1,"maximum":250,"default":25},"offset":{"type":"integer","minimum":0,"default":0}},"additionalProperties":false}}]},{"id":"gov.congress-member","group":"gov","description":"Look up or search members of the US Congress via Library of Congress Congress.gov API. Pass bioguideId (e.g. M001190) to fetch one member (full bio, terms, party history, leadership roles, sponsored + cosponsored legislation counts, official website, address). Or filter by congress + state + district, with currentMember=true to limit to seated members. Bioguide IDs are stable across history and are the canonical Congress-member identifier.","versions":[{"version":null,"path":"/api/gov/congress-member","method":"GET","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"bioguideId":{"type":"string","pattern":"^[A-Z]\\d{6}$"},"congress":{"type":"integer","minimum":1,"maximum":200},"state":{"type":"string","minLength":2,"maxLength":2,"pattern":"^[A-Za-z]{2}$"},"district":{"type":"integer","minimum":0,"maximum":60},"currentMember":{"type":"boolean"},"limit":{"type":"integer","minimum":1,"maximum":250,"default":25},"offset":{"type":"integer","minimum":0,"default":0}},"additionalProperties":false}}]},{"id":"gov.congress-nomination","group":"gov","description":"Look up or list US presidential nominations (cabinet, judicial, executive) sent to the Senate for confirmation via Congress.gov. Pass congress + number for a single nomination with full action history. Or filter list by congress + date range. Each row carries: citation (PN###-#), description (nominee + position), receivedDate, nominationType (civilian / military / etc.), organization, latest action (committee referral, hearing, confirmation, withdrawal). Essential for confirmation-tracking + judicial-vetting agents.","versions":[{"version":null,"path":"/api/gov/congress-nomination","method":"GET","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"congress":{"type":"integer","minimum":1,"maximum":200},"number":{"type":"integer","minimum":1},"fromDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"toDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"limit":{"type":"integer","minimum":1,"maximum":250,"default":25},"offset":{"type":"integer","minimum":0,"default":0}},"additionalProperties":false}}]},{"id":"gov.congress-record","group":"gov","description":"List daily Congressional Record issues via Congress.gov — the official transcripts and proceedings of the US House and Senate, daily. Filter by year + month + day to narrow to a specific date or month. Each issue carries volume, issue number, publish date, and links to per-section content (Daily Digest, Senate, House, Extensions of Remarks) with PDF + sub-section URLs. Primary source for what was said on the floor.","versions":[{"version":null,"path":"/api/gov/congress-record","method":"GET","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"year":{"type":"integer","minimum":1873,"maximum":2100},"month":{"type":"integer","minimum":1,"maximum":12},"day":{"type":"integer","minimum":1,"maximum":31},"offset":{"type":"integer","minimum":0,"default":0}},"additionalProperties":false}}]},{"id":"gov.congress-trades","group":"gov","description":"Search individual US Congress member stock trades, parsed from STOCK Act Periodic Transaction Reports into clean rows. Filter by member name (q, e.g. \"Pelosi\"), ticker (e.g. NVDA), transaction type (purchase | sale | exchange | partial_sale), party (D | R | I), 2-letter state, chamber, or transaction-date range (dateFrom/dateTo). Each trade returns the member + party + state/district, owner (self/spouse/joint/dependent), ticker + asset description, buy/sell, the disclosed dollar RANGE (amountMin/amountMax — disclosures are ranges, not exact), the transaction date, the disclosure date, days-to-disclose (compliance lag), and a link to the source filing PDF. The envelope total is the full count matching your filter — so ticker=NVDA&type=purchase counts who bought NVIDIA. Amounts are ranges by law; trades are disclosed up to 45 days after they happen (current-to-the-filing). Coverage: US House + Senate e-filed PTRs; scanned/handwritten reports are parsed separately. Data: US House Clerk / US Senate eFD (public domain). Cross-ref /api/gov/congress-filings for the raw filing index.","versions":[{"version":null,"path":"/api/gov/congress-trades","method":"GET","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"q":{"type":"string","minLength":1,"maxLength":80},"ticker":{"type":"string","minLength":1,"maxLength":10},"type":{"type":"string","minLength":1,"maxLength":20},"chamber":{"type":"string","enum":["house","senate"]},"party":{"type":"string","minLength":1,"maxLength":11},"state":{"type":"string","minLength":2,"maxLength":2},"dateFrom":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"dateTo":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"limit":{"type":"integer","minimum":1,"maximum":100,"default":25},"offset":{"type":"integer","minimum":0,"maximum":100000,"default":0}},"additionalProperties":false}}]},{"id":"gov.congress-treaty","group":"gov","description":"Look up or list international treaties transmitted to the US Senate for advice and consent via Congress.gov. Pass congress + number (optionally + suffix for partitioned treaties) to fetch a single treaty with parties, topic, transmittal date, and consideration status. Or list by congress. Returns the congress the treaty was received in, the congress that considered it (if any), partial-treaty suffix, topic, transmitted date, and count of parties.","versions":[{"version":null,"path":"/api/gov/congress-treaty","method":"GET","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"congress":{"type":"integer","minimum":1,"maximum":200},"number":{"type":"integer","minimum":1},"suffix":{"type":"string","pattern":"^[A-Za-z]$"},"limit":{"type":"integer","minimum":1,"maximum":250,"default":25},"offset":{"type":"integer","minimum":0,"default":0}},"additionalProperties":false}}]},{"id":"gov.contract-opportunities","group":"gov","description":"Search ACTIVE US federal contract opportunities (solicitations, combined synopses, sources-sought, RFPs/RFQs) from SAM.gov. Requires a posted-date window: postedFrom and postedTo as MM/DD/YYYY, max 1 year span. Optional filters: title (keyword), naics (NAICS code), state (place/office 2-letter), setAside (set-aside code, e.g. SBA, 8A, WOSB, SDVOSBC), ptype (notice type: o=solicitation, p=presolicitation, r=sources-sought, k=combined, etc.); page with limit (1-100) and offset. Returns each opportunity with notice id, title, solicitation number, type, department path, posted date, response deadline, NAICS, classification, set-aside, active flag, contracting office location, and a sam.gov UI link — plus a total match count. Data: SAM.gov, free and public-domain. Distinct from /api/gov/usaspending-awards (past awards) — this is what is OPEN to bid now. Fresh, time-sensitive data for govcon / capture / bid-intelligence agents.","versions":[{"version":null,"path":"/api/gov/contract-opportunities","method":"GET","deprecated":false,"price":{"usd":0.0018},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"postedFrom":{"type":"string","pattern":"^(0[1-9]|1[0-2])\\/(0[1-9]|[12]\\d|3[01])\\/\\d{4}$"},"postedTo":{"type":"string","pattern":"^(0[1-9]|1[0-2])\\/(0[1-9]|[12]\\d|3[01])\\/\\d{4}$"},"title":{"type":"string","minLength":2,"maxLength":200},"naics":{"type":"string","pattern":"^\\d{2,6}$"},"state":{"type":"string","minLength":2,"maxLength":2},"setAside":{"type":"string","minLength":2,"maxLength":12},"ptype":{"type":"string","minLength":1,"maxLength":2},"limit":{"type":"integer","minimum":1,"maximum":100,"default":10},"offset":{"type":"integer","minimum":0,"maximum":10000,"default":0}},"required":["postedFrom","postedTo"],"additionalProperties":false}}]},{"id":"gov.counterparty","group":"gov","description":"Federal counterparty due-diligence dossier on one name, in a single call. Give name (a company or person) and optional state; get back six independent federal/authoritative screens composed into one verdict: SAM.gov registration (UEI/CAGE, active status), SAM federal exclusions (debarment/suspension), OFAC SDN sanctions, GLEIF Legal Entity Identifier, USAspending federal contract-award history, and FARA foreign-agent registration. Returns headline riskFlags (e.g. federally_debarred, sanctions_high_confidence_match, registered_foreign_agent), a cleared boolean (true only when both debarment AND sanctions sources answered and were clean — FARA status is disclosure context and does NOT affect cleared), a summary of booleans, and a per-source found/error/data block so one slow or empty source never fails the whole call. Composition of /api/gov/entity + /api/gov/exclusions + /api/law/sanctions-check + /api/business/lei + /api/gov/usaspending-awards + /api/gov/foreign-agents — all free, public-domain US data. Name matching is probabilistic: review flagged matches manually and confirm with a hard identifier (UEI, LEI) before acting. For vendor onboarding, KYC/AML triage, grant eligibility, and procurement integrity. The federal counterpart to /api/business/entity-screen (which covers state registries).","versions":[{"version":null,"path":"/api/gov/counterparty","method":"GET","deprecated":false,"price":{"usd":0.0072},"accepts":["x402"],"responseShape":"legacy","params":{"type":"object","properties":{"name":{"type":"string","minLength":2,"maxLength":200},"state":{"type":"string","minLength":2,"maxLength":2},"threshold":{"type":"number","minimum":0.1,"maximum":1,"default":0.4},"limit":{"type":"integer","minimum":1,"maximum":20,"default":5}},"required":["name"],"additionalProperties":false}}]},{"id":"gov.disaster-assistance","group":"gov","description":"FEMA disaster assistance dollars — how much federal aid was approved or obligated for a declared disaster, by place. program=individuals (default) returns Individuals & Households Program (IHP) approved housing assistance, one record per ZIP per disaster, with FEMA-approved repair/replace, rental, and other-needs dollars and valid-registration counts (tenancy=owner default, or renter). program=public returns Public Assistance funded-project summaries, one record per applicant (state/local government, tribe, or eligible nonprofit) per disaster, with the federally obligated grant amount and project count. Filter by disasterNumber (the join key to gov.disaster-declarations), state (2-letter), and zipCode (5-digit, IHP only); results are ordered by approved/obligated dollars, highest first, with the total matching count and a normalized approvedAmountUSD per record. Free, public-domain (OpenFEMA). Distinct from gov.disaster-declarations (which disasters were declared + what was authorized), gov.risk-index (modeled future risk), and gov.nfip-claims (flood-insurance losses): this is the realized federal-spend record — for disaster-recovery, grants, insurance, and emergency-management workflows.","versions":[{"version":null,"path":"/api/gov/disaster-assistance","method":"GET","deprecated":false,"price":{"usd":0.0018},"accepts":["x402"],"responseShape":"legacy","params":{"type":"object","properties":{"program":{"type":"string","enum":["individuals","public"],"description":"'individuals' (IHP, default) or 'public'."},"tenancy":{"type":"string","enum":["owner","renter"],"description":"For program=individuals: 'owner' (default) or 'renter'."},"disasterNumber":{"type":"integer","minimum":1,"maximum":99999,"description":"FEMA disaster number."},"state":{"type":"string","minLength":2,"maxLength":2,"description":"2-letter US state/territory code."},"zipCode":{"type":"string","pattern":"^\\d{5}$","description":"5-digit ZIP (IHP only)."},"limit":{"type":"integer","minimum":1,"maximum":50}},"additionalProperties":false}}]},{"id":"gov.disaster-declarations","group":"gov","description":"FEMA federal disaster & emergency declarations — every federally declared disaster since 1953, including the ones declared this week. Filter by state (2-letter), disasterNumber, declarationType (DR=major disaster, EM=emergency, FM/FS/FW=fire management), incidentType (e.g. Hurricane, Fire, Flood, Severe Storm), county (5-digit FIPS), fiscal year (fyDeclared), and declaration date range (fromDate/toDate, YYYY-MM-DD). With no filter, returns the most recent declarations nationwide. Returns the total matching count plus records (one per designated county/area) with the declaration string, disaster number, title, incident type, declaration + incident begin/end + closeout dates, designated area, county FIPS, FEMA region, and the assistance programs authorized (Individuals & Households, Individual Assistance, Public Assistance, Hazard Mitigation). Free, public-domain (OpenFEMA). Distinct from gov.risk-index (modeled future risk) and gov.nfip-claims (realized flood losses): this is the official federal-response record — for disaster-response logistics, eligibility checks, insurance, and emergency-management workflows.","versions":[{"version":null,"path":"/api/gov/disaster-declarations","method":"GET","deprecated":false,"price":{"usd":0.0018},"accepts":["x402"],"responseShape":"legacy","params":{"type":"object","properties":{"state":{"type":"string","minLength":2,"maxLength":2,"description":"2-letter US state/territory code."},"disasterNumber":{"type":"integer","minimum":1,"maximum":99999,"description":"FEMA disaster number."},"declarationType":{"type":"string","minLength":2,"maxLength":2,"description":"DR, EM, FM, FS, or FW."},"incidentType":{"type":"string","minLength":2,"maxLength":60,"description":"Incident type, e.g. Hurricane, Fire, Flood."},"county":{"type":"string","pattern":"^\\d{5}$"},"fyDeclared":{"type":"integer","minimum":1953,"maximum":2100},"fromDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"toDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"limit":{"type":"integer","minimum":1,"maximum":50}},"additionalProperties":false}}]},{"id":"gov.district","group":"gov","description":"Resolve a US street address to its congressional district (119th Congress), state, and county, via the US Census Bureau geocoder. Returns the matched/normalized address, latitude/longitude, state (name + 2-letter abbreviation), county, and the district number within the state (null for at-large or non-voting delegate districts). The point-in-polygon district lookup is something an agent can't do from a sandbox. Pair it with the gov/congress.* endpoints to find the representatives once you have the state + district. Public domain, keyless.","versions":[{"version":null,"path":"/api/gov/district","method":"GET","deprecated":false,"price":{"usd":0.0018},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"address":{"type":"string","minLength":5,"maxLength":300,"description":"A US street address (one line, e.g. \"1600 Pennsylvania Ave NW, Washington, DC 20500\")."}},"required":["address"],"additionalProperties":false}}]},{"id":"gov.entity","group":"gov","description":"Look up entities registered to do business with the US federal government in SAM.gov. Search by ueiSAM (12-char Unique Entity ID), cageCode, or legalBusinessName (provide at least one); page with limit (1-100). Returns each entity with its UEI, CAGE code, legal and DBA name, SAM registration status and dates (registration, expiration, last update), purpose of registration, an active-exclusion flag, physical address, and business types — plus a total match count. Data: SAM.gov entity management, free and public-domain (registration core data; sensitive FOUO sections are not returned). The canonical federal counterparty identity key — pair with /api/gov/exclusions (debarment) and /api/law/sanctions-check (OFAC) for full counterparty due diligence.","versions":[{"version":null,"path":"/api/gov/entity","method":"GET","deprecated":false,"price":{"usd":0.0018},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"legalBusinessName":{"type":"string","minLength":2,"maxLength":200},"ueiSAM":{"type":"string","minLength":12,"maxLength":12},"cageCode":{"type":"string","minLength":3,"maxLength":10},"limit":{"type":"integer","minimum":1,"maximum":100,"default":10}},"additionalProperties":false}}]},{"id":"gov.epa-facilities","group":"gov","description":"EPA Facility Registry Service (FRS) — every regulated facility known to the EPA across all programs (RCRA hazardous waste, NPDES water discharge, SDWA drinking water, TRI toxic release, CAA Clean Air, Superfund, etc.). Filter by state (required), facility name prefix, and EPA program acronym. Each record includes registry ID, primary name, address, city/state/county/zip, EPA region, program system + ID, source-of-data system. Public-domain US government records.","versions":[{"version":null,"path":"/api/gov/epa-facilities","method":"GET","deprecated":false,"price":{"usd":0.0024},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"state":{"type":"string","minLength":2,"maxLength":2,"pattern":"^[A-Za-z]{2}$","description":"2-letter US state code. Required. Example: \"CA\", \"TX\", \"NY\"."},"name":{"type":"string","minLength":2,"maxLength":80,"description":"Facility-name prefix match (case-insensitive). Example: \"TESLA\", \"BOEING\", \"AMAZON\"."},"program":{"type":"string","minLength":2,"maxLength":10,"pattern":"^[A-Za-z0-9]+$","description":"Program system acronym. Examples: RCRA (hazardous waste), NPDES (water discharge), TRI (toxic release), AIR (Clean Air), SDWA (drinking water)."},"limit":{"type":"integer","minimum":1,"maximum":100,"default":25,"description":"Max facilities to return (1-100). Default 25."},"offset":{"type":"integer","minimum":0,"maximum":10000,"default":0,"description":"Offset for pagination. Default 0."}},"required":["state"],"additionalProperties":false}}]},{"id":"gov.eu-tenders","group":"gov","description":"Search EU public-procurement notices from TED (Tenders Electronic Daily) — the official journal of European public tenders. Filter by country (ISO 3-letter buyer country, e.g. DEU, FRA, ESP), cpv (Common Procurement Vocabulary code/prefix, e.g. 72000000 = IT services), and/or keyword (full-text). Each result: publication number, English title, buyer name + country, publication date, tender deadline, CPV codes, notice + procedure type, total value, and links to the notice page + PDF. Power users can pass a raw `query` in TED's expert query language (e.g. '(buyer-country=FRA) AND (FT~\"hospital\")'). Free, reusable EU open data (attribution). Live procurement intelligence agents can't get from training — for bid discovery, market research, and supplier monitoring across all EU member states.","versions":[{"version":null,"path":"/api/gov/eu-tenders","method":"GET","deprecated":false,"price":{"usd":0.00192},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"country":{"type":"string","minLength":2,"maxLength":3},"cpv":{"type":"string","minLength":2,"maxLength":8,"pattern":"^\\d+$"},"keyword":{"type":"string","minLength":1,"maxLength":100},"query":{"type":"string","minLength":1,"maxLength":500},"limit":{"type":"integer","minimum":1,"maximum":50},"page":{"type":"integer","minimum":1,"maximum":1000}},"additionalProperties":false}}]},{"id":"gov.exclusions","group":"gov","description":"Check whether a person or company is excluded (debarred or suspended) from receiving US federal contracts, grants, or assistance — the SAM.gov Exclusions list. Search by name (person or entity), ueiSAM, cageCode, and/or classificationType (Individual, Firm, Vessel, Special Entity Designation); page with limit (1-100). Returns each exclusion with the excluded name, classification, exclusion type and program, the excluding agency, UEI, activation and termination dates, and address — plus a total match count. Data: SAM.gov exclusions, free and public-domain. Distinct from /api/law/sanctions-check (OFAC sanctions) — this is federal procurement debarment. Use for vendor onboarding, grant eligibility, and counterparty due diligence; pair with /api/gov/entity and /api/law/sanctions-check.","versions":[{"version":null,"path":"/api/gov/exclusions","method":"GET","deprecated":false,"price":{"usd":0.0018},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"name":{"type":"string","minLength":2,"maxLength":200},"ueiSAM":{"type":"string","minLength":12,"maxLength":12},"cageCode":{"type":"string","minLength":3,"maxLength":10},"classificationType":{"type":"string","enum":["Individual","Firm","Vessel","Special Entity Designation"]},"limit":{"type":"integer","minimum":1,"maximum":100,"default":10}},"additionalProperties":false}}]},{"id":"gov.fair-market-rent","group":"gov","description":"HUD Fair Market Rents (FMR) for a US county or state — HUD’s annual gross-rent estimate (rent + utilities) by bedroom size (efficiency through 4-bedroom), the basis for Housing Choice Voucher payment standards and other HUD programs. Look up by 5-digit county FIPS (returns the county/metro rents, broken out per ZIP where HUD publishes Small Area FMRs) or by 2-letter state (returns every metro area + county). Optional year (defaults to latest). Source: HUD USER FMR API (US public domain).","versions":[{"version":null,"path":"/api/gov/fair-market-rent","method":"GET","deprecated":false,"price":{"usd":0.0048},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"fips":{"type":"string","pattern":"^\\d{5}$","description":"5-digit US county FIPS, e.g. 06037 (Los Angeles County)."},"state":{"type":"string","pattern":"^[A-Za-z]{2}$","description":"2-letter US state abbreviation, e.g. CA."},"year":{"type":"string","pattern":"^\\d{4}$","description":"FMR year, e.g. 2026. Omit for the latest."}},"additionalProperties":false}}]},{"id":"gov.fcc-id","group":"gov","description":"Resolve an FCC ID (printed on US wireless/electronic devices) to the grantee — the manufacturer that holds the FCC equipment authorization. Pass fccId in any form (BCG-E3217A, BCGE3217A). Returns the grantee code, the product code, and the grantee company: name, city, state, country, and the date its grantee code was registered. Uses the FCC EAS Equipment Authorization Grantee Registrations open dataset, free and keyless — the \"who made this device\" lookup an agent reading a label off hardware cannot do natively. (Per-product RF detail — frequencies, equipment class — is not in the open dataset and is out of scope.)","versions":[{"version":null,"path":"/api/gov/fcc-id","method":"GET","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"legacy","params":{"type":"object","properties":{"fccId":{"type":"string","minLength":3,"maxLength":40,"description":"An FCC ID, e.g. BCG-E3217A or BCGE3217A."}},"required":["fccId"],"additionalProperties":false}}]},{"id":"gov.fda-animalvet-events","group":"gov","description":"FDA animal and veterinary adverse event reports, newest first. All filters optional. Each record includes AER ID, dates, animal species/gender/breed/age/weight, reactions (VeDDRA-coded), drugs (brand + active ingredients + administration), primary reporter (Veterinarian/Owner/Other). Use cases: veterinary practice safety research, pet food adverse events, livestock drug surveillance. Backed by OpenFDA's /animalandveterinary/event endpoint; public-domain US government records.","versions":[{"version":null,"path":"/api/gov/fda-animalvet-events","method":"GET","deprecated":false,"price":{"usd":0.0024},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"drug":{"type":"string","minLength":2,"maxLength":100,"description":"Drug name substring across brand + active ingredients. Examples: \"Heartgard\", \"Bravecto\", \"Apoquel\"."},"species":{"type":"string","minLength":2,"maxLength":60,"description":"Animal species. Examples: \"Dog\", \"Cat\", \"Horse\", \"Cattle\", \"Chicken\"."},"reaction":{"type":"string","minLength":2,"maxLength":100,"description":"Reaction (VeDDRA preferred term) substring. Examples: \"Vomiting\", \"Lethargy\", \"Death\"."},"limit":{"type":"integer","minimum":1,"maximum":100,"default":20,"description":"Max events (1-100). Default 20."}},"additionalProperties":false}}]},{"id":"gov.fda-device-events","group":"gov","description":"FDA medical device adverse event reports (MAUDE), newest first by date received. All filters optional. Each record includes report number, event type, dates received + of event, manufacturer, brand/generic device name, model + catalog numbers, listed device problems, patient outcomes, and primary narrative text. Backed by OpenFDA's /device/event endpoint; public-domain US government records.","versions":[{"version":null,"path":"/api/gov/fda-device-events","method":"GET","deprecated":false,"price":{"usd":0.0024},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"device":{"type":"string","minLength":2,"maxLength":100,"description":"Device-name substring across brand_name + generic_name. Examples: \"pacemaker\", \"insulin pump\", \"DePuy hip\"."},"manufacturer":{"type":"string","minLength":2,"maxLength":100,"description":"Manufacturer-name substring. Examples: \"medtronic\", \"boston scientific\", \"abbott\"."},"problem":{"type":"string","minLength":2,"maxLength":100,"description":"FDA device product code substring (advanced filter; most users want device or manufacturer)."},"limit":{"type":"integer","minimum":1,"maximum":100,"default":20,"description":"Max events (1-100). Default 20."}},"additionalProperties":false}}]},{"id":"gov.fda-drug-events","group":"gov","description":"Adverse drug event reports from FDA's Adverse Event Reporting System (FAERS) — 9M+ records since 1968 covering serious adverse events, hospitalizations, deaths, and disabilities. Search by drug name (brand/generic/substance, all OR-matched) and optionally filter by MedDRA reaction term. Returns report ID, received date, seriousness flags, patient demographics, MedDRA-coded reactions, implicated drugs (up to 5 per report), and reporting country. Backed by OpenFDA; data is public-domain US government records.","versions":[{"version":null,"path":"/api/gov/fda-drug-events","method":"GET","deprecated":false,"price":{"usd":0.0024},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"drug":{"type":"string","minLength":2,"maxLength":100,"description":"Drug name (brand, generic, or substance). Examples: \"tylenol\", \"metformin\", \"lisinopril\". Case-insensitive."},"reaction":{"type":"string","minLength":2,"maxLength":100,"description":"Optional MedDRA preferred-term reaction filter. Examples: \"headache\", \"nausea\", \"anaphylaxis\"."},"limit":{"type":"integer","minimum":1,"maximum":100,"default":10,"description":"Max reports to return (1-100). Default 10."}},"required":["drug"],"additionalProperties":false}}]},{"id":"gov.fda-food-recalls","group":"gov","description":"FDA food recall enforcement reports, newest first by report date. All filters optional. Each record includes recall number, status (Ongoing/Completed/Terminated/Pending), classification (Class I/II/III), product description, reason for recall, initial-notification mechanism, voluntary-vs-mandated, recalling firm + city/state/country, distribution pattern, and recall + report dates. Backed by OpenFDA's /food/enforcement endpoint; public-domain US government records.","versions":[{"version":null,"path":"/api/gov/fda-food-recalls","method":"GET","deprecated":false,"price":{"usd":0.0024},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"product":{"type":"string","minLength":2,"maxLength":100,"description":"Product-name substring match on the recall description. Examples: \"spinach\", \"peanut butter\", \"infant formula\"."},"classification":{"type":"string","enum":["I","II","III"],"description":"Optional class filter. I = life-threatening (e.g., Listeria, undeclared major allergen), II = temporary/reversible health risk, III = unlikely to cause harm (e.g., minor labeling)."},"status":{"type":"string","enum":["Ongoing","Completed","Terminated","Pending"],"description":"Optional status filter."},"state":{"type":"string","minLength":2,"maxLength":2,"pattern":"^[A-Za-z]{2}$","description":"Optional 2-letter US state of the recalling firm (e.g., \"CA\", \"TX\")."},"limit":{"type":"integer","minimum":1,"maximum":100,"default":20,"description":"Max recalls (1-100). Default 20."}},"additionalProperties":false}}]},{"id":"gov.fda-recalls","group":"gov","description":"FDA drug recall enforcement reports, newest first. All filters optional. Each record includes recall number, status (Ongoing/Completed/Terminated/Pending), classification (Class I/II/III), product description, reason for recall, initial-notification mechanism, voluntary-vs-mandated flag, recalling firm name + city/state/country, distribution pattern, and recall + report dates. Backed by OpenFDA's /drug/enforcement endpoint; data is public-domain US government records.","versions":[{"version":null,"path":"/api/gov/fda-recalls","method":"GET","deprecated":false,"price":{"usd":0.0024},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"drug":{"type":"string","minLength":2,"maxLength":100,"description":"Optional drug-name substring match on the recall product description. Examples: \"sanitizer\", \"metformin\", \"valsartan\"."},"classification":{"type":"string","enum":["I","II","III"],"description":"Optional class filter. I = life-threatening, II = temporary/reversible health risk, III = unlikely to cause harm."},"status":{"type":"string","enum":["Ongoing","Completed","Terminated","Pending"],"description":"Optional status filter."},"limit":{"type":"integer","minimum":1,"maximum":100,"default":20,"description":"Max recalls to return (1-100). Default 20."}},"additionalProperties":false}}]},{"id":"gov.fec","group":"gov","description":"US federal campaign finance from the FEC (openFEC). Two modes: pass name to search candidates (returns FEC candidate id, party, office, state, district, incumbent/challenger, status, and election cycles); or pass candidateId (e.g. P80000722) to get that candidate's aggregate financial totals — total receipts, disbursements, cash on hand, and individual / PAC / party / self contributions in USD for the newest cycle, alongside identity. Free, public-domain (FEC). Search by name first, then pass a returned candidateId back in for the money. For donor/spend diligence, political research, and disclosure lookups.","versions":[{"version":null,"path":"/api/gov/fec","method":"GET","deprecated":false,"price":{"usd":0.00144},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100},"candidateId":{"type":"string","pattern":"^[A-Za-z0-9]{1,20}$"},"limit":{"type":"integer","minimum":1,"maximum":50}},"additionalProperties":false}}]},{"id":"gov.fec-candidate","group":"gov","description":"Search US federal political candidates via the OpenFEC API. Filter by free-text q (name match), candidate ID (e.g. H0VA01076), state, district, party (DEM, REP, IND, LIB, GRE, etc.), office (P=President | S=Senate | H=House), election cycle (even years), election year, and hasRaised (only candidates with reported receipts). Returns FEC candidate ID, name, party, office, state/district, incumbency status, active-through cycle, first/last file dates, cycles, principal committee linkage. Use the candidate ID returned here to fetch their committees with /api/gov/fec-committee.","versions":[{"version":null,"path":"/api/gov/fec-candidate","method":"GET","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"q":{"type":"string","minLength":1,"maxLength":120},"candidateId":{"type":"string","pattern":"^[A-Z]\\d[A-Z0-9]{7}$"},"state":{"type":"string","minLength":2,"maxLength":2,"pattern":"^[A-Za-z]{2}$"},"district":{"type":"string","pattern":"^\\d{2}$"},"party":{"type":"string","pattern":"^[A-Za-z]{3,4}$"},"office":{"type":"string","enum":["P","S","H"]},"cycle":{"type":"integer","minimum":1980,"maximum":2100},"electionYear":{"type":"integer","minimum":1980,"maximum":2100},"hasRaised":{"type":"boolean"},"perPage":{"type":"integer","minimum":1,"maximum":100,"default":25},"page":{"type":"integer","minimum":1,"default":1}},"additionalProperties":false}}]},{"id":"gov.fec-committee","group":"gov","description":"Search US federal political committees (PACs, super PACs, party committees, candidate principal committees, leadership PACs, etc.) via the OpenFEC API. Filter by q (name match), committee ID, candidate ID (returns committees linked to that candidate), committee type (P=Presidential | S=Senate | H=House | X=Independent expenditure-only | Y=Party | Z=National Party non-federal), designation (A=Authorized | J=Joint fundraising | P=Principal | U=Unauthorized | B=Lobbyist/Registrant PAC), state, party, cycle, organization type (C=Corporation | L=Labor | M=Membership | T=Trade | V=Cooperative | W=Corp without stock). Returns FEC committee ID, name, type/designation/organization labels, state, party, treasurer, linked candidate IDs, cycles, affiliated-committee names, first/last file dates.","versions":[{"version":null,"path":"/api/gov/fec-committee","method":"GET","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"q":{"type":"string","minLength":1,"maxLength":120},"committeeId":{"type":"string","pattern":"^C\\d{8}$"},"candidateId":{"type":"string","pattern":"^[A-Z]\\d[A-Z0-9]{7}$"},"committeeType":{"type":"string","enum":["P","S","H","X","Y","Z","N","I","O","Q","U","V","W","D","E"]},"designation":{"type":"string","enum":["A","J","P","U","B","D"]},"state":{"type":"string","minLength":2,"maxLength":2,"pattern":"^[A-Za-z]{2}$"},"party":{"type":"string","pattern":"^[A-Za-z]{3,4}$"},"cycle":{"type":"integer","minimum":1980,"maximum":2100},"organizationType":{"type":"string","enum":["C","L","M","T","V","W"]},"perPage":{"type":"integer","minimum":1,"maximum":100,"default":25},"page":{"type":"integer","minimum":1,"default":1}},"additionalProperties":false}}]},{"id":"gov.fec-contributions","group":"gov","description":"Search FEC Schedule A — every itemized contribution to a federal political committee (>264M rows across all cycles). Filter by recipient committeeId or candidateId, contributor name / city / state / zip / employer / occupation, amount range, cycle (twoYearTransactionPeriod e.g. 2024), date range, isIndividual (true = individuals only; false = committee-to-committee). Sort by contribution date or amount, asc/desc. Requires at least one scope (committeeId, candidateId, twoYearTransactionPeriod cycle, or a date range) — an unscoped query scans every cycle and times out. The investigative-journalism + political-research goldmine: who gives, how much, when, working where, doing what. Each row carries the contribution receipt date, amount, contributor aggregate YTD, receipt type, memo, entity type, and link to the underlying PDF filing.","versions":[{"version":null,"path":"/api/gov/fec-contributions","method":"GET","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"committeeId":{"type":"string","pattern":"^C\\d{8}$"},"candidateId":{"type":"string","pattern":"^[A-Z]\\d[A-Z0-9]{7}$"},"contributorName":{"type":"string","minLength":1,"maxLength":120},"contributorCity":{"type":"string","minLength":1,"maxLength":80},"contributorState":{"type":"string","minLength":2,"maxLength":2,"pattern":"^[A-Za-z]{2}$"},"contributorZip":{"type":"string","pattern":"^\\d{5}(\\d{4})?$"},"contributorEmployer":{"type":"string","minLength":1,"maxLength":120},"contributorOccupation":{"type":"string","minLength":1,"maxLength":120},"minAmount":{"type":"number","minimum":0},"maxAmount":{"type":"number","minimum":0},"twoYearTransactionPeriod":{"type":"integer","minimum":1980,"maximum":2100},"minDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"maxDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"isIndividual":{"type":"boolean"},"perPage":{"type":"integer","minimum":1,"maximum":100,"default":25},"page":{"type":"integer","minimum":1,"default":1},"sortField":{"type":"string","enum":["contribution_receipt_date","contribution_receipt_amount"]},"sortDirection":{"type":"string","enum":["asc","desc"]}},"additionalProperties":false}}]},{"id":"gov.fec-expenditures","group":"gov","description":"Search FEC Schedule B — every itemized disbursement (spend, vendor payment, operating expenditure, contribution out, transfer) made by a federal political committee (>157M rows). Filter by committeeId, recipient name / city / state, disbursement purpose category (Administrative / Fundraising / Media / Polling / Salary / Travel / Operating / Contribution / Loan / etc.), description text, amount range, cycle, date range. Sort by date or amount. Every row carries: who got paid, when, how much, for what, with link to underlying PDF. The natural pair with /api/gov/fec-contributions for following the money on both sides of any federal committee.","versions":[{"version":null,"path":"/api/gov/fec-expenditures","method":"GET","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"committeeId":{"type":"string","pattern":"^C\\d{8}$"},"recipientName":{"type":"string","minLength":1,"maxLength":120},"recipientCity":{"type":"string","minLength":1,"maxLength":80},"recipientState":{"type":"string","minLength":2,"maxLength":2,"pattern":"^[A-Za-z]{2}$"},"disbursementPurposeCategory":{"type":"string","minLength":1,"maxLength":80},"disbursementDescription":{"type":"string","minLength":1,"maxLength":160},"minAmount":{"type":"number","minimum":0},"maxAmount":{"type":"number","minimum":0},"twoYearTransactionPeriod":{"type":"integer","minimum":1980,"maximum":2100},"minDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"maxDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"perPage":{"type":"integer","minimum":1,"maximum":100,"default":25},"page":{"type":"integer","minimum":1,"default":1},"sortField":{"type":"string","enum":["disbursement_date","disbursement_amount"]},"sortDirection":{"type":"string","enum":["asc","desc"]}},"additionalProperties":false}}]},{"id":"gov.fec-totals","group":"gov","description":"Aggregate financial summaries (receipts, disbursements, cash-on-hand, debt, transfers, refunds, contributions by source, etc.) per cycle for federal candidates (scope=candidates) or committees (scope=committees). Filter by candidateId / committeeId, cycle, office (P/S/H), party, state, district. For candidates, electionFull=true rolls all cycles of a single election into one row (e.g. a presidential cycle spans 4 years). Use this for top-line \"how much did they raise/spend\" answers without paging through millions of itemized transactions.","versions":[{"version":null,"path":"/api/gov/fec-totals","method":"GET","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"scope":{"type":"string","enum":["candidates","committees"]},"candidateId":{"type":"string","pattern":"^[A-Z]\\d[A-Z0-9]{7}$"},"committeeId":{"type":"string","pattern":"^C\\d{8}$"},"cycle":{"type":"integer","minimum":1980,"maximum":2100},"office":{"type":"string","enum":["P","S","H"]},"party":{"type":"string","pattern":"^[A-Za-z]{3,4}$"},"state":{"type":"string","minLength":2,"maxLength":2,"pattern":"^[A-Za-z]{2}$"},"district":{"type":"string","pattern":"^\\d{2}$"},"electionFull":{"type":"boolean"},"perPage":{"type":"integer","minimum":1,"maximum":100,"default":25},"page":{"type":"integer","minimum":1,"default":1}},"required":["scope"],"additionalProperties":false}}]},{"id":"gov.federal-register-recent","group":"gov","description":"Newest Federal Register documents by publication date — chronological feed for compliance change-detection. Filter by document type (RULE / PRORULE / NOTICE / PRESDOCU), agency name, and publication date range. Each record includes document number, type, title, abstract, publication date, effective date, agencies, citations (CFR/USC), HTML + PDF URLs. Defaults to last 7 days of final rules. Free public-domain data from federalregister.gov.","versions":[{"version":null,"path":"/api/gov/federal-register-recent","method":"GET","deprecated":false,"price":{"usd":0.0024},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"type":{"type":"string","enum":["RULE","PRORULE","NOTICE","PRESDOCU"],"default":"RULE","description":"Document type: RULE = final rules, PRORULE = proposed rules, NOTICE = notices, PRESDOCU = presidential docs."},"agency":{"type":"string","minLength":2,"maxLength":80,"description":"Agency slug or name (e.g., \"environmental-protection-agency\", \"federal-trade-commission\")."},"since":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Earliest publication date (YYYY-MM-DD). Default = 7 days ago."},"until":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Latest publication date (YYYY-MM-DD). Default = today."},"limit":{"type":"integer","minimum":1,"maximum":100,"default":25,"description":"Max results (1-100). Default 25."},"page":{"type":"integer","minimum":1,"maximum":1000,"default":1,"description":"Page number (1-based). Default 1."}},"additionalProperties":false}}]},{"id":"gov.foreign-agents","group":"gov","description":"Search currently-active FARA (Foreign Agents Registration Act) registrants by name. Pass a company or person name; returns whether the entity is a registered foreign agent (isRegisteredForeignAgent), a single KYB-safe bestMatch (null below medium confidence — no false positives), and scored candidate matches with registration number, registration date, city/state, and a 0-1 match score + confidence (high/medium/low). FARA registration is a US disclosure status (an agent acting for a foreign principal), not wrongdoing. Authoritative DOJ FARA eFile data, free and keyless — the foreign-agent check a compliance or procurement agent cannot derive from training.","versions":[{"version":null,"path":"/api/gov/foreign-agents","method":"GET","deprecated":false,"price":{"usd":0.0018},"accepts":["x402"],"responseShape":"legacy","params":{"type":"object","properties":{"name":{"type":"string","minLength":2,"maxLength":200,"description":"Company or person name to screen against FARA registrants."},"limit":{"type":"integer","minimum":1,"maximum":20,"description":"Max candidate matches (default 5)."}},"required":["name"],"additionalProperties":false}}]},{"id":"gov.hazard-mitigation","group":"gov","description":"FEMA Hazard Mitigation Assistance (HMA) funded projects — the pre- and post-disaster mitigation grants FEMA has actually obligated (HMGP, BRIC/PDM, FMA). Filter by state (2-letter), disasterNumber, programFy (program fiscal year), and/or programArea; at least one filter is required. Returns the total matching project count plus projects (identifier, program area, project type, status, recipient/subrecipient, county, disaster number, project amount and federal share obligated in USD, cost-share %, benefit-cost ratio, number of properties, approval/close dates), largest federal share first. Free, public-domain (OpenFEMA). Distinct from gov.public-assistance (post-disaster recovery grants) and gov.nfip-claims (flood losses paid) — this is mitigation funding: who got money to reduce future risk, where, and at what benefit-cost ratio.","versions":[{"version":null,"path":"/api/gov/hazard-mitigation","method":"GET","deprecated":false,"price":{"usd":0.0018},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"state":{"type":"string","minLength":2,"maxLength":2,"description":"2-letter US state/territory code."},"disasterNumber":{"type":"integer","minimum":1,"maximum":100000},"programFy":{"type":"integer","minimum":1989,"maximum":2100},"programArea":{"type":"string","minLength":1,"maxLength":40},"limit":{"type":"integer","minimum":1,"maximum":50}},"additionalProperties":false}}]},{"id":"gov.house-votes","group":"gov","description":"US House of Representatives roll-call votes, newest first by action date. Each record includes year + roll number, congress/session, vote question + type + result, action date/time, bill reference (legis_num), description, grand totals (yea/nay/present/not-voting), AND per-party breakdown (Republican/Democratic/Independent yea/nay/present/not-voting counts). Filters (all optional, AND-combined): year, congress, result substring, bill substring (legis_num ILIKE), since/until (action_date), limit + offset. Locally aggregated from clerk.house.gov XML feeds (refreshed daily by cron). Public-domain US government records.","versions":[{"version":null,"path":"/api/gov/house-votes","method":"GET","deprecated":false,"price":{"usd":0.0024},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"year":{"type":"integer","minimum":1990,"maximum":2099,"description":"Filter by year. Example: 2025."},"congress":{"type":"integer","minimum":100,"maximum":200,"description":"Filter by Congress number. The 119th Congress = 2025-2026."},"result":{"type":"string","minLength":2,"maxLength":40,"description":"Filter by vote result (case-insensitive substring). Examples: \"Passed\", \"Failed\", \"Agreed\"."},"bill":{"type":"string","minLength":2,"maxLength":40,"description":"Filter by bill reference (case-insensitive substring on legis_num). Examples: \"H R 498\", \"H R 49\", \"S 1\"."},"since":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Earliest action date (YYYY-MM-DD)."},"until":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Latest action date (YYYY-MM-DD)."},"limit":{"type":"integer","minimum":1,"maximum":100,"default":25,"description":"Max records (1-100). Default 25."},"offset":{"type":"integer","minimum":0,"maximum":100000,"default":0,"description":"Offset for pagination. Default 0."}},"additionalProperties":false}}]},{"id":"gov.income-limits","group":"gov","description":"HUD Income Limits (IL) for a US county or state — the program-eligibility thresholds for HUD assistance, derived from Area Median Family Income: extremely-low (30% AMI), very-low (50% AMI), and low (80% AMI) income limits for household sizes 1–8, plus the area median income. Look up by 5-digit county FIPS or by 2-letter state. Optional year (defaults to latest). The raw HUD il30/il50/il80 codes are reshaped into clear nested limits by household size. Source: HUD USER Income Limits API (US public domain).","versions":[{"version":null,"path":"/api/gov/income-limits","method":"GET","deprecated":false,"price":{"usd":0.0048},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"fips":{"type":"string","pattern":"^\\d{5}$","description":"5-digit US county FIPS, e.g. 06037 (Los Angeles County)."},"state":{"type":"string","pattern":"^[A-Za-z]{2}$","description":"2-letter US state abbreviation, e.g. CA."},"year":{"type":"string","pattern":"^\\d{4}$","description":"Income-limit year, e.g. 2026. Omit for the latest."}},"additionalProperties":false}}]},{"id":"gov.inmate-locator","group":"gov","description":"Search the Federal Bureau of Prisons inmate locator — federal inmates from 1982 to present, both currently incarcerated and released. Search by lastName (+ optional firstName/middleName, age, sex, race) or by exact BOP register number (inmateNumber, e.g. \"12345-678\"). Each match: full name, register number, sex, race, age, current facility (code/name/type), projected release date, actual release date (when released). KYC, due-diligence, journalism, and background-research staple. Federal public data.","versions":[{"version":null,"path":"/api/gov/inmate-locator","method":"GET","deprecated":false,"price":{"usd":0.0024},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"lastName":{"type":"string","minLength":2,"maxLength":80},"firstName":{"type":"string","minLength":1,"maxLength":80},"middleName":{"type":"string","minLength":1,"maxLength":80},"inmateNumber":{"type":"string","pattern":"^\\d{5}-\\d{3}$"},"age":{"type":"integer","minimum":18,"maximum":120},"sex":{"type":"string","enum":["Male","Female"]},"race":{"type":"string","maxLength":40}},"additionalProperties":false}}]},{"id":"gov.lobbying-filings","group":"gov","description":"Search US federal lobbying disclosures (Senate LDA filings) — who lobbies for whom, on what issues, for how much. Filter by registrant (lobbying firm name), client (organization being represented), lobbyist (individual name), year, period (first_quarter|second_quarter|third_quarter|fourth_quarter|mid_year|year_end), and type (e.g. RR=registration, Q1-Q4=quarterly reports). Each filing: type, year/period, reported income or expenses (USD), registrant + client (id/name/description/state), lobbying issues (code + description), lobbyist count, official document URL, posted timestamp. Money-in-politics, journalism, and policy-intelligence staple. Public federal data.","versions":[{"version":null,"path":"/api/gov/lobbying-filings","method":"GET","deprecated":false,"price":{"usd":0.00288},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"registrant":{"type":"string","minLength":2,"maxLength":120},"client":{"type":"string","minLength":2,"maxLength":120},"lobbyist":{"type":"string","minLength":2,"maxLength":120},"year":{"type":"integer","minimum":1999,"maximum":2030},"period":{"type":"string","enum":["first_quarter","second_quarter","third_quarter","fourth_quarter","mid_year","year_end"]},"type":{"type":"string","maxLength":8},"page":{"type":"integer","minimum":1,"default":1},"pageSize":{"type":"integer","minimum":1,"maximum":25,"default":10}},"additionalProperties":false}}]},{"id":"gov.msha-accidents","group":"gov","description":"Search MSHA mine safety accident records via US Department of Labor Open Data Portal (~738k accidents at US mines). Each row carries mine id, contractor id, mine subunit (underground/surface/mill/etc.), FIPS state code, accident date, classification, narrative, injury degree + nature + body-part, occupation code, experience, schooling, sex, age. Filter by mine id, contractor id, FIPS state code, subunit code, accident date range, classification code. Source of truth for fatalities + injuries at every US coal + metal/nonmetal mine since 2000.","versions":[{"version":null,"path":"/api/gov/msha-accidents","method":"GET","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"mineId":{"type":"string","pattern":"^\\d{4,8}$"},"contractorId":{"type":"string","pattern":"^[A-Z0-9]{3,10}$"},"state":{"type":"string","pattern":"^\\d{2}$"},"subunit":{"type":"string","pattern":"^\\d{2}$"},"accidentDateMin":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"accidentDateMax":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"classification":{"type":"string","pattern":"^\\d{2,3}$"},"fields":{"type":"string","pattern":"^[a-z][a-z0-9_]*(,[a-z][a-z0-9_]*)*$","maxLength":400},"sort":{"type":"string","pattern":"^-?[a-z][a-z0-9_]*$","maxLength":120},"limit":{"type":"integer","minimum":1,"maximum":100,"default":25},"offset":{"type":"integer","minimum":0,"default":0}},"additionalProperties":false}}]},{"id":"gov.nfip-claims","group":"gov","description":"FEMA National Flood Insurance Program (NFIP) claims history for a US location — the flood losses actually paid out in an area. Requires state (2-letter); optionally narrow by county (5-digit FIPS), ZIP, and yearOfLoss range (yearFrom/yearTo). Returns the total matching claim count plus recent redacted claim records (date of loss, county / census tract / ZIP, flood zone rated at time of loss, cause of damage, water depth, net building + contents payment in USD, building coverage, approximate lat/lon), largest net payout first (the notable losses). FEMA redacts the city field, so filter by county FIPS or ZIP. Free, public-domain (OpenFEMA). Distinct from geo.flood-zone (current SFHA designation) and gov.risk-index (modeled future risk): this is the realized loss track record — for insurance underwriting and property due diligence.","versions":[{"version":null,"path":"/api/gov/nfip-claims","method":"GET","deprecated":false,"price":{"usd":0.0018},"accepts":["x402"],"responseShape":"legacy","params":{"type":"object","properties":{"state":{"type":"string","minLength":2,"maxLength":2,"description":"2-letter US state/territory code."},"county":{"type":"string","pattern":"^\\d{5}$"},"zip":{"type":"string","pattern":"^\\d{5}$"},"yearFrom":{"type":"integer","minimum":1970,"maximum":2100},"yearTo":{"type":"integer","minimum":1970,"maximum":2100},"limit":{"type":"integer","minimum":1,"maximum":50}},"required":["state"],"additionalProperties":false}}]},{"id":"gov.osha-accidents","group":"gov","description":"Search OSHA-investigated workplace accident reports via US Department of Labor Open Data Portal (~165k accidents). Each row carries summary number, related inspection number, report id, event date, narrative, nature of injury, body part affected, source of injury, occupation, age, sex, degree of injury (1 = fatality, 2 = hospitalized, 3 = no lost time, etc.). Filter by event date range, nature of injury code, fatality flag. Pair with /api/gov/osha-inspections + /api/gov/osha-violations to follow injury → investigation → citations.","versions":[{"version":null,"path":"/api/gov/osha-accidents","method":"GET","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"summaryNr":{"type":"integer","minimum":1},"activityNr":{"type":"integer","minimum":1},"reportId":{"type":"string","minLength":1,"maxLength":40},"eventDateMin":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"eventDateMax":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"natureOfInj":{"type":"string","minLength":1,"maxLength":20},"fields":{"type":"string","pattern":"^[a-z][a-z0-9_]*(,[a-z][a-z0-9_]*)*$","maxLength":400},"sort":{"type":"string","pattern":"^-?[a-z][a-z0-9_]*$","maxLength":120},"limit":{"type":"integer","minimum":1,"maximum":100,"default":25},"offset":{"type":"integer","minimum":0,"default":0}},"additionalProperties":false}}]},{"id":"gov.osha-inspections","group":"gov","description":"Search OSHA inspection records via the US Department of Labor Open Data Portal (~5M historical inspections). Filter by US state (2-letter), city, zip, or establishment-name substring (estabName, case-insensitive). Optional `filter` accepts raw OData-style clauses (joined with AND); `fields` selects columns; `sort` sorts (prefix with `-` for desc). Each row carries activity number, reporting id, establishment name + full site address, owner type/code, advance-notice flag, safety/health type, SIC + NAICS industry codes, open + close dates, host establishment number, union status. Backbone of workplace-safety + investigative-journalism agents.","versions":[{"version":null,"path":"/api/gov/osha-inspections","method":"GET","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"state":{"type":"string","minLength":2,"maxLength":2,"pattern":"^[A-Za-z]{2}$"},"city":{"type":"string","minLength":1,"maxLength":80},"zip":{"type":"string","pattern":"^\\d{5}$"},"estabName":{"type":"string","minLength":2,"maxLength":120},"fields":{"type":"string","minLength":1,"maxLength":400},"filter":{"type":"string","minLength":1,"maxLength":600},"sort":{"type":"string","minLength":1,"maxLength":120},"limit":{"type":"integer","minimum":1,"maximum":100,"default":25},"offset":{"type":"integer","minimum":0,"default":0}},"additionalProperties":false}}]},{"id":"gov.osha-violations","group":"gov","description":"Search OSHA citation / violation records via US Department of Labor Open Data Portal (~13.2M citations). Each citation links to an inspection via `activityNr` — pair with /api/gov/osha-inspections to follow site → inspection → violations. Filter by activityNr, citationId, standard (29 CFR section, e.g. \"19100132\" for PPE general requirements), issuance date range, initial-penalty min/max, emphasis program code.","versions":[{"version":null,"path":"/api/gov/osha-violations","method":"GET","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"activityNr":{"type":"integer","minimum":1},"citationId":{"type":"string","minLength":1,"maxLength":40},"standard":{"type":"string","minLength":2,"maxLength":40},"issuanceDateMin":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"issuanceDateMax":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"initialPenalty":{"type":"object","properties":{"min":{"type":"number","minimum":0},"max":{"type":"number","minimum":0}},"additionalProperties":false},"emphasis":{"type":"string","minLength":1,"maxLength":40},"fields":{"type":"string","pattern":"^[a-z][a-z0-9_]*(,[a-z][a-z0-9_]*)*$","maxLength":400},"sort":{"type":"string","pattern":"^-?[a-z][a-z0-9_]*$","maxLength":120},"limit":{"type":"integer","minimum":1,"maximum":100,"default":25},"offset":{"type":"integer","minimum":0,"default":0}},"additionalProperties":false}}]},{"id":"gov.product-recalls","group":"gov","description":"CPSC consumer-product recalls from SaferProducts.gov, newest first. Covers products outside FDA (food/drug/device) and NHTSA (vehicles): strollers, appliances, lithium batteries, furniture, toys, power tools, and more. All filters optional (with none set, returns the last 12 months). Each record includes recall number + date, title, CPSC URL, description, affected products (name/model/units), hazards, remedies, reported injuries, manufacturers/importers/distributors/retailers, where sold, manufacturing countries, images, and consumer-contact info. Public-domain US government data.","versions":[{"version":null,"path":"/api/gov/product-recalls","method":"GET","deprecated":false,"price":{"usd":0.0024},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"title":{"type":"string","minLength":2,"maxLength":100,"description":"Optional substring match on the recall title. Examples: \"stroller\", \"lithium battery\", \"space heater\"."},"productName":{"type":"string","minLength":2,"maxLength":100,"description":"Optional substring match on an affected product name."},"recallNumber":{"type":"string","minLength":3,"maxLength":20,"description":"Optional exact CPSC recall number, e.g., \"26094\"."},"dateStart":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Optional earliest recall date (YYYY-MM-DD)."},"dateEnd":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Optional latest recall date (YYYY-MM-DD)."},"limit":{"type":"integer","minimum":1,"maximum":50,"default":20,"description":"Max recalls to return (1-50). Default 20."}},"additionalProperties":false}}]},{"id":"gov.public-assistance","group":"gov","description":"FEMA Public Assistance (PA) funded project details — the post-disaster grants FEMA obligates to state/local/tribal governments and eligible nonprofits to repair public infrastructure and cover emergency response (debris removal, emergency protective measures, roads, buildings, utilities, parks). Filter by state (2-letter) and/or disasterNumber (one of the two is required); optionally refine by incidentType. Returns the total matching worksheet count plus projects (disaster number, declaration date, incident type, project worksheet number, application title, applicant, damage category, project size, status, county, federal share obligated / total obligated / project amount in USD, obligation date), largest federal share first. Free, public-domain (OpenFEMA). Distinct from gov.hazard-mitigation (future-risk mitigation grants) and gov.nfip-claims (flood losses paid) — this is disaster recovery funding for public infrastructure.","versions":[{"version":null,"path":"/api/gov/public-assistance","method":"GET","deprecated":false,"price":{"usd":0.0018},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"state":{"type":"string","minLength":2,"maxLength":2,"description":"2-letter US state/territory code."},"disasterNumber":{"type":"integer","minimum":1,"maximum":100000},"incidentType":{"type":"string","minLength":1,"maxLength":40},"limit":{"type":"integer","minimum":1,"maximum":50}},"additionalProperties":false}}]},{"id":"gov.representatives","group":"gov","description":"Your sitting members of the US Congress for a location. Pass a US address (geocoded to its state + congressional district for you), or an explicit state (2-letter) with optional district number. Returns the current US House representative for that district plus the state's two US senators — each with full name, party, state/district, the Bioguide ID, DC office, phone, official website, and contact form. State-only returns just the two senators; territories/DC return their non-voting delegate (no senators). Bundled CC0 data (unitedstates/congress-legislators), refreshed periodically. Fills the gap after gov.district (which gives the district, not the people) — for civic lookup, advocacy, and constituent tooling.","versions":[{"version":null,"path":"/api/gov/representatives","method":"GET","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"legacy","params":{"type":"object","properties":{"address":{"type":"string","minLength":5,"maxLength":200},"state":{"type":"string","minLength":2,"maxLength":2},"district":{"anyOf":[{"type":"string"},{"type":"number"}]}},"additionalProperties":false}}]},{"id":"gov.risk-index","group":"gov","description":"FEMA National Risk Index for a US county — the authoritative natural-hazard risk profile. Look up by countyFips (5-digit STCOFIPS), by state + county name, or by a lat/lon point. Returns the composite Risk Index score/rating/national-percentile (an 18-hazard model combining Expected Annual Loss × Social Vulnerability ÷ Community Resilience), each component (expected annual loss in dollars, social vulnerability, community resilience) with its rating, and per-hazard risk ratings + expected-annual-loss for all 18 natural hazards (wildfire, earthquake, hurricane, riverine & coastal flooding, tornado, heat/cold wave, drought, etc.). The structural natural-hazard risk picture an LLM can't recall — for siting, insurance, and resilience planning. Free, public-domain. Complements geo.flood-zone (which is flood SFHA only).","versions":[{"version":null,"path":"/api/gov/risk-index","method":"GET","deprecated":false,"price":{"usd":0.0018},"accepts":["x402"],"responseShape":"legacy","params":{"type":"object","properties":{"countyFips":{"type":"string","pattern":"^\\d{5}$"},"state":{"type":"string","minLength":2,"maxLength":40},"county":{"type":"string","minLength":2,"maxLength":60},"lat":{"type":"number","minimum":-90,"maximum":90},"lon":{"type":"number","minimum":-180,"maximum":180}},"additionalProperties":false}}]},{"id":"gov.senate-votes","group":"gov","description":"US Senate roll-call votes, newest first by vote date. Each record includes congress + session + vote_number, vote question + result + title + majority requirement, vote date/time, document name (e.g., S. 5, H.R. 4499), document title, grand totals (yeas/nays/present/absent), AND per-party breakdown (D/R/I yea/nay/present/absent counts derived from member-level vote_cast). Filters (all optional, AND-combined): congress, session (1 or 2), result substring, document substring (e.g., 'S. 5'), since/until (vote_date), limit + offset. Locally aggregated from senate.gov XML feeds (refreshed daily). Public-domain US government records.","versions":[{"version":null,"path":"/api/gov/senate-votes","method":"GET","deprecated":false,"price":{"usd":0.0024},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"congress":{"type":"integer","minimum":100,"maximum":200,"description":"Filter by Congress number. The 119th Congress = 2025-2026."},"session":{"type":"integer","description":"Filter by session (1 = odd year, 2 = even year of a Congress)."},"result":{"type":"string","minLength":2,"maxLength":60,"description":"Filter by vote result (case-insensitive substring). Examples: \"Agreed\", \"Rejected\", \"Cloture\"."},"document":{"type":"string","minLength":2,"maxLength":40,"description":"Filter by document name substring (case-insensitive on document_name). Examples: \"S. 5\", \"H.R. 4499\", \"H.R.\"."},"since":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Earliest vote date (YYYY-MM-DD)."},"until":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Latest vote date (YYYY-MM-DD)."},"limit":{"type":"integer","minimum":1,"maximum":100,"default":25,"description":"Max records (1-100). Default 25."},"offset":{"type":"integer","minimum":0,"maximum":100000,"default":0,"description":"Offset for pagination. Default 0."}},"additionalProperties":false}}]},{"id":"gov.uk-crime","group":"gov","description":"UK street-level crime around a location from the Home Office data.police.uk service. Give a latitude/longitude (and optional month YYYY-MM, defaults to the latest available — UK data lags ~2 months) and get the total crime count, a breakdown by category (anti-social behaviour, burglary, violent crime, vehicle crime, etc.), and recent individual records (category, approximate street, lat/lon, and outcome status). Free, Open Government Licence (commercial use permitted). Location-risk signal an LLM cannot recall — for property, insurance, and safety agents. Locations are anonymised to nearby map points by the Home Office.","versions":[{"version":null,"path":"/api/gov/uk-crime","method":"GET","deprecated":false,"price":{"usd":0.00108},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"lat":{"type":"number","minimum":-90,"maximum":90},"lng":{"type":"number","minimum":-180,"maximum":180},"month":{"type":"string","pattern":"^\\d{4}-\\d{2}$"},"limit":{"type":"integer","minimum":1,"maximum":50}},"required":["lat","lng"],"additionalProperties":false}}]},{"id":"gov.usajobs","group":"gov","description":"Search open US federal government job postings from the official USAJOBS API. Filter by keyword (title/skills), location (e.g. \"Austin, Texas\" or a state), and/or hiring organization; at least one is required. Returns the total matching count plus current openings with title, agency and department, location(s), salary range (USD) and pay interval, GS pay grade, work schedule, posting/close dates, and the official apply link. Keyless to the caller, public-domain (OPM). Live federal hiring data an LLM cannot recall — for job search, labor-market and workforce research.","versions":[{"version":null,"path":"/api/gov/usajobs","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"keyword":{"type":"string","minLength":1,"maxLength":120},"location":{"type":"string","minLength":1,"maxLength":80},"organization":{"type":"string","minLength":1,"maxLength":80},"limit":{"type":"integer","minimum":1,"maximum":50}},"additionalProperties":false}}]},{"id":"gov.usaspending-awards","group":"gov","description":"Search federal awards (contracts, grants, loans, direct payments) from USAspending.gov. Largest amount first within the date window. Each record includes award ID, recipient name, dollar amount, award type, awarding agency + sub-agency, start + end dates, description, and a permalink to the usaspending.gov detail page. Filter by recipient name, awarding agency name, recipient state, award type group, and date range. Backed by USAspending.gov's spending_by_award API; public-domain US government records.","versions":[{"version":null,"path":"/api/gov/usaspending-awards","method":"GET","deprecated":false,"price":{"usd":0.0024},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"recipient":{"type":"string","minLength":2,"maxLength":120,"description":"Recipient (vendor/grantee) name substring. Examples: \"Microsoft\", \"Lockheed Martin\", \"Stanford University\"."},"agency":{"type":"string","minLength":2,"maxLength":120,"description":"Awarding top-tier agency name. Examples: \"Department of Defense\", \"National Institutes of Health\", \"Department of Energy\"."},"recipientState":{"type":"string","minLength":2,"maxLength":2,"pattern":"^[A-Za-z]{2}$","description":"2-letter US state of the recipient (e.g., \"CA\", \"VA\")."},"awardType":{"type":"string","enum":["contracts","grants","loans","direct_payments","other"],"default":"contracts","description":"Award type group. contracts = A/B/C/D; grants = 02/03/04/05; loans = 07/08; direct_payments = 06/10; other = 11. Default contracts."},"since":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Earliest action date (YYYY-MM-DD). Default = 5 years ago."},"until":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Latest action date (YYYY-MM-DD). Default = today."},"limit":{"type":"integer","minimum":1,"maximum":100,"default":25,"description":"Records per page (1-100). Default 25."},"page":{"type":"integer","minimum":1,"maximum":1000,"default":1,"description":"Page number (1-based). Default 1."}},"additionalProperties":false}}]},{"id":"gov.usgs-water","group":"gov","description":"Real-time water data from USGS NWIS stream / river / groundwater gauges within a bounding box around lat/lon. Returns each site's latest reading per requested variable: streamflow (00060, ft³/s), gage height (00065, ft), water temperature (00010, °C), precipitation (00045, in), and others. Each reading: site code + name, lat/lon, variable name + description + unit, value (or null if no data / sentinel), qualifier codes (e.g., 'P' = provisional, 'A' = approved), observed timestamp. Free public-domain data from waterservices.usgs.gov.","versions":[{"version":null,"path":"/api/gov/usgs-water","method":"GET","deprecated":false,"price":{"usd":0.0024},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"lat":{"type":"number","minimum":-90,"maximum":90,"description":"Center latitude (decimal degrees)."},"lon":{"type":"number","minimum":-180,"maximum":180,"description":"Center longitude (decimal degrees)."},"radius":{"type":"number","minimum":0.05,"maximum":2,"default":0.5,"description":"Half-side of bounding box, in decimal degrees. Default 0.5 (~35 mi)."},"variables":{"type":"string","pattern":"^(\\d{5})(,\\d{5})*$","description":"Comma-separated USGS parameter codes (5-digit). Default \"00060,00065,00010\" (streamflow, gage height, water temp)."},"limit":{"type":"integer","minimum":1,"maximum":100,"default":25,"description":"Max readings to return (1-100). Default 25."}},"required":["lat","lon"],"additionalProperties":false}}]},{"id":"hash.compute","group":"hash","description":"Compute one or more cryptographic digests (MD5, SHA-1, SHA-2 family, SHA-3 family, BLAKE2) of a string or hex/base64-encoded byte buffer. Returns hex or base64-encoded digests.","versions":[{"version":null,"path":"/api/hash/compute","method":"POST","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"input":{"type":"string","maxLength":524288},"algorithms":{"type":"array","items":{"type":"string","enum":["md5","sha1","sha224","sha256","sha384","sha512","sha3-224","sha3-256","sha3-384","sha3-512","blake2b512","blake2s256"]},"minItems":1,"maxItems":12},"algorithm":{"type":"string","enum":["md5","sha1","sha224","sha256","sha384","sha512","sha3-224","sha3-256","sha3-384","sha3-512","blake2b512","blake2s256"]},"inputEncoding":{"type":"string","enum":["utf8","hex","base64"],"default":"utf8"},"outputEncoding":{"type":"string","enum":["hex","base64"],"default":"hex"}},"required":["input"],"additionalProperties":false}}]},{"id":"health.disease-surveillance","group":"health","description":"Current US notifiable-disease surveillance from the CDC NNDSS (National Notifiable Diseases Surveillance System) weekly tables. Returns provisional weekly case counts for ~139 nationally notifiable conditions (e.g. Measles, Pertussis, Mumps, Hepatitis A, Lyme disease, Gonorrhea, West Nile, Dengue) by reporting area and MMWR week, updated weekly. Filter by condition (substring, case-insensitive: \"measles\" matches \"Measles, Indigenous\"), location (a reporting area: a US state full name like \"California\", \"New York City\", \"U.S. Residents\", a census region like \"Pacific\", or a territory), year (MMWR year, 2022 to current), and weeks (most-recent N observations). At least one of condition or location is required. Each record reports the current-week count, the previous-52-week maximum, cumulative cases YTD this MMWR year, and cumulative YTD the prior year for same-week comparison. Public-domain CDC federal data via data.cdc.gov. Use this to see live disease activity and outbreaks that postdate an agent's training cutoff.","versions":[{"version":null,"path":"/api/health/disease-surveillance","method":"GET","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"condition":{"type":"string","minLength":2,"maxLength":80,"description":"Disease/condition substring, case-insensitive."},"location":{"type":"string","minLength":2,"maxLength":60,"description":"Reporting area: state, NYC, U.S. Residents, census region, or territory."},"year":{"type":"integer","minimum":2022,"maximum":2100,"description":"MMWR year, 2022 to current."},"weeks":{"type":"integer","minimum":1,"maximum":520,"description":"Return roughly the most-recent N weeks of observations."},"limit":{"type":"integer","minimum":1,"maximum":1000,"default":100}},"additionalProperties":false}}]},{"id":"health.hospital-lookup","group":"health","description":"CMS Care Compare lookup for every CMS-certified US hospital (~5k). Lookup by 6-digit CMS Facility ID for direct match, or fuzzy by name + state + city + hospital type, with optional minimum overall rating (1-5) filter. Each record includes facility ID, name, full address, phone, hospital type (Acute Care / Critical Access / Psychiatric / etc.), ownership category, emergency services flag, birthing-friendly designation, CMS overall star rating, and per-measure-group counts (mortality, safety, readmission, patient experience, effectiveness, timeliness, medical imaging). Public-domain federal data.","versions":[{"version":null,"path":"/api/health/hospital-lookup","method":"GET","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"facilityId":{"type":"string","pattern":"^\\d{6}$"},"name":{"type":"string","minLength":2,"maxLength":200},"city":{"type":"string","minLength":2,"maxLength":100},"state":{"type":"string","minLength":2,"maxLength":2,"pattern":"^[A-Za-z]{2}$"},"hospitalType":{"type":"string","minLength":2,"maxLength":80},"minRating":{"type":"integer","minimum":1,"maximum":5},"limit":{"type":"integer","minimum":1,"maximum":100,"default":20},"offset":{"type":"integer","minimum":0,"maximum":10000,"default":0}},"additionalProperties":false}}]},{"id":"health.hospital-quality","group":"health","description":"CMS Care Compare hospital quality ratings — the data behind medicare.gov hospital ratings, for all ~5,300 Medicare-certified US hospitals. Look up by facilityId (CMS certification number), or filter by state, city, and name (partial match). Each row: facility id/name/address/phone, hospital type + ownership, emergency services, overall star rating (1-5), and per-domain measure summaries (mortality, safety of care, readmission, patient experience, timeliness, effectiveness) showing whether the hospital performs better/same/worse than the national average. Rows returned with CMS's documented column names. Public-domain federal data.","versions":[{"version":null,"path":"/api/health/hospital-quality","method":"GET","deprecated":false,"price":{"usd":0.00288},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"facilityId":{"type":"string","pattern":"^[0-9A-Za-z]{6}$"},"state":{"type":"string","minLength":2,"maxLength":2},"city":{"type":"string","minLength":2,"maxLength":60},"name":{"type":"string","minLength":2,"maxLength":120},"limit":{"type":"integer","minimum":1,"maximum":100,"default":10},"offset":{"type":"integer","minimum":0,"default":0}},"additionalProperties":false}}]},{"id":"health.medicare-provider","group":"health","description":"Medicare utilization + payments by provider (CMS 'Physician & Other Practitioners - by Provider' annual dataset). Look up by npi, or filter by lastName (exact last/organization name) + state. Each row: provider NPI, name, credentials, entity type, full address, provider type/specialty, Medicare participation, beneficiary counts, total services, submitted charges, Medicare allowed/payment amounts, plus beneficiary demographic + chronic-condition aggregates — CMS's documented column names (Rndrng_NPI, Tot_Srvcs, Tot_Mdcr_Pymt_Amt, etc). Complements /api/health/open-payments (industry payments to the same NPIs). KYC, healthcare-fraud research, and provider due diligence. For a provider 360 (identity + industry payments + this) by NPI in one call, see /api/health/provider-profile. Public-domain federal data.","versions":[{"version":null,"path":"/api/health/medicare-provider","method":"GET","deprecated":false,"price":{"usd":0.00288},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"npi":{"type":"string","pattern":"^\\d{10}$"},"lastName":{"type":"string","minLength":2,"maxLength":80},"state":{"type":"string","minLength":2,"maxLength":2},"limit":{"type":"integer","minimum":1,"maximum":100,"default":10},"offset":{"type":"integer","minimum":0,"default":0}},"additionalProperties":false}}]},{"id":"health.mortality-stats","group":"health","description":"US mortality statistics from CDC NCHS. dataset=leading-causes (default): annual deaths + age-adjusted death rate per 100k by state and top-10 cause of death, 1999-2017 — filter by state (full name, e.g. \"California\", or \"United States\"), year, cause (e.g. \"Heart disease\", \"Cancer\", \"Suicide\"). dataset=weekly-counts: provisional weekly death counts by jurisdiction with per-cause columns (all-cause, natural, COVID-19, heart disease, cancer, etc.), 2020-2023 — filter by state and mmwrYear. Rows returned raw from CDC with documented column names. Public-domain federal data.","versions":[{"version":null,"path":"/api/health/mortality-stats","method":"GET","deprecated":false,"price":{"usd":0.0024},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"dataset":{"type":"string","enum":["leading-causes","weekly-counts"],"default":"leading-causes"},"state":{"type":"string","minLength":2,"maxLength":40},"year":{"type":"integer","minimum":1999,"maximum":2023},"cause":{"type":"string","minLength":2,"maxLength":80},"limit":{"type":"integer","minimum":1,"maximum":200,"default":25},"offset":{"type":"integer","minimum":0,"default":0}},"additionalProperties":false}}]},{"id":"health.open-payments","group":"health","description":"Search CMS Open Payments — every payment from a drug/device manufacturer or GPO to a US physician or teaching hospital under the Sunshine Act (~10M records per year). Lookup by 10-digit NPI for the recipient (most precise), by last/first name + state, or by payer (manufacturer) name. Each record includes recipient (NPI, name, specialty, location), payer (manufacturer name + state/country), payment (amount USD, date, nature of payment such as 'Consulting Fee'/'Food and Beverage'/'Travel'/'Royalty', form of payment), and associated product (drug/device name + therapeutic area). Investigative journalism + KYC + healthcare conflict-of-interest research. Public-domain federal data.","versions":[{"version":null,"path":"/api/health/open-payments","method":"GET","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"npi":{"type":"string","pattern":"^\\d{10}$"},"firstName":{"type":"string","minLength":1,"maxLength":80},"lastName":{"type":"string","minLength":1,"maxLength":80},"payerName":{"type":"string","minLength":2,"maxLength":200},"state":{"type":"string","minLength":2,"maxLength":2,"pattern":"^[A-Za-z]{2}$"},"minAmount":{"type":"number","minimum":0,"maximum":10000000},"limit":{"type":"integer","minimum":1,"maximum":100,"default":20},"offset":{"type":"integer","minimum":0,"maximum":100000,"default":0}},"additionalProperties":false}}]},{"id":"health.provider-profile","group":"health","description":"Provider 360 — everything we know about a US healthcare provider, merged on their 10-digit NPI in one call. Combines three federal datasets: identity (NPPES registry: name, specialty/taxonomy, practice address, licenses), industry payments (CMS Open Payments: what drug & device makers paid them), and Medicare billing (CMS Physician & Other Practitioners: services, charges, and Medicare payment amounts). Each section reports found/error independently — a provider with no Open Payments or Medicare record still returns identity. KYC, healthcare-fraud research, investigative journalism, provider due diligence. Pass npi (required). For the individual sources see /api/license/medical, /api/health/open-payments, /api/health/medicare-provider.","versions":[{"version":null,"path":"/api/health/provider-profile","method":"GET","deprecated":false,"price":{"usd":0.00576},"accepts":["x402"],"responseShape":"legacy","params":{"type":"object","properties":{"npi":{"type":"string","pattern":"^\\d{10}$"}},"required":["npi"],"additionalProperties":false}}]},{"id":"html.to-markdown","group":"html","description":"Convert raw HTML you already have into clean reading markdown — no URL fetch. POST { html }. Strips scripts, styles, nav, ads, and comments, extracts the main article content, and returns markdown (headings, links, lists, emphasis preserved), plain text, the page title, and a word count. Use when you scraped or generated HTML elsewhere and want clean markdown without a round-trip. For fetching + cleaning a live URL instead, use /api/url/clean (or /api/url/render for JavaScript-rendered pages). Pure conversion, no network.","versions":[{"version":null,"path":"/api/html/to-markdown","method":"POST","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"html":{"type":"string","minLength":1,"maxLength":2000000}},"required":["html"],"additionalProperties":false}}]},{"id":"image.compress","group":"image","description":"Compress an image. POST exactly one of { url } or { imageBase64 }, plus optional { format?: auto|png|jpeg|webp|avif (default auto = keep input format), quality?: 1-100 (default 75), lossy?: bool (default true), effort?: 1-10 (default 6) }. Returns compressed image bytes directly with X-2s-* headers: Original-Bytes, Compressed-Bytes, Saved-Percent, Output-Format, Source-Format, Source-Width, Source-Height, Process-Ms. Limits: 5MB URL fetch, ~3MB inline body, 4096 × 4096 input pixels. Animated GIF input becomes animated WebP when format=webp or auto.","versions":[{"version":null,"path":"/api/image/compress","method":"POST","deprecated":false,"price":{"usd":0.0024},"accepts":["x402"],"responseShape":"legacy","params":{"type":"object","properties":{"url":{"type":"string","format":"uri","maxLength":2048},"imageBase64":{"type":"string","maxLength":4400000},"format":{"type":"string","enum":["auto","png","jpeg","webp","avif"]},"quality":{"type":"integer","minimum":1,"maximum":100},"lossy":{"type":"boolean"},"effort":{"type":"integer","minimum":1,"maximum":10}},"additionalProperties":false}}]},{"id":"inflation.calculator","group":"inflation","description":"Adjust a US dollar amount for inflation between two dates ('what is $100 in 1990 worth today?'). Pass amount, from (YYYY-MM-DD or YYYY), and optional to (defaults to the latest CPI month). Uses CPI-U (CPIAUCNS — the same not-seasonally-adjusted all-items index as the official BLS inflation calculator), data back to 1913. Returns the inflation-adjusted amount, cumulative inflation %, annualized rate, and the CPI index values used on each date. Source: BLS CPI via FRED (St. Louis Fed).","versions":[{"version":null,"path":"/api/inflation/calculator","method":"GET","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"amount":{"type":"number"},"from":{"type":"string","pattern":"^\\d{4}(-\\d{2}(-\\d{2})?)?$"},"to":{"type":"string","pattern":"^\\d{4}(-\\d{2}(-\\d{2})?)?$"}},"required":["amount","from"],"additionalProperties":false}}]},{"id":"inflation.expectations","group":"inflation","description":"Current US inflation expectations — what markets and consumers expect future inflation to be. Returns the 5-year and 10-year TIPS breakeven rates, the 5-Year/5-Year forward inflation expectation (the Fed-watched long-run gauge), and the University of Michigan 1-year consumer inflation expectation. Each value is a percent as of its latest date. Market-based breakevens update daily. Source: Federal Reserve / Treasury via FRED (St. Louis Fed).","versions":[{"version":null,"path":"/api/inflation/expectations","method":"GET","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{},"additionalProperties":false}}]},{"id":"inflation.hicp","group":"inflation","description":"EU harmonized inflation — the latest HICP annual rate of change (the official, cross-country-comparable inflation rate) for the EU, euro area, and each member state. Pass country as a Eurostat geo code (DE, FR, EL for Greece, EA20 = euro area, EU27_2020 = EU) for one, or omit for all (sorted highest inflation first). All-items index (COICOP CP00). Source: Eurostat (free, no key). For US inflation use inflation.rates.","versions":[{"version":null,"path":"/api/inflation/hicp","method":"GET","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"country":{"type":"string","minLength":2,"maxLength":10,"pattern":"^[A-Za-z0-9_]+$"}},"additionalProperties":false}}]},{"id":"inflation.rates","group":"inflation","description":"Current US inflation rates by measure, with the index level plus computed year-over-year and month-over-month % change. Pass measure for one, or omit for all. Measures: cpi, cpi-nsa, core-cpi, cpi-w, pce, core-pce, ppi, cpi-food, cpi-energy, cpi-shelter, cpi-medical, import-prices, export-prices — i.e. headline CPI (SA + NSA), core CPI, CPI-W, PCE, core PCE (the Fed's 2% target gauge), PPI final demand, and CPI by category (food, energy, shelter, medical) + import/export prices. The YoY change is the headline \"inflation rate\". Each result names the FRED series ID used. Source: BLS/BEA via FRED (St. Louis Fed). For raw access to any other series use bls.series; this is the curated, rate-computed layer.","versions":[{"version":null,"path":"/api/inflation/rates","method":"GET","deprecated":false,"price":{"usd":0.00144},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"measure":{"type":"string","enum":["cpi","cpi-nsa","core-cpi","cpi-w","pce","core-pce","ppi","cpi-food","cpi-energy","cpi-shelter","cpi-medical","import-prices","export-prices"]}},"additionalProperties":false}}]},{"id":"ipinfo.bulk","group":"ipinfo","description":"Geolocate up to 100 IPv4 or IPv6 addresses in a single call. Pass an array of IPs; results come back in input order. Each successful entry includes country (name + ISO code), region (name + code), city, postal code, lat/lon (city-level precision), timezone, and network info (ISP, organization, AS). Failed entries include an error object instead of geo fields, plus okCount/failedCount totals. Far cheaper than 100 single calls to /api/geo/ip when enriching logs, access lists, or analytics batches.","versions":[{"version":null,"path":"/api/ipinfo/bulk","method":"POST","deprecated":false,"price":{"usd":0.006},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"ips":{"type":"array","items":{"type":"string","minLength":1,"maxLength":64},"minItems":1,"maxItems":100}},"required":["ips"],"additionalProperties":false}}]},{"id":"iso.currency","group":"iso","description":"Look up an ISO 4217 currency. Pass code (alphabetic like USD, or 3-digit numeric like 840) for the canonical record, or country to find the currency/currencies a country uses. Returns the alphabetic + numeric code, English name, minor unit (decimal places — e.g. JPY 0, USD 2, BHD 3), and the countries using it. Bundled authoritative ISO 4217 data — the currency-code + decimal-places ground truth an LLM gets wrong on less-common currencies.","versions":[{"version":null,"path":"/api/iso/currency","method":"GET","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"legacy","params":{"type":"object","properties":{"code":{"type":"string","minLength":2,"maxLength":4},"country":{"type":"string","minLength":2,"maxLength":60}},"additionalProperties":false}}]},{"id":"iso.language","group":"iso","description":"Look up an ISO 639 language. Pass code in any form — 639-1 (en), 639-2/B (ger) or 639-2/T (deu) — or name (English, partial match). Returns the English name and all sibling codes (alpha-2, alpha3-B, alpha3-T), so you can normalize a messy language tag to canonical ISO identifiers and resolve the bibliographic-vs-terminological alpha-3 split (e.g. German = de / deu / ger). Bundled authoritative ISO 639 data.","versions":[{"version":null,"path":"/api/iso/language","method":"GET","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"legacy","params":{"type":"object","properties":{"code":{"type":"string","minLength":2,"maxLength":3},"name":{"type":"string","minLength":2,"maxLength":60}},"additionalProperties":false}}]},{"id":"iso.subdivision","group":"iso","description":"Look up ISO 3166-2 subdivisions (states, provinces, regions). Pass code (e.g. US-CA) to resolve a single subdivision → name + country, or country (2-letter ISO 3166-1, e.g. US) to list all of that country's subdivisions with their codes. Bundled authoritative ISO 3166-2 data (~3.8k subdivisions across 237 countries) — the address/jurisdiction ground truth an LLM hallucinates codes for.","versions":[{"version":null,"path":"/api/iso/subdivision","method":"GET","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"legacy","params":{"type":"object","properties":{"code":{"type":"string","minLength":4,"maxLength":6},"country":{"type":"string","minLength":2,"maxLength":2}},"additionalProperties":false}}]},{"id":"job.federal-codes","group":"job","description":"Fetch a USAJobs reference codelist (lookup tables behind every federal job posting). Pass name to pick which list: agencysubelements (every agency + sub-element), occupationalseries (2210 IT, 0301 Misc Admin, 0801 Engineer, etc.), paygrades, payplans (GS, SES, ES, WG, etc.), hiringpaths (veteran, military spouse, native American, etc.), securityclearances, locationcodes, countries, countrysubdivisions, ethnicities, racecodes, militarystatuscodes, languagecodes, positionscheduletypecodes (full-time/part-time/seasonal), travelpercentages, missioncriticalcodes, cyberworkroles, etc. (33 lists total). Use the returned codes as filter inputs to /api/job/federal-search.","versions":[{"version":null,"path":"/api/job/federal-codes","method":"GET","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"name":{"type":"string","enum":["academichonors","agencysubelements","announcementclosingtypes","applicantsuppliers","cyberworkroles","countries","countrysubdivisions","degreetypecodes","documentations","ethnicities","federalemploymentstatuses","geoloccodes","hiringpaths","languagecodes","languageproficiencies","locationcodes","militarystatuscodes","missioncriticalcodes","occupationalseries","paygrades","payplans","positionofferingtypecodes","positionopeningstatuses","positionscheduletypecodes","racecodes","refereetypecodes","remunerationrateintervalcodes","requiredstandarddocuments","securityclearances","servicetypes","specialhirings","travelpercentages","whomayapply"]}},"required":["name"],"additionalProperties":false}}]},{"id":"job.federal-search","group":"job","description":"Search current US federal job postings via the USAJobs API. Filter by keyword, positionTitle, locationName (\"Washington, DC\" or city/zip), remote (telework-eligible), pay grade range (e.g. payGradeLow=GS09 + payGradeHigh=GS13), jobCategoryCode (occupational series, e.g. 2210 for IT), organization (agency sub-element code, e.g. TR40 for IRS), whoMayApply (all/public/status). Returns per-posting: control number, position ID, title, USAJobs URL + apply URL, organization + department, locations, schedule, offering type, pay scales (min/max + interval), publication start + application close, qualification summary, job category + grade. Use sortField + sortDirection to sort. Pagination via resultsPerPage + page.","versions":[{"version":null,"path":"/api/job/federal-search","method":"GET","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"keyword":{"type":"string","minLength":1,"maxLength":120},"positionTitle":{"type":"string","minLength":1,"maxLength":120},"locationName":{"type":"string","minLength":1,"maxLength":120},"remote":{"type":"boolean"},"payGradeLow":{"type":"string","pattern":"^[A-Z]{2}\\d{2}$"},"payGradeHigh":{"type":"string","pattern":"^[A-Z]{2}\\d{2}$"},"jobCategoryCode":{"type":"string","pattern":"^\\d{3,4}$"},"organization":{"type":"string","pattern":"^[A-Z0-9]{2,6}$"},"whoMayApply":{"type":"string","enum":["all","public","status"]},"resultsPerPage":{"type":"integer","minimum":1,"maximum":500,"default":25},"page":{"type":"integer","minimum":1,"default":1},"sortField":{"type":"string","enum":["OpenDate","CloseDate","PositionTitle","Salary"]},"sortDirection":{"type":"string","enum":["Asc","Desc"]}},"additionalProperties":false}}]},{"id":"labor.openings","group":"labor","description":"US labor-market turnover from the BLS JOLTS survey (total nonfarm, national), monthly, newest first. Pass measure = openings (default), hires, quits, layoffs, or separations. Returns the level in thousands per month for a trailing window. Public-domain, live-wrap. The standard signal for labor-market tightness (job openings) and worker confidence (the quits rate) — fresh macro data agents can't recite.","versions":[{"version":null,"path":"/api/labor/openings","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"measure":{"type":"string","enum":["openings","hires","quits","layoffs","separations"]},"months":{"type":"integer","minimum":1,"maximum":60}},"additionalProperties":false}}]},{"id":"labor.unemployment","group":"labor","description":"US unemployment from BLS, monthly, newest first — national (CPS, \"US\") or by US state (LAUS). Pass area (\"US\" or a 2-letter state) and optionally measure = rate (default), unemployed, employed, or laborforce. Returns seasonally-adjusted values per month for a trailing window (rate in percent; counts in thousands). Public-domain, live-wrap. Fresh local labor-market context agents can't recite.","versions":[{"version":null,"path":"/api/labor/unemployment","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"area":{"type":"string","minLength":2,"maxLength":10},"measure":{"type":"string","enum":["rate","unemployed","employed","laborforce"]},"months":{"type":"integer","minimum":1,"maximum":60}},"required":["area"],"additionalProperties":false}}]},{"id":"labor.wages","group":"labor","description":"Occupational employment and wages from the BLS OEWS survey, by SOC occupation code, nationally or for a US state. Pass soc (e.g. 15-1252 Software Developers) and optionally a 2-letter state. Returns total employment, hourly mean wage, and annual mean + 10th/25th/median/75th/90th-percentile wages for the latest survey year. Public-domain, live-wrap. Authoritative ground-truth wages an agent must not guess — for comp benchmarking, job-offer evaluation, and labor-cost modeling.","versions":[{"version":null,"path":"/api/labor/wages","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"soc":{"type":"string","pattern":"^\\d{2}-?\\d{4}$"},"state":{"type":"string","minLength":2,"maxLength":2}},"required":["soc"],"additionalProperties":false}}]},{"id":"law.attorney-lookup","group":"law","description":"Find US attorneys by name in CourtListener's RECAP corpus (PACER-derived attorney directory). Query by name (case-insensitive prefix match: \"Jennifer Lee\" matches \"Jennifer Lee Pasquarella\" but not \"Sara Jennifer Lee\"), optional firm/contact-text contains filter, and limit (1-50, default 10). Returns id, normalized name, parsed firm + mailing address, phone, email, fax, count of known (docket, party) appearances, and canonical CourtListener URL per match. Use for opposing-counsel research, conflict checks, and \"who has filed this type of motion in this district\" queries. Underlying data is public domain (PACER filings); the directory itself is maintained by Free Law Project.","versions":[{"version":null,"path":"/api/law/attorney-lookup","method":"GET","deprecated":false,"price":{"usd":0.0036},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"name":{"type":"string","minLength":2,"maxLength":200,"description":"Attorney name (or name prefix) to search. Case-insensitive prefix match — \"Jennifer Lee\" finds \"Jennifer Lee Pasquarella\" but not \"Sara Jennifer Lee\"."},"firm":{"type":"string","minLength":2,"maxLength":200,"description":"Optional contains filter on the firm / contact block (e.g. \"Skadden\")."},"limit":{"type":"integer","minimum":1,"maximum":50,"default":10,"description":"Max attorney records to return (1-50). Default 10."}},"required":["name"],"additionalProperties":false}}]},{"id":"law.case-search","group":"law","description":"Search US court opinions (SCOTUS, federal circuits, state appellate/supreme — ~9M opinions). Query by free-text (party names, keywords, docket #, citation). Filter by court slug (e.g., \"scotus\", \"ca9\", \"nysupct\"), filing date range, and order (relevance/dateFiled-desc/dateFiled-asc/citeCount-desc). Returns clusterId, caseName, court, year, docket, reporter citations, citationCount, snippet, canonical URL. Discovery-side complement to case-verify. Backed by CourtListener (Free Law Project); underlying opinions are public domain.","versions":[{"version":null,"path":"/api/law/case-search","method":"GET","deprecated":false,"price":{"usd":0.0036},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"q":{"type":"string","minLength":2,"maxLength":500},"court":{"type":"string","pattern":"^[a-z0-9-]{2,40}(,[a-z0-9-]{2,40}){0,9}$"},"filedAfter":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"filedBefore":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"order":{"type":"string","enum":["relevance","dateFiled-desc","dateFiled-asc","citeCount-desc"]},"limit":{"type":"integer","minimum":1,"maximum":20,"default":10}},"required":["q"],"additionalProperties":false}}]},{"id":"law.case-verify","group":"law","description":"Verify US legal case citations in a passage of text. POST { text } where text contains one or more citations (e.g. \"Marbury v. Madison, 5 U.S. 137 (1803)\"). Returns per-citation results with canonical case name, court, year, docket, citationCount, and a public CourtListener URL — or flags the citation as unverified. Anti-hallucination check for legal LLM output. Underlying opinions are public domain; CourtListener (Free Law Project) is the corpus.","versions":[{"version":null,"path":"/api/law/case-verify","method":"POST","deprecated":false,"price":{"usd":0.006},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":30000}},"required":["text"],"additionalProperties":false}}]},{"id":"law.cfr-section","group":"law","description":"Fetch the authoritative text of any section of the US Code of Federal Regulations by title and section number — for example title 12, section 1026.43 returns Regulation Z’s ability-to-repay standards. Returns the canonical citation, section heading, full plain text, Federal Register source credit, the as-of date, and a link to the official eCFR page. An optional date parameter (YYYY-MM-DD) retrieves the historical text in force on that date, back to 2017. Data from the Electronic Code of Federal Regulations (US GPO / Office of the Federal Register), public domain, updated daily — verify regulatory citations against the authoritative source instead of relying on model memory.","versions":[{"version":null,"path":"/api/law/cfr-section","method":"GET","deprecated":false,"price":{"usd":0.0018},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"title":{"type":"integer","minimum":1,"maximum":50,"description":"CFR title number, 1-50 (e.g. 12 for Banks and Banking, 40 for Protection of Environment)."},"section":{"type":"string","pattern":"^[0-9]{1,4}[a-zA-Z]{0,2}\\.[0-9a-zA-Z][0-9a-zA-Z.\\-]{0,18}$","description":"Section identifier as \"part.section\", e.g. \"1026.43\" or \"240.10b-5\". The part is the digits before the dot."},"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Optional point-in-time date (YYYY-MM-DD). Returns the text in force on that date; coverage starts 2017-01-03. Defaults to the latest available text."}},"required":["title","section"],"additionalProperties":false}}]},{"id":"law.citation-check","group":"law","description":"Anti-hallucination checker for legal references — verify that cited cases, US Code sections, and CFR regulations in a passage actually EXIST, and (deterministically) that an attributed QUOTE actually appears in the cited opinion. POST { text } to scan a brief/passage: every case citation (via CourtListener), 'N U.S.C. § X', and 'N C.F.R. § X' is checked for existence with canonical metadata + a source URL, or flagged unverified. POST { quotes: [{ citation, quote }] } to verify specific quotations: each citation is resolved and its opinion full text is checked for the quote (ellipsis-aware), returning quote.present true/false. Pass both. Returns per-reference results + a summary (verified/unverified, quotesPresent/quotesMissing). Catches fabricated cases AND fabricated quotations — the LLM legal-output failure mode that gets attorneys sanctioned. Note: this checks existence + quote presence (facts), NOT whether a case legally supports a proposition. Sources: CourtListener (Free Law Project), US OLRC, eCFR (public domain).","versions":[{"version":null,"path":"/api/law/citation-check","method":"POST","deprecated":false,"price":{"usd":0.0072},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":50000},"quotes":{"type":"array","items":{"type":"object","properties":{"citation":{"type":"string","minLength":2,"maxLength":400},"quote":{"type":"string","minLength":4,"maxLength":4000}},"required":["citation","quote"],"additionalProperties":false},"maxItems":10}},"additionalProperties":false}}]},{"id":"law.docket-search","group":"law","description":"Search US federal court dockets — civil and criminal — from the RECAP/PACER archive. Full-text q (case name, party, e.g. \"United States v. Bankman-Fried\"), optional court (CourtListener court id like \"cand\", \"nysd\", \"ca9\"), filedAfter/filedBefore (YYYY-MM-DD), page. Or pass docketNumber (+ court) for exact lookup. Each docket: id, case name, court, docket number, date filed/terminated, nature of suit, assigned judge, public docket URL. Criminal-case research, litigation monitoring, KYC/due-diligence. Sibling endpoints: /api/law/case-search (opinions full-text), /api/law/opinion (full opinion text).","versions":[{"version":null,"path":"/api/law/docket-search","method":"GET","deprecated":false,"price":{"usd":0.0048},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"q":{"type":"string","minLength":2,"maxLength":300},"court":{"type":"string","minLength":2,"maxLength":15},"docketNumber":{"type":"string","minLength":3,"maxLength":40},"filedAfter":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"filedBefore":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"page":{"type":"integer","minimum":1,"default":1}},"additionalProperties":false}}]},{"id":"law.federal-register","group":"law","description":"Search the US Federal Register — proposed rules, final rules, notices, and presidential documents. Filter by free-text term, document type (RULE/PRORULE/NOTICE/PRESDOCU), agency slug (e.g., epa, fda, sec), and publication date range. Returns document_number, type, title, abstract, FR citation, agencies, publication_date, effective_on, comments_close_on, htmlUrl, pdfUrl, rawTextUrl. Public-domain US government data. Real-time — published daily, past LLM training cutoff.","versions":[{"version":null,"path":"/api/law/federal-register","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"q":{"type":"string","minLength":1,"maxLength":500},"type":{"type":"string","enum":["RULE","PRORULE","NOTICE","PRESDOCU"]},"agency":{"type":"string","pattern":"^[a-z0-9-]{2,60}$"},"since":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"until":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"limit":{"type":"integer","minimum":1,"maximum":20,"default":10}},"required":["q"],"additionalProperties":false}}]},{"id":"law.judge-lookup","group":"law","description":"Find US federal + state appellate judges by name in CourtListener's People DB. Query by firstName (case-insensitive prefix), lastName (case-insensitive prefix), or both — at least one required. Returns id, full name + components, dates of birth/death, gender, education (school, degree level, year), political affiliations (party + appointing executive period), count of distinct judicial positions, and canonical CourtListener URL per match. Pairs with law.case-search + law.attorney-lookup to complete the WHO graph of a legal research workflow. Backed by CourtListener (Free Law Project); underlying data is public domain.","versions":[{"version":null,"path":"/api/law/judge-lookup","method":"GET","deprecated":false,"price":{"usd":0.0036},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"firstName":{"type":"string","minLength":2,"maxLength":100,"description":"First-name prefix to search (case-insensitive). \"Son\" matches \"Sonia\". Optional, but at least one of firstName/lastName required."},"lastName":{"type":"string","minLength":2,"maxLength":100,"description":"Last-name prefix to search (case-insensitive). \"Soto\" matches \"Sotomayor\". Optional, but at least one of firstName/lastName required."},"limit":{"type":"integer","minimum":1,"maximum":50,"default":10,"description":"Max judge records to return (1-50). Default 10."}},"additionalProperties":false}}]},{"id":"law.opinion","group":"law","description":"Fetch the full text of a US court opinion by CourtListener opinion ID OR by citation. Returns plain text (preferred), HTML fallback, case metadata (case name, court, year, docket, citation), opinion type (lead/concurrence/dissent), author, and a list of alternate opinions in the same cluster. POST { opinionId?: number, citation?: string } — exactly one required. Anti-hallucination follow-up to case-verify: once you confirm the citation exists, fetch the text. Backed by CourtListener (public-domain underlying corpus).","versions":[{"version":null,"path":"/api/law/opinion","method":"POST","deprecated":false,"price":{"usd":0.0048},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"opinionId":{"type":"integer","exclusiveMinimum":true,"minimum":0},"citation":{"type":"string","minLength":2,"maxLength":500}},"additionalProperties":false}}]},{"id":"law.sanctions-check","group":"law","description":"Fuzzy-match a name (person, company, vessel, aircraft) against the US Treasury OFAC Specially Designated Nationals list. POST { query, threshold?, limit?, sourceList? }. Returns ranked matches with similarity scores, entity type, sanctions programs, aliases, and remarks. Threshold default 0.4; scores ≥ 0.85 flagged as hasHighConfidenceMatch. List refreshed daily from public US Treasury data.","versions":[{"version":null,"path":"/api/law/sanctions-check","method":"POST","deprecated":false,"price":{"usd":0.0048},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"query":{"type":"string","minLength":2,"maxLength":500},"threshold":{"type":"number","minimum":0.1,"maximum":1},"limit":{"type":"integer","minimum":1,"maximum":100},"sourceList":{"type":"string","maxLength":64}},"required":["query"],"additionalProperties":false}}]},{"id":"law.trademark-search","group":"law","description":"Search US trademarks by wordmark text, owner name, or goods/services — the text search the USPTO offers no public API for. Pass `query` for full-text search (ranked best-match first), or `serial` / `registrationNumber` for an exact record. Filter with `field` (mark|owner|all), `status` (live=registered+pending only, default; all=includes dead/abandoned), and `intlClass` (Nice class, e.g. 9). Returns each mark's wordmark, serial, registration number, status (+ live flag), filing/registration/abandonment dates, owner, international classes, and goods/services. Corpus: USPTO full trademark register (public domain). Use law.trademark-status for live USPTO prosecution detail on a known serial.","versions":[{"version":null,"path":"/api/law/trademark-search","method":"GET","deprecated":false,"price":{"usd":0.0024},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"query":{"type":"string","minLength":1,"maxLength":200},"serial":{"type":"string","pattern":"^\\d{6,9}$"},"registrationNumber":{"type":"string","pattern":"^[0-9 ]{1,10}$"},"field":{"type":"string","enum":["mark","owner","all"]},"status":{"type":"string","enum":["live","all"]},"intlClass":{"type":"string","pattern":"^0*\\d{1,3}$"},"limit":{"type":"integer","minimum":1,"maximum":100},"offset":{"type":"integer","minimum":0}},"additionalProperties":false}}]},{"id":"law.trademark-status","group":"law","description":"Verify a US trademark by USPTO serial number (8 digits) or registration number. Returns the word mark, LIVE/DEAD status with the detailed status description and date, filing and registration dates, current owner (name, entity type, citizenship), mark type (trademark / service mark / certification mark), standard-character flag, abandonment date when applicable, and the international classes covered with their descriptions. Authoritative real-time USPTO data — confirm a mark exists and is active before relying on it for clearance, licensing, or due-diligence work. Lookup is by number only (no text search); siblings: /api/patents/search, /api/law/case-verify.","versions":[{"version":null,"path":"/api/law/trademark-status","method":"GET","deprecated":false,"price":{"usd":0.0018},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"serialNumber":{"type":"string","pattern":"^\\d{8}$"},"registrationNumber":{"type":"string","pattern":"^\\d{6,8}$"}},"additionalProperties":false}}]},{"id":"law.usc-section","group":"law","description":"Fetch the authoritative current text of any United States Code section by title and section number — for example title 17, section 107 returns the fair-use statute. Returns the canonical citation, heading, hierarchy context (title/chapter), full statutory plain text, the Statutes-at-Large source credit, and a link to the official OLRC page; set includeNotes=true to also get editorial notes (amendment history, effective dates). Hyphenated and lettered sections like 1395w-4 or 78j work. Data from the Office of the Law Revision Counsel current (\"prelim\") edition, public domain — verify statutory citations against the authoritative source instead of relying on model memory. For federal regulations see /api/law/cfr-section; for case law see /api/law/case-verify.","versions":[{"version":null,"path":"/api/law/usc-section","method":"GET","deprecated":false,"price":{"usd":0.0018},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"title":{"type":"integer","minimum":1,"maximum":54,"description":"USC title number, 1-54 (e.g. 17 for Copyrights, 26 for Internal Revenue Code, 42 for Public Health and Welfare)."},"section":{"type":"string","pattern":"^[0-9]{1,5}[a-zA-Z]{0,3}(-[0-9a-zA-Z]{1,8})?$","description":"Section number, e.g. \"107\", \"78j\", or \"1395w-4\"."},"includeNotes":{"anyOf":[{"type":"boolean"},{"type":"string"}],"description":"Include editorial notes (amendment history, effective dates, cross-references). Default false — notes can be long."}},"required":["title","section"],"additionalProperties":false}}]},{"id":"license.broker","group":"license","description":"FINRA BrokerCheck lookup — every US registered broker / investment advisor (~620k current + former). Search by free-text query (name + firm) or by CRD number for a direct individual record. Each result includes CRD ID, name (with any 'doing business as' aliases), broker-check + IA scope (Active/Inactive), a hasDisclosures flag (yes/no for complaints, settlements, terminations on file), industry-start date, FINRA registration count, and current + previous employments (firm name, branch city/state, registration dates). Public per FINRA's investor-protection BrokerCheck program; pair with /api/finance/sec-filings for cross-reference.","versions":[{"version":null,"path":"/api/license/broker","method":"GET","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"query":{"type":"string","minLength":2,"maxLength":200},"crd":{"type":"string","pattern":"^\\d{1,9}$"},"limit":{"type":"integer","minimum":1,"maximum":50,"default":10},"offset":{"type":"integer","minimum":0,"maximum":10000,"default":0}},"additionalProperties":false}}]},{"id":"license.medical","group":"license","description":"US healthcare provider lookup (NPPES NPI Registry). Every US doctor, nurse, dentist, hospital, lab, pharmacy has an NPI — this returns the canonical record. Lookup by 10-digit NPI for a precise match, or by firstName + lastName + state for fuzzy search. Each record includes name + credentials, status, enumeration date, primary + secondary specialty taxonomies (with state license numbers), practice + mailing addresses, phone, and any cross-issuer identifiers (Medicaid, Medicare, etc.). Public-domain CMS data, free. For all three NPI datasets merged (identity + industry payments + Medicare billing) in one call, see /api/health/provider-profile.","versions":[{"version":null,"path":"/api/license/medical","method":"GET","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"npi":{"type":"string","pattern":"^\\d{10}$"},"firstName":{"type":"string","minLength":1,"maxLength":80},"lastName":{"type":"string","minLength":1,"maxLength":120},"name":{"type":"string","minLength":1,"maxLength":120},"state":{"type":"string","minLength":2,"maxLength":2,"pattern":"^[A-Za-z]{2}$"},"enumerationType":{"type":"string","enum":["1","2"]},"limit":{"type":"integer","minimum":1,"maximum":200,"default":10},"skip":{"type":"integer","minimum":0,"maximum":10000,"default":0}},"additionalProperties":false}}]},{"id":"license.real-estate","group":"license","description":"Verify US real-estate licenses (brokers, sales agents, broker companies). Currently supported state: TX (Texas Real Estate Commission license holders). Search by name (license holder, partial), licenseNumber (exact), licenseType (partial, e.g. \"Broker\", \"Sales Agent\"), status (e.g. \"Active\"). Each license: type, number, holder name, status, original license date, expiration date, and the related supervising broker (type/number/name) where applicable. Agent/broker due-diligence and KYC. Siblings: /api/license/medical, /api/license/broker, /api/license/trades. Official state open data.","versions":[{"version":null,"path":"/api/license/real-estate","method":"GET","deprecated":false,"price":{"usd":0.00288},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"state":{"type":"string","enum":["TX"]},"name":{"type":"string","minLength":2,"maxLength":120},"licenseNumber":{"type":"string","minLength":1,"maxLength":20},"licenseType":{"type":"string","minLength":2,"maxLength":60},"status":{"type":"string","minLength":2,"maxLength":40},"limit":{"type":"integer","minimum":1,"maximum":100,"default":10},"offset":{"type":"integer","minimum":0,"default":0}},"required":["state"],"additionalProperties":false}}]},{"id":"license.trades","group":"license","description":"Verify US trade / occupational licenses (electricians, A/C technicians, cosmetologists, tow operators, and other state-regulated trades). Currently supported state: TX (Texas Department of Licensing & Regulation, all active licenses). Search by name (matches owner or business name, partial), licenseNumber (exact), licenseType (partial, e.g. \"Electrician\"), county. Each license: type + subtype, number, business + owner name, county, expiration date, continuing-education flag. Contractor due-diligence and KYC. Siblings: /api/license/medical (NPI), /api/license/broker (FINRA). Official state open data.","versions":[{"version":null,"path":"/api/license/trades","method":"GET","deprecated":false,"price":{"usd":0.00288},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"state":{"type":"string","enum":["TX"]},"name":{"type":"string","minLength":2,"maxLength":120},"licenseNumber":{"type":"string","minLength":1,"maxLength":20},"licenseType":{"type":"string","minLength":2,"maxLength":60},"county":{"type":"string","minLength":2,"maxLength":40},"limit":{"type":"integer","minimum":1,"maximum":100,"default":10},"offset":{"type":"integer","minimum":0,"default":0}},"required":["state"],"additionalProperties":false}}]},{"id":"lock.acquire","group":"lock","description":"LOCK: acquire a distributed lock/lease, scoped to YOUR wallet. Returns { acquired:true, token } if you got it, or { acquired:false, retryInSeconds } if someone else holds it. The lock auto-expires after ttlSeconds (so a crashed holder can't wedge it). Keep the token — you need it to renew or release. Use it to make sure only one copy of your agent runs a critical section. No account or API key — pay per call with x402.","versions":[{"version":null,"path":"/api/lock/acquire","method":"POST","deprecated":false,"price":{"usd":0.002},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"key":{"type":"string","description":"Lock name, up to 256 chars of [A-Za-z0-9._:/-]. e.g. \"nightly-report\"."},"ttlSeconds":{"type":"integer","minimum":1,"maximum":86400,"description":"Auto-release after this many seconds (1-86400). Set it above your critical section's worst-case runtime."}},"required":["key","ttlSeconds"],"additionalProperties":false}}]},{"id":"lock.release","group":"lock","description":"LOCK: release a lock you hold, scoped to YOUR wallet. Pass the key + your token. Returns { released:true } only if your token matches (you can't release someone else's lock). Idempotent — releasing an already-gone lock returns released:false. Private to your wallet (the x402 payer).","versions":[{"version":null,"path":"/api/lock/release","method":"POST","deprecated":false,"price":{"usd":0.002},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"key":{"type":"string","description":"The lock name."},"token":{"type":"string","description":"The token returned by lock.acquire."}},"required":["key","token"],"additionalProperties":false}}]},{"id":"lock.renew","group":"lock","description":"LOCK: extend a lock you hold, scoped to YOUR wallet. Pass the key + the token you got from lock.acquire and a new ttlSeconds. Returns { renewed:true } only if your token still matches (you can't extend someone else's lock). Use it to keep a long-running critical section locked. Private to your wallet (the x402 payer).","versions":[{"version":null,"path":"/api/lock/renew","method":"POST","deprecated":false,"price":{"usd":0.002},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"key":{"type":"string","description":"The lock name."},"token":{"type":"string","description":"The token returned by lock.acquire."},"ttlSeconds":{"type":"integer","minimum":1,"maximum":86400,"description":"New lease duration in seconds."}},"required":["key","token","ttlSeconds"],"additionalProperties":false}}]},{"id":"maritime.cases","group":"maritime","description":"US Coast Guard activity / port-state-control case history for a vessel, by USCG vessel id (from maritime.vessel). Returns cases newest-first with the activity id, start date, type (Boarding, Inspection, Investigation, etc.), and process status. Keyless, public-domain. The compliance/inspection record behind a vessel — use for safety and counterparty due diligence.","versions":[{"version":null,"path":"/api/maritime/cases","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"vesselId":{"type":"string","pattern":"^\\d+$"}},"required":["vesselId"],"additionalProperties":false}}]},{"id":"maritime.port","group":"maritime","description":"Look up world ports and terminals in the NGA World Port Index (Pub 150, ~2,950 ports) by port name (partial match) and/or country (full country name, e.g. \"Japan\"). Returns matching ports with location (lat/lon, country, region), UN/LOCODE, harbor size/type and shelter, max vessel length/draft (meters), channel/anchorage/cargo-pier depths, tidal range, and chart number. Keyless, public-domain (NGA). Physical-port reference data an LLM cannot reliably recall; complements maritime.vessel (USCG vessel registry) and maritime.cases (port-state-control inspections).","versions":[{"version":null,"path":"/api/maritime/port","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"portName":{"type":"string","minLength":1,"maxLength":100},"country":{"type":"string","minLength":1,"maxLength":60},"limit":{"type":"integer","minimum":1,"maximum":50}},"additionalProperties":false}}]},{"id":"maritime.vessel","group":"maritime","description":"Look up vessels in the US Coast Guard PSIX registry by name (partial match), call sign, official number, hull number (HIN), flag country, service type, or build year. Returns matching vessels with the USCG vessel id, name, call sign, service type, build year, status, official number, HIN, and flag. Keyless, public-domain. Covers US-flagged vessels (and foreign vessels with US port-state-control activity). Pair the returned vesselId with maritime.cases for the inspection record. (Cross-references trade.locode for ports.)","versions":[{"version":null,"path":"/api/maritime/vessel","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"name":{"type":"string","maxLength":100},"callSign":{"type":"string","maxLength":40},"officialNumber":{"type":"string","maxLength":40},"hullNumber":{"type":"string","maxLength":40},"flag":{"type":"string","maxLength":60},"service":{"type":"string","maxLength":60},"buildYear":{"type":"string","pattern":"^\\d{4}$"},"vesselId":{"type":"string","pattern":"^\\d+$"}},"additionalProperties":false}}]},{"id":"markets.holiday","group":"markets","description":"Stock-exchange holiday calendar. Pass exchange (default US); returns the list of upcoming market holidays with the date, holiday name, whether the session is a full close or an early close, and the trading hours when partial. Use it to plan around non-trading days. Data by Finnhub.","versions":[{"version":null,"path":"/api/markets/holiday","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"exchange":{"type":"string","minLength":1,"maxLength":8,"pattern":"^[A-Za-z]+$","description":"Exchange code (default US)."}},"additionalProperties":false}}]},{"id":"markets.status","group":"markets","description":"Is a stock exchange open right now? Pass exchange (default US); returns whether trading is open, the current session (pre-market, regular, post-market, or closed), whether today is a market holiday, the exchange timezone, and the server timestamp. Use it to gate time-sensitive logic to market hours. Data by Finnhub.","versions":[{"version":null,"path":"/api/markets/status","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"exchange":{"type":"string","minLength":1,"maxLength":8,"pattern":"^[A-Za-z]+$","description":"Exchange code (default US)."}},"additionalProperties":false}}]},{"id":"medical.device-510k","group":"medical","description":"FDA 510(k) premarket clearances — the record of medical devices cleared for US marketing by demonstrating substantial equivalence to a predicate device. Search by device name, applicant (manufacturer), or FDA product code, and get back each clearance with its K-number, device name, applicant, decision date and decision description, clearance type (traditional/special/abbreviated), product code, advisory committee, and date received — newest decision first. Free, public-domain US government data. Authoritative regulatory-status data for medical-device diligence; point-in-time public records, not regulatory advice.","versions":[{"version":null,"path":"/api/medical/device-510k","method":"GET","deprecated":false,"price":{"usd":0.0018},"accepts":["x402"],"responseShape":"legacy","params":{"type":"object","properties":{"device":{"type":"string","minLength":2,"maxLength":120},"applicant":{"type":"string","minLength":2,"maxLength":120},"productCode":{"type":"string","minLength":2,"maxLength":10},"limit":{"type":"integer","minimum":1,"maximum":50,"default":10}},"additionalProperties":false}}]},{"id":"medical.device-classification","group":"medical","description":"FDA medical device classification — the regulatory class and controls for a device type. Search by device name or FDA product code and get back the device class (I/II/III, mapping to regulatory risk and controls), CFR regulation number, medical specialty/review panel, the official definition, and flags for life-sustaining/supporting, implant, GMP-exempt, and third-party-review eligibility. Free, public-domain US government data. The authoritative answer to \"what FDA class is this device and what regulation governs it\" — for regulatory and medical-device diligence; point-in-time public records, not regulatory advice.","versions":[{"version":null,"path":"/api/medical/device-classification","method":"GET","deprecated":false,"price":{"usd":0.0018},"accepts":["x402"],"responseShape":"legacy","params":{"type":"object","properties":{"device":{"type":"string","minLength":2,"maxLength":120},"productCode":{"type":"string","minLength":2,"maxLength":10},"limit":{"type":"integer","minimum":1,"maximum":50,"default":10}},"additionalProperties":false}}]},{"id":"medical.device-recall","group":"medical","description":"FDA medical-device recalls — the enforcement record of devices removed or corrected in the US market because they could pose a health risk. Search by device name (product description), recalling firm (manufacturer), recall classification (I = most serious / reasonable probability of serious health consequences, II, or III), status (Ongoing, Completed, Terminated, Pending), or state of the recalling firm — or omit all filters for the most recent recalls nationwide. Each record returns the FDA recall number, classification, status, product description and quantity, the reason for the recall, code/lot information, the recalling firm and location, distribution pattern, whether it was voluntary or FDA-mandated, and the recall-initiation, classification, and report dates — newest report first, with the total matching count. Free, public-domain US government data. Which devices are under recall right now is fresh post-training data with real patient-safety stakes; distinct from medical.device-510k (clearances), medical.device-classification (risk class), medical.device-udi (device identifiers), and medical.device-event (adverse-event reports). Point-in-time public records, not medical or regulatory advice.","versions":[{"version":null,"path":"/api/medical/device-recall","method":"GET","deprecated":false,"price":{"usd":0.0018},"accepts":["x402"],"responseShape":"legacy","params":{"type":"object","properties":{"device":{"type":"string","minLength":2,"maxLength":120,"description":"Device name / product-description substring."},"firm":{"type":"string","minLength":2,"maxLength":120,"description":"Recalling firm (manufacturer) name substring."},"classification":{"type":"string","enum":["I","II","III"],"description":"Recall classification: I, II, or III."},"status":{"type":"string","enum":["Ongoing","Completed","Terminated","Pending"],"description":"Recall status."},"state":{"type":"string","minLength":2,"maxLength":2,"description":"2-letter state of the recalling firm."},"limit":{"type":"integer","minimum":1,"maximum":100,"default":10}},"additionalProperties":false}}]},{"id":"medical.device-udi","group":"medical","description":"FDA GUDID (Global Unique Device Identification Database) lookup — identify a marketed medical device from its UDI or by brand/company. Search by UDI/device identifier, brand name, or company name and get back the device description, version/model number, prescription vs OTC, single-use/kit/combination-product flags, MRI safety, sterilization, commercial-distribution status, publish date, the device identifiers (with issuing agency — GS1/HIBCC/ICCBBA), FDA product codes, and GMDN terms. Free, public-domain US government data. The canonical \"what device is this UDI\" lookup for supply-chain, clinical, and recall-matching agents; point-in-time public records.","versions":[{"version":null,"path":"/api/medical/device-udi","method":"GET","deprecated":false,"price":{"usd":0.0018},"accepts":["x402"],"responseShape":"legacy","params":{"type":"object","properties":{"device":{"type":"string","minLength":2,"maxLength":120},"company":{"type":"string","minLength":2,"maxLength":120},"udi":{"type":"string","minLength":4,"maxLength":80},"limit":{"type":"integer","minimum":1,"maximum":50,"default":10}},"additionalProperties":false}}]},{"id":"medical.drug-approval","group":"medical","description":"FDA drug approval history from Drugs@FDA — the official record of FDA-approved drug applications. Give a drug name (brand or generic), an FDA application number (e.g. NDA021436), or a sponsor name, and get back each application with its products (brand name, active ingredients + strengths, dosage form, route, marketing status, therapeutic-equivalence code, reference-drug flag) and its full submission history (original approvals, supplements, status + status date, review priority). Free, public-domain US government data. The authoritative \"is this drug FDA-approved, by whom, when, and in what formulations\" record — point-in-time public records, not medical advice.","versions":[{"version":null,"path":"/api/medical/drug-approval","method":"GET","deprecated":false,"price":{"usd":0.0018},"accepts":["x402"],"responseShape":"legacy","params":{"type":"object","properties":{"drug":{"type":"string","minLength":2,"maxLength":120},"applicationNumber":{"type":"string","minLength":3,"maxLength":20},"sponsor":{"type":"string","minLength":2,"maxLength":120},"limit":{"type":"integer","minimum":1,"maximum":50,"default":5}},"additionalProperties":false}}]},{"id":"medical.drug-label","group":"medical","description":"Authoritative FDA drug label (Structured Product Labeling). Give a drug name (brand, generic, or substance), or an exact NDC, RxCUI, or SPL set_id, and get back the FDA-approved label split into the sections agents need: boxed warning, indications and usage, dosage and administration, contraindications, warnings, adverse reactions, drug interactions, use in specific populations, pregnancy, mechanism of action, and active/inactive ingredients. Each record also carries identity metadata (brand/generic names, manufacturer, NDCs, RxCUIs, route, DEA schedule, OTC vs prescription) plus a hasBoxedWarning flag. Free, public-domain US government data. Point-in-time public records, not medical advice. Use for prescribing-support, pharmacy, and clinical agents that must read the real label rather than guess it.","versions":[{"version":null,"path":"/api/medical/drug-label","method":"GET","deprecated":false,"price":{"usd":0.0018},"accepts":["x402"],"responseShape":"legacy","params":{"type":"object","properties":{"drug":{"type":"string","minLength":2,"maxLength":120,"description":"Drug name — brand, generic, or substance."},"ndc":{"type":"string","minLength":3,"maxLength":20,"description":"Exact product NDC."},"rxcui":{"type":"string","pattern":"^\\d{1,9}$","description":"Exact RxNorm RxCUI."},"setId":{"type":"string","minLength":8,"maxLength":80,"description":"Exact SPL set_id."},"limit":{"type":"integer","minimum":1,"maximum":25,"default":1,"description":"Max labels returned."}},"additionalProperties":false}}]},{"id":"medical.drug-price","group":"medical","description":"Look up US drug pricing from CMS NADAC (National Average Drug Acquisition Cost) — the benchmark per-unit acquisition cost CMS surveys from retail pharmacies and publishes weekly. Pass ndc (11-digit National Drug Code) for an exact product, or name (drug name/description keyword, e.g. 'atorvastatin 10 mg') to search. Returns rows with the NDC, description, nadacPerUnit (USD per pricing unit), pricingUnit (EA/ML/GM), effectiveDate, OTC flag, and brand/generic classification — most recent effective date first. Real surveyed acquisition costs instead of model-guessed prices. Public domain; the current-year dataset is resolved automatically. NADAC is an acquisition-cost benchmark, not a retail or insured price.","versions":[{"version":null,"path":"/api/medical/drug-price","method":"GET","deprecated":false,"price":{"usd":0.00144},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"ndc":{"type":"string","minLength":3,"maxLength":20},"name":{"type":"string","minLength":2,"maxLength":80},"limit":{"type":"integer","minimum":1,"maximum":100}},"additionalProperties":false}}]},{"id":"medical.drug-status","group":"medical","description":"One-call drug situational awareness. Give a drug name (resolved to a canonical RxCUI via NIH RxNorm), or an exact rxcui or ndc you already hold, and get back: whether it is currently in FDA shortage, any open or recent FDA recalls, and FDA NDC-directory metadata (labeler, DEA schedule, pharmaceutical class, marketing status). Returns a resolved identity block plus hasCurrentShortage / hasOpenRecall booleans and one found/error block per source (shortages, ndc, recalls). Composition of NIH RxNorm + OpenFDA drug-shortages, NDC directory, and recall enforcement — all free, public-domain US government data; each source degrades independently. Point-in-time public records, not medical advice. Use for pharmacy/supply-chain triage, prescribing-support agents, and verifying a drug is real, scheduled, and available before acting.","versions":[{"version":null,"path":"/api/medical/drug-status","method":"GET","deprecated":false,"price":{"usd":0.006},"accepts":["x402"],"responseShape":"legacy","params":{"type":"object","properties":{"drug":{"type":"string","minLength":2,"maxLength":120},"rxcui":{"type":"string","pattern":"^\\d{1,9}$"},"ndc":{"type":"string","minLength":3,"maxLength":20},"limit":{"type":"integer","minimum":1,"maximum":50,"default":10}},"additionalProperties":false}}]},{"id":"medical.genetics","group":"medical","description":"MedlinePlus Genetics (US National Library of Medicine) reference on a genetic condition or gene. Give a term (e.g. \"cystic fibrosis\", \"BRCA1\", \"sickle cell\") and get back the authoritative NLM record: the condition/gene name, a plain-language summary, the full set of sections (description, causes, frequency, inheritance, treatment), the inheritance pattern(s), related genes (with links), synonyms, and cross-references to other databases (OMIM, GTR, ICD-10-CM, …). Free, public-domain (NLM). Authoritative genetics reference an LLM cannot recite reliably — for clinical, patient-education, and research agents. Educational reference, not medical advice.","versions":[{"version":null,"path":"/api/medical/genetics","method":"GET","deprecated":false,"price":{"usd":0.00108},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"term":{"type":"string","minLength":2,"maxLength":100,"description":"Condition or gene name."}},"required":["term"],"additionalProperties":false}}]},{"id":"medical.icd10","group":"medical","description":"Verify and search ICD-10-CM diagnosis codes against the official US code set (FY2026, ~98k entries). Pass code (with or without the dot, e.g. E11.9 or E119) to confirm the code exists and list its more-specific child codes, or q to keyword-search code descriptions (e.g. \"type 2 diabetes neuropathy\"). Optional billable_only=true restricts results to codes valid for claim submission; limit caps results (1-50, default 10). Returns a verified flag, the exact match if any, and matched codes with billable status plus short and long descriptions. Data: CMS/NCHS ICD-10-CM (public domain), refreshed each US fiscal year. Use to confirm diagnosis codes are real and current before placing them in claims, prior authorizations, or clinical documents.","versions":[{"version":null,"path":"/api/medical/icd10","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"code":{"type":"string","minLength":3,"maxLength":9,"pattern":"^[A-Za-z][0-9][0-9A-Za-z](\\.?[0-9A-Za-z]{0,4})$","description":"ICD-10-CM code to verify, with or without the dot (e.g. E11.9 or E119). Returns the exact match plus more-specific child codes. Provide either code or q, not both."},"q":{"type":"string","minLength":3,"maxLength":120,"description":"Keyword search over official code descriptions (e.g. \"type 2 diabetes neuropathy\"). Every word must match. Provide either code or q, not both."},"billable_only":{"type":"boolean","description":"When true, only return codes valid for claim submission (excludes category headers)."},"limit":{"type":"integer","minimum":1,"maximum":50,"description":"Maximum codes returned (1-50, default 10)."}},"additionalProperties":false}}]},{"id":"medical.npi","group":"medical","description":"Look up US healthcare providers in the CMS NPPES registry — the authoritative directory of National Provider Identifiers (NPIs). Give an exact 10-digit NPI, or search by provider last name (+ optional first name), or organization name, optionally narrowed by state and taxonomy/specialty. Returns each provider with NPI, entity type (individual vs organization), status, name/credential/gender or organization name, sole-proprietor flag, enumeration + last-updated dates, primary taxonomy, the full taxonomy list (code, description, primary flag, state license), and practice/mailing addresses with phone. Free, public-domain (CMS). The canonical \"who is this NPI / find this provider\" lookup for healthcare, claims, and credentialing agents.","versions":[{"version":null,"path":"/api/medical/npi","method":"GET","deprecated":false,"price":{"usd":0.00108},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"npi":{"type":"string","pattern":"^\\d{10}$"},"firstName":{"type":"string","minLength":1,"maxLength":60},"lastName":{"type":"string","minLength":1,"maxLength":60},"organization":{"type":"string","minLength":2,"maxLength":120},"state":{"type":"string","minLength":2,"maxLength":2},"taxonomy":{"type":"string","minLength":2,"maxLength":80},"limit":{"type":"integer","minimum":1,"maximum":50}},"additionalProperties":false}}]},{"id":"medical.provider-id-resolve","group":"medical","description":"Resolve a 10-digit NPI to the provider identity plus a fully decoded specialty profile in one call: entity type, name/organization, status, the primary specialty (NUCC grouping + classification + display name), and every taxonomy on the record decoded the same way -- with primary flag, practice state, and license. Combines the NPPES lookup (medical.npi) with the NUCC specialty decode (medical.taxonomy-specialty) so a claims, credentialing, or referral agent gets \"who is this NPI and what do they actually do\" without a second call. Data: CMS NPPES + NUCC (US public domain). Note: the facility CCN (CMS Certification Number) requires a separate CMS enrollment crosswalk and is returned null (DEFERRED) rather than guessed.","versions":[{"version":null,"path":"/api/medical/provider-id-resolve","method":"GET","deprecated":false,"price":{"usd":0.0036},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"npi":{"type":"string","pattern":"^\\d{10}$","description":"10-digit National Provider Identifier."}},"required":["npi"],"additionalProperties":false}}]},{"id":"medical.rxnorm","group":"medical","description":"Normalize and verify drug names against RxNorm, the canonical US drug vocabulary from the NIH. Two modes: term (\"tylenol 500mg\", brand or generic, typos tolerated) returns ranked RxCUI candidates with normalized names and match scores; rxcui returns the canonical concept (name, term type like IN=ingredient / SBD=branded drug / SCD=clinical drug, suppression flag) plus related concepts — active ingredients, brand names, and available dose forms. Use before writing prescriptions data, drug interactions queries, or pharmacy integrations: verify the drug exists and get its stable identifier instead of trusting model memory. Sibling: /api/medical/icd10 (diagnosis codes). Public-domain NIH data.","versions":[{"version":null,"path":"/api/medical/rxnorm","method":"GET","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"term":{"type":"string","minLength":2,"maxLength":200,"description":"Free-text drug name. Provide term or rxcui, not both."},"rxcui":{"type":"string","pattern":"^\\d{1,8}$"},"limit":{"type":"integer","minimum":1,"maximum":20,"default":5}},"additionalProperties":false}}]},{"id":"medical.taxonomy-specialty","group":"medical","description":"Resolve a NUCC Health Care Provider Taxonomy code -- the specialty code returned by medical.npi and printed on every NPPES record -- into its human specialty: grouping (top level, e.g. \"Allopathic & Osteopathic Physicians\"), classification (e.g. \"Anesthesiology\"), specialization, the official display name, and the section (Individual vs Non-Individual). The decode step every claims, credentialing, and provider-directory agent needs to turn an opaque 10-char taxonomy code into a readable specialty. Data: NUCC code set (public domain), bundled and version-pinned. Note: the CMS Medicare 2-char physician-specialty crosswalk is published only as a PDF, so medicareSpecialty is returned null (DEFERRED) rather than guessed.","versions":[{"version":null,"path":"/api/medical/taxonomy-specialty","method":"GET","deprecated":false,"price":{"usd":0.0036},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"code":{"type":"string","pattern":"^[0-9A-Za-z]{10}$","description":"NUCC taxonomy code, e.g. 207L00000X."}},"required":["code"],"additionalProperties":false}}]},{"id":"music.artist","group":"music","description":"Resolve a music artist from MusicBrainz (CC0). Pass a name (or free-text/Lucene query). Returns ranked artists with MusicBrainz ID (MBID), name, sort name, type (Person/Group), country, gender, life span (begin/end/ended), and disambiguation. Keyless, public-domain core data. Use to canonicalize an artist to its MBID.","versions":[{"version":null,"path":"/api/music/artist","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"name":{"type":"string","maxLength":200},"query":{"type":"string","maxLength":300},"limit":{"type":"integer","minimum":1,"maximum":25}},"additionalProperties":false}}]},{"id":"music.recording","group":"music","description":"Resolve a song/recording from MusicBrainz (the open, CC0 music encyclopedia). Pass artist + title, or a free-text query (Lucene supported). Returns ranked recordings with MusicBrainz ID (MBID), title, primary artist, length (ms), first-release date, and disambiguation. Keyless, public-domain core data. Use to canonicalize a track to its MBID or cross-reference identity.","versions":[{"version":null,"path":"/api/music/recording","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"artist":{"type":"string","maxLength":200},"title":{"type":"string","maxLength":200},"query":{"type":"string","maxLength":300},"limit":{"type":"integer","minimum":1,"maximum":25}},"additionalProperties":false}}]},{"id":"music.release","group":"music","description":"Resolve an album/release from MusicBrainz (CC0). Pass a barcode (UPC/EAN), or artist + album, or a free-text query. Returns ranked releases with MusicBrainz ID (MBID), title, primary artist, release date, country, barcode, status, track count, label, and catalog number. Keyless, public-domain core data. Barcode → album is the differentiated lookup (resolve a physical product to its metadata).","versions":[{"version":null,"path":"/api/music/release","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"barcode":{"type":"string","pattern":"^\\d{6,14}$"},"artist":{"type":"string","maxLength":200},"album":{"type":"string","maxLength":200},"query":{"type":"string","maxLength":300},"limit":{"type":"integer","minimum":1,"maximum":25}},"additionalProperties":false}}]},{"id":"net.asn","group":"net","description":"Look up an Autonomous System (BGP) by AS number. Pass asn as AS3333 or 3333. Returns the AS holder/operator name, the IANA/RIR allocation block it falls in, whether it is currently announced, and a live routing-status block: first/last seen prefixes, announced IPv4/IPv6 prefix + address counts, RIS peer visibility, and observed BGP neighbour count. Data: RIPEstat (RIPE NCC), free and public. Distinct from geo.ip (host geolocation) and dns/whois (name lookups) — this is who-owns-and-routes-this-AS, observed live from the global routing table. For network forensics, abuse/security triage, and infrastructure mapping.","versions":[{"version":null,"path":"/api/net/asn","method":"GET","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"legacy","params":{"type":"object","properties":{"asn":{"type":"string","minLength":1,"maxLength":15,"description":"AS number, e.g. AS3333 or 3333."}},"required":["asn"],"additionalProperties":false}}]},{"id":"net.ip-resolve","group":"net","description":"Resolve a single IPv4/IPv6 address to its full network identity in one call: the Autonomous System number, the authoritative AS holder/operator (RIPEstat), the ISP + organization, whether the AS is currently announced, the RIR/IANA allocation block the AS sits in, and country/region/city + coordinates + timezone. One join that turns an IP into \"who runs this network and where\" -- the lookup network-forensics, abuse triage, and fraud agents otherwise stitch together from a geo API plus a separate BGP source. Composes geo IP data + RIPEstat (RIPE NCC, CC BY 4.0); the routing/holder block degrades independently, with per-source status returned. Distinct from net.asn (AS-number first) and geo.ip (geo only): this is IP-first and joins both.","versions":[{"version":null,"path":"/api/net/ip-resolve","method":"GET","deprecated":false,"price":{"usd":0.0036},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"ip":{"type":"string","pattern":"^(\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}|[0-9a-fA-F:]+)$","minLength":2,"maxLength":45,"description":"IPv4 or IPv6 address, e.g. 8.8.8.8."}},"required":["ip"],"additionalProperties":false}}]},{"id":"net.mac-vendor","group":"net","description":"Resolve a MAC address (or bare OUI prefix) to its IEEE-registered hardware vendor. Accepts any common format — FC:FB:FB:01:02:03, fc-fb-fb-01-02-03, fcfb.fb01.0203, fcfbfb, or a 9-hex MA-S prefix. Uses longest-prefix matching across the IEEE MA-L (24-bit), MA-M (28-bit) and MA-S (36-bit) registries so blocks IEEE has subdivided resolve to the actual manufacturer. Returns the vendor name, the matched OUI prefix and which registry it came from, plus decoded address bits: whether the address is multicast/group, locally administered, or a randomized (privacy) MAC — for which no vendor exists by design. Authoritative bundled IEEE data.","versions":[{"version":null,"path":"/api/net/mac-vendor","method":"GET","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"legacy","params":{"type":"object","properties":{"mac":{"type":"string","minLength":1,"maxLength":64,"description":"MAC address or OUI prefix, e.g. FC:FB:FB:01:02:03 or fcfbfb."}},"required":["mac"],"additionalProperties":false}}]},{"id":"net.rpki-validity","group":"net","description":"RPKI Route Origin Validation for a (BGP origin AS, prefix) pair — answers whether an AS is legitimately authorized to originate a prefix. Pass asn (e.g. AS15169) and prefix (CIDR, e.g. 8.8.8.0/24). Returns status (valid = a ROA authorizes it; invalid = a ROA exists but does NOT authorize this origin — a possible hijack/route-leak that RPKI-enforcing networks will drop; unknown = no covering ROA), a hijackSignal boolean, the validating ROAs (origin, prefix, maxLength), and a plain-English description. Live RIR/RPKI data via RIPEstat (keyless) — un-derivable by an LLM. The core BGP-security check; complements net.asn.","versions":[{"version":null,"path":"/api/net/rpki-validity","method":"GET","deprecated":false,"price":{"usd":0.00144},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"asn":{"type":"string","minLength":1,"maxLength":20},"prefix":{"type":"string","minLength":4,"maxLength":49}},"required":["asn","prefix"],"additionalProperties":false}}]},{"id":"news.hn-item","group":"news","description":"Fetch a specific Hacker News item (story, comment, job, poll) by its numeric ID. Returns id, type, author, time (unix + ISO), title, URL, text, score, descendant count, kid count, parent (for comments), dead/deleted flags, canonical news.ycombinator.com URL.","versions":[{"version":null,"path":"/api/news/hn-item","method":"GET","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"id":{"type":"integer","minimum":1,"maximum":1000000000}},"required":["id"],"additionalProperties":false}}]},{"id":"news.hn-search","group":"news","description":"Full-text search across all of Hacker News (via the Algolia HN API). Search stories or comments by keyword, sorted by relevance or by date (newest first). Filter by tags (story/comment/ask_hn/show_hn/poll) and by author. Each hit: title, URL, author, points, comment count, story/comment text, created time, and canonical HN URL. Net-new vs news.hn-top (curated feeds) and news.search (general news).","versions":[{"version":null,"path":"/api/news/hn-search","method":"GET","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"query":{"type":"string","maxLength":400,"description":"Search keywords (may be empty when filtering by tags/author).","default":""},"tags":{"type":"string","enum":["story","comment","ask_hn","show_hn","poll"]},"sort":{"type":"string","enum":["relevance","date"]},"author":{"type":"string","maxLength":40,"description":"Restrict to one HN author."},"limit":{"type":"integer","minimum":1,"maximum":50}},"additionalProperties":false}}]},{"id":"news.hn-top","group":"news","description":"Hacker News feed of items. Pass kind = top (default) | new | best | ask | show | job to pick the feed. Returns each item's id, type, author, time (unix + ISO), title, URL, text (for self-posts), score, descendant + kid counts, parent (for comments), dead/deleted flags, and canonical news.ycombinator.com URL. Default limit = 30, max 100. Useful for tech-sentiment + topic tracking.","versions":[{"version":null,"path":"/api/news/hn-top","method":"GET","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"kind":{"type":"string","enum":["top","new","best","ask","show","job"],"default":"top"},"limit":{"type":"integer","minimum":1,"maximum":100,"default":30}},"additionalProperties":false}}]},{"id":"news.hn-user","group":"news","description":"Hacker News user profile by username. Returns id, account creation time (unix + ISO), karma, the about/bio text, number of items submitted, and the canonical news.ycombinator.com profile URL. Unknown user returns an empty result.","versions":[{"version":null,"path":"/api/news/hn-user","method":"GET","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"username":{"type":"string","minLength":1,"maxLength":40,"description":"HN username, e.g. pg, dang."}},"required":["username"],"additionalProperties":false}}]},{"id":"news.search","group":"news","description":"Live news search. Returns recent headlines with title, URL, snippet, publisher source, relative age, and a breaking-news flag — real-time coverage past any model training cutoff. Supports count (1-20), offset, country (2-letter), and freshness (pd=past day, pw=past week, pm=past month, py=past year). Use for current events, market-moving developments, monitoring, and \"what happened with X\" questions. For general web results see /api/search/web; for Hacker News specifically see /api/news/hn-top.","versions":[{"version":null,"path":"/api/news/search","method":"GET","deprecated":false,"price":{"usd":0.009},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"q":{"type":"string","minLength":1,"maxLength":400,"description":"News query."},"count":{"type":"integer","minimum":1,"maximum":20,"default":10},"offset":{"type":"integer","minimum":0,"maximum":9,"default":0},"country":{"type":"string","pattern":"^[a-zA-Z]{2}$"},"freshness":{"type":"string","enum":["pd","pw","pm","py"]}},"required":["q"],"additionalProperties":false}}]},{"id":"nonprofit.screen","group":"nonprofit","description":"Look up US 501(c) nonprofits and screen each result against the OFAC sanctions list in one call. Pass q (organization name) or ein; each matched organization returns its registry record (EIN, name, location, NTEE code, subsection) plus a sanctions block — flagged status, match count, and the matching SDN entries with confidence scores. Grant-making due diligence, donation compliance, and charity-fraud triage. Components also standalone: /api/nonprofit/search (registry only) and /api/law/sanctions-check (screen any name). Same composition family as /api/business/entity-screen.","versions":[{"version":null,"path":"/api/nonprofit/screen","method":"GET","deprecated":false,"price":{"usd":0.00504},"accepts":["x402"],"responseShape":"legacy","params":{"type":"object","properties":{"q":{"type":"string","minLength":2,"maxLength":120,"description":"Organization name. Provide q or ein, not both."},"ein":{"type":"string","pattern":"^\\d{9}$"},"limit":{"type":"integer","minimum":1,"maximum":10,"default":5}},"additionalProperties":false}}]},{"id":"nonprofit.search","group":"nonprofit","description":"US 501(c) nonprofit organization search. Lookup by 9-digit EIN (with or without hyphen), free-text name, 2-letter state, NTEE category code (e.g. 'B99' for education), or IRS subsection code (3 = 501(c)(3), 4 = 501(c)(4), etc.). Each record includes EIN, name, city/state, NTEE code, subsection code + human-readable subsection description (e.g. '501(c)(3) Charitable / Religious / Educational'), and relevance score. Sourced from ProPublica Nonprofit Explorer, which aggregates IRS Form 990 + BMF data; underlying IRS data is public domain.","versions":[{"version":null,"path":"/api/nonprofit/search","method":"GET","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"q":{"type":"string","minLength":2,"maxLength":200},"ein":{"type":"string","minLength":9,"maxLength":11,"pattern":"^\\d{2}-?\\d{7}$"},"state":{"type":"string","minLength":2,"maxLength":2,"pattern":"^[A-Za-z]{2}$"},"nteeCode":{"type":"string","pattern":"^[A-Za-z][0-9]{1,3}$"},"subsectionCode":{"type":"integer","minimum":2,"maximum":92},"page":{"type":"integer","minimum":0,"maximum":99,"default":0}},"additionalProperties":false}}]},{"id":"nutrition.food","group":"nutrition","description":"USDA FoodData Central nutrition lookup. Two modes: search (query=cheddar cheese) returns matching foods with fdcId, description, data type, category, and brand; detail (fdcId=328637) returns the full analyzed nutrient profile — energy, protein, fats, carbohydrates, vitamins, minerals — with USDA nutrient numbers, amounts, and units (per 100 g/ml unless serving fields indicate otherwise), plus ingredients for branded foods. Filter search by dataType: Foundation and SR Legacy are lab-analyzed generic foods, Branded is the packaged-food label corpus, Survey (FNDDS) is as-consumed dishes. Authoritative USDA data covering ~400k foods — use real analyzed values instead of model-estimated nutrition facts.","versions":[{"version":null,"path":"/api/nutrition/food","method":"GET","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"query":{"type":"string","minLength":2,"maxLength":120,"description":"Food name to search, e.g. \"cheddar cheese\". Provide query or fdcId, not both."},"fdcId":{"type":"integer","exclusiveMinimum":true,"minimum":0,"description":"FDC food id — returns the full nutrient profile."},"dataType":{"type":"string","enum":["Foundation","SR Legacy","Survey (FNDDS)","Branded"],"description":"Restrict search to one data type. Foundation/SR Legacy = analyzed generic foods, Branded = packaged labels, Survey (FNDDS) = as-consumed dishes."},"limit":{"type":"integer","minimum":1,"maximum":50,"default":10},"page":{"type":"integer","minimum":1,"default":1}},"additionalProperties":false}}]},{"id":"occupation.profile","group":"occupation","description":"Full occupation dossier from O*NET (US DOL) by SOC / O*NET-SOC code (e.g. 15-1252 or 15-1252.00). Returns title, description, bright-outlook flag, sample reported job titles, and the top skills, knowledge areas, abilities, work tasks, and technology skills/tools. CC-BY (O*NET attribution in source). The canonical occupation reference an agent needs for résumé/JD reasoning, career mapping, and skills analysis — pair the code with labor.wages for pay.","versions":[{"version":null,"path":"/api/occupation/profile","method":"GET","deprecated":false,"price":{"usd":0.00144},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"code":{"type":"string","minLength":6,"maxLength":12}},"required":["code"],"additionalProperties":false}}]},{"id":"occupation.related","group":"occupation","description":"Occupations related to a given O*NET occupation (career-adjacent roles), by SOC / O*NET-SOC code. Returns ranked related occupations with code + title. CC-BY (O*NET). For career-pathing, \"adjacent roles\", and transferable-skills reasoning.","versions":[{"version":null,"path":"/api/occupation/related","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"code":{"type":"string","minLength":6,"maxLength":12},"limit":{"type":"integer","minimum":1,"maximum":50}},"required":["code"],"additionalProperties":false}}]},{"id":"occupation.search","group":"occupation","description":"Find O*NET occupations by keyword (job title, skill, or activity). Returns ranked occupations with their SOC / O*NET-SOC code and title. CC-BY (O*NET). The \"what is the occupation code for this job/skill\" primitive — every other occupation.* and labor.wages call composes on the returned code.","versions":[{"version":null,"path":"/api/occupation/search","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"keyword":{"type":"string","minLength":2,"maxLength":100},"limit":{"type":"integer","minimum":1,"maximum":50}},"required":["keyword"],"additionalProperties":false}}]},{"id":"paper.doi-lookup","group":"paper","description":"Resolve a DOI to authoritative bibliographic metadata via Crossref. Accepts bare DOI (10.1038/nature12373) or full DOI URL (https://doi.org/10.1038/nature12373). Returns work type, title, container (journal/conference), publisher, issued/published dates, abstract, authors (with ORCID + affiliations), page range, volume/issue, ISBN + ISSN lists, canonical URL, reference + citation counts, license blocks, and subject classifications. ~160M works in Crossref. Best authoritative DOI → bibliographic resolver. Metadata is CC0.","versions":[{"version":null,"path":"/api/paper/doi-lookup","method":"GET","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"doi":{"type":"string","minLength":7,"maxLength":300}},"required":["doi"],"additionalProperties":false}}]},{"id":"papers.search","group":"papers","description":"Unified scientific literature search across arXiv (preprints), PubMed (biomedical), and Semantic Scholar (cross-field, with citation counts). Returns a flat array of papers with stable schema: source, sourceId, doi, title, authors, abstract, year, publishedAt, citationCount, url, pdfUrl. Partial failures surface in the errors array rather than failing the whole call. Optional filters: since (YYYY-MM-DD), sources (subset), limit (max 20 per source).","versions":[{"version":null,"path":"/api/papers/search","method":"GET","deprecated":false,"price":{"usd":0.0024},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"q":{"type":"string","minLength":1,"maxLength":500},"limit":{"type":"integer","minimum":1,"maximum":20,"default":10},"since":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"sources":{"type":"string"}},"required":["q"],"additionalProperties":false}}]},{"id":"park.lookup","group":"park","description":"Unified read API over US National Park Service developer.nps.gov. Pick a resource: parks (every NPS unit — historical parks, monuments, seashores, etc.), alerts (closures, dangers, info), campgrounds (NPS-operated campgrounds with reservation links), events (talks, walks, ranger programs), newsreleases (park news), thingstodo (activities by park), visitorcenters. Filter by parkCode (CSV — e.g. \"acad,yose,grca\"), state, or free-text query. Returns the upstream NPS payload verbatim (rich nested objects with images, addresses, operating hours, etc.).","versions":[{"version":null,"path":"/api/park/lookup","method":"GET","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"resource":{"type":"string","enum":["parks","alerts","campgrounds","events","newsreleases","thingstodo","visitorcenters"]},"parkCode":{"type":"string","pattern":"^[a-z]{2,4}(,[a-z]{2,4})*$"},"state":{"type":"string","minLength":2,"maxLength":2,"pattern":"^[A-Za-z]{2}$"},"q":{"type":"string","minLength":1,"maxLength":120},"limit":{"type":"integer","minimum":1,"maximum":50,"default":10},"start":{"type":"integer","minimum":0,"default":0}},"required":["resource"],"additionalProperties":false}}]},{"id":"patents.detail","group":"patents","description":"Full US patent application file-wrapper detail by application number. Returns bibliographic data (title, inventors, applicants, dates, status, examiner, art unit, docket #, confirmation #) plus the file-wrapper event timeline (filing, IDS, Office Actions, allowance, abandonment, …), continuity chain (parent / continuation / divisional / national stage), recorded assignments (assignor → assignee with reel/frame + conveyance text), and foreign priority claims under 35 USC § 119. Application number is the 6-10 digit USPTO ID (e.g. 18566276).","versions":[{"version":null,"path":"/api/patents/detail","method":"GET","deprecated":false,"price":{"usd":0.0018},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"applicationNumber":{"type":"string","pattern":"^[0-9]{6,10}$"}},"required":["applicationNumber"],"additionalProperties":false}}]},{"id":"patents.documents","group":"patents","description":"List every document in the file wrapper for a US patent application. Returns each document with its USPTO code (e.g. CTNF non-final OA, CTFR final OA, IDS, WCLM claims worksheet, NOA notice of allowance), human-readable description, official date, direction (INTERNAL/INCOMING/OUTGOING), and available formats with page counts. Includes patentCenterUrl pointing at the public USPTO Patent Center documents page for direct PDF download. Application number is the 6-10 digit USPTO ID.","versions":[{"version":null,"path":"/api/patents/documents","method":"GET","deprecated":false,"price":{"usd":0.0018},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"applicationNumber":{"type":"string","pattern":"^[0-9]{6,10}$"}},"required":["applicationNumber"],"additionalProperties":false}}]},{"id":"patents.epo-biblio","group":"patents","description":"Bibliographic record for a patent publication via EPO OPS: invention titles (multiple languages), applicants, inventors, IPC classifications, application number, and the abstract. Worldwide coverage by publication number (e.g. EP1000000, US6093011). Net-new vs US-only patents.detail.","versions":[{"version":null,"path":"/api/patents/epo-biblio","method":"GET","deprecated":false,"price":{"usd":0.0018},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"number":{"type":"string","minLength":2,"maxLength":40,"description":"Publication number, e.g. EP1000000 or US6093011."},"format":{"type":"string","enum":["epodoc","docdb","original"],"description":"Number format (default epodoc, e.g. EP1000000 or US20260170385)."}},"required":["number"],"additionalProperties":false}}]},{"id":"patents.epo-family","group":"patents","description":"INPADOC patent family for a publication via EPO OPS — every worldwide equivalent of the same invention (same priority), each with country, document number, kind code, and combined publication number. Use it to find where a patent was also filed/granted globally. Net-new (no US-only equivalent).","versions":[{"version":null,"path":"/api/patents/epo-family","method":"GET","deprecated":false,"price":{"usd":0.0018},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"number":{"type":"string","minLength":2,"maxLength":40,"description":"Publication number, e.g. EP1000000."},"format":{"type":"string","enum":["epodoc","docdb","original"],"description":"Number format (default epodoc, e.g. EP1000000 or US20260170385)."}},"required":["number"],"additionalProperties":false}}]},{"id":"patents.epo-legal","group":"patents","description":"INPADOC legal-status events for a patent publication via EPO OPS: the timeline of procedural events (examination, grant, designations, national-phase entries, lapses, withdrawals) each with an event code, description, and date. For tracking whether a patent is in force, granted, or lapsed. Net-new.","versions":[{"version":null,"path":"/api/patents/epo-legal","method":"GET","deprecated":false,"price":{"usd":0.0018},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"number":{"type":"string","minLength":2,"maxLength":40,"description":"Publication number, e.g. EP1000000."},"format":{"type":"string","enum":["epodoc","docdb","original"],"description":"Number format (default epodoc, e.g. EP1000000 or US20260170385)."}},"required":["number"],"additionalProperties":false}}]},{"id":"patents.epo-search","group":"patents","description":"Search worldwide patent publications via the European Patent Office's Open Patent Services (OPS). Pass a CQL query (e.g. ti=quantum computing, in=tesla, pa=siemens, cpc=H01M, pn=EP1000000) and get matching publications with country, document number, kind code, and a combined publication number, plus the total result count. Covers EP + 100+ patent authorities worldwide — net-new vs our US-only patents.search.","versions":[{"version":null,"path":"/api/patents/epo-search","method":"GET","deprecated":false,"price":{"usd":0.0018},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"q":{"type":"string","minLength":2,"maxLength":400,"description":"CQL query, e.g. \"ti=quantum computing\" or \"pa=siemens and cpc=H01M\"."},"limit":{"type":"integer","minimum":1,"maximum":100}},"required":["q"],"additionalProperties":false}}]},{"id":"patents.search","group":"patents","description":"Search US patent applications and grants via the USPTO Open Data Portal. Query: q (required, 2+ chars), yearFrom / yearTo (optional filing-year bounds), applicationType (optional: Utility|Design|Plant|Reissue), limit (1-100, default 10), offset (0-based, default 0). Returns { total, returned, offset, limit, hits[{ applicationNumber, title, applicationType, firstInventor, inventors[], applicants[], filingDate, effectiveFilingDate, status:{ code, description, updatedAt }, cpcSymbols[], uspcSymbol, url }] }. URLs link to USPTO Patent Center for the public file wrapper.","versions":[{"version":null,"path":"/api/patents/search","method":"GET","deprecated":false,"price":{"usd":0.0018},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"q":{"type":"string","minLength":2,"maxLength":500},"yearFrom":{"type":"integer","minimum":1790,"maximum":2100},"yearTo":{"type":"integer","minimum":1790,"maximum":2100},"applicationType":{"type":"string","enum":["Utility","Design","Plant","Reissue"]},"limit":{"type":"integer","minimum":1,"maximum":100,"default":10},"offset":{"type":"integer","minimum":0,"maximum":10000,"default":0}},"required":["q"],"additionalProperties":false}}]},{"id":"person.cross-registry","group":"person","description":"Sweep a person's name across five US public registries in one call: FINRA securities brokers, federal-court attorneys (CourtListener), federal inmates (BOP), Texas trade licenses (TDLR), and Texas real-estate licenses (TREC). Returns one block per registry with found/error status, match count, and the matching records — name-matched CANDIDATES, deliberately not merged into one identity (same name does not mean same person; verify with each registry's identifier before acting). Due-diligence, KYC screening triage, and background-research staple. Each registry is also a standalone endpoint (/api/license/broker, /api/law/attorney-lookup, /api/gov/inmate-locator, /api/license/trades, /api/license/real-estate) for follow-up by identifier.","versions":[{"version":null,"path":"/api/person/cross-registry","method":"GET","deprecated":false,"price":{"usd":0.0072},"accepts":["x402"],"responseShape":"legacy","params":{"type":"object","properties":{"name":{"type":"string","minLength":3,"maxLength":120,"pattern":"^[\\p{L}][\\p{L} .,'-]+$","description":"Person full name. \"First Last\" works best (the inmate registry needs split names)."},"limit":{"type":"integer","minimum":1,"maximum":10,"default":5}},"required":["name"],"additionalProperties":false}}]},{"id":"phone.normalize","group":"phone","description":"Parse, validate and canonicalize a phone number using Google's libphonenumber metadata. Query: number (required; E.164 like \"+14155552671\" or national like \"(415) 555-2671\"), country (optional ISO 3166-1 alpha-2 like US/GB/JP — required when number is not E.164). Returns {input, valid (matches a real number range), possible (right shape/length), e164, national, international, rfc3966, country, countryCallingCode, type (mobile|fixed_line|fixed_line_or_mobile|toll_free|premium_rate|shared_cost|voip|personal_number|pager|uan|voicemail|unknown), possibleCountries[]}. Returns valid:false (not an error) for unparseable input.","versions":[{"version":null,"path":"/api/phone/normalize","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"number":{"type":"string","minLength":1,"maxLength":40,"description":"Phone number to normalize. E.164 (+15555551234) or a national format if country is provided."},"country":{"type":"string","pattern":"^[A-Z]{2}$","description":"ISO 3166-1 alpha-2 country code (e.g. US, GB, JP). Required when number is not in E.164 form."}},"required":["number"],"additionalProperties":false}}]},{"id":"poi.near","group":"poi","description":"Find points of interest near a coordinate. Backed by OpenStreetMap via the Overpass API (free, public, ODbL). Returns name, OSM id (e.g. node/123 — deep-linkable to openstreetmap.org), latitude, longitude, distance in meters, composed street address (when present), phone, website, opening hours, brand, and cuisine tags. Results sorted nearest-first. Supported categories: restaurant, cafe, bar, fast_food, gas_station, ev_charging, parking, atm, bank, hospital, pharmacy, clinic, doctor, dentist, police, fire_station, post_office, library, toilets, school, university, supermarket, convenience, hotel, hostel, museum, attraction, park, playground. Query: lat (-90..90), lon (-180..180), category (one of the supported names), radius_m (1-10000, default 1000), limit (1-100, default 20).","versions":[{"version":null,"path":"/api/poi/near","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"lat":{"type":"number","minimum":-90,"maximum":90},"lon":{"type":"number","minimum":-180,"maximum":180},"category":{"type":"string","enum":["restaurant","cafe","bar","fast_food","gas_station","ev_charging","parking","atm","bank","hospital","pharmacy","clinic","doctor","dentist","police","fire_station","post_office","library","toilets","school","university","supermarket","convenience","hotel","hostel","museum","attraction","park","playground"]},"radius_m":{"type":"integer","minimum":1,"maximum":10000,"default":1000},"limit":{"type":"integer","minimum":1,"maximum":100,"default":20}},"required":["lat","lon","category"],"additionalProperties":false}}]},{"id":"predict.activity","group":"predict","description":"A wallet's Polymarket on-chain activity feed: trades, merges, splits, redeems, conversions and rewards, newest first. Pass the wallet (proxy) address; optionally filter by type (TRADE/MERGE/SPLIT/REDEEM/REWARD/CONVERSION) and cap with limit. Each entry returns type, side, outcome, share size, price, USD value, timestamp, the market title/slug, conditionId, and tx hash. Read-only from Polymarket's Data API.","versions":[{"version":null,"path":"/api/predict/activity","method":"GET","deprecated":false,"price":{"usd":0.0048},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"address":{"type":"string","minLength":8,"maxLength":60,"description":"Wallet (proxy) address."},"limit":{"type":"integer","minimum":1,"maximum":500,"description":"Max events (default 50)."},"type":{"type":"string","enum":["TRADE","MERGE","SPLIT","REDEEM","REWARD","CONVERSION"],"description":"Filter by activity type."}},"required":["address"],"additionalProperties":false}}]},{"id":"predict.crypto-updown","group":"predict","description":"Polymarket crypto up-or-down markets — the recurring 'Will <asset> be up or down by <time>?' series for BTC, ETH, SOL, SPX and more (hourly/daily). Each event returns its question, dates, USD volume, and the nested Up/Down markets with live outcome prices (implied probability the asset closes higher). Filter count with limit. Read-only mirror of Polymarket's up-or-down tag.","versions":[{"version":null,"path":"/api/predict/crypto-updown","method":"GET","deprecated":false,"price":{"usd":0.0048},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"limit":{"type":"integer","minimum":1,"maximum":100,"description":"Max events (default 20)."}},"additionalProperties":false}}]},{"id":"predict.events","group":"predict","description":"Browse Polymarket events (an event groups related markets — e.g. an election, a tournament, a price ladder). Optional keyword q, closed filter, order (volume/volume24hr/liquidity), and limit/offset. Each event returns its title, tags, USD volume + 24h volume, liquidity, dates, and the nested markets with their outcomes + live outcome prices (implied probabilities) and CLOB token ids. Read-only mirror of Polymarket's Gamma events.","versions":[{"version":null,"path":"/api/predict/events","method":"GET","deprecated":false,"price":{"usd":0.0048},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"q":{"type":"string","maxLength":120,"description":"Keyword filter on event title/description."},"limit":{"type":"integer","minimum":1,"maximum":100},"offset":{"type":"integer","minimum":0},"closed":{"type":"boolean"},"order":{"type":"string","enum":["volume","volume24hr","liquidity","startDate","endDate"]}},"additionalProperties":false}}]},{"id":"predict.holders","group":"predict","description":"Top holders of a Polymarket market, grouped by outcome token (conditionId). Each holder: wallet, trader name, position size, outcome index, and verified flag. Reveals concentration and smart-money positioning per outcome — the holder-side complement to predict.trades (flow) and predict.whales (large trades). Read-only from Polymarket's Data API.","versions":[{"version":null,"path":"/api/predict/holders","method":"GET","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"market":{"type":"string","minLength":8,"maxLength":80,"description":"Market conditionId (0x…) — from predict.markets / predict.market."},"limit":{"type":"integer","minimum":1,"maximum":100,"description":"Top holders per outcome (default 20)."}},"required":["market"],"additionalProperties":false}}]},{"id":"predict.kalshi-events","group":"predict","description":"Browse Kalshi events (an event groups related markets, e.g. an election or a game). Filter by status / series_ticker; page with limit + cursor. Returns event ticker, series, title, category, and market count. Read-only (no Kalshi key needed).","versions":[{"version":null,"path":"/api/predict/kalshi-events","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"limit":{"type":"integer","minimum":1,"maximum":100},"cursor":{"type":"string","maxLength":400},"status":{"type":"string","enum":["unopened","open","closed","settled"]},"seriesTicker":{"type":"string","maxLength":120}},"additionalProperties":false}}]},{"id":"predict.kalshi-market","group":"predict","description":"A single Kalshi market by ticker. Returns yes/no bid+ask and last price (dollars, implied probability), volume, liquidity, open interest, open/close times, and settled result. Read-only (no Kalshi key needed).","versions":[{"version":null,"path":"/api/predict/kalshi-market","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"ticker":{"type":"string","minLength":1,"maxLength":120}},"required":["ticker"],"additionalProperties":false}}]},{"id":"predict.kalshi-markets","group":"predict","description":"Browse Kalshi regulated prediction markets. Filter by status (open/closed/settled), event_ticker, series_ticker, or specific tickers; page with limit + cursor. Each market returns yes/no bid+ask and last price (in dollars, 0-1 = implied probability), 24h + total volume, liquidity, open interest, open/close times, and result if settled. Read-only mirror of Kalshi's market list (no Kalshi key needed).","versions":[{"version":null,"path":"/api/predict/kalshi-markets","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"limit":{"type":"integer","minimum":1,"maximum":100},"cursor":{"type":"string","maxLength":400},"eventTicker":{"type":"string","maxLength":120},"seriesTicker":{"type":"string","maxLength":120},"status":{"type":"string","enum":["unopened","open","closed","settled"]},"tickers":{"type":"string","maxLength":400,"description":"Comma-separated tickers."}},"additionalProperties":false}}]},{"id":"predict.kalshi-orderbook","group":"predict","description":"Order book for a Kalshi market by ticker: resting yes and no bids with price (dollars) and size (contracts). Optional depth. Read-only (no Kalshi key needed).","versions":[{"version":null,"path":"/api/predict/kalshi-orderbook","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"ticker":{"type":"string","minLength":1,"maxLength":120},"depth":{"type":"integer","minimum":1,"maximum":100}},"required":["ticker"],"additionalProperties":false}}]},{"id":"predict.kalshi-trades","group":"predict","description":"Recent trades on Kalshi, optionally filtered to one market ticker. Returns each trade's ticker, contract count, taker side, yes/no price (dollars), and time. Page with limit + cursor. Read-only (no Kalshi key needed).","versions":[{"version":null,"path":"/api/predict/kalshi-trades","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"ticker":{"type":"string","maxLength":120},"limit":{"type":"integer","minimum":1,"maximum":100},"cursor":{"type":"string","maxLength":400}},"additionalProperties":false}}]},{"id":"predict.leaderboard","group":"predict","description":"Polymarket smart-wallet leaderboard: top traders ranked by realized volume or profit (P&L). Choose the time window (1d/7d/30d/all) and rankBy (vol/pnl); cap with limit. Each entry returns rank, wallet (proxy) address, trader name, X handle, verified badge, total USD volume, and USD P&L — for tracking smart money. Pair the wallet with predict.positions / predict.activity / predict.wallet. Read-only from Polymarket's Data API.","versions":[{"version":null,"path":"/api/predict/leaderboard","method":"GET","deprecated":false,"price":{"usd":0.0048},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"window":{"type":"string","enum":["1d","7d","30d","all"],"description":"Time window (default all)."},"rankBy":{"type":"string","enum":["vol","pnl"],"description":"Rank by volume or P&L (default vol)."},"limit":{"type":"integer","minimum":1,"maximum":100,"description":"Max traders (default 20)."}},"additionalProperties":false}}]},{"id":"predict.limitless-markets","group":"predict","description":"Active prediction markets on Limitless Exchange (on-chain, Base; keyless). Each market: conditionId, title, slug, description, status, live YES/NO prices, volume, liquidity, collateral token, expiration, and categories/tags. A second venue alongside the Polymarket (predict.markets) and Kalshi (predict.kalshi-markets) clusters — for cross-venue prediction-market coverage.","versions":[{"version":null,"path":"/api/predict/limitless-markets","method":"GET","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"limit":{"type":"integer","minimum":1,"maximum":50,"description":"Max markets (default 20)."}},"additionalProperties":false}}]},{"id":"predict.market","group":"predict","description":"A single Polymarket market by conditionId, slug, or id. Returns the question, outcomes + live prices (implied probabilities), CLOB token ids, USD volume + liquidity, dates, description, and URL. Pass one of conditionId / slug / id.","versions":[{"version":null,"path":"/api/predict/market","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"conditionId":{"type":"string","maxLength":80},"slug":{"type":"string","maxLength":200},"id":{"type":"string","maxLength":40}},"additionalProperties":false}}]},{"id":"predict.markets","group":"predict","description":"Browse Polymarket prediction markets. Filter by active/closed, order by volume/liquidity/endDate, page with limit/offset. Each market returns its question, outcomes + live outcome prices (implied probabilities), CLOB token ids (use with predict.price / predict.orderbook / predict.price-history), USD volume + liquidity, open/close dates, and the Polymarket URL. Read-only mirror of Polymarket's public market list.","versions":[{"version":null,"path":"/api/predict/markets","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"limit":{"type":"integer","minimum":1,"maximum":100},"offset":{"type":"integer","minimum":0},"active":{"type":"boolean"},"closed":{"type":"boolean"},"order":{"type":"string","enum":["volume","liquidity","endDate","startDate"]},"ascending":{"type":"boolean"},"tagId":{"type":"integer"}},"additionalProperties":false}}]},{"id":"predict.matched-pairs","group":"predict","description":"Cross-venue equivalent-market pairs for arbitrage / relative-value spotting. We fuzzy-match open Polymarket vs Kalshi markets by title-token overlap and return candidate pairs with both venues' YES prices and the implied-probability spread (Polymarket YES minus Kalshi YES). Tune with minScore (0-1 title-similarity floor) and limit. Heuristic — a high score is a strong candidate, not a guaranteed identical contract. Read-only, keyless. No public source maps these directly; the pairing is derived by 2s.io.","versions":[{"version":null,"path":"/api/predict/matched-pairs","method":"GET","deprecated":false,"price":{"usd":0.0048},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"limit":{"type":"integer","minimum":1,"maximum":50,"description":"Max pairs (default 20)."},"minScore":{"type":"number","minimum":0,"maximum":1,"description":"Minimum title-similarity score 0-1 (default 0.3)."}},"additionalProperties":false}}]},{"id":"predict.orderbook","group":"predict","description":"Full CLOB order book (bids + asks with price and size) for a Polymarket outcome token. Use the clobTokenIds from predict.markets. Read-only depth snapshot from Polymarket's CLOB.","versions":[{"version":null,"path":"/api/predict/orderbook","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"tokenId":{"type":"string","minLength":1,"maxLength":120,"description":"CLOB token id (outcome token)."}},"required":["tokenId"],"additionalProperties":false}}]},{"id":"predict.positions","group":"predict","description":"A wallet's open Polymarket positions. Pass the wallet (proxy) address; cap with limit. Each position returns the market title + outcome, share size, average vs current price, initial vs current USD value, unrealized USD P&L and percent P&L, whether it's redeemable, and the conditionId/slug. For inspecting any trader's live book (e.g. a wallet from predict.leaderboard or predict.whales). Read-only from Polymarket's Data API.","versions":[{"version":null,"path":"/api/predict/positions","method":"GET","deprecated":false,"price":{"usd":0.0048},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"address":{"type":"string","minLength":8,"maxLength":60,"description":"Wallet (proxy) address."},"limit":{"type":"integer","minimum":1,"maximum":500,"description":"Max positions (default 50)."}},"required":["address"],"additionalProperties":false}}]},{"id":"predict.price","group":"predict","description":"Live best bid, best ask, and midpoint for a Polymarket outcome token (CLOB token id — get it from predict.markets clobTokenIds). The midpoint is the market's implied probability for that outcome. Read-only from Polymarket's CLOB.","versions":[{"version":null,"path":"/api/predict/price","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"tokenId":{"type":"string","minLength":1,"maxLength":120,"description":"CLOB token id (outcome token)."}},"required":["tokenId"],"additionalProperties":false}}]},{"id":"predict.price-history","group":"predict","description":"Time-series price (implied-probability) history for a Polymarket outcome token. Pass the CLOB token id and an interval (1h, 6h, 1d, 1w, 1m, max). Returns timestamped price points — for charting how a market's odds moved. Read-only from Polymarket's CLOB.","versions":[{"version":null,"path":"/api/predict/price-history","method":"GET","deprecated":false,"price":{"usd":0.002},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"tokenId":{"type":"string","minLength":1,"maxLength":120},"interval":{"type":"string","enum":["1h","6h","1d","1w","1m","max"]},"fidelity":{"type":"integer","minimum":1,"maximum":1440}},"required":["tokenId"],"additionalProperties":false}}]},{"id":"predict.search","group":"predict","description":"Cross-venue prediction-market keyword search across Polymarket, Kalshi, and Limitless Exchange in one call. Pass q (required); filter by status (open/closed) and cap per-venue with limit. Each hit is tagged with its venue and returns the question, live YES/NO price (0-1 implied probability), USD volume, close date, and the venue URL — for finding the same real-world question wherever it trades. Read-only, keyless.","versions":[{"version":null,"path":"/api/predict/search","method":"GET","deprecated":false,"price":{"usd":0.0048},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"q":{"type":"string","minLength":2,"maxLength":120,"description":"Keyword(s) to search market questions for."},"limit":{"type":"integer","minimum":1,"maximum":50,"description":"Max results per venue (default 15)."},"status":{"type":"string","enum":["open","closed"],"description":"Filter by market status."}},"required":["q"],"additionalProperties":false}}]},{"id":"predict.sports","group":"predict","description":"Sports prediction markets across Polymarket and Kalshi in one call — game lines, futures, and props (NFL/NBA/MLB/NHL/soccer/tennis/etc). Optionally narrow with league (a tag/category keyword, e.g. nfl, soccer, world-cup) and cap with limit. Each hit is tagged with its venue and returns the question, live YES/NO price (implied probability), USD volume, close date, and the venue URL. Read-only, keyless.","versions":[{"version":null,"path":"/api/predict/sports","method":"GET","deprecated":false,"price":{"usd":0.0048},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"league":{"type":"string","maxLength":60,"description":"League/category keyword (e.g. nfl, nba, soccer, world-cup)."},"limit":{"type":"integer","minimum":1,"maximum":100,"description":"Max results per venue (default 20)."}},"additionalProperties":false}}]},{"id":"predict.trades","group":"predict","description":"Recent Polymarket trades. Filter by market (conditionId) and/or user (wallet address); page with limit (max 500). Each trade returns wallet, trader name, side (buy/sell), outcome, size, price, USD notional, timestamp, market title, and tx hash. Read-only from Polymarket's Data API.","versions":[{"version":null,"path":"/api/predict/trades","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"market":{"type":"string","maxLength":80,"description":"Market conditionId."},"user":{"type":"string","maxLength":60,"description":"Wallet address."},"limit":{"type":"integer","minimum":1,"maximum":500}},"additionalProperties":false}}]},{"id":"predict.wallet","group":"predict","description":"A Polymarket trader's portfolio by wallet address: total portfolio USD value plus open positions (market title, outcome, size, average vs current price, current value, and unrealized PnL). For tracking a wallet's prediction-market book. Read-only from Polymarket's Data API.","versions":[{"version":null,"path":"/api/predict/wallet","method":"GET","deprecated":false,"price":{"usd":0.002},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"address":{"type":"string","minLength":8,"maxLength":60,"description":"Wallet (proxy) address."}},"required":["address"],"additionalProperties":false}}]},{"id":"predict.whales","group":"predict","description":"Polymarket whale radar: the largest recent trades by USD notional across all markets, ranked. Optional minUsd floor and limit. Each entry includes wallet, trader name, market, side, outcome, size, price, USD value, and tx hash — for tracking smart-money / large positioning. Read-only from Polymarket's Data API.","versions":[{"version":null,"path":"/api/predict/whales","method":"GET","deprecated":false,"price":{"usd":0.002},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"limit":{"type":"integer","minimum":1,"maximum":100},"minUsd":{"type":"number","minimum":0,"description":"Only trades at/above this USD notional."}},"additionalProperties":false}}]},{"id":"product.gtin","group":"product","description":"Decode and validate a product barcode (GTIN / UPC-A / EAN-13 / EAN-8 / GTIN-14 / ISBN-13 / ISSN). Returns the GS1 mod-10 check-digit validation (valid flag + expected digit — an LLM can't reliably compute this), the symbology, the zero-padded GTIN-14 canonical form, and the GS1 prefix decoded to the issuing GS1 member organisation and its country (NOTE: that's the country of the org that issued the prefix, not necessarily where the item was made). Flags restricted-distribution (in-store/variable-measure) prefixes and Bookland (ISBN) / serial (ISSN) ranges. Also attempts a FRESH best-effort product-identity lookup (name, brand, category, image) across the open Open Food/Beauty/Products/Pet Food Facts federation (ODbL) — reliable for food, beverage, and beauty items, sparse for general retail (electronics/apparel), and may be null. Always live (no caching). Set identity=false to skip the lookup and decode only.","versions":[{"version":null,"path":"/api/product/gtin","method":"GET","deprecated":false,"price":{"usd":0.00144},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"gtin":{"type":"string","minLength":6,"maxLength":20},"identity":{"type":"boolean"}},"required":["gtin"],"additionalProperties":false}}]},{"id":"property.nyc-deed-history","group":"property","description":"NYC deed + mortgage history for a tax lot via ACRIS (Automated City Register Information System) legals dataset, keyed by BBL. Each row carries a unique documentId you can use to drill into the ACRIS master dataset (the master URL pattern is included in the response) for full details: parties, consideration amount, document type (DEED, MORTGAGE, ASSIGNMENT OF MORTGAGE, etc.). Use `property.nyc-parcel-lookup` first to convert an address to a BBL. Returns most-recent records first.","versions":[{"version":null,"path":"/api/property/nyc-deed-history","method":"GET","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"bbl":{"type":"string","pattern":"^[1-5][- 0-9]{9,19}$"},"limit":{"type":"integer","minimum":1,"maximum":200,"default":25},"offset":{"type":"integer","minimum":0,"default":0}},"required":["bbl"],"additionalProperties":false}}]},{"id":"property.nyc-parcel-lookup","group":"property","description":"NYC tax-lot lookup via PLUTO (Primary Land Use Tax Lot Output) — every tax lot in the city with owner, zoning, lot/building area, year built, classification, lat/lon, community + school + council + police districts. Pass `bbl` (10-digit Borough-Block-Lot composite, e.g. 1010110001 for the Empire State Building) for an exact lookup, OR pass `address` (partial-match) optionally constrained by `borough` (name or 2-letter code MN/BX/BK/QN/SI). The BBL returned here is the universal join key for all other property.nyc-* endpoints — fetch parcels first, then chain into deed-history, permits, or violations.","versions":[{"version":null,"path":"/api/property/nyc-parcel-lookup","method":"GET","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"bbl":{"type":"string","pattern":"^[1-5][- 0-9]{9,19}$"},"address":{"type":"string","minLength":3,"maxLength":120},"borough":{"type":"string","pattern":"^([A-Za-z ]{2,15})$"}},"additionalProperties":false}}]},{"id":"property.nyc-permits","group":"property","description":"NYC Department of Buildings permit issuance — every construction, alteration, or demolition permit ever issued. Search by `bbl` (10-digit) or `address` (street_name substring). Filter by jobType (A1=Major Alteration, A2=Minor Alteration, A3=Minor Cosmetic, NB=New Building, DM=Demolition, etc.) or permitStatus (ISSUED, IN PROCESS, RE-ISSUED, REVOKED, etc.). Each row carries job + permit numbers, work type, building type, residential flag, filing/issuance/expiration dates, estimated fee. Use for construction-history agents, code-enforcement research, and zoning compliance checks.","versions":[{"version":null,"path":"/api/property/nyc-permits","method":"GET","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"bbl":{"type":"string","pattern":"^[1-5][- 0-9]{9,19}$"},"address":{"type":"string","minLength":3,"maxLength":120},"jobType":{"type":"string","pattern":"^[A-Za-z0-9]{1,5}$"},"permitStatus":{"type":"string","pattern":"^[A-Za-z _-]{2,30}$"},"limit":{"type":"integer","minimum":1,"maximum":200,"default":25},"offset":{"type":"integer","minimum":0,"default":0}},"additionalProperties":false}}]},{"id":"property.nyc-violations","group":"property","description":"NYC Housing Preservation & Development (HPD) violations — every notice of violation issued at a multi-family building. Search by `bbl` (10-digit) or `address` (street_name substring). Filter by `classCode` (A=least severe, B=hazardous, C=immediately hazardous) and `currentStatusOnly=true` to limit to open violations. Each row carries violation id, building id, full address + apartment + story, inspection + approved + certify-by + correct-by dates, current status + status date, and the narrative NOV description. Use for landlord-history, code-enforcement, and tenant-rights agents.","versions":[{"version":null,"path":"/api/property/nyc-violations","method":"GET","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"bbl":{"type":"string","pattern":"^[1-5][- 0-9]{9,19}$"},"address":{"type":"string","minLength":3,"maxLength":120},"classCode":{"type":"string","enum":["A","B","C"]},"currentStatusOnly":{"type":"boolean"},"limit":{"type":"integer","minimum":1,"maximum":200,"default":25},"offset":{"type":"integer","minimum":0,"default":0}},"additionalProperties":false}}]},{"id":"pubsub.create-topic","group":"pubsub","description":"PUBSUB: create a topic you own, scoped to YOUR wallet. Returns a topicId — share it so other agents can pubsub.subscribe; only you (the owner) can pubsub.publish to it. The coordination backbone for multi-agent systems. Idempotent per name (re-creating returns the same id and extends its 90-day life). No account or API key — pay per call with x402.","versions":[{"version":null,"path":"/api/pubsub/create-topic","method":"POST","deprecated":false,"price":{"usd":0.002},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"name":{"type":"string","description":"Topic name, 1-64 chars of [A-Za-z0-9._:-]. e.g. \"price-alerts\"."}},"required":["name"],"additionalProperties":false}}]},{"id":"pubsub.publish","group":"pubsub","description":"PUBSUB: publish a message to a topic YOU own, fanning out a signed callback to every CONFIRMED subscriber. Returns the number of subscribers it was delivered to. Only the topic owner (the x402 payer who created it) can publish. Message is arbitrary JSON (≤64 KB). Priced by confirmed-subscriber count (a small base + per subscriber), so you pay for the fan-out you request. Delivery is at-least-once with retry + signature.","versions":[{"version":null,"path":"/api/pubsub/publish","method":"POST","deprecated":false,"price":{"usd":0.002},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"topicId":{"type":"string","description":"The topic you own (from pubsub.create-topic)."},"message":{"description":"The payload to fan out — any JSON, up to 64 KB."}},"required":["topicId"],"additionalProperties":false}}]},{"id":"pubsub.subscribe","group":"pubsub","description":"PUBSUB: subscribe a callbackUrl to a topic by its topicId (the topic can belong to any wallet — you just need the id). CONFIRMATION REQUIRED: we immediately POST a one-time challenge to your callbackUrl with header X-2s-Confirmation-Token (and {type:\"2s_subscription_confirmation\", token} in the JSON body); to be CONFIRMED your endpoint must reply 2xx with the response body set to exactly that token, or JSON {\"token\":\"<token>\"}. Only confirmed subscribers receive published messages (this prevents subscribing a non-consenting URL). Response field \"confirmed\" tells you if it worked; re-call to retry. When the owner publishes, we POST the message to your callbackUrl, EIP-191-signed (verify with X-2s-Signature) and retried with backoff; a subscriber that repeatedly fails delivery is auto-disabled. Returns a subscriptionId for pubsub.unsubscribe. Up to 100 subscribers per topic, one per URL. Pay per call with x402.","versions":[{"version":null,"path":"/api/pubsub/subscribe","method":"POST","deprecated":false,"price":{"usd":0.002},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"topicId":{"type":"string","description":"The topicId to subscribe to (from pubsub.create-topic)."},"callbackUrl":{"type":"string","format":"uri","maxLength":2048,"description":"Where we POST published messages. Any http(s) URL; must echo the confirmation token to activate; body is signed."},"label":{"type":"string","maxLength":64,"description":"Optional free-text tag."}},"required":["topicId","callbackUrl"],"additionalProperties":false}}]},{"id":"pubsub.unsubscribe","group":"pubsub","description":"PUBSUB: remove one of YOUR subscriptions by its subscriptionId — you stop receiving that topic's messages. Returns removed:false if it isn't yours or is already gone. Private to your wallet (the x402 payer).","versions":[{"version":null,"path":"/api/pubsub/unsubscribe","method":"POST","deprecated":false,"price":{"usd":0.002},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"subscriptionId":{"type":"string","description":"The subscriptionId from pubsub.subscribe."}},"required":["subscriptionId"],"additionalProperties":false}}]},{"id":"quakes.recent","group":"quakes","description":"Recent earthquakes near a coordinate. Returns each quake with magnitude, place name, time (ISO), latitude/longitude/depth, tsunami flag, USGS event URL, and distance-from-query in km — sorted by time descending. Real-time data, post-LLM-training-cutoff. Backed by USGS FDSN event API (public domain). Query: lat (-90..90), lon (-180..180), radius_km (1-1000, default 500), hours (1-720, default 24), min_magnitude (0-10, default 2.0).","versions":[{"version":null,"path":"/api/quakes/recent","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"lat":{"type":"number","minimum":-90,"maximum":90},"lon":{"type":"number","minimum":-180,"maximum":180},"radius_km":{"type":"number","minimum":1,"maximum":1000,"default":500},"hours":{"type":"number","minimum":1,"maximum":720,"default":24},"min_magnitude":{"type":"number","minimum":0,"maximum":10,"default":2}},"required":["lat","lon"],"additionalProperties":false}}]},{"id":"queue.ack","group":"queue","description":"QUEUE: confirm a leased message is processed — deletes it so it isn't redelivered, scoped to YOUR wallet. Pass the message id + the leaseToken from queue.lease. Returns acked:false if the lease expired or the token doesn't match (the message will be redelivered to a future lease). Private to your wallet (the x402 payer).","versions":[{"version":null,"path":"/api/queue/ack","method":"POST","deprecated":false,"price":{"usd":0.002},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"queue":{"type":"string","description":"Queue the message came from."},"id":{"type":"string","description":"Message id from queue.lease."},"leaseToken":{"type":"string","description":"leaseToken from queue.lease."}},"required":["queue","id","leaseToken"],"additionalProperties":false}}]},{"id":"queue.enqueue","group":"queue","description":"QUEUE: append a message to a durable, wallet-scoped queue. Workers pull it later with queue.lease and confirm with queue.ack. Use it to buffer tasks, hand work between agent runs, or fan work to a consumer. Body is arbitrary JSON (≤256 KB). Optional maxAttempts before a message dead-letters. Kept on a rolling 90-day window. No account or API key — pay per call with x402.","versions":[{"version":null,"path":"/api/queue/enqueue","method":"POST","deprecated":false,"price":{"usd":0.002},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"queue":{"type":"string","description":"Queue name, 1-64 chars of [A-Za-z0-9._:-]. e.g. \"jobs\"."},"body":{"description":"The message payload — any JSON, up to 256 KB."},"maxAttempts":{"type":"integer","minimum":1,"maximum":100,"description":"Deliveries before the message moves to the dead-letter status. Default 10."}},"required":["queue"],"additionalProperties":false}}]},{"id":"queue.lease","group":"queue","description":"QUEUE: atomically claim up to `count` messages for processing, scoped to YOUR wallet. Each comes with a leaseToken; the messages are hidden from other workers for visibilitySeconds. Process them, then queue.ack each with its leaseToken — if you don't ack in time, the message is redelivered. Concurrent workers never get the same message (FOR UPDATE SKIP LOCKED). Private to your wallet (the x402 payer).","versions":[{"version":null,"path":"/api/queue/lease","method":"POST","deprecated":false,"price":{"usd":0.002},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"queue":{"type":"string","description":"Queue to pull from."},"count":{"type":"integer","minimum":1,"maximum":100,"description":"How many to claim. Default 1, max 100."},"visibilitySeconds":{"type":"integer","minimum":1,"maximum":3600,"description":"How long claimed messages stay hidden before redelivery. Default 30, max 3600."}},"required":["queue"],"additionalProperties":false}}]},{"id":"queue.stats","group":"queue","description":"QUEUE: depth of a queue, scoped to YOUR wallet — counts of ready (available now), leased (in flight), and dlq (dead-lettered) messages, plus total. Use it to monitor backlog and decide whether to scale workers. Private to your wallet (the x402 payer).","versions":[{"version":null,"path":"/api/queue/stats","method":"POST","deprecated":false,"price":{"usd":0.002},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"queue":{"type":"string","description":"Queue to inspect."}},"required":["queue"],"additionalProperties":false}}]},{"id":"recreation.search","group":"recreation","description":"Search the Recreation Information Database (RIDB) — the single source of truth for federal recreation lands and programs across NPS, USFS, BLM, USACE, BOR, FWS, NARA. Pick a resource: recareas (designated recreation areas), facilities (individual sites — campgrounds, day-use, visitor centers), campsites (individual reservable campsites with attributes), permits (special-use permits, lotteries), tours, events, activities (taxonomy lookup). Filter by free-text query, state, activity ID, or lat/lon + radius (miles, max 50). Used by every federal-recreation-related agent: trip planning, permit chasers, fishing/hunting locator, campground availability tools.","versions":[{"version":null,"path":"/api/recreation/search","method":"GET","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"resource":{"type":"string","enum":["recareas","facilities","campsites","permits","tours","events","activities"]},"query":{"type":"string","minLength":1,"maxLength":120},"state":{"type":"string","minLength":2,"maxLength":2,"pattern":"^[A-Za-z]{2}$"},"activity":{"type":"integer","minimum":1,"maximum":99999},"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180},"radius":{"type":"number","minimum":0.1,"maximum":50},"lastUpdated":{"type":"string","pattern":"^\\d{2}-\\d{2}-\\d{4}$"},"limit":{"type":"integer","minimum":1,"maximum":50,"default":25},"offset":{"type":"integer","minimum":0,"default":0}},"required":["resource"],"additionalProperties":false}}]},{"id":"registry.npm-lookup","group":"registry","description":"Look up an npm package by name (supports scoped packages like @sentry/node). Returns description, homepage, repository, license, author + maintainers list, keywords, distTags (latest/beta/rc/etc.), latest version + publication date, and the 50 most recent versions with their publish dates + deprecation status. ~3M JavaScript/TypeScript packages. npm public registry.","versions":[{"version":null,"path":"/api/registry/npm-lookup","method":"GET","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":214}},"required":["name"],"additionalProperties":false}}]},{"id":"registry.pypi-lookup","group":"registry","description":"Look up a Python package on PyPI by name. Returns version, summary + long description, content-type, project URLs (Homepage, Source, Bug Tracker, Docs, etc.), license, author + maintainer (with emails), keywords, classifiers (top 30), requires-python spec, requires-dist (top 100 runtime deps), the 50 most recent releases with publish dates, and any yanked versions in that window. PyPI public registry.","versions":[{"version":null,"path":"/api/registry/pypi-lookup","method":"GET","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200}},"required":["name"],"additionalProperties":false}}]},{"id":"research.author","group":"research","description":"Resolve a researcher by ORCID iD. Pass orcid (e.g. 0000-0002-1825-0097, with or without the https://orcid.org/ prefix). Returns the researcher name, affiliations (employments and educations with organization, role, department, years, and a current flag), a total works count, and a works summary (title, type, year, DOI when present). Data: ORCID Public API, free and keyless; per-record visibility is set by the record holder. The canonical author key in scholarly metadata — pair with /api/papers/search, /api/paper/doi-lookup, and /api/research/org (ROR institutions). Use to verify an author identity, current institution, or publication record before citing.","versions":[{"version":null,"path":"/api/research/author","method":"GET","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"legacy","params":{"type":"object","properties":{"orcid":{"type":"string","minLength":16,"maxLength":60,"description":"ORCID iD, e.g. 0000-0002-1825-0097."},"worksLimit":{"type":"integer","minimum":1,"maximum":50,"default":20}},"required":["orcid"],"additionalProperties":false}}]},{"id":"research.funding","group":"research","description":"Search US federal biomedical research grants via NIH RePORTER. Filter by term (free-text over project title, terms, and abstract), org (funded institution name), pi (principal-investigator name), and/or fiscalYear; page with limit (1-50) and offset. Returns each award with project number, title, fiscal year, award amount (USD), contact PI, organization (name, city, state, country, department), funding agency/institute, and project start/end dates — newest fiscal year first, with a total match count. Data: NIH RePORTER, free and public-domain. Fresh post-training award data agents cannot know; pair with /api/research/org (ROR) and /api/research/author (ORCID). Use for funding landscape research, competitor/lab tracking, and grant-opportunity context.","versions":[{"version":null,"path":"/api/research/funding","method":"GET","deprecated":false,"price":{"usd":0.0018},"accepts":["x402"],"responseShape":"legacy","params":{"type":"object","properties":{"term":{"type":"string","minLength":2,"maxLength":200},"org":{"type":"string","minLength":2,"maxLength":200},"pi":{"type":"string","minLength":2,"maxLength":120},"fiscalYear":{"type":"integer","minimum":1985,"maximum":2100},"limit":{"type":"integer","minimum":1,"maximum":50,"default":10},"offset":{"type":"integer","minimum":0,"maximum":14000,"default":0}},"additionalProperties":false}}]},{"id":"research.org","group":"research","description":"Resolve a research organization via the Research Organization Registry (ROR). Pass id (a ROR id like 056y0v115 or its full URL) to fetch one org, or name to search by free text. Returns the canonical ROR id and name, organization type, status, founding year, location (city, country, GeoNames coordinates), website, Wikipedia link, external identifiers (GRID, ISNI, Wikidata, Crossref Funder), parent/child relationships, and aliases/acronyms. Data: ROR, free and CC0. The canonical institution key in scholarly metadata — pair with /api/papers/search and /api/paper/doi-lookup (author affiliations) and /api/research/author (ORCID). Use to disambiguate an institution name to a stable id before joining datasets.","versions":[{"version":null,"path":"/api/research/org","method":"GET","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"legacy","params":{"type":"object","properties":{"id":{"type":"string","minLength":2,"maxLength":120},"name":{"type":"string","minLength":2,"maxLength":200},"limit":{"type":"integer","minimum":1,"maximum":20,"default":5}},"additionalProperties":false}}]},{"id":"schedule.cancel","group":"schedule","description":"SCHEDULE: stop an active schedule immediately, scoped to YOUR wallet. No more callbacks will fire. Returns cancelled:false if it was already done/cancelled or isn't yours. No refund of the unused window. Private to your wallet (the x402 payer).","versions":[{"version":null,"path":"/api/schedule/cancel","method":"POST","deprecated":false,"price":{"usd":0.002},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"scheduleId":{"type":"string","description":"The scheduleId from schedule.create."}},"required":["scheduleId"],"additionalProperties":false}}]},{"id":"schedule.create","group":"schedule","description":"SCHEDULE: arm a time-driven callback, scoped to YOUR wallet — the time-based twin of watchers. We POST your payload to callbackUrl either once at a future time (`at`) or repeatedly (`everySeconds`, ≥60). Each push is EIP-191-signed by our published key (verify offline) and retried with backoff. Pay once; bounded by maxFires + a 90-day window. Gives a stateless agent a cron without a server. No account or API key — pay per call with x402.","versions":[{"version":null,"path":"/api/schedule/create","method":"POST","deprecated":false,"price":{"usd":0.05},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"callbackUrl":{"type":"string","format":"uri","maxLength":2048,"description":"Where we POST when it fires. Any http(s) URL; the JSON body is signed (verify with X-2s-Signature)."},"at":{"type":"string","description":"ISO-8601 timestamp for a ONE-SHOT fire. e.g. \"2026-07-01T14:00:00Z\". Provide this OR everySeconds, not both."},"everySeconds":{"type":"integer","minimum":60,"description":"Recurring interval in seconds (≥60). Provide this OR at."},"payload":{"type":"object","additionalProperties":{},"description":"Arbitrary JSON echoed in every callback (plus scheduleId, fireNumber, firedAt). e.g. {\"job\":\"digest\"}."},"maxFires":{"type":"integer","minimum":1,"maximum":1000,"description":"Stop after this many fires (recurring only). Default 25, max 1000."},"expiresInSeconds":{"type":"integer","minimum":60,"description":"Auto-expire the schedule after this long. Default + max 90 days."},"label":{"type":"string","maxLength":64,"description":"Optional free-text tag to recognize this schedule later."}},"required":["callbackUrl"],"additionalProperties":false}}]},{"id":"schedule.status","group":"schedule","description":"SCHEDULE: check a schedule's state, scoped to YOUR wallet — status, next fire time, fires used vs max, expiry, and its recent delivery attempts (including any that failed/retried). 404 if it isn't yours or doesn't exist. Private to your wallet (the x402 payer).","versions":[{"version":null,"path":"/api/schedule/status","method":"POST","deprecated":false,"price":{"usd":0.002},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"scheduleId":{"type":"string","description":"The scheduleId from schedule.create."}},"required":["scheduleId"],"additionalProperties":false}}]},{"id":"search.ai","group":"search","description":"AI web search optimized for agents. Returns ranked results with the relevant extracted content of each page (not just a link + blurb), plus a relevance score. topic=news for recent reporting. Distinct from search.web (raw SERP) — this returns clean, LLM-ready page content per result.","versions":[{"version":null,"path":"/api/search/ai","method":"GET","deprecated":false,"price":{"usd":0.018},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"q":{"type":"string","minLength":2,"maxLength":400,"description":"Search query."},"maxResults":{"type":"integer","minimum":1,"maximum":10},"topic":{"type":"string","enum":["general","news"]}},"required":["q"],"additionalProperties":false}}]},{"id":"search.crawl","group":"search","description":"Crawl a site and return clean page content. POST { url, limit?, maxDepth?, instructions? }. Follows links from the start URL (up to 10 pages, depth ≤2) and returns each page's extracted content. Optional natural-language instructions steer which pages to follow (e.g. \"only pricing and docs pages\"). For ingesting a small site/section in one call.","versions":[{"version":null,"path":"/api/search/crawl","method":"POST","deprecated":false,"price":{"usd":0.048},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"url":{"type":"string","format":"uri","maxLength":2048,"description":"Start URL to crawl."},"limit":{"type":"integer","minimum":1,"maximum":10,"description":"Max pages (≤10)."},"maxDepth":{"type":"integer","minimum":1,"maximum":2},"instructions":{"type":"string","maxLength":300,"description":"Natural-language steering for which pages to follow."}},"required":["url"],"additionalProperties":false}}]},{"id":"search.endpoints","group":"search","description":"Find the right 2s endpoint for a task using natural language. Pass q (e.g. 'check if a domain can be spoofed', 'is this CVE being exploited', 'screen a company for sanctions', 'decode a VIN') and get back the catalog's most relevant endpoints, ranked, each with its id, API path, method, group, description, and price. Deterministic keyword + synonym matching over the live endpoint registry (no LLM, no external calls) — a self-routing index so an agent (or its planner) can discover which paid call answers a question instead of reading the whole 290+ endpoint catalog. Returns the path you then call directly.","versions":[{"version":null,"path":"/api/search/endpoints","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"q":{"type":"string","minLength":2,"maxLength":200},"limit":{"type":"integer","minimum":1,"maximum":50}},"required":["q"],"additionalProperties":false}}]},{"id":"search.extract","group":"search","description":"Extract clean, LLM-ready content from up to 5 URLs in one call. POST { urls[], depth? }. Returns the main text content of each page (JS-rendered, boilerplate stripped) plus a list of any URLs that failed. For feeding web pages to an agent without running your own headless browser.","versions":[{"version":null,"path":"/api/search/extract","method":"POST","deprecated":false,"price":{"usd":0.018},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"urls":{"type":"array","items":{"type":"string","format":"uri","maxLength":2048},"minItems":1,"maxItems":5,"description":"1-5 URLs to extract."},"depth":{"type":"string","enum":["basic","advanced"]}},"required":["urls"],"additionalProperties":false}}]},{"id":"search.web","group":"search","description":"Live web search. Returns ranked results with title, URL, snippet description, site name, and page age — fresh information past any model training cutoff. Supports count (1-20), offset for paging, country (2-letter, e.g. US), freshness (pd=past day, pw=past week, pm=past month, py=past year, or a YYYY-MM-DDtoYYYY-MM-DD range), and safesearch (off/moderate/strict). Use for current events, fact verification, finding documentation, and research. Independent search index. For news-specific results with sources and timestamps see /api/news/search.","versions":[{"version":null,"path":"/api/search/web","method":"GET","deprecated":false,"price":{"usd":0.009},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"q":{"type":"string","minLength":1,"maxLength":400,"description":"Search query."},"count":{"type":"integer","minimum":1,"maximum":20,"default":10},"offset":{"type":"integer","minimum":0,"maximum":9,"default":0},"country":{"type":"string","pattern":"^[a-zA-Z]{2}$"},"freshness":{"type":"string","pattern":"^(pd|pw|pm|py|\\d{4}-\\d{2}-\\d{2}to\\d{4}-\\d{2}-\\d{2})$"},"safesearch":{"type":"string","enum":["off","moderate","strict"]}},"required":["q"],"additionalProperties":false}}]},{"id":"security.attack","group":"security","description":"Authoritative MITRE ATT&CK (Enterprise) technique lookup. Pass id (e.g. T1059 or sub-technique T1059.001) for the canonical technique — name, tactics (kill-chain phases), description, platforms, sub-technique flag + parent, mitigations, and detection guidance — or query for a keyword search returning ranked techniques. Bundled current ATT&CK matrix (~700 techniques), zero external calls. Agents cite T-numbers and tactic names that must be exact; this returns version-pinned, citeable data instead of hallucinated IDs. For threat modeling, detection engineering, and report enrichment.","versions":[{"version":null,"path":"/api/security/attack","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"id":{"type":"string","minLength":2,"maxLength":20},"query":{"type":"string","minLength":2,"maxLength":80},"limit":{"type":"integer","minimum":1,"maximum":100}},"additionalProperties":false}}]},{"id":"security.capec","group":"security","description":"Authoritative MITRE CAPEC (Common Attack Pattern Enumeration) lookup. Pass id (e.g. CAPEC-66, or just 66) for the canonical attack pattern — name, abstraction, description, typical likelihood + severity, mapped CWE weaknesses (with names), and related patterns (with names) — or query for a keyword search. Bundled catalog (~615 patterns), zero external calls. The attacker's-eye complement to security.cwe (the defender's weakness view) — the CAPEC↔CWE cross-links let an agent pivot between how an attack works and the weakness it exploits, with exact citeable IDs.","versions":[{"version":null,"path":"/api/security/capec","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":20},"query":{"type":"string","minLength":2,"maxLength":80},"limit":{"type":"integer","minimum":1,"maximum":100}},"additionalProperties":false}}]},{"id":"security.cve","group":"security","description":"Look up a CVE by id (e.g. CVE-2021-44228) across three authoritative vulnerability feeds in one call. Query: cve (CVE-YYYY-NNNN). Returns the canonical record — description, CVSS base score + severity + vector, CWE weakness ids, published/modified dates, reference links — plus whether it is on the US CISA Known Exploited Vulnerabilities catalog (with remediation due date and known-ransomware flag) and its EPSS exploit-probability score and percentile. The exploited and EPSS sections report independently, so one feed being unavailable does not fail the call. 404 if the CVE id is unknown. For triage, prioritization, and anti-hallucination on vulnerability claims.","versions":[{"version":null,"path":"/api/security/cve","method":"GET","deprecated":false,"price":{"usd":0.0018},"accepts":["x402"],"responseShape":"legacy","params":{"type":"object","properties":{"cve":{"type":"string","minLength":6,"maxLength":40,"description":"CVE identifier in the form CVE-YYYY-NNNN (e.g. CVE-2021-44228)."}},"required":["cve"],"additionalProperties":false}}]},{"id":"security.cve-changes","group":"security","description":"CVE change feed — the CVE records MODIFIED within a time window, so an agent can incrementally maintain a vulnerability view instead of re-scanning. Pass since (YYYY-MM-DD or ISO datetime); until defaults to now (window must be ≤ 120 days, the NVD limit). Optionally narrow by keyword (product/text) or cpe (exact CPE). Returns each changed CVE with its id, published + lastModified timestamps, current vulnStatus (e.g. Modified, Analyzed, Rejected), best-available CVSS score/severity, description, and kevListed — whether it is now on the CISA Known-Exploited Vulnerabilities catalog (the high-signal flag for a poller). Newest modification first. Sourced live from NVD (NIST) + CISA KEV, free/keyless. Pair with security.cve for full per-CVE detail.","versions":[{"version":null,"path":"/api/security/cve-changes","method":"GET","deprecated":false,"price":{"usd":0.00216},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"since":{"type":"string","minLength":8,"maxLength":30},"until":{"type":"string","minLength":8,"maxLength":30},"keyword":{"type":"string","minLength":1,"maxLength":100},"cpe":{"type":"string","minLength":3,"maxLength":200},"limit":{"type":"integer","minimum":1,"maximum":100}},"required":["since"],"additionalProperties":false}}]},{"id":"security.cve-search","group":"security","description":"Find vulnerabilities affecting a product by searching the NIST National Vulnerability Database. Pass product (free-text keyword, e.g. \"apache log4j\", \"openssl\", \"wordpress plugin contact-form-7\") or cpe (an exact CPE 2.3 name, e.g. cpe:2.3:a:apache:log4j:2.14.1:*:*:*:*:*:*:*). Returns matching CVEs newest-first, each with its id, description, CVSS base score/severity/vector, and dates. Optional limit (1–50). For \"what CVEs affect X\" / surveying a product's vulnerability history — distinct from security.cve, which resolves a single CVE id across NVD + CISA KEV + EPSS. Free, keyless.","versions":[{"version":null,"path":"/api/security/cve-search","method":"GET","deprecated":false,"price":{"usd":0.00216},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"product":{"type":"string","minLength":2,"maxLength":200,"description":"Free-text product/keyword (e.g. \"apache log4j\")."},"cpe":{"type":"string","minLength":5,"maxLength":300,"description":"Exact CPE 2.3 name (e.g. cpe:2.3:a:apache:log4j:2.14.1:*:*:*:*:*:*:*)."},"limit":{"type":"integer","minimum":1,"maximum":50,"description":"Max CVEs to return (1–50, default 20)."}},"additionalProperties":false}}]},{"id":"security.cwe","group":"security","description":"Authoritative MITRE CWE (Common Weakness Enumeration) lookup. Pass id (e.g. CWE-79, or just 79) for the canonical weakness — name, abstraction, description, extended description, ChildOf/ParentOf relationships (with names), and mapped CAPEC attack patterns (with names) — or query for a keyword search returning ranked matches. Bundled catalog (~970 weaknesses), zero external calls. Agents hallucinate CWE IDs and names constantly; this returns exact, citeable, version-pinned data. Pairs with security.cve (which returns CWE ids) and security.capec.","versions":[{"version":null,"path":"/api/security/cwe","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":20},"query":{"type":"string","minLength":2,"maxLength":80},"limit":{"type":"integer","minimum":1,"maximum":100}},"additionalProperties":false}}]},{"id":"security.exploit-availability","group":"security","description":"Does public exploit code exist for a CVE, and where? Pass cve (e.g. CVE-2021-44228). Returns hasPublicExploit, the count, hasMetasploitModule and hasVerifiedExploit flags, and the Exploit-DB entries (id, description, type, platform, date, verified, Metasploit flag, link). Bundled inverted index from the Exploit-DB archive (~25k CVEs). This is the triage signal BEYOND security.cve's KEV (exploited in the wild) + EPSS (exploit probability): is the vulnerability actually weaponized with available code? Use the trio together to decide how urgently to patch. Absence is not proof no exploit exists (private/other archives not covered).","versions":[{"version":null,"path":"/api/security/exploit-availability","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"cve":{"type":"string","minLength":6,"maxLength":30}},"required":["cve"],"additionalProperties":false}}]},{"id":"security.http-headers","group":"security","description":"Fetch a URL and grade its HTTP security headers. Pass url (scheme optional — defaults to https). Returns an overall letter grade + score, the list of present/missing headers, and a per-header analysis with the live value and specific issues for: Strict-Transport-Security (HSTS max-age/includeSubDomains), Content-Security-Policy (flags 'unsafe-inline'/'unsafe-eval'/missing default-src), X-Frame-Options or CSP frame-ancestors (clickjacking), X-Content-Type-Options (nosniff), Referrer-Policy, Permissions-Policy, and Cross-Origin-Opener/Resource-Policy. Also flags Server/X-Powered-By info disclosure. Analyzed from the target's LIVE response headers through an SSRF-guarded fetch (private/loopback targets refused) — an LLM cannot see a site's current headers. For web-app security review, vendor assessment, and CI gates.","versions":[{"version":null,"path":"/api/security/http-headers","method":"GET","deprecated":false,"price":{"usd":0.0018},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"url":{"type":"string","minLength":3,"maxLength":2048}},"required":["url"],"additionalProperties":false}}]},{"id":"security.ics-advisories","group":"security","description":"CISA Industrial Control Systems (ICS) advisories — vulnerabilities in operational-technology gear (SCADA, PLCs, building automation, energy/manufacturing/transportation systems, and medical devices), from the official CISA advisory RSS feed. Each item is normalized to the canonical advisory id (ICSA-YY-DDD-NN, or ICSMA-YY-DDD-NN for medical), title, link to the full advisory, publication date (ISO), and a plain-text summary. Optionally filter by keyword (e.g. a vendor like \"Siemens\") and cap the count. Returned newest-first. Free, public-domain (CISA).","versions":[{"version":null,"path":"/api/security/ics-advisories","method":"GET","deprecated":false,"price":{"usd":0.0048},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"q":{"type":"string","minLength":1,"maxLength":100,"description":"Case-insensitive keyword filter on title + summary, e.g. a vendor like \"Siemens\"."},"limit":{"type":"integer","minimum":1,"maximum":100,"description":"Max advisories to return (1-100, default 25)."}},"additionalProperties":false}}]},{"id":"security.ioc-reputation","group":"security","description":"Threat-intelligence reputation for an indicator of compromise (IOC) — pass ioc as an IP, domain, URL, or file hash (md5/sha1/sha256) and the type is auto-detected. Returns a malicious boolean plus a per-source breakdown: abuse.ch ThreatFox (IOC→malware/threat mapping), URLhaus (malicious URLs on a host/URL), MalwareBazaar (known malware samples by hash), Feodo Tracker (active botnet C2 IPs), Tor exit-node membership, and Spamhaus DROP (hijacked/criminal netblocks). Each source reports listed + a detail. Sourced from live, hourly-rotating threat feeds an LLM cannot know — a ground-truth liveness check for SOC alert triage, log enrichment, and blocklist decisions. Absence of a match is not proof of safety.","versions":[{"version":null,"path":"/api/security/ioc-reputation","method":"GET","deprecated":false,"price":{"usd":0.00216},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"ioc":{"type":"string","minLength":3,"maxLength":2048}},"required":["ioc"],"additionalProperties":false}}]},{"id":"security.ip-abuse","group":"security","description":"AbuseIPDB abuse report for a single IP — the crowd-sourced abuse-confidence score (0-100) the fail2ban / SSH-scanner / web-attack ecosystem reports into. Pass ip (IPv4 or IPv6). Returns abuseConfidenceScore, totalReports, numDistinctUsers, lastReportedAt, usageType (e.g. Data Center / Residential), ISP, domain, hostnames, isTor, isWhitelisted, and country. Set verbose=true for the individual report records (categories + reporter country). Optional maxAgeInDays (1-365, default 90) bounds the reporting window. Live crowd data an LLM cannot know — SOC alert triage, login-abuse blocking, and firewall decisions.","versions":[{"version":null,"path":"/api/security/ip-abuse","method":"GET","deprecated":false,"price":{"usd":0.00216},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"ip":{"type":"string","minLength":3,"maxLength":45},"maxAgeInDays":{"type":"integer","minimum":1,"maximum":365,"default":90},"verbose":{"type":"boolean","default":false}},"required":["ip"],"additionalProperties":false}}]},{"id":"security.ip-blacklist","group":"security","description":"AbuseIPDB bulk blacklist — the most-reported abusive IPs above a confidence threshold, the canonical fail2ban / firewall block-feed. Returns ipAddress, countryCode, abuseConfidenceScore, and lastReportedAt for each entry, plus the list's generatedAt timestamp. Tune confidenceMinimum (25-100, default 90), limit (1-10000, default 100), ipVersion (4 or 6), and onlyCountries / exceptCountries (comma-separated ISO-2). Live crowd-sourced threat feed for populating drop lists, WAF rules, and edge blocklists.","versions":[{"version":null,"path":"/api/security/ip-blacklist","method":"GET","deprecated":false,"price":{"usd":0.0024},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"confidenceMinimum":{"type":"integer","minimum":25,"maximum":100,"default":90},"limit":{"type":"integer","minimum":1,"maximum":10000,"default":100},"ipVersion":{"type":"integer"},"onlyCountries":{"type":"string","maxLength":400},"exceptCountries":{"type":"string","maxLength":400}},"additionalProperties":false}}]},{"id":"security.ip-block","group":"security","description":"AbuseIPDB subnet (CIDR) check — which IPs inside a network block have been reported for abuse. Pass network as a CIDR (e.g. 118.25.0.0/24; AbuseIPDB supports up to /16 for IPv4, /112 for IPv6). Returns the block metadata (network/netmask/min-max addresses, possible hosts, address-space description) plus reportedAddress: each flagged IP with numReports, abuseConfidenceScore, mostRecentReport, and country. Optional maxAgeInDays (1-365, default 30) and limit. Use to vet a hosting range, score a customer's netblock, or sweep your own allocation.","versions":[{"version":null,"path":"/api/security/ip-block","method":"GET","deprecated":false,"price":{"usd":0.0024},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"network":{"type":"string","minLength":5,"maxLength":50},"maxAgeInDays":{"type":"integer","minimum":1,"maximum":365,"default":30},"limit":{"type":"integer","minimum":1,"maximum":1000,"default":100}},"required":["network"],"additionalProperties":false}}]},{"id":"security.ip-reputation","group":"security","description":"Multi-source IP reputation with one combined authority score (0-100). Polls four independent reputation sources in parallel and blends them: AbuseIPDB (crowd-sourced abuse confidence), abuse.ch threat-lists (Feodo botnet C2 + ThreatFox + Spamhaus DROP + Tor exit nodes), blocklist.de (fail2ban attack-report network), and StopForumSpam. Returns combinedScore, a verdict (clean / low / suspicious / malicious), which sources flagged it, per-source opinions (score + weight + detail), and enrichment (ISP, usage type, country, ASN, Tor). An authoritative threat-list hit (botnet/malware/hijacked netblock) hard-floors the verdict at malicious. Per-source isolation: a down feed degrades that opinion only. The one-call answer for 'should I trust this IP?' instead of trusting a single feed.","versions":[{"version":null,"path":"/api/security/ip-reputation","method":"GET","deprecated":false,"price":{"usd":0.0036},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"ip":{"type":"string","minLength":3,"maxLength":45}},"required":["ip"],"additionalProperties":false}}]},{"id":"security.package","group":"security","description":"Security and provenance for an open-source package, composed live from three authoritative sources in one call. Pass ecosystem (npm, pypi, go, maven, cargo, nuget) + name (+ optional version; defaults to latest). Returns: known vulnerabilities from OSV (osv.dev — aggregates GitHub Security Advisories, PyPA, RustSec, Go vuln DB, etc.) each with its id, CVE aliases, summary, severity, and references; the resolved license and deprecation status (deps.dev); and the source repo's OpenSSF Scorecard health score (overall + per-check) plus stars/forks/open-issues. All live — newly-disclosed advisories appear within hours. Distinct from registry.npm-lookup / pypi-lookup (metadata only): this answers \"is this dependency safe to add, what license does it carry, and how well-maintained is it.\"","versions":[{"version":null,"path":"/api/security/package","method":"GET","deprecated":false,"price":{"usd":0.00216},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"ecosystem":{"type":"string","enum":["npm","pypi","go","maven","cargo","nuget"],"description":"Package ecosystem: npm, pypi, go, maven, cargo, or nuget."},"name":{"type":"string","minLength":1,"maxLength":214,"description":"Package name (e.g. lodash, requests, github.com/gin-gonic/gin)."},"version":{"type":"string","minLength":1,"maxLength":120,"description":"Specific version (defaults to the latest/default version)."}},"required":["ecosystem","name"],"additionalProperties":false}}]},{"id":"security.password-exposure","group":"security","description":"Check whether a password has appeared in known data breaches, using Have I Been Pwned's Pwned Passwords k-anonymity model — only the first 5 characters of the password's SHA-1 hash are ever sent upstream, so the service never sees the password or the full hash. POST { password } (hashed server-side) OR { sha1 } (the 40-hex SHA-1, for true zero-knowledge — hash it client-side and send only that). Returns breached (boolean), count (how many times it appears in breach corpora), and the sha1Prefix used. Backed by a 900M+ breached-credential corpus an LLM cannot know. For signup/password-policy enforcement and credential-hygiene checks. Absence is not a guarantee of strength.","versions":[{"version":null,"path":"/api/security/password-exposure","method":"POST","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"password":{"type":"string","minLength":1,"maxLength":512},"sha1":{"type":"string","minLength":40,"maxLength":40}},"additionalProperties":false}}]},{"id":"soil.hardiness-zone","group":"soil","description":"USDA Plant Hardiness Zone for a US ZIP code — the standard planting zone (e.g. \"9b\") plus its average annual minimum-temperature range (°F) and the ZIP centroid. Keyless, public-domain (USDA PHZM). The \"what grows where\" primitive for gardening, landscaping, nursery, and agronomy agents.","versions":[{"version":null,"path":"/api/soil/hardiness-zone","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"zip":{"type":"string","pattern":"^\\d{5}$"}},"required":["zip"],"additionalProperties":false}}]},{"id":"soil.profile","group":"soil","description":"Ground-truth soil profile for any US latitude/longitude from the USDA-NRCS SSURGO survey (Soil Data Access). Returns the soil map unit plus its component soil types ranked by composition percent, each with taxonomic order/class, drainage class, hydrologic group, and representative slope. Keyless, public-domain. Use for agronomy, land assessment, hydrology, septic/foundation suitability, and crop-fit reasoning. Coordinates over water or outside surveyed areas return an empty component list.","versions":[{"version":null,"path":"/api/soil/profile","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"lat":{"type":"number","minimum":-90,"maximum":90},"lon":{"type":"number","minimum":-180,"maximum":180}},"required":["lat","lon"],"additionalProperties":false}}]},{"id":"space.body","group":"space","description":"Look up any asteroid or comet in NASA JPL's Small-Body Database by designation, number, or name (e.g. \"433\", \"Eros\", \"433 Eros\", \"1P/Halley\", \"2024 YR4\"). Returns full name + kind + orbit class (e.g. Amor, Apollo, Jupiter-family comet), NEO and potentially-hazardous-asteroid flags, physical params (absolute magnitude H, diameter, extent, rotation period, albedo, density, spectral type), and orbital elements (eccentricity, semi-major axis, perihelion/aphelion, inclination, period, Earth MOID, observation arc). Astronomy, planetary-defense, and mission-planning research. Public-domain NASA/JPL data; for a body's near-Earth close approaches see /api/space/close-approaches.","versions":[{"version":null,"path":"/api/space/body","method":"GET","deprecated":false,"price":{"usd":0.00144},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"q":{"type":"string","minLength":1,"maxLength":60}},"required":["q"],"additionalProperties":false}}]},{"id":"space.close-approaches","group":"space","description":"List near-Earth asteroid/comet close approaches to Earth within a date window and maximum distance, from NASA JPL's Close-Approach Data API. Filter by dateMin / dateMax (YYYY-MM-DD) and distMaxAu (max approach distance in AU; default 0.05 AU ≈ 19.5 lunar distances). Each approach: object designation, close-approach date (UTC), nominal + minimum distance in AU and lunar distances, relative velocity (km/s), and absolute magnitude H (a size proxy). Sorted nearest-first. Planetary-defense, observation planning, and \"what's passing by this month\" queries. Public-domain NASA/JPL data; for full physical/orbital params of a listed object see /api/space/body.","versions":[{"version":null,"path":"/api/space/close-approaches","method":"GET","deprecated":false,"price":{"usd":0.00144},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"dateMin":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"dateMax":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"distMaxAu":{"type":"number","minimum":0.0001,"maximum":1,"default":0.05},"limit":{"type":"integer","minimum":1,"maximum":200,"default":50}},"additionalProperties":false}}]},{"id":"space.exoplanet","group":"space","description":"Search confirmed exoplanets in the NASA Exoplanet Archive (~6,000, updated weekly — past any LLM training cutoff). Filter by name (planet, partial), hostStar (partial), discoveryYear, or method (e.g. \"Transit\", \"Radial Velocity\", \"Microlensing\"). Each planet: name, host star + how many stars/planets in the system, discovery method/year/facility, orbital period, semi-major axis, radius (Earth radii), mass (Earth masses), equilibrium temperature, insolation; host-star spectral type/temperature/radius/mass; distance in parsecs + light-years; and RA/dec. Astronomy, habitability research, science education. Public-domain NASA data.","versions":[{"version":null,"path":"/api/space/exoplanet","method":"GET","deprecated":false,"price":{"usd":0.00144},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":60},"hostStar":{"type":"string","minLength":1,"maxLength":60},"discoveryYear":{"type":"integer","minimum":1989,"maximum":2030},"method":{"type":"string","minLength":2,"maxLength":40},"limit":{"type":"integer","minimum":1,"maximum":100,"default":20}},"additionalProperties":false}}]},{"id":"space.launches","group":"space","description":"Upcoming or recent orbital rocket launches from The Space Devs' Launch Library 2 — the live manifest behind most launch-tracking apps. `when`=upcoming (default) or previous. Optional `search` filters by rocket, provider, or mission text (e.g. \"Starship\", \"SpaceX\", \"Artemis\"). Each launch: name, status (Go/TBD/Success/Failure), NET launch time + window (UTC), launch provider, rocket configuration, pad + location, mission name/type/orbit/description, and whether a webcast is live. Real-time data agents can't get from training. Public CC-BY data (attribute The Space Devs).","versions":[{"version":null,"path":"/api/space/launches","method":"GET","deprecated":false,"price":{"usd":0.00144},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"when":{"type":"string","enum":["upcoming","previous"],"default":"upcoming"},"search":{"type":"string","maxLength":80},"limit":{"type":"integer","minimum":1,"maximum":50,"default":10},"offset":{"type":"integer","minimum":0,"default":0}},"additionalProperties":false}}]},{"id":"space.observe","group":"space","description":"Compute where any asteroid or comet is in the sky and whether you can see it. Give a body (designation/number/name, e.g. \"433 Eros\", \"Ceres\", \"2024 YR4\") and optionally your lat/lon and a time (ISO, default now). Returns the body's identity (NEO/PHA flags, orbit class, absolute magnitude H), its geocentric right ascension + declination, the constellation it's in, geocentric + heliocentric distance (AU), solar phase angle, and its apparent visual magnitude (IAU H-G model — how bright it appears now). With lat/lon it adds altitude/azimuth, whether it's above your horizon, a visible-now flag (up AND sky dark), and the best viewing window in the next 24 hours (when it's highest during darkness). Orbital position is computed locally from JPL elements — VALIDATED against JPL Horizons to <0.1 arcminute. Stargazing, astrophotography planning, occultation/observation prep. For the body's static physical + orbital params see /api/space/body.","versions":[{"version":null,"path":"/api/space/observe","method":"GET","deprecated":false,"price":{"usd":0.00288},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"body":{"type":"string","minLength":1,"maxLength":60},"lat":{"type":"number","minimum":-90,"maximum":90},"lon":{"type":"number","minimum":-180,"maximum":180},"altKm":{"type":"number","minimum":-0.5,"maximum":9},"at":{"type":"string","format":"date-time"}},"required":["body"],"additionalProperties":false}}]},{"id":"space.satellite","group":"space","description":"Compute the current position of any cataloged Earth-orbiting satellite by NORAD catalog number (e.g. 25544 = ISS, 20580 = Hubble), using fresh Celestrak orbital elements propagated with SGP4. Returns sub-point latitude/longitude, altitude (km), and speed (km/s) for the requested instant (default: now; pass `at` as an ISO timestamp for any time within a few days of the elements' epoch). Supply observer `lat`/`lon` (and optional altKm) to also get look angles — azimuth, elevation, slant range, and whether the satellite is above your horizon — for visual/antenna pointing. Satellite tracking, pass prediction, ground-station planning. Public-domain orbital data; physical/mission metadata is not included.","versions":[{"version":null,"path":"/api/space/satellite","method":"GET","deprecated":false,"price":{"usd":0.00144},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"noradId":{"type":"integer","minimum":1,"maximum":999999},"lat":{"type":"number","minimum":-90,"maximum":90},"lon":{"type":"number","minimum":-180,"maximum":180},"altKm":{"type":"number","minimum":-0.5,"maximum":9},"at":{"type":"string","format":"date-time"}},"required":["noradId"],"additionalProperties":false}}]},{"id":"space.satellites","group":"space","description":"Search the catalog of every cataloged Earth-orbiting object — ~69,000 satellites, rocket bodies, and debris tracked by US Space Force / 18 SDS (via CelesTrak SATCAT). Filter by name (q, e.g. \"starlink\"), owner/launching country (owner — code like US/PRC/CIS or a name like \"china\"), object type (type = payload | rocket body | debris | unknown), launch-year range (launchYearFrom/launchYearTo), international/COSPAR designator prefix (intlDesignator, e.g. \"2024-\"), on-orbit vs decayed (onOrbit), or exact NORAD number (noradId). Each result carries the NORAD id, name, international designator, object type, owner + resolved country, launch date + site, decay date (null = still in orbit), and orbital parameters (period, inclination, apogee, perigee). The envelope total is the full count matching your filter — so onOrbit=true&type=payload answers \"how many active satellites are up there\", and owner=PRC tells you who launched them. For a satellite's live sub-point position, pass its noradId to /api/space/satellite.","versions":[{"version":null,"path":"/api/space/satellites","method":"GET","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"q":{"type":"string","minLength":1,"maxLength":120},"owner":{"type":"string","minLength":1,"maxLength":40},"type":{"type":"string","minLength":1,"maxLength":20},"noradId":{"type":"integer","minimum":1,"maximum":999999},"intlDesignator":{"type":"string","minLength":1,"maxLength":20},"launchYearFrom":{"type":"integer","minimum":1957,"maximum":2100},"launchYearTo":{"type":"integer","minimum":1957,"maximum":2100},"onOrbit":{"type":"string","enum":["true","false"]},"limit":{"type":"integer","minimum":1,"maximum":100,"default":25},"offset":{"type":"integer","minimum":0,"maximum":100000,"default":0}},"additionalProperties":false}}]},{"id":"space.sky-tonight","group":"space","description":"Observer-local sky almanac for any lat/lon and time (default now). Returns the Sun's next rise/set + current altitude/azimuth; the Moon's rise/set, current alt/az, phase angle, phase name (New → Full → Waning Crescent), illuminated fraction, and next moon quarter; and for all seven non-Earth planets (Mercury→Neptune): altitude, azimuth, RA/dec, distance (AU), apparent magnitude, and whether each is currently above the horizon. Computed from first principles (astronomy-engine, sub-arcminute) — no external service, no key. Stargazing, astrophotography planning, 'what's up right now', is-it-dark-yet. `at` accepts any ISO timestamp.","versions":[{"version":null,"path":"/api/space/sky-tonight","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"lat":{"type":"number","minimum":-90,"maximum":90},"lon":{"type":"number","minimum":-180,"maximum":180},"altitudeM":{"type":"number","minimum":-500,"maximum":9000,"default":0},"at":{"type":"string","format":"date-time"}},"required":["lat","lon"],"additionalProperties":false}}]},{"id":"space.skywatch","group":"space","description":"One call → what's notable in YOUR sky right now, for a lat/lon. Synthesizes three sources: (1) the live almanac — sun up/down, moon phase + illumination, and which of the 7 naked-eye planets are currently above your horizon with their altitude/azimuth/magnitude; (2) near-Earth asteroid close approaches over the next 7 days (designation, date, distance in lunar distances); and (3) the ISS — its current sub-point, and whether it is above your horizon right now with look angles. Each section reports found/error independently. The \"is it dark, what's up, anything passing\" digest for stargazers and astrophotographers. For the raw almanac alone see /api/space/sky-tonight.","versions":[{"version":null,"path":"/api/space/skywatch","method":"GET","deprecated":false,"price":{"usd":0.00288},"accepts":["x402"],"responseShape":"legacy","params":{"type":"object","properties":{"lat":{"type":"number","minimum":-90,"maximum":90},"lon":{"type":"number","minimum":-180,"maximum":180},"altitudeM":{"type":"number","minimum":-500,"maximum":9000,"default":0}},"required":["lat","lon"],"additionalProperties":false}}]},{"id":"space.system","group":"space","description":"Profile a confirmed exoplanetary system by host-star name (e.g. \"TRAPPIST-1\", \"Kepler-90\", \"TOI-700\"). Groups all the star's known planets into one view, summarizes the host star (spectral type, temperature, radius, mass, distance in light-years), and COMPUTES the star's habitable (\"Goldilocks\") zone — inner and outer boundary in AU, derived from the stellar luminosity (effective temperature + radius vs. the Sun) — then flags which planets orbit within it. Each planet: radius/mass (Earth units), orbital period, semi-major axis, equilibrium temperature, and in-habitable-zone flag. Astronomy, habitability research, education. Built from the NASA Exoplanet Archive (the same data as /api/space/exoplanet) plus the computed HZ. Public-domain NASA data.","versions":[{"version":null,"path":"/api/space/system","method":"GET","deprecated":false,"price":{"usd":0.00288},"accepts":["x402"],"responseShape":"legacy","params":{"type":"object","properties":{"hostStar":{"type":"string","minLength":1,"maxLength":60}},"required":["hostStar"],"additionalProperties":false}}]},{"id":"space.weather","group":"space","description":"Current space weather from NOAA SWPC public feeds. Returns the latest planetary K-index (3-hour geomagnetic activity), solar wind plasma (density / speed / temperature from ACE/DSCOVR at L1), GOES X-ray flux with NOAA flare class (A/B/C/M/X), and the current NOAA R (radio blackout) / S (solar radiation) / G (geomagnetic storm) scales plus a 24-hour forecast in 6-hour windows. All timestamps are ISO 8601 UTC. No parameters. Useful for aurora forecasting, HF-radio propagation, satellite-operations planning, and GPS-degradation alerts. Data is public domain (NOAA / US government work).","versions":[{"version":null,"path":"/api/space/weather","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{},"additionalProperties":false}}]},{"id":"sports.mlb-schedule","group":"sports","description":"MLB games for a date (and optionally one team), via the official MLB Stats API (free/keyless). Each game: gamePk, start time, detailed status (Scheduled/In Progress/Final), away and home team + score, and venue. Defaults to today when no date is given. Live scores + schedule for agents.","versions":[{"version":null,"path":"/api/sports/mlb-schedule","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"YYYY-MM-DD; defaults to today."},"teamId":{"type":"integer","description":"MLB team id to filter to one club."}},"additionalProperties":false}}]},{"id":"sports.mlb-standings","group":"sports","description":"MLB regular-season standings for a season (official MLB Stats API, free/keyless). Each team: wins, losses, win %, games back, division + league rank, and current streak. Defaults to the current season.","versions":[{"version":null,"path":"/api/sports/mlb-standings","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"season":{"type":"integer","minimum":1900,"maximum":2100}},"additionalProperties":false}}]},{"id":"sports.nba-games","group":"sports","description":"NBA games from balldontlie — schedule and scores in one feed. Filter by season (start year), a single date, and/or team id. Each game: date, season, status, postseason flag, home/visitor teams and final (or live) scores. Cursor-paginated (pass meta.cursor as cursor to continue).","versions":[{"version":null,"path":"/api/sports/nba-games","method":"GET","deprecated":false,"price":{"usd":0.0048},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"season":{"type":"integer","minimum":1946,"maximum":2100,"description":"Season start year, e.g. 2024 for the 2024-25 season."},"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Single date, YYYY-MM-DD."},"team_id":{"type":"integer","exclusiveMinimum":true,"minimum":0,"description":"NBA team id (1–30)."},"cursor":{"type":"string","minLength":1,"description":"Pagination cursor from a prior meta.cursor."},"per_page":{"type":"integer","minimum":1,"maximum":100,"description":"Page size, 1–100 (default 25)."}},"additionalProperties":false}}]},{"id":"sports.nba-players","group":"sports","description":"NBA players from balldontlie — search by name and page through results. Each player: id, name, position, height, weight, jersey number, college, country, draft year, and current team. Cursor-paginated (pass meta.cursor as cursor to continue).","versions":[{"version":null,"path":"/api/sports/nba-players","method":"GET","deprecated":false,"price":{"usd":0.0048},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"search":{"type":"string","minLength":1,"maxLength":100,"description":"Name search (first or last), e.g. \"james\"."},"cursor":{"type":"string","minLength":1,"description":"Pagination cursor from a prior meta.cursor."},"per_page":{"type":"integer","minimum":1,"maximum":100,"description":"Page size, 1–100 (default 25)."}},"additionalProperties":false}}]},{"id":"sports.nba-teams","group":"sports","description":"NBA teams from balldontlie — all 30 franchises with id, full name, abbreviation, conference, division, and city. Pass an optional team id to fetch a single team.","versions":[{"version":null,"path":"/api/sports/nba-teams","method":"GET","deprecated":false,"price":{"usd":0.0048},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":true,"minimum":0,"description":"NBA team id (1–30). Omit to list all teams."}},"additionalProperties":false}}]},{"id":"sports.nfl-games","group":"sports","description":"NFL games from balldontlie — schedule and scores in one feed. Filter by season, week, and/or team id. Each game: date, season, week, status, postseason flag, venue, recap summary, home/visitor teams and final (or live) scores. Cursor-paginated (pass meta.cursor as cursor to continue).","versions":[{"version":null,"path":"/api/sports/nfl-games","method":"GET","deprecated":false,"price":{"usd":0.0048},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"season":{"type":"integer","minimum":1920,"maximum":2100,"description":"Season year, e.g. 2024."},"week":{"type":"integer","minimum":1,"maximum":30,"description":"Week number (regular + postseason)."},"team_id":{"type":"integer","exclusiveMinimum":true,"minimum":0,"description":"NFL team id."},"cursor":{"type":"string","minLength":1,"description":"Pagination cursor from a prior meta.cursor."},"per_page":{"type":"integer","minimum":1,"maximum":100,"description":"Page size, 1–100 (default 25)."}},"additionalProperties":false}}]},{"id":"sports.nfl-players","group":"sports","description":"NFL players from balldontlie — search by name and page through results. Each player: id, name, position, height, weight, jersey number, college, experience, age, and current team. Cursor-paginated (pass meta.cursor as cursor to continue).","versions":[{"version":null,"path":"/api/sports/nfl-players","method":"GET","deprecated":false,"price":{"usd":0.0048},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"search":{"type":"string","minLength":1,"maxLength":100,"description":"Name search (first or last), e.g. \"mahomes\"."},"cursor":{"type":"string","minLength":1,"description":"Pagination cursor from a prior meta.cursor."},"per_page":{"type":"integer","minimum":1,"maximum":100,"description":"Page size, 1–100 (default 25)."}},"additionalProperties":false}}]},{"id":"sports.nfl-teams","group":"sports","description":"NFL teams from balldontlie — all 32 franchises with id, full name, abbreviation, conference (AFC/NFC), division, and city. Pass an optional team id to fetch a single team.","versions":[{"version":null,"path":"/api/sports/nfl-teams","method":"GET","deprecated":false,"price":{"usd":0.0048},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":true,"minimum":0,"description":"NFL team id. Omit to list all teams."}},"additionalProperties":false}}]},{"id":"sports.nhl-schedule","group":"sports","description":"Upcoming NHL game schedule for the week anchored on a date (official NHL api-web, free/keyless). Each game: id, date, start time (UTC), game state (FUT/LIVE/OFF), game type (Preseason/Regular Season/Playoffs), away and home team + abbreviation + score, venue, and TV broadcasts. Optionally filter to one team by 3-letter abbreviation (e.g. TOR). Defaults to the week starting today. Forward-looking matchups for scheduling agents — distinct from nhl-scores (single-day results).","versions":[{"version":null,"path":"/api/sports/nhl-schedule","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"YYYY-MM-DD anchor; returns that day plus the rest of the NHL game week. Defaults to today."},"team":{"type":"string","minLength":2,"maxLength":3,"description":"3-letter NHL team abbreviation to filter to one club (e.g. TOR, BOS, EDM)."}},"additionalProperties":false}}]},{"id":"sports.nhl-scores","group":"sports","description":"NHL scores and games for a date (official NHL api-web, free/keyless). Each game: id, game state (FUT/LIVE/FINAL), start time, away and home team + score. Defaults to today.","versions":[{"version":null,"path":"/api/sports/nhl-scores","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"YYYY-MM-DD; defaults to today."}},"additionalProperties":false}}]},{"id":"sports.nhl-standings","group":"sports","description":"Current NHL standings (official NHL api-web, free/keyless). Each team: conference, division, games played, wins, losses, OT losses, points, goal differential, and current streak.","versions":[{"version":null,"path":"/api/sports/nhl-standings","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{},"additionalProperties":false}}]},{"id":"stocks.company-news","group":"stocks","description":"Recent news articles about a specific US-listed company. Pass ticker and optionally a from/to date window (YYYY-MM-DD; defaults to the last 14 days); returns headlines with source, summary, URL, image, related symbol, category, and publish time (newest first). Use it to catch up on what is being written about a company. News aggregated by Finnhub.","versions":[{"version":null,"path":"/api/stocks/company-news","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"ticker":{"type":"string","minLength":1,"maxLength":12,"pattern":"^[A-Za-z][A-Za-z0-9.\\-]{0,11}$","description":"US-listed ticker symbol."},"from":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Earliest article date YYYY-MM-DD (default: 14 days ago)."},"to":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Latest article date YYYY-MM-DD (default: today)."},"limit":{"type":"integer","minimum":1,"maximum":250,"description":"Max articles to return (default 100)."}},"required":["ticker"],"additionalProperties":false}}]},{"id":"stocks.earnings-surprises","group":"stocks","description":"Historical quarterly earnings surprises for a US-listed company — reported (actual) EPS vs the analyst consensus estimate, the absolute surprise, and the surprise percentage, for the most recent quarters (newest first). Pass ticker (optionally limit). Tells you whether a company has been beating or missing expectations. Data by Finnhub.","versions":[{"version":null,"path":"/api/stocks/earnings-surprises","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"ticker":{"type":"string","minLength":1,"maxLength":12,"pattern":"^[A-Za-z][A-Za-z0-9.\\-]{0,11}$","description":"US-listed ticker symbol."},"limit":{"type":"integer","minimum":1,"maximum":40,"description":"Max quarters to return (default all available, usually 4)."}},"required":["ticker"],"additionalProperties":false}}]},{"id":"stocks.financials-reported","group":"stocks","description":"As-reported financial statements for a US-listed company, exactly as filed with the SEC — balance sheet, income statement, and cash-flow statement line items, parsed from each 10-K/10-Q. Pass ticker and optionally freq (annual or quarterly) and limit; returns the most recent filings (newest first) with filing metadata (form, period, filed date, accession) and the full report under `report`. Data by Finnhub.","versions":[{"version":null,"path":"/api/stocks/financials-reported","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"ticker":{"type":"string","minLength":1,"maxLength":12,"pattern":"^[A-Za-z][A-Za-z0-9.\\-]{0,11}$","description":"US-listed ticker symbol."},"freq":{"type":"string","enum":["annual","quarterly"],"description":"Statement frequency. Default: annual."},"limit":{"type":"integer","minimum":1,"maximum":20,"description":"Max filings to return (default 4)."}},"required":["ticker"],"additionalProperties":false}}]},{"id":"stocks.gov-spending","group":"stocks","description":"US federal government spending awarded to a public company (sourced from USAspending). Pass ticker and optionally a from/to window (YYYY-MM-DD; defaults to ~2 years); returns each award with the recipient (and parent), awarding agency/sub-agency, obligated/outlayed/potential/total values in USD, action date, and period of performance. Use it to see how much federal money flows to a company. Data by Finnhub.","versions":[{"version":null,"path":"/api/stocks/gov-spending","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"ticker":{"type":"string","minLength":1,"maxLength":12,"pattern":"^[A-Za-z][A-Za-z0-9.\\-]{0,11}$","description":"US-listed ticker symbol."},"from":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Earliest action date YYYY-MM-DD (default: ~2 years ago)."},"to":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Latest action date YYYY-MM-DD (default: today)."},"limit":{"type":"integer","minimum":1,"maximum":500,"description":"Max awards to return (default 100)."}},"required":["ticker"],"additionalProperties":false}}]},{"id":"stocks.h1b-visas","group":"stocks","description":"US work-visa (H-1B and related) applications filed by a public company, sourced from Department of Labor LCA disclosures. Pass ticker and optionally a from/to window (YYYY-MM-DD; defaults to ~2 years); returns each application with job title, SOC code, visa class, case status, wage range, worksite city/state, employment dates, and case number. Use it as a hiring/headcount signal. Data by Finnhub.","versions":[{"version":null,"path":"/api/stocks/h1b-visas","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"ticker":{"type":"string","minLength":1,"maxLength":12,"pattern":"^[A-Za-z][A-Za-z0-9.\\-]{0,11}$","description":"US-listed ticker symbol."},"from":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Earliest received date YYYY-MM-DD (default: ~2 years ago)."},"to":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Latest received date YYYY-MM-DD (default: today)."},"limit":{"type":"integer","minimum":1,"maximum":500,"description":"Max applications to return (default 100)."}},"required":["ticker"],"additionalProperties":false}}]},{"id":"stocks.insider-sentiment","group":"stocks","description":"Aggregated insider sentiment for a US-listed company, by month. For each month returns the net change in insider share holdings and Finnhub's MSPR (Monthly Share Purchase Ratio, −100 to +100 — higher means more net insider buying). Pass ticker and optionally a from/to window (YYYY-MM-DD; defaults to ~1 year). A distilled signal layered on top of raw insider filings. Data by Finnhub.","versions":[{"version":null,"path":"/api/stocks/insider-sentiment","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"ticker":{"type":"string","minLength":1,"maxLength":12,"pattern":"^[A-Za-z][A-Za-z0-9.\\-]{0,11}$","description":"US-listed ticker symbol."},"from":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Earliest month date YYYY-MM-DD (default: ~1 year ago)."},"to":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Latest month date YYYY-MM-DD (default: today)."}},"required":["ticker"],"additionalProperties":false}}]},{"id":"stocks.lobbying","group":"stocks","description":"US federal lobbying disclosures for a public company (sourced from US Senate LDA filings). Pass ticker and optionally a from/to window (YYYY-MM-DD; defaults to ~3 years); returns each filing with the registrant name, the period (year + quarter), reported lobbying income/expenses in USD, and a link to the official Senate filing. Use it to track a company’s lobbying spend over time. Data by Finnhub.","versions":[{"version":null,"path":"/api/stocks/lobbying","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"ticker":{"type":"string","minLength":1,"maxLength":12,"pattern":"^[A-Za-z][A-Za-z0-9.\\-]{0,11}$","description":"US-listed ticker symbol."},"from":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Earliest filing date YYYY-MM-DD (default: ~3 years ago)."},"to":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Latest filing date YYYY-MM-DD (default: today)."},"limit":{"type":"integer","minimum":1,"maximum":500,"description":"Max filings to return (default 100)."}},"required":["ticker"],"additionalProperties":false}}]},{"id":"stocks.metrics","group":"stocks","description":"Key fundamental metrics and 52-week price statistics for a US-listed company. Pass ticker; returns headline valuation, margin, and per-share figures — P/E, P/B, P/S, PEG, EV/EBITDA, gross/operating/net margins, ROE, ROA, current ratio, debt/equity, dividend yield, beta, 52-week high/low, and YTD/52-week price returns — plus the full Finnhub metric map under `metric`. Computed ratios you would otherwise derive yourself from raw filings. Market & fundamental data by Finnhub.","versions":[{"version":null,"path":"/api/stocks/metrics","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"ticker":{"type":"string","minLength":1,"maxLength":12,"pattern":"^[A-Za-z][A-Za-z0-9.\\-]{0,11}$","description":"US-listed ticker symbol."}},"required":["ticker"],"additionalProperties":false}}]},{"id":"stocks.patents","group":"stocks","description":"USPTO patent activity associated with a public company. Pass ticker and optionally a from/to window (YYYY-MM-DD; defaults to ~2 years); returns each record with the application number, patent number (when granted), the filing company name(s), description/title, patent type, filing status, filing and publication dates, and a document URL. A company-level innovation/R&D signal (distinct from our keyword patent search). Data by Finnhub.","versions":[{"version":null,"path":"/api/stocks/patents","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"ticker":{"type":"string","minLength":1,"maxLength":12,"pattern":"^[A-Za-z][A-Za-z0-9.\\-]{0,11}$","description":"US-listed ticker symbol."},"from":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Earliest filing date YYYY-MM-DD (default: ~2 years ago)."},"to":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Latest filing date YYYY-MM-DD (default: today)."},"limit":{"type":"integer","minimum":1,"maximum":500,"description":"Max records to return (default 100)."}},"required":["ticker"],"additionalProperties":false}}]},{"id":"stocks.peers","group":"stocks","description":"Peer companies for a US-listed ticker — other companies in the same sector and sub-industry, useful for comparables, relative valuation, and screening. Pass ticker (optionally grouping to control how peers are grouped); returns a ranked list of peer ticker symbols (the input symbol is usually first). Data by Finnhub.","versions":[{"version":null,"path":"/api/stocks/peers","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"ticker":{"type":"string","minLength":1,"maxLength":12,"pattern":"^[A-Za-z][A-Za-z0-9.\\-]{0,11}$","description":"US-listed ticker symbol."},"grouping":{"type":"string","enum":["sector","industry","subIndustry"],"description":"How to group peers. Default: sub-industry."}},"required":["ticker"],"additionalProperties":false}}]},{"id":"stocks.quote","group":"stocks","description":"Latest daily stock quote for a US-listed ticker. Returns the most recent completed trading session: open, high, low, close, volume, VWAP, and trade count, plus the change and percent change versus the prior session, and company reference data (name, primary exchange, security type, currency, market cap). NOTE: this plan tier serves end-of-day / delayed data (the response flags delayed=true), suitable for daily snapshots, fundamentals context, and post-close analysis rather than real-time trading. Pass ticker as a US symbol (e.g. AAPL, MSFT, BRK.B). Market data by Massive (formerly Polygon.io).","versions":[{"version":null,"path":"/api/stocks/quote","method":"GET","deprecated":false,"price":{"usd":0.0018},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"ticker":{"type":"string","minLength":1,"maxLength":12,"pattern":"^[A-Za-z][A-Za-z0-9.\\-]{0,11}$","description":"US-listed ticker symbol."}},"required":["ticker"],"additionalProperties":false}}]},{"id":"stocks.recommendations","group":"stocks","description":"Analyst recommendation trend for a US-listed company — the number of analysts rating it strong buy, buy, hold, sell, and strong sell, snapshotted per month (newest first). Pass ticker. Use it to see the consensus and how sentiment is shifting over time. Data by Finnhub.","versions":[{"version":null,"path":"/api/stocks/recommendations","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"ticker":{"type":"string","minLength":1,"maxLength":12,"pattern":"^[A-Za-z][A-Za-z0-9.\\-]{0,11}$","description":"US-listed ticker symbol."}},"required":["ticker"],"additionalProperties":false}}]},{"id":"stocks.screener","group":"stocks","description":"Fundamental stock screener built on SEC EDGAR XBRL Frames — screen every public filer on a reported financial concept for one period, in a single call. Absolute mode: give a concept (e.g. Revenues, NetIncomeLoss, Assets), a period (CY2023 annual, CY2024Q1 quarter, CY2024Q1I instant), and an optional op/value to filter (e.g. Revenues gte 10000000000 → companies with >= $10B FY2023 revenue). Ratio mode: add ratioConcept to compute concept / ratioConcept per company joined by CIK, then op/value filter the ratio (e.g. concept=GrossProfit, ratioConcept=Revenues, op=gte, value=0.7 → gross margin >= 70%). Returns matching companies with CIK, entity name, value (and ratio), sorted, plus meta with the total matched and the screenable universe size. Free, public-domain (SEC EDGAR).","versions":[{"version":null,"path":"/api/stocks/screener","method":"GET","deprecated":false,"price":{"usd":0.0048},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"concept":{"type":"string","pattern":"^[A-Za-z0-9]+$","minLength":2,"maxLength":80,"description":"XBRL us-gaap concept, e.g. Revenues, GrossProfit, NetIncomeLoss, Assets."},"period":{"type":"string","pattern":"^CY\\d{4}(Q[1-4]I?)?$","description":"CY2023 (annual), CY2024Q1 (quarter), CY2024Q1I (instant, for balance-sheet items)."},"unit":{"type":"string","minLength":1,"maxLength":20,"description":"Unit (default USD)."},"op":{"type":"string","enum":["gt","gte","lt","lte"],"description":"Comparison operator (with value). Filters the concept value, or the ratio when ratioConcept is set."},"value":{"type":"number","description":"Comparison threshold (with op). For ratios use a fraction, e.g. 0.7 for 70%."},"ratioConcept":{"type":"string","pattern":"^[A-Za-z0-9]+$","minLength":2,"maxLength":80,"description":"Optional second XBRL concept; computes ratio = concept / ratioConcept per company (joined by CIK), and op/value then filter the ratio."},"sort":{"type":"string","enum":["asc","desc"],"description":"Sort by value/ratio (default desc)."},"limit":{"type":"integer","minimum":1,"maximum":100,"description":"Max companies (1-100, default 25)."}},"required":["concept","period"],"additionalProperties":false}}]},{"id":"stocks.symbols","group":"stocks","description":"Search or list the tradable equity symbol universe for an exchange. Pass q to substring-match on symbol or company name (case-insensitive), and/or exchange (default US) and limit. Returns matching listings with symbol, display symbol, description (company name), security type (e.g. Common Stock, ETF), currency, MIC, and FIGI. Use it to resolve a name to a ticker or enumerate a market. Data by Finnhub.","versions":[{"version":null,"path":"/api/stocks/symbols","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"q":{"type":"string","minLength":1,"maxLength":64,"description":"Substring match on symbol or company name (case-insensitive)."},"exchange":{"type":"string","minLength":1,"maxLength":8,"pattern":"^[A-Za-z]+$","description":"Exchange code (default US)."},"limit":{"type":"integer","minimum":1,"maximum":500,"description":"Max rows to return (default 50)."}},"additionalProperties":false}}]},{"id":"store.blob-delete","group":"store","description":"STORE: delete a file you uploaded, scoped to YOUR wallet — removes the bytes from storage and the metadata. Idempotent: deleting a missing key succeeds with deleted:false. Private to your wallet (the x402 payer).","versions":[{"version":null,"path":"/api/store/blob-delete","method":"POST","deprecated":false,"price":{"usd":0.002},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"ns":{"type":"string","description":"Namespace the blob lives in."},"key":{"type":"string","description":"Key to delete."}},"required":["ns","key"],"additionalProperties":false}}]},{"id":"store.blob-get","group":"store","description":"STORE: download a file you uploaded with store.blob-put, in a single paid call, scoped to YOUR wallet. The response body IS the raw bytes (with the stored Content-Type) — no extra fetch, no public URL. Every read is an x402-tolled call streamed through us, so your data can never be fetched without payment. Reading resets the 90-day TTL. 404 if the key doesn't exist or has expired. Private to your wallet (the x402 payer).","versions":[{"version":null,"path":"/api/store/blob-get","method":"POST","deprecated":false,"price":{"usd":0.01},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"ns":{"type":"string","description":"Namespace the blob lives in."},"key":{"type":"string","description":"Key to download."}},"required":["ns","key"],"additionalProperties":false}}]},{"id":"store.blob-list","group":"store","description":"STORE: list the files you've uploaded in a namespace, scoped to YOUR wallet — keys, sizes, content types, expiry (metadata only, not the bytes). Optional prefix filter + cursor pagination (pass nextCursor as `after`). Listing does NOT extend TTLs or move bytes. Private to your wallet (the x402 payer).","versions":[{"version":null,"path":"/api/store/blob-list","method":"POST","deprecated":false,"price":{"usd":0.002},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"ns":{"type":"string","description":"Namespace to list."},"prefix":{"type":"string","description":"Only return keys starting with this prefix."},"limit":{"type":"integer","minimum":1,"maximum":1000,"description":"Max keys to return. Default 50, max 1000."},"after":{"type":"string","description":"Cursor — pass the previous response's nextCursor to page forward."}},"required":["ns"],"additionalProperties":false}}]},{"id":"store.blob-put","group":"store","description":"STORE: upload a file (any bytes) in a single paid call, scoped to YOUR wallet. Send the file base64-encoded in `data` with an optional contentType; we store it privately and key it to your payer address. Read it back with store.blob-get. Up to 3 MB per file (one-call limit); 50 MB total per wallet across kv/documents/vectors/files. Kept on a rolling 90-day window that resets on every touch. There is NO public URL — only paid store.blob-get can read it, so your bytes are never fetchable without payment. No account or API key.","versions":[{"version":null,"path":"/api/store/blob-put","method":"POST","deprecated":false,"price":{"usd":0.01},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"ns":{"type":"string","description":"Namespace to group blobs, 1-64 chars of [A-Za-z0-9._:-]. e.g. \"uploads\"."},"key":{"type":"string","description":"Key within the namespace, up to 256 chars. e.g. \"snapshot-42.json\"."},"data":{"type":"string","minLength":1,"description":"The file bytes, base64-encoded. Decoded size up to 3 MB."},"contentType":{"type":"string","maxLength":128,"description":"MIME type to return on read. e.g. \"application/json\", \"image/png\". Default application/octet-stream."}},"required":["ns","key","data"],"additionalProperties":false}}]},{"id":"store.doc-delete","group":"store","description":"STORE: delete a stored document by id, scoped to YOUR wallet. Idempotent — deleting a missing id succeeds with deleted:false. Private to your wallet (the x402 payer).","versions":[{"version":null,"path":"/api/store/doc-delete","method":"POST","deprecated":false,"price":{"usd":0.002},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"ns":{"type":"string","description":"Namespace the document lives in."},"id":{"type":"string","description":"Document id to delete."}},"required":["ns","id"],"additionalProperties":false}}]},{"id":"store.doc-get","group":"store","description":"STORE: fetch a stored document by id, scoped to YOUR wallet. Returns its body + meta. Reading resets the 90-day TTL (extend-on-touch). 404 if missing or expired. Private to your wallet (the x402 payer).","versions":[{"version":null,"path":"/api/store/doc-get","method":"POST","deprecated":false,"price":{"usd":0.002},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"ns":{"type":"string","description":"Namespace the document lives in."},"id":{"type":"string","description":"Document id to fetch."}},"required":["ns","id"],"additionalProperties":false}}]},{"id":"store.doc-put","group":"store","description":"STORE: index a text document for full-text keyword search, scoped to YOUR wallet. Store body text (up to 1 MB) under an id with optional JSON meta; later find it with store.doc-search (SQLite FTS5 keyword ranking). Re-putting the same id replaces it. Kept on a rolling 90-day window. Private to your wallet (the x402 payer) — no account or API key.","versions":[{"version":null,"path":"/api/store/doc-put","method":"POST","deprecated":false,"price":{"usd":0.002},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"ns":{"type":"string","description":"Namespace to group documents."},"id":{"type":"string","description":"Document id within the namespace, up to 256 chars."},"body":{"type":"string","minLength":1,"description":"The text to index, up to 1 MB."},"meta":{"description":"Optional JSON metadata returned with search hits (not indexed). e.g. {\"title\":\"notes\",\"tags\":[\"x\"]}."}},"required":["ns","id","body"],"additionalProperties":false}}]},{"id":"store.doc-search","group":"store","description":"STORE: full-text keyword search over documents you stored in a namespace, scoped to YOUR wallet. Uses SQLite FTS5 — supports terms, phrases (\"...\"), AND/OR/NOT, and prefix* matching. Returns ranked hits with body + meta + a relevance score (higher = better). Searching does NOT extend TTLs. Private to your wallet (the x402 payer).","versions":[{"version":null,"path":"/api/store/doc-search","method":"POST","deprecated":false,"price":{"usd":0.002},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"ns":{"type":"string","description":"Namespace to search."},"query":{"type":"string","minLength":1,"description":"FTS5 query. e.g. `invoice AND 2026`, `\"exact phrase\"`, `lim*`."},"limit":{"type":"integer","minimum":1,"maximum":1000,"description":"Max hits. Default 50, max 1000."}},"required":["ns","query"],"additionalProperties":false}}]},{"id":"store.kv-delete","group":"store","description":"STORE: delete a key/value you stored, scoped to YOUR wallet. Returns whether a value was removed. Idempotent — deleting a missing key succeeds with deleted:false. Private to your wallet (the x402 payer).","versions":[{"version":null,"path":"/api/store/kv-delete","method":"POST","deprecated":false,"price":{"usd":0.002},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"ns":{"type":"string","description":"Namespace the key lives in."},"key":{"type":"string","description":"Key to delete."}},"required":["ns","key"],"additionalProperties":false}}]},{"id":"store.kv-get","group":"store","description":"STORE: read back a JSON value you stored with store.kv-put, scoped to YOUR wallet. Returns the value and its expiry. Reading the object resets its 90-day TTL (extend-on-touch). Returns 404 if the key doesn't exist or has expired. Data is private to your wallet (the x402 payer) — no account or API key.","versions":[{"version":null,"path":"/api/store/kv-get","method":"POST","deprecated":false,"price":{"usd":0.002},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"ns":{"type":"string","description":"Namespace the key lives in."},"key":{"type":"string","description":"Key to read."}},"required":["ns","key"],"additionalProperties":false}}]},{"id":"store.kv-put","group":"store","description":"STORE: persist a JSON value under a key, scoped to YOUR wallet (the x402 payer). Key/value store with retrieval — set a value once, read it back later with store.kv-get or list with store.kv-scan. Data is private to your wallet and kept on a rolling 90-day window that resets every time you touch the object. Use a namespace (ns) to group related keys. Value up to 1 MB; 50 MB total per wallet across kv/documents/vectors/files. No account or API key — pay per call with x402 and your data is keyed to your payer address.","versions":[{"version":null,"path":"/api/store/kv-put","method":"POST","deprecated":false,"price":{"usd":0.002},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"ns":{"type":"string","description":"Namespace to group keys, 1-64 chars of [A-Za-z0-9._:-]. e.g. \"memory\" or \"session:42\"."},"key":{"type":"string","description":"Key within the namespace, up to 256 chars of [A-Za-z0-9._:/-]."},"value":{"description":"Any JSON value (object, array, string, number, boolean, null). Up to 1 MB serialized."}},"required":["ns","key"],"additionalProperties":false}}]},{"id":"store.kv-scan","group":"store","description":"STORE: list keys in a namespace, scoped to YOUR wallet, optionally filtered by key prefix and paginated with a cursor. Set values:true to include each value inline. Ordered by key; returns nextCursor when more remain (pass it as `after`). Scanning does NOT extend TTLs. Private to your wallet (the x402 payer).","versions":[{"version":null,"path":"/api/store/kv-scan","method":"POST","deprecated":false,"price":{"usd":0.002},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"ns":{"type":"string","description":"Namespace to list."},"prefix":{"type":"string","description":"Only return keys starting with this prefix. e.g. \"session:\"."},"limit":{"type":"integer","minimum":1,"maximum":1000,"description":"Max keys to return. Default 50, max 1000."},"after":{"type":"string","description":"Cursor — pass the previous response's nextCursor to page forward."},"values":{"type":"boolean","description":"Include each value inline (default false — keys only)."}},"required":["ns"],"additionalProperties":false}}]},{"id":"store.usage","group":"store","description":"STORE: report how much storage YOUR wallet is using — structured bytes (kv + documents + vectors) and blob bytes. Use it to track headroom against the 50 MB per-wallet total (across kv/documents/vectors/files). Scoped to your wallet (the x402 payer); reports only your own usage.","versions":[{"version":null,"path":"/api/store/usage","method":"POST","deprecated":false,"price":{"usd":0.002},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{},"additionalProperties":false}}]},{"id":"store.vector-delete","group":"store","description":"STORE: delete a vector by id from a namespace, scoped to YOUR wallet. Idempotent — deleting a missing id succeeds with deleted:false. Private to your wallet (the x402 payer).","versions":[{"version":null,"path":"/api/store/vector-delete","method":"POST","deprecated":false,"price":{"usd":0.002},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"ns":{"type":"string","description":"Namespace the vector lives in."},"id":{"type":"string","description":"Vector id to delete."}},"required":["ns","id"],"additionalProperties":false}}]},{"id":"store.vector-query","group":"store","description":"STORE: nearest-neighbor search over vectors you upserted in a namespace, scoped to YOUR wallet. Pass a query embedding (same dimensionality as the stored vectors) and get the top-K most similar by cosine similarity, each with its body + meta + score (1.0 = identical). The retrieval half of agent memory / RAG — bring your own query embedding. Querying does NOT extend TTLs. Private to your wallet (the x402 payer).","versions":[{"version":null,"path":"/api/store/vector-query","method":"POST","deprecated":false,"price":{"usd":0.01},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"ns":{"type":"string","description":"Namespace (index) to search."},"embedding":{"type":"array","items":{"type":"number"},"minItems":1,"maxItems":4096,"description":"Query embedding (float array), same dimensionality as the stored vectors."},"topK":{"type":"integer","minimum":1,"maximum":100,"description":"How many neighbors to return. Default 10, max 100."}},"required":["ns","embedding"],"additionalProperties":false}}]},{"id":"store.vector-upsert","group":"store","description":"STORE: upsert a vector for semantic retrieval, scoped to YOUR wallet. Bring your own embedding (any model, any dimension up to 4096) — store it under an id with optional body text + JSON meta, then find nearest neighbors with store.vector-query. Re-upserting the same id replaces it. This is the memory/RAG primitive for agents: no embedding key required on our side, no account, pay per call with x402. Kept on a rolling 90-day window.","versions":[{"version":null,"path":"/api/store/vector-upsert","method":"POST","deprecated":false,"price":{"usd":0.005},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"ns":{"type":"string","description":"Namespace (an index) to group vectors. Vectors in a namespace should share dimensionality."},"id":{"type":"string","description":"Vector id within the namespace, up to 256 chars."},"embedding":{"type":"array","items":{"type":"number"},"minItems":1,"maxItems":4096,"description":"The embedding as a float array (your model's output). 1-4096 dims."},"body":{"type":"string","description":"Optional source text returned with query hits (e.g. the chunk this vector embeds)."},"meta":{"description":"Optional JSON metadata returned with query hits. e.g. {\"docId\":\"d1\",\"page\":3}."}},"required":["ns","id","embedding"],"additionalProperties":false}}]},{"id":"sunrise.compute","group":"sunrise","description":"Compute sunrise, sunset, solar noon, and civil/nautical/astronomical twilight times for a coordinate + date. Query: lat (-90..90), lon (-180..180), date (YYYY-MM-DD). All times returned as ISO 8601 UTC. At high latitudes near solstices an event may not occur (polar day/night) — those fields return null and a note is included. dayLengthMinutes is the sunrise→sunset interval.","versions":[{"version":null,"path":"/api/sunrise/compute","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"lat":{"type":"number","minimum":-90,"maximum":90},"lon":{"type":"number","minimum":-180,"maximum":180},"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},"required":["lat","lon","date"],"additionalProperties":false}}]},{"id":"tax.vat","group":"tax","description":"Validate a European Union VAT number against the official VIES (VAT Information Exchange System) register in real time. Confirms whether the VAT identifier is currently registered for intra-EU trade and, when the member state discloses them, returns the registered business name and address. Covers the 27 EU member states (Greece as EL) plus Northern Ireland (XI); Great Britain (GB) is not in VIES. Pass either a full identifier (vat=DE811569869) or country + number. Returns {valid, countryCode, vatNumber, name, address, requestDate, reason}. When a member-state register is temporarily down, returns a retryable 503 rather than a false negative. Data from the European Commission VIES service.","versions":[{"version":null,"path":"/api/tax/vat","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"vat":{"type":"string","minLength":3,"maxLength":20,"description":"Full VAT identifier: 2-letter country prefix + number, e.g. \"DE811569869\" or \"NL810433941B01\" (spaces/dots/hyphens allowed)."},"country":{"type":"string","minLength":2,"maxLength":2,"description":"2-letter VAT country prefix, e.g. \"DE\". Greece is EL (GR also accepted); Northern Ireland is XI. Use with number."},"number":{"type":"string","minLength":2,"maxLength":18,"description":"The VAT number without the country prefix, e.g. \"811569869\". Use with country."}},"additionalProperties":false,"description":"Provide either vat (a full identifier) or both country and number."}}]},{"id":"tax.vat-rates","group":"tax","description":"Current EU VAT rates by member state — standard rate plus reduced/super-reduced/parking/zero rates. Pass `country` (ISO 2-letter; Greece is EL) for one state, or omit it for all 27. Each result returns the standard rate, the list of reduced rates in force, every rate category with its percentage, and the date the rates are in force. Source: European Commission TEDB (Taxes in Europe Database), refreshed regularly. Pairs with tax.vat (which validates a specific VAT number against the live VIES register).","versions":[{"version":null,"path":"/api/tax/vat-rates","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"country":{"type":"string","pattern":"^[A-Za-z]{2}$"}},"additionalProperties":false}}]},{"id":"tcg.card","group":"tcg","description":"Price a single trading card. Pass game (categoryId or name), set (the groupId), and productId (the TCGplayer product id, from tcg.set-prices). Returns the matching card { productId, name, number, rarity, prices:[{ subType, market, low, mid, high }], url } with every printing/subtype. 404 if the productId is not in that set. Source: TCGplayer-derived pricing via tcgcsv.com.","versions":[{"version":null,"path":"/api/tcg/card","method":"GET","deprecated":false,"price":{"usd":0.0048},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"game":{"type":"string","minLength":1,"maxLength":60,"description":"TCGplayer game: categoryId (e.g. 3) or name (e.g. \"pokemon\")."},"set":{"type":"integer","exclusiveMinimum":true,"minimum":0,"description":"groupId of the set (from tcg.sets)."},"productId":{"type":"integer","exclusiveMinimum":true,"minimum":0,"description":"TCGplayer productId of the card (from tcg.set-prices)."}},"required":["game","set","productId"],"additionalProperties":false}}]},{"id":"tcg.games","group":"tcg","description":"List every trading-card game / category covered by TCGplayer pricing (Magic: The Gathering, Pokemon, Yu-Gi-Oh!, Disney Lorcana, One Piece, and ~85 more). Each row is { categoryId, name, displayName }. Use the categoryId (or the name) as the `game` parameter on tcg.sets, tcg.set-prices, and tcg.card. No parameters. Source: TCGplayer-derived pricing via tcgcsv.com.","versions":[{"version":null,"path":"/api/tcg/games","method":"GET","deprecated":false,"price":{"usd":0.0048},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{},"additionalProperties":false}}]},{"id":"tcg.set-prices","group":"tcg","description":"Price an entire trading-card set in one call. Pass game (categoryId or name, e.g. \"pokemon\") and set (the groupId from tcg.sets). Returns each card joined to its prices: { productId, name, number, rarity, prices:[{ subType, market, low, mid, high }], url }. subType separates printings (Normal, Foil, Reverse Holofoil, 1st Edition, etc.). Capped to limit cards (default 100, max 500); total is the full set size (pre-limit), meta.returned is how many rows came back. This is the core \"value a whole set / list card prices\" call. Source: TCGplayer-derived pricing via tcgcsv.com.","versions":[{"version":null,"path":"/api/tcg/set-prices","method":"GET","deprecated":false,"price":{"usd":0.0048},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"game":{"type":"string","minLength":1,"maxLength":60,"description":"TCGplayer game: categoryId (e.g. 3) or name (e.g. \"pokemon\")."},"set":{"type":"integer","exclusiveMinimum":true,"minimum":0,"description":"groupId of the set (from tcg.sets)."},"limit":{"type":"integer","minimum":1,"maximum":500,"description":"Max cards to return (default 100, max 500)."}},"required":["game","set"],"additionalProperties":false}}]},{"id":"tcg.sets","group":"tcg","description":"List the sets (groups) for a trading-card game — e.g. every Pokemon or Magic: The Gathering set. Pass game (a categoryId like 3, or a name like \"pokemon\"/\"magic\" — resolved against tcg.games), optional q (case-insensitive substring filter on set name), and optional limit (default 100, max 500). Each row is { groupId, name, abbreviation, publishedOn, isSupplemental }. Use the groupId as the `set` parameter on tcg.set-prices / tcg.card. total is the full match count (pre-limit). Source: TCGplayer-derived pricing via tcgcsv.com.","versions":[{"version":null,"path":"/api/tcg/sets","method":"GET","deprecated":false,"price":{"usd":0.0048},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"game":{"type":"string","minLength":1,"maxLength":60,"description":"TCGplayer game: categoryId (e.g. 3) or name (e.g. \"pokemon\", \"magic\")."},"q":{"type":"string","maxLength":80,"description":"Case-insensitive substring filter on set name."},"limit":{"type":"integer","minimum":1,"maximum":500,"description":"Max sets to return (default 100, max 500)."}},"required":["game"],"additionalProperties":false}}]},{"id":"telecom.fcc-filings","group":"telecom","description":"Search FCC Electronic Comment Filing System (ECFS) filings for a proceeding/docket (e.g. 17-108 net neutrality, 11-42 Lifeline). Optionally filter by filer name. Returns the newest filings with the submission id, filer, type, lead bureau, received/disseminated dates, and document count. Public-domain federal data. Track FCC regulatory dockets, comments, and ex-parte filings an LLM can't recite fresh.","versions":[{"version":null,"path":"/api/telecom/fcc-filings","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"proceeding":{"type":"string","pattern":"^\\d{1,3}-\\d{1,4}$"},"filer":{"type":"string","maxLength":120},"limit":{"type":"integer","minimum":1,"maximum":50}},"required":["proceeding"],"additionalProperties":false}}]},{"id":"telecom.market-area","group":"telecom","description":"Map a US latitude/longitude to its FCC spectrum-licensing geographies — Cellular Market Area (CMA), Basic Trading Area (BTA), Major Trading Area (MTA), Partial Economic Area (PEA), and the BEA/EAG/MEA/REAG economic areas — plus the 2020 Census block FIPS, county, and block population. Keyless, public-domain (FCC). These market areas define spectrum-license boundaries (which CMA/BTA/PEA a point falls in) — distinct from ordinary geocoding, and not derivable by an LLM.","versions":[{"version":null,"path":"/api/telecom/market-area","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"lat":{"type":"number","minimum":-90,"maximum":90},"lon":{"type":"number","minimum":-180,"maximum":180}},"required":["lat","lon"],"additionalProperties":false}}]},{"id":"tides.now","group":"tides","description":"Next high/low tide predictions near a coordinate. Query: lat (-90..90), lon (-180..180), radius_km (1-500, default 100), hours (1-72, default 24). Returns { query, station:{ id, name, latitude, longitude, state, distanceKm }, predictions[{ time (station local), type: \"high\"|\"low\", heightMeters }], source }. Returns 404 NO_STATION if no NOAA tide station is within radius. Heights are referenced to MLLW (Mean Lower-Low Water).","versions":[{"version":null,"path":"/api/tides/now","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"lat":{"type":"number","minimum":-90,"maximum":90},"lon":{"type":"number","minimum":-180,"maximum":180},"radius_km":{"type":"number","minimum":1,"maximum":500,"default":100},"hours":{"type":"number","minimum":1,"maximum":72,"default":24}},"required":["lat","lon"],"additionalProperties":false}}]},{"id":"time.parse","group":"time","description":"Parse a timestamp or date string into canonical forms — zero-dependency. Accepts unix seconds/millis or any standard date string (ISO-8601, RFC-2822, etc.). Returns UTC ISO, unix seconds + millis, RFC-2822, calendar components (year/month/day/hour/minute/second/weekday), ISO weekday, ISO year+week, and day-of-year. Pass an IANA timezone (tz) to also get the DST-correct local wall-clock time and UTC offset. The reliable time primitive for agents normalizing or converting timestamps.","versions":[{"version":null,"path":"/api/time/parse","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"input":{"type":"string","minLength":1,"maxLength":100,"description":"Timestamp or date string, e.g. \"2026-06-21T15:30:00Z\" or 1750000000."},"tz":{"type":"string","minLength":2,"maxLength":64,"description":"Optional IANA timezone for local conversion, e.g. America/New_York."}},"required":["input"],"additionalProperties":false}}]},{"id":"timezone.lookup","group":"timezone","description":"Resolve a coordinate to its IANA timezone and return the current UTC offset, local wall time, DST status, and short abbreviation. Query: lat (-90..90), lon (-180..180), at (optional ISO 8601 instant; defaults to now). Returns { tz, abbreviation, offsetMinutes, offsetHours, localTime, observesDst, isDst, januaryOffsetMinutes, julyOffsetMinutes, instant, source }. Polygon lookup against a CC0 timezone boundary index; offsets and DST come from the runtime tzdata so transition rules stay current. Use when scheduling for a coordinate, converting timestamps to local wall time, or checking whether a location is currently observing daylight saving.","versions":[{"version":null,"path":"/api/timezone/lookup","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"lat":{"type":"number","minimum":-90,"maximum":90,"description":"Latitude in degrees, -90..90."},"lon":{"type":"number","minimum":-180,"maximum":180,"description":"Longitude in degrees, -180..180."},"at":{"type":"string","format":"date-time","description":"Optional ISO 8601 instant. Defaults to the current server time."}},"required":["lat","lon"],"additionalProperties":false}}]},{"id":"tld.info","group":"tld","description":"TLD registry intelligence and public-suffix analysis. Mode 1 (tld=io): IANA root-zone metadata — type (generic / country-code / sponsored), managing organization, unicode form for IDN TLDs. Mode 2 (domain=shop.example.co.uk): full Public Suffix List algorithm — the effective public suffix (co.uk), the registrable domain (example.co.uk), the subdomain part, the matched PSL rule, and whether the suffix is ICANN (registry) or private (corporate, e.g. github.io / s3.amazonaws.com) — plus the root-zone metadata for its TLD. Correctly handles wildcard and exception rules and IDN/punycode input. Use for cookie scoping, per-registrant rate limiting, URL dedup, and abuse/phishing analysis. Data: IANA root zone + Mozilla PSL, refreshed weekly.","versions":[{"version":null,"path":"/api/tld/info","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"tld":{"type":"string","minLength":2,"maxLength":64,"description":"TLD label, e.g. \"io\" or \".рф\". Provide tld or domain, not both."},"domain":{"type":"string","minLength":3,"maxLength":253,"description":"Domain name to analyze, e.g. \"shop.example.co.uk\"."}},"additionalProperties":false}}]},{"id":"tls.cert-info","group":"tls","description":"Open a live TLS connection to a host and return its certificate. Give a host (and optional port, default 443). Returns the negotiated TLS protocol + cipher, whether the chain validates against system roots, and the leaf certificate's subject + issuer (CN/O/C), validity window (valid-from / valid-to), days until expiry + expired flag, serial number, SHA-256 fingerprint, Subject Alternative Names, and the chain length. A genuine network probe agents can't do from their sandbox — for cert-expiry monitoring, TLS audits, and verifying who issued a site's certificate. SSRF-guarded: the host must resolve to a public address. Self-signed and expired certs are reported (not rejected).","versions":[{"version":null,"path":"/api/tls/cert-info","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"host":{"type":"string","minLength":1,"maxLength":253},"port":{"type":"integer","minimum":1,"maximum":65535,"default":443}},"required":["host"],"additionalProperties":false}}]},{"id":"trade.commodity-resolve","group":"trade","description":"Cross-walk a traded-good code across HS (6-digit international Harmonized System) <-> HTS (US 10-digit import) <-> Schedule B (US 10-digit export) <-> NAICS industry. Pass the system + code and get the shared HS6, the official description, the matching Schedule B and HTS national lines, the NAICS industry(ies), and the SITC code. The join an import/export, customs, or supply-chain agent needs to move between the export schedule, the import tariff schedule, the international HS level, and the industry that makes the good -- all keyed on the globally-harmonized HS6 bridge. Backed by bundled public-domain US Census Foreign Trade concordances (Schedule B + HTS, latest annual). For a 10-digit input the NAICS is narrowed to that exact national line; cross-schedule lines are surfaced via the shared HS6 and flagged in notes. Companion to trade.tariff (duty rates) and business.naics (industry detail).","versions":[{"version":null,"path":"/api/trade/commodity-resolve","method":"GET","deprecated":false,"price":{"usd":0.0036},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"system":{"type":"string","enum":["hs","hts","scheduleb"],"description":"Which system the input code is in: hs (6-digit intl), hts (US import), scheduleb (US export)."},"code":{"type":"string","minLength":4,"maxLength":14,"description":"The commodity code, dots optional, e.g. 090121, 0901210000, or 8703.23.00."}},"required":["system","code"],"additionalProperties":false}}]},{"id":"trade.flows","group":"trade","description":"Annual international merchandise-trade flows from UN Comtrade (HS classification). Pass reporter (the country whose trade you want; ISO-2/ISO-3 like 'US'/'USA', a UN M49 number, or 'World'), optional partner (counterparty; default World), year (YYYY), flow (export|import), and commodity: 'TOTAL' (all goods, default), a specific HS code ('27', '8703'), or 'AG2'/'AG4'/'AG6' for a top-commodity breakdown at the 2/4/6-digit level. Returns trade value (USD), net weight, quantity, and the HS commodity, sorted by value. Country names are resolved from Comtrade's own reference data.","versions":[{"version":null,"path":"/api/trade/flows","method":"GET","deprecated":false,"price":{"usd":0.0036},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"reporter":{"type":"string","minLength":2,"maxLength":40,"description":"Reporting country: ISO-2/ISO-3 (\"US\"/\"USA\"), UN M49 number, or \"World\"."},"partner":{"type":"string","minLength":2,"maxLength":40,"default":"World","description":"Partner/counterparty country (same formats). Default \"World\" (all partners aggregated)."},"year":{"type":"string","pattern":"^\\d{4}$","description":"Calendar year (YYYY). Comtrade annual data typically lags ~6-12 months."},"flow":{"type":"string","enum":["export","import"],"default":"export","description":"Trade direction from the reporter's perspective. Default export."},"commodity":{"type":"string","minLength":2,"maxLength":8,"default":"TOTAL","description":"\"TOTAL\" (all goods, default), a specific HS code (\"27\", \"8703\"), or \"AG2\"/\"AG4\"/\"AG6\" for a top-commodity breakdown."},"limit":{"type":"integer","minimum":1,"maximum":100,"default":25,"description":"Max rows to return (1-100), sorted by trade value desc. Default 25."}},"required":["reporter","year"],"additionalProperties":false}}]},{"id":"trade.locode","group":"trade","description":"Look up or search UN/LOCODE — the United Nations Code for Trade and Transport Locations (~116k locations, all countries). Pass `locode` for an exact code (e.g. USNYC or 'US NYC'). Or pass `query` to search location names, optionally filtered by `country` (ISO 3166 alpha-2) and `function` (port, rail, road, airport, postal, multimodal, fixed, border). Each result: locode, name, country, subdivision, transport functions, entry status, IATA code where it differs, and coordinates. UN/LOCODE is the standard location identifier in shipping schedules, EDI messages, and customs documents.","versions":[{"version":null,"path":"/api/trade/locode","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"locode":{"type":"string","pattern":"^[A-Za-z]{2}[\\s-]?[A-Za-z0-9]{3}$","description":"Exact UN/LOCODE to look up (e.g. USNYC or 'US NYC'). Pass this OR query."},"query":{"type":"string","minLength":2,"maxLength":120,"description":"Location name to search (e.g. Rotterdam). Pass this OR locode."},"country":{"type":"string","pattern":"^[A-Za-z]{2}$","description":"Restrict query-mode results to one country (ISO 3166 alpha-2, e.g. NL)."},"function":{"type":"string","enum":["port","rail","road","airport","postal","multimodal","fixed","border"],"description":"Restrict query-mode results to locations with this transport function."},"limit":{"type":"integer","minimum":1,"maximum":50,"description":"Max query-mode results, 1–50 (default 10)."}},"additionalProperties":false}}]},{"id":"trade.tariff","group":"trade","description":"Look up or search the US Harmonized Tariff Schedule (HTS / HS codes). Pass `code` for an exact HTS number (dots optional) — returns that line plus its 10-digit statistical suffixes with duty rates. Or pass `query` for free-text search (e.g. 'electric toothbrush', 'roasted coffee') → ranked candidate HS codes by hierarchical heading. Each result: htsno, chapter, description, full heading path, units, and duty rates (general/MFN, special/FTA, column-2). ~29.6k lines, public-domain USITC data. The deterministic backbone for tariff classification in import/export and ERP item setup.","versions":[{"version":null,"path":"/api/trade/tariff","method":"GET","deprecated":false,"price":{"usd":0.0018},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"code":{"type":"string","pattern":"^[0-9.\\s]{4,14}$"},"query":{"type":"string","minLength":2,"maxLength":120},"limit":{"type":"integer","minimum":1,"maximum":50}},"additionalProperties":false}}]},{"id":"transcribe.audio","group":"transcribe","description":"Transcribe an audio file to text. POST { url, language?, diarize? } — the audio is fetched from your URL (wav, mp3, m4a/aac, ogg/opus, flac, webm; up to 15 MB and 15 minutes per call — split longer recordings and call once per segment). Returns the full punctuated transcript, overall confidence, audio duration, detected or specified language (BCP-47, e.g. \"en\", \"es\"), word-level timestamps with confidences, and — with diarize=true — speaker-segmented utterances (who said what, when). High-accuracy speech recognition for meeting notes, podcast processing, voicemail handling, and media monitoring.","versions":[{"version":null,"path":"/api/transcribe/audio","method":"POST","deprecated":false,"price":{"usd":0.1305},"accepts":["x402"],"responseShape":"normalized","billing":"actual-usage-upto-max","params":{"type":"object","properties":{"url":{"type":"string","format":"uri","maxLength":2048,"description":"Public audio URL. Caps: 15 MB, 15 minutes."},"language":{"type":"string","pattern":"^[a-z]{2,3}(-[A-Za-z0-9]{2,8})?$"},"diarize":{"type":"boolean","default":false}},"required":["url"],"additionalProperties":false}}]},{"id":"travel.advisory","group":"travel","description":"Current US State Department travel advisories. Omit country for the full list (every country with an active advisory), or pass country (name, case-insensitive substring) for one. Each entry returns the country, the advisory level (1 Exercise Normal Precautions, 2 Exercise Increased Caution, 3 Reconsider Travel, 4 Do Not Travel) with its label, a plain-text summary of the reasons (crime, terrorism, unrest, kidnapping, health, etc.), the official advisory link, and the published date. Sourced live from the official travel.state.gov RSS feed (US government, public domain). For trip planning, duty-of-care, and travel-risk screening.","versions":[{"version":null,"path":"/api/travel/advisory","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"country":{"type":"string","minLength":1,"maxLength":80}},"additionalProperties":false}}]},{"id":"travel.visa","group":"travel","description":"Look up the visa requirement for a traveler with a given passport visiting a destination country. Pass passport and destination as ISO-3166 alpha-3, alpha-2, or country name (e.g. passport=USA destination=Japan). Returns the requirement category — 'visa free' (with visaFreeDays, the allowed days), 'visa on arrival', 'e-visa', 'eta' (electronic travel authorization), 'visa required' (must arrange in advance), or 'no admission' — plus a plain-language description and the resolved passport/destination names. Data from the community-maintained Passport Index dataset (MIT). Informational only — not official immigration advice; verify with the destination's embassy before travel.","versions":[{"version":null,"path":"/api/travel/visa","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"passport":{"type":"string","minLength":2,"maxLength":60},"destination":{"type":"string","minLength":2,"maxLength":60}},"required":["passport","destination"],"additionalProperties":false}}]},{"id":"treasury.cash","group":"treasury","description":"Daily Treasury Statement (DTS) operating cash balance via US Treasury Fiscal Data. Returns daily snapshots of the Treasury General Account (TGA) at the Federal Reserve plus tax-and-loan accounts and Federal Reserve deposit accounts. Each row carries record_date, account_type, close_today_bal, open_today_bal, open_month_bal, open_fiscal_year_bal. Useful for liquidity-tracking agents and macro researchers watching the Treasury Cash Balance heading into Treasury auctions, debt-ceiling pinch-points, etc. Fiscal Data filter syntax.","versions":[{"version":null,"path":"/api/treasury/cash","method":"GET","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"fields":{"type":"string","pattern":"^[a-z][a-z0-9_]*(,[a-z][a-z0-9_]*)*$","maxLength":400},"filter":{"type":"string","pattern":"^[a-z][a-z0-9_]*:(eq|ne|lt|lte|gt|gte|in):[A-Za-z0-9._:\\-+/, ]+(,[a-z][a-z0-9_]*:(eq|ne|lt|lte|gt|gte|in):[A-Za-z0-9._:\\-+/, ]+)*$","maxLength":800},"sort":{"type":"string","pattern":"^-?[a-z][a-z0-9_]*(,-?[a-z][a-z0-9_]*)*$","maxLength":200},"pageSize":{"type":"integer","minimum":1,"maximum":10000,"default":100},"pageNumber":{"type":"integer","minimum":1}},"additionalProperties":false}}]},{"id":"treasury.debt","group":"treasury","description":"US National Debt — daily \"Debt to the Penny\" via US Treasury Fiscal Data. Each row carries record_date, debt held by public, intragovernmental holdings, and total public debt outstanding (all USD, signed integers as strings to preserve precision). Optional `filter` uses Fiscal Data syntax: `col:op:val` joined by commas (ops: eq, lt, lte, gt, gte, in). Default sort is `-record_date` (newest first). Authoritative source for \"how much does the US owe?\" — every weekday since 1993.","versions":[{"version":null,"path":"/api/treasury/debt","method":"GET","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"fields":{"type":"string","pattern":"^[a-z][a-z0-9_]*(,[a-z][a-z0-9_]*)*$","maxLength":400},"filter":{"type":"string","pattern":"^[a-z][a-z0-9_]*:(eq|ne|lt|lte|gt|gte|in):[A-Za-z0-9._:\\-+/, ]+(,[a-z][a-z0-9_]*:(eq|ne|lt|lte|gt|gte|in):[A-Za-z0-9._:\\-+/, ]+)*$","maxLength":800},"sort":{"type":"string","pattern":"^-?[a-z][a-z0-9_]*(,-?[a-z][a-z0-9_]*)*$","maxLength":200},"pageSize":{"type":"integer","minimum":1,"maximum":10000,"default":100},"pageNumber":{"type":"integer","minimum":1}},"additionalProperties":false}}]},{"id":"treasury.exchange-rates","group":"treasury","description":"Official US Treasury exchange rates via US Treasury Fiscal Data. Used by federal agencies to report foreign-currency transactions in USD. Quarterly + ad-hoc updates per country/currency pair. Each row carries record_date, country, currency, country_currency_desc, exchange_rate, effective_date. Pair with `/api/fx/rates` (ECB Frankfurter, daily market rates) for cross-validation. Use Fiscal Data filter syntax — e.g. `filter=country:eq:Brazil` to scope to a single country.","versions":[{"version":null,"path":"/api/treasury/exchange-rates","method":"GET","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"fields":{"type":"string","pattern":"^[a-z][a-z0-9_]*(,[a-z][a-z0-9_]*)*$","maxLength":400},"filter":{"type":"string","pattern":"^[a-z][a-z0-9_]*:(eq|ne|lt|lte|gt|gte|in):[A-Za-z0-9._:\\-+/, ]+(,[a-z][a-z0-9_]*:(eq|ne|lt|lte|gt|gte|in):[A-Za-z0-9._:\\-+/, ]+)*$","maxLength":800},"sort":{"type":"string","pattern":"^-?[a-z][a-z0-9_]*(,-?[a-z][a-z0-9_]*)*$","maxLength":200},"pageSize":{"type":"integer","minimum":1,"maximum":10000,"default":100},"pageNumber":{"type":"integer","minimum":1}},"additionalProperties":false}}]},{"id":"treasury.monthly-statement","group":"treasury","description":"Monthly Treasury Statement (MTS) — Table 4: receipts by source via US Treasury Fiscal Data. Returns monthly totals of federal government receipts grouped by classification (individual income tax, corporate income tax, social-insurance receipts, excise, customs, estate-and-gift, miscellaneous). Each row carries record_date, classification_id, classification_desc, current_month + current_fytd (fiscal year-to-date) gross_rcpt / refund / net_rcpt amounts, plus prior_fytd comparisons. Backbone of any \"how much money is the federal government bringing in\" question. Use Fiscal Data filter syntax.","versions":[{"version":null,"path":"/api/treasury/monthly-statement","method":"GET","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"fields":{"type":"string","pattern":"^[a-z][a-z0-9_]*(,[a-z][a-z0-9_]*)*$","maxLength":400},"filter":{"type":"string","pattern":"^[a-z][a-z0-9_]*:(eq|ne|lt|lte|gt|gte|in):[A-Za-z0-9._:\\-+/, ]+(,[a-z][a-z0-9_]*:(eq|ne|lt|lte|gt|gte|in):[A-Za-z0-9._:\\-+/, ]+)*$","maxLength":800},"sort":{"type":"string","pattern":"^-?[a-z][a-z0-9_]*(,-?[a-z][a-z0-9_]*)*$","maxLength":200},"pageSize":{"type":"integer","minimum":1,"maximum":10000,"default":100},"pageNumber":{"type":"integer","minimum":1}},"additionalProperties":false}}]},{"id":"url.clean","group":"url","description":"Fetch any URL and return its article content with the clutter stripped — nav, ads, sidebars, footers, scripts, styles, comments removed via heuristic extraction (<article> / <main> / role=main / densest block). Choose the output with `format`: markdown (default), text, both (JSON envelope), html (a self-contained readable reader-view page, raw text/html), or pdf (a clean typeset reading document, raw application/pdf). html/pdf are built from the same cleaned content, so they carry no live page, no third-party assets, no trackers. SSRF-guarded, 512KB body cap, 8s timeout, 5 redirects max. JSON formats return { url, finalUrl, title, markdown?, text?, wordCount, sourceBytes }. This uses a raw HTTP fetch (no JavaScript) — for client-rendered / SPA pages whose content only appears after JS runs, use /api/url/render (same formats, headless-rendered). For a pixel-perfect image of the live page use /api/ai/screenshot; to enumerate a page or sitemap into its links use /api/url/map.","versions":[{"version":null,"path":"/api/url/clean","method":"GET","deprecated":false,"price":{"usd":0.00108},"accepts":["x402"],"responseShape":"legacy","params":{"type":"object","properties":{"url":{"type":"string","format":"uri","maxLength":2048},"format":{"type":"string","enum":["markdown","text","both","html","pdf"],"default":"markdown"}},"required":["url"],"additionalProperties":false}}]},{"id":"url.map","group":"url","description":"Discover the URLs a page or sitemap points at in a single fetch. Point it at an XML sitemap or sitemap-index and it returns the <loc> URLs; point it at an HTML page and it returns the <a href> links — auto-detected. URLs are resolved to absolute, de-duplicated, fragment-stripped, and http(s)-only. `limit` (1-2000, default 200) caps the count; `sameHostOnly` keeps only links on the same host. Single SSRF-guarded fetch, no JavaScript, stateless — NOT a recursive crawler: to go deeper, call map again on a child sitemap or a discovered page. Returns { url, finalUrl, source: \"sitemap\"|\"links\", count, capped, urls }.","versions":[{"version":null,"path":"/api/url/map","method":"GET","deprecated":false,"price":{"usd":0.00108},"accepts":["x402"],"responseShape":"legacy","params":{"type":"object","properties":{"url":{"type":"string","format":"uri","maxLength":2048},"limit":{"type":"integer","minimum":1,"maximum":2000,"default":200},"sameHostOnly":{"anyOf":[{"type":"boolean"},{"type":"string"}]}},"required":["url"],"additionalProperties":false}}]},{"id":"url.render","group":"url","description":"Render a URL in a real headless browser (JavaScript executed) and return its article content with the clutter stripped — same cleaning + output formats as /api/url/clean, but for client-rendered / SPA pages whose content only appears after JS runs (where a raw HTTP fetch returns an empty shell). `format`: markdown (default), text, both (JSON envelope), html (self-contained reader page, raw text/html), or pdf (typeset reading doc, raw application/pdf). Optional `waitUntil` (load|domcontentloaded|networkidle0|networkidle2, default networkidle2) and `timeoutMs` (1000-15000, default 12000) control how long to let JS settle. Use /api/url/clean instead for server-rendered pages — it is faster and cheaper; only reach for render when JS rendering is required.","versions":[{"version":null,"path":"/api/url/render","method":"GET","deprecated":false,"price":{"usd":0.006},"accepts":["x402"],"responseShape":"legacy","params":{"type":"object","properties":{"url":{"type":"string","format":"uri","maxLength":2048},"format":{"type":"string","enum":["markdown","text","both","html","pdf"],"default":"markdown"},"waitUntil":{"type":"string","enum":["load","domcontentloaded","networkidle0","networkidle2"]},"timeoutMs":{"type":"integer","minimum":1000,"maximum":15000}},"required":["url"],"additionalProperties":false}}]},{"id":"url.unfurl","group":"url","description":"Fetch any URL and extract structured page metadata: title, description, og:image, canonical, favicon, site name, author, published time, language, and the first ~500 chars of body text. SSRF-guarded against private networks. 8s timeout, 512 KB max body. Returns the parsed metadata plus the raw og:/twitter:/itemprop meta dictionary for inspection.","versions":[{"version":null,"path":"/api/url/unfurl","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"legacy","params":{"type":"object","properties":{"url":{"type":"string","format":"uri","maxLength":2048}},"required":["url"],"additionalProperties":false}}]},{"id":"validate.aba","group":"validate","description":"Validate a US bank ABA routing number with the Federal Reserve weighted mod-10 checksum (3-7-1) — not just a 9-digit regex. Returns {valid, routingNumber, district (routing-symbol class), reason}. Catches transposed digits in ACH/wire setup that a length check misses. Structure + checksum only; not a bank-directory existence lookup.","versions":[{"version":null,"path":"/api/validate/aba","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"routingNumber":{"type":"string","minLength":1,"maxLength":20}},"required":["routingNumber"],"additionalProperties":false}}]},{"id":"validate.batch","group":"validate","description":"Validate up to 100 identifiers of mixed kinds in a single deterministic call. Pass items=[{type,value}] where type is one of: iban, gtin, aba, lei, bic, gln, sscc, isin, cusip. Each result (returned in input order, with its index and type) carries {valid, reason} plus the same type-specific fields the single-identifier endpoints return (e.g. gtin14, countryCode, district). One unsupported type or one bad value degrades to that item's valid:false — it never fails the batch. meta carries validCount/invalidCount. This collapses a record's worth of per-field checksum checks (IBAN + BIC + GTIN + LEI + …) into one round-trip instead of one LLM/HTTP hop per field.","versions":[{"version":null,"path":"/api/validate/batch","method":"POST","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","minLength":1,"maxLength":32},"value":{"type":"string","minLength":1,"maxLength":64}},"required":["type","value"],"additionalProperties":false},"minItems":1,"maxItems":100}},"required":["items"],"additionalProperties":false}}]},{"id":"validate.bic","group":"validate","description":"Validate a SWIFT/BIC code (ISO 9362): 8 or 11 characters = 4-letter institution + 2-letter ISO country + 2-char location + optional 3-char branch, with the country position checked against ISO 3166. Returns {valid, bic, institution, country, location, branch, reason}. Structure validation only — not a SWIFT-directory existence lookup.","versions":[{"version":null,"path":"/api/validate/bic","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"bic":{"type":"string","minLength":1,"maxLength":20}},"required":["bic"],"additionalProperties":false}}]},{"id":"validate.cusip","group":"validate","description":"Validate a CUSIP (9-character US/Canada securities identifier) with its mod-10 weighted check digit. Returns {valid, cusip, checkDigit, reason}. Catches transposed characters in security master / holdings data that a length check misses. Structure + checksum only.","versions":[{"version":null,"path":"/api/validate/cusip","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"cusip":{"type":"string","minLength":1,"maxLength":12}},"required":["cusip"],"additionalProperties":false}}]},{"id":"validate.gln","group":"validate","description":"Validate a GS1 GLN (Global Location Number) — 13 digits with the GS1 mod-10 check digit. GLNs identify trading parties and physical locations (ship-to, bill-to, warehouse) across CPG supply chains and EDI. Returns {valid, gln, checkDigit, reason}. Catches transposed digits a length check misses.","versions":[{"version":null,"path":"/api/validate/gln","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"gln":{"type":"string","minLength":1,"maxLength":20}},"required":["gln"],"additionalProperties":false}}]},{"id":"validate.gtin","group":"validate","description":"Validate a product barcode — GTIN-8/12/13/14, UPC-A, EAN-13, or ISBN-10/13 — with the GS1 mod-10 check digit (ISBN-10 uses mod-11). Returns {valid, type, gtin14 (canonical 14-digit form, left-padded), checkDigit, reason}. Normalizes every product identifier to one GTIN-14 key so a product-master/ETL pipeline can dedupe and validate SKUs in one deterministic call instead of doing checksum math in an LLM.","versions":[{"version":null,"path":"/api/validate/gtin","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"gtin":{"type":"string","minLength":1,"maxLength":32}},"required":["gtin"],"additionalProperties":false}}]},{"id":"validate.iban","group":"validate","description":"Validate an International Bank Account Number (IBAN) with full ISO 13616 checks: country-specific length and the ISO 7064 mod-97 checksum (not just a regex). Returns {valid, iban (normalized), formatted (4-char groups), countryCode, checkDigits, bban, reason}. Catches transposed digits and wrong-length accounts that a format check misses, and returns the canonical form so a glue/ETL pipeline can validate AND normalize bank details in one deterministic call. ~85 countries. No bank directory lookup — structure + checksum only.","versions":[{"version":null,"path":"/api/validate/iban","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"iban":{"type":"string","minLength":1,"maxLength":64}},"required":["iban"],"additionalProperties":false}}]},{"id":"validate.isin","group":"validate","description":"Validate an ISIN (International Securities Identification Number, ISO 6166): 2-letter country prefix + 9-char NSIN + Luhn check digit. Returns {valid, isin, country, nsin, embeddedCusip (for US/CA), checkDigit, reason}. Catches transposed characters in security master data that a regex misses. Structure + checksum only.","versions":[{"version":null,"path":"/api/validate/isin","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"isin":{"type":"string","minLength":1,"maxLength":20}},"required":["isin"],"additionalProperties":false}}]},{"id":"validate.lei","group":"validate","description":"Validate a Legal Entity Identifier (LEI, ISO 17442) with the ISO 7064 mod-97-10 check digits — not just a 20-character regex. Returns {valid, lei (normalized), louPrefix (issuing LOU), checkDigits, reason}. Confirms a counterparty/vendor LEI is well-formed before lookup; pairs with GLEIF data for name + ownership resolution. Structure + checksum only.","versions":[{"version":null,"path":"/api/validate/lei","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"lei":{"type":"string","minLength":1,"maxLength":32}},"required":["lei"],"additionalProperties":false}}]},{"id":"validate.sscc","group":"validate","description":"Validate a GS1 SSCC (Serial Shipping Container Code) — 18 digits with the GS1 mod-10 check digit. SSCCs identify individual logistic units (pallets, cases) and are the key field in shipping/ASN (EDI 856) flows. Returns {valid, sscc, extensionDigit, checkDigit, reason}.","versions":[{"version":null,"path":"/api/validate/sscc","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"sscc":{"type":"string","minLength":1,"maxLength":24}},"required":["sscc"],"additionalProperties":false}}]},{"id":"vehicle.canadian-specs","group":"vehicle","description":"Canadian-market vehicle dimensions and weights from NHTSA vPIC's Canadian Vehicle Specifications dataset. Pass year + make (required) and optional model to narrow. Returns one entry per matching trim with labeled dimensions — overall length/width/height (cm), wheelbase (cm), curb weight (kg), front/rear track width, interior head/leg/shoulder/hip room, and weight distribution — plus the full raw spec map. Authoritative measured specs (the SAE dimension codes), not estimates. Keyless, public-domain; covers model years 1971+.","versions":[{"version":null,"path":"/api/vehicle/canadian-specs","method":"GET","deprecated":false,"price":{"usd":0.00144},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"year":{"type":"integer","minimum":1971,"maximum":2100},"make":{"type":"string","minLength":1,"maxLength":40},"model":{"type":"string","minLength":1,"maxLength":60}},"required":["year","make"],"additionalProperties":false}}]},{"id":"vehicle.complaints","group":"vehicle","description":"NHTSA consumer complaints for a US vehicle by (make, model, modelYear). Returns the top N records (newest-filed first) with ODI number, affected component, plain-English summary, crash/fire flags, injury and death counts, partial VIN, and incident + filing dates. Backed by NHTSA's public complaints database; data is public-domain US government records.","versions":[{"version":null,"path":"/api/vehicle/complaints","method":"GET","deprecated":false,"price":{"usd":0.0024},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"make":{"type":"string","minLength":2,"maxLength":40,"description":"Vehicle make. Examples: \"Honda\", \"Tesla\", \"Ford\"."},"model":{"type":"string","minLength":1,"maxLength":40,"description":"Vehicle model. Examples: \"Accord\", \"Model 3\", \"F-150\"."},"modelYear":{"type":"integer","minimum":1949,"maximum":2099,"description":"4-digit model year."},"limit":{"type":"integer","minimum":1,"maximum":100,"default":25,"description":"Max records to return, newest-filed first (1-100). Default 25."}},"required":["make","model","modelYear"],"additionalProperties":false}}]},{"id":"vehicle.decode-wmi","group":"vehicle","description":"Decode a 3-character World Manufacturer Identifier (the first three characters of a VIN) to the assigning manufacturer. Returns full manufacturer legal name, common short name, make, vehicle type, and the date NHTSA published the assignment. Useful for partial-VIN analysis — crash reports, damaged-vehicle photos, fleet records — where only the WMI is recoverable. Backed by NHTSA.gov vPIC; data is public-domain US government records.","versions":[{"version":null,"path":"/api/vehicle/decode-wmi","method":"GET","deprecated":false,"price":{"usd":0.0024},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"wmi":{"type":"string","minLength":3,"maxLength":3,"pattern":"^[A-HJ-NPR-Z0-9]{3}$","description":"3-character WMI (the first 3 chars of a VIN). Case-insensitive. Examples: 1HG (American Honda), 5YJ (Tesla US), WBA (BMW)."}},"required":["wmi"],"additionalProperties":false}}]},{"id":"vehicle.fuel-economy","group":"vehicle","description":"Official US EPA/DOE fuel-economy, fuel-cost, and emissions data for a vehicle by year + make + model. Because a model-year often has several powertrain configurations (engine/transmission), this returns one entry per configuration, each with: MPG city/highway/combined (or MPGe for EVs), CO2 tailpipe grams/mile, estimated annual fuel cost (USD), annual petroleum use (barrels), EPA greenhouse-gas score (1-10), 5-year savings vs the average new vehicle, plus transmission, drivetrain, cylinders, displacement, fuel type, EPA size class, and electric range for EV/PHEV. Authoritative EPA test figures — the real ratings an agent should not estimate. Keyless, public-domain (FuelEconomy.gov), covers model years 1984+.","versions":[{"version":null,"path":"/api/vehicle/fuel-economy","method":"GET","deprecated":false,"price":{"usd":0.0018},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"year":{"type":"integer","minimum":1984,"maximum":2100},"make":{"type":"string","minLength":1,"maxLength":40},"model":{"type":"string","minLength":1,"maxLength":60}},"required":["year","make","model"],"additionalProperties":false}}]},{"id":"vehicle.investigations","group":"vehicle","description":"Chronological feed of NHTSA ODI (Office of Defects Investigation) investigations, newest first. Returns preliminary evaluations (PE), engineering analyses (EA), defect petitions (DP), and recall queries (RQ) — each with NHTSA ID, type code, open/close dates, status, subject, and full description (HTML stripped + raw). Useful for tracking what NHTSA is currently investigating (Tesla FSD, autonomous-vehicle crashes, Rivian suspension, etc.). NOTE: NHTSA's endpoint does NOT support make/model/year filtering — use vehicle.recalls or vehicle.complaints for vehicle-scoped lookups. Public-domain US government records.","versions":[{"version":null,"path":"/api/vehicle/investigations","method":"GET","deprecated":false,"price":{"usd":0.0024},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"limit":{"type":"integer","minimum":1,"maximum":100,"default":25,"description":"Max records to return (1-100). Default 25."},"offset":{"type":"integer","minimum":0,"maximum":10000,"default":0,"description":"Offset into the chronological feed for pagination. Default 0."},"status":{"type":"string","enum":["O","C"],"description":"Filter by status: \"O\" (open), \"C\" (closed). Omit for all."}},"additionalProperties":false}}]},{"id":"vehicle.manufacturers","group":"vehicle","description":"Paginated list of every motor vehicle manufacturer NHTSA tracks via vPIC. Each record includes the canonical Mfr_ID, full legal name, common short name (e.g., \"Honda\"), country, and the list of vehicle types the manufacturer produces (Passenger Car, Truck, Motorcycle, Bus, MPV, etc.). Pass the optional `manufacturer` param to substring-search Mfr_Name. 100 records per page. Backed by NHTSA.gov; data is public-domain US government records.","versions":[{"version":null,"path":"/api/vehicle/manufacturers","method":"GET","deprecated":false,"price":{"usd":0.0024},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"page":{"type":"integer","minimum":1,"maximum":100,"default":1,"description":"1-indexed page (100 manufacturers per page). Default 1."},"manufacturer":{"type":"string","minLength":2,"maxLength":80,"description":"Optional substring filter on the full Mfr_Name (case-insensitive on NHTSA side). Examples: \"honda\", \"tesla\", \"general motors\"."}},"additionalProperties":false}}]},{"id":"vehicle.models","group":"vehicle","description":"Enumerate every model a manufacturer sold in a given model year via NHTSA's vPIC taxonomy database. Returns canonical NHTSA Model IDs + names plus the Make ID + name for reference. Useful as a discovery step before VIN decode (when the agent only knows make + year) or as input validation for vehicle.recalls / vehicle.complaints. Backed by NHTSA.gov; data is public-domain US government records.","versions":[{"version":null,"path":"/api/vehicle/models","method":"GET","deprecated":false,"price":{"usd":0.0024},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"make":{"type":"string","minLength":2,"maxLength":40,"description":"Vehicle make. Case-insensitive on NHTSA side. Examples: \"Honda\", \"Tesla\", \"Ford\"."},"modelYear":{"type":"integer","minimum":1949,"maximum":2099,"description":"4-digit model year."}},"required":["make","modelYear"],"additionalProperties":false}}]},{"id":"vehicle.profile","group":"vehicle","description":"Vehicle 360 — decode a VIN and get its full safety picture in one call. Returns the decoded vehicle (make, model, year, trim, engine, plant, body class, drivetrain — NHTSA vPIC) plus that exact make/model/year's open safety recalls (with park-it / park-outside / over-the-air-update flags) and NHTSA owner complaints (crash/fire/injury/death flags). recalls and complaints are keyed to the decoded make+model+year, so they describe THIS vehicle, not a generic feed. Each section reports found/error independently. Pass vin (17 chars); optional modelYear disambiguates pre-1980 VINs. Used for used-car due diligence, fleet safety, insurance. Individual sources: /api/vehicle/vin-decode, /api/vehicle/recalls, /api/vehicle/complaints.","versions":[{"version":null,"path":"/api/vehicle/profile","method":"GET","deprecated":false,"price":{"usd":0.00576},"accepts":["x402"],"responseShape":"legacy","params":{"type":"object","properties":{"vin":{"type":"string","minLength":17,"maxLength":17},"modelYear":{"type":"integer","minimum":1949,"maximum":2099}},"required":["vin"],"additionalProperties":false}}]},{"id":"vehicle.recalls","group":"vehicle","description":"NHTSA recall campaigns for a US vehicle by (make, model, modelYear). Returns every open + historical campaign with the NHTSA campaign number, manufacturer, affected component, plain-English summary/consequence/remedy text, and the parkIt / parkOutside fire-risk advisories. Backed by NHTSA's public recalls database; data is public-domain US government records.","versions":[{"version":null,"path":"/api/vehicle/recalls","method":"GET","deprecated":false,"price":{"usd":0.0024},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"make":{"type":"string","minLength":2,"maxLength":40,"description":"Vehicle make. Examples: \"Honda\", \"Toyota\", \"Tesla\". Case-insensitive on NHTSA side."},"model":{"type":"string","minLength":1,"maxLength":40,"description":"Vehicle model. Examples: \"Accord\", \"Model 3\", \"F-150\"."},"modelYear":{"type":"integer","minimum":1949,"maximum":2099,"description":"4-digit model year."}},"required":["make","model","modelYear"],"additionalProperties":false}}]},{"id":"vehicle.safety-ratings","group":"vehicle","description":"NHTSA NCAP 5-Star crash-test ratings for a US vehicle by (make, model, modelYear). Returns one item per crash-tested body style with the overall star rating, front/side/rollover sub-ratings, modeled rollover probability, crash-avoidance tech flags (electronic stability control, forward-collision warning, lane-departure warning), and complaint/recall/investigation counts. A vehicle with no crash testing returns an empty list (a valid result, not an error). Backed by NHTSA's public 5-Star Safety Ratings program; data is public-domain US government records.","versions":[{"version":null,"path":"/api/vehicle/safety-ratings","method":"GET","deprecated":false,"price":{"usd":0.003},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"make":{"type":"string","minLength":2,"maxLength":40,"description":"Vehicle make. Examples: \"Honda\", \"Toyota\", \"Tesla\". Case-insensitive on NHTSA side."},"model":{"type":"string","minLength":1,"maxLength":40,"description":"Vehicle model. Examples: \"Accord\", \"Model 3\", \"F-150\"."},"modelYear":{"type":"integer","minimum":1949,"maximum":2099,"description":"4-digit model year. NCAP coverage is strongest from ~2011 onward."}},"required":["make","model","modelYear"],"additionalProperties":false}}]},{"id":"vehicle.vin-decode","group":"vehicle","description":"Decode a 17-character VIN to manufacturer-supplied vehicle metadata via NHTSA's vPIC database. Returns identity (year, make, model, trim, series, body class, manufacturer), assembly plant (city, state, country), engine (cylinders, displacement, HP, fuel type, configuration, engine model), transmission (style, speeds), and body/weight specs. Curated to the ~30 fields agents actually use from vPIC's ~140-field response. Backed by NHTSA.gov; data is public-domain US government records.","versions":[{"version":null,"path":"/api/vehicle/vin-decode","method":"GET","deprecated":false,"price":{"usd":0.0024},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"vin":{"type":"string","minLength":17,"maxLength":17,"pattern":"^[A-HJ-NPR-Z0-9]{17}$","description":"17-character VIN. Case-insensitive. Excludes letters I, O, and Q per VIN standard."},"modelYear":{"type":"integer","minimum":1949,"maximum":2099,"description":"Optional model-year hint — disambiguates VINs where the year-digit wraps (A=1980/2010, etc.)."}},"required":["vin"],"additionalProperties":false}}]},{"id":"watchers.business-earnings","group":"watchers","description":"WATCHER: get a signed callback around a US company's earnings. Arm once, pay once (no account, no API key). trigger 'reported' (default) fires when results post — with reported EPS vs estimate, the surprise, and revenue; trigger 'upcoming' fires daysBefore the scheduled report date as a heads-up. Pass ticker (+ optional daysBefore for upcoming). Fires once per report period; bounded by a maxFires / expiry budget. Calendar via Finnhub. Deliveries are EIP-191-signed (verify offline) and retried with exponential backoff; missed pushes are recoverable via watchers.status. Returns a watcherId.","versions":[{"version":null,"path":"/api/watchers/business-earnings","method":"POST","deprecated":false,"price":{"usd":0.05},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"ticker":{"type":"string","minLength":1,"maxLength":12,"pattern":"^[A-Za-z][A-Za-z0-9.\\-]{0,11}$","description":"US-listed ticker to watch, e.g. AAPL."},"trigger":{"type":"string","enum":["reported","upcoming"],"description":"'reported' (default) fires when results post; 'upcoming' fires ahead of the scheduled date."},"daysBefore":{"type":"integer","minimum":0,"maximum":30,"description":"For trigger='upcoming': how many days before the report date to fire (default 1)."},"callbackUrl":{"type":"string","format":"uri","maxLength":2048,"description":"Where we POST the event. Any http(s) URL; the JSON body is signed (verify with X-2s-Signature). e.g. https://your-agent.app/hooks/earnings"},"payload":{"type":"object","additionalProperties":{},"description":"Arbitrary JSON echoed back verbatim in every callback so you can route/identify the event. e.g. {\"agentId\":\"a1\"}"},"expiresInSeconds":{"type":"integer","minimum":60,"maximum":7776000,"description":"How long the watch stays active, in seconds. Default 2592000 (30 days), max 7776000 (90 days)."},"maxFires":{"type":"integer","minimum":1,"maximum":1000,"description":"Stop after this many report events (default 1 — the next report). Each fire is a distinct fiscal period."},"label":{"type":"string","maxLength":64,"description":"Optional free-text tag to recognize this watcher later."}},"required":["ticker","callbackUrl"],"additionalProperties":false}}]},{"id":"watchers.cancel","group":"watchers","description":"Cancel an active watcher by watcherId — it stops watching immediately. Flat-fee model: no refund of the unused window (nothing is held or owed). Idempotent. Pairs with watchers.crypto-address-activity and watchers.status.","versions":[{"version":null,"path":"/api/watchers/cancel","method":"POST","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"watcherId":{"type":"string","minLength":8,"maxLength":80}},"required":["watcherId"],"additionalProperties":false}}]},{"id":"watchers.company-news","group":"watchers","description":"WATCHER: get a signed callback when a new news article is published about a US company. Arm once, pay once. Pass ticker; optionally keyword to only fire on headlines containing it. Fires once per new article (deduped by id); bounded by maxFires/expiry. Existing articles at arm time are baselined. News via Finnhub. Signed (verify offline) + retried; recoverable via watchers.status. Returns a watcherId.","versions":[{"version":null,"path":"/api/watchers/company-news","method":"POST","deprecated":false,"price":{"usd":0.05},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"ticker":{"type":"string","minLength":1,"maxLength":12,"pattern":"^[A-Za-z][A-Za-z0-9.\\-]{0,11}$","description":"US-listed ticker, e.g. AAPL."},"keyword":{"type":"string","maxLength":64,"description":"Optional: only fire on headlines containing this text (case-insensitive)."},"callbackUrl":{"type":"string","format":"uri","maxLength":2048,"description":"Signed event POSTed here (verify X-2s-Signature). Any http(s) URL."},"payload":{"type":"object","additionalProperties":{},"description":"Arbitrary JSON echoed back in every callback."},"expiresInSeconds":{"type":"integer","minimum":60,"maximum":7776000,"description":"Active window in seconds (default 30d, max 90d)."},"maxFires":{"type":"integer","minimum":1,"maximum":1000,"description":"Stop after this many articles (default 25)."},"label":{"type":"string","maxLength":64,"description":"Optional free-text tag."}},"required":["ticker","callbackUrl"],"additionalProperties":false}}]},{"id":"watchers.crypto-address-activity","group":"watchers","description":"WATCHER: get a signed callback the moment a crypto address transacts. Arm once, pay once (no account, no API key) — we watch Base, Ethereum, or Bitcoin and POST your custom payload to callbackUrl when the address sends/receives native coins, ERC-20s, or ERC-721s. Filter by direction (in/out/both), asset type, and a USD minimum (minValueUsd) to skip dust. Bounded by a 30-day / 25-fire window. Deliveries are EIP-191-signed by our published key (verify offline) and retried with exponential backoff; missed pushes are recoverable via watchers.status. Returns a watcherId.","versions":[{"version":null,"path":"/api/watchers/crypto-address-activity","method":"POST","deprecated":false,"price":{"usd":0.05},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"chain":{"type":"string","enum":["base","ethereum","bitcoin"],"description":"Which chain to watch: base, ethereum, or bitcoin."},"address":{"type":"string","minLength":20,"maxLength":100,"description":"The address to watch — an EVM address (0x… 40 hex) for base/ethereum, or a Bitcoin address (bc1…/1…/3…)."},"callbackUrl":{"type":"string","format":"uri","maxLength":2048,"description":"Where we POST the event. Any http(s) URL; the JSON body is signed (verify with X-2s-Signature). e.g. https://your-agent.app/hooks/wallet"},"direction":{"type":"string","enum":["in","out","both"],"description":"Which flows to fire on: \"in\" = address received, \"out\" = address sent, \"both\" = either. Default: both."},"assetTypes":{"type":"array","items":{"type":"string","enum":["native","erc20","erc721"]},"maxItems":3,"description":"Limit to asset kinds: any of \"native\" (ETH/BTC), \"erc20\" (tokens), \"erc721\" (NFTs). Omit to watch all. EVM only — Bitcoin is always native. e.g. [\"erc20\"] for token transfers only."},"minValueUsd":{"type":"number","exclusiveMinimum":true,"minimum":0,"maximum":1000000000000,"description":"Only fire when the transfer is worth at least this many USD — filters out dust/spam. e.g. 100 ignores anything under $100. Omit to fire on any non-zero amount."},"payload":{"type":"object","additionalProperties":{},"description":"Arbitrary JSON, echoed back verbatim in every callback so you can route/identify the event on your side. e.g. {\"agentId\":\"a1\",\"reason\":\"treasury-monitor\"}"},"expiresInSeconds":{"type":"integer","minimum":60,"maximum":7776000,"description":"How long the watch stays active, in seconds. Default 2592000 (30 days), max 7776000 (90 days). e.g. 86400 = 1 day."},"maxFires":{"type":"integer","minimum":1,"maximum":1000,"description":"Stop after this many callbacks. Default 25, max 1000. The watch ends at whichever comes first — maxFires or expiry."},"label":{"type":"string","maxLength":64,"description":"Optional free-text tag to recognize this watcher later. e.g. \"exchange-cold-wallet\"."}},"required":["chain","address","callbackUrl"],"additionalProperties":false}}]},{"id":"watchers.dns","group":"watchers","description":"WATCHER: get a signed callback when a host's DNS records change. Arm once, pay once. Pass host (e.g. example.com). Fires when the resolved answers change (e.g. an A/AAAA/CNAME/MX update); bounded by maxFires/expiry. The records at arm time are baselined. Useful for detecting domain takeover, migrations, or unexpected changes. Signed (verify offline) + retried; recoverable via watchers.status. Returns a watcherId.","versions":[{"version":null,"path":"/api/watchers/dns","method":"POST","deprecated":false,"price":{"usd":0.05},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"host":{"type":"string","minLength":1,"maxLength":255,"description":"Hostname to monitor, e.g. example.com."},"callbackUrl":{"type":"string","format":"uri","maxLength":2048,"description":"Signed event POSTed here (verify X-2s-Signature). Any http(s) URL."},"payload":{"type":"object","additionalProperties":{},"description":"Arbitrary JSON echoed back in every callback."},"expiresInSeconds":{"type":"integer","minimum":60,"maximum":7776000,"description":"Active window in seconds (default 30d, max 90d)."},"maxFires":{"type":"integer","minimum":1,"maximum":1000,"description":"Stop after this many changes (default 10)."},"label":{"type":"string","maxLength":64,"description":"Optional free-text tag."}},"required":["host","callbackUrl"],"additionalProperties":false}}]},{"id":"watchers.earthquake","group":"watchers","description":"WATCHER: get a signed callback when USGS reports a new earthquake near a location above a magnitude. Arm once, pay once. Pass lat, lon, optional radiusKm (default 500) and minMagnitude (default 4). Fires once per new quake (deduped by id); bounded by maxFires/expiry. Quakes already in the window at arm time are baselined. Free public-domain (USGS). Signed + retried; recoverable via watchers.status. Returns a watcherId.","versions":[{"version":null,"path":"/api/watchers/earthquake","method":"POST","deprecated":false,"price":{"usd":0.05},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"lat":{"type":"number","minimum":-90,"maximum":90,"description":"Latitude of the center point."},"lon":{"type":"number","minimum":-180,"maximum":180,"description":"Longitude of the center point."},"radiusKm":{"type":"number","minimum":1,"maximum":1000,"description":"Search radius in km (default 500)."},"minMagnitude":{"type":"number","minimum":0,"maximum":10,"description":"Minimum magnitude to fire on (default 4)."},"callbackUrl":{"type":"string","format":"uri","maxLength":2048,"description":"Signed event POSTed here (verify X-2s-Signature). Any http(s) URL."},"payload":{"type":"object","additionalProperties":{},"description":"Arbitrary JSON echoed back in every callback."},"expiresInSeconds":{"type":"integer","minimum":60,"maximum":7776000,"description":"Active window in seconds (default 30d, max 90d)."},"maxFires":{"type":"integer","minimum":1,"maximum":1000,"description":"Stop after this many quakes (default 25)."},"label":{"type":"string","maxLength":64,"description":"Optional free-text tag."}},"required":["lat","lon","callbackUrl"],"additionalProperties":false}}]},{"id":"watchers.fear-greed","group":"watchers","description":"WATCHER: get a signed callback when the Crypto Fear & Greed index crosses a level (e.g. drops into Extreme Fear). Arm once, pay once. conditionType 'above'/'below'; threshold is the index value 0–100. Fires once per crossing; bounded by maxFires/expiry. Signed (verify offline) + retried; recoverable via watchers.status. Returns a watcherId.","versions":[{"version":null,"path":"/api/watchers/fear-greed","method":"POST","deprecated":false,"price":{"usd":0.05},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"conditionType":{"type":"string","enum":["above","below"],"description":"Fire when the index goes above or below the threshold."},"threshold":{"type":"number","minimum":0,"maximum":100,"description":"Index value 0–100 to cross (e.g. 20 = extreme fear, 80 = extreme greed)."},"callbackUrl":{"type":"string","format":"uri","maxLength":2048,"description":"Signed event POSTed here (verify X-2s-Signature). Any http(s) URL."},"payload":{"type":"object","additionalProperties":{},"description":"Arbitrary JSON echoed back in every callback."},"expiresInSeconds":{"type":"integer","minimum":60,"maximum":7776000,"description":"Active window in seconds (default 30d, max 90d)."},"maxFires":{"type":"integer","minimum":1,"maximum":1000,"description":"Stop after this many callbacks (default 1)."},"label":{"type":"string","maxLength":64,"description":"Optional free-text tag."}},"required":["conditionType","threshold","callbackUrl"],"additionalProperties":false}}]},{"id":"watchers.federal-register","group":"watchers","description":"WATCHER: get a signed callback when a new US Federal Register document is published. Arm once, pay once. Optionally filter by type (RULE / PRORULE / NOTICE / PRESDOCU), agency (slug, e.g. environmental-protection-agency), and/or keyword in the title. Fires once per new document (deduped by document number); bounded by maxFires/expiry. Existing docs at arm time are baselined. Free public-domain data. Signed + retried; recoverable via watchers.status. Returns a watcherId.","versions":[{"version":null,"path":"/api/watchers/federal-register","method":"POST","deprecated":false,"price":{"usd":0.05},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"type":{"type":"string","enum":["RULE","PRORULE","NOTICE","PRESDOCU"],"description":"Document type filter. Omit for all."},"agency":{"type":"string","maxLength":80,"pattern":"^[A-Za-z0-9-]+$","description":"Agency slug, e.g. federal-trade-commission."},"keyword":{"type":"string","maxLength":64,"description":"Optional: only fire on titles containing this text (case-insensitive)."},"callbackUrl":{"type":"string","format":"uri","maxLength":2048,"description":"Signed event POSTed here (verify X-2s-Signature). Any http(s) URL."},"payload":{"type":"object","additionalProperties":{},"description":"Arbitrary JSON echoed back in every callback."},"expiresInSeconds":{"type":"integer","minimum":60,"maximum":7776000,"description":"Active window in seconds (default 30d, max 90d)."},"maxFires":{"type":"integer","minimum":1,"maximum":1000,"description":"Stop after this many documents (default 25)."},"label":{"type":"string","maxLength":64,"description":"Optional free-text tag."}},"required":["callbackUrl"],"additionalProperties":false}}]},{"id":"watchers.flight-status","group":"watchers","description":"WATCHER: get a signed callback when a flight's status changes (e.g. Scheduled → Delayed → Departed → Landed). Arm once, pay once. Pass ident (airline flight designator like UAL1 / UA1, or a tail number). Fires on each status transition for the nearest instance; bounded by maxFires/expiry. The status at arm time is baselined (only changes fire). Data via FlightAware. Signed + retried; recoverable via watchers.status. Returns a watcherId.","versions":[{"version":null,"path":"/api/watchers/flight-status","method":"POST","deprecated":false,"price":{"usd":0.05},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"ident":{"type":"string","minLength":2,"maxLength":20,"pattern":"^[A-Za-z0-9-]+$","description":"Flight designator (UAL1 / UA1) or tail number."},"callbackUrl":{"type":"string","format":"uri","maxLength":2048,"description":"Signed event POSTed here (verify X-2s-Signature). Any http(s) URL."},"payload":{"type":"object","additionalProperties":{},"description":"Arbitrary JSON echoed back in every callback."},"expiresInSeconds":{"type":"integer","minimum":60,"maximum":7776000,"description":"Active window in seconds (default 7 days; flights are short-lived)."},"maxFires":{"type":"integer","minimum":1,"maximum":1000,"description":"Stop after this many status changes (default 10)."},"label":{"type":"string","maxLength":64,"description":"Optional free-text tag."}},"required":["ident","callbackUrl"],"additionalProperties":false}}]},{"id":"watchers.fred-series","group":"watchers","description":"WATCHER: get a signed callback when a FRED economic series' latest value crosses a level. Arm once, pay once. Pass seriesId (e.g. DGS10 = 10yr Treasury, UNRATE = unemployment, CPIAUCSL = CPI, FEDFUNDS = fed funds). conditionType 'above'/'below'; threshold is the series value. Fires once per crossing as new data posts; bounded by maxFires/expiry. Free public-domain (FRED). Signed (verify offline) + retried; recoverable via watchers.status. Returns a watcherId.","versions":[{"version":null,"path":"/api/watchers/fred-series","method":"POST","deprecated":false,"price":{"usd":0.05},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"seriesId":{"type":"string","minLength":1,"maxLength":64,"pattern":"^[A-Za-z0-9.\\-_]+$","description":"FRED series id, e.g. DGS10, UNRATE, CPIAUCSL, FEDFUNDS."},"conditionType":{"type":"string","enum":["above","below"],"description":"Fire when the latest value goes above or below the threshold."},"threshold":{"type":"number","description":"The series value to cross, e.g. 5 (for DGS10 = 5% 10yr yield)."},"callbackUrl":{"type":"string","format":"uri","maxLength":2048,"description":"Signed event POSTed here (verify X-2s-Signature). Any http(s) URL."},"payload":{"type":"object","additionalProperties":{},"description":"Arbitrary JSON echoed back in every callback."},"expiresInSeconds":{"type":"integer","minimum":60,"maximum":7776000,"description":"Active window in seconds (default 30d, max 90d)."},"maxFires":{"type":"integer","minimum":1,"maximum":1000,"description":"Stop after this many callbacks (default 1)."},"label":{"type":"string","maxLength":64,"description":"Optional free-text tag."}},"required":["seriesId","conditionType","threshold","callbackUrl"],"additionalProperties":false}}]},{"id":"watchers.funding-rate","group":"watchers","description":"WATCHER: get a signed callback when a Hyperliquid perpetual's hourly funding rate crosses a level (e.g. flips negative). Arm once, pay once. Pass coin (e.g. BTC, ETH). conditionType 'above'/'below'; threshold is the hourly funding rate (can be negative, e.g. -0.0001). Fires once per crossing; bounded by maxFires/expiry. Data via Hyperliquid. Signed (verify offline) + retried; recoverable via watchers.status. Returns a watcherId.","versions":[{"version":null,"path":"/api/watchers/funding-rate","method":"POST","deprecated":false,"price":{"usd":0.05},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"coin":{"type":"string","minLength":1,"maxLength":20,"pattern":"^[A-Za-z0-9]+$","description":"Perp coin symbol, e.g. BTC, ETH, SOL."},"conditionType":{"type":"string","enum":["above","below"],"description":"Fire when hourly funding goes above or below the threshold."},"threshold":{"type":"number","description":"Hourly funding rate to cross (can be negative, e.g. -0.0001)."},"callbackUrl":{"type":"string","format":"uri","maxLength":2048,"description":"Signed event POSTed here (verify X-2s-Signature). Any http(s) URL."},"payload":{"type":"object","additionalProperties":{},"description":"Arbitrary JSON echoed back in every callback."},"expiresInSeconds":{"type":"integer","minimum":60,"maximum":7776000,"description":"Active window in seconds (default 30d, max 90d)."},"maxFires":{"type":"integer","minimum":1,"maximum":1000,"description":"Stop after this many callbacks (default 1)."},"label":{"type":"string","maxLength":64,"description":"Optional free-text tag."}},"required":["coin","conditionType","threshold","callbackUrl"],"additionalProperties":false}}]},{"id":"watchers.fx-rate","group":"watchers","description":"WATCHER: get a signed callback when an FX pair crosses a rate you set. Arm once, pay once. base + quote are 3-letter ISO currency codes (e.g. base USD, quote EUR). conditionType 'above'/'below'; threshold is the quote-per-base rate. Fires once per crossing; bounded by maxFires/expiry. Rates via Frankfurter (ECB). Signed (verify offline) + retried; recoverable via watchers.status. Returns a watcherId.","versions":[{"version":null,"path":"/api/watchers/fx-rate","method":"POST","deprecated":false,"price":{"usd":0.05},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"base":{"type":"string","pattern":"^[A-Za-z]{3}$","description":"Base currency, e.g. USD."},"quote":{"type":"string","pattern":"^[A-Za-z]{3}$","description":"Quote currency, e.g. EUR."},"conditionType":{"type":"string","enum":["above","below"],"description":"Fire when the rate goes above or below the threshold."},"threshold":{"type":"number","exclusiveMinimum":true,"minimum":0,"description":"Quote-per-base rate to cross, e.g. 0.95."},"callbackUrl":{"type":"string","format":"uri","maxLength":2048,"description":"Signed event POSTed here (verify X-2s-Signature). Any http(s) URL."},"payload":{"type":"object","additionalProperties":{},"description":"Arbitrary JSON echoed back in every callback."},"expiresInSeconds":{"type":"integer","minimum":60,"maximum":7776000,"description":"Active window in seconds (default 30d, max 90d)."},"maxFires":{"type":"integer","minimum":1,"maximum":1000,"description":"Stop after this many callbacks (default 1)."},"label":{"type":"string","maxLength":64,"description":"Optional free-text tag."}},"required":["base","quote","conditionType","threshold","callbackUrl"],"additionalProperties":false}}]},{"id":"watchers.gas-price","group":"watchers","description":"WATCHER: get a signed callback when EVM gas crosses a level you set — e.g. \"wake me when Ethereum gas drops below 10 gwei.\" Arm once, pay once (no account, no API key). chain: base | ethereum | polygon | arbitrum | optimism. conditionType: 'below' or 'above'; threshold is in gwei (compared to the chosen fee tier's max fee per gas). tier: slow | standard | fast (default standard). Fires once per crossing; bounded by a maxFires / expiry budget. Deliveries are EIP-191-signed (verify offline) and retried with exponential backoff; missed pushes are recoverable via watchers.status. Returns a watcherId.","versions":[{"version":null,"path":"/api/watchers/gas-price","method":"POST","deprecated":false,"price":{"usd":0.05},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"chain":{"type":"string","enum":["base","ethereum","polygon","arbitrum","optimism"],"description":"EVM chain whose gas to watch."},"conditionType":{"type":"string","enum":["below","above"],"description":"'below' (cheap gas alert) or 'above' (congestion alert)."},"threshold":{"type":"number","exclusiveMinimum":true,"minimum":0,"maximum":1000000,"description":"Gas price threshold in gwei (e.g. 10), compared to the chosen tier’s max fee per gas."},"tier":{"type":"string","enum":["slow","standard","fast"],"description":"Fee tier to compare against. Default: standard."},"callbackUrl":{"type":"string","format":"uri","maxLength":2048,"description":"Where we POST the event. Any http(s) URL; the JSON body is signed (verify with X-2s-Signature). e.g. https://your-agent.app/hooks/gas"},"payload":{"type":"object","additionalProperties":{},"description":"Arbitrary JSON echoed back verbatim in every callback. e.g. {\"agentId\":\"a1\"}"},"expiresInSeconds":{"type":"integer","minimum":60,"maximum":7776000,"description":"How long the watch stays active, in seconds. Default 2592000 (30 days), max 7776000 (90 days)."},"maxFires":{"type":"integer","minimum":1,"maximum":1000,"description":"Stop after this many callbacks (default 1). Each fire is a fresh crossing into the condition."},"label":{"type":"string","maxLength":64,"description":"Optional free-text tag to recognize this watcher later."}},"required":["chain","conditionType","threshold","callbackUrl"],"additionalProperties":false}}]},{"id":"watchers.http-headers","group":"watchers","description":"WATCHER: get a signed callback when a website's HTTP security-headers grade changes (e.g. a regression from A to C). Arm once, pay once. Pass url. Fires when the grade changes; bounded by maxFires/expiry. The grade at arm time is baselined. Useful for catching config regressions. Signed (verify offline) + retried; recoverable via watchers.status. Returns a watcherId.","versions":[{"version":null,"path":"/api/watchers/http-headers","method":"POST","deprecated":false,"price":{"usd":0.05},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"url":{"type":"string","format":"uri","maxLength":2048,"description":"The URL to monitor, e.g. https://example.com."},"callbackUrl":{"type":"string","format":"uri","maxLength":2048,"description":"Signed event POSTed here (verify X-2s-Signature). Any http(s) URL."},"payload":{"type":"object","additionalProperties":{},"description":"Arbitrary JSON echoed back in every callback."},"expiresInSeconds":{"type":"integer","minimum":60,"maximum":7776000,"description":"Active window in seconds (default 30d, max 90d)."},"maxFires":{"type":"integer","minimum":1,"maximum":1000,"description":"Stop after this many changes (default 10)."},"label":{"type":"string","maxLength":64,"description":"Optional free-text tag."}},"required":["url","callbackUrl"],"additionalProperties":false}}]},{"id":"watchers.ioc-reputation","group":"watchers","description":"WATCHER: get a signed callback when an indicator of compromise (IP or domain) changes malicious status across threat feeds. Arm once, pay once. Pass ioc (an IP address or domain). Fires when the malicious verdict flips; bounded by maxFires/expiry. The status at arm time is baselined. Signed (verify offline) + retried; recoverable via watchers.status. Returns a watcherId.","versions":[{"version":null,"path":"/api/watchers/ioc-reputation","method":"POST","deprecated":false,"price":{"usd":0.05},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"ioc":{"type":"string","minLength":3,"maxLength":255,"description":"Indicator to watch: an IP address or domain."},"callbackUrl":{"type":"string","format":"uri","maxLength":2048,"description":"Signed event POSTed here (verify X-2s-Signature). Any http(s) URL."},"payload":{"type":"object","additionalProperties":{},"description":"Arbitrary JSON echoed back in every callback."},"expiresInSeconds":{"type":"integer","minimum":60,"maximum":7776000,"description":"Active window in seconds (default 30d, max 90d)."},"maxFires":{"type":"integer","minimum":1,"maximum":1000,"description":"Stop after this many changes (default 10)."},"label":{"type":"string","maxLength":64,"description":"Optional free-text tag."}},"required":["ioc","callbackUrl"],"additionalProperties":false}}]},{"id":"watchers.ipo","group":"watchers","description":"WATCHER: get a signed callback when a new US IPO appears on the calendar. Arm once, pay once. Optionally pass keyword to only fire when the company name/symbol matches. Fires once per new IPO (deduped by symbol); bounded by maxFires/expiry. Existing entries at arm time are baselined. Calendar via Finnhub. Signed (verify offline) + retried; recoverable via watchers.status. Returns a watcherId.","versions":[{"version":null,"path":"/api/watchers/ipo","method":"POST","deprecated":false,"price":{"usd":0.05},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"keyword":{"type":"string","maxLength":64,"description":"Optional: only fire when the IPO name contains this text (case-insensitive)."},"callbackUrl":{"type":"string","format":"uri","maxLength":2048,"description":"Signed event POSTed here (verify X-2s-Signature). Any http(s) URL."},"payload":{"type":"object","additionalProperties":{},"description":"Arbitrary JSON echoed back in every callback."},"expiresInSeconds":{"type":"integer","minimum":60,"maximum":7776000,"description":"Active window in seconds (default 30d, max 90d)."},"maxFires":{"type":"integer","minimum":1,"maximum":1000,"description":"Stop after this many IPOs (default 25)."},"label":{"type":"string","maxLength":64,"description":"Optional free-text tag."}},"required":["callbackUrl"],"additionalProperties":false}}]},{"id":"watchers.package-release","group":"watchers","description":"WATCHER: get a signed callback when a package publishes a new version — track your dependencies. Arm once, pay once. registry is 'npm' or 'pypi'; name is the package name (e.g. react, requests). Fires when the latest version changes; bounded by maxFires/expiry. The version at arm time is baselined. Signed (verify offline) + retried; recoverable via watchers.status. Returns a watcherId.","versions":[{"version":null,"path":"/api/watchers/package-release","method":"POST","deprecated":false,"price":{"usd":0.05},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"registry":{"type":"string","enum":["npm","pypi"],"description":"Package registry: npm or pypi."},"name":{"type":"string","minLength":1,"maxLength":120,"description":"Package name, e.g. react (npm) or requests (pypi)."},"callbackUrl":{"type":"string","format":"uri","maxLength":2048,"description":"Signed event POSTed here (verify X-2s-Signature). Any http(s) URL."},"payload":{"type":"object","additionalProperties":{},"description":"Arbitrary JSON echoed back in every callback."},"expiresInSeconds":{"type":"integer","minimum":60,"maximum":7776000,"description":"Active window in seconds (default 30d, max 90d)."},"maxFires":{"type":"integer","minimum":1,"maximum":1000,"description":"Stop after this many releases (default 10)."},"label":{"type":"string","maxLength":64,"description":"Optional free-text tag."}},"required":["registry","name","callbackUrl"],"additionalProperties":false}}]},{"id":"watchers.paper","group":"watchers","description":"WATCHER: get a signed callback when a new academic paper matching your query is published (arXiv / PubMed / Semantic Scholar). Arm once, pay once. Pass query (keywords, author, topic). Fires once per new paper (deduped by source id); bounded by maxFires/expiry. Existing results at arm time are baselined. Signed (verify offline) + retried; recoverable via watchers.status. Returns a watcherId.","versions":[{"version":null,"path":"/api/watchers/paper","method":"POST","deprecated":false,"price":{"usd":0.05},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"query":{"type":"string","minLength":2,"maxLength":200,"description":"Search query — keywords, author, or topic."},"callbackUrl":{"type":"string","format":"uri","maxLength":2048,"description":"Signed event POSTed here (verify X-2s-Signature). Any http(s) URL."},"payload":{"type":"object","additionalProperties":{},"description":"Arbitrary JSON echoed back in every callback."},"expiresInSeconds":{"type":"integer","minimum":60,"maximum":7776000,"description":"Active window in seconds (default 30d, max 90d)."},"maxFires":{"type":"integer","minimum":1,"maximum":1000,"description":"Stop after this many papers (default 25)."},"label":{"type":"string","maxLength":64,"description":"Optional free-text tag."}},"required":["query","callbackUrl"],"additionalProperties":false}}]},{"id":"watchers.patent","group":"watchers","description":"WATCHER: get a signed callback when a new USPTO patent matching your query appears. Arm once, pay once. Pass query (keywords, assignee, etc.). Fires once per new patent (deduped by application number); bounded by maxFires/expiry. Existing results at arm time are baselined. Signed (verify offline) + retried; recoverable via watchers.status. Returns a watcherId.","versions":[{"version":null,"path":"/api/watchers/patent","method":"POST","deprecated":false,"price":{"usd":0.05},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"query":{"type":"string","minLength":2,"maxLength":200,"description":"Search query — keywords, assignee, inventor, etc."},"callbackUrl":{"type":"string","format":"uri","maxLength":2048,"description":"Signed event POSTed here (verify X-2s-Signature). Any http(s) URL."},"payload":{"type":"object","additionalProperties":{},"description":"Arbitrary JSON echoed back in every callback."},"expiresInSeconds":{"type":"integer","minimum":60,"maximum":7776000,"description":"Active window in seconds (default 30d, max 90d)."},"maxFires":{"type":"integer","minimum":1,"maximum":1000,"description":"Stop after this many patents (default 25)."},"label":{"type":"string","maxLength":64,"description":"Optional free-text tag."}},"required":["query","callbackUrl"],"additionalProperties":false}}]},{"id":"watchers.prediction-market","group":"watchers","description":"WATCHER: get a signed callback when a Polymarket outcome's implied probability crosses a level. Arm once, pay once. Pass conditionId (the market's condition id) and outcomeIndex (0 = first outcome, usually Yes). conditionType 'above'/'below'; threshold is a probability 0–1 (e.g. 0.8). Fires once per crossing; bounded by maxFires/expiry. Prices via Polymarket. Signed (verify offline) + retried; recoverable via watchers.status. Returns a watcherId.","versions":[{"version":null,"path":"/api/watchers/prediction-market","method":"POST","deprecated":false,"price":{"usd":0.05},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"conditionId":{"type":"string","minLength":3,"maxLength":80,"description":"Polymarket market conditionId (from predict.market / predict.markets)."},"outcomeIndex":{"type":"integer","minimum":0,"maximum":50,"description":"Which outcome to watch (0 = first, usually Yes). Default 0."},"conditionType":{"type":"string","enum":["above","below"],"description":"Fire when the probability goes above or below the threshold."},"threshold":{"type":"number","minimum":0,"maximum":1,"description":"Probability 0–1 to cross, e.g. 0.8."},"callbackUrl":{"type":"string","format":"uri","maxLength":2048,"description":"Signed event POSTed here (verify X-2s-Signature). Any http(s) URL."},"payload":{"type":"object","additionalProperties":{},"description":"Arbitrary JSON echoed back in every callback."},"expiresInSeconds":{"type":"integer","minimum":60,"maximum":7776000,"description":"Active window in seconds (default 30d, max 90d)."},"maxFires":{"type":"integer","minimum":1,"maximum":1000,"description":"Stop after this many callbacks (default 1)."},"label":{"type":"string","maxLength":64,"description":"Optional free-text tag."}},"required":["conditionId","conditionType","threshold","callbackUrl"],"additionalProperties":false}}]},{"id":"watchers.product-recall","group":"watchers","description":"WATCHER: get a signed callback when a new US product recall is published (CPSC). Arm once, pay once. Optionally pass keyword to only fire on recalls whose title contains it (e.g. a brand or product). Fires once per new recall (deduped by recall id); bounded by maxFires/expiry. Existing recalls at arm time are baselined. Free public-domain data. Signed (verify offline) + retried; recoverable via watchers.status. Returns a watcherId.","versions":[{"version":null,"path":"/api/watchers/product-recall","method":"POST","deprecated":false,"price":{"usd":0.05},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"keyword":{"type":"string","maxLength":64,"description":"Optional: only fire on recalls whose title contains this text (case-insensitive)."},"callbackUrl":{"type":"string","format":"uri","maxLength":2048,"description":"Signed event POSTed here (verify X-2s-Signature). Any http(s) URL."},"payload":{"type":"object","additionalProperties":{},"description":"Arbitrary JSON echoed back in every callback."},"expiresInSeconds":{"type":"integer","minimum":60,"maximum":7776000,"description":"Active window in seconds (default 30d, max 90d)."},"maxFires":{"type":"integer","minimum":1,"maximum":1000,"description":"Stop after this many recalls (default 25)."},"label":{"type":"string","maxLength":64,"description":"Optional free-text tag."}},"required":["callbackUrl"],"additionalProperties":false}}]},{"id":"watchers.sec-filing","group":"watchers","description":"WATCHER: get a signed callback when a US company files with the SEC (EDGAR). Arm once, pay once. Pass ticker; optionally form to only fire on a specific filing type (e.g. 8-K, 10-K, 13F, 4). Fires once per new filing (deduped by accession number); bounded by maxFires/expiry. Existing filings at arm time are baselined (no backlog blast). Signed (verify offline) + retried; recoverable via watchers.status. Returns a watcherId.","versions":[{"version":null,"path":"/api/watchers/sec-filing","method":"POST","deprecated":false,"price":{"usd":0.05},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"ticker":{"type":"string","minLength":1,"maxLength":12,"pattern":"^[A-Za-z][A-Za-z0-9.\\-]{0,11}$","description":"US-listed ticker, e.g. AAPL."},"form":{"type":"string","maxLength":20,"description":"Optional filing type to filter on (e.g. 8-K, 10-K, 13F, 4). Omit for all forms."},"callbackUrl":{"type":"string","format":"uri","maxLength":2048,"description":"Signed event POSTed here (verify X-2s-Signature). Any http(s) URL."},"payload":{"type":"object","additionalProperties":{},"description":"Arbitrary JSON echoed back in every callback."},"expiresInSeconds":{"type":"integer","minimum":60,"maximum":7776000,"description":"Active window in seconds (default 30d, max 90d)."},"maxFires":{"type":"integer","minimum":1,"maximum":1000,"description":"Stop after this many filings (default 25)."},"label":{"type":"string","maxLength":64,"description":"Optional free-text tag."}},"required":["ticker","callbackUrl"],"additionalProperties":false}}]},{"id":"watchers.status","group":"watchers","description":"Status of a watcher by watcherId: state (armed/completed/expired/cancelled), fires used/remaining, expiry, recent deliveries (with HTTP result + attempt count), and any UNDELIVERED events with their full callback bodies — the pull backstop, so a missed push is always recoverable here. Pairs with watchers.crypto-address-activity.","versions":[{"version":null,"path":"/api/watchers/status","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"watcherId":{"type":"string","minLength":8,"maxLength":80}},"required":["watcherId"],"additionalProperties":false}}]},{"id":"watchers.stock-price","group":"watchers","description":"WATCHER: get a signed callback when a US stock crosses a price you set. Arm once, pay once (no account, no API key) — we poll the quote during US market hours and POST your custom payload to callbackUrl the moment the condition is met. conditionType: 'above' / 'below' (threshold = a USD price) or 'pct_up' / 'pct_down' (threshold = a percent move vs the prior close). Fires once per crossing into the condition; bounded by a maxFires / expiry budget. Real-time IEX-tier quote via Finnhub. Deliveries are EIP-191-signed (verify offline) and retried with exponential backoff; missed pushes are recoverable via watchers.status. Returns a watcherId.","versions":[{"version":null,"path":"/api/watchers/stock-price","method":"POST","deprecated":false,"price":{"usd":0.05},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"ticker":{"type":"string","minLength":1,"maxLength":12,"pattern":"^[A-Za-z][A-Za-z0-9.\\-]{0,11}$","description":"US-listed ticker to watch, e.g. AAPL."},"conditionType":{"type":"string","enum":["above","below","pct_up","pct_down"],"description":"above/below = threshold is a USD price; pct_up/pct_down = threshold is a percent move vs the prior close."},"threshold":{"type":"number","description":"The trigger level. A USD price for above/below (e.g. 200), or a percent for pct_up/pct_down (e.g. 5 = ±5%)."},"callbackUrl":{"type":"string","format":"uri","maxLength":2048,"description":"Where we POST the event. Any http(s) URL; the JSON body is signed (verify with X-2s-Signature). e.g. https://your-agent.app/hooks/price"},"payload":{"type":"object","additionalProperties":{},"description":"Arbitrary JSON echoed back verbatim in every callback so you can route/identify the event. e.g. {\"agentId\":\"a1\"}"},"expiresInSeconds":{"type":"integer","minimum":60,"maximum":7776000,"description":"How long the watch stays active, in seconds. Default 2592000 (30 days), max 7776000 (90 days)."},"maxFires":{"type":"integer","minimum":1,"maximum":1000,"description":"Stop after this many callbacks (default 1 — a one-shot alert). Each fire is a fresh crossing into the condition."},"label":{"type":"string","maxLength":64,"description":"Optional free-text tag to recognize this watcher later."}},"required":["ticker","conditionType","threshold","callbackUrl"],"additionalProperties":false}}]},{"id":"watchers.token-price","group":"watchers","description":"WATCHER: get a signed callback when a crypto asset crosses a price you set. Arm once, pay once (no account, no API key) — we poll the spot price and POST your custom payload to callbackUrl the moment the condition is met. tokenId is a CoinGecko asset id (lowercase, e.g. bitcoin, ethereum, solana — not the ticker). conditionType: 'above' / 'below' (threshold = a USD price) or 'pct_up' / 'pct_down' (threshold = a percent move over 24h). Fires once per crossing; bounded by a maxFires / expiry budget. Price via CoinGecko. Deliveries are EIP-191-signed (verify offline) and retried with exponential backoff; missed pushes are recoverable via watchers.status. Returns a watcherId.","versions":[{"version":null,"path":"/api/watchers/token-price","method":"POST","deprecated":false,"price":{"usd":0.05},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"tokenId":{"type":"string","minLength":1,"maxLength":64,"pattern":"^[a-z0-9-]{1,64}$","description":"CoinGecko asset id (lowercase, not ticker), e.g. bitcoin, ethereum, solana."},"conditionType":{"type":"string","enum":["above","below","pct_up","pct_down"],"description":"above/below = threshold is a USD price; pct_up/pct_down = threshold is a percent move over 24h."},"threshold":{"type":"number","description":"Trigger level: a USD price for above/below (e.g. 100000), or a percent for pct_up/pct_down (e.g. 10 = ±10% over 24h)."},"callbackUrl":{"type":"string","format":"uri","maxLength":2048,"description":"Where we POST the event. Any http(s) URL; the JSON body is signed (verify with X-2s-Signature). e.g. https://your-agent.app/hooks/btc"},"payload":{"type":"object","additionalProperties":{},"description":"Arbitrary JSON echoed back verbatim in every callback. e.g. {\"agentId\":\"a1\"}"},"expiresInSeconds":{"type":"integer","minimum":60,"maximum":7776000,"description":"How long the watch stays active, in seconds. Default 2592000 (30 days), max 7776000 (90 days)."},"maxFires":{"type":"integer","minimum":1,"maximum":1000,"description":"Stop after this many callbacks (default 1 — a one-shot alert). Each fire is a fresh crossing into the condition."},"label":{"type":"string","maxLength":64,"description":"Optional free-text tag to recognize this watcher later."}},"required":["tokenId","conditionType","threshold","callbackUrl"],"additionalProperties":false}}]},{"id":"watchers.weather-alert","group":"watchers","description":"WATCHER: get a signed callback when the US National Weather Service issues a new alert for an area. Arm once, pay once. Pass area (2-letter state/territory code, e.g. CA, TX); optionally severity to only fire at/above a level (Minor/Moderate/Severe/Extreme). Fires once per new alert (deduped by id); bounded by maxFires/expiry. Active alerts at arm time are baselined. Free public-domain (NWS). Signed + retried; recoverable via watchers.status. Returns a watcherId.","versions":[{"version":null,"path":"/api/watchers/weather-alert","method":"POST","deprecated":false,"price":{"usd":0.05},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"area":{"type":"string","pattern":"^[A-Za-z]{2}$","description":"US state/territory code, e.g. CA, TX, FL."},"severity":{"type":"string","enum":["Minor","Moderate","Severe","Extreme"],"description":"Optional: only fire on alerts of this severity."},"callbackUrl":{"type":"string","format":"uri","maxLength":2048,"description":"Signed event POSTed here (verify X-2s-Signature). Any http(s) URL."},"payload":{"type":"object","additionalProperties":{},"description":"Arbitrary JSON echoed back in every callback."},"expiresInSeconds":{"type":"integer","minimum":60,"maximum":7776000,"description":"Active window in seconds (default 30d, max 90d)."},"maxFires":{"type":"integer","minimum":1,"maximum":1000,"description":"Stop after this many alerts (default 25)."},"label":{"type":"string","maxLength":64,"description":"Optional free-text tag."}},"required":["area","callbackUrl"],"additionalProperties":false}}]},{"id":"watchers.whois","group":"watchers","description":"WATCHER: get a signed callback when a domain's WHOIS registration changes — registrar, expiry, or status. Arm once, pay once. Pass domain. Fires on any WHOIS change (e.g. transfer, renewal, expiry shift); bounded by maxFires/expiry. The record at arm time is baselined. Useful for catching domain transfers/expiries or monitoring a brand. Signed (verify offline) + retried; recoverable via watchers.status. Returns a watcherId.","versions":[{"version":null,"path":"/api/watchers/whois","method":"POST","deprecated":false,"price":{"usd":0.05},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"domain":{"type":"string","minLength":3,"maxLength":255,"description":"Domain to monitor, e.g. example.com."},"callbackUrl":{"type":"string","format":"uri","maxLength":2048,"description":"Signed event POSTed here (verify X-2s-Signature). Any http(s) URL."},"payload":{"type":"object","additionalProperties":{},"description":"Arbitrary JSON echoed back in every callback."},"expiresInSeconds":{"type":"integer","minimum":60,"maximum":7776000,"description":"Active window in seconds (default 30d, max 90d)."},"maxFires":{"type":"integer","minimum":1,"maximum":1000,"description":"Stop after this many changes (default 10)."},"label":{"type":"string","maxLength":64,"description":"Optional free-text tag."}},"required":["domain","callbackUrl"],"additionalProperties":false}}]},{"id":"water.gauge","group":"water","description":"Real-time US river/stream conditions from a USGS monitoring site. Pass site = the USGS site number (e.g. 01646500 = Potomac River near Washington DC). Returns the latest readings — streamflow (cubic feet/sec), gage height (ft), and water/air temperature where available — with the site name + coordinates and observation time. Useful for flood monitoring, recreation, and hydrology. Source: USGS National Water Information System (keyless, public domain).","versions":[{"version":null,"path":"/api/water/gauge","method":"GET","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"site":{"type":"string","pattern":"^\\d{8,15}$"}},"required":["site"],"additionalProperties":false}}]},{"id":"weather.air-quality","group":"weather","description":"Current air quality for any coordinate worldwide. Pass lat + lon. Returns the US AQI (+ category Good/Moderate/Unhealthy…), the European AQI, and pollutant concentrations: PM2.5, PM10, ozone, nitrogen dioxide, sulphur dioxide, carbon monoxide. Source: Open-Meteo / CAMS (keyless).","versions":[{"version":null,"path":"/api/weather/air-quality","method":"GET","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"lat":{"type":"number","minimum":-90,"maximum":90},"lon":{"type":"number","minimum":-180,"maximum":180}},"required":["lat","lon"],"additionalProperties":false}}]},{"id":"weather.alerts","group":"weather","description":"Live US severe-weather alerts from the National Weather Service. Pass a point (\"lat,lon\") to get every active watch, warning, and advisory for that exact location, or an area (2-letter US state or marine zone code) for area-wide alerts. Optionally filter by severity or urgency. Each alert returns the event type, severity, urgency, certainty, headline, affected-area description, issuing office, recommended public response, onset / expiry / end times, and the full hazard description plus protective-action instructions. Results are sorted most-severe first and capped by limit, with the true total reported. Public-domain NOAA / National Weather Service data, refreshed in real time.","versions":[{"version":null,"path":"/api/weather/alerts","method":"GET","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"point":{"type":"string","description":"Exact location as \"lat,lon\" in decimal degrees, e.g. \"25.7617,-80.1918\". Returns alerts covering that point. Provide point OR area, not both."},"area":{"type":"string","description":"2-letter US state / territory or NWS marine area code, e.g. \"FL\", \"TX\", \"PK\". Returns all active alerts for that area. Provide point OR area, not both."},"severity":{"type":"string","enum":["Extreme","Severe","Moderate","Minor","Unknown"],"description":"Filter to a single severity level."},"urgency":{"type":"string","enum":["Immediate","Expected","Future","Past","Unknown"],"description":"Filter to a single urgency level."},"limit":{"type":"integer","minimum":1,"maximum":100,"default":20,"description":"Max alerts to return (1-100, default 20). Most-severe first."}},"additionalProperties":false}}]},{"id":"weather.forecast","group":"weather","description":"Official US weather forecast for a coordinate (US land + territories). Pass lat + lon. Returns the National Weather Service forecast as a list of periods — by default ~7 days of day/night periods; pass hourly=true for an hour-by-hour forecast. Each period gives the temperature + unit, wind speed/direction, chance of precipitation, and a short + detailed forecast, plus the resolved city/state and issuing office. Source: US National Weather Service (api.weather.gov), public domain. For active warnings use weather.alerts.","versions":[{"version":null,"path":"/api/weather/forecast","method":"GET","deprecated":false,"price":{"usd":0.00144},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"lat":{"type":"number","minimum":-90,"maximum":90},"lon":{"type":"number","minimum":-180,"maximum":180},"hourly":{"type":"boolean"},"limit":{"type":"integer","minimum":1,"maximum":156}},"required":["lat","lon"],"additionalProperties":false}}]},{"id":"weather.history","group":"weather","description":"Historical daily weather for any coordinate (ERA5 reanalysis, 1940→~5 days ago). Pass lat + lon + start + end (YYYY-MM-DD, range ≤366 days). Returns per-day max/min/mean temperature (°C), precipitation total (mm) + hours, and max wind (km/h). Source: Open-Meteo archive / ECMWF ERA5 (keyless).","versions":[{"version":null,"path":"/api/weather/history","method":"GET","deprecated":false,"price":{"usd":0.00144},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"lat":{"type":"number","minimum":-90,"maximum":90},"lon":{"type":"number","minimum":-180,"maximum":180},"start":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"end":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},"required":["lat","lon","start","end"],"additionalProperties":false}}]},{"id":"weather.marine","group":"weather","description":"Current marine/sea-state conditions for an ocean or coastal coordinate. Pass lat + lon. Returns significant wave height (m), wave direction + period, and the wind-wave and swell-wave components. Useful for surf, sailing, and coastal ops. Source: Open-Meteo marine (keyless). Returns 404 for inland points.","versions":[{"version":null,"path":"/api/weather/marine","method":"GET","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"lat":{"type":"number","minimum":-90,"maximum":90},"lon":{"type":"number","minimum":-180,"maximum":180}},"required":["lat","lon"],"additionalProperties":false}}]},{"id":"weather.zip","group":"weather","description":"Current weather conditions for a US ZIP code (temperature, wind, humidity, conditions). Backed by the US National Weather Service (api.weather.gov) — public domain, no rate-limit pressure on commercial use.","versions":[{"version":null,"path":"/api/weather/zip","method":"GET","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"zip":{"type":"string","pattern":"^\\d{5}$"}},"required":["zip"],"additionalProperties":false}}]},{"id":"wikidata.entity","group":"wikidata","description":"Fetch a Wikidata entity (Q42, P31, etc.) — structured knowledge-graph record with labels + descriptions + aliases in selectable languages, claims (property → value statements grouped by property ID), sitelinks (Wikipedia article title per language). 110M+ entities. CC0 public domain. Pass languages= as comma-separated codes (default \"en\") to control which language strings are included; pass maxClaimsPerProperty to cap how many statements come back per property (default 10).","versions":[{"version":null,"path":"/api/wikidata/entity","method":"GET","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"id":{"type":"string","pattern":"^[QPLMSqplms]\\d+$"},"languages":{"type":"string","minLength":2,"maxLength":100,"default":"en"},"includeClaims":{"type":"boolean","default":true},"maxClaimsPerProperty":{"type":"integer","minimum":1,"maximum":50,"default":10}},"required":["id"],"additionalProperties":false}}]},{"id":"wikipedia.summary","group":"wikipedia","description":"Fetch a Wikipedia article summary in any of 30 supported languages. Returns title, displayTitle, lang, pageId, description, extract (plain text), extractHtml, lead image, canonical URLs, last-modified timestamp, word count, license, and an attribution string. Backed by https://<lang>.wikipedia.org/api/rest_v1/page/summary. Content is CC BY-SA 4.0 with attribution provided.","versions":[{"version":null,"path":"/api/wikipedia/summary","method":"GET","deprecated":false,"price":{"usd":0.001},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":300},"lang":{"type":"string","enum":["en","es","fr","de","it","pt","ru","ja","zh","ko","ar","nl","pl","tr","sv","cs","fi","da","no","el","he","hi","th","vi","uk","id","ms","ro","hu","simple"],"default":"en"}},"required":["title"],"additionalProperties":false}}]},{"id":"word.define","group":"word","description":"English dictionary lookup via dictionaryapi.dev (Wiktionary-sourced). Returns full entries with IPA phonetic transcription(s), audio pronunciation URLs, and meanings grouped by part of speech. Each meaning carries definitions with usage examples and per-definition synonyms + antonyms. CC BY-SA 3.0/4.0 — attribute when redistributing. Useful for vocabulary agents, writing assistants, language-learning tools.","versions":[{"version":null,"path":"/api/word/define","method":"GET","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"word":{"type":"string","pattern":"^[a-zA-Z][a-zA-Z'.-]{0,49}$"}},"required":["word"],"additionalProperties":false}}]},{"id":"word.related","group":"word","description":"Related-word lookup via Datamuse. Supply a seed word and a relation kind: rhymes, near-rhymes, synonyms, antonyms, means (semantic match), triggers (associated by usage), homophones, sounds-like (phonetic neighbour), spelled-like (typo / wildcard), follows-from (words that come after), preceded-by (words that come before). Returns ranked candidates with relevance score, syllable count, and grammatical tags. Useful for content generation, rhyme/poetry, vocabulary expansion, and naming agents.","versions":[{"version":null,"path":"/api/word/related","method":"GET","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"word":{"type":"string","pattern":"^[a-zA-Z][a-zA-Z'.-]{0,49}$"},"relation":{"type":"string","enum":["rhymes","near-rhymes","synonyms","antonyms","means","triggers","homophones","sounds-like","spelled-like","follows-from","preceded-by"]},"limit":{"type":"integer","minimum":1,"maximum":100,"default":25}},"required":["word","relation"],"additionalProperties":false}}]},{"id":"worldbank.indicator","group":"worldbank","description":"World Bank Open Data — fetch a time series of a specific indicator for a country (or 'all'). 1000+ indicators across 200+ countries, many series going back to 1960. Indicator codes are dotted-token strings, e.g., NY.GDP.MKTP.CD (GDP current US$), SP.POP.TOTL (population total), FP.CPI.TOTL.ZG (inflation CPI annual %), SL.UEM.TOTL.ZS (unemployment %), SE.ADT.LITR.ZS (adult literacy %), SP.DYN.LE00.IN (life expectancy). Country = ISO 2-letter (e.g., US, CN), ISO 3-letter (USA, CHN), or 'all'. Optional yearFrom/yearTo bracket. Each observation: country id+name, year, numeric value (may be null for missing), obsStatus. Returns indicator name + total count + pagination metadata.","versions":[{"version":null,"path":"/api/worldbank/indicator","method":"GET","deprecated":false,"price":{"usd":0.0012},"accepts":["x402"],"responseShape":"normalized","params":{"type":"object","properties":{"country":{"type":"string","pattern":"^([A-Za-z]{2,3}|all)$"},"indicator":{"type":"string","pattern":"^[A-Za-z0-9.]{3,40}$"},"yearFrom":{"type":"integer","minimum":1960,"maximum":2100},"yearTo":{"type":"integer","minimum":1960,"maximum":2100},"limit":{"type":"integer","minimum":1,"maximum":100,"default":50},"page":{"type":"integer","minimum":1,"maximum":100,"default":1}},"required":["country","indicator"],"additionalProperties":false}}]}],"specs":{"openapi":"/api/openapi","mcpServerCard":"/.well-known/mcp/server-card.json","wellKnownX402":"/.well-known/x402","aiPlugin":"/.well-known/ai-plugin.json","a2aAgentCard":"/.well-known/agent-card.json"},"seeAlso":[{"name":"Exa","url":"https://api.exa.ai","description":"Web search and crawling API for agents."},{"name":"Browserbase","url":"https://x402.browserbase.com","description":"Hosted headless browser sessions for agents."},{"name":"OATP","url":"https://api.oatp.cc","description":"Solana transaction explainer and SPL token risk scanner."},{"name":"OneSource","url":"https://skills.onesource.io","description":"Pay-per-call Ethereum mainnet RPC endpoints."}]}