Dutch rental and for-sale listings, CBS area figures and Huisly's housing guides, read-only.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Get one Huisly guide by slug (from search_guides): its summary, outline, a short excerpt, its FAQs and the official sources it cites, with a link to the full article on huisly.nl.
Language of huisly.nl links and of area-figure labels: en (default) or nl
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http huisly https://mcp.huisly.nl/mcp
Get one Huisly guide by slug (from search_guides): its summary, outline, a short excerpt, its FAQs and the official sources it cites, with a link to the full article on huisly.nl.
| Argument | Type | Description |
|---|---|---|
| kind | string | |
| slug* | string | |
| language | string | Language of huisly.nl links and of area-figure labels: en (default) or nl |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"slug"
],
"properties": {
"kind": {
"enum": [
"blog",
"moving_guide"
],
"type": "string"
},
"slug": {
"type": "string",
"pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
"maxLength": 160,
"minLength": 1
},
"language": {
"enum": [
"en",
"nl"
],
"type": "string",
"default": "en",
"description": "Language of huisly.nl links and of area-figure labels: en (default) or nl"
}
},
"additionalProperties": false
}Return only the listings first seen by Huisly within the last window_hours (at most 168, one week) for a search_token from search_listings, or say explicitly that there are none. Built for scheduled checks that the user sets up, for example daily or every few hours. Each call returns a refreshed search_token; a token unused for 30 days expires.
| Argument | Type | Description |
|---|---|---|
| language | string | Language of huisly.nl links and of area-figure labels: en (default) or nl |
| search_token* | string | The search_token from search_listings or an earlier get_new_listings call |
| window_hours | integer | How far back to look, in hours (1 to 168); match it to how often you check |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"search_token"
],
"properties": {
"language": {
"enum": [
"en",
"nl"
],
"type": "string",
"default": "en",
"description": "Language of huisly.nl links and of area-figure labels: en (default) or nl"
},
"search_token": {
"type": "string",
"maxLength": 2048,
"minLength": 20,
"description": "The search_token from search_listings or an earlier get_new_listings call"
},
"window_hours": {
"type": "integer",
"default": 24,
"maximum": 168,
"minimum": 1,
"description": "How far back to look, in hours (1 to 168); match it to how often you check"
}
},
"additionalProperties": false
}Get neutral CBS (Statistics Netherlands) figures for a Dutch municipality, district or neighbourhood: headline figures and a few per category (housing, population, income, energy, nearby amenities and more), each with its period and the comparison with the wider area and the Netherlands, plus source attribution. Huisly does not score or rank areas. Pass a place name, or type and slug from resolve_place.
| Argument | Type | Description |
|---|---|---|
| slug | string | |
| type | string | |
| place | string | A municipality, district or neighbourhood name |
| language | string | Language of huisly.nl links and of area-figure labels: en (default) or nl |
| categories | array | Only these categories, with more figures each |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"slug": {
"type": "string",
"pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
"maxLength": 160,
"minLength": 1
},
"type": {
"enum": [
"municipality",
"district",
"neighborhood"
],
"type": "string"
},
"place": {
"type": "string",
"maxLength": 100,
"minLength": 2,
"description": "A municipality, district or neighbourhood name"
},
"language": {
"enum": [
"en",
"nl"
],
"type": "string",
"default": "en",
"description": "Language of huisly.nl links and of area-figure labels: en (default) or nl"
},
"categories": {
"type": "array",
"items": {
"enum": [
"housing",
"population",
"households",
"income",
"work",
"benefits",
"education",
"energy",
"energyLabels",
"care",
"nearby",
"business",
"transport",
"area"
],
"type": "string"
},
"maxItems": 14,
"minItems": 1,
"description": "Only these categories, with more figures each"
}
},
"additionalProperties": false
}Get the facts of one Dutch home: address, size, building, its current listings with links to every source website (where to apply, rent or buy), a listing-history summary, and the energy label registered in EP-Online (RVO). Pass property_slug from search_listings or resolve_place, or listing_id for a listing without a property page.
| Argument | Type | Description |
|---|---|---|
| language | string | Language of huisly.nl links and of area-figure labels: en (default) or nl |
| listing_id | string | |
| property_slug | string |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"language": {
"enum": [
"en",
"nl"
],
"type": "string",
"default": "en",
"description": "Language of huisly.nl links and of area-figure labels: en (default) or nl"
},
"listing_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"property_slug": {
"type": "string",
"pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
"maxLength": 160,
"minLength": 1
}
},
"additionalProperties": false
}Look up a Dutch municipality, town, district, neighbourhood, postcode, street or address by name and get its Huisly slug. Use the slug with search_listings (location), get_place_insights (type and slug) or, for an address, get_property (property_slug).
| Argument | Type | Description |
|---|---|---|
| query* | string | A place name, postcode or address, e.g. 'Utrecht', '1012 AB' or 'Damrak 1 Amsterdam' |
| language | string | Language of huisly.nl links and of area-figure labels: en (default) or nl |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"query"
],
"properties": {
"query": {
"type": "string",
"maxLength": 100,
"minLength": 2,
"description": "A place name, postcode or address, e.g. 'Utrecht', '1012 AB' or 'Damrak 1 Amsterdam'"
},
"language": {
"enum": [
"en",
"nl"
],
"type": "string",
"default": "en",
"description": "Language of huisly.nl links and of area-figure labels: en (default) or nl"
}
},
"additionalProperties": false
}Search Huisly's own guides on renting, buying and moving in the Netherlands (for example rental contracts, deposits, rent rules, transfer tax, mortgages, registration, and city moving guides). Returns summaries with links; use get_guide for the outline, FAQs and official sources of one guide.
| Argument | Type | Description |
|---|---|---|
| limit | integer | |
| query* | string | What the guide should be about |
| language | string | Language of huisly.nl links and of area-figure labels: en (default) or nl |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"query"
],
"properties": {
"limit": {
"type": "integer",
"default": 5,
"maximum": 5,
"minimum": 1
},
"query": {
"type": "string",
"maxLength": 100,
"minLength": 2,
"description": "What the guide should be about"
},
"language": {
"enum": [
"en",
"nl"
],
"type": "string",
"default": "en",
"description": "Language of huisly.nl links and of area-figure labels: en (default) or nl"
}
},
"additionalProperties": false
}Search current Dutch rental or for-sale listings in one place with optional price, size, room and property-type filters. Returns at most 10 listings (facts only, newest first unless sorted by price), the total number of matches, a link to the full results on huisly.nl, and a search_token. Pass the search_token to get_new_listings later to see only new matches, for example in a scheduled task the user sets up.
| Argument | Type | Description |
|---|---|---|
| sort | string | |
| limit | integer | |
| place | string | A place name such as 'Utrecht' or 'Amsterdam-Noord'; or give location instead |
| language | string | Language of huisly.nl links and of area-figure labels: en (default) or nl |
| location | object | A place from resolve_place: its type and slug |
| max_price | integer | Maximum price in euros (monthly rent for rentals) |
| min_price | integer | Minimum price in euros (monthly rent for rentals) |
| min_rooms | integer | |
We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 4, 2026.
| listing_type* |
| string |
| rent or buy |
| min_bedrooms | integer |
| property_types | array |
| max_living_area | integer | Maximum living area in m² |
| min_living_area | integer | Minimum living area in m² |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"listing_type"
],
"properties": {
"sort": {
"enum": [
"newest",
"price_low",
"price_high"
],
"type": "string",
"default": "newest"
},
"limit": {
"type": "integer",
"default": 10,
"maximum": 10,
"minimum": 1
},
"place": {
"type": "string",
"maxLength": 100,
"minLength": 2,
"description": "A place name such as 'Utrecht' or 'Amsterdam-Noord'; or give location instead"
},
"language": {
"enum": [
"en",
"nl"
],
"type": "string",
"default": "en",
"description": "Language of huisly.nl links and of area-figure labels: en (default) or nl"
},
"location": {
"type": "object",
"required": [
"type",
"slug"
],
"properties": {
"name": {
"type": "string",
"maxLength": 200,
"description": "Ignored: the place's name always comes from Huisly's own data"
},
"slug": {
"type": "string",
"pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
"maxLength": 160,
"minLength": 1
},
"type": {
"enum": [
"municipality",
"locality",
"district",
"neighborhood",
"postal-code",
"public-space"
],
"type": "string"
}
},
"description": "A place from resolve_place: its type and slug",
"additionalProperties": false
},
"max_price": {
"type": "integer",
"maximum": 50000000,
"minimum": 0,
"description": "Maximum price in euros (monthly rent for rentals)"
},
"min_price": {
"type": "integer",
"maximum": 50000000,
"minimum": 0,
"description": "Minimum price in euros (monthly rent for rentals)"
},
"min_rooms": {
"type": "integer",
"maximum": 30,
"minimum": 0
},
"listing_type": {
"enum": [
"rent",
"buy"
],
"type": "string",
"description": "rent or buy"
},
"min_bedrooms": {
"type": "integer",
"maximum": 30,
"minimum": 0
},
"property_types": {
"type": "array",
"items": {
"enum": [
"apartment",
"house",
"room",
"studio",
"land",
"storage",
"parking",
"boat",
"commercial"
],
"type": "string"
},
"maxItems": 9,
"minItems": 1
},
"max_living_area": {
"type": "integer",
"maximum": 100000,
"minimum": 0,
"description": "Maximum living area in m²"
},
"min_living_area": {
"type": "integer",
"maximum": 100000,
"minimum": 0,
"description": "Minimum living area in m²"
}
},
"additionalProperties": false
}