CasaNest

Search public property listings in Portugal, compare homes and read INE housing statistics.

Should I use this

Quality & Safety

A
Description quality
93%
Schema completeness
81%
Naming quality
95%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Findings (1)

  • LOWTool 'compare_properties' description lacks action verbin compare_properties

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,112Tokens (tool definitions)
~2.0 KBTypical response size
Moderate attention impact (0.87% of 128k context)

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-http

What it can do

Tool inventory

Tools (4)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢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 listing matches these filters.

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

Rate this Server

Evidence

Recent observations

verifiedversion not recorded4 tools
verifiedversion not recorded4 tools
verifiedversion not recorded4 tools
verifiedversion not recorded4 tools
verifiedversion not recorded4 tools
verifiedversion not recorded4 tools