CasaNest
Search public property listings in Portugal, compare homes and read INE housing statistics.
Should I use this
Quality & Safety
Findings (1)
- LOWin compare_properties
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"catalogue": {
"url": "https://casanest.eu/mcp"
}
}
}Remote endpoints
https://casanest.eu/mcpstreamable-httpWhat it can do
Tool inventory
Tools (4)
🟢search_properties(purpose, district, municipality, property_type, typology, ...)
Search currently published properties in Portugal by exact structured filters. Requires purpose; municipality requires district. Rental budgets require month/week/night. Up to 20 results, cursor tied to filters. No results means no matches; do not widen filters without asking.
Input Schema
{
"type": "object",
"properties": {
"purpose": {
"type": "string",
"enum": [
"sale",
"rent",
"vacation",
"exchange"
]
},
"district": {
"description": "Portuguese district slug, e.g. leiria. Does not mean municipality.",
"type": "string",
"minLength": 1,
"maxLength": 160,
"pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$"
},
"municipality": {
"description": "Municipality slug; requires its district, e.g. district=leiria, municipality=leiria.",
"type": "string",
"minLength": 1,
"maxLength": 160,
"pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$"
},
"property_type": {
"type": "string",
"enum": [
"apartment",
"room",
"house",
"land",
"shop",
"office",
"warehouse",
"garage",
"building",
"farm",
"other"
]
},
"typology": {
"type": "string",
"enum": [
"t0",
"t1",
"t2",
"t3",
"t4",
"t5",
"t6plus"
]
},
"price_min": {
"type": "number",
"minimum": 0,
"maximum": 10000000000
},
"price_max": {
"type": "number",
"minimum": 0,
"maximum": 10000000000
},
"rent_period": {
"description": "Required with a rent/vacation budget: prices in different periods are not comparable.",
"type": "string",
"enum": [
"month",
"week",
"night"
]
},
"bedrooms_min": {
"type": "integer",
"minimum": 0,
"maximum": 100
},
"net_area_min": {
"type": "number",
"minimum": 0,
"maximum": 10000000
},
"features": {
"maxItems": 18,
"type": "array",
"items": {
"type": "string",
"enum": [
"elevator",
"balcony",
"terrace",
"garage",
"pool",
"garden",
"airConditioning",
"storageRoom",
"alarm",
"security",
"gatedCommunity",
"centralHeating",
"fireplace",
"jacuzzi",
"soundSystem",
"wineCellar",
"furnished",
"accessibility"
]
}
},
"locale": {
"default": "pt",
"type": "string",
"enum": [
"pt",
"en"
]
},
"limit": {
"default": 10,
"type": "integer",
"minimum": 1,
"maximum": 20
},
"cursor": {
"type": "string",
"maxLength": 240,
"pattern": "^[A-Za-z0-9_-]+$"
}
},
"required": [
"purpose"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}🟢get_property(id, locale)
Get current public details using the public id returned by search_properties. Draft, archived, sold, removed or unknown properties return not found. No private owner/contact/CRM data.
Input Schema
{
"type": "object",
"properties": {
"id": {
"type": "string",
"pattern": "^[1-9][0-9]{0,9}$"
},
"locale": {
"default": "pt",
"type": "string",
"enum": [
"pt",
"en"
]
}
},
"required": [
"id"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}🟢compare_properties(ids, locale)
Compare 2–4 distinct public property IDs using the same fields and explicit EUR/period/m2 units. Null is unknown. Fails if any requested property is no longer public.
Input Schema
{
"type": "object",
"properties": {
"ids": {
"minItems": 2,
"maxItems": 4,
"type": "array",
"items": {
"type": "string",
"pattern": "^[1-9][0-9]{0,9}$"
}
},
"locale": {
"default": "pt",
"type": "string",
"enum": [
"pt",
"en"
]
}
},
"required": [
"ids"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}🟢get_area_statistics(district, municipality, locale)
Read INE median completed dwelling sale value per m2 for a Portuguese municipality, with period, source and license. Not asking prices, rents, a valuation or forecast. Requires both district and municipality slugs.
Input Schema
{
"type": "object",
"properties": {
"district": {
"type": "string",
"minLength": 1,
"maxLength": 160,
"pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$"
},
"municipality": {
"type": "string",
"minLength": 1,
"maxLength": 160,
"pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$"
},
"locale": {
"default": "pt",
"type": "string",
"enum": [
"pt",
"en"
]
}
},
"required": [
"district",
"municipality"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}Community
Evidence