Platform

Casafari is the AI agent-native real estate data intelligence platform. The most complete property index in Europe: a deduplicated, cleaned property graph of residential and commercial property, for sale and for rent, in 16 countries.The most complete property index in Europe: a deduplicated, cleaned property graph.

How the graph is built

Claro AI · MCP tool

refine_search

Refine a search

Read-only9 parameters

Call it as refine_search on the Claro AI MCP server, https://platform.casafari.com/mcp/claro (how to connect).

Over REST: POST /v1/search/refine (equivalent). MCP and REST compared.

What does Refine a search do?

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. Uses the search_id from search_premises; searches are kept 24 hours. Results as search_premises gives them, location figures with location_sources. Up to 200 results a page (50 with a publishable key). next_cursor gets the next page: send it as cursor (alone, with limit if you like); the order is fixed when the search runs and stays the same for its 24 hours, so pages never repeat or skip a premises. page gives offset, limit and the total ranked. The read-through (check) runs only for pages of up to 50. stated_only: true pages through only the matches that state every criterion (those with a point not stated or not met are left out; counts still gives both totals, page.total the set being paged); send it with the first search, or with search_id to page a stored search's stated matches without searching again, and its next_cursor keeps it. search_id with offset (and no brief, criteria or change) returns that search's page from that place. pins_only: true with search_id (or a cursor) returns just each match's pin, pins (id, lat, lon, precision, plus type, district, rent and sale price, size and the day it was first listed, listed_since, each null when not stated), up to 2000 a page, for a map.

Which parameters does refine_search take?

search_idstringrequired
The search_id from search_premises or an earlier refine_search (kept 24 hours).
changestring
What to change, in plain words. Required unless cursor is sent.
limitinteger
Results a page, up to 200; above 50 check is off.
1–200default 10
cursorstring
next_cursor from an earlier answer: returns that search's next page, same criteria and order. Send without brief, criteria or change.
stated_onlyboolean
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.
offsetinteger
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.
≥ 0
checkboolean
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.
default true
insightsboolean
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.
default false
langstring
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 de
default "en"

How do I call refine_search?

Required arguments only, with placeholder values. Your assistant fills them in from the parameters above.

JSON-RPC
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "refine_search",
    "arguments": {
      "search_id": "…"
    }
  }
}

Tip: add .md to any URL to read it as Markdown.