Skip to main content
Glama

Claro AI by Casafari

Search commercial premises

claro_search_premises
Read-only

Find shops, restaurant premises, offices, warehouses and other commercial premises for rent or sale anywhere in Spain. Describe the site in plain words in any language (brief), send criteria as data, or both (criteria override the brief). Returns exact counts, the criteria as understood and the best results, each with what it meets and what its text does not state, the sentence that matched, its coordinates, a fit verdict read from its text, the agency's own ad link and, when the plan includes Location Intelligence, footfall, residents and nearby places. Up to 200 results a page, capped by the plan; send next_cursor as cursor for the next page. Keep search_id to refine. On the Free plan, each call (and each page) is one of 4 searches. Never for homes: apartments, houses and other homes are Property Sourcing (property-sourcing_search). Costs 100 tokens a call. Each page is a call.

Input Schema

NameRequiredDescriptionDefault
langNoLanguage of the text the answer writes (titles, notes, labels, reasons, error messages): en (default) or de (German). Place names, agency names, property titles and quotes from a property's own text stay as written.en
sortNoWith search_id (and no brief, criteria, change or cursor): the same stored matches in this order, without searching again. Same matches and counts; the answer has a new search_id for the new order. best goes back to the search's own ranking. Unpriced properties go last.
briefNo
checkNoRead the top results' text against the brief (adds a few seconds). Off above 50 results a page and on later pages.
limitNoResults a page, up to 200; above 50 check is off. With pins_only, pins a page, up to 2000 (default 10: send a limit).
cursorNonext_cursor from an earlier answer: returns that search's next page, same criteria and order. Send without brief, criteria or change.
offsetNoWith search_id (no brief, criteria or change): the page of that stored search starting at this place in its ranked matches. Same order as its cursors.
criteriaNoCriteria as data. Hard criteria (operation, cities, types, price, area) exclude properties outside them; the rest exclude only properties that state the opposite, and each result says which were met and which the property does not state.
insightsNo
pins_onlyNoWith search_id or cursor: no results, only `pins` (id, lat, lon, precision, type, district, prices, area_m2) for up to 2000 matches a page, to draw a map. Needs no read-through and costs no results.
search_idNoA search_id from an earlier answer, with offset, stated_only or pins_only (and no brief, criteria or change): pages that search's stored matches. To change the criteria use refine_search.
stated_onlyNoOnly the matches that state every criterion (met). Matches with a criterion not stated or not met are left out of results and of page.total; counts keeps both totals. With search_id and no brief/criteria/change: pages that stored search.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties / sort
      Added value: +{
      +  "description": "With search_id (and no brief, criteria, change or cursor): the same stored matches in this order, without searching again. Same matches and counts; the answer has a new search_id for the new order. best goes back to the search's own ranking. Unpriced properties go last.",
      +  "enum": [
      +    "best",
      +    "price_asc",
      +    "price_desc",
      +    "area_desc"
      +  ],
      +  "type": "string"
      +}
  2. Changed1 schema field changed
    • changedInput schema / properties / criteria / properties / districts / description
      Previous value: -"Named districts or neighbourhoods in the cities (Centro, Malasaña, Chamberí, Eixample, Gràcia, Poblenou...). A property outside them is out; one that does not state its district stays, marked not stated."New value: +"Named districts or neighbourhoods in the cities (Centro, Malasaña, Chamberí, Eixample, Gràcia, Poblenou...). A property outside them is out; one that does not state its district stays, marked not stated, unless its map location is outside them."
  3. Changed1 schema field changed
    • addedInput schema / properties / criteria / properties / bbox
      Added value: +{
      +  "description": "A map viewport: only premises with a point inside {south, west, north, east} (degrees). Use it instead of cities, provinces and districts.",
      +  "properties": {
      +    "east": {
      +      "type": "number"
      +    },
      +    "north": {
      +      "type": "number"
      +    },
      +    "south": {
      +      "type": "number"
      +    },
      +    "west": {
      +      "type": "number"
      +    }
      +  },
      +  "type": "object"
      +}
  4. Changed1 schema field changed
    • changedInput schema / properties / criteria / properties / footfall_min / description
      Previous value: -"Minimum footfall index within a 5-minute walk (an index of pedestrian activity that compares places; not a head count). Needs location data access."New value: +"Minimum daily footfall within a 5-minute walk (estimated passers-by a day, added up over every 25 m of street; not a count of different people). Needs location data access."
  5. Changed5 schema fields changed
    • changedInput schema / properties / criteria / properties / cities / description
      Previous value: -"Towns or cities in the search's country by name or slug (\"valencia\", \"Palma\"; with country de: \"München\", \"koln\"). Leave out for the whole country."New value: +"Towns or cities in the search's country by name or slug (\"valencia\", \"Palma\"; with country de: \"München\", \"koln\"; with country pt: \"Lisboa\", \"Cascais\"). Leave out for the whole country."
    • changedInput schema / properties / criteria / properties / country / description
      Previous value: -"The one country the search is in: es (Spain, the default) or de (Germany). Cities and provinces are that country's; counts never mix countries."New value: +"The one country the search is in: es (Spain, the default), de (Germany) or pt (Portugal). Cities and provinces are that country's; counts never mix countries."
    • changedInput schema / properties / criteria / properties / country / enum
      Previous value: -[
      -  "es",
      -  "de"
      -]New value: +[
      +  "es",
      +  "de",
      +  "pt"
      +]
    • changedInput schema / properties / criteria / properties / provinces / description
      Previous value: -"Provinces in Spain, or Länder with country de (\"bayern\", \"nordrhein-westfalen\"); a property must be in one of them."New value: +"Provinces in Spain, Länder with country de (\"bayern\", \"nordrhein-westfalen\"), or distritos with country pt (\"lisboa\", \"porto\", \"arquipelago-da-madeira\"); a property must be in one of them."
    • changedInput schema / properties / criteria / properties / provinces / items / enum
      Previous value: -[
      -  "a-coruna",
      -  "alava",
      -  "albacete",
      -  "alicante",
      -  "almeria",
      -  "asturias",
      -  "avila",
      -  "badajoz",
      -  "barcelona",
      -  "burgos",
      -  "caceres",
      -  "cadiz",
      -  "cantabria",
      -  "castellon",
      -  "ceuta",
      -  "ciudad-real",
      -  "cordoba",
      -  "cuenca",
      -  "girona",
      -  "granada",
      -  "guadalajara",
      -  "guipuzcoa",
      -  "huelva",
      -  "huesca",
      -  "islas-baleares",
      -  "jaen",
      -  "la-rioja",
      -  "las-palmas",
      -  "leon",
      -  "lleida",
      -  "lugo",
      -  "madrid",
      -  "malaga",
      -  "melilla",
      -  "murcia",
      -  "navarra",
      -  "ourense",
      -  "palencia",
      -  "pontevedra",
      -  "salamanca",
      -  "santa-cruz-de-tenerife",
      -  "segovia",
      -  "sevilla",
      -  "soria",
      -  "tarragona",
      -  "teruel",
      -  "toledo",
      -  "valencia",
      -  "valladolid",
      -  "vizcaya",
      -  "zamora",
      -  "zaragoza",
      -  "baden-wurttemberg",
      -  "bayern",
      -  "berlin",
      -  "brandenburg",
      -  "bremen",
      -  "hamburg",
      -  "hessen",
      -  "mecklenburg-vorpommern",
      -  "niedersachsen",
      -  "nordrhein-westfalen",
      -  "rheinland-pfalz",
      -  "saarland",
      -  "sachsen",
      -  "sachsen-anhalt",
      -  "schleswig-holstein",
      -  "thuringen"
      -]New value: +[
      +  "a-coruna",
      +  "alava",
      +  "albacete",
      +  "alicante",
      +  "almeria",
      +  "asturias",
      +  "avila",
      +  "badajoz",
      +  "barcelona",
      +  "burgos",
      +  "caceres",
      +  "cadiz",
      +  "cantabria",
      +  "castellon",
      +  "ceuta",
      +  "ciudad-real",
      +  "cordoba",
      +  "cuenca",
      +  "girona",
      +  "granada",
      +  "guadalajara",
      +  "guipuzcoa",
      +  "huelva",
      +  "huesca",
      +  "islas-baleares",
      +  "jaen",
      +  "la-rioja",
      +  "las-palmas",
      +  "leon",
      +  "lleida",
      +  "lugo",
      +  "madrid",
      +  "malaga",
      +  "melilla",
      +  "murcia",
      +  "navarra",
      +  "ourense",
      +  "palencia",
      +  "pontevedra",
      +  "salamanca",
      +  "santa-cruz-de-tenerife",
      +  "segovia",
      +  "sevilla",
      +  "soria",
      +  "tarragona",
      +  "teruel",
      +  "toledo",
      +  "valencia",
      +  "valladolid",
      +  "vizcaya",
      +  "zamora",
      +  "zaragoza",
      +  "baden-wurttemberg",
      +  "bayern",
      +  "berlin",
      +  "brandenburg",
      +  "bremen",
      +  "hamburg",
      +  "hessen",
      +  "mecklenburg-vorpommern",
      +  "niedersachsen",
      +  "nordrhein-westfalen",
      +  "rheinland-pfalz",
      +  "saarland",
      +  "sachsen",
      +  "sachsen-anhalt",
      +  "schleswig-holstein",
      +  "thuringen",
      +  "acores",
      +  "arquipelago-da-madeira",
      +  "aveiro",
      +  "beja",
      +  "braga",
      +  "braganca",
      +  "castelo-branco",
      +  "coimbra",
      +  "evora",
      +  "faro",
      +  "guarda",
      +  "leiria",
      +  "lisboa",
      +  "portalegre",
      +  "porto",
      +  "santarem",
      +  "setubal",
      +  "viana-do-castelo",
      +  "vila-real",
      +  "viseu"
      +]
  6. Changed1 schema field changed
    • addedInput schema / properties / lang
      Added value: +{
      +  "default": "en",
      +  "description": "Language of the text the answer writes (titles, notes, labels, reasons, error messages): en (default) or de (German). Place names, agency names, property titles and quotes from a property's own text stay as written.",
      +  "enum": [
      +    "en",
      +    "de"
      +  ],
      +  "type": "string"
      +}
  7. Changed2 schema fields changed
    • removedInput schema / properties / brief / description
      Removed value: -"The site brief in plain words, e.g. \"burger restaurant, corner unit 120-250 m², smoke outlet, busy street, Madrid, rent under 8,000 a month\"."
    • removedInput schema / properties / insights / description
      Removed value: -"Add `insights`, charts as data over every match, each with a one-sentence answer, its count, scope, source and date: per criterion how many matches meet it, leave it unsaid or contradict it (and how many would state everything without it); with one price limit, what it reaches among premises of this kind and place before the limit, else what the matches ask per m²; and where the matches are by district or town. Asking prices; each unit counted once."
  8. 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 readOnly/destructive=false, but the description adds genuinely non-obvious behavior: per-call token cost, the Free-plan search budget where every page is a call, the 200-result page cap being plan-dependent, and that check adds seconds and switches off above 50 results. It also discloses what a result entry contains and how Location Intelligence changes the payload, which no annotation covers.

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?

It is a single dense paragraph, front-loaded with purpose, then the return shape, then paging, then cost and exclusions. Every clause carries information, but the long enumeration of return fields reads as a run-on and would be easier to scan as separate lines.

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?

With 12 top-level parameters, a deeply nested criteria object and no output schema, the description carries the right load: it explains the answer's structure, the paging model, cost, and the excluded use case. The only residual gap is the unmentioned Germany/Portugal support, which the country parameter documents anyway.

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

Parameters4/5

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

Schema coverage is 83%, so the baseline is 3, and the description earns an extra point by explaining the brief/criteria interaction that the schema never states ("Describe the site in plain words in any language... criteria override the brief") and the cursor/search_id continuation semantics. It stops short of interpreting the more subtle criteria fields (sort, meaning, supply_gap), leaving those entirely to the schema.

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

Purpose4/5

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

The opening sentence gives a concrete verb and resource ("Find shops, restaurant premises, offices, warehouses... for rent or sale") and explicitly excludes homes, naming the alternative: "apartments, houses and other homes are Property Sourcing (property-sourcing_search)". The only defect is the scope claim "anywhere in Spain", which conflicts with the schema's country enum (es, de, pt) and understates coverage.

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?

It states the negative case (never for homes) with the named sibling to use instead, explains the two input modes and their precedence ("criteria override the brief"), and gives the continuation protocol ("send next_cursor as cursor", "Keep search_id to refine"). Cost and quota context (100 tokens a call, 4 searches on Free, each page counts) further tells the agent when a call is affordable.

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