Koskamo

LivinIsto Intent MCP

An official MCP server operated by AutoIsto s. r. o. that allows AI assistants to publish, retrieve, list, and withdraw home-buying intent notifications on behalf of users, enabling watch-listing functionality for Czech residential real estate.

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.

LivinIsto Intent MCP logo, by AutoIsto s. r. o.Vendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-01Operated by AutoIsto s. r. o.
MCP endpoint (Streamable HTTP)
https://www.livinisto.cz/mcp/zamery
Vendor documentation

What you can do with it

  • Publish a home-buying wish
  • Retrieve intent status
  • List matching offers
  • Withdraw an intent

Source and maintenance

Vendor evidenceRegistry 0.1.1

Protocol and capabilities

Server
livinisto-cz-zamery 0.1.0
MCP protocol
2025-06-18
Tools
5 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": true
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

This server lets a person ask LivinIsto, a Czech property listings portal, to keep watching new homes for sale or rent for them (an "intent", Isto Intents protocol v0.1). Use intent_publish_intent when the user wants to be told about matching homes over time. It returns a consentUrl: the USER must open it, enter their own e-mail there and confirm the link LivinIsto e-mails them — nothing is watched before that. Never ask for or pass the user's e-mail, and never open or fill in the link for them. Keep the returned intentCode in the conversation; use intent_get_intent for the state, intent_list_matches for found homes and intent_withdraw_intent to stop. Use intent_search_offers to see what LivinIsto offers today; when it answers suggestIntent: true, offer intent_publish_intent with the same statement. Matches cover only homes listed on LivinIsto (Czech Republic, prices in CZK, rents monthly) and may be incomplete. Show every url unchanged. Intent servers for other countries and categories are listed in the Isto Intents Registry: https://istointents.org/registry.json.

Tools

5 advertised

intent_publish_intent — Watch new Czech property listings for the user (needs the user's confirmation)
Advertised by the server during the last successful anonymous check.

Use this when the user asks LivinIsto to keep watching Czech property listings (flats, houses, cottages, building plots; sale or rent) for them over time (e.g. "let me know until March about a 2+kk flat in Brno under 5 million CZK"). This does NOT start watching by itself and takes no e-mail address or other personal data: it returns a consentUrl on www.livinisto.cz 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 homes are e-mailed to the user and can also be read with intent_list_matches using the returned intentCode — keep it in the conversation. hiddenLimitCzk is optional: the most the user would pay in CZK (monthly for rent), 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 Czech market (its own listings and public listings from Czech property portals), so they cover only homes listed on LivinIsto (Czech Republic, prices in CZK) and may be incomplete; no commercial property and nothing abroad.

intent_publish_intent input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "statement"
  ],
  "properties": {
    "lang": {
      "enum": [
        "en",
        "cs"
      ],
      "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 home MUST be, as one short Czech phrase, e.g. \"byt 2+kk Brno do 5 milionů\" or \"pronájem 1+kk Praha do 18000\"."
    },
    "niceToHave": {
      "type": "string",
      "maxLength": 300,
      "description": "Wishes that are not required (never filters), e.g. \"balkon, výtah\"."
    },
    "hiddenLimitCzk": {
      "type": "integer",
      "maximum": 250000000,
      "description": "Optional private maximum price in CZK (monthly for rent); encrypted on receipt and never returned by any tool.",
      "exclusiveMinimum": 0
    }
  }
}
intent_publish_intent output schema
{
  "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.cz 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 Czech). 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
}
intent_publish_intent annotations
{
  "title": "Watch new Czech property listings",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
intent_get_intent — Get the state of a property watch
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

intent_get_intent input schema
{
  "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."
    }
  }
}
intent_get_intent output schema
{
  "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
}
intent_get_intent annotations
{
  "title": "Get the state of a property watch",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
intent_list_matches — List homes found for a property watch
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use this when the user asks what LivinIsto has found for an intent created with intent_publish_intent. These are the same homes 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 asking price and LivinIsto price verdict 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 homes listed on LivinIsto and may be incomplete; a home may already be sold or rented.

intent_list_matches input schema
{
  "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."
    }
  }
}
intent_list_matches output schema
{
  "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",
          "name",
          "propertyType",
          "transaction",
          "layout",
          "roomOnly",
          "areaM2",
          "location",
          "priceCzk",
          "priceText",
          "priceNote",
          "priceCzkAtMatch",
          "priceVerdictAtMatch",
          "matchedAt",
          "stillListed",
          "url"
        ],
        "properties": {
          "url": {
            "type": "string",
            "description": "Link to the listing on www.livinisto.cz — show it unchanged."
          },
          "name": {
            "type": "string",
            "description": "Property type and layout in Czech, e.g. \"Byt 2+kk\" or \"Rodinný dům\"."
          },
          "areaM2": {
            "anyOf": [
              {
                "type": "integer",
                "maximum": 9007199254740991,
                "minimum": -9007199254740991
              },
              {
                "type": "null"
              }
            ]
          },
          "layout": {
            "type": [
              "string",
              "null"
            ],
            "description": "Czech layout, e.g. 2+kk or 3+1."
          },
          "location": {
            "type": [
              "string",
              "null"
            ],
            "description": "Municipality and part as stated in the listing."
          },
          "priceCzk": {
            "anyOf": [
              {
                "type": "integer",
                "maximum": 9007199254740991,
                "minimum": -9007199254740991
              },
              {
                "type": "null"
              }
            ],
            "description": "Asking price today in CZK (monthly for rent). null = the listing states no real price for the whole property — see priceNote; never present any number for it."
          },
          "roomOnly": {
            "type": "boolean",
            "description": "A room in a shared flat, not the whole flat."
          },
          "matchedAt": {
            "type": "string"
          },
          "priceNote": {
            "type": [
              "string",
              "null"
            ],
            "description": "Why no price is shown, in Czech."
          },
          "priceText": {
            "type": [
              "string",
              "null"
            ]
          },
          "propertyId": {
            "type": "string",
            "description": "LivinIsto listing id."
          },
          "stillListed": {
            "type": "boolean"
          },
          "transaction": {
            "enum": [
              "sale",
              "rent"
            ],
            "type": "string"
          },
          "propertyType": {
            "type": "string",
            "description": "byt (flat), dum (house), chata (cottage), pozemek (building plot), apartman."
          },
          "priceCzkAtMatch": {
            "anyOf": [
              {
                "type": "integer",
                "maximum": 9007199254740991,
                "minimum": -9007199254740991
              },
              {
                "type": "null"
              }
            ],
            "description": "Asking price when LivinIsto matched it."
          },
          "priceVerdictAtMatch": {
            "anyOf": [
              {
                "enum": [
                  "below_market",
                  "around_market",
                  "above_market"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false
      }
    }
  },
  "additionalProperties": false
}
intent_list_matches annotations
{
  "title": "List homes found for a property watch",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
intent_withdraw_intent — Stop a property watch
Advertised by the server during the last successful anonymous check.
Advertised destructive

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.

intent_withdraw_intent input schema
{
  "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."
    }
  }
}
intent_withdraw_intent output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "found"
  ],
  "properties": {
    "found": {
      "type": "boolean"
    },
    "status": {
      "enum": [
        "withdrawn"
      ],
      "type": "string"
    }
  },
  "additionalProperties": false
}
intent_withdraw_intent annotations
{
  "title": "Stop a property watch",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": true
}
intent_search_offers — Search homes LivinIsto offers today
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use this when the user wants to find a flat, house, cottage or plot for sale or rent in the Czech Republic now. Pass what they are looking for as one short phrase (Czech works best), e.g. "byt 2+kk Brno do 6 milionů". Returns up to 20 homes from LivinIsto's offer in LivinIsto's own order, each with a link to the home on www.livinisto.cz, 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 Czech market and may be incomplete; no seller or agent contact is returned.

intent_search_offers input schema
{
  "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 homes (default 10; LivinIsto returns at most 10)."
    },
    "statement": {
      "type": "string",
      "maxLength": 300,
      "minLength": 2,
      "description": "What the user is looking for, e.g. \"dům Plzeň do 8 milionů\"."
    }
  }
}
intent_search_offers annotations
{
  "title": "Search homes LivinIsto offers today",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

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
876 ms
95th percentile latency
876 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 876 ms · metadata changed · 5 tool(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http livinisto-intent-mcp https://www.livinisto.cz/mcp/zamery

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add livinisto-intent-mcp --url https://www.livinisto.cz/mcp/zamery

Cursor

Merge this server into .cursor/mcp.json in your project, then enable livinisto-intent-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "livinisto-intent-mcp": {
      "url": "https://www.livinisto.cz/mcp/zamery"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "livinisto-intent-mcp": {
      "type": "streamableHttp",
      "url": "https://www.livinisto.cz/mcp/zamery",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start livinisto-intent-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "livinisto-intent-mcp": {
      "type": "http",
      "url": "https://www.livinisto.cz/mcp/zamery"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http livinisto-intent-mcp https://www.livinisto.cz/mcp/zamery

Claude Desktop

Merge this into claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\), then restart Claude Desktop.
Claude Desktop configuration
{
  "mcpServers": {
    "livinisto-intent-mcp": {
      "url": "https://www.livinisto.cz/mcp/zamery"
    }
  }
}

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "livinisto-intent-mcp": {
      "serverUrl": "https://www.livinisto.cz/mcp/zamery"
    }
  }
}

Let your agent find its tools

Find servers like LivinIsto Intent MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.

Do you run LivinIsto Intent 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.

Claim this listing