Skip to main content
Glama

Cubi Estate

Find similar homes in another city

find_similar_elsewhere
Read-only

Homes like one listing, in another city, side by side with it.

Use when the user likes a home and asks what something similar costs, or
looks like, elsewhere ("homes like #2 in Lisbon"). Returns the listing and
up to 2 matches in `city`, each with asking price, price per m², stated
features, environment readings (quiet, clean air, leafy, coastal, flood /
wildfire / seismic / ground-motion screening), walk and drive minutes, and
the region's climate.

Matches have the same bedrooms and a living area within 15%, and are
picked on features and environment — never on price — so the price
difference is a finding, not how they were chosen. Relay it as asking
prices, never as a saving, a valuation or a "city premium". A feature
marked "not_stated" means the listing doesn't say, not that the home lacks
it; an environment value "unknown" means there is no reading. When
`matches` is empty, say no documented match was found; do not loosen it.

With `compare_with` (a second listing id) instead of `city`, no search
runs: the two listings come back side by side on the same rows — e.g.
the top home of each city in a comparison, feature by feature.

Args:
    listing_id: Source-prefixed id of a listing already shown (e.g.
        `remax:12345`). Do not invent one.
    city: The other city to search in, e.g. "Lisboa".
    compare_with: A second listing id already shown, to compare the two.
    lang: ISO 639-1 code (en/pt/es/fr/de/nl/ru).

Returns:
    JSON: seed and matches[] with price, eur_per_m2, features, environment
    {axis: {state, value, unit}}, minutes, climate, and a `card` with the
    listing link; or a not-found / same-city message.

Input Schema

NameRequiredDescriptionDefault
cityNo
langNoen
listing_idYes
compare_withNo

Output Schema

NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed5 schema fields changed
    • addedInput schema / properties / city / anyOf
      Added value: +[
      +  {
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedInput schema / properties / city / default
      Added value: +null
    • removedInput schema / properties / city / type
      Removed value: -"string"
    • addedInput schema / properties / compare_with
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Compare With"
      +}
    • changedInput schema / required
      Previous value: -[
      -  "listing_id",
      -  "city"
      -]New value: +[
      +  "listing_id"
      +]
  2. Added

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only cover safety (readOnly, non-destructive, closed-world), and the description adds substantial context beyond them: match criteria (same bedrooms, living area within 15%, chosen on features and environment never on price), the meaning of 'not_stated' and 'unknown' markers, empty-result handling, and the price-relay constraint (asking prices, never a saving or valuation). This is exactly the operational knowledge annotations cannot carry.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with a one-line purpose before usage, semantics and an explicit Args/Returns block; almost every sentence carries a constraint the agent would otherwise get wrong. Slight redundancy remains (the Returns block partially restates the earlier enumeration of returned fields), which keeps it from a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 4-parameter read tool with annotations already declaring safety, the description covers trigger conditions, both operating modes, match methodology, interpretation caveats for missing values, and result-relay rules. Nothing an agent needs to call it correctly or report its output faithfully is left unstated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description carries the full burden and does: `listing_id` must be a source-prefixed id that was already shown ('do not invent one'), `city` is the other city to search, `compare_with` is a second already-shown listing id that bypasses search, and `lang` lists the accepted ISO 639-1 codes that the schema omits entirely.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Homes like one listing, in another city, side by side with it') and the tool's distinctive premise — similarity measured against a source listing in a different city. This is clearly separable from siblings like search_properties (free search), get_listing (single record) and compare_asking_prices (aggregate price comparison).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit trigger ('Use when the user likes a home and asks what something similar costs, or looks like, elsewhere') with a concrete phrasing example, and describes the alternative invocation mode with `compare_with` where 'no search runs'. The agent knows both when to reach for it and which mode to pick.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources