Search public property listings in Portugal, compare homes and read INE housing statistics.
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.
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.
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.
| Argument | Type | Description |
|---|---|---|
| ids* | array | |
| locale | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"ids"
],
"properties": {
"ids": {
"type": "array",
"items": {
"type": "string",
"pattern": "^[1-9][0-9]{0,9}$"
},
"maxItems": 4,
"minItems": 2
},
"locale": {
"enum": [
"pt",
"en"
],
"type": "string",
"default": "pt"
}
},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| locale | string | |
| district* | string | |
| municipality* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"district",
"municipality"
],
"properties": {
"locale": {
"enum": [
"pt",
"en"
],
"type": "string",
"default": "pt"
},
"district": {
"type": "string",
"pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
"maxLength": 160,
"minLength": 1
},
"municipality": {
"type": "string",
"pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
"maxLength": 160,
"minLength": 1
}
},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| id* | string | |
| locale | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"pattern": "^[1-9][0-9]{0,9}$"
},
"locale": {
"enum": [
"pt",
"en"
],
"type": "string",
"default": "pt"
}
},
"additionalProperties": false
}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 listing matches these filters.
| Argument | Type | Description |
|---|---|---|
| limit | integer | |
| cursor | string | |
| locale | string | |
| purpose* | string | |
| district | string | Portuguese district slug, e.g. leiria. Does not mean municipality. |
| features | array | |
| typology | string | |
| price_max | number | |
| price_min | number | |
| rent_period | string | Required with a rent/vacation budget: prices in different periods are not comparable. |
| bedrooms_min | integer |
| municipality | string | Municipality slug; requires its district, e.g. district=leiria, municipality=leiria. |
| net_area_min | number |
| property_type | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"purpose"
],
"properties": {
"limit": {
"type": "integer",
"default": 10,
"maximum": 20,
"minimum": 1
},
"cursor": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]+$",
"maxLength": 240
},
"locale": {
"enum": [
"pt",
"en"
],
"type": "string",
"default": "pt"
},
"purpose": {
"enum": [
"sale",
"rent",
"vacation",
"exchange"
],
"type": "string"
},
"district": {
"type": "string",
"pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
"maxLength": 160,
"minLength": 1,
"description": "Portuguese district slug, e.g. leiria. Does not mean municipality."
},
"features": {
"type": "array",
"items": {
"enum": [
"elevator",
"balcony",
"terrace",
"garage",
"pool",
"garden",
"airConditioning",
"storageRoom",
"alarm",
"security",
"gatedCommunity",
"centralHeating",
"fireplace",
"jacuzzi",
"soundSystem",
"wineCellar",
"furnished",
"accessibility"
],
"type": "string"
},
"maxItems": 18
},
"typology": {
"enum": [
"t0",
"t1",
"t2",
"t3",
"t4",
"t5",
"t6plus"
],
"type": "string"
},
"price_max": {
"type": "number",
"maximum": 10000000000,
"minimum": 0
},
"price_min": {
"type": "number",
"maximum": 10000000000,
"minimum": 0
},
"rent_period": {
"enum": [
"month",
"week",
"night"
],
"type": "string",
"description": "Required with a rent/vacation budget: prices in different periods are not comparable."
},
"bedrooms_min": {
"type": "integer",
"maximum": 100,
"minimum": 0
},
"municipality": {
"type": "string",
"pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
"maxLength": 160,
"minLength": 1,
"description": "Municipality slug; requires its district, e.g. district=leiria, municipality=leiria."
},
"net_area_min": {
"type": "number",
"maximum": 10000000,
"minimum": 0
},
"property_type": {
"enum": [
"apartment",
"room",
"house",
"land",
"shop",
"office",
"warehouse",
"garage",
"building",
"farm",
"other"
],
"type": "string"
}
},
"additionalProperties": false
}