Koskamo

Huisly MCP

A public, read-only MCP server providing access to Dutch rental and sale property listings, CBS area statistics, and housing guides. It allows agents to search for homes by location and filters, retrieve detailed property facts including energy labels, resolve place names, and access curated guides on renting and buying in the Netherlands without requiring authentication.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

Huisly MCP logo, by HuislyVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-07Operated by Huisly
MCP endpoint (Streamable HTTP)
https://mcp.huisly.nl/mcp
Vendor documentation

What its tools do

7 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

7 of 7 have a description · 7 of 7 declare behavior hints · 2 of 7 with parameters document them all

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Passed Official MCP Registry namespace is tied to huisly.nl ·
  • Passed Endpoint is on the registry namespace domain ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Search for rental or sale listings in specific Dutch locations with filters
  • Retrieve detailed property facts and energy labels for a specific address
  • Get CBS area statistics for municipalities, districts, or neighborhoods
  • Access Huisly's housing guides on renting, buying, and moving

Source and maintenance

Vendor evidenceRegistry 1.1.0

Protocol and capabilities

Server
huisly 1.1.0
MCP protocol negotiated in check
2025-11-25
Tools
7 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": true
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

Huisly indexes Dutch rental and for-sale listings from thousands of housing websites, plus CBS area figures and Huisly's own housing guides. All tools are read-only and return facts with a link to huisly.nl and the source websites. Use resolve_place to turn a place name into a slug, search_listings to find homes, get_property for one home, get_place_insights for area statistics, and search_guides/get_guide for practical guides. For new-listing alerts, get_new_listings takes the search_token from search_listings, for example in a scheduled task the user sets up.

Tools

7 advertised

resolve_place — Find a Dutch place
Advertised by the server during the last successful anonymous check.
Advertised read-only

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).

resolve_place input schema
{
  "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
}
resolve_place annotations
{
  "title": "Find a Dutch place",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
search_listings — Search homes for rent or sale
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

search_listings input schema
{
  "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
}
search_listings annotations
{
  "title": "Search homes for rent or sale",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_property — Get one home's facts
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

get_property input schema
{
  "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
}
get_property annotations
{
  "title": "Get one home's facts",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_place_insights — Get area statistics
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

get_place_insights input schema
{
  "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_place_insights annotations
{
  "title": "Get area statistics",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
search_guides — Search Huisly housing guides
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

search_guides input schema
{
  "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_guides annotations
{
  "title": "Search Huisly housing guides",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_guide — Read a Huisly guide
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

get_guide input schema
{
  "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
}
get_guide annotations
{
  "title": "Read a Huisly guide",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_new_listings — Check a saved search for new homes
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

get_new_listings input schema
{
  "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_new_listings annotations
{
  "title": "Check a saved search for new homes",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

90-day uptime

A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.

Too few checks for a percentage yet (1 of 1 answered).

  1. 2026-11-07: 1 of 1 checks answered

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
1057 ms
95th percentile latency
1057 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 1057 ms · metadata changed · 7 tool(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http huisly-mcp https://mcp.huisly.nl/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add huisly-mcp --url https://mcp.huisly.nl/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable huisly-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "huisly-mcp": {
      "url": "https://mcp.huisly.nl/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "huisly-mcp": {
      "type": "streamableHttp",
      "url": "https://mcp.huisly.nl/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start huisly-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "huisly-mcp": {
      "type": "http",
      "url": "https://mcp.huisly.nl/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http huisly-mcp https://mcp.huisly.nl/mcp

Claude Desktop

Open Claude Settings > Connectors > Add custom connector, enter this server URL and enable it for the conversation. This is a manual remote-connector handoff, not a desktop JSON configuration.
Claude Desktop configuration
https://mcp.huisly.nl/mcp

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "huisly-mcp": {
      "serverUrl": "https://mcp.huisly.nl/mcp"
    }
  }
}

Let your agent find its tools

Find servers like Huisly MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.

Do you run Huisly MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing