Skip to content

MCP server

Danish property data for AI agents

An assistant that needs to check a Danish building, resolve an address or read the planning constraints on a plot should not need a bespoke integration per register. Grundfast exposes 28 read-only tools over the Model Context Protocol, on the same key and the same meter as the REST API.

One endpoint

Læs denne side på dansk

In practice

One question, four registers

The agent picks the tools; Grundfast answers each call from the official register. This is a real property and real results.

We are renovating Nyhavn 20 in Copenhagen. Anything in the registers we should know first?

tooladresse_soeg{ "q": "Nyhavn 20, København" }

Nyhavn 20, 1051 København K → BFE 6033800

toolbbr_ejendom{ "bfe": 6033800 }

3 buildings, main building from 1845 · building 1 fredet: true · building 2 tag: "Fibercement herunder asbest"

tooljord_omraadeklassificering{ "lon": 12.5905, "lat": 55.6795 }

omraadeklassificeret: true · "Område med krav om analyser"

toolnatur_byggelinjer{ "lon": 12.5905, "lat": 55.6795 }

10 lines checked · inden_for: false on all

Building 1 is listed, so building work on it needs approval from the heritage authority. The roof of building 2 is registered as fibre cement that may contain asbestos — plan a survey before any roof work. The plot is in a classified soil area, so excavated soil must be analysed before it is moved. None of the ten protection lines apply.
Tool names and arguments as the server defines them; results from the registers for BFE 6033800. The question and answer stand in for your model.

Connect

Connect in one step

A remote server over HTTP with a bearer header. It is listed in the official MCP registry as dk.grundfast/danish-address-property-data.

Claude Codebash
claude mcp add --transport http grundfast \
  https://api.grundfast.dk/mcp \
  --header "Authorization: Bearer gf_live_..."
mcp.jsonjson
{
  "mcpServers": {
    "grundfast": {
      "type": "http",
      "url": "https://api.grundfast.dk/mcp",
      "headers": { "Authorization": "Bearer gf_live_..." }
    }
  }
}

Tools

28 tools, grouped by the job they do

Each returns the same shape as its REST endpoint. Two history tools need the Scale plan and the address-change feed needs Pro; everything else works on every plan.

The property

  • bbr_ejendomBuildings, units and land for a BFE, with heritage status.
  • matrikel_ejendomCadastral parcels and district for a BFE.
  • ejendomsvurderingThe public valuation series for a BFE.
  • geodanmark_bygningerBuilding footprint polygons for a BFE.
  • dhm_bygningshoejderMeasured height of every building on a BFE.
  • bbr_historikScaleThe property as it stood on an earlier date.
  • bbr_bygningssoegningEvery standing building in a kommune or postcode matching BBR facts.

Addresses

  • adresse_soegSearch addresses by text; each hit carries its BFE.
  • adresse_opslagOne address by its DAR id.
  • adresse_datavaskClean a messy address; ranked, graded candidates.
  • adgangsadresse_reverseNearest addresses to a coordinate.
  • adresse_aendringerProNew, changed and retired addresses in a kommune, postcode or ID list.
  • adresse_historikScaleHow an address has changed over time.

Planning constraints

  • jord_omraadeklassificeringWhether a point lies in a classified soil area (§ 50 a).
  • jord_kortlaegningWhether a point lies on land mapped as contaminated (V1 or V2), with the lokalitet.
  • jord_kortlaegning_matrikelWhether a parcel is mapped V1/V2, and how much of it each mapped area covers.
  • natur_byggelinjerTen protection lines at a point, each with signed distance to its edge.
  • natur_skovbyggelinjeThe forest building line (§ 17) in depth, including lifted areas.
  • planZone, local plans and municipal plan frames at a point, with status and plan PDF.
  • miljoe_stoejRoad, rail, airport and industry noise bands at a point, with the mapping year.
  • plan_ejendomThe plans for a BFE plus an indicative remaining floor area, inputs echoed.
  • miljoe_screeningPre-renovation screening per building part for asbestos, PCB, lead, PAH, chlorinated paraffins and heavy metals, from the national building atlas.

Place and companies

  • dagi_reverseMunicipality, region, parish and districts at a point.
  • dagi_omraadeOne administrative area by theme and code.
  • dhm_hoejdeTerrain and surface height at a coordinate.
  • stednavne_naerOfficial place names near a coordinate.
  • orto_luftfoto_aargangeWhich aerial-photo years were flown over a point.
  • cvr_virksomhedA Danish company by CVR number.

Input schemas for every tool come back from tools/list; the matching REST endpoints are in the API reference.

FAQ

Questions about the MCP server

The Model Context Protocol is an open standard for connecting AI assistants and agents to tools and data. An MCP server exposes typed tools that a model can call directly, instead of you writing glue code for every integration.

Any MCP client that supports remote servers over HTTP with a bearer header — the standard remote-server shape, with nothing model-specific in it. The server is also listed in the official MCP registry as dk.grundfast/danish-address-property-data.

No. Every tool call is metered exactly like a REST request, against the same plan and the same key. A gf_test_ key lets an agent explore the tools without being billed.

The server is read-only: every tool is a lookup against a public register, nothing writes, and personal ownership data is not exposed. Per-key rate limits and quotas mean an agent stuck in a loop hits a limit, not a surprise invoice.

Generally, yes. Each tool describes its inputs and outputs in its schema, which is what a model reads to map bygninger to buildings or fredet to listed. The code-list values are the register’s own Danish text — also what an answer should quote back to an official source.

See also

Give your agent the registers

Create a free key, add the server to your client, and the tools appear on the next start. A gf_test_ key is never billed.

Free up to 5,000 calls a month · no card · test keys never billed · data from Klimadatastyrelsen / Datafordeler, CC BY 4.0