● ● __ _ __ \ / ____ _____ ____ ____ / /_(_)_____ _____ / /_ ◍ / __ `/ __ `/ _ \/ __ \/ __/ / ___/ | /| / / _ \/ __ \ / \ / /_/ / /_/ / __/ / / / /_/ / /__ | |/ |/ / __/ /_/ / ● ● \__,_/\__, /\___/_/ /_/\__/_/\___/ |__/|__/\___/_.___/ /____/ # agenticweb.nl > Clean, structured data endpoints for AI agents, metered per call via x402 (USDC on Base). Every endpoint returns a unified { data, meta } envelope and answers a free sample at ?sample=1. Pay per call: each endpoint returns HTTP 402 with x402 payment requirements (price, asset, network); pay in USDC on Base and retry. Endpoints are served from https://api.agenticweb.nl; full OpenAPI at https://api.agenticweb.nl/openapi.json. Paying a 402 challenge constitutes acceptance of the terms at https://agenticweb.nl/terms (business use only, no warranty, liability capped at the call price). Privacy policy: https://agenticweb.nl/privacy. MCP: the same catalog is exposed as MCP tools at https://api.agenticweb.nl/api/mcp (Streamable HTTP). Payment travels in-protocol per @x402/mcp: a paid tool call returns a payment-required error carrying x402 requirements; attach a signed payment to _meta and retry. The free `catalog` tool lists tools, prices and free samples. ## Endpoints ### Dutch vehicle lookup — $0.02 - Path: POST /api/v1/nl/vehicle - Registration, fuel/EV, APK (roadworthiness) and open recalls (terugroepacties) for a Dutch licence plate (kenteken). - Params: kenteken*, sample - Parameters go in a JSON request body, NOT the query string (they are personal data; request URLs are recorded in server access logs). - Free sample: GET https://api.agenticweb.nl/api/v1/nl/vehicle?sample=1 - Example: POST https://api.agenticweb.nl/api/v1/nl/vehicle with body {"kenteken":"0001TJ"} - Docs: https://agenticweb.nl/docs/vehicle - License: CC0 1.0. Source registry is not named in responses, per its terms. - Note: Recalls are plate-exact; on a transient upstream failure recalls_status is "unavailable". ### Dutch school holidays — $0.008 - Path: GET /api/v1/nl/school-holidays - Current, merged Dutch school-holiday dates, queryable by school year, region or a specific date. - Params: year, region, date, sample - Free sample: GET https://api.agenticweb.nl/api/v1/nl/school-holidays?sample=1 - Example: GET https://api.agenticweb.nl/api/v1/nl/school-holidays?year=2025-2026®ion=noord - Docs: https://agenticweb.nl/docs/school-holidays - License: CC0 1.0 (Rijksoverheid open data). ### Vacation region resolver — $0.01 - Path: POST /api/v1/nl/vacation-region - Resolve a Dutch place to its vacation region (noord/midden/zuid) and attach that region's current holiday dates. - Params: postcode, plaats, gemeente, province, sample - Parameters go in a JSON request body, NOT the query string (they are personal data; request URLs are recorded in server access logs). - Free sample: GET https://api.agenticweb.nl/api/v1/nl/vacation-region?sample=1 - Example: POST https://api.agenticweb.nl/api/v1/nl/vacation-region with body {"postcode":"1011AC"} - Docs: https://agenticweb.nl/docs/vacation-region - License: CBS (CC BY 4.0) + Rijksoverheid (CC0). - Note: Accepts postcode (resolved to gemeente via PDOK), plaats, gemeente or province. Resolves at province level with major-city/gemeente overrides; split provinces (Gelderland, Utrecht, Zuid-Holland) are flagged approximate. ### Dutch address lookup — $0.005 - Path: POST /api/v1/nl/address - Resolve a Dutch postcode + house number to a full address (street, city, gemeente, province, WGS84 + RD coordinates), or reverse-geocode coordinates to the nearest address. - Params: postcode, huisnummer, lat, lon, sample - Parameters go in a JSON request body, NOT the query string (they are personal data; request URLs are recorded in server access logs). - Free sample: GET https://api.agenticweb.nl/api/v1/nl/address?sample=1 - Example: POST https://api.agenticweb.nl/api/v1/nl/address with body {"postcode":"1011AC","huisnummer":128} - Docs: https://agenticweb.nl/docs/address - License: Public Domain Mark 1.0 (BAG via PDOK); free for commercial reuse. - Note: Forward needs postcode + huisnummer; reverse needs lat + lon. Reverse responses include distance_m. ### Dutch building lookup (BAG) — $0.008 - Path: POST /api/v1/nl/building - Construction year (bouwjaar), floor area (oppervlakte), use function (gebruiksdoel) and status for a Dutch address, from the BAG via PDOK. - Params: postcode*, huisnummer*, sample - Parameters go in a JSON request body, NOT the query string (they are personal data; request URLs are recorded in server access logs). - Free sample: GET https://api.agenticweb.nl/api/v1/nl/building?sample=1 - Example: POST https://api.agenticweb.nl/api/v1/nl/building with body {"postcode":"1011AC","huisnummer":128} - Docs: https://agenticweb.nl/docs/building - License: Public Domain Mark 1.0 (BAG via PDOK); free for commercial reuse. - Note: Building attributes are from the BAG verblijfsobject + pand. bouwjaar is null when the BAG carries an unknown sentinel; houseboats (ligplaats) and plots (standplaats) return the address with null building fields. ### Dutch elevation (AHN / NAP height) — $0.006 - Path: POST /api/v1/nl/elevation - Ground height above NAP, surface height and derived object height for a Dutch postcode or coordinate, from the AHN 0.5 m height model via PDOK. - Params: postcode, lat, lon, sample - Parameters go in a JSON request body, NOT the query string (they are personal data; request URLs are recorded in server access logs). - Free sample: GET https://api.agenticweb.nl/api/v1/nl/elevation?sample=1 - Example: POST https://api.agenticweb.nl/api/v1/nl/elevation with body {"postcode":"3511LM"} - Docs: https://agenticweb.nl/docs/elevation - License: CC0 1.0 (AHN, Rijkswaterstaat, via PDOK); public domain, no attribution required. - Note: Heights are metres relative to NAP, sampled as the median of up to 9 AHN cells within ~3 m of the point. The AHN masks open water, so a point in a canal or river returns nap_m: null with nodata_cells > 0 rather than a wrong number; a point with no data in either layer returns 404. object_height_m (surface minus ground) is a neighbourhood estimate and varies near building edges. ### Dutch municipality demographics — $0.005 - Path: GET /api/v1/nl/demographics - CBS key figures for a Dutch municipality (population, men/women, households, average household size, population density), by gemeente name or CBS code. - Params: gemeente, code, sample - Free sample: GET https://api.agenticweb.nl/api/v1/nl/demographics?sample=1 - Example: GET https://api.agenticweb.nl/api/v1/nl/demographics?gemeente=Amsterdam - Docs: https://agenticweb.nl/docs/demographics - License: CC BY 4.0 (CBS, via PDOK). Attribution to CBS required downstream. - Note: Provide gemeente (name) or code (GM-code); code resolves exactly. v1 is municipality-level; wijk/buurt and postcode resolution are future work. ### Dutch identifier validation — $0.001 - Path: POST /api/v1/nl/validate - Offline validation of a Dutch identifier: BSN (elfproef), IBAN (structure + mod-97 + bank), or kenteken (sidecode format). - Params: type*, value*, sample - Parameters go in a JSON request body, NOT the query string (they are personal data; request URLs are recorded in server access logs). - Free sample: GET https://api.agenticweb.nl/api/v1/nl/validate?sample=1 - Example: POST https://api.agenticweb.nl/api/v1/nl/validate with body {"type":"iban","value":"NL91ABNA0417164300"} - Docs: https://agenticweb.nl/docs/validate - License: No data source — pure format/checksum validation. - Note: Not an official verification; confirms format/checksum only, not issuance. A BSN value is never logged or echoed back. ### FX conversion (ECB) — $0.003 - Path: GET /api/v1/global/fx - Currency conversion using ECB euro reference rates. Informational only — not tradeable quotes. - Params: from, to, amount, sample - Free sample: GET https://api.agenticweb.nl/api/v1/global/fx?sample=1 - Example: GET https://api.agenticweb.nl/api/v1/global/fx?from=EUR&to=USD&amount=100 - Docs: https://agenticweb.nl/docs/fx - License: ECB euro reference rates (open data). Reuse permitted provided the ECB is cited as the source, our calculations are disclosed, and buyers are told the rates are available free of charge from https://www.ecb.europa.eu/stats/eurofxref/. - Note: Reference rates only; every response carries an informational-only disclaimer.