{"openapi":"3.1.0","info":{"title":"datatoagents","version":"1.0.0","description":"Machine-only paid data APIs. Agents pay per request with x402 (USDC on Base). No accounts, no API keys. All errors are JSON."},"servers":[{"url":"/"}],"paths":{"/api/catalog":{"get":{"summary":"List available data services, prices, and params","description":"Optional query param `country` (ISO 3166-1 alpha-2) filters services by country coverage, e.g. /api/catalog?country=AU","operationId":"getCatalog","parameters":[{"name":"country","in":"query","required":false,"schema":{"type":"string","minLength":2,"maxLength":2},"description":"ISO 3166-1 alpha-2 country code filter, e.g. AU, US, GB"}],"responses":{"200":{"description":"Service catalog"}}}},"/mcp":{"post":{"summary":"MCP streamable-HTTP endpoint (one tool per service, per-call x402 payment)","operationId":"mcp","responses":{"200":{"description":"MCP JSON-RPC response"}}}},"/api/data/au-property-crime":{"post":{"summary":"Property Crime Stats (AU)","description":"Property crime incidence rates for Australian suburbs: break-and-enter, motor vehicle theft, other theft. Rates are per 100,000 residents, annualised.\n\nPayment: x402 — a request without valid payment returns 402 with payment requirements. Pay (USDC, base) and retry with the X-PAYMENT header.","operationId":"postData_au-property-crime","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"suburb":{"type":"string","description":"Suburb name, e.g. \"Parramatta\""},"state":{"type":"string","description":"AU state code: NSW, VIC, QLD, SA, WA, TAS, NT, ACT"},"postcode":{"type":"string","description":"4-digit postcode, narrows disambiguation"}},"required":["suburb"]},"examples":{"example":{"value":{"suburb":"Parramatta","state":"NSW","postcode":"2150"}}}}}},"responses":{"200":{"description":"Service response","content":{"application/json":{"schema":{"type":"object","properties":{"service":{"type":"string","const":"au-property-crime"},"params":{"type":"object"},"_meta":{"type":"object","properties":{"cached":{"type":"boolean"},"paid":{"type":"boolean"},"payer":{"type":"string","nullable":true},"priceUsd":{"type":"number"}}},"suburb":{"type":"string","description":"Resolved suburb name"},"state":{"type":"string","description":"State code"},"postcode":{"type":"string","description":"Postcode"},"year":{"type":"string","description":"Data year"},"rates":{"type":"object","description":"Per-100k rates: breakAndEnter, motorVehicleTheft, otherTheft"},"trend":{"type":"string","description":"Direction vs prior year: up | down | stable"},"source":{"type":"string","description":"Data source identifier"}}}}}},"400":{"description":"Invalid params (JSON error body)"},"402":{"description":"Payment required — body contains x402 payment requirements"},"404":{"description":"Unknown service or no data (JSON error body)"}},"x-price-usd":0.01,"x-payment-network":"base"}},"/api/data/au-property-crime/preview":{"get":{"summary":"Free sample response for Property Crime Stats (AU)","operationId":"preview_au-property-crime","responses":{"200":{"description":"Sample response with example params"}}}},"/api/data/au-nsw-hazard":{"post":{"summary":"NSW Hazard (Flood + Landslide)","description":"NSW Environmental Planning Instrument hazard layers: flood planning areas and landslide risk land, queried by point or suburb. Coverage is sparse — some LGAs have no hazard polygons mapped; responses flag coverage honestly.\n\nPayment: x402 — a request without valid payment returns 402 with payment requirements. Pay (USDC, base) and retry with the X-PAYMENT header.","operationId":"postData_au-nsw-hazard","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"suburb":{"type":"string","description":"NSW suburb name, e.g. \"Wollongong\". Provide either suburb OR lat+lng."},"lat":{"type":"number","description":"Latitude within NSW (-38.5..-27.5). Provide with lng instead of suburb."},"lng":{"type":"number","description":"Longitude within NSW (140.5..154.5). Provide with lat instead of suburb."},"hazard":{"type":"string","description":"Which hazard layer: \"flood\", \"landslide\", or \"all\" (default)"}},"required":[]},"examples":{"example":{"value":{"suburb":"Wollongong","lat":-34.42,"lng":150.88,"hazard":"all"}}}}}},"responses":{"200":{"description":"Service response","content":{"application/json":{"schema":{"type":"object","properties":{"service":{"type":"string","const":"au-nsw-hazard"},"params":{"type":"object"},"_meta":{"type":"object","properties":{"cached":{"type":"boolean"},"paid":{"type":"boolean"},"payer":{"type":"string","nullable":true},"priceUsd":{"type":"number"}}},"location":{"type":"object","description":"Resolved point: lat, lng, suburb (null when lat/lng given), state"},"hazard":{"type":"string","description":"Requested hazard filter"},"coverage":{"type":"string","description":"\"mapped\" (LGA is in a hazard dataset) or \"lga-not-in-dataset\" (LGA absent from layers entirely)"},"lga":{"type":"string","description":"LGA name when determinable"},"hazards":{"type":"object","description":"{ flood: [...], landslide: [...] } — EPI records per layer"},"source":{"type":"string","description":"Data source identifier"}}}}}},"400":{"description":"Invalid params (JSON error body)"},"402":{"description":"Payment required — body contains x402 payment requirements"},"404":{"description":"Unknown service or no data (JSON error body)"}},"x-price-usd":0.01,"x-payment-network":"base"}},"/api/data/au-nsw-hazard/preview":{"get":{"summary":"Free sample response for NSW Hazard (Flood + Landslide)","operationId":"preview_au-nsw-hazard","responses":{"200":{"description":"Sample response with example params"}}}},"/api/data/au-abs-demographics":{"post":{"summary":"ABS Demographics (ERP + SEIFA)","description":"Australian Bureau of Statistics demographics at LGA level: Estimated Resident Population (ERP), SEIFA Index of Relative Socio-economic Advantage and Disadvantage (IRSAD), and selected census characteristics (median age, median income, household size, dwelling type). Quarterly/annual releases.\n\nPayment: x402 — a request without valid payment returns 402 with payment requirements. Pay (USDC, base) and retry with the X-PAYMENT header.","operationId":"postData_au-abs-demographics","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"suburb":{"type":"string","description":"Suburb name, e.g. \"Parramatta\""},"state":{"type":"string","description":"AU state code: NSW, VIC, QLD, SA, WA, TAS, NT, ACT"},"postcode":{"type":"string","description":"4-digit postcode, narrows disambiguation"}},"required":["suburb"]},"examples":{"example":{"value":{"suburb":"Parramatta","state":"NSW","postcode":"2150"}}}}}},"responses":{"200":{"description":"Service response","content":{"application/json":{"schema":{"type":"object","properties":{"service":{"type":"string","const":"au-abs-demographics"},"params":{"type":"object"},"_meta":{"type":"object","properties":{"cached":{"type":"boolean"},"paid":{"type":"boolean"},"payer":{"type":"string","nullable":true},"priceUsd":{"type":"number"}}},"suburb":{"type":"string","description":"Resolved suburb name"},"state":{"type":"string","description":"State code"},"postcode":{"type":"string","description":"Postcode"},"lga":{"type":"string","description":"LGA name (uppercased key)"},"erp":{"type":"string","description":"Estimated Resident Population (latest available) or null"},"seifa":{"type":"object","description":"{ score, decile } — IRSAD score and 1-10 decile (null until wired)"},"census":{"type":"object","description":"{ age_median, income_median, household_size, dwelling_type } — null until wired"},"source":{"type":"string","description":"Data source identifier (abs:2025 placeholder)"}}}}}},"400":{"description":"Invalid params (JSON error body)"},"402":{"description":"Payment required — body contains x402 payment requirements"},"404":{"description":"Unknown service or no data (JSON error body)"}},"x-price-usd":0.01,"x-payment-network":"base"}},"/api/data/au-abs-demographics/preview":{"get":{"summary":"Free sample response for ABS Demographics (ERP + SEIFA)","operationId":"preview_au-abs-demographics","responses":{"200":{"description":"Sample response with example params"}}}},"/api/data/au-abs-building-approvals":{"post":{"summary":"ABS Building Approvals","description":"Monthly building approvals (dwellings, value, by type) at LGA level from ABS BA_LGA2024/2025. Agents frequently ask “how many houses/units approved in this LGA last year?”\n\nPayment: x402 — a request without valid payment returns 402 with payment requirements. Pay (USDC, base) and retry with the X-PAYMENT header.","operationId":"postData_au-abs-building-approvals","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"suburb":{"type":"string","description":"Suburb name, e.g. \"Parramatta\""},"state":{"type":"string","description":"AU state code: NSW, VIC, QLD, SA, WA, TAS, NT, ACT"},"postcode":{"type":"string","description":"4-digit postcode, narrows disambiguation"}},"required":["suburb"]},"examples":{"example":{"value":{"suburb":"Parramatta","state":"NSW","postcode":"2150"}}}}}},"responses":{"200":{"description":"Service response","content":{"application/json":{"schema":{"type":"object","properties":{"service":{"type":"string","const":"au-abs-building-approvals"},"params":{"type":"object"},"_meta":{"type":"object","properties":{"cached":{"type":"boolean"},"paid":{"type":"boolean"},"payer":{"type":"string","nullable":true},"priceUsd":{"type":"number"}}},"suburb":{"type":"string","description":"Resolved suburb name"},"state":{"type":"string","description":"State code"},"postcode":{"type":"string","description":"Postcode"},"lga":{"type":"string","description":"LGA name (uppercased key)"},"year":{"type":"string","description":"Reference year"},"approved_dwellings":{"type":"string","description":"Total dwellings approved"},"value_m":{"type":"string","description":"Value of approvals (millions AUD)"},"by_type":{"type":"object","description":"Breakdown by dwelling type (houses, units, etc.) or null"},"source":{"type":"string","description":"Data source identifier (abs:ba_lga:2024)"}}}}}},"400":{"description":"Invalid params (JSON error body)"},"402":{"description":"Payment required — body contains x402 payment requirements"},"404":{"description":"Unknown service or no data (JSON error body)"}},"x-price-usd":0.01,"x-payment-network":"base"}},"/api/data/au-abs-building-approvals/preview":{"get":{"summary":"Free sample response for ABS Building Approvals","operationId":"preview_au-abs-building-approvals","responses":{"200":{"description":"Sample response with example params"}}}},"/api/data/au-abs-building-activity":{"post":{"summary":"ABS Building Activity","description":"Quarterly building activity (8752.0) — value of work done and commenced at LGA level. Complements building approvals.\n\nPayment: x402 — a request without valid payment returns 402 with payment requirements. Pay (USDC, base) and retry with the X-PAYMENT header.","operationId":"postData_au-abs-building-activity","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"suburb":{"type":"string","description":"Suburb name, e.g. \"Parramatta\""},"state":{"type":"string","description":"AU state code: NSW, VIC, QLD, SA, WA, TAS, NT, ACT"},"postcode":{"type":"string","description":"4-digit postcode, narrows disambiguation"}},"required":["suburb"]},"examples":{"example":{"value":{"suburb":"Parramatta","state":"NSW","postcode":"2150"}}}}}},"responses":{"200":{"description":"Service response","content":{"application/json":{"schema":{"type":"object","properties":{"service":{"type":"string","const":"au-abs-building-activity"},"params":{"type":"object"},"_meta":{"type":"object","properties":{"cached":{"type":"boolean"},"paid":{"type":"boolean"},"payer":{"type":"string","nullable":true},"priceUsd":{"type":"number"}}},"suburb":{"type":"string","description":"Resolved suburb name"},"state":{"type":"string","description":"State code"},"postcode":{"type":"string","description":"Postcode"},"lga":{"type":"string","description":"LGA name (uppercased key)"},"year":{"type":"string","description":"Reference year"},"quarter":{"type":"string","description":"Quarter (Q1–Q4) or null"},"work_done_m":{"type":"string","description":"Value of work done (millions AUD)"},"work_commenced_m":{"type":"string","description":"Value of work commenced (millions AUD)"},"by_type":{"type":"string","description":"Breakdown by activity type or null"},"source":{"type":"string","description":"Data source identifier (abs:8752:2024)"}}}}}},"400":{"description":"Invalid params (JSON error body)"},"402":{"description":"Payment required — body contains x402 payment requirements"},"404":{"description":"Unknown service or no data (JSON error body)"}},"x-price-usd":0.01,"x-payment-network":"base"}},"/api/data/au-abs-building-activity/preview":{"get":{"summary":"Free sample response for ABS Building Activity","operationId":"preview_au-abs-building-activity","responses":{"200":{"description":"Sample response with example params"}}}},"/api/data/au-cpi":{"post":{"summary":"Consumer Price Index (6401.0)","description":"ABS quarterly CPI YoY change (6401.0) for Australia or capital-city region. Returns latest period and YoY percentage.\n\nPayment: x402 — a request without valid payment returns 402 with payment requirements. Pay (USDC, base) and retry with the X-PAYMENT header.","operationId":"postData_au-cpi","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"region":{"type":"string","description":"ABS region or \"National\" (default)"}},"required":[]},"examples":{"example":{"value":{"region":"Sydney"}}}}}},"responses":{"200":{"description":"Service response","content":{"application/json":{"schema":{"type":"object","properties":{"service":{"type":"string","const":"au-cpi"},"params":{"type":"object"},"_meta":{"type":"object","properties":{"cached":{"type":"boolean"},"paid":{"type":"boolean"},"payer":{"type":"string","nullable":true},"priceUsd":{"type":"number"}}},"region":{"type":"string","description":"Region or \"National\""},"cpi_yoy":{"type":"string","description":"Year-on-year CPI change (percentage points) or null"},"period":{"type":"string","description":"Reference quarter or null"},"source":{"type":"string","description":"abs:6401.0"}}}}}},"400":{"description":"Invalid params (JSON error body)"},"402":{"description":"Payment required — body contains x402 payment requirements"},"404":{"description":"Unknown service or no data (JSON error body)"}},"x-price-usd":0.005,"x-payment-network":"base"}},"/api/data/au-cpi/preview":{"get":{"summary":"Free sample response for Consumer Price Index (6401.0)","operationId":"preview_au-cpi","responses":{"200":{"description":"Sample response with example params"}}}},"/api/data/au-unemployment":{"post":{"summary":"Unemployment Rate (6202.0)","description":"ABS monthly unemployment rate (6202.0) for Australia or state/territory. Returns latest period and rate.\n\nPayment: x402 — a request without valid payment returns 402 with payment requirements. Pay (USDC, base) and retry with the X-PAYMENT header.","operationId":"postData_au-unemployment","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"region":{"type":"string","description":"ABS region or \"National\" (default)"}},"required":[]},"examples":{"example":{"value":{"region":"National"}}}}}},"responses":{"200":{"description":"Service response","content":{"application/json":{"schema":{"type":"object","properties":{"service":{"type":"string","const":"au-unemployment"},"params":{"type":"object"},"_meta":{"type":"object","properties":{"cached":{"type":"boolean"},"paid":{"type":"boolean"},"payer":{"type":"string","nullable":true},"priceUsd":{"type":"number"}}},"region":{"type":"string","description":"Region or \"National\""},"unemployment_rate":{"type":"string","description":"Unemployment rate (percentage) or null"},"period":{"type":"string","description":"Reference month or null"},"source":{"type":"string","description":"abs:6202.0"}}}}}},"400":{"description":"Invalid params (JSON error body)"},"402":{"description":"Payment required — body contains x402 payment requirements"},"404":{"description":"Unknown service or no data (JSON error body)"}},"x-price-usd":0.005,"x-payment-network":"base"}},"/api/data/au-unemployment/preview":{"get":{"summary":"Free sample response for Unemployment Rate (6202.0)","operationId":"preview_au-unemployment","responses":{"200":{"description":"Sample response with example params"}}}},"/api/data/au-cash-rate":{"post":{"summary":"RBA Cash Rate Target (F1.1)","description":"RBA cash rate target (F1.1 monthly average, series FIRMMCRT). Returns the most recent 12 observations (date + rate).\n\nPayment: x402 — a request without valid payment returns 402 with payment requirements. Pay (USDC, base) and retry with the X-PAYMENT header.","operationId":"postData_au-cash-rate","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"region":{"type":"string","description":"Always \"National\" (RBA policy rate)"}},"required":[]},"examples":{"example":{"value":{"region":"National"}}}}}},"responses":{"200":{"description":"Service response","content":{"application/json":{"schema":{"type":"object","properties":{"service":{"type":"string","const":"au-cash-rate"},"params":{"type":"object"},"_meta":{"type":"object","properties":{"cached":{"type":"boolean"},"paid":{"type":"boolean"},"payer":{"type":"string","nullable":true},"priceUsd":{"type":"number"}}},"series":{"type":"object","description":"Array of {date, rate} for last 12 observations"},"source":{"type":"string","description":"rba:f1.1"}}}}}},"400":{"description":"Invalid params (JSON error body)"},"402":{"description":"Payment required — body contains x402 payment requirements"},"404":{"description":"Unknown service or no data (JSON error body)"}},"x-price-usd":0.005,"x-payment-network":"base"}},"/api/data/au-cash-rate/preview":{"get":{"summary":"Free sample response for RBA Cash Rate Target (F1.1)","operationId":"preview_au-cash-rate","responses":{"200":{"description":"Sample response with example params"}}}},"/api/data/au-weather":{"post":{"summary":"Weather (observations + forecast)","description":"Latest observation (temp, rain, wind) + 7-day forecast for Australian suburbs via Open-Meteo. 1-day TTL.\n\nPayment: x402 — a request without valid payment returns 402 with payment requirements. Pay (USDC, base) and retry with the X-PAYMENT header.","operationId":"postData_au-weather","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"suburb":{"type":"string","description":"Suburb name, e.g. \"Parramatta\""},"state":{"type":"string","description":"AU state code (NSW, VIC, etc.)"},"postcode":{"type":"string","description":"4-digit postcode for tie-breaking"}},"required":["suburb"]},"examples":{"example":{"value":{"suburb":"Parramatta","state":"NSW","postcode":"2150"}}}}}},"responses":{"200":{"description":"Service response","content":{"application/json":{"schema":{"type":"object","properties":{"service":{"type":"string","const":"au-weather"},"params":{"type":"object"},"_meta":{"type":"object","properties":{"cached":{"type":"boolean"},"paid":{"type":"boolean"},"payer":{"type":"string","nullable":true},"priceUsd":{"type":"number"}}},"suburb":{"type":"string","description":"Suburb name"},"state":{"type":"string","description":"State code"},"postcode":{"type":"string","description":"Postcode"},"observation":{"type":"object","description":"{temp_c, rain_mm, wind_kmh, time}"},"forecast":{"type":"object","description":"Array of 7 daily {date, min_c, max_c, rain_chance}"},"source":{"type":"string","description":"open-meteo:bom-class"}}}}}},"400":{"description":"Invalid params (JSON error body)"},"402":{"description":"Payment required — body contains x402 payment requirements"},"404":{"description":"Unknown service or no data (JSON error body)"}},"x-price-usd":0.005,"x-payment-network":"base"}},"/api/data/au-weather/preview":{"get":{"summary":"Free sample response for Weather (observations + forecast)","operationId":"preview_au-weather","responses":{"200":{"description":"Sample response with example params"}}}},"/api/data/au-awe":{"post":{"summary":"Average Weekly Earnings (6302.0)","description":"ABS Average Weekly Earnings (AWE) full-time adult ordinary-time earnings, Persons, All industries. Semi-annual. Region defaults to National.\n\nPayment: x402 — a request without valid payment returns 402 with payment requirements. Pay (USDC, base) and retry with the X-PAYMENT header.","operationId":"postData_au-awe","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"region":{"type":"string","description":"ABS region or \"National\" (default)"}},"required":[]},"examples":{"example":{"value":{"region":"National"}}}}}},"responses":{"200":{"description":"Service response","content":{"application/json":{"schema":{"type":"object","properties":{"service":{"type":"string","const":"au-awe"},"params":{"type":"object"},"_meta":{"type":"object","properties":{"cached":{"type":"boolean"},"paid":{"type":"boolean"},"payer":{"type":"string","nullable":true},"priceUsd":{"type":"number"}}},"region":{"type":"string","description":"Region or \"National\""},"awe_aud":{"type":"string","description":"Average weekly earnings in AUD or null"},"period":{"type":"string","description":"Reference half-year (e.g. 2026-S1) or null"},"source":{"type":"string","description":"abs:awe"}}}}}},"400":{"description":"Invalid params (JSON error body)"},"402":{"description":"Payment required — body contains x402 payment requirements"},"404":{"description":"Unknown service or no data (JSON error body)"}},"x-price-usd":0.005,"x-payment-network":"base"}},"/api/data/au-awe/preview":{"get":{"summary":"Free sample response for Average Weekly Earnings (6302.0)","operationId":"preview_au-awe","responses":{"200":{"description":"Sample response with example params"}}}},"/api/data/au-vacancies":{"post":{"summary":"Job Vacancies (ABS JV)","description":"ABS Job Vacancies (JV) — total vacancies (thousands), All sectors / All industries, Original estimates, quarterly. Region defaults to National.\n\nPayment: x402 — a request without valid payment returns 402 with payment requirements. Pay (USDC, base) and retry with the X-PAYMENT header.","operationId":"postData_au-vacancies","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"region":{"type":"string","description":"ABS region or \"National\" (default)"}},"required":[]},"examples":{"example":{"value":{"region":"National"}}}}}},"responses":{"200":{"description":"Service response","content":{"application/json":{"schema":{"type":"object","properties":{"service":{"type":"string","const":"au-vacancies"},"params":{"type":"object"},"_meta":{"type":"object","properties":{"cached":{"type":"boolean"},"paid":{"type":"boolean"},"payer":{"type":"string","nullable":true},"priceUsd":{"type":"number"}}},"region":{"type":"string","description":"Region or \"National\""},"vacancies_thousands":{"type":"string","description":"Job vacancies in thousands or null"},"period":{"type":"string","description":"Reference quarter or null"},"source":{"type":"string","description":"abs:jv"}}}}}},"400":{"description":"Invalid params (JSON error body)"},"402":{"description":"Payment required — body contains x402 payment requirements"},"404":{"description":"Unknown service or no data (JSON error body)"}},"x-price-usd":0.005,"x-payment-network":"base"}},"/api/data/au-vacancies/preview":{"get":{"summary":"Free sample response for Job Vacancies (ABS JV)","operationId":"preview_au-vacancies","responses":{"200":{"description":"Sample response with example params"}}}},"/api/data/au-postcode-lookup":{"post":{"summary":"Postcode → LGA + SA2 (ASGS)","description":"Resolves any 4-digit Australian postcode to its dominant Local Government Area (LGA, 2024) and Statistical Area Level 2 (SA2, 2021) using ABS ASGS Edition 3 correspondence tables (population-weighted ratios). Unlocks cleaner LGA/SA2 joins for demographics and building lookups.\n\nPayment: x402 — a request without valid payment returns 402 with payment requirements. Pay (USDC, base) and retry with the X-PAYMENT header.","operationId":"postData_au-postcode-lookup","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"postcode":{"type":"string","description":"4-digit Australian postcode"}},"required":["postcode"]},"examples":{"example":{"value":{"postcode":"2150"}}}}}},"responses":{"200":{"description":"Service response","content":{"application/json":{"schema":{"type":"object","properties":{"service":{"type":"string","const":"au-postcode-lookup"},"params":{"type":"object"},"_meta":{"type":"object","properties":{"cached":{"type":"boolean"},"paid":{"type":"boolean"},"payer":{"type":"string","nullable":true},"priceUsd":{"type":"number"}}},"postcode":{"type":"string","description":"Echo of the 4-digit input"},"lga":{"type":"object","description":"Dominant LGA {code, name, ratio} (ratio = population-weighted share)"},"sa2":{"type":"object","description":"Dominant SA2 {code, name, ratio}"},"lga_all":{"type":"object","description":"All LGAs overlapping the postcode, sorted by ratio desc"},"sa2_all":{"type":"object","description":"All SA2s overlapping the postcode, sorted by ratio desc"},"source":{"type":"string","description":"abs:asgs-ed3-corr"}}}}}},"400":{"description":"Invalid params (JSON error body)"},"402":{"description":"Payment required — body contains x402 payment requirements"},"404":{"description":"Unknown service or no data (JSON error body)"}},"x-price-usd":0.005,"x-payment-network":"base"}},"/api/data/au-postcode-lookup/preview":{"get":{"summary":"Free sample response for Postcode → LGA + SA2 (ASGS)","operationId":"preview_au-postcode-lookup","responses":{"200":{"description":"Sample response with example params"}}}},"/api/data/au-income":{"post":{"summary":"Median Taxable Income by Postcode (ATO)","description":"ATO Taxation Statistics by postcode: median and mean taxable income, individuals lodging returns, and median net tax. Annual release (~1 year lag), currently 2022-23. High demand for property and market analysis agents.\n\nPayment: x402 — a request without valid payment returns 402 with payment requirements. Pay (USDC, base) and retry with the X-PAYMENT header.","operationId":"postData_au-income","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"postcode":{"type":"string","description":"4-digit Australian postcode"}},"required":["postcode"]},"examples":{"example":{"value":{"postcode":"2000"}}}}}},"responses":{"200":{"description":"Service response","content":{"application/json":{"schema":{"type":"object","properties":{"service":{"type":"string","const":"au-income"},"params":{"type":"object"},"_meta":{"type":"object","properties":{"cached":{"type":"boolean"},"paid":{"type":"boolean"},"payer":{"type":"string","nullable":true},"priceUsd":{"type":"number"}}},"postcode":{"type":"string","description":"Echo of the 4-digit input"},"tax_year":{"type":"object","description":"ATO reference year, e.g. \"2022-23\""},"individuals":{"type":"string","description":"Number of individuals lodging an income tax return"},"median_taxable_aud":{"type":"string","description":"Median taxable income or loss (AUD)"},"mean_taxable_aud":{"type":"string","description":"Average taxable income or loss (AUD)"},"median_net_tax_aud":{"type":"string","description":"Median net tax (AUD)"},"source":{"type":"string","description":"ato:taxstats"}}}}}},"400":{"description":"Invalid params (JSON error body)"},"402":{"description":"Payment required — body contains x402 payment requirements"},"404":{"description":"Unknown service or no data (JSON error body)"}},"x-price-usd":0.005,"x-payment-network":"base"}},"/api/data/au-income/preview":{"get":{"summary":"Free sample response for Median Taxable Income by Postcode (ATO)","operationId":"preview_au-income","responses":{"200":{"description":"Sample response with example params"}}}},"/api/data/au-public-holidays":{"post":{"summary":"Public Holidays by State","description":"Australian public holidays for all states/territories: full list for a year plus the next upcoming holiday with days-away. Ideal for scheduling, payroll, travel, and long-weekend questions.\n\nPayment: x402 — a request without valid payment returns 402 with payment requirements. Pay (USDC, base) and retry with the X-PAYMENT header.","operationId":"postData_au-public-holidays","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"state":{"type":"string","description":"NSW, VIC, QLD, SA, WA, TAS, NT, ACT, or ALL (default)"},"year":{"type":"number","description":"Calendar year (default: current year)"}},"required":[]},"examples":{"example":{"value":{"state":"NSW","year":"2026"}}}}}},"responses":{"200":{"description":"Service response","content":{"application/json":{"schema":{"type":"object","properties":{"service":{"type":"string","const":"au-public-holidays"},"params":{"type":"object"},"_meta":{"type":"object","properties":{"cached":{"type":"boolean"},"paid":{"type":"boolean"},"payer":{"type":"string","nullable":true},"priceUsd":{"type":"number"}}},"state":{"type":"string","description":"Requested state or ALL"},"year":{"type":"string","description":"Calendar year"},"count":{"type":"string","description":"Number of holidays returned"},"next":{"type":"object","description":"Next upcoming {date, name, days_away} or null"},"holidays":{"type":"object","description":"Array of {date, name} (plus state when ALL)"},"source":{"type":"string","description":"static:gazette-2026"}}}}}},"400":{"description":"Invalid params (JSON error body)"},"402":{"description":"Payment required — body contains x402 payment requirements"},"404":{"description":"Unknown service or no data (JSON error body)"}},"x-price-usd":0.005,"x-payment-network":"base"}},"/api/data/au-public-holidays/preview":{"get":{"summary":"Free sample response for Public Holidays by State","operationId":"preview_au-public-holidays","responses":{"200":{"description":"Sample response with example params"}}}},"/api/data/au-timezone":{"post":{"summary":"Time Zones + DST Status","description":"Australian time zones per state: IANA zone, standard/DST offsets, current offset and local time, and whether daylight saving is active. Answers \"what time is it in Perth\" and \"is it daylight saving\" instantly.\n\nPayment: x402 — a request without valid payment returns 402 with payment requirements. Pay (USDC, base) and retry with the X-PAYMENT header.","operationId":"postData_au-timezone","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"state":{"type":"string","description":"NSW, VIC, QLD, SA, WA, TAS, NT, or ACT (default: all states)"}},"required":[]},"examples":{"example":{"value":{"state":"WA"}}}}}},"responses":{"200":{"description":"Service response","content":{"application/json":{"schema":{"type":"object","properties":{"service":{"type":"string","const":"au-timezone"},"params":{"type":"object"},"_meta":{"type":"object","properties":{"cached":{"type":"boolean"},"paid":{"type":"boolean"},"payer":{"type":"string","nullable":true},"priceUsd":{"type":"number"}}},"states":{"type":"object","description":"Array per state: iana, standard_offset, dst_applies, current_offset, current_abbrev, is_dst, utc_time, local_time"},"count":{"type":"string","description":"Number of states returned"},"source":{"type":"string","description":"static:tz-rules"}}}}}},"400":{"description":"Invalid params (JSON error body)"},"402":{"description":"Payment required — body contains x402 payment requirements"},"404":{"description":"Unknown service or no data (JSON error body)"}},"x-price-usd":0.005,"x-payment-network":"base"}},"/api/data/au-timezone/preview":{"get":{"summary":"Free sample response for Time Zones + DST Status","operationId":"preview_au-timezone","responses":{"200":{"description":"Sample response with example params"}}}},"/api/data/nz-public-holidays":{"post":{"summary":"NZ Public Holidays (incl. Anniversary Days)","description":"New Zealand public holidays: national holidays (Waitangi, Matariki, Anzac, etc. with observed-date shifts) plus regional anniversary days. Verified against Employment NZ. Unknown years return an explicit notice.\n\nPayment: x402 — a request without valid payment returns 402 with payment requirements. Pay (USDC, base) and retry with the X-PAYMENT header.","operationId":"postData_nz-public-holidays","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"region":{"type":"string","description":"NZ region for anniversary day, or ALL (default): Northland, Auckland, Waikato, Bay of Plenty, Gisborne, Hawke’s Bay, Taranaki, Manawatu-Whanganui, Wellington, Tasman/Nelson, Marlborough, West Coast, Canterbury, Otago, Southland, Chatham Islands"},"year":{"type":"number","description":"Calendar year (default: current year)"}},"required":[]},"examples":{"example":{"value":{"region":"Auckland","year":"2026"}}}}}},"responses":{"200":{"description":"Service response","content":{"application/json":{"schema":{"type":"object","properties":{"service":{"type":"string","const":"nz-public-holidays"},"params":{"type":"object"},"_meta":{"type":"object","properties":{"cached":{"type":"boolean"},"paid":{"type":"boolean"},"payer":{"type":"string","nullable":true},"priceUsd":{"type":"number"}}},"region":{"type":"string","description":"Requested region or ALL"},"year":{"type":"string","description":"Calendar year"},"count":{"type":"string","description":"Number of holidays returned"},"next":{"type":"object","description":"Next upcoming {date, name, days_away} or null"},"holidays":{"type":"object","description":"Array of {date, name}"},"notice":{"type":"object","description":"Null, or explanation when the year has no gazetted data"},"available_years":{"type":"string","description":"Years with published data"},"source":{"type":"string","description":"static:employment-nz-2026"}}}}}},"400":{"description":"Invalid params (JSON error body)"},"402":{"description":"Payment required — body contains x402 payment requirements"},"404":{"description":"Unknown service or no data (JSON error body)"}},"x-price-usd":0.005,"x-payment-network":"base"}},"/api/data/nz-public-holidays/preview":{"get":{"summary":"Free sample response for NZ Public Holidays (incl. Anniversary Days)","operationId":"preview_nz-public-holidays","responses":{"200":{"description":"Sample response with example params"}}}},"/api/data/nz-timezone":{"post":{"summary":"NZ Time Zones + DST (NZST/CHAST)","description":"New Zealand time zones with live DST status: Mainland (Pacific/Auckland) and Chatham Islands (Pacific/Chatham, +12:45). Computed from IANA at runtime — correct for any future date.\n\nPayment: x402 — a request without valid payment returns 402 with payment requirements. Pay (USDC, base) and retry with the X-PAYMENT header.","operationId":"postData_nz-timezone","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"zone":{"type":"string","description":"Mainland or Chatham Islands (default: both)"}},"required":[]},"examples":{"example":{"value":{"zone":"Mainland"}}}}}},"responses":{"200":{"description":"Service response","content":{"application/json":{"schema":{"type":"object","properties":{"service":{"type":"string","const":"nz-timezone"},"params":{"type":"object"},"_meta":{"type":"object","properties":{"cached":{"type":"boolean"},"paid":{"type":"boolean"},"payer":{"type":"string","nullable":true},"priceUsd":{"type":"number"}}},"zones":{"type":"object","description":"Array per zone: iana, standard_offset, dst_applies, current_offset, current_abbrev, is_dst, utc_time, local_time"},"count":{"type":"string","description":"Number of zones returned"},"source":{"type":"string","description":"static:tz-rules"}}}}}},"400":{"description":"Invalid params (JSON error body)"},"402":{"description":"Payment required — body contains x402 payment requirements"},"404":{"description":"Unknown service or no data (JSON error body)"}},"x-price-usd":0.005,"x-payment-network":"base"}},"/api/data/nz-timezone/preview":{"get":{"summary":"Free sample response for NZ Time Zones + DST (NZST/CHAST)","operationId":"preview_nz-timezone","responses":{"200":{"description":"Sample response with example params"}}}},"/api/data/nz-school-terms":{"post":{"summary":"NZ School Term Dates","description":"New Zealand public school term dates (nationally uniform) per the Ministry of Education, with official start-window flexibility flagged. Unknown years return an explicit notice.\n\nPayment: x402 — a request without valid payment returns 402 with payment requirements. Pay (USDC, base) and retry with the X-PAYMENT header.","operationId":"postData_nz-school-terms","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"school_type":{"type":"string","description":"primary, secondary, or both (default)"},"year":{"type":"number","description":"Calendar year (default: current year)"}},"required":[]},"examples":{"example":{"value":{"school_type":"both","year":"2026"}}}}}},"responses":{"200":{"description":"Service response","content":{"application/json":{"schema":{"type":"object","properties":{"service":{"type":"string","const":"nz-school-terms"},"params":{"type":"object"},"_meta":{"type":"object","properties":{"cached":{"type":"boolean"},"paid":{"type":"boolean"},"payer":{"type":"string","nullable":true},"priceUsd":{"type":"number"}}},"school_type":{"type":"string","description":"Requested type"},"year":{"type":"string","description":"Calendar year"},"terms":{"type":"object","description":"Array of {term, starts, ends, flexible} (flexible = official start window)"},"notice":{"type":"object","description":"Null, or explanation when the year has no published data"},"available_years":{"type":"string","description":"Years with published data"},"source":{"type":"string","description":"static:moe-2026"}}}}}},"400":{"description":"Invalid params (JSON error body)"},"402":{"description":"Payment required — body contains x402 payment requirements"},"404":{"description":"Unknown service or no data (JSON error body)"}},"x-price-usd":0.005,"x-payment-network":"base"}},"/api/data/nz-school-terms/preview":{"get":{"summary":"Free sample response for NZ School Term Dates","operationId":"preview_nz-school-terms","responses":{"200":{"description":"Sample response with example params"}}}},"/api/data/nz-place-lookup":{"post":{"summary":"NZ Suburb → Territorial Authority (LINZ)","description":"Resolves any NZ suburb or locality name to its Territorial Authority and Stats NZ population estimate via the LINZ Suburbs and Localities dataset (~5,900 places). Exact-name match plus prefix fallback. The join key that unlocks NZ crime/demographics/income lookups.\n\nPayment: x402 — a request without valid payment returns 402 with payment requirements. Pay (USDC, base) and retry with the X-PAYMENT header.","operationId":"postData_nz-place-lookup","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"suburb":{"type":"string","description":"NZ suburb or locality name, e.g. \"Ponsonby\""}},"required":["suburb"]},"examples":{"example":{"value":{"suburb":"Ponsonby"}}}}}},"responses":{"200":{"description":"Service response","content":{"application/json":{"schema":{"type":"object","properties":{"service":{"type":"string","const":"nz-place-lookup"},"params":{"type":"object"},"_meta":{"type":"object","properties":{"cached":{"type":"boolean"},"paid":{"type":"boolean"},"payer":{"type":"string","nullable":true},"priceUsd":{"type":"number"}}},"suburb":{"type":"string","description":"Echo of the queried name"},"matches":{"type":"object","description":"Array of {name, type, major_name, territorial_authority, population} (exact matches, or up to 10 prefix matches)"},"count":{"type":"string","description":"Number of matches"},"source":{"type":"string","description":"linz:suburbs-localities"}}}}}},"400":{"description":"Invalid params (JSON error body)"},"402":{"description":"Payment required — body contains x402 payment requirements"},"404":{"description":"Unknown service or no data (JSON error body)"}},"x-price-usd":0.005,"x-payment-network":"base"}},"/api/data/nz-place-lookup/preview":{"get":{"summary":"Free sample response for NZ Suburb → Territorial Authority (LINZ)","operationId":"preview_nz-place-lookup","responses":{"200":{"description":"Sample response with example params"}}}},"/api/data/nz-ocr":{"post":{"summary":"RBNZ Official Cash Rate","description":"Reserve Bank of New Zealand Official Cash Rate (B2 daily-close series). Trailing-12 distinct observations. Announcements are ~7-weekly; monthly cron keeps this current.\n\nPayment: x402 — a request without valid payment returns 402 with payment requirements. Pay (USDC, base) and retry with the X-PAYMENT header.","operationId":"postData_nz-ocr","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"region":{"type":"string","description":"Always \"National\" (RBNZ policy rate)"}},"required":[]},"examples":{"example":{"value":{"region":"National"}}}}}},"responses":{"200":{"description":"Service response","content":{"application/json":{"schema":{"type":"object","properties":{"service":{"type":"string","const":"nz-ocr"},"params":{"type":"object"},"_meta":{"type":"object","properties":{"cached":{"type":"boolean"},"paid":{"type":"boolean"},"payer":{"type":"string","nullable":true},"priceUsd":{"type":"number"}}},"series":{"type":"object","description":"Array of {date, rate} for last 12 distinct observations"},"source":{"type":"string","description":"rbnz:hb2"}}}}}},"400":{"description":"Invalid params (JSON error body)"},"402":{"description":"Payment required — body contains x402 payment requirements"},"404":{"description":"Unknown service or no data (JSON error body)"}},"x-price-usd":0.005,"x-payment-network":"base"}},"/api/data/nz-ocr/preview":{"get":{"summary":"Free sample response for RBNZ Official Cash Rate","operationId":"preview_nz-ocr","responses":{"200":{"description":"Sample response with example params"}}}},"/api/data/nz-demographics":{"post":{"summary":"NZ Estimated Resident Population (Stats NZ)","description":"Stats NZ subnational Estimated Resident Population by region (June estimates, Aotearoa Data Explorer). Free API key required for the cron; request path is Redis-only.\n\nPayment: x402 — a request without valid payment returns 402 with payment requirements. Pay (USDC, base) and retry with the X-PAYMENT header.","operationId":"postData_nz-demographics","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"region":{"type":"string","description":"NZ region name, e.g. \"Auckland\", \"Canterbury\""}},"required":["region"]},"examples":{"example":{"value":{"region":"Auckland"}}}}}},"responses":{"200":{"description":"Service response","content":{"application/json":{"schema":{"type":"object","properties":{"service":{"type":"string","const":"nz-demographics"},"params":{"type":"object"},"_meta":{"type":"object","properties":{"cached":{"type":"boolean"},"paid":{"type":"boolean"},"payer":{"type":"string","nullable":true},"priceUsd":{"type":"number"}}},"region":{"type":"string","description":"Requested region"},"erp":{"type":"string","description":"Estimated Resident Population (persons) or null"},"year":{"type":"string","description":"Reference year of the estimate or null"},"source":{"type":"string","description":"statsnz:ade-erp"}}}}}},"400":{"description":"Invalid params (JSON error body)"},"402":{"description":"Payment required — body contains x402 payment requirements"},"404":{"description":"Unknown service or no data (JSON error body)"}},"x-price-usd":0.005,"x-payment-network":"base"}},"/api/data/nz-demographics/preview":{"get":{"summary":"Free sample response for NZ Estimated Resident Population (Stats NZ)","operationId":"preview_nz-demographics","responses":{"200":{"description":"Sample response with example params"}}}},"/api/data/nz-income":{"post":{"summary":"NZ Median Earnings by Region (Stats NZ)","description":"Stats NZ median weekly earnings by region (Aotearoa Data Explorer). Free API key required for the cron; request path is Redis-only.\n\nPayment: x402 — a request without valid payment returns 402 with payment requirements. Pay (USDC, base) and retry with the X-PAYMENT header.","operationId":"postData_nz-income","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"region":{"type":"string","description":"NZ region name, e.g. \"Wellington\""}},"required":["region"]},"examples":{"example":{"value":{"region":"Wellington"}}}}}},"responses":{"200":{"description":"Service response","content":{"application/json":{"schema":{"type":"object","properties":{"service":{"type":"string","const":"nz-income"},"params":{"type":"object"},"_meta":{"type":"object","properties":{"cached":{"type":"boolean"},"paid":{"type":"boolean"},"payer":{"type":"string","nullable":true},"priceUsd":{"type":"number"}}},"region":{"type":"string","description":"Requested region"},"median_weekly_earnings_nzd":{"type":"string","description":"Median weekly earnings (NZD) or null"},"year":{"type":"string","description":"Reference year or null"},"source":{"type":"string","description":"statsnz:ade-earnings"}}}}}},"400":{"description":"Invalid params (JSON error body)"},"402":{"description":"Payment required — body contains x402 payment requirements"},"404":{"description":"Unknown service or no data (JSON error body)"}},"x-price-usd":0.005,"x-payment-network":"base"}},"/api/data/nz-income/preview":{"get":{"summary":"Free sample response for NZ Median Earnings by Region (Stats NZ)","operationId":"preview_nz-income","responses":{"200":{"description":"Sample response with example params"}}}},"/api/data/au-school-terms":{"post":{"summary":"School Term Dates by State","description":"Public school term dates for each Australian state/territory (4 terms per year). For parents, travel, and childcare planning agents.\n\nPayment: x402 — a request without valid payment returns 402 with payment requirements. Pay (USDC, base) and retry with the X-PAYMENT header.","operationId":"postData_au-school-terms","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"state":{"type":"string","description":"NSW, VIC, QLD, SA, WA, TAS, NT, or ACT"},"year":{"type":"number","description":"Calendar year (default: 2026)"}},"required":["state"]},"examples":{"example":{"value":{"state":"QLD","year":"2026"}}}}}},"responses":{"200":{"description":"Service response","content":{"application/json":{"schema":{"type":"object","properties":{"service":{"type":"string","const":"au-school-terms"},"params":{"type":"object"},"_meta":{"type":"object","properties":{"cached":{"type":"boolean"},"paid":{"type":"boolean"},"payer":{"type":"string","nullable":true},"priceUsd":{"type":"number"}}},"state":{"type":"string","description":"Requested state"},"year":{"type":"string","description":"Calendar year"},"terms":{"type":"object","description":"Array of {term, starts, ends}"},"source":{"type":"string","description":"static:edu-dept-2026"}}}}}},"400":{"description":"Invalid params (JSON error body)"},"402":{"description":"Payment required — body contains x402 payment requirements"},"404":{"description":"Unknown service or no data (JSON error body)"}},"x-price-usd":0.005,"x-payment-network":"base"}},"/api/data/au-school-terms/preview":{"get":{"summary":"Free sample response for School Term Dates by State","operationId":"preview_au-school-terms","responses":{"200":{"description":"Sample response with example params"}}}}},"x-x402":{"protocol":"x402","network":"base","paymentHeader":"X-PAYMENT","flow":"POST without payment -> 402 { accepts: [...] } -> construct payment -> retry with X-PAYMENT header"}}