Dutch Vehicle Context
Dutch vehicle report by licence plate. Combines eleven open registers into one answer: MOT expiry and history, defects per inspection with readable descriptions, recurring defects across inspection rounds, the official odometer verdict, and the full recall chain with hazard and repair. Remote MCP, no API key.
Documentation
Waarom dit bestaat
Alle gegevens hieronder zijn openbaar en gratis. Het probleem is niet de beschikbaarheid maar de versnippering: het antwoord op een normale vraag staat verspreid over elf datasets en twee codetabellen, en de interessantste conclusies staan in géén enkele daarvan.
Een voorbeeld dat we bij het bouwen tegenkwamen. Het basisregister meldt over een terugroepactie niet meer dan Ja. Om te weten wélke actie het is, wat er stuk kan en hoe gevaarlijk dat is, moet je van kenteken naar referentiecode, naar actiebeschrijving, naar gevarenlijst. Bij één testauto leverde dat twee acties op: een afgehandelde uit 2018 en een openstaande uit 2024 over een airbag-gasgenerator die bij een ongeval kan exploderen. Wie de eerste rij pakt, rapporteert de verkeerde.
Datzelfde geldt voor afkeurpunten. Eén afkeuring zegt weinig — dat wordt gerepareerd. Dezelfde afkeuring in drie opeenvolgende jaren zegt dat er iets structureel niet in orde is. Die conclusie staat nergens; hij ontstaat pas door de registraties per keuringsronde te groeperen.
Voor wie, en waarvoor
Autohandel en inkoop
Snelcheck vóór inkoop: staat er een actie open, klopt de tellerstand, wat is er de laatste jaren afgekeurd.
Lease en verhuur
Controle bij inname en uitgifte, over een hele vloot, zonder handmatig opzoekwerk.
Verzekeraars en experts
Terugroepacties en gebrekhistorie als context bij een schadedossier.
Bouwers van AI-agents
Eén MCP-tool die een agent zelf aanroept zodra er een Nederlands kenteken in het gesprek valt.
Wat je terugkrijgt
Eén JSON-antwoord, ongeveer 10 kB, met deze blokken:
| Blok | Inhoud |
|---|---|
identity | Merk, handelsbenaming, voertuigsoort, datum eerste toelating, leeftijd, datum huidige tenaamstelling |
technical | Carrosserie, deuren, zitplaatsen, massa, cilinders, cilinderinhoud, assen, kleur |
fuel | Brandstof, EURO-emissieklasse, CO₂-uitstoot, verbruik, elektrisch bereik |
inspection | APK-vervaldatum, dagen tot verval, status, en de eerdere vervaldata |
defects | Afkeurpunten per keuring mét vertaalde omschrijving, plus de punten die in meerdere keuringsrondes terugkwamen |
odometer | Het officiële oordeel over de kilometerstand, met de bijbehorende toelichting |
recalls | Alle terugroepacties, open én afgehandeld, met defect, gevolg, mogelijk gevaar, herstel en omvang |
status_flags | Verzekerd, geëxporteerd, taxiverleden, wacht-op-keuren |
value | Catalogusprijs bij introductie. Geen actuele waarde en geen taxatie |
signals | De observaties, gesorteerd op ernst, elk met een aanbeveling en de onderbouwing |
provenance | Per geraadpleegde bron: welke dataset, wanneer opgehaald, met welke status |
De signalen zijn het punt
Feiten kun je overal vandaan halen. De laag die dit bruikbaar maakt voor een agent is signals: observaties die nooit een gebrek vaststellen, maar wel zeggen wat aandacht verdient en waarom.
- open_recall — er staat een actie open, met wat er stuk kan en hoe gevaarlijk dat is
- recurring_defect — hetzelfde punt afgekeurd in meerdere keuringsrondes
- odometer_illogical — het register beoordeelt de kilometerstand als onlogisch
- odometer_no_judgement — er is géén oordeel, en dat is iets anders dan een goedkeuring
- imported_vehicle — de historie van vóór de import staat niet in het Nederlandse register
- emission_zone_restricted — diesel onder EURO 5, dus mogelijk geweerd uit milieuzones
- apk_expired, not_insured, exported, taxi_history, source_unavailable en enkele andere
Wat het níét doet
Diefstalstatus zit er niet in, en dat is geen omissie
Of een voertuig als gestolen of vermist geregistreerd staat, wordt principieel niet als open data verstrekt. Elk antwoord meldt dat expliciet, ook als de rest van het rapport schoon is. Reden: een volledig ogend rapport zonder diefstalvermelding leest anders als "niet gestolen", en dat is de gevaarlijkste conclusie die iemand uit deze gegevens kan trekken. Controleer dat apart.
Verder: dit is geen taxatie, geen technische keuring en geen aankoopadvies. Er zit geen schadeverleden in, geen aantal eigenaren, geen actuele kilometerstand en geen dagwaarde — die staan niet in de open registers. Een signaal stelt nooit een gebrek vast; het zegt dat iets nagekeken hoort te worden.
Wat we niet weten, vullen we niet in. Elke bron draagt een status, en een bron die niet antwoordde levert het signaal source_unavailable in plaats van een leeg veld dat op "niets aan de hand" lijkt.
Zo gebruik je het
Als MCP-server, in Claude, Cursor of een andere agent
Cursor: één klik —
Claude (web of desktop, werkt op elk abonnement inclusief gratis): ga naar Customize → Connectors → + → Add custom connector en plak https://vehicle-context.tradebrite.nl/mcp. Claude kan dit niet zelf voor je installeren; het is bewust een handeling van jou, want een connector mag namens jou handelen.
ChatGPT: custom connectors zitten achter Developer Mode en zijn alleen beschikbaar op Pro, Team, Enterprise en Edu — op een Plus-abonnement kan het niet. Gebruik daar de gewone HTTPS-API hieronder.
Claude Code:
claude mcp add --transport http vehicle-context https://vehicle-context.tradebrite.nl/mcp
Of handmatig in je MCP-configuratie:
{
"mcpServers": {
"vehicle-context": {
"type": "http",
"url": "https://vehicle-context.tradebrite.nl/mcp"
}
}
}
Daarna kun je gewoon vragen: "Wat weet je van kenteken 01-TH-FD, is dat een verstandige koop?" De agent roept de tool zelf aan.
Als HTTPS-API
curl "https://vehicle-context.tradebrite.nl/v1/vehicle/context?plate=01-TH-FD"
| Parameter | Betekenis |
|---|---|
plate | Kenteken, met of zonder streepjes. 01-TH-FD, 01THFD en 01 th fd werken allemaal. |
depth | compact (standaard) of full. Full geeft de complete keuringshistorie en de bron-URL's. |
refresh | 1 omzeilt de cache van een uur. |
Verder: GET / geeft een zelfbeschrijving en GET /health de status.
Bronnen, licentie en grenzen aan het gebruik
De brongegevens komen uit het openbare Nederlandse kentekenregister en het terugroepregister, elf datasets in totaal, allemaal onder Creative Commons Zero beschikbaar gesteld. Er is geen API-sleutel nodig en er zijn geen kosten.
De bronhouder geeft geen garantie op beschikbaarheid of actualiteit en mag datasets zonder opgaaf van reden intrekken. Wij geven die garantie dus ook niet. Als een bron niet antwoordt, zegt het rapport dat met zoveel woorden in plaats van het veld leeg te laten.
Rate limit
10 verzoeken per 10 seconden en 60 per minuut, per IP-adres. Bij overschrijding volgt HTTP 429 met een Retry-After -header. Die grens beschermt vooral het platform van de bronhouder: één verzoek hier veroorzaakt er tot elf daar. Heb je structureel meer nodig, mail dan even.
Aansprakelijkheid
Deze dienst wordt kosteloos en zonder garanties aangeboden. Beslissingen over aankoop, verkoop of onderhoud blijven de verantwoordelijkheid van de gebruiker. Controleer bij een daadwerkelijke transactie altijd het voertuig zelf en de officiële registers.
Hetzelfde idee, ander onderwerp
Dutch Property Context
Dezelfde aanpak voor Nederlandse woningen: één adres levert bouwjaar, oppervlakte, energielabel, buurtcijfers, omgevingsgeluid en luchtkwaliteit, monumentstatus en nabije scholen — met dezelfde scheiding tussen feit, signaal en onbekend.
Bekijk Dutch Property Context →
Broncode
De code staat open op GitHub, onder MIT-licentie: github.com/rleefers/dutch-vehicle-context. Je kunt hem zelf draaien op een eigen Cloudflare-account; er zijn geen sleutels nodig voor de open bronnen. In de repo staat ook de regressietest waarmee we controleren dat de koppelingen kloppen.
Deze dienst staat ook in de officiële MCP-registry als nl.tradebrite/dutch-vehicle-context.
Vragen of iets kapot?
Deze dienst is gebouwd en wordt onderhouden door Tradebrite BV. Klopt er iets niet in een rapport, mis je een gegeven, of wil je meer volume? Laat het weten — foutmeldingen over concrete kentekens zijn het nuttigst.