Skip to main content
Glama
rleefers

Dutch Vehicle Context

by rleefers

Dutch Vehicle Context β€” MCP server & API for Dutch license plates

One license plate in, one linked vehicle report out. APK history, inspection defects with readable descriptions, the official assessment of the odometer reading, and the full recall chain β€” including what can break, how dangerous that is, and what the remedy is.

Runs as a remote MCP server and as a regular HTTPS API. Free, no API key, no registration.

https://vehicle-context.tradebrite.nl

πŸ“– Documentation: https://tradebrite.nl/vehicle-context/


Connect in 10 seconds

Add dutch-vehicle-context MCP server to Cursor

Claude (web or desktop, any plan): Customize β†’ Connectors β†’ + β†’ Add custom connector, paste https://vehicle-context.tradebrite.nl/mcp.

ChatGPT: custom connectors require Developer Mode (Pro/Team/Enterprise/Edu); on Plus it's not possible β€” use the HTTPS API there.

Claude Code:

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

Or in your MCP configuration (Claude Desktop, Cursor, Windsurf, …):

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

You can then ask: β€œWhat do you know about license plate 01-TH-FD, is that a sensible buy?”

Prefer plain HTTP:

curl "https://vehicle-context.tradebrite.nl/v1/vehicle/context?plate=01-TH-FD"

Why this exists

All the underlying data is public and free. The problem is how scattered it is: the constituents of an ordinary question are spread across eleven datasets and two code tables, and the most interesting conclusions appear in none of them.

Two practical examples.

The recall chain. The base register reports no more than Ja for an outstanding action. If you want to know which action, you have to go from license plate to reference code (t49b-isb7), to action description (j9yg-7rg9), to the hazard list (9ihi-jgpf). For the test vehicle, that produced two actions: a closed one from 2018 and an open one from 2024 about an airbag gas generator that can explode in an accident. Anyone who takes the first row reports the wrong one.

Recurring defects. A single rejection means little β€” it gets repaired. The same rejection in three consecutive years means something is structurally wrong. That conclusion exists nowhere; it only arises when you group records by inspection round. And there is the pitfall that almost got us: a re-inspection after repair has its own date but the same defects. Counting by date produces false alarms. See src/context.ts.

What you get back

One JSON response (~10 kB) with identity, technical, fuel, inspection, defects, odometer, recalls, status_flags, value, signals, and provenance.

The layer that makes this usable for an agent is signals β€” observations that never establish a defect, ordered by severity, each with a recommendation and its supporting evidence:

Signal

Meaning

open_recall

Outstanding recall action, including defect, danger and remedy

recurring_defect

Same defect in multiple inspection rounds

odometer_illogical

Registry assesses the odometer as illogical

odometer_no_judgement

No judgment is given β€” that is something different from a approval

imported_vehicle

History before the import is missing from the NL register

emission_zone_restricted

Diesel below EURO 5

apk_expired, not_insured, exported, taxi_history, source_unavailable

…

What it does not do

Theft status is not included, and that is not an omission. Whether a vehicle is registered as stocked or missing is, on principle, not provided as open data. Every response reports that explicitly, even if the rest is clean β€” otherwise a complete-looking report without a theft statement reads as β€œnot stolen,” and that is the most dangerous conclusion anyone could draw from this data.

Furthermore: no estimate of value, no technical inspection, no purchase advice. No damage history, no number of owners, no current odometer reading β€” those are not in the public registers.

Design principles

  1. Never infer a missing value because it seems plausible. Every source carries a status: ok / not_found / empty / not_published / unavailable / error.

  2. FACT β‰  SIGNAL β‰  UNKNOWN.

  3. What is not public is explicitly reported as unknown.

  4. One MCP tool, not dozens. Our tool list is 2,347 characters. A broad Dutch open-data MCP we set alongside it: 55,452 characters for 64 tools β€” about 15,000 tokens an agent has to read before it can ask anything.

  5. A failing source fails visibly. Silence must not look like β€œnothing to report.”

  6. Every derived conclusion carries its substantiation in based_on.

Run it yourself

npm install
npx wrangler deploy      # vul eerst je eigen account_id in wrangler.toml
node regression.mjs      # acht gevallen tegen de live dienst

No keys are needed β€” all sources are public. No precomputed data in the bundle; everything is queried live (240–480 ms per source, in parallel).

Sources and license

Eleven datasets from the Dutch license plate registry and recall record, all available under Creative Commons Zero. Note: the data provider expressly does not allow attribution on reuse and prohibits the use of its name and logo, so these are deliberately omitted β€” only neutral register identification plus the dataset-id.

The data provider gives no guarantee of availability and may withdraw datasets without notice. Performance is fair use, hence the rate limit of 10 requests per 10 s and 60 per minute per IP on the hosted service.

Code: MIT, see LICENSE.

Privacy

A license plate can be personal data. The hosted service logs no license plates and no IP addresses β€” a log file with plates plus timestamps would provide exactly the missing connection between them in the source data. It does log: make, construction year, vehicle type, and the signals provided.

Dutch Property Context β€” the same approach for Dutch homes: address in, year of construction, energy label, neighborhood scores, monumental status, and schools out.


Built by Tradebrite BV Β· info@tradebrite.nl

-
license - not tested
-
quality - not tested
C
maintenance

Maintenance

–Maintainers
–Response time
–Release cycle
–Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

  • A paid remote MCP for AI SDK data query MCP, built to return verdicts, receipts, usage logs, and aud

  • A paid remote MCP for hosted MCP server, built to return verdicts, receipts, usage logs, and audit-r

  • A paid remote MCP for CLI tool MCP, built to return verdicts, receipts, usage logs, and audit-ready

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/rleefers/dutch-vehicle-context'

If you have feedback or need assistance with the MCP directory API, please join our Discord server