# GUTHMANN® Berlin Real Estate (remote · mcp.guthmann.estate)

Berlin real estate for AI agents: granular market data and property search, free, by GUTHMANN®.

- Trust score: 71/100 (medium)
- Change this week: 0
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-09-27

## Components

- remote · `mcp.guthmann.estate`: 71/100 (this document), [markdown](https://verifymcp.io/servers/estate-guthmann-mcp/mcp.md), [page](https://verifymcp.io/servers/estate-guthmann-mcp/mcp)

## Channel facts

- Endpoint: `https://mcp.guthmann.estate/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `0.3.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-09-27.

- **Endpoint Security**: 83/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - No authorisation is required to call this server. Every tool declares its destructiveHint and none is destructive, so open access doesn't expose one.
  - HTTPS is enforced; there's no plaintext access path.
  - The HSTS (Strict-Transport-Security) header is present.
  - DNSSEC is configured correctly; the domain's records validate against the full chain to the root.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 59/100
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 9657 tokens (~261/item across 37 items; 37 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 0/100
  - Stability check failed: schema churn in the 26 days we've observed: 34 tool removals, 0 breaking changes, 0 auth/transport breaks, 37 additions.
- **Tool Coverage**: 85/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 56% of tool parameters carry a description.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 37 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 37 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### How do I install the GUTHMANN® Berlin Real Estate MCP server?

GUTHMANN® Berlin Real Estate is a hosted endpoint at https://mcp.guthmann.estate/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add --transport http estate-guthmann-mcp 'https://mcp.guthmann.estate/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "estate-guthmann-mcp": {
      "url": "https://mcp.guthmann.estate/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "estate-guthmann-mcp": {
      "type": "http",
      "url": "https://mcp.guthmann.estate/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.estate-guthmann-mcp]
url = "https://mcp.guthmann.estate/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "estate-guthmann-mcp": {
      "type": "remote",
      "url": "https://mcp.guthmann.estate/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add estate-guthmann-mcp --url 'https://mcp.guthmann.estate/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  estate-guthmann-mcp:
    url: "https://mcp.guthmann.estate/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "estate-guthmann-mcp": {
      "Transport": "http",
      "Url": "https://mcp.guthmann.estate/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add estate-guthmann-mcp -t streamable-http -u 'https://mcp.guthmann.estate/mcp'
```

### Other

```json
{
  "mcpServers": {
    "estate-guthmann-mcp": {
      "type": "http",
      "url": "https://mcp.guthmann.estate/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-09-25 (score 71, 0)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-09-12 (score 71, 0)

- [security] Tool “market_berlin_apartments” rewrote its description, which is the text the model reads
- [functional] Server version: 1.65.5 → 1.66.0

### 2026-09-05 (score 71, 0)

- [security] Tool “search” rewrote its description, which is the text the model reads
- [functional] Server version: 1.65.3 → 1.65.5

### 2026-09-04 (score 71, 0)

- [functional] Server version: 1.65.1 → 1.65.3

### 2026-09-03 (score 71, 0)

- [functional regression] “macro_bund_yields” changed the type of “recent”: string → string|number
- [functional regression] “macro_construction_prices” changed the type of “recent”: string → string|number
- [functional regression] “macro_ecb_policy_rates” changed the type of “recent”: string → string|number
- [functional regression] “macro_gdp” changed the type of “recent”: string → string|number
- [functional regression] “macro_inflation_hicp” changed the type of “recent”: string → string|number
- [functional regression] “macro_labor_employment” changed the type of “recent”: string → string|number
- [functional regression] “macro_labor_short_time_work” changed the type of “recent”: string → string|number
- [functional regression] “macro_labor_unemployment” changed the type of “recent”: string → string|number
- [functional regression] “macro_mortgage_lending” changed the type of “recent”: string → string|number
- [functional regression] “market_berlin_apartment_buildings” changed the type of “recent”: string → string|number
- [functional regression] “market_berlin_apartments” changed the type of “recent”: string → string|number
- [functional regression] “market_germany_apartment_buildings” changed the type of “recent”: number → integer
- [functional regression] “market_germany_residential” changed the type of “recent”: number → integer
- [functional regression] “socio_berlin_age_groups” changed the type of “recent”: number → integer
- [functional regression] “socio_berlin_census_buildings” changed the type of “recent”: number → integer
- [functional regression] “socio_berlin_census_dwellings” changed the type of “recent”: number → integer
- [functional regression] “socio_berlin_census_households” changed the type of “recent”: number → integer
- [functional regression] “socio_berlin_census_rents” changed the type of “recent”: number → integer
- [functional regression] “socio_berlin_census_vacancy” changed the type of “recent”: number → integer
- [functional regression] “socio_berlin_construction_activity” changed the type of “recent”: number → integer
- [functional regression] “socio_berlin_migration_external” changed the type of “recent”: number → integer
- [functional regression] “socio_berlin_migration_matrix” changed the type of “recent”: number → integer
- [functional regression] “socio_berlin_origin” changed the type of “recent”: number → integer
- [functional regression] “socio_berlin_population” changed the type of “recent”: number → integer
- [functional] Schema quality: excellent → good
- [functional] Server version: 1.64.0 → 1.65.1
- [functional] New tool “search”

### 2026-09-02 (score 71, +1)

- [security regression] Stability: unverified → fail
- [security regression] Tool “berlin_bezirk_details” was removed
- [security regression] Tool “berlin_bezirke” was removed
- [security regression] Tool “berlin_erhaltungsgebiet_details” was removed
- [security regression] Tool “berlin_erhaltungsgebiete” was removed
- [security regression] Tool “berlin_ortsteil_details” was removed
- [security regression] Tool “berlin_ortsteile” was removed
- [security regression] Tool “berlin_planungsraeume” was removed
- [security regression] Tool “berlin_planungsraum_details” was removed
- [security regression] Tool “berlin_planungsraum_suche” was removed
- [security regression] Tool “feld_metadaten” was removed
- [security regression] Tool “immo_berlin_mehrfamilienhaeuser” was removed
- [security regression] Tool “immo_berlin_wohnungen” was removed
- [security regression] Tool “immo_de_mehrfamilienhaeuser” was removed
- [security regression] Tool “immo_de_wohnimmobilien” was removed
- [security regression] Tool “makro_arbeitsmarkt_arbeitslosigkeit” was removed
- [security regression] Tool “makro_arbeitsmarkt_beschaeftigung” was removed
- [security regression] Tool “makro_arbeitsmarkt_kurzarbeit” was removed
- [security regression] Tool “makro_geldpolitik_leitzinsen” was removed
- [security regression] Tool “makro_kapitalmarkt_bundesanleihen” was removed
- [security regression] Tool “makro_kapitalmarkt_wohnungsbaukredite” was removed
- [security regression] Tool “makro_preise_baupreise” was removed
- [security regression] Tool “makro_preise_hvpi” was removed
- [security regression] Tool “makro_wirtschaft_bip” was removed
- [security regression] Tool “sozio_berlin_bautaetigkeit” was removed
- [security regression] Tool “sozio_berlin_einwohner” was removed
- [security regression] Tool “sozio_berlin_einwohner_altersgruppen” was removed
- [security regression] Tool “sozio_berlin_einwohner_herkunft” was removed
- [security regression] Tool “sozio_berlin_wanderung_aussen” was removed
- [security regression] Tool “sozio_berlin_wanderung_matrix” was removed
- [security regression] Tool “sozio_berlin_zensus_gebaeude” was removed
- [security regression] Tool “sozio_berlin_zensus_haushalte” was removed
- [security regression] Tool “sozio_berlin_zensus_wohnungen_bestand” was removed
- [security regression] Tool “sozio_berlin_zensus_wohnungen_leerstand” was removed
- [security regression] Tool “sozio_berlin_zensus_wohnungen_miete” was removed
- [functional] Schema quality: good → excellent
- [functional] Server version: 1.63.0 → 1.64.0
- [functional] New tool “berlin_borough_details”
- [functional] New tool “berlin_boroughs”
- [functional] New tool “berlin_conservation_area_details”
- [functional] New tool “berlin_conservation_areas”
- [functional] New tool “berlin_district_details”
- [functional] New tool “berlin_districts”
- [functional] New tool “berlin_neighborhood_details”
- [functional] New tool “berlin_neighborhood_search”
- [functional] New tool “berlin_neighborhoods”
- [functional] New tool “field_metadata”
- [functional] New tool “listing_details”
- [functional] New tool “listings”
- [functional] New tool “macro_bund_yields”
- [functional] New tool “macro_construction_prices”
- [functional] New tool “macro_ecb_policy_rates”
- [functional] New tool “macro_gdp”
- [functional] New tool “macro_inflation_hicp”
- [functional] New tool “macro_labor_employment”
- [functional] New tool “macro_labor_short_time_work”
- [functional] New tool “macro_labor_unemployment”
- [functional] New tool “macro_mortgage_lending”
- [functional] New tool “market_berlin_apartment_buildings”
- [functional] New tool “market_berlin_apartments”
- [functional] New tool “market_germany_apartment_buildings”
- [functional] New tool “market_germany_residential”
- [functional] New tool “socio_berlin_age_groups”
- [functional] New tool “socio_berlin_census_buildings”
- [functional] New tool “socio_berlin_census_dwellings”
- [functional] New tool “socio_berlin_census_households”
- [functional] New tool “socio_berlin_census_rents”
- [functional] New tool “socio_berlin_census_vacancy”
- [functional] New tool “socio_berlin_construction_activity”
- [functional] New tool “socio_berlin_migration_external”
- [functional] New tool “socio_berlin_migration_matrix”
- [functional] New tool “socio_berlin_origin”
- [functional] New tool “socio_berlin_population”

### 2026-09-01 (score 70)

First indexed and scored.

## MCP tools (37)

### `berlin_boroughs` (~132 tokens)

Berlin Boroughs

Returns all 12 Berlin boroughs (Bezirke) with IDs and names.

Key response fields: array of { bezirk_id, bezirk_name }
\- bezirk_id: 2 digits ("01" to "12")
\- bezirk_name: e.g. "Mitte", "Friedrichshain-Kreuzberg", "Pankow"

Use when:
\- You need an overview of Berlin's administrative structure
\- You need a bezirk_id for market data queries

Do NOT use when:
\- You already know the bezirk_id → use berlin_borough_details directly

### `berlin_borough_details` (~143 tokens)

Borough Details

Returns details for one Berlin borough (Bezirk) by ID, optionally with all its districts.

Parameters:
\- bezirk_id (required): 2-digit ID ("01" to "12")
\- ortsteile: "true" to include all districts of the borough

Key response fields: { bezirk_id, bezirk_name, ortsteile?: [...] } (ortsteile = districts)

Example: bezirk_id="03" → Pankow with 13 districts (Prenzlauer Berg, Weißensee, etc.)

Input parameters:

- `bezirk_id` (string, required)
- `include` (string)
- `ortsteile` (string)

### `berlin_districts` (~175 tokens)

Berlin Districts

Returns all 96 Berlin districts (Ortsteile), optionally filtered by borough.

Parameters:
\- bezirk_id (optional): filter to the districts of one borough
\- bezirke: "true" to include borough references

Key response fields: array of { ortsteil_id, ortsteil_name, bezirk_id?, bezirk_name? }
\- ortsteil_id: 4 digits (e.g. "0301" for Prenzlauer Berg)

Examples of well-known districts:
\- Prenzlauer Berg (0301), Kreuzberg (0201), Mitte (0101)
\- Charlottenburg (0401), Neukölln (0801), Friedrichshain (0202)

Input parameters:

- `bezirk_id` (string)
- `bezirke` (string)
- `include` (string)

### `berlin_district_details` (~128 tokens)

District Details

Returns details for one Berlin district (Ortsteil) by ID, optionally with its neighborhoods.

Parameters:
\- ortsteil_id (required): 4-digit ID (e.g. "0301")
\- planungsraeume: "true" to include all neighborhoods of the district

Key response fields: { ortsteil_id, ortsteil_name, bezirk_id, bezirk_name, planungsraeume?: [...] } (planungsraeume = neighborhoods)

Input parameters:

- `include` (string)
- `ortsteil_id` (string, required)
- `planungsraeume` (string)

### `berlin_neighborhoods` (~167 tokens)

Berlin Neighborhoods

Returns all 542 Berlin neighborhoods (LOR Planungsräume), optionally filtered by borough or district.

Parameters:
\- bezirk_id (optional): filter by borough
\- ortsteil_id (optional): filter by district
\- bezirke/ortsteile: "true" to include parent references

Key response fields: array of { planungsraum_id, planungsraum_name, ... }
\- planungsraum_id: 8 digits (e.g. "03010101")

Neighborhoods are the finest statistical level in Berlin.
Ideal for granular market analyses.

Input parameters:

- `bezirk_id` (string)
- `bezirke` (string)
- `include` (string)
- `ortsteil_id` (string)
- `ortsteile` (string)

### `berlin_neighborhood_search` (~152 tokens)

Neighborhood Search

Searches Berlin neighborhoods (LOR Planungsräume) by name.

Parameters:
\- q (required): search term (min. 3 characters)
\- limit: max. results (default: 25)
\- bezirk_id/ortsteil_id: optional filters to narrow the search

Example: q="Kollwitz" finds the "Kollwitzplatz" neighborhood

Input parameters:

- `bezirk_id` (string)
- `bezirke` (string)
- `include` (string)
- `limit` (integer): Maximale Anzahl Ergebnisse (öffentlich bis 1000)
- `ortsteil_id` (string)
- `ortsteile` (string)
- `q` (string, required)

### `berlin_neighborhood_details` (~123 tokens)

Neighborhood Details

Returns details for one Berlin neighborhood (LOR Planungsraum) by ID, optionally with its blocks.

Parameters:
\- planungsraum_id (required): 8-digit ID
\- bloecke: "true" to include all blocks of the neighborhood

Key response fields: { planungsraum_id, planungsraum_name, bezirk_id, bezirk_name, ortsteil_id, ortsteil_name, bloecke?: [...] } (bloecke = blocks)

Input parameters:

- `include` (string)
- `planungsraum_id` (string, required)

### `berlin_conservation_areas` (~351 tokens)

Berlin Conservation Areas

Berlin social conservation areas (Milieuschutzgebiete, §172 BauGB). 124 areas in 6 categories with polygon geometry.

Parameters:
\- kategorie_id: filter by category ("erhaltungsgebiet" | "erweiterung" | "aufstellungsbeschluss" | "untersuchungsgebiet" | "beobachtungsgebiet" | "aufgehoben")
\- erweiterungen: "true" to embed extensions as a nested array inside their main area
\- include: comma-separated geo attributes; available: "centroid". Polygons are provided as GeoJSON URLs in geometry_urls
\- lat/lon: WGS84 point lookup. Returns only areas containing the point (typically 0 or 1 match). lat and lon must be provided together.

Key response fields: array of { id, name, kategorie_id, kategorie_name, parent_id, beschreibung (description), datum (date), flaeche_km2 (area in km²), geometry_urls, centroid?, erweiterungen? (extensions) }

Use for: "Is this address in a social conservation area?" (with lat/lon), overview of all Milieuschutz areas.

Input parameters:

- `erweiterungen` (string): Erweiterungen als nested Array einbetten
- `include` (string): Geo-Attribute: centroid. Polygone kommen als GeoJSON-URLs in geometry_urls
- `kategorie_id` (string): Filter nach Kategorie
- `lat` (number): Breitengrad WGS84 für Punkt-Lookup (mit lon)
- `lon` (number): Längengrad WGS84 für Punkt-Lookup (mit lat)

### `berlin_conservation_area_details` (~181 tokens)

Conservation Area Details

Returns a single Berlin social conservation area (Milieuschutzgebiet) by ID. For main areas, associated extensions are embedded automatically.

Parameters:
\- id (required): 12-character hex string (deterministic area ID)
\- include: comma-separated geo attributes; available: "centroid". Polygons are provided as GeoJSON URLs in geometry_urls

Key response fields: { id, name, kategorie_id, kategorie_name, parent_id, beschreibung (description), datum (date), flaeche_km2 (area in km²), geometry_urls, centroid?, erweiterungen? (extensions) }

Input parameters:

- `id` (string, required): 12-stelliger Hex-String der Gebiets-ID
- `include` (string): Geo-Attribute: centroid. Polygone kommen als GeoJSON-URLs in geometry_urls

### `market_berlin_apartments` (~536 tokens)

Berlin Apartments

Berlin apartment market data (listings + transactions). Sources: listing/offer data (IMV) + transaction data from the Berlin committee of valuation experts (GAA, Gutachterausschuss).

Parameters:
\- zeitraum: "jahr" (default) | "monat" | "quartal" (abgeschlossene Quartale)
  \- jahr: transaction data (GAA) + listing data (IMV), finest level: block
  \- monat: listing data (IMV) only, finest level: District (Ortsteil)
  \- quartal: listing data (IMV) only, closed quarters, finest level: District (Ortsteil)

\- rbs: spatial aggregation level — bezirk = Borough, ortsteil = District, planungsraum = Neighborhood (LOR Planungsraum)
  \- For zeitraum=jahr: "stadt" | "bezirk" | "stadtteil" | "ortsteil" | "planungsraum" | "block"
  \- For zeitraum=monat or quartal: "stadt" | "bezirk" | "stadtteil" | "ortsteil"

Time filters:
\- start/end: flexible date values (YYYY, YYYY-MM, YYYY-MM-DD)
\- recent: number of most recent periods (alternative to start/end)

Additional filters:
\- bezirk_id, stadtteil_id, ortsteil_id, planungsraum_id, block_id
\- baualtertyp: "neubau" (new construction) | "bestand" (existing stock)
\- limit, fields, include: "metadata"

Key response fields (depending on zeitraum):
\- zeitraum=jahr: transaktionspreis_m2 (transaction price per m²), anzahl_transaktionen (number of transactions), kaufangebotspreis_m2 (asking sale price per m²), mietangebotspreis_m2 (asking rent per m²)
\- zeitraum=monat: kaufangebotspreis_m2, anzahl_kaufangebote (number of sale listings), kaufangebot_vermarktungszeit (time on market)

Input parameters:

- `baualtertyp` (string)
- `bezirk_id` (string)
- `end` (string)
- `fields` (string)
- `include` (string)
- `limit` (integer): Maximale Anzahl Ergebnisse (öffentlich bis 1000)
- `ortsteil_id` (string)
- `planungsraum_id` (string)
- `rbs` (string)
- `recent` (string|number)
- `start` (string)

### `market_berlin_apartment_buildings` (~325 tokens)

Berlin Apartment Buildings

Berlin apartment building market (rental buildings, "Zinshäuser") - transaction data. Source: transaction data from the Berlin committee of valuation experts (GAA, Gutachterausschuss).

Parameters:
\- rbs: "stadt" | "bezirk" | "stadtteil" | "ortsteil" — bezirk = Borough, ortsteil = District

Time filters:
\- start/end: flexible date values (YYYY, YYYY-MM, YYYY-MM-DD)
\- recent: number of most recent periods (alternative to start/end)

Additional filters:
\- bezirk_id, stadtteil_id, ortsteil_id
\- limit, fields, include: "metadata"

Key response fields:
\- transaktionspreis: average total purchase price (€)
\- transaktionen: number of transactions
\- vielfaches: purchase price multiplier (purchase price / annual net cold rent)
\- vielfaches_delta_*j: absolute change of the multiplier (1y, 5y, 10y, 15y)
\- transaktionspreis_m2: price per m² of living space

Ideal for: investment market analysis, yield comparisons across locations

Input parameters:

- `bezirk_id` (string)
- `end` (string)
- `fields` (string)
- `include` (string)
- `limit` (integer): Maximale Anzahl Ergebnisse (öffentlich bis 1000)
- `ortsteil_id` (string)
- `rbs` (string)
- `recent` (string|number)
- `start` (string)

### `market_germany_residential` (~286 tokens)

Germany Residential

National market data for the German residential real estate market. Sources: DESTATIS, vdp, HYPOPORT.

Includes price AND transaction indices for various market segments.

Time filters:
\- start/end: flexible date values (YYYY, YYYY-MM, YYYY-MM-DD)
\- recent: number of most recent periods

Response controls:
\- limit, fields, include: "metadata"

Key response fields:
PRICE INDICES:
\- preisindex_gesamt_destatis, preisindex_gesamt_vdp, preisindex_gesamt_hypoport (overall price index per source)
\- preisindex_grossstaedte_top_7 (top-7 major cities), preisindex_staedte_top_127 (top-127 cities)

TRANSACTION INDICES:
\- transaktionsindex_grossstaedte_top_7, transaktionsindex_staedte_top_127

Input parameters:

- `end` (string): Ende des Zeitraums (YYYY, YYYY-MM oder YYYY-MM-DD)
- `fields` (string): Komma-getrennte Feldnamen
- `include` (string): metadata für Feld-Metadaten inline
- `limit` (integer): Maximale Anzahl Ergebnisse (öffentlich bis 1000)
- `recent` (integer): Anzahl der aktuellsten Perioden
- `start` (string): Beginn des Zeitraums (YYYY, YYYY-MM oder YYYY-MM-DD)

### `market_germany_apartment_buildings` (~234 tokens)

Germany Apartment Buildings

National price index data for the German apartment building market. Source: vdp.

Quarterly data for apartment buildings (rental buildings, "Mehrfamilienhäuser") across Germany.

Time filters:
\- start/end: flexible date values (YYYY, YYYY-MM, YYYY-MM-DD)
\- recent: number of most recent periods (quarters)

Response controls:
\- limit, fields, include: "metadata"

Key response fields:
\- preisindex: price index for apartment buildings
\- preisindex_delta_1q: quarter-over-quarter change
\- preisindex_delta_1j: year-over-year change

Input parameters:

- `end` (string): Ende des Zeitraums (YYYY, YYYY-MM oder YYYY-MM-DD)
- `fields` (string): Komma-getrennte Feldnamen
- `include` (string): metadata für Feld-Metadaten inline
- `limit` (integer): Maximale Anzahl Ergebnisse (öffentlich bis 1000)
- `recent` (integer): Anzahl der aktuellsten Perioden
- `start` (string): Beginn des Zeitraums (YYYY, YYYY-MM oder YYYY-MM-DD)

### `listings` (~419 tokens)

GUTHMANN Listings

The GUTHMANN listings: the broker's active inventory in Berlin (for sale: owner-occupier apartments, investment apartments, apartment buildings, commercial). Every card carries its exposé URL on guthmann.estate. Addresses only for released listings, otherwise ZIP/District (Ortsteil)/Borough (Bezirk).

Parameters:
\- segment: "APARTMENT_LIVING" | "APARTMENT_INVEST" | "APARTMENT_BUILDING" | "COMMERCIAL"
\- bezirk / ortsteil: name filter, e.g. "Pankow" / "Prenzlauer Berg"
\- preis_min / preis_max: purchase price in EUR
\- zimmer_min, flaeche_min: lower bounds for rooms / living area (m²)
\- locale: "de" | "en" for title, texts and exposé URL (default: en)
\- limit: 1-100 (default: 50)

Key response fields:
\- public_id (key for listing_details), titel (title), teaser, expose_url
\- kaufpreis (purchase price), kaufpreis_pro_qm (price per m²), kaltmiete (net rent), bruttorendite (gross yield), mietfaktor (price-to-rent multiple)
\- wohnflaeche (living area), anzahl_zimmer (rooms), baujahr (construction year), energie_wertklasse (energy class)
\- bezirk (Borough), ortsteil (District), plz (ZIP), adresse (null when adresse_verborgen), bild (small first-party preview image, suitable for inline display)

Input parameters:

- `bezirk` (string)
- `flaeche_min` (number)
- `limit` (integer): Maximale Anzahl Ergebnisse (öffentlich bis 1000)
- `locale` (string)
- `ortsteil` (string)
- `preis_max` (integer)
- `preis_min` (integer)
- `segment` (string)
- `zimmer_min` (number)

### `listing_details` (~134 tokens)

Listing Details

One GUTHMANN listing in detail: prices and running costs, areas, amenities, energy certificate, exposé texts, images, contact and the exposé URL on guthmann.estate. When the address is not released, street/house number are null and the coordinate is deterministically offset by 150-300 m (koordinaten_versetzt = true).

Parameters:
\- public_id: public listing id (hex, from listings or the exposé URL)
\- locale: "de" | "en" (default: en)

Input parameters:

- `locale` (string)
- `public_id` (string, required)

### `macro_ecb_policy_rates` (~170 tokens)

ECB Policy Rates

ECB key interest rates. Source: Bundesbank.

Parameters:
\- start/end: YYYY-MM-DD
\- recent: number of most recent periods
\- limit, fields, include: "metadata"

Key response fields (German names):
\- zinssatz_hauptrefinanzierungssatz: main refinancing rate (the ECB's key rate)
\- zinssatz_einlagefazilitaet: deposit facility rate
\- zinssatz_spitzenrefinanzierungsfazilitaet: marginal lending facility rate

Input parameters:

- `end` (string)
- `fields` (string)
- `include` (string)
- `limit` (integer): Maximale Anzahl Ergebnisse (öffentlich bis 1000)
- `recent` (string|number)
- `start` (string)

### `macro_mortgage_lending` (~182 tokens)

Mortgage Rates

Mortgage rates for residential housing loans. Source: Bundesbank.

Parameters:
\- start/end: YYYY-MM-DD
\- recent: number of most recent periods
\- limit, fields, include: "metadata"

Key response fields (German names):
\- zinssatz_gesamt: average rate across all fixed-interest periods
\- zinssatz_5_bis_10j: rate for 5-10 year fixed-interest periods
\- zinssatz_ueber_10j: rate for fixed-interest periods over 10 years
\- volumen_gesamt: new lending volume

Input parameters:

- `end` (string)
- `fields` (string)
- `include` (string)
- `limit` (integer): Maximale Anzahl Ergebnisse (öffentlich bis 1000)
- `recent` (string|number)
- `start` (string)

### `macro_bund_yields` (~155 tokens)

Bund Yields

Yields on German government bonds (Bunds). Source: Bundesbank.

Parameters:
\- start/end: YYYY-MM-DD
\- recent: number of most recent periods
\- limit, fields, include: "metadata"

Key response fields (German names):
\- rendite_10j: 10-year Bund yield
\- rendite_15j: 15-year Bund yield
\- rendite_30j: 30-year Bund yield

Input parameters:

- `end` (string)
- `fields` (string)
- `include` (string)
- `limit` (integer): Maximale Anzahl Ergebnisse (öffentlich bis 1000)
- `recent` (string|number)
- `start` (string)

### `macro_labor_unemployment` (~122 tokens)

Unemployment

Unemployment statistics. Source: Bundesbank.

Parameters:
\- start/end: YYYY-MM-DD
\- recent: number of most recent periods

Key response fields (German names):
\- arbeitslose: registered unemployed (seasonally adjusted)
\- arbeitslosenquote: unemployment rate (%)

Input parameters:

- `end` (string)
- `fields` (string)
- `include` (string)
- `limit` (integer): Maximale Anzahl Ergebnisse (öffentlich bis 1000)
- `recent` (string|number)
- `start` (string)

### `macro_labor_employment` (~149 tokens)

Employment

Employment statistics. Source: Bundesbank.

Parameters:
\- start/end: YYYY-MM-DD
\- recent: number of most recent periods

Key response fields (German names):
\- erwerbstaetige: persons in employment (seasonally adjusted)
\- sv_beschaeftigte: employees subject to social insurance contributions
\- geringfuegig_beschaeftigte: marginally employed (mini-jobs)

Input parameters:

- `end` (string)
- `fields` (string)
- `include` (string)
- `limit` (integer): Maximale Anzahl Ergebnisse (öffentlich bis 1000)
- `recent` (string|number)
- `start` (string)

### `macro_labor_short_time_work` (~118 tokens)

Short-Time Work

Short-time work (Kurzarbeit) statistics. Source: Bundesbank.

Parameters:
\- start/end: YYYY-MM-DD
\- recent: number of most recent periods

Key response fields (German names):
\- kurzarbeiter: short-time workers (seasonally adjusted)

Input parameters:

- `end` (string)
- `fields` (string)
- `include` (string)
- `limit` (integer): Maximale Anzahl Ergebnisse (öffentlich bis 1000)
- `recent` (string|number)
- `start` (string)

### `macro_inflation_hicp` (~178 tokens)

Inflation (HICP)

Inflation data (HICP - harmonized index of consumer prices). Source: Bundesbank.

Parameters:
\- start/end: YYYY-MM-DD
\- recent: number of most recent periods

Key response fields (German names):
\- hvpi_gesamt: overall HICP
\- hvpi_gesamt_ohne_energie_nahrungsmittel: core inflation (HICP excluding energy and food)
\- hvpi_energie, hvpi_nahrungsmittel, hvpi_dienstleistungen, hvpi_mieten: energy, food, services, rents

Input parameters:

- `end` (string)
- `fields` (string)
- `include` (string)
- `limit` (integer): Maximale Anzahl Ergebnisse (öffentlich bis 1000)
- `recent` (string|number)
- `start` (string)

### `macro_construction_prices` (~147 tokens)

Construction Prices

Construction price index for residential buildings. Source: Bundesbank.

Quarterly data (2015=100).

Parameters:
\- start/end: YYYY-MM-DD
\- recent: number of most recent periods

Key response fields (German names):
\- preisindex: construction price index
\- preisindex_delta_1q: change vs. previous quarter
\- preisindex_delta_1j: change vs. previous year

Input parameters:

- `end` (string)
- `fields` (string)
- `include` (string)
- `limit` (integer): Maximale Anzahl Ergebnisse (öffentlich bis 1000)
- `recent` (string|number)
- `start` (string)

### `macro_gdp` (~161 tokens)

GDP Data

GDP data (gross domestic product). Source: Bundesbank.

Quarterly data, price-adjusted, seasonally and calendar-adjusted (2015=100).

Parameters:
\- start/end: YYYY-MM-DD
\- recent: number of most recent periods

Key response fields (German names):
\- kettenindex: GDP chain-linked index
\- kettenindex_delta_1q: change vs. previous quarter
\- kettenindex_delta_1j: change vs. previous year

Input parameters:

- `end` (string)
- `fields` (string)
- `include` (string)
- `limit` (integer): Maximale Anzahl Ergebnisse (öffentlich bis 1000)
- `recent` (string|number)
- `start` (string)

### `field_metadata` (~216 tokens)

Field Metadata

Returns field definitions for interpreting API responses.

Use this to understand fields, units, data types, and sources.

Parameters:
\- domain (optional): specific domain for detailed field information
\- locale: "de" (default) | "en"

Available domains:
\- berlin: geographic reference data — Boroughs (Bezirke), Districts (Ortsteile), Neighborhoods (LOR Planungsräume)
\- immobilienmarkt.berlin.wohnungen: Berlin apartment market
\- immobilienmarkt.berlin.mehrfamilienhaeuser: Berlin apartment buildings
\- makrooekonomie.kapitalmarkt: mortgage lending rates, Bund yields
\- makrooekonomie.geldpolitik: ECB policy rates
\- makrooekonomie.arbeitsmarkt: unemployment, employment

Without a domain parameter: returns an overview of all available domains.

Input parameters:

- `domain` (string): Domain für Feld-Metadaten. Weglassen für Übersicht aller Domains.
- `locale` (string): Sprache für Labels und Beschreibungen (Standard: de)

### `socio_berlin_construction_activity` (~345 tokens)

Berlin Construction Activity

Construction activity data for Berlin. Source: Amt für Statistik Berlin-Brandenburg.

Shows net changes: building balance, dwelling balance, living-space balance.

Parameters:
\- rbs: "stadt" (city) | "bezirk" (Borough) | "stadtteil" | "ortsteil" (District) | "planungsraum" (Neighborhood, LOR Planungsraum)
\- bezirk_id, stadtteil_id, ortsteil_id, planungsraum_id: geographic filters
\- start/end: period (YYYY, YYYY-MM, YYYY-MM-DD)
\- recent: number of most recent periods
\- limit, fields, include: "metadata"

Key response fields:
\- gebaeude_saldo: net change in number of buildings
\- wohnungen_saldo: net change in number of dwellings
\- wohnflaeche_m2_saldo: net change in living space (m²)

Input parameters:

- `bezirk_id` (string): Bezirk-ID (2-stellig, z.B. "03")
- `end` (string): Ende (YYYY, YYYY-MM, YYYY-MM-DD)
- `fields` (string): Komma-getrennte Feldnamen
- `include` (string): metadata für Feld-Metadaten inline
- `limit` (integer): Maximale Anzahl Ergebnisse (öffentlich bis 1000)
- `ortsteil_id` (string): Ortsteil-ID (4-stellig, z.B. "0301")
- `rbs` (string)
- `recent` (integer): Anzahl der aktuellsten Perioden
- `start` (string): Beginn (YYYY, YYYY-MM, YYYY-MM-DD)

### `socio_berlin_migration_external` (~391 tokens)

Berlin External Migration

External migration for Berlin: migration across the city boundary, annual, by nationality. Source: Amt für Statistik Berlin-Brandenburg.

Parameters:
\- rbs: "stadt" (city) | "bezirk" (Borough) | "stadtteil" | "ortsteil" (District) | "planungsraum" (Neighborhood, LOR Planungsraum)
\- bezirk_id, stadtteil_id, ortsteil_id, planungsraum_id: geographic filters
\- staat_code: filter by country code (e.g. "000" for Germany)
\- alpha2: filter by ISO 3166-1 alpha-2 code (e.g. "TR")
\- start/end, recent, limit, fields, include: "metadata"

Key response fields:
\- zuzuege: move-ins to Berlin
\- fortzuege: move-outs from Berlin
\- saldo: net migration (move-ins minus move-outs)

Input parameters:

- `alpha2` (string): ISO 3166-1 Alpha-2 (z.B. "TR")
- `bezirk_id` (string): Bezirk-ID (2-stellig, z.B. "03")
- `end` (string): Ende (YYYY, YYYY-MM, YYYY-MM-DD)
- `fields` (string): Komma-getrennte Feldnamen
- `include` (string): metadata für Feld-Metadaten inline
- `limit` (integer): Maximale Anzahl Ergebnisse (öffentlich bis 1000)
- `ortsteil_id` (string): Ortsteil-ID (4-stellig, z.B. "0301")
- `rbs` (string)
- `recent` (integer): Anzahl der aktuellsten Perioden
- `staat_code` (string): Staatencode (3-stellig, z.B. "000")
- `start` (string): Beginn (YYYY, YYYY-MM, YYYY-MM-DD)

### `socio_berlin_migration_matrix` (~350 tokens)

Berlin Migration Matrix

Migration matrix for Berlin: migration flows between areas (moves within Berlin, annual). The RBS level applies to both origin and destination. Source: Amt für Statistik Berlin-Brandenburg.

Parameters:
\- rbs: "stadt" (city) | "bezirk" (Borough) | "stadtteil" | "ortsteil" (District) | "planungsraum" (Neighborhood, LOR Planungsraum) (default: bezirk)
\- von_rbs_id: filter by origin-area ID
\- nach_rbs_id: filter by destination-area ID
\- min_personen: lower bound on number of persons (default 1)
\- start/end, recent, limit, fields, include: "metadata"

Key response fields:
\- von_rbs_id/von_rbs_name: origin area
\- nach_rbs_id/nach_rbs_name: destination area
\- anzahl_personen: number of moves

Input parameters:

- `end` (string): Ende (YYYY, YYYY-MM, YYYY-MM-DD)
- `fields` (string): Komma-getrennte Feldnamen
- `include` (string): metadata für Feld-Metadaten inline
- `limit` (integer): Maximale Anzahl Ergebnisse (öffentlich bis 1000)
- `min_personen` (integer): Untere Schranke Anzahl Personen (Default 1)
- `nach_rbs_id` (string): Filter Zielraum-ID
- `rbs` (string)
- `recent` (integer): Anzahl der aktuellsten Perioden
- `start` (string): Beginn (YYYY, YYYY-MM, YYYY-MM-DD)
- `von_rbs_id` (string): Filter Herkunftsraum-ID

### `socio_berlin_population` (~384 tokens)

Berlin Population

Population stock for Berlin (headline figures) at the Neighborhood level (LOR Planungsraum), semi-annual. Source: Amt für Statistik Berlin-Brandenburg.

Parameters:
\- rbs: "stadt" (city) | "bezirk" (Borough) | "stadtteil" | "ortsteil" (District) | "planungsraum" (Neighborhood)
\- bezirk_id, stadtteil_id, ortsteil_id, planungsraum_id: geographic filters
\- start/end, recent, limit, fields, include: "metadata"

Key response fields:
\- einwohner_gesamt (total population), einwohner_maennlich/_weiblich (male/female)
\- einwohner_deutsch/_auslaendisch (German/foreign nationals), einwohner_ohne/_mit_migrationshintergrund (without/with migration background)
\- frauen_anteil, auslaender_anteil, migrationshintergrund_anteil: shares of women, foreign nationals, migration background (0–1)

Input parameters:

- `bezirk_id` (string): Bezirk-ID (2-stellig, z.B. "03")
- `end` (string): Ende (YYYY, YYYY-MM, YYYY-MM-DD)
- `fields` (string): Komma-getrennte Feldnamen
- `include` (string): metadata für Feld-Metadaten inline
- `limit` (integer): Maximale Anzahl Ergebnisse (öffentlich bis 1000)
- `ortsteil_id` (string): Ortsteil-ID (4-stellig, z.B. "0301")
- `planungsraum_id` (string): Planungsraum-ID (8-stellig)
- `rbs` (string)
- `recent` (integer): Anzahl der aktuellsten Perioden
- `start` (string): Beginn (YYYY, YYYY-MM, YYYY-MM-DD)

### `socio_berlin_age_groups` (~404 tokens)

Population by Age Group

Berlin population by 8 age groups, additionally by population group. Source: Amt für Statistik Berlin-Brandenburg.

Parameters:
\- rbs: "stadt" (city) | "bezirk" (Borough) | "stadtteil" | "ortsteil" (District) | "planungsraum" (Neighborhood, LOR Planungsraum)
\- bevoelkerungsgruppe: "alle" (all) | "mit_migrationshintergrund" (with migration background) (optional)
\- altersgruppe: age group, e.g. "alter_unter_6", "alter_65_und_mehr" (optional)
\- bezirk_id, stadtteil_id, ortsteil_id, planungsraum_id: geographic filters
\- start/end, recent, limit, fields, include: "metadata"

Key response fields:
\- bevoelkerungsgruppe_id/_name (population group), altersgruppe_id/_name (age group), anzahl_einwohner (number of residents)

Input parameters:

- `altersgruppe` (string): Altersgruppe (z.B. alter_unter_6)
- `bevoelkerungsgruppe` (string): Bevölkerungsgruppe: alle, mit_migrationshintergrund
- `bezirk_id` (string): Bezirk-ID (2-stellig, z.B. "03")
- `end` (string): Ende (YYYY, YYYY-MM, YYYY-MM-DD)
- `fields` (string): Komma-getrennte Feldnamen
- `include` (string): metadata für Feld-Metadaten inline
- `limit` (integer): Maximale Anzahl Ergebnisse (öffentlich bis 1000)
- `ortsteil_id` (string): Ortsteil-ID (4-stellig, z.B. "0301")
- `rbs` (string)
- `recent` (integer): Anzahl der aktuellsten Perioden
- `start` (string): Beginn (YYYY, YYYY-MM, YYYY-MM-DD)

### `socio_berlin_origin` (~508 tokens)

Population by Origin

Berlin population with a migration background, by area of origin. Source: Amt für Statistik Berlin-Brandenburg.

⚠️ herkunft_ebene: "eu_gesamt" is the aggregate over the individual "eu_land" entries. The default (drittland,eu_gesamt,nicht_zuordenbar) prevents double-counting EU countries.

Parameters:
\- rbs: "stadt" (city) | "bezirk" (Borough) | "stadtteil" | "ortsteil" (District) | "planungsraum" (Neighborhood, LOR Planungsraum)
\- herkunft_ebene: origin level, comma-separated, e.g. "drittland,eu_gesamt" (optional; default prevents double counting)
\- herkunftsgebiet: area of origin, e.g. "tuerkei", "ukraine", "eu" (optional)
\- top: top N areas of origin by count (optional)
\- bezirk_id, stadtteil_id, ortsteil_id, planungsraum_id: geographic filters
\- start/end, recent, limit, fields, include: "metadata"

Key response fields:
\- herkunftsgebiet_id/_name (area of origin), herkunft_ebene (origin level), anzahl_einwohner_mit_migrationshintergrund (residents with a migration background)

Input parameters:

- `bezirk_id` (string): Bezirk-ID (2-stellig, z.B. "03")
- `end` (string): Ende (YYYY, YYYY-MM, YYYY-MM-DD)
- `fields` (string): Komma-getrennte Feldnamen
- `herkunftsgebiet` (string): Herkunftsgebiet (z.B. tuerkei, ukraine, eu)
- `include` (string): metadata für Feld-Metadaten inline
- `limit` (integer): Maximale Anzahl Ergebnisse (öffentlich bis 1000)
- `ortsteil_id` (string): Ortsteil-ID (4-stellig, z.B. "0301")
- `planungsraum_id` (string): Planungsraum-ID (8-stellig)
- `rbs` (string)
- `recent` (integer): Anzahl der aktuellsten Perioden
- `stadtteil_id` (string): Stadtteil-ID (2-stellig)
- `start` (string): Beginn (YYYY, YYYY-MM, YYYY-MM-DD)
- `top` (integer): Top-N Herkunftsgebiete nach Anzahl

### `socio_berlin_census_dwellings` (~402 tokens)

Census Dwelling Stock

Zensus 2022 dwelling stock data for Berlin. Source: Statistisches Bundesamt, Zensus 2022.

Without a category: total number of dwellings.
With a category:
\- raeume: breakdown by number of rooms
\- flaeche: breakdown by floor-area cluster (under 40 m², 40-59 m², etc.)
\- nutzung: breakdown by type of use (owner-occupied, rented, vacant)

Parameters:
\- rbs: "stadt" (city) | "bezirk" (Borough) | "stadtteil" | "ortsteil" (District) | "planungsraum" (Neighborhood, LOR Planungsraum)
\- kategorie: "raeume" | "flaeche" | "nutzung" (optional)
\- bezirk_id, stadtteil_id, ortsteil_id, planungsraum_id: geographic filters
\- start/end, recent, limit, fields, include: "metadata"

Input parameters:

- `bezirk_id` (string): Bezirk-ID (2-stellig, z.B. "03")
- `end` (string): Ende (YYYY, YYYY-MM, YYYY-MM-DD)
- `fields` (string): Komma-getrennte Feldnamen
- `include` (string): metadata für Feld-Metadaten inline
- `kategorie` (string): Kategorie: raeume, flaeche, nutzung
- `limit` (integer): Maximale Anzahl Ergebnisse (öffentlich bis 1000)
- `ortsteil_id` (string): Ortsteil-ID (4-stellig, z.B. "0301")
- `planungsraum_id` (string): Planungsraum-ID (8-stellig)
- `rbs` (string)
- `recent` (integer): Anzahl der aktuellsten Perioden
- `start` (string): Beginn (YYYY, YYYY-MM, YYYY-MM-DD)

### `socio_berlin_census_vacancy` (~341 tokens)

Census Dwelling Vacancy

Zensus 2022 dwelling vacancy data for Berlin. Source: Statistisches Bundesamt, Zensus 2022.

Breakdown by vacancy category (duration or reason).

Parameters:
\- rbs: "stadt" (city) | "bezirk" (Borough) | "stadtteil" | "ortsteil" (District) | "planungsraum" (Neighborhood, LOR Planungsraum)
\- kategorie: "dauer" (duration) | "grund" (reason) (optional)
\- bezirk_id, stadtteil_id, ortsteil_id, planungsraum_id: geographic filters
\- start/end, recent, limit, fields, include: "metadata"

Key response fields:
\- kategorie_id, kategorie_label: vacancy category
\- anzahl: number of vacant dwellings

Input parameters:

- `bezirk_id` (string): Bezirk-ID (2-stellig, z.B. "03")
- `end` (string): Ende (YYYY, YYYY-MM, YYYY-MM-DD)
- `fields` (string): Komma-getrennte Feldnamen
- `include` (string): metadata für Feld-Metadaten inline
- `kategorie` (string): Kategorie: dauer, grund
- `limit` (integer): Maximale Anzahl Ergebnisse (öffentlich bis 1000)
- `ortsteil_id` (string): Ortsteil-ID (4-stellig, z.B. "0301")
- `rbs` (string)
- `recent` (integer): Anzahl der aktuellsten Perioden
- `start` (string): Beginn (YYYY, YYYY-MM, YYYY-MM-DD)

### `socio_berlin_census_rents` (~391 tokens)

Census Rents

Zensus 2022 rent data for Berlin. Source: Statistisches Bundesamt, Zensus 2022.

Without a category: weighted average across all dwellings (net cold rent, net cold rent per m², count).
With category "flaeche": rent per m² by floor-area cluster.

Parameters:
\- rbs: "stadt" (city) | "bezirk" (Borough) | "stadtteil" | "ortsteil" (District) | "planungsraum" (Neighborhood, LOR Planungsraum)
\- kategorie: "flaeche" (optional)
\- bezirk_id, stadtteil_id, ortsteil_id, planungsraum_id: geographic filters
\- start/end, recent, limit, fields, include: "metadata"

Key response fields:
\- nettokaltmiete: average net cold rent (EUR)
\- nettokaltmiete_m2: net cold rent per m² (EUR)
\- anzahl_wohnungen: number of dwellings

Input parameters:

- `bezirk_id` (string): Bezirk-ID (2-stellig, z.B. "03")
- `end` (string): Ende (YYYY, YYYY-MM, YYYY-MM-DD)
- `fields` (string): Komma-getrennte Feldnamen
- `include` (string): metadata für Feld-Metadaten inline
- `kategorie` (string): Kategorie: flaeche. Ohne: Gesamtdurchschnitt
- `limit` (integer): Maximale Anzahl Ergebnisse (öffentlich bis 1000)
- `ortsteil_id` (string): Ortsteil-ID (4-stellig, z.B. "0301")
- `rbs` (string)
- `recent` (integer): Anzahl der aktuellsten Perioden
- `start` (string): Beginn (YYYY, YYYY-MM, YYYY-MM-DD)

### `socio_berlin_census_buildings` (~413 tokens)

Census Buildings

Zensus 2022 building data for Berlin. Source: Statistisches Bundesamt, Zensus 2022.

Without a category: total number of buildings.
With a category:
\- bauweise: construction type (detached, row house, semi-detached)
\- eigentumsform: ownership type (private individual, cooperative, municipality)
\- heizungsart: heating type (central heating, per-floor heating, individual stoves)
\- energietraeger: energy source (gas, oil, district heating, electricity)

Parameters:
\- rbs: "stadt" (city) | "bezirk" (Borough) | "stadtteil" | "ortsteil" (District) | "planungsraum" (Neighborhood, LOR Planungsraum)
\- kategorie: "bauweise" | "eigentumsform" | "heizungsart" | "energietraeger" (optional)
\- bezirk_id, stadtteil_id, ortsteil_id, planungsraum_id: geographic filters
\- start/end, recent, limit, fields, include: "metadata"

Input parameters:

- `bezirk_id` (string): Bezirk-ID (2-stellig, z.B. "03")
- `end` (string): Ende (YYYY, YYYY-MM, YYYY-MM-DD)
- `fields` (string): Komma-getrennte Feldnamen
- `include` (string): metadata für Feld-Metadaten inline
- `kategorie` (string): Kategorie: bauweise, eigentumsform, heizungsart, energietraeger
- `limit` (integer): Maximale Anzahl Ergebnisse (öffentlich bis 1000)
- `ortsteil_id` (string): Ortsteil-ID (4-stellig, z.B. "0301")
- `rbs` (string)
- `recent` (integer): Anzahl der aktuellsten Perioden
- `start` (string): Beginn (YYYY, YYYY-MM, YYYY-MM-DD)

### `socio_berlin_census_households` (~354 tokens)

Census Households

Zensus 2022 household data for Berlin. Source: Statistisches Bundesamt, Zensus 2022.

Without a category: total number of households.
With a category:
\- groesse: household size (1 person, 2 persons, etc.)
\- wohndauer: length of residence (under 1 year, 1-5 years, etc.)

Parameters:
\- rbs: "stadt" (city) | "bezirk" (Borough) | "stadtteil" | "ortsteil" (District) | "planungsraum" (Neighborhood, LOR Planungsraum)
\- kategorie: "groesse" | "wohndauer" (optional)
\- bezirk_id, stadtteil_id, ortsteil_id, planungsraum_id: geographic filters
\- start/end, recent, limit, fields, include: "metadata"

Input parameters:

- `bezirk_id` (string): Bezirk-ID (2-stellig, z.B. "03")
- `end` (string): Ende (YYYY, YYYY-MM, YYYY-MM-DD)
- `fields` (string): Komma-getrennte Feldnamen
- `include` (string): metadata für Feld-Metadaten inline
- `kategorie` (string): Kategorie: groesse, wohndauer
- `limit` (integer): Maximale Anzahl Ergebnisse (öffentlich bis 1000)
- `ortsteil_id` (string): Ortsteil-ID (4-stellig, z.B. "0301")
- `rbs` (string)
- `recent` (integer): Anzahl der aktuellsten Perioden
- `start` (string): Beginn (YYYY, YYYY-MM, YYYY-MM-DD)

### `search` (~290 tokens)

Search guthmann.estate

Semantic search over guthmann.estate — market insights, reports, neighborhood portraits, listing exposés, project pages and the company's own pages. Hybrid retrieval (vector + keyword, no reranking); one result per page with title, description, image, best-matching snippet and score. Use it for questions that need prose (analysis, context, advice); use the data tools for exact numbers and `listings` for what is currently for sale — the search index follows the website with up to six hours of delay.

Parameters:
\- q: natural-language query, in the language of the pages you want (min 2 characters)
\- locale: "de" | "en" — language of the indexed pages (default: en)
\- section: comma-separated filter — "listings" (exposés), "projects" (new-build projects), "market-intelligence" (insights, reports, portraits), "pages" (company, services, guides); omit for all
\- limit: 1-20 pages (default: 10)

Key response fields:
\- url, title, description, image, section, language
\- snippet (best-matching text passage), score (0-1)

Input parameters:

- `limit` (integer): Maximale Anzahl Ergebnisse (öffentlich bis 20)
- `locale` (string)
- `q` (string, required)
- `section` (string)

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/estate-guthmann-mcp/mcp#diagnostics

## Score history

- 2026-09-27: 71
- 2026-09-26: 71
- 2026-09-25: 71
- 2026-09-24: 71
- 2026-09-23: 71
- 2026-09-22: 71
- 2026-09-21: 71
- 2026-09-20: 71
- 2026-09-19: 71
- 2026-09-18: 71
- 2026-09-17: 71
- 2026-09-16: 71
- 2026-09-15: 71
- 2026-09-14: 71
- 2026-09-13: 71
- 2026-09-12: 71
- 2026-09-11: 71
- 2026-09-10: 71
- 2026-09-09: 71
- 2026-09-08: 71
- 2026-09-07: 71
- 2026-09-06: 71
- 2026-09-05: 71
- 2026-09-04: 71
- 2026-09-03: 71
- 2026-09-02: 71
- 2026-09-01: 70

## Common questions

### What is the GUTHMANN® Berlin Real Estate MCP server?

GUTHMANN® Berlin Real Estate is an MCP server listed in the public MCP registry as estate.guthmann/mcp. Berlin real estate for AI agents: granular market data and property search, free, by GUTHMANN®. This page covers its hosted endpoint (https://mcp.guthmann.estate/mcp).

### Is the GUTHMANN® Berlin Real Estate MCP server safe to use?

GUTHMANN® Berlin Real Estate scores 71 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the GUTHMANN® Berlin Real Estate MCP server expose?

GUTHMANN® Berlin Real Estate exposes 37 tools: berlin_boroughs, berlin_borough_details, berlin_districts, berlin_district_details, berlin_neighborhoods, and 32 more. Their descriptions and schemas cost roughly 9,657 tokens of context every time the server is loaded.

### Does the GUTHMANN® Berlin Real Estate MCP server require authentication?

No. We connected to GUTHMANN® Berlin Real Estate without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

### Is the GUTHMANN® Berlin Real Estate MCP server still maintained?

GUTHMANN® Berlin Real Estate is still listed as active in the MCP registry. We last reached this channel on 27 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

## Links

- Remote endpoint: https://mcp.guthmann.estate/mcp
- Repository: https://github.com/GuthmannEstate/mcp
- Website: https://guthmann.estate/en/market-intelligence/
- Changelog RSS feed: https://verifymcp.io/servers/estate-guthmann-mcp/mcp.xml
- Changelog JSON feed: https://verifymcp.io/servers/estate-guthmann-mcp/mcp.json
- HTML version of this page: https://verifymcp.io/servers/estate-guthmann-mcp/mcp
