Free · open data · no key required

Dutch Vehicle Context
plate in, report out.

Eleven public datasets, tied together in a single call into one vehicle report an AI agent can read without detours. Built because the individual registers are public, but the answer only appears once you combine them.

HTTPS-API Remote MCP server Cold ~0.5 s, warm ~20 ms CC0 source data

Why this exists

Every figure below is public and free. The problem is not availability but fragmentation: the answer to an ordinary question is spread across eleven datasets and two code tables, and the most interesting conclusions are in none of them.

One example we ran into while building. The base register says no more about an open recall than Yes. To learn which recall, what can break and how dangerous that is, you have to go from plate to reference code, to the recall description, to the hazard list. On one test vehicle that produced two recalls: one closed from 2018 and one open from 2024 about an airbag inflator that can explode in a crash. Take the first row and you report the wrong one.

The same goes for failed inspection items. One failure says little — it gets repaired. The same failure in three consecutive years says something is structurally wrong. That conclusion is nowhere; it only appears once you group the registrations per inspection round.

Who it is for

Dealers and buyers

Quick check before purchase: is a recall open, does the odometer add up, what has been failing over the past years.

Leasing and rental

Checks on intake and handover, across a whole fleet, without manual lookups.

Insurers and assessors

Recalls and defect history as context for a claim file.

Builders of AI agents

One MCP tool an agent calls by itself the moment a Dutch licence plate appears in the conversation.

What you get back

One JSON response, roughly 10 kB, with these blocks:

BlockContents
identityMake, model name, vehicle type, date of first registration, age, date of current keeper
technicalBody, doors, seats, weight, cylinders, displacement, axles, colour
fuelFuel, EURO emission class, CO₂ emissions, consumption, electric range
inspectionMOT expiry date, days remaining, status, and earlier expiry dates
defectsFailed items per inspection with readable descriptions, plus the items that recurred across inspection rounds
odometerThe official verdict on the mileage, with the accompanying explanation
recallsAll recalls, open and closed, with defect, consequence, possible hazard, repair and scale
status_flagsInsured, exported, taxi history, awaiting inspection
valueList price at introduction. Not a current value and not a valuation
signalsThe observations, sorted by severity, each with a recommendation and its basis
provenancePer source consulted: which dataset, when retrieved, with what status

The signals are the point

Facts you can get anywhere. The layer that makes this usable for an agent is signals: observations that never establish a defect, but do say what deserves attention and why.

What it does not do

Theft status is not included, and that is not an omission

Whether a vehicle is registered as stolen or missing is deliberately not released as open data. Every response says so explicitly, including when the rest of the report is clean — otherwise a complete-looking report without a theft entry reads as "not stolen", which is the most dangerous conclusion anyone could draw from this data.

Beyond that: no valuation, no technical inspection, no buying advice. No accident history, no number of previous owners, no current mileage — those are not in the open registers.

How to use it

As an MCP server, in Claude, Cursor or another agent

Cursor: one click — Add dutch-vehicle-context MCP server to Cursor

Claude (web or desktop, works on every plan including free): go to Customize → Connectors → + → Add custom connector and paste https://vehicle-context.tradebrite.nl/mcp. Claude cannot install this for you; that is deliberately your action, because a connector may act on your behalf.

ChatGPT: custom connectors sit behind Developer Mode and are only available on Pro, Team, Enterprise and Edu — on a Plus plan it is not possible. Use the plain HTTPS API below instead.

Claude Code:

claude mcp add --transport http vehicle-context https://vehicle-context.tradebrite.nl/mcp

Or by hand in your MCP configuration:

{
  "mcpServers": {
    "vehicle-context": {
      "type": "http",
      "url": "https://vehicle-context.tradebrite.nl/mcp"
    }
  }
}

After that you can simply ask: "What do you know about plate 73-BGS-7, is that a sensible buy?" The agent calls the tool itself.

As an HTTPS API

curl "https://vehicle-context.tradebrite.nl/v1/vehicle/context?plate=73-BGS-7"
ParameterMeaning
plateLicence plate, with or without dashes. 73-BGS-7, 73BGS7 and 73 bgs 7 all work.
depthcompact (default) or full. Full gives the complete inspection history and the source URLs.
refresh1 bypasses the one-hour cache.

Also: GET / returns a self-description and GET /health the status.

Sources, licence and limits on use

The source data comes from the public Dutch vehicle register and the recall register, eleven datasets in total, all published under Creative Commons Zero. No API key is needed and there are no costs.

The publisher gives no guarantee of availability or currency and may withdraw datasets without notice, so neither do we. If a source does not answer, the report says so in as many words instead of leaving the field empty.

Rate limit

10 requests per 10 seconds and 60 per minute, per IP address. Exceeding it returns HTTP 429 with a Retry-After header. That limit mainly protects the publisher's platform: one request here causes up to eleven there. Need more on a structural basis? Send us a mail.

Liability

This service is offered free of charge and without warranty. Decisions about buying, selling or maintenance remain the responsibility of the user. Before any actual transaction, always check the vehicle itself and the official registers.

Privacy

A licence plate can be personal data under the GDPR once it can be linked to a person. The source data contains no names or addresses — the publisher releases only data that is not privacy-sensitive.

We log no plates and no IP addresses. That is a deliberate choice: a log file with plates and timestamps would create exactly the link that is absent from the source data. What we do keep, to improve the service: make, year of construction, vehicle type, which signals were issued, and how long the request took. None of that identifies anyone.

There are no accounts, no cookies and no trackers on this service. The IP address is used briefly as a key for the rate limiter, and nothing is stored alongside it but a counter. Questions: info@tradebrite.nl.

Source code

The code is open on GitHub, under the MIT licence: github.com/rleefers/dutch-vehicle-context. You can run it on your own Cloudflare account; no keys are needed for the open sources. The repository also holds the regression test we use to check that the joins are correct.

This service is also listed in the official MCP registry as nl.tradebrite/dutch-vehicle-context.

Questions, or something broken?

This service is built and maintained by Tradebrite BV. Something wrong in a report, a figure missing, or do you need more volume? Let us know — error reports about specific plates are the most useful.

info@tradebrite.nl · +31 71 220 30 70