LivinIsto MCP
An official MCP server by LivinIsto, a Slovak housing search engine. It allows AI agents to search for residential properties (flats, houses, etc.) for sale or rent, retrieve detailed listing information, and get price-per-square-meter comparisons against local market medians. It also includes a separate intent server for publishing and tracking property search requests.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://www.livinisto.sk/mcp/zameryWhat you can do with it
- Search for properties by type, location, and price range
- Retrieve detailed information for a specific property listing
- Get price-per-square-meter verdicts for listings
- Publish and track user intent for specific housing criteria
Source and maintenance
Protocol and capabilities
- Server
- livinisto-zamery 0.1.0
- MCP protocol
- 2025-06-18
- Tools
- 5 advertised
- Resources
- Not advertised
- Resource templates
- Not advertised
- Prompts
- Not advertised
{
"tools": {
"listChanged": true
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
5 advertised
intent_publish_intent — Watch new property listings for the user (needs the user's confirmation)
Use this when the user asks LivinIsto to keep watching Slovak property listings (flats, houses, cottages, plots; for sale or rent) for them over time (e.g. "let me know until March about a 2-room flat in Žilina under 150 000 €"). This does NOT start watching by itself and takes no e-mail address or other personal data: it returns a consentUrl on www.livinisto.sk that the user must open themselves, enter their own e-mail there and confirm by clicking the link LivinIsto e-mails them. Never ask the user for their e-mail in the conversation and never open the link for them. An unconfirmed draft is deleted after 24 hours. Matching properties are e-mailed to the user and can also be read with intent_list_matches using the returned intentCode — keep it in the conversation. hiddenLimitEur is optional: the most the user would pay (for a rental, per month), stored encrypted and never shown to sellers or returned by any tool; pass it only if the user said it. Matches come from listings LivinIsto aggregates from the Slovak market (its own listings and public listings from Slovak property portals), so they cover only properties listed on LivinIsto (Slovakia only, EUR) and may be incomplete.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"statement"
],
"properties": {
"lang": {
"enum": [
"en",
"sk"
],
"type": "string",
"description": "Optional language of the replies (texts only; codes, URLs and statuses never change). By default the language of the statement."
},
"buyBy": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Date (YYYY-MM-DD) by which the user wants to buy or rent; watching stops after it."
},
"statement": {
"type": "string",
"maxLength": 300,
"minLength": 2,
"description": "What the property MUST be, as one short Slovak phrase, e.g. \"2-izbový byt Žilina do 150 000 €\" or \"prenájom 1-izbový byt Bratislava do 700 €\"."
},
"niceToHave": {
"type": "string",
"maxLength": 300,
"description": "Wishes that are not required (never filters), e.g. \"balkón, výťah\"."
},
"hiddenLimitEur": {
"type": "integer",
"maximum": 10000000,
"description": "Optional private maximum price in EUR (for a rental, per month); encrypted on receipt and never returned by any tool.",
"exclusiveMinimum": 0
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"intentCode",
"status",
"consentUrl",
"consentExpiresAt",
"statement",
"niceToHave",
"buyBy",
"hasHiddenLimit",
"understood",
"notUnderstood"
],
"properties": {
"buyBy": {
"type": [
"string",
"null"
]
},
"status": {
"enum": [
"awaiting_consent",
"awaiting_email_confirmation",
"active",
"expired",
"withdrawn"
],
"type": "string",
"description": "awaiting_consent = the user has not confirmed on the LivinIsto page yet; awaiting_email_confirmation = the user filled in the page and must click the link in the e-mail; active = LivinIsto is watching; expired = the confirmation link, the buy-by date or the intent's validity ran out; withdrawn = cancelled."
},
"statement": {
"type": "string"
},
"consentUrl": {
"type": "string",
"description": "Page on www.livinisto.sk where the USER confirms the intent with their own e-mail. Show it unchanged."
},
"intentCode": {
"type": "string",
"description": "Secret code of this intent; use it with intent_get_intent, intent_list_matches and intent_withdraw_intent."
},
"niceToHave": {
"type": [
"string",
"null"
]
},
"understood": {
"type": "array",
"items": {
"type": "string"
},
"description": "What LivinIsto will watch for, read from the statement (in Slovak). Tell the person before they confirm."
},
"notUnderstood": {
"type": "array",
"items": {
"type": "string"
},
"description": "Words of the statement that are NOT watched for as a filter. Tell the person."
},
"hasHiddenLimit": {
"type": "boolean",
"description": "Whether a hidden limit was stored. Its value is never returned."
},
"consentExpiresAt": {
"type": "string",
"description": "ISO time after which the unconfirmed draft is deleted."
}
},
"additionalProperties": false
}{
"title": "Watch new property listings",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}intent_get_intent — Get the state of a property watch
Use this to check whether an intent created with intent_publish_intent is already confirmed by the user and active, waiting, expired or withdrawn. Requires the intentCode; returns the statement and dates only — never the user's e-mail, the hidden limit or any other personal data.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"intentCode"
],
"properties": {
"intentCode": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]{32}$",
"description": "The intentCode returned by intent_publish_intent."
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"found"
],
"properties": {
"buyBy": {
"type": [
"string",
"null"
]
},
"found": {
"type": "boolean"
},
"status": {
"enum": [
"awaiting_consent",
"awaiting_email_confirmation",
"active",
"expired",
"withdrawn"
],
"type": "string",
"description": "awaiting_consent = the user has not confirmed on the LivinIsto page yet; awaiting_email_confirmation = the user filled in the page and must click the link in the e-mail; active = LivinIsto is watching; expired = the confirmation link, the buy-by date or the intent's validity ran out; withdrawn = cancelled."
},
"statement": {
"type": "string"
},
"niceToHave": {
"type": [
"string",
"null"
]
},
"validUntil": {
"type": "string",
"description": "Date (YYYY-MM-DD) until which the intent is watched (before confirmation: until the draft is deleted)."
},
"activeSince": {
"type": [
"string",
"null"
]
},
"hasHiddenLimit": {
"type": "boolean"
}
},
"additionalProperties": false
}{
"title": "Get the state of a property watch",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}intent_list_matches — List properties found for a property watch
Use this when the user asks what LivinIsto has found for an intent created with intent_publish_intent. These are the same properties LivinIsto e-mails to the user; this server cannot send messages into the conversation by itself. Requires the intentCode; optional since (ISO time) returns only newer matches. Returns at most 20 newest matches with the price and LivinIsto price verdict (per m², against comparable properties nearby) at the time of the match and a link. Before the user confirms the intent there are no matches. Matches come from listings LivinIsto aggregates from the market, so they cover only properties listed on LivinIsto and may be incomplete; a property may already be sold or rented.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"intentCode"
],
"properties": {
"since": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"description": "Only matches found after this ISO time."
},
"intentCode": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]{32}$",
"description": "The intentCode returned by intent_publish_intent."
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"found"
],
"properties": {
"more": {
"type": "boolean",
"description": "More matches exist than returned; call again with since."
},
"found": {
"type": "boolean"
},
"status": {
"enum": [
"awaiting_consent",
"awaiting_email_confirmation",
"active",
"expired",
"withdrawn"
],
"type": "string",
"description": "awaiting_consent = the user has not confirmed on the LivinIsto page yet; awaiting_email_confirmation = the user filled in the page and must click the link in the e-mail; active = LivinIsto is watching; expired = the confirmation link, the buy-by date or the intent's validity ran out; withdrawn = cancelled."
},
"matches": {
"type": "array",
"items": {
"type": "object",
"required": [
"propertyId",
"title",
"propertyType",
"transaction",
"rooms",
"roomOnly",
"areaM2",
"landAreaM2",
"city",
"cityPart",
"district",
"priceEur",
"priceIsMonthly",
"priceEurAtMatch",
"priceVerdictAtMatch",
"matchedAt",
"stillListed",
"url"
],
"properties": {
"url": {
"type": "string",
"description": "Link to the property on www.livinisto.sk — show it unchanged."
},
"city": {
"type": [
"string",
"null"
]
},
"rooms": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
]
},
"title": {
"type": "string",
"description": "Built from LivinIsto's own fields (type, rooms, place), never the seller's headline."
},
"areaM2": {
"type": [
"number",
"null"
]
},
"cityPart": {
"type": [
"string",
"null"
]
},
"district": {
"type": [
"string",
"null"
]
},
"priceEur": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Asking price today; per month for a rental. Null when the listed number is not the price of the whole property (a share, an auction, a short stay) — check the listing."
},
"roomOnly": {
"type": "boolean",
"description": "True when the rent is for a room in a shared flat, not the whole flat."
},
"matchedAt": {
"type": "string"
},
"landAreaM2": {
"type": [
"number",
"null"
]
},
"propertyId": {
"type": "string"
},
"stillListed": {
"type": "boolean"
},
"transaction": {
"enum": [
"sale",
"rent"
],
"type": "string"
},
"propertyType": {
"enum": [
"byt",
"dom",
"chata",
"pozemok",
"apartman"
],
"type": "string"
},
"priceIsMonthly": {
"type": "boolean"
},
"priceEurAtMatch": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
]
},
"priceVerdictAtMatch": {
"anyOf": [
{
"enum": [
"below_market",
"around_market",
"above_market"
],
"type": "string"
},
{
"type": "null"
}
]
}
},
"additionalProperties": false
}
}
},
"additionalProperties": false
}{
"title": "List properties found for a property watch",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}intent_withdraw_intent — Stop a property watch
Use this when the user wants LivinIsto to stop watching for an intent created with intent_publish_intent. Takes effect immediately; nothing more is e-mailed for it. Requires the intentCode.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"intentCode"
],
"properties": {
"intentCode": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]{32}$",
"description": "The intentCode returned by intent_publish_intent."
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"found"
],
"properties": {
"found": {
"type": "boolean"
},
"status": {
"enum": [
"withdrawn"
],
"type": "string"
}
},
"additionalProperties": false
}{
"title": "Stop a property watch",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": true
}intent_search_offers — Search properties LivinIsto offers today
Use this when the user wants to find a flat, house, cottage or plot for sale or rent in Slovakia now. Pass what they are looking for as one short phrase (Slovak works best), e.g. "2-izbový byt Bratislava do 200000 €". Returns up to 20 properties from LivinIsto's offer in LivinIsto's own order, each with a link to the property on www.livinisto.sk, plus what was understood, which words were not applied and what had to be relaxed. For rent the price is per month. When suggestIntent is true (nothing or little found, or part of the phrase was dropped), offer the user intent_publish_intent with the same statement so LivinIsto keeps watching. Results come from listings LivinIsto aggregates from the Slovak market and may be incomplete; no seller or agent contact is returned.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"statement"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 20,
"minimum": 1,
"description": "At most this many properties (default 10; LivinIsto returns at most 10)."
},
"statement": {
"type": "string",
"maxLength": 300,
"minLength": 2,
"description": "What the user is looking for, e.g. \"dom Žilina do 250000 €\"."
}
}
}{
"title": "Search properties LivinIsto offers today",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}Prompts
Not advertised
Resources
Not advertised
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 786 ms
- 95th percentile latency
- 786 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 786 ms · metadata changed · 5 tool(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http livinisto-mcp https://www.livinisto.sk/mcp/zameryCodex
codex mcp add livinisto-mcp --url https://www.livinisto.sk/mcp/zameryCursor
{
"mcpServers": {
"livinisto-mcp": {
"url": "https://www.livinisto.sk/mcp/zamery"
}
}
}Cline
{
"mcpServers": {
"livinisto-mcp": {
"type": "streamableHttp",
"url": "https://www.livinisto.sk/mcp/zamery",
"disabled": false
}
}
}VS Code
{
"servers": {
"livinisto-mcp": {
"type": "http",
"url": "https://www.livinisto.sk/mcp/zamery"
}
}
}Gemini CLI
gemini mcp add --transport http livinisto-mcp https://www.livinisto.sk/mcp/zameryClaude Desktop
{
"mcpServers": {
"livinisto-mcp": {
"url": "https://www.livinisto.sk/mcp/zamery"
}
}
}Windsurf
{
"mcpServers": {
"livinisto-mcp": {
"serverUrl": "https://www.livinisto.sk/mcp/zamery"
}
}
}Let your agent find its tools
Find servers like LivinIsto MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.
Other crm, sales, and marketing servers
Do you run LivinIsto MCP?
Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.