minha-morada
Server Details
Portugal real estate search — 224,000+ listings, commute times and market prices
- Status
- Unhealthy
- Last Tested
- Transport
- Streamable HTTP
- URL
TDQS
Scored across 6 tools
Each tool targets a clearly distinct step in the property workflow: searching, viewing details, getting the listing contact, checking market stats, estimating commutes, and requesting a local advisor. The two contact-related tools are separated by explicit intent conditions (outbound listing link vs. advisor follow-up), so an agent should be able to select correctly.
Five of six tools follow an imperative verb_noun pattern in snake_case (search_properties, get_property, calculate_commute, request_agent_contact). 'market_stats' is a noun phrase and would fit better as 'get_market_stats', a minor inconsistency.
Six tools is a well-scoped size for a real-estate assistant. Each tool serves a necessary part of the user journey without redundancy or bloat.
The tool set covers the core buyer workflow end to end: search, full details, contact/agency link, and advisor request, plus useful pre-search helpers like market stats and commute estimates. There are no obvious dead ends for the stated Portuguese property-search purpose.
Available Tools
6 toolscalculate_commuteARead-onlyIdempotentInspect
Calculate estimated commute time between two points or between a property and a location. Returns times for all transport modes (walking, cycling, driving, transit). Based on straight-line distance with typical speeds.
| Name | Required | Description | Default |
|---|---|---|---|
| to_lat | Yes | Destination latitude | |
| to_lng | Yes | Destination longitude | |
| from_lat | No | Starting latitude (used if property_id not provided) | |
| from_lng | No | Starting longitude (used if property_id not provided) | |
| to_label | No | Human-readable name for the destination (e.g., 'Lisbon Airport') | |
| property_id | No | The property's minhamorada.pt code (e.g. mm-a7f3b2c9), as returned by search_properties. Alternative to from_lat/from_lng. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description goes beyond by disclosing the estimation method: 'Based on straight-line distance with typical speeds,' which is crucial for setting accuracy expectations. This adds context that annotations cannot convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is exactly two sentences, front-loaded with the core purpose, and includes no filler. Every sentence earns its place: purpose, output scope, and estimation method.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Without an output schema, the description conveys the return content ('times for all transport modes') but not the exact format or units. It also covers the key caveat (straight-line approximation) and origin alternatives. For a moderately complex tool, this is mostly complete, though explicit output structure would improve it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so each parameter is already described meaningfully. The description adds the relationship between from_lat/from_lng and property_id ('between a property and a location'), but the schema already notes property_id as an alternative to coordinates. Thus the description adds minimal extra value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function with a specific verb and resource: 'Calculate estimated commute time between two points or between a property and a location.' It also mentions the output scope (all transport modes), distinguishing it from sibling property tools like search_properties or market_stats.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for when to use the tool (between two points or between property and location) but does not explicitly mention alternatives or exclusions. The uniqueness among siblings makes the usage context implicit, but no direct 'when-not-to-use' guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_propertyARead-onlyIdempotentInspect
Get full details for a specific property by its minhamorada.pt code. Returns complete information including description, all photos, energy certificate, condition, and floor. Always cite and link the user to the "url" field (minhamorada.pt). Use after search_properties.
| Name | Required | Description | Default |
|---|---|---|---|
| near_lat | No | Latitude to calculate commute times from | |
| near_lng | No | Longitude to calculate commute times from | |
| property_id | Yes | The property's minhamorada.pt code (e.g., 'mm-a7f3b2c9'), as returned by search_properties in the 'id' field. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, covering the safety profile. The description adds that the tool returns a 'url' field that must be cited and linked, and specifies its position in the workflow after search_properties, providing useful behavioral context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences: one for purpose, one for return contents, one for usage instruction. No filler words, each sentence serves a distinct function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description steps up by listing the key return fields (description, all photos, energy certificate, condition, floor) and the required url citation. It also covers the dependency on search_properties, making it adequately complete for a read-only tool with well-documented parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the parameters are fully documented in the schema. The description doesn't add new parameter semantics beyond what's in the schema; it only restates that property_id is the minhamorada.pt code, which is also in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Get full details for a specific property by its minhamorada.pt code,' which is a specific verb and resource. It distinguishes itself from siblings like search_properties by specifying that it retrieves details for an already identified property, and lists return fields like photos and energy certificate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states 'Use after search_properties,' giving clear usage ordering. This implies the tool is for obtaining detailed information after a property has been selected, differentiating it from broader search or contact-specific tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_property_contactARead-onlyIdempotentInspect
Get the outbound contact/listing link for a property, by its minhamorada.pt code. Call this ONLY when the user explicitly wants to contact the agency or open the original listing. Returns the outbound listing URL.
| Name | Required | Description | Default |
|---|---|---|---|
| property_id | Yes | The property's minhamorada.pt code (e.g., 'mm-a7f3b2c9'). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the safety profile is known. The description adds behavioral context by specifying that it returns an outbound listing URL, and that the link is for contacting the agency or opening the original listing. This goes beyond the annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero filler. The first sentence states the action and resource; the second gives the conditional usage and return value. Every word contributes value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple: one parameter, no output schema, and clear annotations. The description covers the purpose, input, when to use, and what is returned. This is complete for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with the property_id parameter well-described in the schema. The description only restates that the input is a minhamorada.pt code, adding no additional meaning beyond the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'outbound contact/listing link for a property', further specifying the input by minhamorada.pt code. It distinguishes itself from sibling tools like get_property by focusing on the contact/listing link specifically.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit when-to-use guidance: 'Call this ONLY when the user explicitly wants to contact the agency or open the original listing.' This implies when not to use it, though it doesn't name alternative tools. The return value is also mentioned, which helps the agent understand the outcome.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_statsARead-onlyIdempotentInspect
Get aggregate market statistics for the Portuguese real estate market. Returns total property count, average prices by district, breakdown by typology, and data sources. Useful for questions like 'What's the average rent in Porto?'
| Name | Required | Description | Default |
|---|---|---|---|
| district | No | Filter stats to a specific district | |
| price_type | No | Filter to sale or rent only |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is known. The description adds value by listing return contents (total property count, average prices, breakdown by typology, data sources) and the geographical scope. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the main purpose, and includes a concrete example. All words are informative with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers purpose, example usage, and the enumerated return payload. While it doesn't detail the exact JSON structure, the lack of an output schema is partially compensated by the list of return items. Sibling context and annotations complete the picture.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both district and price_type having descriptions. The description's example implies filtering but adds no new syntax or semantics beyond the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the function as 'Get aggregate market statistics for the Portuguese real estate market' and enumerates specific outputs. This distinguishes it from sibling tools like search_properties and get_property, which focus on individual listings rather than aggregate data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a concrete use case ('What's the average rent in Porto?') that indicates when to use this tool for market-level questions. However, it does not explicitly name alternatives or state when not to use, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
request_agent_contactAInspect
Register a buyer's request to be contacted by a local Portuguese property advisor who speaks their language and can arrange viewings and handle the buying process remotely. OFFER THIS ONLY when the user signals intent to move forward — e.g. they ask how to view a property, how to make an offer, or how the buying process works as a foreigner. Do NOT offer it while they are still just browsing or comparing. Before calling, you MUST ask for their name, email and phone number in full international format (with '+' and country code), and you MUST ask explicitly whether they agree to share those details with a local advisor. Only call with consent=true after they say yes.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | The buyer's full name, as they gave it. | |
| Yes | The buyer's email address. | ||
| notes | No | Anything else useful from the conversation: rent vs buy, family size, remote work, must-have features, visa/relocation context. | |
| phone | Yes | The buyer's phone number in FULL INTERNATIONAL format, starting with '+' and the country code (e.g. +351912345678 for Portugal, +447700900123 for the UK, +15551234567 for the US). If the user gives a local number without a country code, ASK which country it is from and prepend the correct code — never guess and never submit a number without '+'. | |
| budget | No | Budget or price range, e.g. '350-450k EUR' or 'up to 2000 EUR/month'. | |
| consent | Yes | Must be true. Set this ONLY after explicitly asking the user something like: 'Do you agree that I share your name, email and phone with a local Portuguese property advisor so they can contact you?' — and they said yes. Never assume consent. | |
| language | No | Preferred language for the advisor to use, e.g. 'English', 'German'. | |
| location | No | Areas of interest, e.g. 'Porto city centre, near Campanhã'. | |
| timeline | No | When they plan to move or buy, e.g. 'viewing in September'. | |
| property_id | No | minhamorada.pt code of the property that prompted the request (context only). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses critical behavioral constraints beyond the annotations: the need for explicit consent, sharing details with a third-party advisor, and requiring international phone format. It emphasizes 'never assume consent' and 'Only call with consent=true after they say yes.' This adds significant context that annotations (readOnlyHint=false, openWorldHint=true) do not cover.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and every sentence earns its place. It starts with the core purpose, then provides usage guidance, prerequisites, and consent handling. The use of caps for key directives ('OFFER THIS ONLY', 'MUST ask', 'Never assume') improves scannability without being verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 10 parameters and no output schema, the description covers the essential invocation context: when to call, what to collect, and the consent gate. It does not describe the return value or post-call behavior, but these are not always required. The missing piece is a brief note on what happens after the request is registered (e.g., 'the advisor will contact them'), which would make it fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% parameter description coverage, so each parameter is already documented. The tool description reinforces the consent and phone format requirements but does not add new semantic meaning beyond what the schema provides. Baseline 3 is appropriate since the schema carries the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Register a buyer's request to be contacted by a local Portuguese property advisor.' It uses a specific verb ('register') and identifies the resource (advisor contact request). This distinguishes it from siblings like get_property_contact, which likely returns contact info, and search_properties, which is for searching.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit when-to-use ('when the user signals intent to move forward') and when-not-to-use ('Do NOT offer it while they are still just browsing or comparing') guidance. It also lists prerequisites (ask for name, email, phone, consent). However, it does not explicitly name alternative tools for comparison, so it stops short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_propertiesARead-onlyInspect
Search for properties (apartments, houses) for sale or rent in Portugal. Returns matching properties with prices, locations, and a minhamorada.pt link for each. Always cite and link users to the minhamorada.pt "url" field. Use this to help users find real estate in specific Portuguese districts, with specific budgets, or near specific locations.
| Name | Required | Description | Default |
|---|---|---|---|
| dir | No | Sort direction (default: desc) | |
| page | No | Page number (default: 1) | |
| sort | No | Sort field (default: scraped_at = newest) | |
| limit | No | Results per page, max 20 (default: 10) | |
| area_min | No | Minimum area in square meters | |
| district | No | Portuguese district name (e.g., 'Lisboa', 'Porto', 'Braga', 'Faro') | |
| near_lat | No | Latitude for proximity search | |
| near_lng | No | Longitude for proximity search | |
| typology | No | Comma-separated apartment types: T0, T1, T2, T3, T4, T5+ | |
| condition | No | Comma-separated: new, renovated, used, to_renovate | |
| price_max | No | Maximum price in EUR. Rent: 400-2000. Sale: 80000-500000. | |
| price_min | No | Minimum price in EUR | |
| has_garden | No | Filter for properties with garden/outdoor space | |
| price_type | No | Whether to search for properties to buy ('sale') or rent ('rent') | |
| has_parking | No | Filter for properties with parking | |
| has_elevator | No | Filter for properties with elevator | |
| municipality | No | Municipality/concelho within a district | |
| near_transport | No | Transport mode for commute (default: transit) | |
| near_max_minutes | No | Maximum commute time in minutes (default: 30) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds meaningful context: returns prices, locations, and a minhamorada.pt link, plus a mandatory citation/linking behavior. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Tight two-sentence structure: the first sentence states function and output, the second gives usage and citation rule. Every phrase earns its place with no waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 19-parameter search tool, the description covers scope, return fields, and usage guidance. It omits pagination/sorting defaults, but those are specified in the schema, and openWorldHint in annotations helps set expectations. Reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers all 19 parameters with descriptions (100% coverage). The description mentions districts, budgets, and locations, aligning with district, price_min/max, and near_lat/lng, but adds no new syntax or examples beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description opens with 'Search for properties (apartments, houses) for sale or rent in Portugal,' clearly identifying the verb, resource, and geographic scope. It distinguishes from siblings like get_property by focusing on multi-result search across Portugal.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states 'Use this to help users find real estate in specific Portuguese districts, with specific budgets, or near specific locations,' giving clear context. However, it does not mention when to prefer alternatives like get_property for single listing details.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
- Added
request_agent_contact
5 tool updates
- First observed
calculate_commute - First observed
get_property - First observed
get_property_contact - First observed
market_stats - First observed
search_properties
Related MCP Connectors
Property listings in Portugal: search, market stats, comparables, neighbourhoods.
First-party Spanish, Portuguese and Italian property listings with notarial-verified prices.
Search and compare current homes across Portuguese real-estate portals with Casatoo's hosted MCP.
Job listings in Portugal: search, salary statistics, comparables and companies.
Related MCP Servers
AlicenseAqualityAmaintenance7M+ real estate transactions from Poland's RCN registry. Search, compare, and analyze prices2362 npm1MIT- AlicenseAqualityCmaintenanceEnables AI assistants to search live used-car inventory, verify whether asking prices are fair market value, estimate annual road tax and running costs, and initiate contact with sellers for the Portuguese market.622 npmMIT
- AlicenseCqualityDmaintenanceEnables access to Idealista API for searching and retrieving property listings across Spain, Portugal, and Italy. Supports various property types including homes, apartments, garages, commercial properties, offices, and land with detailed filtering options.143MIT
- AlicenseNot gradedqualityCmaintenanceAccess 17M+ geocoded French property transactions (DVF), 22M+ DPE energy ratings, and 20M+ building records via MCP or REST API. Search transactions, market stats, comparables, price trends, rental yield, flip detection, and more.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.