livo-ge-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@livo-ge-mcpfind 2-bedroom apartments for rent in Vake, Tbilisi"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
livo-ge-mcp
MCP-сервер над livo.ge - порталом недвижимости группы tnet (бывший myhome.ge).
Прозрачный stateless-прокси: один вызов инструмента = один-несколько живых запросов. Между вызовами кешируются только два справочника (локации и словари, TTL 6 часов); объявления не кешируются никогда.
У livo.ge нет публичного API. Контракт восстановлен реверс-инжинирингом бандлов
Next.js и проверен живыми запросами - разбор в docs/API.md.
Установка
claude mcp add livo-ge --scope user -- npx -y livo-ge-mcp@1Нужен Node >= 20. Клонировать и ставить вручную ничего не надо: npx сам скачает пакет
из npm и закеширует. @1 фиксирует мажорную версию, обновления внутри неё приезжают
сами, а ломающий релиз молча не подменит сервер.
Проверить, что сервер подключился: claude mcp list.
Для клиентов с JSON-конфигом (Claude Desktop, Cursor, Windsurf):
{
"mcpServers": {
"livo-ge": {
"command": "npx",
"args": ["-y", "livo-ge-mcp@1"],
"env": { "LIVO_LOCALE": "ru" }
}
}
}git clone https://github.com/nosuchip/livo-ge-mcp && cd livo-ge-mcp && npm install
claude mcp add livo-ge --scope user -- node "$PWD/src/index.mjs"
npm test # смоук-тест, ходит в сеть по-настоящемуНастройки
Переменная | По умолчанию | Что делает |
|
|
|
|
| Минимальный интервал между запросами, глобально |
Задать при установке: claude mcp add livo-ge --scope user -e LIVO_LOCALE=en -- npx -y livo-ge-mcp@1.
Related MCP server: Qobrix CRM MCP Server
Инструменты
Инструмент | Что делает |
| Инструкции: |
| Число объявлений под фильтр, без выкачивания. Один дешёвый запрос |
| Поиск. Отдаёт |
| Полная карточка: описание, удобства, координаты, кадастр, просмотры, настоящая дата публикации |
| Города, районы, микрорайоны с id; |
| Словари id → название для фильтров, которые принимают только id |
| Новостройки (проекты застройщиков) - отдельный набор данных |
Фильтр принимает человеческие названия на любом из трёх языков сайта:
areas: ["Ваке", "Saburtalo"], metro: ["Руставели"],
amenities: ["elevator", "pets-allowed"].
Что этот сервер намеренно делает неудобно
Пять вещей в livo устроены так, что наивная обёртка выдавала бы правдоподобную неправду. Здесь они вынесены наружу, а не спрятаны.
Свежесть. last_updated - не дата публикации: livo пишет туда любую правку и любое
платное поднятие, и у объявления 2024 года там регулярно "сегодня". Настоящий возраст
даёт quantity_of_day, поэтому сервер отдаёт age_days и посчитанный из него
published, а updated подписан как "правка или поднятие". Проверено сверкой
с created_at: сходится день в день.
Сортировка. Она не применяется ко всей выдаче: super_vip, vip_plus и vip
закреплены сверху всегда, а order работает только внутри тира. Сам date_desc
к тому же сортирует по last_updated, а не по публикации. Поэтому каждая карточка
несёт promo_tier (null = обычное объявление), и в ответе прямо сказано, что
позиция в списке про деньги, а не про свежесть.
Опечатки в фильтре. API молча игнорирует неизвестные имена полей и отдаёт
неотфильтрованную выдачу: count с полем nonsense_field возвращает ровно столько же,
сколько без него. Клиент сверяет фильтр с белым списком и падает, а не врёт.
Плюс к этому в ответ кладётся applied_filters - эхо самого API.
Удобства объединяются по ИЛИ. [elevator, conditioner] даёт больше результатов,
чем [elevator]. "С лифтом И кондиционером" через этот API одним запросом не
выражается, поэтому сервер предупреждает об этом прямо в ответе.
Охват. Заголовок X-Website-Key выбирает витрину группы tnet, и витрины не равны:
по одному запросу livo отдаёт 53 698 объявлений, myhome.ge - 94 116. Livo - подмножество,
и criteria-coverage говорит об этом прямо.
Темп и вежливость
1 запрос в секунду глобально, честный User-Agent (livo-ge-mcp/…), без подделки под
браузер. На 429 и на "настоящий" 403 предохранитель размыкается и остаётся разомкнутым:
это сигнал перестать ходить. robots.txt на обоих API-хостах ничего не запрещает.
Лицензия
MIT, см. LICENSE.
Available Tools
7 toolscountСчётчики по фильтруA
Считает результаты по фильтру, не выкачивая их — один дешёвый запрос. Годится, чтобы проверить осмысленность критериев и сравнить варианты фильтра между собой. Возвращает total — полное число объявлений под фильтр.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | свободный текст: ищет по заголовку/описанию | |
| city | No | город: название на любом из ka/en/ru или id. Пустая строка — вся Грузия | Тбилиси |
| deal | Yes | тип сделки | |
| areas | No | районы и микрорайоны вперемешку, по названию или id. Микрорайон имеет приоритет при совпадении имени (напр. «Ваке» — это микрорайон, а не район Ваке-Сабуртало) | |
| metro | No | станции метро (только Тбилиси) | |
| owner | No | кто подал: physical (собственник), broker, agency, developer | |
| rooms | No | число комнат, напр. [2,3]; 10 означает «10 и больше» | |
| estate | No | тип недвижимости | flat |
| streets | No | id улиц; названия — через geo() | |
| with_3d | No | есть 3D-тур (таких единицы) | |
| area_max | No | площадь до | |
| area_min | No | площадь от | |
| bedrooms | No | число спален | |
| building | No | состояние постройки: старая / новостройка / строящаяся | |
| currency | No | валюта ценового фильтра; EUR не поддержан | USD |
| amenities | No | удобства по устойчивому ключу или id: elevator, furniture-equipment, conditioner, internet, guard, storeroom, swimming-pool-open, pets-allowed … список — reference('amenities'). ВНИМАНИЕ: несколько удобств API объединяет по ИЛИ, а не по И — [elevator, conditioner] даёт больше результатов, чем [elevator]. Нужен И — фильтруй по одному и пересекай сам | |
| area_unit | No | единица площади; ha — только для участков | m2 |
| floor_max | No | этаж до | |
| floor_min | No | этаж от | |
| has_porch | No | есть веранда | |
| price_max | No | верхняя граница цены | |
| price_min | No | нижняя граница цены | |
| conditions | No | состояние ремонта, id из reference('conditions') | |
| has_loggia | No | есть лоджия | |
| has_balcony | No | есть балкон | |
| price_per_m2 | No | трактовать price_min/price_max как цену за м² (отдельный параметр API) | |
| can_exchanged | No | возможен обмен | |
| heating_types | No | отопление, id из reference | |
| parking_types | No | парковка, id из reference | |
| project_types | No | тип проекта дома, id из reference('project_types') | |
| bathroom_types | No | санузлы, id из reference | |
| material_types | No | материал стен, id из reference | |
| hot_water_types | No | горячая вода, id из reference | |
| storeroom_types | No | кладовая, id из reference | |
| door_window_types | No | двери/окна, id из reference | |
| living_room_types | No | гостиная, id из reference | |
| has_cadastral_code | No | указан кадастровый код |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the disclosure burden. It adequately covers the key behavioral traits: the operation is cheap ('один дешёвый запрос'), does not download results, and returns the full count ('полное число объявлений'). It does not overpromise or hide side effects, and the read-only nature is sufficiently implied.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three short sentences, each earning its place: what it does, when to use it, and what it returns. The core behavior is front-loaded, and there is no redundant repetition of schema information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite the high parameter count, the schema fully documents all parameters, so the description does not need to enumerate them. It provides the missing contextual piece: the return value ('total') and the operational guarantee that this is a cheap count rather than a data-fetching call. For a count tool, this is complete enough for an agent to select and invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and all 37 parameters already have meaningful descriptions in the schema. The tool description adds no parameter-level detail beyond the generic 'по фильтру', but it does not need to because the schema fully documents each parameter. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Считает результаты по фильтру' (counts filtered results) and explicitly distinguishes itself from fetching tools by saying 'не выкачивая их' (without downloading them). It clearly communicates that this is a count-only counterpart to search-like tools, and states the exact return value ('total').
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit usage context: use it to 'проверить осмысленность критериев' (validate criteria) and 'сравнить варианты фильтра' (compare filter variants). It implies the alternative is fetching results with search/listing, but does not name those alternatives explicitly or state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
geoСправочник локацийA
Города, районы и микрорайоны с id. search() принимает названия и резолвит их сам; этот инструмент — посмотреть доступное или снять неоднозначность. С параметром query работает как автодополнение сайта и возвращает готовую связку city/district/urban.
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | город: вернуть его районы и микрорайоны. Без него — список городов | |
| query | No | свободный текст: автодополнение локаций livo |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the burden. It discloses the data scope, the id-bearing entries, the autocomplete-like behavior of query, and that query returns a ready city/district/urban bundle. It does not specify the output shape for the city-only or no-parameter case, though the schema's city parameter partially covers that.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences with no wasted words. The core purpose is front-loaded, the alternative tool is named, and the query-mode behavior is stated last without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-optional-parameter read-only reference tool with no output schema, the description covers the primary usage modes and the sibling distinction. It leaves a little ambiguity about the exact response shape when called with no parameters or only city, but the input schema's city description covers the no-parameter default, so the gap is minor.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds real value beyond the schema by explaining what the query parameter actually produces (site-like autocomplete returning a ready-made city/district/urban bundle) and positioning city as a browsing action. This lifts it above the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as a location reference for cities, districts, and subdistricts with ids. It also names the core actions (browse available locations, disambiguate) and explicitly contrasts itself with search(), which resolves names, so an agent can tell them apart.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit rule: search() is for passing names that it resolves itself, while geo is for viewing what's available or removing ambiguity. This is a direct when-to-use versus alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_skillИнструкция по работе с источникомA
Возвращает инструкцию. 'apartment-search' — как разложить критерии пользователя по инструментам и в каком порядке идти. 'criteria-coverage' — на что livo.ge отвечает, на что отвечает приблизительно, и чего не знает вовсе. Вызывай перед сборкой многокритериального поиска.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | имя инструкции |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of explaining behavior. It makes clear that this is a read-only-like instruction retrieval tool, explains what each instruction covers, and frames it as a preliminary step. It does not mention output format or error behavior, but for a simple skill-fetch tool the behavioral disclosure is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: it opens with the core purpose, then details the two enum options, and closes with a clear usage directive. Every sentence contributes information, and there is no filler or repetition of schema fields.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one required enum parameter, no output schema, no nested objects), the description fully equips an agent to call it correctly. It specifies both allowed parameter values, explains their meaning, and states exactly when the tool should be invoked.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides the enum values with only a terse 'имя инструкции' label, while the description explains what each enum value actually contains: 'apartment-search' covers how to decompose criteria and sequence tools, and 'criteria-coverage' covers what livo.ge handles approximately or not at all. This adds essential meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb and resource: 'Возвращает инструкцию' (returns an instruction), and goes further to enumerate the two specific instruction names with their content. This clearly distinguishes get_skill from sibling data-access tools like search or listing, which return actual data rather than guidance.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives an explicit usage context: 'Вызывай перед сборкой многокритериального поиска' (call it before assembling a multi-criteria search). It does not explicitly list when not to use it or name alternative tools, so it stops short of a perfect 5, but the guidance is specific and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listingКарточка объявленияA
Полная карточка: описание, удобства, координаты, этажность, состояние, кадастр, просмотры, телефон (частично скрыт). Здесь есть created_at — настоящая дата публикации, единственное место, где она приходит явно.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | id объявления (поле id из search) | |
| with_similars | No | добавить похожие объявления (подбор livo) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden, and it does disclose useful traits: phone is 'частично скрыт' and created_at is the true publication date, which is a meaningful clarification beyond a generic timestamp. It does not explicitly label the operation as read-only or cover error behavior, but for a simple card-fetch tool the key behavioral facts are present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no fluff: the first enumerates the card contents compactly, and the second highlights the unique created_at property. Every sentence earns its place and the key differentiator is front-loaded in the second sentence after the core resource definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description does a good job of communicating what the agent will receive: a full listing card with a specified list of attributes, plus a note that phone is partially hidden and created_at is uniquely available here. The input parameters are fully covered by the schema, so the description does not need to repeat them. Missing explicit response-structure details are minor for a tool of this simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both id and with_similars. The description adds no parameter-level meaning beyond mentioning created_at, which is an output field rather than a parameter. Baseline 3 is appropriate because the schema carries the parameter documentation burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly defines the resource: 'Полная карточка' followed by a field list (описание, удобства, координаты, этажность, состояние, кадастр, просмотры, телефон). It also differentiates from siblings by noting that created_at is 'единственное место, где она приходит явно'. However, it lacks an explicit action verb like 'return' or 'fetch', so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'единственное место, где она приходит явно' explicitly tells an agent to use this tool when the real publication date is needed, which is a clear when-to-use signal. The enumerated field list also implies this is the tool for full listing details. It does not name sibling alternatives or give when-not-to-use exclusions, so it is not a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
projectsНовостройки (проекты застройщиков)A
Проекты застройщиков — отдельный набор данных livo, не подмножество объявлений. min_price приходит диапазоном и в трёх валютах. С параметром uuid возвращает карточку одного проекта.
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | город: название или id | |
| page | No | страница | |
| uuid | No | uuid проекта — вернуть одну карточку | |
| areas | No | районы и микрорайоны по названию или id | |
| limit | No | сколько проектов вернуть |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the disclosure burden. It usefully reveals that min_price arrives as a range in three currencies and that uuid selects a single project card. Still, it does not describe list-mode response shape, pagination behavior, or other output fields, so disclosure is only partial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short, information-dense sentences with no filler. The most important distinction — separate dataset, not listings — is front-loaded, and each sentence contributes a distinct fact.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the single-project mode and a key output quirk, and the schema documents all parameters. But there is no output schema, and the tool's list mode, default behavior, and the interaction of city/areas/page/limit are left implicit, so an agent has to infer significant context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and every parameter already has a description. The uuid behavior in the description largely repeats the schema's own uuid description, so it adds little new parameter-level meaning. The min_price note concerns the response rather than the input parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource ('проекты застройщиков'), uses the concrete verb 'возвращает' for the uuid mode, and explicitly states this is a separate livo dataset, not a subset of listings. This clearly distinguishes it from the sibling 'listing' tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The uuid sentence provides a clear conditional: use it to get a single project card. The 'not a subset of listings' statement also guides the agent away from the listing sibling. However, it does not address alternatives like count, search, or geo, or say explicitly when list mode is preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
referenceСправочники значенийA
Словари id -> название для фильтров, которые принимают только id: conditions, project_types, heating_types, material_types, metro_stations, amenities и др. Большинство словарей разбиты по типу недвижимости — укажи estate, чтобы получить только применимые значения. Названия приходят на языке сервера (LIVO_LOCALE).
| Name | Required | Description | Default |
|---|---|---|---|
| estate | No | оставить только значения, применимые к этому типу недвижимости | |
| groups | Yes | какие словари вернуть; 'amenities' — удобства с устойчивыми ключами. Локации сюда не входят — за ними geo() |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of explaining behavior, and it does disclose useful traits: dictionaries are split by estate, names are localized via LIVO_LOCALE, and amenities have stable keys. However, it does not mention whether the operation is read-only, how invalid groups are handled, or what the response shape looks like beyond the id->name mapping.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: purpose first, then the estate-filtering behavior, then localization. Every sentence contributes actionable information with no filler or repetition of schema details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple reference-data tool with only two parameters and no output schema, the description covers the essential information: what is returned, estate applicability, and localization. It could still mention behavior when estate is omitted or how the locale is determined, but these are minor gaps given the low complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already covers 100% of parameter descriptions, so the baseline is 3. The description adds meaningful extra context by explaining that the dictionaries map IDs to names for filters, that most dictionaries are estate-specific, and that localized names depend on LIVO_LOCALE, which goes beyond the schema's basic field descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the resource as id-to-label dictionaries for filter parameters, giving concrete examples such as conditions, project_types, and metro_stations. It lacks an explicit verb like 'return' or 'get,' but the purpose is otherwise unambiguous and distinct from the broader search/list sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states when to use the tool: for filters that accept only IDs, and directs the caller to pass estate to get applicable values. The schema additionally gives an explicit exclusion and alternative by noting that locations are not included and should be handled by geo(), providing clear when/where-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchПоиск объявленийA
Ищет объявления на livo.ge. Возвращает частичную выдачу — сравнивай returned с total. Цены отдаются сразу в GEL, USD и EUR. age_days/published — настоящий возраст объявления; updated — правка или платное поднятие, не публикация. applied_filters — эхо самого API о том, что он разобрал из фильтра.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | свободный текст: ищет по заголовку/описанию | |
| city | No | город: название на любом из ka/en/ru или id. Пустая строка — вся Грузия | Тбилиси |
| deal | Yes | тип сделки | |
| page | No | страница выдачи размером limit | |
| areas | No | районы и микрорайоны вперемешку, по названию или id. Микрорайон имеет приоритет при совпадении имени (напр. «Ваке» — это микрорайон, а не район Ваке-Сабуртало) | |
| limit | No | сколько объявлений вернуть | |
| metro | No | станции метро (только Тбилиси) | |
| order | No | сортировка. Работает ТОЛЬКО внутри платных тиров: super_vip, vip_plus и vip закреплены сверху в любом случае (см. promo_tier у карточек). date_* сортирует по last_updated, а не по дате публикации — для настоящей свежести смотри age_days | |
| owner | No | кто подал: physical (собственник), broker, agency, developer | |
| rooms | No | число комнат, напр. [2,3]; 10 означает «10 и больше» | |
| estate | No | тип недвижимости | flat |
| streets | No | id улиц; названия — через geo() | |
| with_3d | No | есть 3D-тур (таких единицы) | |
| area_max | No | площадь до | |
| area_min | No | площадь от | |
| bedrooms | No | число спален | |
| building | No | состояние постройки: старая / новостройка / строящаяся | |
| currency | No | валюта ценового фильтра; EUR не поддержан | USD |
| amenities | No | удобства по устойчивому ключу или id: elevator, furniture-equipment, conditioner, internet, guard, storeroom, swimming-pool-open, pets-allowed … список — reference('amenities'). ВНИМАНИЕ: несколько удобств API объединяет по ИЛИ, а не по И — [elevator, conditioner] даёт больше результатов, чем [elevator]. Нужен И — фильтруй по одному и пересекай сам | |
| area_unit | No | единица площади; ha — только для участков | m2 |
| floor_max | No | этаж до | |
| floor_min | No | этаж от | |
| has_porch | No | есть веранда | |
| price_max | No | верхняя граница цены | |
| price_min | No | нижняя граница цены | |
| conditions | No | состояние ремонта, id из reference('conditions') | |
| has_loggia | No | есть лоджия | |
| has_balcony | No | есть балкон | |
| price_per_m2 | No | трактовать price_min/price_max как цену за м² (отдельный параметр API) | |
| can_exchanged | No | возможен обмен | |
| heating_types | No | отопление, id из reference | |
| parking_types | No | парковка, id из reference | |
| project_types | No | тип проекта дома, id из reference('project_types') | |
| bathroom_types | No | санузлы, id из reference | |
| material_types | No | материал стен, id из reference | |
| hot_water_types | No | горячая вода, id из reference | |
| storeroom_types | No | кладовая, id из reference | |
| door_window_types | No | двери/окна, id из reference | |
| living_room_types | No | гостиная, id из reference | |
| has_cadastral_code | No | указан кадастровый код |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It goes beyond a simple summary by revealing critical behavior: partial results requiring returned/total comparison, prices returned in GEL/USD/EUR, the distinction between age_days/published and updated, and applied_filters as an API echo. These are non-obvious traits that materially affect how the agent interprets results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and every sentence earns its place. It front-loads the core purpose, then adds high-value caveats about partial results, currency behavior, date semantics, and API echo. No filler or repetition of schema details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 40 parameters and no output schema, the description is reasonably complete: it covers the essential response caveats and field semantics. However, it does not describe the overall response shape or pagination mechanics beyond the returned/total hint, and it leaves the agent to discover any additional output fields from actual usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description does not add much about individual input parameters, but it does clarify related output semantics such as age_days, updated, and applied_filters. The schema already documents all 40 parameters well, so the description does not need to compensate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb and resource: 'Ищет объявления на livo.ge' (searches listings on livo.ge). It is specific enough to understand the tool's core action, but it does not explicitly differentiate itself from siblings like listing or count.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description says what the tool does but gives no guidance on when to prefer search over alternatives such as listing, count, or geo. There is no explicit when-to-use or when-not-to-use context, so the agent must infer usage from the tool name and schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
7 tool updates
v1.0.0- First observed
count - First observed
geo - First observed
get_skill - First observed
listing - First observed
projects - First observed
reference - First observed
search
TDQS
Each tool has a clearly distinct purpose: geo handles location hierarchy, reference provides filter dictionaries, count/search/listing cover different levels of listing retrieval, projects covers developer data, and get_skill provides meta-instructions. The relationships between similar tools like count vs search and search vs listing are explicitly clarified.
Tool names are short, readable, and all lowercase, but they mix noun-style resources such as geo, reference, projects, and listing with imperative verbs like search and count, plus one snake_case verb_noun tool, get_skill. This is not chaotic, but there is no consistent naming pattern across the set.
Seven tools are well-scoped for a read-only real estate search server. Each tool serves a necessary part of the workflow: reference data, geographic lookup, counting, searching, detail retrieval, project data, and guided instructions. There is no obvious bloat or missing essential category.
For its stated purpose of searching and exploring Livo.ge listings, the tool surface is complete: search and count cover filtering, listing provides full details, geo and reference support valid filter construction, projects covers developer data, and get_skill documents workflow and known limitations. No significant dead ends or missing read-side operations are apparent.
Related MCP Connectors
Live Estonia real estate listings with search, geo filters, and property metadata.
Remote MCP endpoint for U.S. home forecasts, public benchmark data, and permit or zoning readiness.
RealEstateAPI MCP — property search, detail, and skip-trace (realestateapi.com)
Live Latvia real estate listings with search, geo filters, and property metadata.
Related MCP Servers
- AlicenseCqualityDmaintenanceEnables access to Idealista API for searching and retrieving property listings across Spain, Portugal, and Italy. Supports various property types including homes, apartments, garages, commercial properties, offices, and land with detailed filtering options.143MIT
- AlicenseAqualityAmaintenanceA read-only MCP server providing 56 tools to query Qobrix real-estate CRM data, covering listings, leads, viewings, offers, contracts, analytics, and more, with RESO Data Dictionary alignment and caching support.643Apache 2.0
- FlicenseAqualityDmaintenanceEnables querying and searching for real estate listings, complexes, prices, and school information from Naver Land (Korean real estate platform) through a set of MCP tools. Supports region hierarchy navigation, coordinate-based search, and various trade types like sale, jeonse, and monthly rent.91-
- AlicenseAqualityBmaintenanceProvides South Korean real estate transaction price lookup (sales and rent) for apartments, row houses, single-family homes, and officetels via MCP tools using public data from data.go.kr.851MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/nosuchip/livo-ge-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server