{
  "markdown": "# Dutch Property Context — MCP server & API voor Nederlandse adressen\n\nEén adres erin, één gekoppeld pandrapport eruit. Bouwjaar en oppervlakte uit de BAG, het\ngeregistreerde energielabel, CBS-buurtcijfers, omgevingsgeluid en luchtkwaliteit,\nrijksmonumentstatus, beschermd stads- of dorpsgezicht, en scholen in de buurt.\n\nDraait als **remote MCP-server** en als gewone HTTPS-API. Gratis, geen API-sleutel, geen\nregistratie.\n\n```\nhttps://property-context.tradebrite.nl\n```\n\n📖 **Documentatie:** https://tradebrite.nl/property-context/\n\n---\n\n## Aansluiten in 10 seconden\n\n[![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==)\n\n**Claude** (web of desktop, elk abonnement): *Customize → Connectors → + → Add custom connector*, plak `https://property-context.tradebrite.nl/mcp`.\n\n**ChatGPT:** custom connectors vereisen Developer Mode (Pro/Team/Enterprise/Edu); op Plus kan het niet — gebruik daar de HTTPS-API.\n\n**Claude Code:**\n\n```bash\nclaude mcp add --transport http property-context https://property-context.tradebrite.nl/mcp\n```\n\nOf in je MCP-configuratie (Claude Desktop, Cursor, Windsurf, …):\n\n```json\n{\n  \"mcpServers\": {\n    \"property-context\": {\n      \"type\": \"http\",\n      \"url\": \"https://property-context.tradebrite.nl/mcp\"\n    }\n  }\n}\n```\n\nDaarna kun je vragen: *\"Wat moet ik weten over Grote Markt 2 in Haarlem voor ik ga bezichtigen?\"*\n\nLiever gewoon HTTP:\n\n```bash\ncurl \"https://property-context.tradebrite.nl/v1/property/context?address=Grote%20Markt%202,%20Haarlem\"\n```\n\n## Waarom dit bestaat\n\nVraag een AI-agent naar een Nederlands adres en hij gaat het web op. Dat levert een antwoord\nop dat er goed uitziet en soms klopt. De onderliggende gegevens zijn openbaar en betrouwbaar,\nmaar ze staan in negen registers met elk hun eigen sleutel, formaat en eigenaardigheden.\n\nHet lastigste is niet het ophalen maar het **koppelen**, en daar ging het bij ons herhaaldelijk\nmis voordat we het doorhadden:\n\n- Het monumentnummer dat we publiceerden bleek het interne objectnummer te zijn. Prinsengracht\n  263 kreeg een nummer mee dat in het monumentenregister naar een pand in **Zierikzee** wijst.\n- De monumentquery was niet plaatsgebonden, dus een adres in Asten kreeg een monument in\n  **Coevorden** toegewezen.\n- `Binnenrotte 101, Amsterdam` gaf zonder enig voorbehoud het pand in **Rotterdam** terug,\n  met `match_verified: true`.\n\nGeen van de bronnen was stuk. Het koppelen was stuk. Deze laag neemt dat werk over, en zegt\ner expliciet bij hoe zeker het is dat we het juiste pand te pakken hebben.\n\n## Wat je terugkrijgt\n\nEén JSON-antwoord (~11 kB) met `identity`, `building`, `energy`, `location`, `neighbourhood`,\n`environment`, `heritage`, `protected_area`, `schools`, `signals` en `provenance`.\n\n> **Let op `identity.match_verified`.** Staat die op `false`, dan is het gevraagde adres niet\n> met zekerheid teruggevonden en gaat de rest van het antwoord mogelijk over een ánder pand.\n> Bij `match_ambiguous` staan alle even goede kandidaten erbij.\n\n`signals` zijn observaties, nooit vastgestelde gebreken. Bouwjaar 1921 betekent niet dat er\nloden leidingen zijn — het betekent dat dat het nakijken waard is.\n\n| Signaal | Betekenis |\n|---|---|\n| `construction_era_checks` | Wat bij dit bouwjaarcohort gecontroleerd hoort te worden |\n| `conflicting_construction_year` | Twee registers noemen een ander bouwjaar; beide worden getoond |\n| `energy_label_expiring` / `no_energy_label` | Status van het geregistreerde label |\n| `protected_townscape` / `world_heritage_area` | Gevolgen voor vergunningen |\n| `address_match_unverified` | Het gevraagde adres is niet met zekerheid teruggevonden |\n| `source_unavailable` | Een bron antwoordde niet — onbekend, niet leeg |\n\n## Wat het níét doet\n\nGeen taxatie, geen woningwaarde, geen juridisch of bouwkundig advies. Geen vraagprijs, geen\nerfpachtcanon, geen VvE-informatie en geen eigendomshistorie — die zijn niet vrij beschikbaar.\n\n## Ontwerpprincipes\n\n1. **Nooit een ontbrekende waarde invullen omdat hij waarschijnlijk lijkt.**\n2. **FEIT ≠ SIGNAAL ≠ ONBEKEND.**\n3. **Provenance per bron**, ook in `depth=compact` — een deel van de bronnen staat onder\n   CC BY en dan is bronvermelding een licentievoorwaarde.\n4. **Eén MCP-tool, niet tientallen.** Onze toollijst is 2.419 tekens. Een brede Nederlandse\n   open-data-MCP die we ernaast legden: 55.452 tekens voor 64 tools.\n5. **Een falende bron faalt zichtbaar.**\n6. **Een veld dat nooit gevuld wordt, hoort er niet in.**\n\n## Zelf draaien\n\n```bash\nnpm install\npython3 scripts/build_school_index.py     # bouwt data/schools.json\npython3 scripts/build_amenities_index.py  # bouwt data/amenities.json\npython3 scripts/build_places_index.py     # bouwt data/places.json\nnpx wrangler deploy                       # vul eerst je account_id in wrangler.toml\nnode regression.mjs                       # dertien gevallen tegen de live dienst\n```\n\nDe indexbestanden staan bewust niet in de repo: ze zijn afgeleid van CC BY-bronnen en in een\npaar minuten opnieuw te bouwen. Een `EP_ONLINE_KEY` (gratis aan te vragen bij RVO) is\noptioneel; zonder die sleutel ontbreekt alleen het energielabel, netjes als `not_configured`.\n\n> **Let op de bundelgrens.** Boven ongeveer 3,7 MB slaat de koude start van een Cloudflare\n> Worker om van 0,2 naar 9 seconden, óók op `/health`. Geïsoleerd nagemeten. Er kan dus geen\n> vierde index bij zonder R2.\n\n## Bronnen en licentie\n\nBAG (Public Domain Mark 1.0) · EP-Online/RVO (eigen voorwaarden, geen bulk-doorlevering) ·\nCBS Wijken & Buurten en Kerncijfers (CC BY 4.0) · RIVM geluid en luchtkwaliteit (publiek\ndomein) · RCE rijksmonumenten en beschermde gebieden (CC BY 4.0) · DUO onderwijsadressen\n(CC BY).\n\n**Attributie is bij een deel hiervan verplicht.** Daarom zit `provenance` in elk antwoord.\nGeef die door als je de gegevens aan een eindgebruiker toont; die verplichting gaat met de\ndata mee.\n\n**Code:** MIT, zie [LICENSE](LICENSE).\n\n## Privacy\n\nDe gehoste dienst logt **geen adressen, geen postcodes en geen IP-adressen**. Wel: de\ngemeente (grofmazig), de afgegeven signalen en de bronstatussen.\n\n## Verwant\n\n**[Dutch Vehicle Context](https://github.com/rleefers/dutch-vehicle-context)** — dezelfde\naanpak voor Nederlandse voertuigen: kenteken erin, APK-historie, terugkerende afkeurpunten en\nde volledige terugroepketen eruit.\n\n---\n\nGebouwd door [Tradebrite BV](https://tradebrite.nl) · info@tradebrite.nl\n",
  "bytes": 6527,
  "sha": "451ecd719b7bfffd86ed22fff1d1393c46b874241d246905c4a12fa1b5355bcd",
  "repo_slug": "rleefers/dutch-property-context",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_nl_tradebrite_dutch_property_context_a1cc94ae/readme"
}