Skip to main content
Glama
rleefers

dutch-property-context

by rleefers

Dutch Property Context — MCP & API for Dutch addresses

One address in, one linked property report out. Construction year and floor area from the BAG, the registered energy label, CBS neighbourhood figures, environmental noise and air quality, rijksmonument status, protected city-and-village scope, and schools nearby.

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

https://property-context.tradebrite.nl

📖 Documentation: https://tradebrite.nl/property-context/


aansluiten in 10 seconds

Add dutch-property-context MCP server to Cursor

Claude (web or desktop, any subscription): Customize → Connectors → + → Add custom connector, paste https://property-context.tradebrite.nl/mcp.

ChatGPT: custom connectors require Developer Mode (Pro/Team/Enterprise/Edu); on Plus it cannot — use the plain HTTP API instead.

Claude Code:

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

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

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

After that you can ask: “What should I know about Grote Markt 2 in Haarlem before I go view it?”

Prefer just HTTP:

curl "https://property-context.tradebrite.nl/v1/property/context?address=Grote%20Markt%202,%20Haarlem"

Related MCP server: homedata-mcp

Why this exists

Ask an AI agent a Dutch address and it turns to the web. That gives an answer that looks good and is sometimes right. The underlying data are public and reliable, but they sit in nine registers, each with its own key, format, and strangeness.

The hardest part is not retrieving but linking, and that went wrong miss after time long enough:

  • The heritage number we published turned out to be the internal object number. Prinsengracht 263 got a number that in the heritage register points to a property in Zierikzee.

  • The heritage query was not binding to the place, so an address in Asten was assigned a monument in Coevorden.

  • Binnenrotte 101, Amsterdam merely without a second had the property in Rotterdam shown back, with match_verified = true.

No source was wrong. What was unbek was the link. This layer takes over that work and says explicitly how sure it is about which property we get.

What you get back

One JSON response (~11 KB) with identity, inscription, energy, location, neighbourhood, environment, heritage, protected locally, schools, signals, and provenance.

Be aware of identity.match_verified. When it is false, the requested address has not been found with certainty and the rest of the answer may be about another property. In match_ambiguous all the just as good candidates are listed.

signals are observations, never established defects. A construction year of 1921 does not mean lead pipes — it means it is worth checking.

Signal

Meaning

construction_era_checks

What should be checked for this construction-period cohort

conflicting_year

Two registers give a different year, both are shown

energy_label_expiring / no_energy_label

registered label status

protected_townscape / protected_area

Consequences for permits

address_match_unverified

the requested address was not found with certainty

source_unavailable

a source did not respond — unknown, not empty

What it does not do

No valuation, no property value, no legal or construction advice. No asking price, no ground lease, no VvE information and no ownership history — those are not free.

Design principles

  1. Never fill in a missing value because it seems plausible.

  2. FEIT ≠ SIGNAAL ≠ UNKNOWN.

  3. Register per source, also in depth=compact — a part of the sources falls under CC BY, and then contributing is a licence condition.

  4. Eén MCP-tool, not dozens. Our tool list is 2,419 characters. A broad Dutch open-data MCP that we placed next to it: 55,452 characters for 64 tools.

  5. A broken source stays visible.

  6. A field that is never filled does not belong .

Run it yourself

npm install
python3 scripts/build_school_index.py     # bouwt data/schools.json
python3 scripts/build_amenities_index.py  # bouwt data/amenities.json
python3 scripts/build_places_index.py     # bouwt data/places.json
npx wrangler deploy                       # vul eerst je account_id in wrangler.toml
node regression.mjs                       # dertien gevallen tegen de live dienst

The ingredients are deliberately not in the repo: they are derived from sources with a CC BY licence and can be rebuilt in a few minutes. An EP_ONLINE_KEY (free to request from RVO) is optional; without that key only the energy label is missing, nearly as not_configured.

A look at the bundle limit. Above about 3.7 MB, the cold start of a Cloudflare Worker moves from 0.2 to 9 seconds, also on /health. Performance is isolated in a test. Therefore no fourth index is possible without R2.

Sources and license

BAG (Public Domain Mark 1.0) · EP-Online/RVO (own conditions, no bulk redistribution) · CBS Wijk en Buurt and Core Figures (CC BY 4.0) · RIVM noise and air quality (public domain) · RCE monuments and protected sites (CC BY 4.0) · DUO education addresses (CC BY).

Attribution is mandatory with part of this. That’s why provenance is in every response. Pass on that if you show the data to an end user; the obligation goes with the data.

Code: MIT, see LICENSE.

Privacy

The hosted service does not log addresses, no postal codes and no IP addresses – but it does the municipality (coarse), the signals of the data, and the source status.

Related

Dutch Vehicle Context — the same approach for Dutch vehicles: plate in, MOT history, recurring defect points and the full recall chain out.


Built by Tradebrite BV · info@tradebrite.nl

A
license - permissive license
-
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 Servers

  • F
    license
    -
    quality
    D
    maintenance
    Property intelligence API for US real estate. Returns 16+ data points for any US address: noise levels, wetlands, slope, natural light, powerline proximity, crime rates, property facing direction, zoning, public record, radon risk, natural hazards (earthquake, flood, wildfire), neighborhood demographics, falling tree risk, RF/cell tower exposure, and nearby school.
  • A
    license
    A
    quality
    C
    maintenance
    Enables AI assistants to query UK property data including EPCs, sale history, planning, flood risk, council tax, demographics, and more via the Homedata API.
    18
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Enables accessing and querying Dutch government open datasets from CBS and data.overheid.nl, with tools for searching, filtering, downloading, and analyzing data using CSV, Parquet, DuckDB, or Pandas.
    9
    MIT

View all related MCP servers

Related MCP Connectors

  • U.S. real-estate data: property records, AVM value + rent estimates, sale/rental listings.

  • Address validation & geocoding for AI agents: 240+ countries, UK PAF, free US/CA enrichment

  • Flood, wildfire, earthquake, and coastal-storm hazard lookup for a US property.

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-property-context'

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