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:

BlokInhoud
identityMerk, handelsbenaming, voertuigsoort, datum eerste toelating, leeftijd, datum huidige tenaamstelling
technicalCarrosserie, deuren, zitplaatsen, massa, cilinders, cilinderinhoud, assen, kleur
fuelBrandstof, EURO-emissieklasse, CO₂-uitstoot, verbruik, elektrisch bereik
inspectionAPK-vervaldatum, dagen tot verval, status, en de eerdere vervaldata
defectsAfkeurpunten per keuring mét vertaalde omschrijving, plus de punten die in meerdere keuringsrondes terugkwamen
odometerHet officiële oordeel over de kilometerstand, met de bijbehorende toelichting
recallsAlle terugroepacties, open én afgehandeld, met defect, gevolg, mogelijk gevaar, herstel en omvang
status_flagsVerzekerd, geëxporteerd, taxiverleden, wacht-op-keuren
valueCatalogusprijs bij introductie. Geen actuele waarde en geen taxatie
signalsDe observaties, gesorteerd op ernst, elk met een aanbeveling en de onderbouwing
provenancePer 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"
ParameterBetekenis
plateKenteken, met of zonder streepjes. 01-TH-FD, 01THFD en 01 th fd werken allemaal.
depthcompact (standaard) of full. Full geeft de complete keuringshistorie en de bron-URL's.
refresh1 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.

[email protected] · +31 (0)71 220 30 70