Documentatie
Elke API op nederland.cloud is individueel aanspreekbaar en levert antwoorden in hetzelfde vaste formaat. Hieronder per API: het endpoint, de parameters, de responsvelden, een voorbeeld en de link naar de documentatie van de onderliggende bron.
Algemene conventies
| Conventie | Betekenis |
|---|---|
| Alles is een API | nederland.cloud biedt alles als API aan: zes directe bron-API's én elke dataset uit de landelijke catalogus (20.304 stuks). Het responsformaat is identiek; het label bron_type in de envelop vermeldt de herkomst. |
| bron-API | Achter dit endpoint staat een onderliggende API van de instantie zelf (PDOK, CBS, RDW, …). Wij houden een eigen adapter bij die de brontaal vertaalt naar de standaard — volledige veldcuratie, paging, historie waar de bron die biedt. |
| dataset | Achter dit endpoint staat een onderliggende dataset uit de landelijke catalogus (data.overheid.nl). nederland.cloud haalt de dataset live op bij de publicerende instantie en ontsluit de inhoud universeel: CSV als tabel, ArcGIS als features, JSON direct. Zie GET /v1/datasets/{id}/data. |
snake_case | Alle veldnamen zijn snake_case, in elke API. |
| ISO-8601 (UTC) | Alle tijdstempels als 2026-08-20T19:00:00Z. |
| WGS84 + RD | Coördinaten standaard in WGS84 (lon/lat), waar beschikbaar aangevuld met Rijksdriehoek. |
null | Betekent "onbekend of afgeschermd bij de bron". Broncodes zoals "." worden nooit doorgestuurd. |
| Authenticatie | In de bètafase geen sleutel vereist. CORS staat open (*), zodat u direct uit een browser kunt ontwikkelen. |
| Actualiteit | Antwoorden worden live bij de bron opgevraagd en maximaal 24 uur gecached (luchtkwaliteit 30 minuten). |
De envelop
Elk succesvol antwoord heeft dezelfde buitenkant, ongeacht de API:
{
"api": "nederland.cloud",
"versie": "v1 (bèta)",
"onderdeel": "bag.adressen", // welke API u aanriep
"bron_type": "bron-api", // 'bron-api' of 'dataset' — zie algemene conventies
"gegenereerd_op": "2026-08-20T19:12:03Z",
"duur_ms": 312, // totale responstijd
"bronnen": [{ // herkomst van dít antwoord
"naam": "PDOK Locatieserver",
"instantie": "Kadaster / PDOK",
"licentie": "CC0 1.0",
"duur_ms": 280,
"uit_cache": false,
"status": "ok"
}],
"data": { ... } // de genormaliseerde inhoud
}Bij CC BY-bronnen (zoals CBS) bevat bronnen[] tevens een verplicht
attributie-veld dat u bij hergebruik dient mee te geven.
Foutafhandeling
Alle fouten — ook wanneer een bron onbereikbaar is — volgen RFC 7807:
HTTP/1.1 400 Bad Request
{
"type": "about:blank",
"title": "Parameter 'q' is verplicht (minimaal 2 tekens)",
"status": 400
}| Status | Betekenis |
|---|---|
400 | Ongeldige of ontbrekende parameter (zie title). |
404 | Onbekend endpoint — zie GET /v1/bronnen. |
502 | De broninstantie is onbereikbaar of gaf een fout; details in detail. |
500 | Interne fout (zou niet moeten voorkomen). |
Dataverificatie & integriteit
Elk antwoord is onafhankelijk verifieerbaar. Drie mechanismen:
1. Hash over de genormaliseerde data
Elke response bevat integriteit.hash: een SHA-256 over de canonieke JSON van
data. U herberekent die hash en vergelijkt — zo weet u dat het antwoord niet
onderweg is gewijzigd:
import hashlib, json
canoniek = json.dumps(antwoord["data"], sort_keys=True,
separators=(",", ":"), ensure_ascii=False)
hash = hashlib.sha256(canoniek.encode("utf-8")).hexdigest()
assert hash == antwoord["integriteit"]["hash"] # 1:12. Exacte bron-URL per antwoord
Elke bronnen[]-registratie bevat bron_url: de exacte aanroep die
wij bij de instantie deden (parameters incluis). Haal die zelf op en vergelijk de ruwe bron
met onze genormaliseerde weergave — er mag inhoudelijk niets anders verschillen dan
formaatnormalisatie.
3. Normalisatiebeleid (wat wij wél en niét veranderen)
Wij veranderen nooit inhoud. Alleen formaat: coderingen naar snake_case,
datums naar ISO-8601, CBS-'onbekend'-codes naar null, coördinaten naar WGS84 (+RD),
getallen naar getallen. Ontbrekende of afgeschermde bronwaarden worden null —
nooit ingevuld, geschat of gecorrigeerd.
Standaarden
| Standaard | Toepassing |
|---|---|
| ISO 8601 | Alle datums en tijdstempels (UTC, Z-suffix). |
| RFC 7807 | Foutformaat voor alle endpoints. |
| SHA-256 (FIPS 180-4) | Integriteits-hash per antwoord. |
| DCAT-AP NL | Catalogus-ontsluiting sluit aan op de landelijke datasetmetadata (titel, instantie, licentie, resources). |
| W3C PROV-O (invulling) | bronnen[] is een PROV-achtige herkomstregistratie: entiteit (bron), tijdstip (gegenereerd_op), activiteit (bron_url, duur_ms, cache-status). |
| GeoJSON (RFC 7946) | Geometrieën in geometrie_wgs84. |
Op de roadmap: ondertekende responses (HMAC met klantsleutel), een publiek auditlog van bron-versies, en ISO/IEC 27001-certificering van de hosting.
BAG · Adressen
Zoekt adressen in de Basisregistratie Adressen en Gebouwen: straat, huisnummer, postcode, woonplaats, gemeente, wijk, buurt, kadastrale percelen en coördinaten.
Aanroepen
GET /v1/bag/adressen?q={zoekterm}&rows=8&start=0 // zoeken met paging
GET /v1/bag/suggest?q={fragment}&rows=6 // type-ahead
GET /v1/bag/lookup?id={object-id} // object per id| Call | Parameter | Verplicht | Beschrijving | Voorbeeld |
|---|---|---|---|---|
/v1/bag/adressen | q | ja | Vrije zoekterm: adres, postcode + huisnummer, plaatsnaam. | q=Dam 1, Amsterdam |
rows | nee | Aantal resultaten per pagina (1–50, standaard 8). | rows=10 | |
start | nee | Paging-offset (standaard 0). totaal_in_bron in de respons geeft de totaalomvang. | start=10 | |
/v1/bag/suggest | q | ja | Begin van een zoekterm; levert {id, weergavenaam, type} — licht en snel, ideaal voor autocomplete. | q=keizersgr |
rows | nee | Aantal suggesties (1–25, standaard 6). | rows=5 | |
/v1/bag/lookup | id | ja | Locatieserver-id (uit suggest of adressen); adres-objecten worden volledig genormaliseerd. | id=adr-2a8dc1af… |
Responsvelden (per resultaat)
| Veld | Type | Beschrijving |
|---|---|---|
nummeraanduiding_id | string | BAG-identificatie van de nummeraanduiding (koppelsleutel binnen de BAG). |
straat / huisnummer / huisletter / huisnummertoevoeging | string / int | Geadresseerde openbare ruimte en huisnummertoevoegingen. |
postcode / woonplaats | string | Postcode (1234AB) en woonplaatsnaam. |
gemeente / provincie | object | {code, naam}; provincie ook afkorting. |
wijk / buurt | object | CBS-gebiedscodes (WK0363AE, BU0363AE02) met naam — direct te gebruiken in de CBS-API. |
percelen[] | array | Gekoppelde kadastrale percelen (ASD04-F-6417) — direct bruikbaar als locatiehint voor de Kadaster-API. |
geometrie | object | centroide_wgs84 {lon, lat} en centroide_rd {lon, lat}. |
Bron en brondocumentatie
Bron: PDOK Locatieserver (BAG). Licentie CC0 1.0 — vrij hergebruik, geen attributie verplicht.
Onderliggende documentatie: pdok.nl · Locatieserver ·
Kadaster BAG API
CBS · Kerncijfers
Kerncijfers wijken en buurten per regio: inwoners, huishoudens, woningvoorraad, gemiddelde WOZ-waarde, inkomen en leeftijdsopbouw. Regiocodes volgen uit de BAG-API.
Aanroepen
GET /v1/cbs/kerncijfers?regio={code}&jaar=2025 // profiel per regio (en jaar)
GET /v1/cbs/regios?binnen={code}&niveau=wijk // alle regio's binnen een gebied| Call | Parameter | Verplicht | Beschrijving | Voorbeeld |
|---|---|---|---|---|
/v1/cbs/kerncijfers | regio | ja | Regiocode: buurt (BU…), wijk (WK…) of gemeente (GM…). | regio=WK0363AE |
jaar | nee | Peiljaar (standaard: nieuwste tabel). Nuttig voor jaar-op-jaar vergelijking. | jaar=2024 | |
/v1/cbs/regios | binnen | ja | Bovenliggende regiocode: alle wijken van een gemeente, alle buurten van een wijk, enz. | binnen=GM0363 |
niveau | ja | Gevraagd niveau: buurt, wijk of gemeente. | niveau=wijk |
Voorbeeld: /v1/cbs/regios?binnen=GM0363&niveau=wijk levert alle 110 Amsterdamse wijken
met codes — die elk direct in kerncijfers te gebruiken zijn.
Responsvelden
| Veld | Type | Beschrijving |
|---|---|---|
regio | object | code, niveau (buurt/wijk/gemeente), naam, indelingswijziging (gb-wijziging t.o.v. voorgaand jaar). |
kerncijfers.{veld} | object | Altijd {waarde, eenheid}; waarde: null = afgeschermd door CBS. |
Beschikbare kerncijfers: inwoners, huishoudens, woningvoorraad,
gemiddelde_woz_waarde (€×1000), inkomen_per_ontvanger, inkomen_per_inwoner,
aandeel_laagste_inkomens, aandeel_hoogste_inkomens, inwoners_0_tot_15, inwoners_65_plus.
Bron en brondocumentatie
Bron: CBS StatLine, tabel "Kerncijfers wijken en buurten" (jaarlijks wisselend tabel-id;
het actuele jaar staat in bronnen[].tabel). Licentie CC BY 4.0 — attributie
"CBS, Den Haag" is verplicht en wordt in elk antwoord meegeleverd.
Onderliggende documentatie: cbs.nl · Open Data ·
tabel-informatie (86165NED)
Kadaster · Kadastrale percelen
Alle kadastrale percelen rond een punt: aanduiding (gemeente, sectie, nummer), oppervlak, grootte-soort, historiestatus en geometrie. Combineerbaar met de BAG-API (coördinaten) of de percelen uit een adresrespons.
Aanroepen
GET /v1/kadaster/percelen?lon={l}&lat={b}&radius=50 // kadastrale percelen
GET /v1/kadaster/grenzen?lon={l}&lat={b}&radius=50 // perceelsgrenzen (lijnen)
GET /v1/kadaster/bebouwing?lon={l}&lat={b}&radius=50 // gebouwvoetprints (BAG-koppeling)
GET /v1/kadaster/openbareruimtenamen?lon={l}&lat={b}&radius=50 // straatnamen
GET /v1/kadaster/nummeraanduidingreeksen?lon={l}&lat={b}&radius=50 // huisnummerreeksen
GET /v1/kadaster/percelen/{id} // één perceel per idAlle vijf de kaartlagen delen hetzelfde aanroeppatroon:
| Parameter | Verplicht | Beschrijving | Voorbeeld |
|---|---|---|---|
lon | ja | Lengtegraad in WGS84 (decimaal). | lon=4.8930 |
lat | ja | Breedtegraad in WGS84 (decimaal). | lat=52.3730 |
radius | nee | Zoekstraal in meters (5–2000, standaard 50). Max. 100 objecten per opvraag. | radius=100 |
id | ja (pad) | Alleen voor /percelen/{id}: kadastrale objectidentificatie. | /v1/kadaster/percelen/11440871270001 |
Responsvelden per laag
| Laag | Belangrijkste velden | Geometrie |
|---|---|---|
percelen | kadastrale_aanduiding, kadastrale_aanduiding_code, kadastrale_gemeente, sectie, perceelnummer, oppervlak_m2, soort_grootte, status, geldig_vanaf | polygon |
grenzen | type_grens (Definitief/voorlopig), kwaliteitsklasse, status, perceel_links_id, perceel_rechts_id, geldig_vanaf | lijn |
bebouwing | bag_pand_id (koppeling naar BAG-pand!), status_bgt, in_onderzoek, relatieve_hoogteligging, bronhouder | (multi-)polygon |
openbareruimtenamen | naam, type (Weg/Water/…), bag_openbare_ruimte_id, hoek (kaartlabel-oriëntatie) | punt |
nummeraanduidingreeksen | label (huisnummer), vbo_id_laagste_huisnummer, vbo_id_hoogste_huisnummer, bebouwing_id | punt |
Elk object bevat bovendien objecttype, identificatie en
geometrie_wgs84 (GeoJSON). De bag_pand_id- en bag_openbare_ruimte_id-velden
sluiten direct aan op de BAG-API.
Bron en brondocumentatie
Bron: PDOK OGC API — Kadastrale kaart (alle vijf de collecties). Licentie CC0 1.0.
Onderliggende documentatie: pdok.nl · Kadastrale kaart OGC API ·
endpoint-verkenner
Luchtmeetnet · Metingen
Actuele luchtkwaliteitsmetingen per meetstation: stof, waarde, eenheid en meettijdstip. Gebruik de stationslijst om een stationnummer te vinden.
Aanroepen
GET /v1/luchtmeetnet/metingen?station={nr}&formule=PM10&van=…&tot=… // metingen (+filters)
GET /v1/luchtmeetnet/stations?zoek={filter}&pagina=1 // stationlijst| Call | Parameter | Verplicht | Beschrijving | Voorbeeld |
|---|---|---|---|---|
/v1/luchtmeetnet/metingen | station | ja | Stationnummer uit de stationslijst. | station=NL49565 |
formule | nee | Filter op één stof: PM10, PM25, O3, NO2, SO2, CO… | formule=PM10 | |
van | nee | Start tijdbereik (ISO-8601). Zonder filter: meest recente metingen. | van=2026-08-19T00:00:00 | |
tot | nee | Eind tijdbereik (ISO-8601). | tot=2026-08-19T06:00:00 | |
/v1/luchtmeetnet/stations | zoek | nee | Filter op (deel van) locatienaam of stationnummer. | zoek=amsterdam |
pagina | nee | Pagina van de bronlijst (standaard 1); laatste_pagina staat in de respons. | pagina=2 |
Het toegepaste filter wordt in de respons herhaald onder data.filter,
zodat antwoorden altijd zelfbeschrijvend zijn.
Responsvelden (per meting)
| Veld | Type | Beschrijving |
|---|---|---|
stof | string | Formule: PM10, PM25, O3, NO2, SO2, CO, … |
waarde | number | Gemeten waarde; null = niet beschikbaar. |
eenheid | string | Voor zover vastgesteld: µg/m³ (CO: mg/m³), anders null. |
gemeten_op | string | Meettijdstip, ISO-8601 UTC. |
Bron en brondocumentatie
Bron: Luchtmeetnet (RIVM en samenwerkende GGD'en). Attributie "Luchtmeetnet" bij hergebruik.
Onderliggende documentatie: api-docs.luchtmeetnet.nl ·
luchtmeetnet.nl
RDW · Voertuigen
Voertuiggegevens uit de open Basisregistratie Voertuigen van de RDW: per kenteken (exact) of per merk (zoekresultaat).
Aanroepen
GET /v1/rdw/voertuigen?kenteken=XS005T // per kenteken
GET /v1/rdw/voertuigen?merk=TESLA&rows=5 // per merk| Parameter | Verplicht | Beschrijving | Voorbeeld |
|---|---|---|---|
kenteken | ja (of merk) | Nederlands kenteken; streepjes en spaties worden genegeerd, hoofdletterongevoelig. | kenteken=XS005T |
merk | ja (of kenteken) | Merknaam voor een zoekresultaat. | merk=TESLA |
rows | nee | Max. resultaten bij merkpzoek (1–100, standaard 10). | rows=5 |
Responsvelden (per voertuig)
kenteken, voertuigsoort, merk, handelsbenaming,
eerste_kleur, aantal_zitplaatsen, aantal_deuren, aantal_wielen,
lengte_mm, breedte_mm, massa_rijklaar_kg, catalogusprijs_eur,
datum_eerste_toelating (ISO), datum_eerste_afgifte_nl, wam_verzekerd, trekker.
De bron levert ~52 velden als ruwe strings; wij leveren de curate set met getallen als getallen en datums als ISO-8601.
Bron en brondocumentatie
Bron: RDW Open Data (Socrata), dataset m9d7-ebf2. Licentie CC0 1.0.
Onderliggende documentatie: opendata.rdw.nl
RCE · Rijksmonumenten
Het landelijke rijksmonumentenregister, met per monument o.a. adres en
BAG-koppelingen (heeft_pand, heeft_verblijfsobject) —
direct te combineren met de BAG-API.
Aanroepen
GET /v1/rce/monumenten?rijksmonumentnummer=518313 // per nummer
GET /v1/rce/monumenten?postcode=1012JS&straat=Dam // per adres
GET /v1/rce/monumenten?woonplaatsnaam=Amsterdam // per plaats| Parameter | Verplicht | Beschrijving | Voorbeeld |
|---|---|---|---|
rijksmonumentnummer | één van de drie | Monumentnummer (exact). | 518313 |
postcode + straat | één van de drie | Samen opgeven; postcode wordt genormaliseerd naar 1234AB. | 1012JS + Dam |
woonplaatsnaam | één van de drie | Plaatsnaam. | Amsterdam |
page | nee | Pagina (standaard 1, 25 per pagina). | page=2 |
De bron levert JSON-LD met wisselende velden per treffer; wij vlakken die af
naar stabiele snake_case-velden. De veldenset per monument kan daarom per treffer verschillen
(null = niet geregistreerd). Bronparameters gemeenteCode en
provinciecode leveren in de praktijk lege responses en worden daarom niet aangeboden.
Bron en brondocumentatie
Bron: RCE Linked Data API (Rijksmonumentenregister). Licentie CC0 1.0.
Onderliggende documentatie: cultureelerfgoed.github.io/API ·
monumentenregister.cultureelerfgoed.nl
data.overheid.nl · Catalogus
De meta-bron: de landelijke catalogus met 20.300+ open datasets van honderden Nederlandse instanties. Vind per onderwerp welke data bestaat, bij wie, onder welke licentie — en of er een API-koppeling is.
Aanroepen
GET /v1/catalogus/datasets?q={zoekterm}&instantie=&rows=&start= // zoeken
GET /v1/catalogus/datasets/{id} // detail per slug/uuid
GET /v1/catalogus/instanties // publicerende instanties
GET /v1/datasets/{id}/data?resource=0&rijen=50 // ruwe weergave (universeel)
GET /v1/datasets/{id}/query?waar=kolom=waarde&velden=a,b&sorteer=k // QUERY-BARE API (normale calls)| Call | Parameter | Verplicht | Beschrijving | Voorbeeld |
|---|---|---|---|---|
/v1/catalogus/datasets | q | nee | Vrije zoekterm in titel, beschrijving en tags. Leeg = alles. | q=luchtkwaliteit |
instantie | nee | Filter op instantie-slug (uit instanties). | instantie=gemeente-rotterdam | |
rows | nee | Aantal resultaten (1–100, standaard 10). | rows=25 | |
start | nee | Paging-offset; totaal_in_bron geeft de omvang. | start=25 | |
/v1/catalogus/datasets/{id} | id | ja (pad) | Dataset-slug of -uuid (veld id uit zoekresultaten). | /v1/catalogus/datasets/energielabel-postcode-assen |
/v1/catalogus/instanties | — | — | Alle publicerende instanties, grootste eerst. | — |
/v1/datasets/{id}/query | waar | nee (herhaalbaar) | Filteren als een normale API: kolom=waarde (exact), kolom~deel (bevat), kolom!=waarde, kolom>=getal, kolom<=getal. Meerdere voorwaarden = EN. | waar=MEAN_EnergieLAB=A&waar=postcode~9401 |
velden / sorteer + richting | nee | Kolomselectie (komma-gescheiden) en sortering (asc/desc). | velden=postcode,label&sorteer=postcode | |
rijen / start | nee | Paging (1–500, standaard 50). | rijen=100&start=100 | |
De dataset wordt bij de eerste aanroep gematerialiseerd (volledig opgehaald, ArcGIS zonder geometrie) en 24 uur als query-baar materiaal aangeboden — daarna automatisch ververst. Elke response vermeldt materiaal.opgehaald_op en uit_cache. | ||||
/v1/datasets/{id}/data | id | ja (pad) | De data zelf: catalogus raadplegen, resource kiezen, ophalen, normaliseren. CSV → tabel, ArcGIS → features, JSON → direct; PDF/XLS → heldere melding. | /v1/datasets/energielabel-postcode-assen/data |
resource | nee | Resource-index uit de dataset-detailrespons (standaard 0). | resource=1 | |
rijen | nee | Max. rijen/features (1–500, standaard 50). | rijen=100 | |
Responsvelden (per dataset)
| Veld | Type | Beschrijving |
|---|---|---|
id / uuid | string | Slug (bruikbaar in de detail-call) en interne UUID. |
titel / samenvatting | string | Titel en beschrijving van de dataset. |
instantie / instantie_slug | string | Publicerende organisatie (naam + slug). |
licentie / toegangsrechten | string | Bijv. "CC-BY (4.0)" en "PUBLIC". |
high_value_dataset | boolean | Of het een Europese high-value dataset is. |
tags[] | array | Onderwerpstags. |
resources[] | array | Per resource: naam, formaat (genormaliseerd: CSV, JSON, …), url en api (of het een webservice is). |
heeft_api | boolean | True als minstens één resource een API-dienst is — de kandidaten voor eigen adapters. |
laatst_gewijzigd | string | Metadata-wijziging (ISO-8601). |
Bron en brondocumentatie
Bron: data.overheid.nl (Koop Overheid), CKAN API v3. Licentie CC0.
Onderliggende documentatie: data.overheid.nl · API ·
CKAN API-documentatie
Voor LLM's & agents (MCP)
Alle API's zijn direct als tools beschikbaar via het Model Context Protocol. Elke MCP-client (Claude Desktop, Cursor, uw eigen chatbot) kan ze zo aanspreken — de tools dragen Nederlandse beschrijvingen en JSON-Schema's waarmee een LLM zelfstandig de juiste tool kiest en parameters invult.
Transport 1 — streamable HTTP (aanbevolen)
POST /mcp Content-Type: application/json (JSON-RPC 2.0)
{ "jsonrpc": "2.0", "id": 1, "method": "initialize",
"params": { "protocolVersion": "2025-06-18" } }
{ "jsonrpc": "2.0", "id": 2, "method": "tools/list" }
{ "jsonrpc": "2.0", "id": 3, "method": "tools/call",
"params": { "name": "cbs_kerncijfers", "arguments": { "regio": "WK0363AE" } } }Clientconfiguratie (bijv. Claude Desktop / Cursor / eigen agent):
{
"mcpServers": {
"nederland-cloud": {
"url": "https://nederland.cloud/mcp"
}
}
}Transport 2 — stdio (lokaal)
{
"mcpServers": {
"nederland-cloud": {
"command": "python3",
"args": ["/pad/naar/mcp_server.py"]
}
}
}Beschikbare tools
| Tool | Parameters | Komt overeen met |
|---|---|---|
bag_adressen | q · rows · start | GET /v1/bag/adressen |
bag_suggest | q · rows | GET /v1/bag/suggest |
bag_lookup | id | GET /v1/bag/lookup |
cbs_kerncijfers | regio · jaar | GET /v1/cbs/kerncijfers |
cbs_regios | binnen · niveau | GET /v1/cbs/regios |
kadaster_percelen | lon, lat · radius | GET /v1/kadaster/percelen |
kadaster_perceel | id | GET /v1/kadaster/percelen/{id} |
kadaster_grenzen | lon, lat · radius | GET /v1/kadaster/grenzen |
kadaster_bebouwing | lon, lat · radius | GET /v1/kadaster/bebouwing |
kadaster_openbareruimtenamen | lon, lat · radius | GET /v1/kadaster/openbareruimtenamen |
kadaster_nummeraanduidingreeksen | lon, lat · radius | GET /v1/kadaster/nummeraanduidingreeksen |
luchtmeetnet_metingen | station · formule · van · tot | GET /v1/luchtmeetnet/metingen |
luchtmeetnet_stations | zoek | GET /v1/luchtmeetnet/stations |
Toolantwoorden bevatten dezelfde genormaliseerde JSON als de HTTP-API's, inclusief
de bronnen[]-herkomst. Fouten (bijv. ontbrekende parameter) keren terug als
isError: true met een leesbare melding — zodat een LLM zichzelf kan corrigeren.
llms.txt
Voor LLM's zonder MCP: GET /llms.txt serveert een compact
markdown-overzicht van alle endpoints, parameters en het responsformaat — direct in te laden
als context. De OpenAPI-specificatie is eveneens beschikbaar
voor frameworks die tools uit een specificatie genereren.