Platform
Get started

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

Area Insights · MCP tool

area-insights_count_sales_by_type

Number of registered sales by property type

Read-only45 parameters

Call it as area-insights_count_sales_by_type on the Area Insights MCP server, https://platform.casafari.com/mcp/area-insights (how to connect).

Over REST: no operation in the public API description does this. MCP and REST compared.

What does Number of registered sales by property type do?

How many registered sales an area of Spain, France, Italy or Poland had (Portugal has no sales counts), by property type: what kind of properties actually sell there. empty_type_count counts sales whose property type the source does not give. Give country and location_boundary; sold_at_range and the other filters narrow the sales counted. Sale prices, not asking prices: for asking prices use the other Area Insights tools.

Which parameters does area-insights_count_sales_by_type take?

countrystringrequired
ES (Spain), FR (France), IT (Italy), PL (Poland) or PT (Portugal: INE's official median per m² by municipality and quarter; area as location_ids, a circle or a polygon, only types and sold_at_range as filters, no counts) or AT (Austria: yearly open-data prices per m² by municipality, district or state; location_ids only; no counts; not available until Casafari names its source).
ES FR IT PL PT AT
location_boundaryobjectrequired
The area: exactly one of location_ids (from Location Lookup), circle or polygon.
3 properties
location_idsinteger[]
Location ids from Location Lookup (locations_search), all in the request's country.
1–100 items≥ 1
circleobject
A circle: its centre and radius in metres (1 to 50 000).
2 properties
coordinatesobjectrequired
2 properties
latnumberrequired
-90–90
lonnumberrequired
-180–180
radius_in_metersnumberrequired
1–50000
polygonobject[]
A closed polygon: at least 4 points, the last equal to the first.
4–1000 items
2 properties
latnumberrequired
-90–90
lonnumberrequired
-180–180
sold_at_rangeobject
Sale dates, YYYY-MM-DD: {"gte": "2024-01-01"}, an upper bound with lte, or both (or gt / lt).
4 properties
gtestring (date)
pattern ^\d{4}-\d{2}-\d{2}$
gtstring (date)
pattern ^\d{4}-\d{2}-\d{2}$
ltestring (date)
pattern ^\d{4}-\d{2}-\d{2}$
ltstring (date)
pattern ^\d{4}-\d{2}-\d{2}$
typesstring[]
Property types, lower case, e.g. ["apartment", "penthouse"] or ["house", "villa"].
1–40 itemsat most 40 characterspattern ^[a-z][a-z_]*$
type_groupsstring[]
Property type groups, e.g. ["apartment", "house"].
apartment house room building investment plot other
1–7 items
conditionsstring[]
Spain, Italy and Poland only: property condition, any of used, ruin, very-good, new, other.
used ruin very-good new other
1–5 items
with_mortgageboolean
Spain only: true for sales financed with a mortgage, false for sales without one.
price_rangeobject
Registered sale price in euros: {"gte": n, "lte": n} (or gt / lt); at least one bound.
4 properties
gtenumber
≥ 0
gtnumber
≥ 0
ltenumber
≥ 0
ltnumber
≥ 0
price_per_sqm_rangeobject
Registered sale price per square metre in euros: {"gte": n, "lte": n} (or gt / lt); at least one bound.
4 properties
gtenumber
≥ 0
gtnumber
≥ 0
ltenumber
≥ 0
ltnumber
≥ 0
total_area_rangeobject
Built area in square metres: {"gte": n, "lte": n} (or gt / lt); at least one bound.
4 properties
gtenumber
≥ 0
gtnumber
≥ 0
ltenumber
≥ 0
ltnumber
≥ 0
plot_area_rangeobject
France and Poland only: plot area in square metres: {"gte": n, "lte": n} (or gt / lt); at least one bound.
4 properties
gtenumber
≥ 0
gtnumber
≥ 0
ltenumber
≥ 0
ltnumber
≥ 0
bedrooms_rangeobject
France only: bedrooms: {"gte": n, "lte": n} (or gt / lt); at least one bound.
4 properties
gteinteger
≥ 0
gtinteger
≥ 0
lteinteger
≥ 0
ltinteger
≥ 0

How do I call area-insights_count_sales_by_type?

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": "area-insights_count_sales_by_type",
    "arguments": {
      "country": "ES",
      "location_boundary": {
        "location_ids": [
          1
        ]
      }
    }
  }
}

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