Claro AI by Casafari
Server Details
Commercial premises search for expansion teams: plain-words briefs, exact counts, quoted evidence.
- Status
- Healthy
- Uptime
- 90.8% over 23 days
- OAuth
- Works in Glama
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- ChatGPT
- –
- Claude
- Claro AI by CASAFARI
TDQS
Scored across 10 tools
Each tool targets a clearly distinct operation overall, with premises search/refine and get/explain-location being the closest pairs. Their descriptions make the intended distinction clear enough, but the overlap is not zero.
Tools use snake_case consistently and 9 of 10 share the claro_ prefix. Most names follow an action_resource pattern, but account_status lacks the prefix and names like market_snapshot and brief_from_file are noun-oriented rather than verb_noun.
Ten tools are well scoped for a commercial property search and intelligence server. Each tool covers a distinct workflow area without obvious padding.
The Spain commercial-premises workflow is well covered: search, refine, compare, details, location intelligence, market snapshot, and file brief extraction. The Germany plots workflow is thinner, with search and get but no explicit plot refine or plot market/compare tools, leaving minor gaps.
Available Tools
10 toolsaccount_statusAccount statusARead-onlyIdempotentInspect
Shows this account's plan, remaining Casafari tokens, credits that expire within 30 days, whether calls can be made now and, when they cannot, a link to top up. Free (uses no tokens).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly, idempotent, non-destructive, closed-world behavior, so the bar is lower. The description still adds genuinely new facts beyond them: zero token cost and the presence of an actionable top-up link in the response, both of which affect agent planning.
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?
A single sentence, front-loaded with the resource ('this account's plan'), that spends every clause on a distinct return value. No filler, no restatement of the title.
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 present, the description carries the burden of describing returns and does so by enumerating each field of the payload plus the conditional top-up link. For a parameterless, read-only status tool this is fully sufficient to call it correctly.
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?
Zero parameters, so there is nothing for the description to disambiguate and the baseline of 4 applies. The description correctly focuses its words on outputs instead of inventing parameter behavior.
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?
Names a specific resource (this account) and enumerates exactly what is reported: plan, remaining Casafari tokens, credits expiring within 30 days, current call eligibility, and a top-up link. None of the sibling tools (all claro_* search/plot tools) overlap with this, so the agent can distinguish it at a glance.
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 closing note 'Free (uses no tokens)' gives an explicit cost-based decision rule and the 'whether calls can be made now' clause implies the diagnostic use case (check before or after hitting limits). It stops short of stating when to call it relative to other operations (e.g. on quota errors), so it is clear context rather than full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
claro_brief_from_fileRead a brief from a fileARead-onlyInspect
The premises requirements a file states (a site brief, a location profile, a requirements sheet): a PDF, a photo or scan (JPG, PNG, WebP, HEIC), a Word, Excel or PowerPoint file, OpenDocument or text, sent as base64 in content_base64 with its media_type and, best, its filename. Up to 10 MB. Returns brief (the requirements in plain words), requirements (each with the file's own words as quote) and quotes_checked. Show the brief to the user to check, then pass it to claro_search_premises; nothing is searched here. The file is not stored. Costs 100 tokens a call.
| Name | Required | Description | Default |
|---|---|---|---|
| filename | No | The file's name with its extension, e.g. perfil.docx. | |
| media_type | Yes | The file's media type, e.g. application/pdf, image/jpeg, text/plain, application/vnd.openxmlformats-officedocument.wordprocessingml.document. | |
| content_base64 | Yes | The file's bytes, base64. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/destructive annotations, it discloses the 10 MB cap, that the file is not stored, that a call costs 100 tokens, and what the response contains (brief, requirements with verbatim quotes, quotes_checked). Those are exactly the operational facts an agent needs before uploading a file.
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?
Dense but front-loaded: what it reads, how it is passed, the limits, then the return shape and next step. The opening clause is slightly convoluted in phrasing, and the format list could be compressed, but nothing is superfluous.
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 carries the return contract itself and does so (brief, requirements with quotes, quotes_checked), plus size limit, storage behavior, cost and follow-up step. Nothing material is missing for a 3-parameter upload-and-extract tool.
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%, so the baseline is 3, but the description adds that filename is 'best' provided (an encouraged optional) and that media_type should accompany the base64 payload. It still defers concrete media-type values to the schema's own examples rather than repeating them.
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?
States a specific verb and resource ('The premises requirements a file states') and enumerates the accepted file kinds, so an agent can tell it apart from claro_search_premises or claro_get_premises without opening a schema. The closing 'nothing is searched here' pins the scope further.
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?
Gives an explicit workflow: show the brief to the user, then pass it to claro_search_premises, which names the natural next tool and excludes search from this one. It does not cover the case where requirements already exist as text rather than a file, so there is no stated alternative for that path.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
claro_compare_premisesCompare premisesARead-onlyInspect
2 to 10 premises side by side, by the ids a search returned. On the Free plan, only for ids your searches returned. Costs 25 tokens a call.
| Name | Required | Description | Default |
|---|---|---|---|
| ids | Yes | 2 to 5 premises ids (pm_...) from search results: exactly those the user asked to compare (the top 3 when they give no number). | |
| lang | No | 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. | en |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and destructiveHint=false, so the safety profile is covered. The description adds two things the annotations do not: a per-call cost of 25 tokens and a Free-plan eligibility restriction, both of which materially affect whether an agent should invoke it.
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?
Three short sentences, front-loaded with the core action, followed by the eligibility constraint and then the cost. Zero filler; every clause carries a distinct operational fact.
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 never says what a comparison returns (a side-by-side table, prose, or the 'answer' the lang parameter implies), which is a real gap for a tool whose whole value is its output. The Free-plan and cost notes are good, but the item-count error leaves the definition partly unreliable.
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%, so the baseline would be 3, but the description states '2 to 10 premises' while the schema caps ids at maxItems 5. That mismatch actively misleads an agent into passing 6-10 ids that will fail validation, which is worse than adding no parameter detail at all.
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?
States a specific action (put premises side by side) on a specific resource (premises), scoped to ids returned by a search. It is distinguishable from claro_get_premises (single premise) and claro_search_premises, though it never names those siblings explicitly.
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?
Gives a clear precondition (ids must come from a prior search) and a plan-based restriction (on Free, only ids your own searches returned). It stops short of naming which sibling to call first or when to prefer claro_get_premises instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
claro_explain_locationLocation IntelligenceARead-onlyInspect
Location Intelligence for a premises id or any point (lat, lon) in Spain: a footfall index within a 5-minute walk (an index to compare places, not a head count: never say people or visitors a day), split by weekday and weekend, time of day and local, commuter and tourist shares; residents within a 10-minute walk and drive by age band, households by income and spending power; and nearby restaurants, shops, supermarkets, gyms and transit stops. Needs Location Intelligence on the organisation's plan. A figure with no data is null, never 0. Costs 25 tokens a call.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | A premises id (pm_...) from a search; returns its stored figures, or measures its point when none are stored. Send id, or lat and lon. | |
| lat | No | Latitude in degrees of a point in Spain; send with lon instead of id. | |
| lon | No | Longitude in degrees of a point in Spain; send with lat instead of id. | |
| lang | No | 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. | en |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (read-only, non-destructive, closed-world), and the description adds substantial behaviour beyond that: the entitlement requirement, the null-not-zero convention for missing figures, a per-call cost of 25 tokens, and the crucial caveat that the footfall figure is a comparative index, not a head count. That last point prevents a serious misinterpretation an agent would otherwise make.
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?
Front-loaded with what it returns, then constraints and caveats. The long metric enumeration is dense but each item carries information; the definition is not padded, though the opening sentence is heavy for a single sentence.
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 takes on the burden of describing what comes back and does so thoroughly — footfall splits, resident age bands, income bands, and amenity categories — plus cost, entitlement, and null handling. An agent has everything needed to call it and interpret the result correctly.
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% and the schema already explains id vs lat/lon and the lang enum in detail. The description only restates the id-or-point choice without adding format or constraint detail, so it sits at the baseline for a fully documented 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?
States a specific verb+resource: location intelligence metrics (footfall index, resident demographics, nearby amenities) for a premises id or a lat/lon point in Spain. The enumerated metric families make it clearly distinct from siblings like claro_get_premises or claro_compare_premises.
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?
Makes the input choice explicit (a premises id, or a point via lat/lon) and states a hard prerequisite: the organisation's plan must include Location Intelligence. It does not explicitly name sibling alternatives or when to prefer claro_compare_premises for multi-site comparison, which keeps it 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.
claro_get_plotGet one plotARead-onlyInspect
One plot in full by the id claro_search_plots returned: its data, its commercial-use level, the facts read from its text with the quote each came from, an excerpt, the agency's link and the other agencies advertising it. On the Free plan, only for ids your searches returned. Costs 25 tokens a call.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | A plot id (pm_...) from a search_plots result. | |
| lang | No | 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. | en |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint false and closed-world, so safety is covered; the description earns credit on top by disclosing the 25-token cost per call and the Free-plan restriction on which ids are fetchable. It does not mention failure behaviour for unknown or expired ids, which would matter for a metered call.
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, front-loaded with the core action and the id provenance before the return inventory. Every clause carries information — the long enumeration is justified because no output schema exists to describe the response.
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 carries the return-value burden and does so by listing each field class including the per-fact source quotes. Combined with cost and plan limits, an agent has everything needed to decide and call correctly; the lang semantics live in the schema.
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% and the id parameter already documents its pm_... format and search provenance, so the schema does the heavy lifting and the baseline applies. The description reinforces the id's origin but says nothing about the lang parameter or how language selection affects the returned facts and quotes, adding no meaning 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?
"One plot in full by the id ... returned" names a specific verb-and-resource pair and then enumerates exactly what comes back (data, commercial-use level, quoted facts, excerpt, agency link, competing agencies). It explicitly ties itself to claro_search_plots, so an agent can separate it from search or premises siblings without opening a schema.
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 establishes the prerequisite chain clearly: this is the follow-up to claro_search_plots, called with an id that search produced, and on the Free plan only ids your own searches returned are legal. It stops short of naming an alternative for lookups outside that chain or stating what to do when the id is stale, so it is strong context rather than a full when/when-not rule set.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
claro_get_premisesGet one premisesARead-onlyInspect
One premises in full by the id a search returned: its data, the facts read from its text with the sentence each came from, its coordinates, up to 8 photos, its asking-price timeline, whether it is still on the market and the agency's own ad links. insights adds charts as data: asking prices against comparable premises nearby, nearby businesses, supply and time on the market, and Location Intelligence ranks when the plan includes it. assessment, with insights, adds an AI-written site assessment whose every number is checked against those figures. On the Free plan, only for ids your searches returned. Costs 25 tokens a call.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | A premises id (pm_...) from a search result. | |
| lang | No | 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. | en |
| insights | No | ||
| segments | No | Optional, with insights: the business kinds whose distances come first in the distances chart, usually the brief's competitors (for a coffee shop: coffee and bakery). Without it the chart keeps its default order. | |
| assessment | No | With insights: add `site_assessment` first, a site assessment written by Gemini from this premises' own figures only (its data, its facts with their quotes, the market and competition charts, its parcel's zoning when `parcel_zoning` has an answer, its parcel's Cadastre record when `cadastre` has one (the register beside the advertised figures, with no verdict), and with location access the location figures and ranks): 3 to 5 summary sentences, strengths and watch-outs, and a verdict (strong, fair, weak, not_assessable) for quick-service restaurants, coffee and bakery, clinic and pharmacy, fitness, fashion and retail, and supermarket and convenience, each reason with the keys of the figures it rests on. Every number is checked against those figures and a sentence that fails is dropped (counted in `notes`); a missing figure is not stated, never a weakness. `scope` is with_location or listing_only. Stored per premises and inputs; the first request for new inputs waits for the model. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and non-destructive behavior, so the description adds value by disclosing a hard cost (25 tokens per call) and a Free-plan eligibility constraint. It also explains that insights gates charts and that assessment requires insights and may wait on a model call, though the caching detail itself lives mostly in the schema text.
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?
It is a single dense block but front-loaded: the core action and return contents come first, then the optional enhancements, then plan and cost constraints. A few clauses are long, yet every sentence carries operational information rather than filler.
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 carries the burden of describing the return payload and does so thoroughly, enumerating data, facts, photos, timeline, market status, ad links, charts and the optional assessment. An agent can decide whether to spend the tokens knowing what it will receive.
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 80%, so most parameters are already documented. The description still adds meaning beyond the schema by spelling out what the insights charts contain and the dependency that assessment only produces a site assessment when insights is set, which is more than the bare schema default conveys.
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 a specific verb and resource ("One premises in full by the id a search returned") and then enumerates exactly what comes back: data, extracted facts with source sentences, coordinates, up to 8 photos, asking-price timeline, market status and agency ad links. This clearly distinguishes it from siblings like claro_search_premises and claro_compare_premises.
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 states the prerequisite that the id must come from a search result, and gives a plan-level restriction ("On the Free plan, only for ids your searches returned") plus the token cost. It does not explicitly route the agent away from claro_compare_premises for multi-premises comparison, which keeps it 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.
claro_market_snapshotWhat premises ask in a placeARead-onlyInspect
What commercial premises of a kind ask in a place in Spain, from every active property of that kind and place: the asking price per m² as a distribution with its median and middle half, by size band and by district or town, the monthly average over three years with the change in a year, the listings on the market and their days on the market. Ask in plain words or send criteria as data. Asking prices, not agreed ones; at least 10 listings or no figures. Costs 25 tokens a call.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | 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. | en |
| criteria | No | Criteria 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. | |
| question | No | The question in plain words, any language: "what do offices rent for in Valencia?" |
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 real context beyond them: the figures are asking prices rather than agreed/transaction prices, cohorts below 10 listings produce no figures at all, and each call costs 25 tokens — the last being operationally important for an agent. It does not describe ordering, pagination, or result limits.
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 opening sentence is a long run-on packing five separate output dimensions into one clause chain, which makes it harder to scan than it needs to be. The three following sentences (input modes, price caveat, minimum cohort, cost) are tight and each earns its place, so the waste is in structure rather than content.
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?
There is no output schema, so the description must carry return-value semantics, and it does: distribution with median and middle half, segmentation by size band and district/town, a three-year monthly series with annual change, and listing counts with days on market. Against a 50+ field criteria object it is still thin on how criteria combine and on ordering of results, but the core shape is conveyed.
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% across a very large nested criteria object, so the schema does the heavy lifting and baseline 3 applies. The description does add one genuinely useful semantic point — that the same request can be expressed as free-text question or as structured criteria data — which explains the relationship between the two top-level inputs.
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 names a specific resource and computation: asking price per m² as a distribution with median and middle half, by size band and by district or town, plus a three-year monthly average with year-on-year change and days on market. That is far more precise than the title 'What premises ask in a place'. It does not explicitly point at the sibling it is not (claro_search_premises for individual listings, claro_compare_premises for comparisons), so the differentiation is inferable rather than stated.
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?
Usage is implied by the framing — this is the tool for 'what do premises of this kind ask here' market questions — and the minimum-10-listings rule tells the agent when results will be suppressed. However there is no explicit when-to-use versus claro_search_premises or claro_compare_premises, and no statement of what this tool is not for.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
claro_refine_searchRefine a searchARead-onlyInspect
Change part of an earlier search in plain words ("bigger, at least 200 m²", "Barcelona too", "drop the corner") and run it again as a new search with its own search_id and pages. Takes the search_id from claro_search_premises; searches are kept 24 hours. Results as claro_search_premises gives them; next_cursor as cursor gets the next page. On the Free plan, each call (and each page) is one of 4 searches. Costs 100 tokens a call. Each page is a call.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | 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. | en |
| check | No | Read the top results' text against the criteria for a fit verdict (adds a few seconds). Off above 50 results a page and on later pages. | |
| limit | No | Results a page, up to 200; above 50 check is off. | |
| change | No | What to change, in plain words. Required unless cursor is sent. | |
| cursor | No | next_cursor from an earlier answer: returns that search's next page, same criteria and order. Send without brief, criteria or change. | |
| offset | No | With 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. | |
| insights | No | ||
| search_id | Yes | The search_id from search_premises or an earlier refine_search (kept 24 hours). | |
| stated_only | No | Only 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. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial behavior beyond the annotations: searches persist for 24 hours, each call and each page counts against the Free plan's 4 searches, and each call costs 100 tokens. It also explains that results match claro_search_premises and that next_cursor pages through results.
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 purpose and operational constraints are front-loaded and easy to scan. There is minor redundancy around calls and pages counting as searches, but the paragraph remains compact and useful.
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 9-parameter search-refinement tool with no output schema, the description covers the missing pieces an agent needs: source of search_id, pagination behavior, retention, quota impact, token cost, and return-shape reference to claro_search_premises.
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 high, so the schema already documents most parameters. The description still adds useful meaning for the key change parameter with concrete plain-language examples, and reinforces the search_id retention and cursor pagination semantics.
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?
States a specific action: change part of an earlier search and rerun it as a new search with its own search_id and pages. This clearly distinguishes it from claro_search_premises, the initial search tool.
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 says to take search_id from claro_search_premises, gives plain-language examples for change, and explains cursor pagination. It also clarifies when cursor requires no change/brief/criteria, leaving little ambiguity about when to use this tool versus alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
claro_search_plotsSearch commercial plots (Germany)ARead-onlyInspect
Find plots of land for sale or rent in Germany for a commercial building, one result per plot however many agencies advertise it. Criteria are data: regions (Länder), municipalities, postcodes, plot type, operation, plot area, price and price per m², keywords, and commercial_use, how far the property's own text says a commercial building can go on the plot. limit up to 50, capped by the plan; offset for the next page. On the Free plan, each call (and each page) is one of 4 searches. Costs 100 tokens a call. Each page is a call.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | 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. | en |
| sort | No | commercial_use: strongest commercial-use level first; newest: latest on the market; price_asc: lowest sale price; area_desc: largest plot; price_m2_asc: lowest sale price per m². | commercial_use |
| limit | No | Results per page. | |
| offset | No | Results to skip, for the next page. | |
| criteria | No | Criteria as data, every field optional (leave out or send {} for all plots): regions, municipalities, zipcodes, plot_types, operation, plot_area_min, plot_area_max, sale_price_min, sale_price_max, sale_price_m2_max, commercial_use, serviced, keywords, exclude_keywords. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare a safe read-only, closed-world operation, and the description adds real value beyond them: deduplication across agencies, token cost per call, plan-based limit capping, and the rule that each page counts as a separate call and search. Result format is not described, but no output schema exists to cover it either.
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?
Front-loads what the tool returns and the dedup guarantee, then criteria, then the cost/quota rules. The criteria list is dense but mirrors the nested schema compactly; no filler sentences.
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 a nested criteria object, zero required parameters, and no output schema, the description covers cost, quota, pagination, deduplication and the semantics of the trickiest filter. It omits what a result looks like, which is the main remaining gap.
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%, so the baseline is 3, but the description adds meaning the schema does not: commercial_use is glossed as how far the property's own text says a commercial building can go, and limit is described as capped by the plan rather than only by the schema maximum of 50.
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?
States a specific verb and resource ("Find plots of land for sale or rent in Germany for a commercial building") and adds a distinguishing behavioral fact: one result per plot regardless of how many agencies advertise it. This differentiates it cleanly from the premises-oriented siblings without needing to name them.
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?
Gives useful operational guidance about paging (limit/offset, each page is a call) and the Free plan's 4-search allowance, which shapes how an agent should call it. However, it never says when to prefer this over claro_search_premises, claro_refine_search, or claro_get_plot, so tool selection is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
claro_search_premisesSearch commercial premisesARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | 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. | en |
| sort | No | 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. | |
| brief | No | ||
| check | No | Read the top results' text against the brief (adds a few seconds). Off above 50 results a page and on later pages. | |
| limit | No | Results a page, up to 200; above 50 check is off. With pins_only, pins a page, up to 2000 (default 10: send a limit). | |
| cursor | No | next_cursor from an earlier answer: returns that search's next page, same criteria and order. Send without brief, criteria or change. | |
| offset | No | With 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. | |
| criteria | No | Criteria 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. | |
| insights | No | ||
| pins_only | No | With 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_id | No | A 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_only | No | Only 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. |
TDQS
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.
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.
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.
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.
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.
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.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
- Changed
claro_search_premises1 field changed- added
Input schema / properties / sortAdded 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 tool updates
- Changed
claro_market_snapshot1 field changed- changed
Input schema / properties / criteria / properties / districts / descriptionPrevious 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."
- Changed
claro_search_premises1 field changed- changed
Input schema / properties / criteria / properties / districts / descriptionPrevious 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."
2 tool updates
- Changed
claro_market_snapshot1 field changed- added
Input schema / properties / criteria / properties / bboxAdded 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" +}
- Changed
claro_search_premises1 field changed- added
Input schema / properties / criteria / properties / bboxAdded 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" +}
2 tool updates
- Changed
claro_market_snapshot1 field changed- changed
Input schema / properties / criteria / properties / footfall_min / descriptionPrevious 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."
- Changed
claro_search_premises1 field changed- changed
Input schema / properties / criteria / properties / footfall_min / descriptionPrevious 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."
3 tool updates
- Changed
claro_get_premises1 field changed- changed
Input schema / properties / assessment / descriptionPrevious value: -"With insights: add `site_assessment` first, a site assessment written by Gemini from this premises' own figures only (its data, its facts with their quotes, the market and competition charts, its parcel's zoning when `parcel_zoning` has an answer, and with location access the location figures and ranks): 3 to 5 summary sentences, strengths and watch-outs, and a verdict (strong, fair, weak, not_assessable) for quick-service restaurants, coffee and bakery, clinic and pharmacy, fitness, fashion and retail, and supermarket and convenience, each reason with the keys of the figures it rests on. Every number is checked against those figures and a sentence that fails is dropped (counted in `notes`); a missing figure is not stated, never a weakness. `scope` is with_location or listing_only. Stored per premises and inputs; the first request for new inputs waits for the model."New value: +"With insights: add `site_assessment` first, a site assessment written by Gemini from this premises' own figures only (its data, its facts with their quotes, the market and competition charts, its parcel's zoning when `parcel_zoning` has an answer, its parcel's Cadastre record when `cadastre` has one (the register beside the advertised figures, with no verdict), and with location access the location figures and ranks): 3 to 5 summary sentences, strengths and watch-outs, and a verdict (strong, fair, weak, not_assessable) for quick-service restaurants, coffee and bakery, clinic and pharmacy, fitness, fashion and retail, and supermarket and convenience, each reason with the keys of the figures it rests on. Every number is checked against those figures and a sentence that fails is dropped (counted in `notes`); a missing figure is not stated, never a weakness. `scope` is with_location or listing_only. Stored per premises and inputs; the first request for new inputs waits for the model."
- Changed
claro_market_snapshot5 fields changed- changed
Input schema / properties / criteria / properties / cities / descriptionPrevious 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." - changed
Input schema / properties / criteria / properties / country / descriptionPrevious 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." - changed
Input schema / properties / criteria / properties / country / enumPrevious value: -[ - "es", - "de" -]New value: +[ + "es", + "de", + "pt" +] - changed
Input schema / properties / criteria / properties / provinces / descriptionPrevious 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." - changed
Input schema / properties / criteria / properties / provinces / items / enumPrevious 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" +]
- Changed
claro_search_premises5 fields changed- changed
Input schema / properties / criteria / properties / cities / descriptionPrevious 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." - changed
Input schema / properties / criteria / properties / country / descriptionPrevious 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." - changed
Input schema / properties / criteria / properties / country / enumPrevious value: -[ - "es", - "de" -]New value: +[ + "es", + "de", + "pt" +] - changed
Input schema / properties / criteria / properties / provinces / descriptionPrevious 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." - changed
Input schema / properties / criteria / properties / provinces / items / enumPrevious 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" +]
1 tool update
- Changed
claro_get_premises1 field changed- changed
Input schema / properties / assessment / descriptionPrevious value: -"With insights: add `site_assessment` first, a site assessment written by Gemini from this premises' own figures only (its data, its facts with their quotes, the market and competition charts, and with location access the location figures and ranks): 3 to 5 summary sentences, strengths and watch-outs, and a verdict (strong, fair, weak, not_assessable) for quick-service restaurants, coffee and bakery, clinic and pharmacy, fitness, fashion and retail, and supermarket and convenience, each reason with the keys of the figures it rests on. Every number is checked against those figures and a sentence that fails is dropped (counted in `notes`); a missing figure is not stated, never a weakness. `scope` is with_location or listing_only. Stored per premises and inputs; the first request for new inputs waits for the model."New value: +"With insights: add `site_assessment` first, a site assessment written by Gemini from this premises' own figures only (its data, its facts with their quotes, the market and competition charts, its parcel's zoning when `parcel_zoning` has an answer, and with location access the location figures and ranks): 3 to 5 summary sentences, strengths and watch-outs, and a verdict (strong, fair, weak, not_assessable) for quick-service restaurants, coffee and bakery, clinic and pharmacy, fitness, fashion and retail, and supermarket and convenience, each reason with the keys of the figures it rests on. Every number is checked against those figures and a sentence that fails is dropped (counted in `notes`); a missing figure is not stated, never a weakness. `scope` is with_location or listing_only. Stored per premises and inputs; the first request for new inputs waits for the model."
1 tool update
- Changed
claro_compare_premises2 fields changed- changed
Input schema / properties / ids / descriptionPrevious value: -"2 to 10 premises ids (pm_...) from search results."New value: +"2 to 5 premises ids (pm_...) from search results: exactly those the user asked to compare (the top 3 when they give no number)." - changed
Input schema / properties / ids / maxItemsPrevious value: -10New value: +5
1 tool update
- Changed
claro_search_plots3 fields changed- changed
Input schema / properties / criteria / descriptionPrevious value: -"Criteria as data, every field optional (leave out or send {} for all plots): regions, municipalities, zipcodes, plot_types, operation, plot_area_min, plot_area_max, sale_price_min, sale_price_max, sale_price_m2_max, commercial_use, serviced, keywords."New value: +"Criteria as data, every field optional (leave out or send {} for all plots): regions, municipalities, zipcodes, plot_types, operation, plot_area_min, plot_area_max, sale_price_min, sale_price_max, sale_price_m2_max, commercial_use, serviced, keywords, exclude_keywords." - added
Input schema / properties / criteria / properties / exclude_keywordsAdded value: +{ + "description": "Leave out plots whose text states any of these. A plot that only denies one stays: exclude \"Erbbaurecht\" keeps a plot saying \"kein Erbbaurecht\".", + "items": { + "type": "string" + }, + "type": "array" +} - changed
Input schema / properties / criteria / properties / keywords / descriptionPrevious value: -"Words or phrases the property's text must contain, all of them: \"Gleisanschluss\", \"Autobahn\"."New value: +"Words or phrases the property's text must state, all of them, as whole words: \"Gleisanschluss\", \"Erbbaurecht\". A mention the text denies (kein, keine, nicht, ohne, nie, weder before it; nicht, nie, nein, ausgeschlossen right after) does not count; the sentence that states each is in keyword_matches."
8 tool updates
- Changed
claro_compare_premises1 field changed- added
Input schema / properties / langAdded 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" +}
- Changed
claro_explain_location1 field changed- added
Input schema / properties / langAdded 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" +}
- Changed
claro_get_plot1 field changed- added
Input schema / properties / langAdded 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" +}
- Changed
claro_get_premises1 field changed- added
Input schema / properties / langAdded 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" +}
- Changed
claro_market_snapshot1 field changed- added
Input schema / properties / langAdded 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" +}
- Changed
claro_refine_search1 field changed- added
Input schema / properties / langAdded 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" +}
- Changed
claro_search_plots1 field changed- added
Input schema / properties / langAdded 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" +}
- Changed
claro_search_premises1 field changed- added
Input schema / properties / langAdded 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" +}
3 tool updates
- Changed
claro_get_premises1 field changed- removed
Input schema / properties / insights / descriptionRemoved value: -"Add `insights`, charts as data, each with a one-sentence answer, its count, scope, source and date: its asking price per m² against comparable premises nearby (same type, operation and district, half to twice its size), footfall by part of the day and where its location figures rank in the city (location access only), straight-line distances to businesses of each kind within 1 km (Overture Maps), other premises on the market within 500 m, and the monthly average asking price per m² of its type in its town over three years with the change in a year (Casafari Area Insights); `prices_here`, what active properties of its type ask per m² for rent and for sale in its district (then town, then province: the first with 10 priced units), quartiles from 10 and medians from 5, the town's rows beside it and medians by size band; `supply_flow`, from Claro's nightly count (`market_daily`, since 8 Oct 2026): units of its type and operation on the market in its town (or province) on the latest day, properties that came on and left over 30 days, and the median asking price per m² at both ends, with a note when fewer than 7 days are recorded; and `time_on_market`, the average days on the market by asking price band of properties of its type within 1 km (Casafari Area Insights; the ~500 m cell's centre when the address is hidden); and `similar`: up to six other active premises of the same type and operation, half to twice its size, within 1.5 km (from the ~500 m cell's centre for a hidden address), else its district, else its town, nearest first then closest in asking price per m², each with its id, one Casafari thumbnail and the agency's own listing page only (never a portal or a private seller). Asking prices, not agreed ones; each unit counted once. Also adds `nearby`, the map's layers: businesses of the tracked kinds within 500 m (Overture Maps; exact addresses only) and other premises on the market within 500 m as points, nearest first (a hidden address as the centre of its ~500 m cell), and the area a 5-minute walk reaches as GeoJSON MultiPolygon coordinates (location access and an exact address only). With location access and an exact address, `location_detail`: figures in groups (reach, residents, visitors, health_education, transport_parking, offices_hotels, retail_food), each with a stable key, label, value, unit, scope, source, date and a percentile in the city for figures stored for every property; the 10 nearest named places per kind with walking minutes (OpenStreetMap through Location Intelligence); and the 10-minute walk. A figure Location Intelligence does not have for the point is left out, never 0. With location access, `scorecard`: every location figure held for the premises (the stored location row, `location_detail`, `footfall_detail` and `access`), grouped as `location_detail` is, each with its scope, source and date and, for figures stored for every property, its percentile among premises of its type in the city (`city`) and in its district when 50 or more are measured there (`district`): the share with a lower figure, each unit once. Live figures carry no percentile and a note saying so; a 0 footfall or population is unknown and never ranked. `strongest` and `weakest` name the five row keys with the highest and lowest city percentiles."
- Changed
claro_refine_search1 field changed- removed
Input schema / properties / insights / descriptionRemoved 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."
- Changed
claro_search_premises2 fields changed- removed
Input schema / properties / brief / descriptionRemoved 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\"." - removed
Input schema / properties / insights / descriptionRemoved 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."
10 tool updates
- First observed
account_status - First observed
claro_brief_from_file - First observed
claro_compare_premises - First observed
claro_explain_location - First observed
claro_get_plot - First observed
claro_get_premises - First observed
claro_market_snapshot - First observed
claro_refine_search - First observed
claro_search_plots - First observed
claro_search_premises
Publisher details
- Operator
- Casafari · Publisher source
- Operator website
- https://www.casafari.com · Publisher source
- Vendor relationship
- First-party · Publisher source
- Trust center
- Not available
- Restrictions
- Requires a Casafari API and MCP Platform account: self-serve at https://platform.casafari.com/console/, Free plan with no card. Calls use units from the account's balance (place lookups and account_status are free); more units are bought in the console. Sign-in is OAuth 2.1 in the browser, with no custom OAuth app or API key needed. AgentGraph AI covers Germany and is for verified businesses only; Claro AI covers commercial premises in Spain and Germany and allows 4 searches on the Free plan. Data covers European property markets; coverage varies by country. · Publisher source
Related MCP Connectors
Search commercial real estate listings. Reads need no token; authoring is self-serve OAuth (DCR).
Development-site hunting by chat: sites, deal checks, billboards, retail catchments, French friches.
Read-only search over live UK office & workspace listings on FrankSpace.
Search business records by market with evidence. Prepaid credit; emails observed, not verified.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables querying, extracting terms, and projecting rent from commercial lease documents via MCP tools.-
- AlicenseNot gradedqualityBmaintenanceEnables agents to query read-only, source-cited commercial real estate context for Paris addresses, including past occupancy, goodwill sales, street turnover, nearby amenities, environmental risks, noise, and air quality.28 npm1Apache 2.0
- FlicenseNot gradedqualityBmaintenanceProvides source-dated Washington property evidence and transaction math, including REET, seller scenarios, and research packets, for software and AI assistants.-
- FlicenseNot gradedqualityDmaintenanceTurns open places data into AI-assisted local market intelligence, enabling search of 4.4 million UK places by category, location, and proximity, and saving promising results to a prospecting pipeline.-
Glama MCP Gateway
Add one secure layer between your agents and this server.