Skip to main content
Glama

Casatoo

Build a public Casatoo search link

casatoo_build_search_link
Read-onlyIdempotent

Create a public Casatoo URL for an exact location_id returned by casatoo_search_locations. This is a strict two-step flow: never pass place text or invent an ID. Include only filters the user provided; do not guess missing criteria.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
roomsNoPortuguese bedroom typologies. T2 means two bedrooms and T5+ matches Casatoo listings with five or more bedrooms. An empty list means any room count.
sort_byNoSearch-link ordering; defaults explicitly to newest.newest
price_maxNo
price_minNo
location_idYesExact Casatoo location ID returned by casatoo_search_locations. Free-text locations are not accepted.
gross_area_maxNo
gross_area_minNo
property_categoryNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
urlYes
locationYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed23 schema fields changed
    • addedInput schema / $defs / LocationId
      Added value: +{
      +  "minimum": 1,
      +  "type": "integer"
      +}
    • addedInput schema / additionalProperties
      Added value: +false
    • removedInput schema / properties / location
      Removed value: -{
      -  "maxLength": 120,
      -  "minLength": 1,
      -  "title": "Location",
      -  "type": "string"
      -}
    • addedInput schema / properties / location_id
      Added value: +{
      +  "$ref": "#/$defs/LocationId",
      +  "description": "Exact Casatoo location ID returned by casatoo_search_locations. Free-text locations are not accepted."
      +}
    • addedInput schema / properties / rooms / description
      Added value: +"Portuguese bedroom typologies. T2 means two bedrooms and T5+ matches Casatoo listings with five or more bedrooms. An empty list means any room count."
    • addedInput schema / properties / rooms / maxItems
      Added value: +6
    • addedInput schema / properties / sort_by / $ref
      Added value: +"#/$defs/SearchSort"
    • removedInput schema / properties / sort_by / anyOf
      Removed value: -[
      -  {
      -    "$ref": "#/$defs/SearchSort"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • changedInput schema / properties / sort_by / default
      Previous value: -nullNew value: +"newest"
    • addedInput schema / properties / sort_by / description
      Added value: +"Search-link ordering; defaults explicitly to newest."
    • changedInput schema / required
      Previous value: -[
      -  "location"
      -]New value: +[
      +  "location_id"
      +]
    • addedOutput schema / $defs / AgentLocationType
      Added value: +{
      +  "enum": [
      +    "DISTRICT",
      +    "MUNICIPALITY",
      +    "PARISH",
      +    "NEIGHBORHOOD"
      +  ],
      +  "title": "AgentLocationType",
      +  "type": "string"
      +}
    • addedOutput schema / $defs / LocationId
      Added value: +{
      +  "minimum": 1,
      +  "type": "integer"
      +}
    • addedOutput schema / $defs / LocationSearchResult / properties / id / $ref
      Added value: +"#/$defs/LocationId"
    • addedOutput schema / $defs / LocationSearchResult / properties / id / description
      Added value: +"Exact location ID to pass unchanged to listing search and search-link tools."
    • removedOutput schema / $defs / LocationSearchResult / properties / id / title
      Removed value: -"Id"
    • removedOutput schema / $defs / LocationSearchResult / properties / id / type
      Removed value: -"integer"
    • addedOutput schema / $defs / LocationSearchResult / properties / location_type / $ref
      Added value: +"#/$defs/AgentLocationType"
    • addedOutput schema / $defs / LocationSearchResult / properties / location_type / description
      Added value: +"Administrative level: DISTRICT, MUNICIPALITY, PARISH, or NEIGHBORHOOD."
    • removedOutput schema / $defs / LocationSearchResult / properties / location_type / title
      Removed value: -"Location Type"
    • removedOutput schema / $defs / LocationSearchResult / properties / location_type / type
      Removed value: -"string"
    • changedOutput schema / $defs / LocationSearchResult / properties / parent_id / anyOf
      Previous value: -[
      -  {
      -    "type": "integer"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "$ref": "#/$defs/LocationId"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedOutput schema / $defs / LocationSearchResult / properties / parent_id / title
      Removed value: -"Parent Id"
  2. First observed

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already declare readOnlyHint and idempotentHint, and the description adds meaningful behavioral detail beyond them: the operation is strictly dependent on a prior lookup, must not be fed free text or fabricated IDs, and must not silently add criteria. This tells an agent exactly how the tool is expected to behave.

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

Conciseness5/5

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

Two tightly packed sentences: the first states the action and the key dependency, the second states the critical strict workflow rules. No filler, no repeated schema information, and the most constraining information is front-loaded.

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?

The description plus input schema and output schema give an agent enough to invoke this tool correctly: where location_id comes from, which filters to use, and the return shape via the output schema. The strict workflow warning covers the main error modes for a link-building tool.

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

Parameters3/5

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

With only 38% schema description coverage, the description adds some useful guidance: location_id must come from casatoo_search_locations, and only user-provided filters should be included. However, the description does not compensate for the missing semantics of price_min, price_max, gross_area_min, gross_area_max, or property_category, leaving those partly to their self-explanatory names.

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?

The description uses a specific verb and resource: 'Create a public Casatoo URL' from an exact location_id. It also explicitly traces that ID to casatoo_search_locations, differentiating this URL-building tool from location/search/listing tools and making its purpose unambiguous.

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

Usage Guidelines4/5

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

It clearly establishes a strict two-step flow: first call casatoo_search_locations, then build the link using the returned ID; it also forbids passing place text or inventing IDs and forbids guessing unrequested filters. It does not name sibling tools as the preferred alternative in any given scenario, but the invocation precondition is explicit.

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