LivinIsto
Flats, houses and plots for sale or rent in Slovakia: search, price verdicts and prices per m².
我该使用它吗
质量与安全性
基于对工具定义和协议合规性的自动分析。
上下文开销
这是每次将服务器的工具加载到模型上下文窗口时所消耗的大致 token 数。数值越高,可用于其他任务的注意力就越少。
安装
一键安装
将以下内容添加到你的 `claude_desktop_config.json` 文件中:
{
"mcpServers": {
"real-estate": {
"url": "https://www.livinisto.sk/mcp"
}
}
}远程端点
https://www.livinisto.sk/mcpstreamable-http它能做什么
工具清单
工具(3)
🟢search_properties(query)
Use this when the user wants to find a home in Slovakia — a flat, house, cottage or building plot for sale or for rent — by type, rooms, place (town, Bratislava/Košice borough, district or region), price, area, floor, condition or amenities (balcony, lift, parking, cellar). Covers listings agencies and owners published on LivinIsto directly and public listings from Slovak property portals. Pass the criteria as ONE short phrase in Slovak, with numbers as the user said them. Sale is the default; for rent write "prenájom". Examples that are fully understood: "2-izbový byt Žilina do 180000 €", "prenájom 1-izbový byt Bratislava do 700 €", "rodinný dom okres Senec do 350000 €", "pozemok Trnava od 600 m2". Words the rules do not recognise are searched in the listing text (at most 6); words that were not applied (too short, beyond that limit, impressions like lacný or pekný, unmet negations like "bez záhrady", places abroad) are listed in notUnderstood. Returns up to 10 properties with price, price per m² and price verdict, LivinIsto's own summary sentence, what was understood, which criteria were relaxed when nothing matched exactly, and a link to all results. Limits: only properties currently listed on LivinIsto in Slovakia (no property abroad, no commercial premises, no short holiday stays); prices in EUR, rents per month; asking prices, not sale prices; a listing may already be sold.
输入模式
{
"type": "object",
"properties": {
"query": {
"type": "string",
"minLength": 2,
"maxLength": 300,
"description": "Concrete criteria in Slovak, e.g. \"2-izbový byt Žilina do 180000 €\" or \"prenájom 1-izbový byt Bratislava do 700 €\"."
}
},
"required": [
"query"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}输出模式
{
"type": "object",
"properties": {
"query": {
"type": "string"
},
"summary": {
"type": "string",
"description": "LivinIsto's own sentence about the result (what was found, where, what was relaxed), in Slovak."
},
"understood": {
"type": "array",
"items": {
"type": "string"
},
"description": "Filters LivinIsto applied, in Slovak (e.g. byt, 2-izbový, Žilina, do 180 000 €, predaj)."
},
"relaxed": {
"type": "array",
"items": {
"type": "string"
},
"description": "Criteria dropped because nothing matched exactly."
},
"notUnderstood": {
"type": "array",
"items": {
"type": "string"
},
"description": "Words from the query that were NOT applied (too short, unmet negation, impression words like lacný, place abroad, words not found in any listing). Empty together with empty relaxed = the results match everything in the query."
},
"totalMatches": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "How many properties in the offer match (after relaxing, if any)."
},
"properties": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Stable LivinIsto property id; pass it to get_property_details."
},
"title": {
"type": "string",
"description": "What it is and where, assembled by LivinIsto (e.g. \"2-izbový byt, Žilina · Vlčince\") — never the seller's own headline."
},
"propertyType": {
"type": "string",
"enum": [
"byt",
"dom",
"chata",
"pozemok",
"apartman"
],
"description": "byt = flat, dom = house, chata = cottage / holiday home, pozemok = building plot, apartman = apartment."
},
"transaction": {
"type": "string",
"enum": [
"sale",
"rent"
]
},
"priceEur": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
],
"description": "Asking price in EUR (per month for rent). null = the number in the ad is NOT the price of the whole property — see priceNote; never quote one."
},
"priceIsMonthly": {
"type": "boolean",
"description": "True for rent: priceEur and pricePerM2Eur are per month."
},
"pricePerM2Eur": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
],
"description": "Asking price per m² of floor area (or of the plot for pozemok); null when area or price is unknown or not real."
},
"priceNote": {
"description": "Why the price is missing or what it means (co-ownership share, auction, room only…), in Slovak. Tell the user.",
"type": [
"string",
"null"
]
},
"rooms": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
],
"description": "Number of rooms; null when not stated (or when only a room is rented)."
},
"areaM2": {
"description": "Floor area in m²; null when not stated.",
"type": [
"number",
"null"
]
},
"landAreaM2": {
"description": "Plot area in m²; null when not stated.",
"type": [
"number",
"null"
]
},
"floor": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
],
"description": "Floor (0 = ground floor); null when not stated."
},
"city": {
"type": [
"string",
"null"
]
},
"cityPart": {
"description": "Borough of Bratislava or Košice, when known.",
"type": [
"string",
"null"
]
},
"district": {
"description": "Okres (district).",
"type": [
"string",
"null"
]
},
"roomOnly": {
"type": "boolean",
"description": "True when the rent is for a room in a shared flat, not the whole flat."
},
"reserved": {
"type": "boolean",
"description": "The source marks it as reserved."
},
"priceVerdict": {
"anyOf": [
{
"type": "string",
"enum": [
"below_market",
"around_market",
"above_market"
]
},
{
"type": "null"
}
],
"description": "LivinIsto price verdict per m² against comparable properties (same type, place, rooms or size). null = not enough comparable listings, too dispersed, or the price is not a plain price."
},
"priceSavingPerM2Eur": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
],
"description": "EUR per m² below the median of comparable listings; only set when priceVerdict is below_market."
},
"comparableListings": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
],
"description": "How many comparable listings the saving is computed from."
},
"source": {
"type": "string",
"description": "Where the listing comes from (portal name, or LivinIsto for a listing published on LivinIsto directly)."
},
"url": {
"type": "string",
"description": "Link to the property on www.livinisto.sk — show it to the user unchanged."
},
"photoUrl": {
"type": [
"string",
"null"
]
}
},
"required": [
"id",
"title",
"propertyType",
"transaction",
"priceEur",
"priceIsMonthly",
"pricePerM2Eur",
"priceNote",
"rooms",
"areaM2",
"landAreaM2",
"floor",
"city",
"cityPart",
"district",
"roomOnly",
"reserved",
"priceVerdict",
"priceSavingPerM2Eur",
"comparableListings",
"source",
"url",
"photoUrl"
],
"additionalProperties": false
},
"description": "Up to 10 properties in LivinIsto's order."
},
"allResultsUrl": {
"type": "string",
"description": "All matching properties on www.livinisto.sk."
},
"note": {
"type": [
"string",
"null"
]
}
},
"required": [
"query",
"summary",
"understood",
"relaxed",
"notUnderstood",
"totalMatches",
"properties",
"allResultsUrl",
"note"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}🟢get_property_details(propertyId)
Use this when the user asks for more about one specific property returned by search_properties (floor, number of floors, condition, construction, ownership, energy certificate, year built, balcony, lift, parking, cellar, price history). Requires the property id from search_properties; do not guess ids. Returns facts LivinIsto read from the listing and its price verdict; it does not return the agent's or seller's name, phone, e-mail, the ad's own text or an exact address — for contact the user opens the property's url. If the property is no longer in the offer, found is false.
输入模式
{
"type": "object",
"properties": {
"propertyId": {
"type": "string",
"minLength": 8,
"maxLength": 40,
"description": "The id of a property from search_properties results."
}
},
"required": [
"propertyId"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}输出模式
{
"type": "object",
"properties": {
"found": {
"type": "boolean"
},
"property": {
"anyOf": [
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Stable LivinIsto property id; pass it to get_property_details."
},
"title": {
"type": "string",
"description": "What it is and where, assembled by LivinIsto (e.g. \"2-izbový byt, Žilina · Vlčince\") — never the seller's own headline."
},
"propertyType": {
"type": "string",
"enum": [
"byt",
"dom",
"chata",
"pozemok",
"apartman"
],
"description": "byt = flat, dom = house, chata = cottage / holiday home, pozemok = building plot, apartman = apartment."
},
"transaction": {
"type": "string",
"enum": [
"sale",
"rent"
]
},
"priceEur": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
],
"description": "Asking price in EUR (per month for rent). null = the number in the ad is NOT the price of the whole property — see priceNote; never quote one."
},
"priceIsMonthly": {
"type": "boolean",
"description": "True for rent: priceEur and pricePerM2Eur are per month."
},
"pricePerM2Eur": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
],
"description": "Asking price per m² of floor area (or of the plot for pozemok); null when area or price is unknown or not real."
},
"priceNote": {
"description": "Why the price is missing or what it means (co-ownership share, auction, room only…), in Slovak. Tell the user.",
"type": [
"string",
"null"
]
},
"rooms": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
],
"description": "Number of rooms; null when not stated (or when only a room is rented)."
},
"areaM2": {
"description": "Floor area in m²; null when not stated.",
"type": [
"number",
"null"
]
},
"landAreaM2": {
"description": "Plot area in m²; null when not stated.",
"type": [
"number",
"null"
]
},
"floor": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
],
"description": "Floor (0 = ground floor); null when not stated."
},
"city": {
"type": [
"string",
"null"
]
},
"cityPart": {
"description": "Borough of Bratislava or Košice, when known.",
"type": [
"string",
"null"
]
},
"district": {
"description": "Okres (district).",
"type": [
"string",
"null"
]
},
"roomOnly": {
"type": "boolean",
"description": "True when the rent is for a room in a shared flat, not the whole flat."
},
"reserved": {
"type": "boolean",
"description": "The source marks it as reserved."
},
"priceVerdict": {
"anyOf": [
{
"type": "string",
"enum": [
"below_market",
"around_market",
"above_market"
]
},
{
"type": "null"
}
],
"description": "LivinIsto price verdict per m² against comparable properties (same type, place, rooms or size). null = not enough comparable listings, too dispersed, or the price is not a plain price."
},
"priceSavingPerM2Eur": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
],
"description": "EUR per m² below the median of comparable listings; only set when priceVerdict is below_market."
},
"comparableListings": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
],
"description": "How many comparable listings the saving is computed from."
},
"source": {
"type": "string",
"description": "Where the listing comes from (portal name, or LivinIsto for a listing published on LivinIsto directly)."
},
"url": {
"type": "string",
"description": "Link to the property on www.livinisto.sk — show it to the user unchanged."
},
"photoUrl": {
"type": [
"string",
"null"
]
},
"totalFloors": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
]
},
"condition": {
"type": [
"string",
"null"
]
},
"construction": {
"type": [
"string",
"null"
]
},
"ownership": {
"type": [
"string",
"null"
]
},
"energyCertificate": {
"type": [
"string",
"null"
]
},
"buildYear": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
]
},
"balcony": {
"description": "null = the source does not say.",
"type": [
"boolean",
"null"
]
},
"lift": {
"type": [
"boolean",
"null"
]
},
"parking": {
"type": [
"boolean",
"null"
]
},
"cellar": {
"type": [
"boolean",
"null"
]
},
"photoCount": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"priceHistory": {
"type": "array",
"items": {
"type": "object",
"properties": {
"date": {
"type": "string"
},
"priceEur": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
}
},
"required": [
"date",
"priceEur"
],
"additionalProperties": false
},
"description": "Prices LivinIsto has seen for this listing, oldest first (only when the price is a real price)."
}
},
"required": [
"id",
"title",
"propertyType",
"transaction",
"priceEur",
"priceIsMonthly",
"pricePerM2Eur",
"priceNote",
"rooms",
"areaM2",
"landAreaM2",
"floor",
"city",
"cityPart",
"district",
"roomOnly",
"reserved",
"priceVerdict",
"priceSavingPerM2Eur",
"comparableListings",
"source",
"url",
"photoUrl",
"totalFloors",
"condition",
"construction",
"ownership",
"energyCertificate",
"buildYear",
"balcony",
"lift",
"parking",
"cellar",
"photoCount",
"priceHistory"
],
"additionalProperties": false
},
{
"type": "null"
}
]
},
"note": {
"type": [
"string",
"null"
]
}
},
"required": [
"found",
"property",
"note"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}🟢get_price_per_m2(location, propertyType, transaction, rooms)
Use this when the user asks how much property costs per m² in a Slovak town, borough or district, or whether a price per m² is reasonable there. Returns the median ASKING price per m² of comparable listings in LivinIsto's current offer (the same figure as LivinIsto's price estimate), the sample size, the middle range, which group it comes from (borough, town or district) and the date. The median is omitted below 8 comparable listings. An unknown place returns found false — there is no nationwide fallback, because prices differ several times between regions. Do not use it to value a specific property's condition, for commercial property or for places outside Slovakia.
输入模式
{
"type": "object",
"properties": {
"location": {
"type": "string",
"minLength": 2,
"maxLength": 80,
"description": "Town, Bratislava/Košice borough or district in Slovak, e.g. Žilina, Petržalka, Košice, okres Senec."
},
"propertyType": {
"description": "byt (flat, default), dom (house), chata (cottage), pozemok (building plot), apartman (apartment).",
"type": "string",
"enum": [
"byt",
"dom",
"chata",
"pozemok",
"apartman"
]
},
"transaction": {
"description": "predaj = sale (default), prenajom = rent (then the figure is per month).",
"type": "string",
"enum": [
"predaj",
"prenajom"
]
},
"rooms": {
"description": "Number of rooms for flats (5 = 5 or more).",
"type": "integer",
"minimum": 1,
"maximum": 5
}
},
"required": [
"location"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}输出模式
{
"type": "object",
"properties": {
"found": {
"type": "boolean"
},
"city": {
"type": [
"string",
"null"
]
},
"cityPart": {
"type": [
"string",
"null"
]
},
"district": {
"type": [
"string",
"null"
]
},
"propertyType": {
"type": "string",
"enum": [
"byt",
"dom",
"chata",
"pozemok",
"apartman"
]
},
"transaction": {
"type": "string",
"enum": [
"sale",
"rent"
]
},
"rooms": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
]
},
"scope": {
"type": "string",
"enum": [
"city_part",
"city_rooms",
"city_size",
"city",
"district_size",
"district",
"none"
],
"description": "Which group of comparable listings the median comes from — say it, the borough and the whole okres are different facts."
},
"scopeDescription": {
"description": "The same in Slovak.",
"type": [
"string",
"null"
]
},
"scopePlace": {
"description": "The place the median actually covers (borough, town or okres) — may be wider than the place asked for; say so.",
"type": [
"string",
"null"
]
},
"medianPricePerM2Eur": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
],
"description": "Median ASKING price per m²; null when fewer than 8 comparable listings."
},
"priceIsMonthly": {
"type": "boolean",
"description": "True for rent: the median is per m² per month."
},
"quartilesPerM2Eur": {
"anyOf": [
{
"type": "array",
"items": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
}
},
{
"type": "null"
}
],
"description": "Middle half of the group (1st and 3rd quartile), per m²."
},
"sampleSize": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"dispersed": {
"type": "boolean",
"description": "Listings in the group differ a lot in price per m² — present the median as a weak guide."
},
"asOf": {
"type": "string",
"description": "Date of the figures (YYYY-MM-DD)."
},
"estimateUrl": {
"description": "LivinIsto's free price estimate page for this place (sale only).",
"type": [
"string",
"null"
]
},
"listingsUrl": {
"description": "The matching listings on www.livinisto.sk.",
"type": [
"string",
"null"
]
},
"note": {
"type": [
"string",
"null"
]
}
},
"required": [
"found",
"city",
"cityPart",
"district",
"propertyType",
"transaction",
"rooms",
"scope",
"scopeDescription",
"scopePlace",
"medianPricePerM2Eur",
"priceIsMonthly",
"quartilesPerM2Eur",
"sampleSize",
"dispersed",
"asOf",
"estimateUrl",
"listingsUrl",
"note"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}社区
证据