# Dutch Property Context [Health: Active]

**Category:** 💻 Developer Tools  
**Repository:** https://github.com/rleefers/dutch-property-context  
**GitHub Stars:** 0  
**Views:** 0  
**Installs:** 0  
**Upvotes:** 0  
**Directory Page:** https://allmcps.com/mcp/dutch-property-context-2

## Description
Dutch property report by address: build year, energy label, neighbourhood, monument, schools.

## Claude Desktop Quick Installation
Install path detected from listing signals. Uses `npx` (confidence: high):

```json
"mcpServers": {
  "dutch-property-context": {
    "command": "npx",
    "args": ["-y","wrangler"]
  }
}
```

## Documentation & README

# Dutch Property Context — MCP server & API voor Nederlandse adressen

Eén adres erin, één gekoppeld pandrapport eruit. Bouwjaar en oppervlakte uit de BAG, het
geregistreerde energielabel, CBS-buurtcijfers, omgevingsgeluid en luchtkwaliteit,
rijksmonumentstatus, beschermd stads- of dorpsgezicht, en scholen in de buurt.

Draait als **remote MCP-server** en als gewone HTTPS-API. Gratis, geen API-sleutel, geen
registratie.

```
https://property-context.tradebrite.nl
```

📖 **Documentatie:** https://tradebrite.nl/property-context/

---

## Aansluiten in 10 seconden

[![Add dutch-property-context MCP server to Cursor](https://cursor.com/deeplink/mcp-install-dark.svg)](https://cursor.com/install-mcp?name=dutch-property-context&config=eyJ1cmwiOiJodHRwczovL3Byb3BlcnR5LWNvbnRleHQudHJhZGVicml0ZS5ubC9tY3AifQ==)

**Claude** (web of desktop, elk abonnement): *Customize → Connectors → + → Add custom connector*, plak `https://property-context.tradebrite.nl/mcp`.

**ChatGPT:** custom connectors vereisen Developer Mode (Pro/Team/Enterprise/Edu); op Plus kan het niet — gebruik daar de HTTPS-API.

**Claude Code:**

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

Of in je MCP-configuratie (Claude Desktop, Cursor, Windsurf, …):

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

Daarna kun je vragen: *"Wat moet ik weten over Grote Markt 2 in Haarlem voor ik ga bezichtigen?"*

Liever gewoon HTTP:

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

## Waarom dit bestaat

Vraag een AI-agent naar een Nederlands adres en hij gaat het web op. Dat levert een antwoord
op dat er goed uitziet en soms klopt. De onderliggende gegevens zijn openbaar en betrouwbaar,
maar ze staan in negen registers met elk hun eigen sleutel, formaat en eigenaardigheden.

Het lastigste is niet het ophalen maar het **koppelen**, en daar ging het bij ons herhaaldelijk
mis voordat we het doorhadden:

- Het monumentnummer dat we publiceerden bleek het interne objectnummer te zijn. Prinsengracht
  263 kreeg een nummer mee dat in het monumentenregister naar een pand in **Zierikzee** wijst.
- De monumentquery was niet plaatsgebonden, dus een adres in Asten kreeg een monument in
  **Coevorden** toegewezen.
- `Binnenrotte 101, Amsterdam` gaf zonder enig voorbehoud het pand in **Rotterdam** terug,
  met `match_verified: true`.

Geen van de bronnen was stuk. Het koppelen was stuk. Deze laag neemt dat werk over, en zegt
er expliciet bij hoe zeker het is dat we het juiste pand te pakken hebben.

## Wat je terugkrijgt

Eén JSON-antwoord (~11 kB) met `identity`, `building`, `energy`, `location`, `neighbourhood`,
`environment`, `heritage`, `protected_area`, `schools`, `signals` en `provenance`.

> **Let op `identity.match_verified`.** Staat die op `false`, dan is het gevraagde adres niet
> met zekerheid teruggevonden en gaat de rest van het antwoord mogelijk over een ánder pand.
> Bij `match_ambiguous` staan alle even goede kandidaten erbij.

`signals` zijn observaties, nooit vastgestelde gebreken. Bouwjaar 1921 betekent niet dat er
loden leidingen zijn — het betekent dat dat het nakijken waard is.

| Signaal | Betekenis |
|---|---|
| `construction_era_checks` | Wat bij dit bouwjaarcohort gecontroleerd hoort te worden |
| `conflicting_construction_year` | Twee registers noemen een ander bouwjaar; beide worden getoond |
| `energy_label_expiring` / `no_energy_label` | Status van het geregistreerde label |
| `protected_townscape` / `world_heritage_area` | Gevolgen voor vergunningen |
| `address_match_unverified` | Het gevraagde adres is niet met zekerheid teruggevonden |
| `source_unavailable` | Een bron antwoordde niet — onbekend, niet leeg |

## Wat het níét doet

Geen taxatie, geen woningwaarde, geen juridisch of bouwkundig advies. Geen vraagprijs, geen
erfpachtcanon, geen VvE-informatie en geen eigendomshistorie — die zijn niet vrij beschikbaar.

## Ontwerpprincipes

1. **Nooit een ontbrekende waarde invullen omdat hij waarschijnlijk lijkt.**
2. **FEIT ≠ SIGNAAL ≠ ONBEKEND.**
3. **Provenance per bron**, ook in `depth=compact` — een deel van de bronnen staat onder
   CC BY en dan is bronvermelding een licentievoorwaarde.
4. **Eén MCP-tool, niet tientallen.** Onze toollijst is 2.419 tekens. Een brede Nederlandse
   open-data-MCP die we ernaast legden: 55.452 tekens voor 64 tools.
5. **Een falende bron faalt zichtbaar.**
6. **Een veld dat nooit gevuld wordt, hoort er niet in.**

## Zelf draaien

```bash
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
```

De indexbestanden staan bewust niet in de repo: ze zijn afgeleid van CC BY-bronnen en in een
paar minuten opnieuw te bouwen. Een `EP_ONLINE_KEY` (gratis aan te vragen bij RVO) is
optioneel; zonder die sleutel ontbreekt alleen het energielabel, netjes als `not_configured`.

> **Let op de bundelgrens.** Boven ongeveer 3,7 MB slaat de koude start van een Cloudflare
> Worker om van 0,2 naar 9 seconden, óók op `/health`. Geïsoleerd nagemeten. Er kan dus geen
> vierde index bij zonder R2.

## Bronnen en licentie

BAG (Public Domain Mark 1.0) · EP-Online/RVO (eigen voorwaarden, geen bulk-doorlevering) ·
CBS Wijken & Buurten en Kerncijfers (CC BY 4.0) · RIVM geluid en luchtkwaliteit (publiek
domein) · RCE rijksmonumenten en beschermde gebieden (CC BY 4.0) · DUO onderwijsadressen
(CC BY).

**Attributie is bij een deel hiervan verplicht.** Daarom zit `provenance` in elk antwoord.
Geef die door als je de gegevens aan een eindgebruiker toont; die verplichting gaat met de
data mee.

**Code:** MIT, zie [LICENSE](https://github.com/rleefers/dutch-property-context/blob/HEAD/LICENSE).

## Privacy

De gehoste dienst logt **geen adressen, geen postcodes en geen IP-adressen**. Wel: de
gemeente (grofmazig), de afgegeven signalen en de bronstatussen.

## Verwant

**[Dutch Vehicle Context](https://github.com/rleefers/dutch-vehicle-context)** — dezelfde
aanpak voor Nederlandse voertuigen: kenteken erin, APK-historie, terugkerende afkeurpunten en
de volledige terugroepketen eruit.

---

Gebouwd door [Tradebrite BV](https://tradebrite.nl) · info@tradebrite.nl

