{
  "openapi": "3.0.1",
  "info": {
    "title": "Real Estate MCP API - Allee Spain",
    "version": "1.1",
    "description": "MCP контекст нерухомості для пошуку об'єктів і надсилання запитів на контакт. - Allee Spain",
    "termsOfService": "https://www.alleespain.com/termos-e-condicoes",
    "contact": {
      "name": "Allee Spain",
      "url": "https://www.alleespain.com/",
      "email": "info@alleespain.com"
    },
    "x-company-info": {
      "name": "Allee Spain",
      "address": "Avda. Juan Luis Peralta, 3. Local 4, 29639 Benalmádena"
    }
  },
  "servers": [
    {
      "url": "https://www.alleespain.com/",
      "description": "Ідентифікатор сервера MCP"
    }
  ],
  "components": {
    "schemas": {
      "searchToMatchRequest": {
        "type": "object",
        "properties": {
          "businessType": {
            "type": "string",
            "description": "Визначає або повертає ідентифікатор типу угоди нерухомості"
          },
          "countryName": {
            "type": "string",
            "description": "Назва країни, що використовується як критерій фільтрації. Це поле повинно залишатися порожнім, якщо країну не ідентифіковано."
          },
          "stateName": {
            "type": "string",
            "description": "Назва регіону (район) для нерухомості (обов’язково при пошуку, якщо не вказано муніципалітет)."
          },
          "townName": {
            "type": "string",
            "description": "Назва муніципалітету для нерухомості (обов’язково при пошуку, якщо район не вказано)."
          },
          "neighborhoodName": {
            "type": "string",
            "description": "Назва або ID району, де розташована нерухомість."
          },
          "zoneName": {
            "type": "string",
            "description": "Ідентифікатор географічної зони для фільтрування під час пошуку."
          },
          "masterCategoryIds": {
            "type": "array",
            "description": "Ідентифікатори (ID) однієї або кількох основних груп категорій нерухомості (наприклад, квартири, будинки, склади, земельні ділянки, готелі). Необхідно вказати хоча б один, якщо конкретний тип нерухомості не зазначено."
          },
          "categoryIds": {
            "type": "array",
            "description": "Ідентифікатори (ID) одного або кількох конкретних типів нерухомості (наприклад, квартира, будинок, склад, земельна ділянка, готель)."
          },
          "condition": {
            "type": "string",
            "description": "Стан."
          },
          "minPrice": {
            "type": "integer",
            "description": "Мінімальна ціна в євро. Заповнювати, коли користувач вказує мінімальний бюджет або нижню межу ціни.",
            "format": "int32"
          },
          "maxPrice": {
            "type": "integer",
            "description": "Максимальна ціна в євро. Заповнювати, коли користувач вказує максимальний бюджет або верхню межу ціни.",
            "format": "int32"
          },
          "minBedrooms": {
            "type": "integer",
            "description": "Мінімальна кількість спалень для фільтрації",
            "format": "int32"
          },
          "maxBedrooms": {
            "type": "integer",
            "description": "Максимальна кількість спалень для фільтрації",
            "format": "int32"
          },
          "bathrooms": {
            "type": "integer",
            "description": "Мінімальна кількість ванних кімнат.",
            "format": "int32"
          },
          "listingReference": {
            "type": "string",
            "description": "Внутрішнє посилання на об’єкт нерухомості для ідентифікації."
          },
          "developmentName": {
            "type": "string",
            "description": "Назва проєкту."
          },
          "developmentFractions": {
            "type": "boolean",
            "description": "Вказує, чи має пошук враховувати окремі одиниці проєкту (наприклад, квартири або комерційні приміщення) замість проєкту в цілому. Якщо увімкнено, результати містять лише одиниці, пов’язані з проєктом."
          },
          "developmentTags": {
            "type": "array",
            "description": "MCP\\INPUTSCHEMA_DEVELOPMENTTAG_DESCRIPTION"
          },
          "withVideos": {
            "type": "boolean",
            "description": "Шукає лише об’єкти нерухомості з наявними відео. Застосовується, коли користувач згадує фрази на кшталт 'з відео', 'має відео', 'переглянути відео об’єкта', 'відео онлайн', тощо."
          },
          "withBluePrints": {
            "type": "boolean",
            "description": "Шукає лише об’єкти нерухомості з доступними планами (blueprints). Застосовується, коли користувач згадує 'з планом', 'має план', 'плани будинку', 'карта об’єкта', 'план поверху', 'подивитися план', тощо."
          },
          "withVirtualVisits": {
            "type": "boolean",
            "description": "Шукає лише нерухомість з віртуальними турами. Застосовується, коли користувач згадує 'віртуальний тур', '3D тур', 'інтерактивний тур', 'віртуальний досвід', 'віртуальний перегляд', 'переглянути віртуальний тур онлайн'."
          },
          "with360Photos": {
            "type": "boolean",
            "description": "Шукає лише об’єкти нерухомості з наявними 360º фотографіями. Застосовується, коли користувач згадує 'з 360º фото', 'має 360º фото', 'з панорамними фото', 'має панорамні фото', 'переглянути 360º фото онлайн' тощо."
          },
          "featuresNames": {
            "type": "array",
            "description": "Особливості нерухомості, включаючи зручності, послуги та найближчі цікаві місця, а також типи видів для повного та детального опису"
          },
          "page": {
            "type": "integer",
            "description": "Номер сторінки для відображення в результатах пошуку.",
            "format": "int32"
          }
        },
        "description": "Схема, що описує вхідні параметри для пошуку нерухомості."
      },
      "searchResponse": {
        "type": "object",
        "properties": {
          "results": {
            "type": "array",
            "description": "Список результатів поточної сторінки на основі кількості записів на сторінці.",
            "items": {
              "$ref": "#/components/schemas/DetailResponse"
            }
          },
          "count": {
            "type": "integer",
            "description": "Загальна кількість результатів, що відповідають критеріям пошуку.",
            "format": "int32"
          },
          "page": {
            "type": "integer",
            "description": "Номер поточної сторінки відповідно до критеріїв пошуку.",
            "format": "int32"
          },
          "totalpages": {
            "type": "integer",
            "description": "Загальна кількість сторінок, що відповідають критеріям пошуку.",
            "format": "int32"
          },
          "statetownnameequals": {
            "type": "boolean",
            "description": "Вказує, чи назва області збігається з назвою міста."
          },
          "developmentname": {
            "type": "string",
            "description": "Назва проєкту; це поле заповнюється лише у випадку, якщо результати пов’язані з конкретним проєктом із цією назвою."
          }
        },
        "description": "Схема, що описує вихідні параметри пошуку нерухомості."
      },
      "detailRequest": {
        "type": "object",
        "properties": {
          "listingId": {
            "type": "integer",
            "description": "ID нерухомості для контакту.",
            "format": "int32"
          },
          "listingReference": {
            "type": "string",
            "description": "Внутрішнє посилання на об’єкт нерухомості для ідентифікації."
          },
          "developmentFractions": {
            "type": "boolean",
            "description": "Вказує, чи має пошук враховувати окремі одиниці проєкту (наприклад, квартири або комерційні приміщення) замість проєкту в цілому. Якщо увімкнено, результати містять лише одиниці, пов’язані з проєктом."
          }
        },
        "description": "Схема, що описує вхідні параметри для деталей нерухомості."
      },
      "detailResponse": {
        "type": "object",
        "properties": {
          "listingId": {
            "type": "integer",
            "description": "Унікальний ідентифікатор оголошення про нерухомість.",
            "format": "int32"
          },
          "propertyType": {
            "type": "string",
            "description": "Тип нерухомості."
          },
          "condition": {
            "type": "string",
            "description": "Стан нерухомості."
          },
          "listingReference": {
            "type": "string",
            "description": "Посилання на нерухомість, що відображається у результатах пошуку."
          },
          "firstPhoto": {
            "type": "string",
            "description": "URL мініатюри першого фото нерухомості."
          },
          "description": {
            "type": "string",
            "description": "Детальний опис нерухомості."
          },
          "title": {
            "type": "string",
            "description": "Заголовок оголошення."
          },
          "price": {
            "type": "string",
            "description": "Ціна в євро."
          },
          "imiValue": {
            "type": "string",
            "description": "Сума IMI до сплати за нерухомість, розрахована на основі VPT та чинних податкових правил."
          },
          "business": {
            "type": "string",
            "description": "Тип бізнесу з нерухомістю."
          },
          "location": {
            "type": "string",
            "description": "Назва місцезнаходження."
          },
          "bedrooms": {
            "type": "integer",
            "description": "Кількість спалень у власності.",
            "format": "int32"
          },
          "bathrooms": {
            "type": "integer",
            "description": "Кількість ванних кімнат у власності.",
            "format": "int32"
          },
          "url": {
            "type": "string",
            "description": "Публічна URL оголошення."
          },
          "hasVideos": {
            "type": "boolean",
            "description": "Вказує, чи має нерухомість доступні відео."
          },
          "hasBluePrints": {
            "type": "boolean",
            "description": "Вказує, чи має нерухомість доступні плани або креслення."
          },
          "has360Photos": {
            "type": "boolean",
            "description": "Вказує, чи є у об'єкта нерухомості доступні 360° фотографії."
          },
          "hasVirtualVisits": {
            "type": "boolean",
            "description": "Вказує, чи є у об'єкта нерухомості доступні віртуальні відвідування або тури."
          },
          "features": {
            "description": "Ці ключі представляють опис конкретних характеристик нерухомості, включаючи фізичні атрибути та релевантні локації, такі як басейн, вид на море, близькість до лікарень, шкіл та інших важливих об'єктів. Ця інформація допомагає деталізувати та оцінити нерухомість для покращення фільтрації пошуку та презентації результатів відповідно до уподобань користувача.",
            "$ref": "#/components/schemas/Dictionary`2"
          }
        },
        "description": "Схема, що описує вихідні параметри деталей нерухомості."
      },
      "leadRequest": {
        "type": "object",
        "properties": {
          "listingId": {
            "type": "integer",
            "description": "ID нерухомості для контакту.",
            "format": "int32"
          },
          "listingReference": {
            "type": "string",
            "description": "Внутрішнє посилання на об’єкт нерухомості для ідентифікації."
          },
          "name": {
            "type": "string",
            "description": "Ім'я користувача."
          },
          "email": {
            "type": "string",
            "description": "Електронна адреса користувача (обов’язково, якщо номер телефону не вказано)."
          },
          "phone": {
            "type": "string",
            "description": "Номер телефону користувача (необов’язково, якщо вказано електронну адресу)."
          },
          "phoneCountryCode": {
            "type": "string",
            "description": "Код країни телефону з плюсом, наприклад, \"+380\" для України, \"+351\" для Португалії."
          },
          "message": {
            "type": "string",
            "description": "Користувацьке повідомлення."
          }
        },
        "description": "Схема, що описує вхідні параметри для надсилання лідерів нерухомості."
      },
      "leadResponse": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "description": "Статус надсилання контактної форми (наприклад: успіх, помилка)."
          },
          "message": {
            "type": "string",
            "description": "Повідомлення, що описує результат надсилання контактної форми."
          },
          "confirmedLead": {
            "type": "boolean",
            "description": ""
          }
        },
        "description": "Схема, що описує вихідні параметри надсилання лідерів нерухомості."
      },
      "companyInfoRequest": {
        "type": "object",
        "properties": {
          "companyId": {
            "type": "integer",
            "description": "Ідентифікатор компанії/агентства для запиту (необов’язково, за замовчуванням використовується внутрішній ідентифікатор компанії).",
            "format": "int32"
          }
        },
        "description": "Вхідна схема для запиту інформації про компанію"
      },
      "companyInfoWithAgenciesResponse": {
        "type": "object",
        "properties": {
          "headquarters": {
            "description": "Інформація про контактні дані компанії, що стосуються головного офісу.",
            "$ref": "#/components/schemas/CompanyInfoResponse"
          },
          "agencies": {
            "type": "array",
            "description": "Інформація про контактні дані агентств компанії.",
            "items": {
              "$ref": "#/components/schemas/CompanyInfoResponse"
            }
          }
        },
        "description": "Схема виводу з даними про компанію"
      },
      "companyInfoResponse": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Назва компанії"
          },
          "phone": {
            "type": "string",
            "description": "Телефон компанії"
          },
          "mobile": {
            "type": "string",
            "description": "Мобільний телефон компанії"
          },
          "email": {
            "type": "string",
            "description": "Контактна електронна адреса компанії"
          },
          "address": {
            "type": "string",
            "description": "Адреса компанії (без поштового індексу)"
          },
          "district": {
            "type": "string",
            "description": "Район, де розташована компанія"
          },
          "municipality": {
            "type": "string",
            "description": "Муніципалітет, де розташована компанія"
          },
          "parish": {
            "type": "string",
            "description": "Парафія, де розташована компанія"
          },
          "zipCode": {
            "type": "string",
            "description": "Поштовий індекс адреси компанії"
          },
          "businessHours": {
            "type": "string",
            "description": "Години роботи компанії"
          },
          "googleMapsUrl": {
            "type": "string",
            "description": "Пряме посилання на розташування компанії в Google Maps"
          }
        },
        "description": "Схема виводу з даними про компанію"
      },
      "rasorInfoRequest": {
        "type": "object",
        "properties": {
          "rasorName": {
            "type": "string",
            "description": "Ім’я консультанта з нерухомості, щодо якого потрібно отримати детальну інформацію."
          },
          "stateName": {
            "type": "string",
            "description": "Дозволяє шукати консультантів за округом."
          },
          "townName": {
            "type": "string",
            "description": "Дозволяє шукати консультантів за громадою."
          }
        },
        "description": "Вхідна схема для запиту детальної інформації про консультанта з нерухомості"
      },
      "rasorInfoResponse": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Повне ім’я консультанта з нерухомості."
          },
          "phone": {
            "type": "string",
            "description": "Стаціонарний телефон консультанта з нерухомості."
          },
          "mobile": {
            "type": "string",
            "description": "Мобільний телефон консультанта з нерухомості."
          },
          "observations": {
            "type": "string",
            "description": "Додаткові зауваження щодо консультанта з нерухомості."
          },
          "email": {
            "type": "string",
            "description": "Електронна пошта консультанта з нерухомості."
          },
          "address": {
            "type": "string",
            "description": "Повна адреса консультанта з нерухомості або офісу."
          },
          "city": {
            "type": "string",
            "description": "Муніципалітет, де працює консультант з нерухомості."
          },
          "parish": {
            "type": "string",
            "description": "Парафія, де працює консультант з нерухомості."
          },
          "spokenLanguages": {
            "type": "array",
            "description": "Список мов, якими володіє консультант."
          },
          "socialProfiles": {
            "type": "array",
            "description": "Список посилань на соціальні профілі консультанта.",
            "items": {
              "$ref": "#/components/schemas/SocialProfile"
            }
          },
          "avatar": {
            "type": "string",
            "description": "Зображення аватара, пов’язаного з консультантом."
          },
          "listingUrl": {
            "type": "string",
            "description": "URL сторінки, яка відображає всі об'єкти нерухомості, призначені або пов'язані з консультантом, забезпечуючи прямий доступ до повного списку відповідних об'єктів."
          },
          "detailUrl": {
            "type": "string",
            "description": "Сторінка, що містить повну інформацію про агента, включно з контактними даними, професійним профілем та пов’язаною нерухомістю."
          }
        },
        "description": "Схема виводу з детальною інформацією про консультанта з нерухомості"
      },
      "imiRequest": {
        "type": "object",
        "properties": {
          "townName": {
            "type": "string",
            "description": "Назва муніципалітету, де розташована нерухомість. Це поле обов’язкове для географічної ідентифікації та визначення ставки IMI. Приклад: \"Лісабон\", \"Порту\", \"Сінтра\", \"Албуфейра\"."
          },
          "taxableValue": {
            "type": "number",
            "description": "Оподатковувана кадастрова вартість нерухомості (VPT), зареєстрована в Податковій службі Португалії. Це офіційна фіскальна вартість, що використовується для розрахунку IMI. Має бути додатним десятковим числом у євро. Приклад: \"185000.00\".",
            "format": "decimal"
          },
          "dependentsNumber": {
            "type": "integer",
            "description": "Кількість утриманців у домогосподарстві платника податків за відповідний податковий рік. Включає дітей, літніх батьків або інших законно визнаних утриманців, які можуть мати право на зниження або звільнення від IMI. Допустиме значення: ціле число ≥ 0. Приклад: \"2\".",
            "format": "int32"
          },
          "isUrban": {
            "type": "boolean",
            "description": "Вказує, чи класифікується нерухомість як міська чи сільська. Міські об’єкти підлягають IMI, тоді як сільські можуть підлягати іншим податковим правилам. Приклад: true/false."
          }
        },
        "description": "Схема вхідних даних, що використовується для запиту розрахунку муніципального податку на нерухомість (IMI) для об'єкта нерухомості."
      },
      "imiResponse": {
        "type": "object",
        "properties": {
          "townName": {
            "type": "string",
            "description": "Назва громади, врахована при розрахунку IMI"
          },
          "taxableValue": {
            "type": "string",
            "description": "Оподатковувана вартість майна (VPT), врахована при розрахунку IMI, у євро"
          },
          "dependentsNumber": {
            "type": "string",
            "description": "Кількість утриманців, врахованих для пільг при розрахунку IMI"
          },
          "isUrban": {
            "type": "string",
            "description": "Позначення, чи є нерухомість міською чи сільською, враховане при розрахунку IMI"
          },
          "imiValue": {
            "type": "string",
            "description": "Кінцеве значення IMI (Муніципальний податок на нерухомість) розраховане на основі наданих даних."
          },
          "imiTaxValue": {
            "type": "string",
            "description": "Ставка, використана для розрахунку IMI."
          },
          "dependentDiscount": {
            "type": "string",
            "description": "Розмір знижки залежно від кількості утриманців."
          },
          "dataYear": {
            "type": "integer",
            "description": "Рік, на який спиралися ставки, використані для розрахунку IMI.",
            "format": "int32"
          }
        },
        "description": "Схема вихідних даних, що надає результат розрахунку IMI, включаючи детальну інформацію про суму до сплати."
      },
      "servicesInfoRequest": {
        "type": "object",
        "properties": {
          "companyId": {
            "type": "integer",
            "description": "Ідентифікатор компанії/агентства для запиту (необов’язково, за замовчуванням використовується внутрішній ідентифікатор компанії).",
            "format": "int32"
          }
        },
        "description": "Огляд доступних послуг, включаючи їх призначення та застосування для клієнтів."
      },
      "servicesInfoResponse": {
        "type": "object",
        "properties": {
          "companyId": {
            "type": "integer",
            "description": "Унікальний ідентифікатор компанії, пов’язаної з каталогом послуг.",
            "format": "int32"
          },
          "companyName": {
            "type": "string",
            "description": "Назва компанії, яка надає каталог послуг."
          },
          "categories": {
            "type": "array",
            "description": "Список доступних категорій послуг, організованих за профілем клієнта.",
            "items": {
              "$ref": "#/components/schemas/ServiceCategory"
            }
          }
        },
        "description": "Огляд послуг, що надаються клієнту, включаючи деталі, обсяг та застосування."
      }
    }
  },
  "paths": {
    "/mcp/search": {
      "get": {
        "summary": "Пошук оголошень про нерухомість із використанням фільтрів, таких як місцезнаходження, ціна, тип та стан.",
        "description": "Пошук оголошень про нерухомість із використанням фільтрів, таких як місцезнаходження, ціна, тип та стан.",
        "operationId": "mcpSearch",
        "parameters": [
          {
            "name": "BusinessType",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Визначає або повертає ідентифікатор типу угоди нерухомості (Оре́нда, Продаж). Якщо не зазначено в пошуку, за замовчуванням використовується Продаж"
          },
          {
            "name": "CountryName",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Назва країни, що використовується як критерій фільтрації. Це поле повинно залишатися порожнім, якщо країну не ідентифіковано., (is required)"
          },
          {
            "name": "StateName",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Назва регіону (район) для нерухомості (обов’язково при пошуку, якщо не вказано муніципалітет)., (is required)"
          },
          {
            "name": "TownName",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Назва муніципалітету для нерухомості (обов’язково при пошуку, якщо район не вказано)."
          },
          {
            "name": "NeighborhoodName",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Назва або ID району, де розташована нерухомість."
          },
          {
            "name": "ZoneName",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Ідентифікатор географічної зони для фільтрування під час пошуку."
          },
          {
            "name": "MasterCategoryIds",
            "in": "query",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "description": "Ідентифікатори (ID) однієї або кількох основних груп категорій нерухомості (наприклад, квартири, будинки, склади, земельні ділянки, готелі). Необхідно вказати хоча б один, якщо конкретний тип нерухомості не зазначено."
          },
          {
            "name": "CategoryIds",
            "in": "query",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "description": "Ідентифікатори (ID) одного або кількох конкретних типів нерухомості (наприклад, квартира, будинок, склад, земельна ділянка, готель)."
          },
          {
            "name": "Condition",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Стан. (Використовується, Відремонтований, Для ремонту, З заохочувальною програмою реабілітації, Зарезервований, Знести або відбудувати, На продаж, Не застосовується, Новий, У проекті, У розробці)"
          },
          {
            "name": "MinPrice",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Мінімальна ціна в євро. Заповнювати, коли користувач вказує мінімальний бюджет або нижню межу ціни."
          },
          {
            "name": "MaxPrice",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Максимальна ціна в євро. Заповнювати, коли користувач вказує максимальний бюджет або верхню межу ціни."
          },
          {
            "name": "MinBedrooms",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Мінімальна кількість спалень для фільтрації"
          },
          {
            "name": "MaxBedrooms",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Максимальна кількість спалень для фільтрації"
          },
          {
            "name": "Bathrooms",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Мінімальна кількість ванних кімнат."
          },
          {
            "name": "ListingReference",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Внутрішнє посилання на об’єкт нерухомості для ідентифікації."
          },
          {
            "name": "DevelopmentName",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Назва проєкту."
          },
          {
            "name": "DevelopmentFractions",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean"
            },
            "description": "Вказує, чи має пошук враховувати окремі одиниці проєкту (наприклад, квартири або комерційні приміщення) замість проєкту в цілому. Якщо увімкнено, результати містять лише одиниці, пов’язані з проєктом."
          },
          {
            "name": "DevelopmentTags",
            "in": "query",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "description": "MCP\\INPUTSCHEMA_DEVELOPMENTTAG_DESCRIPTION ()"
          },
          {
            "name": "WithVideos",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean"
            },
            "description": "Шукає лише об’єкти нерухомості з наявними відео. Застосовується, коли користувач згадує фрази на кшталт 'з відео', 'має відео', 'переглянути відео об’єкта', 'відео онлайн', тощо."
          },
          {
            "name": "WithBluePrints",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean"
            },
            "description": "Шукає лише об’єкти нерухомості з доступними планами (blueprints). Застосовується, коли користувач згадує 'з планом', 'має план', 'плани будинку', 'карта об’єкта', 'план поверху', 'подивитися план', тощо."
          },
          {
            "name": "WithVirtualVisits",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean"
            },
            "description": "Шукає лише нерухомість з віртуальними турами. Застосовується, коли користувач згадує 'віртуальний тур', '3D тур', 'інтерактивний тур', 'віртуальний досвід', 'віртуальний перегляд', 'переглянути віртуальний тур онлайн'."
          },
          {
            "name": "With360Photos",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean"
            },
            "description": "Шукає лише об’єкти нерухомості з наявними 360º фотографіями. Застосовується, коли користувач згадує 'з 360º фото', 'має 360º фото', 'з панорамними фото', 'має панорамні фото', 'переглянути 360º фото онлайн' тощо."
          },
          {
            "name": "FeaturesNames",
            "in": "query",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "description": "Особливості нерухомості, включаючи зручності, послуги та найближчі цікаві місця, а також типи видів для повного та детального опису (CCTV, Ejendommen har kontor, Green spaces, Автобусна зупинка, Автозаправна станція, аеропорт, аптека, Басейн, Басейни, Бібліотека, Біля моря, Будівля, Винний льох, Відеозапис, Відеоспостереження, Вітальня, Ганок, Гараж, Герметичний комплекс, Гімназія, Гольф, гора, Громадський транспорт, Двері високої безпеки, духовка, Екрановані двері, Електрична плита, Звукова ізоляція, Зелений дах, Ігрова кімната, Індукційна плита, Їдальня, Кондиціонер, Країна, Кухня, Кухонна витяжка, Лікарня, Ліфт, Люкс, Мебльований, мікрохвильова піч, Місто, Море, Обслуговування санвузла, Окрема ванна кімната, Парковка, Пляжний, Подвійне скло, Поле для гольфу, Поліція, Попередня установка Інтернету, Пральна машина, Пральня, Прасувальна дошка, сад, Сигналізація, Сільська місцевість, Сонячна орієнтація, Сонячні панелі, Спільний басейн, Супермаркет, Супутникова антена, Сушарка, Тераса, Термічна ізоляція, Торговий центр, Холодильник, Центр міста, Центральне опалення, Цілодобова охорона, Шафа, Школу, Шосе)"
          },
          {
            "name": "Page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Номер сторінки для відображення в результатах пошуку."
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchResponse"
                }
              }
            }
          }
        }
      }
    },
    "/mcp/detail": {
      "get": {
        "summary": "Повертає детальну інформацію про нерухомість.",
        "description": "Повертає детальну інформацію про нерухомість.",
        "operationId": "mcpDetail",
        "parameters": [
          {
            "name": "ListingId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "description": "ID нерухомості для контакту."
          },
          {
            "name": "ListingReference",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Внутрішнє посилання на об’єкт нерухомості для ідентифікації."
          },
          {
            "name": "DevelopmentFractions",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean"
            },
            "description": "Вказує, чи має пошук враховувати окремі одиниці проєкту (наприклад, квартири або комерційні приміщення) замість проєкту в цілому. Якщо увімкнено, результати містять лише одиниці, пов’язані з проєктом."
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DetailResponse"
                }
              }
            }
          }
        }
      }
    },
    "/mcp/lead": {
      "get": {
        "summary": "Надіслати контактну форму для конкретного оголошення.",
        "description": "Надіслати контактну форму для конкретного оголошення.",
        "operationId": "mcpLead",
        "parameters": [
          {
            "name": "ListingId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "description": "ID нерухомості для контакту."
          },
          {
            "name": "ListingReference",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Внутрішнє посилання на об’єкт нерухомості для ідентифікації."
          },
          {
            "name": "Name",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Ім'я користувача., (is required)"
          },
          {
            "name": "Email",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Електронна адреса користувача (обов’язково, якщо номер телефону не вказано)., (is required)"
          },
          {
            "name": "Phone",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Номер телефону користувача (необов’язково, якщо вказано електронну адресу)."
          },
          {
            "name": "PhoneCountryCode",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Код країни телефону з плюсом, наприклад, \"+380\" для України, \"+351\" для Португалії."
          },
          {
            "name": "Message",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Користувацьке повідомлення."
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LeadResponse"
                }
              }
            }
          }
        }
      }
    },
    "/mcp/companyinfo": {
      "get": {
        "summary": "Дозволяє отримати контактні дані компанії, включаючи назву агентства, адресу, телефон та електронну пошту. Ідеально для відображення інституційної інформації або для надання можливості користувачеві зв’язатися з агентством.",
        "description": "Дозволяє отримати контактні дані компанії, включаючи назву агентства, адресу, телефон та електронну пошту. Ідеально для відображення інституційної інформації або для надання можливості користувачеві зв’язатися з агентством.",
        "operationId": "mcpCompanyInfo",
        "parameters": [
          {
            "name": "CompanyId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Ідентифікатор компанії/агентства для запиту (необов’язково, за замовчуванням використовується внутрішній ідентифікатор компанії)."
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CompanyInfoWithAgenciesResponse"
                }
              }
            }
          }
        }
      }
    },
    "/mcp/rasorinfo": {
      "get": {
        "summary": "Дозволяє отримати контактні дані консультанта з нерухомості, включаючи ім’я, телефон, електронну пошту та адресу. Ідеально для відображення контактної інформації консультанта або для надання можливості користувачеві зв’язатися з ним.",
        "description": "Дозволяє отримати контактні дані консультанта з нерухомості, включаючи ім’я, телефон, електронну пошту та адресу. Ідеально для відображення контактної інформації консультанта або для надання можливості користувачеві зв’язатися з ним.",
        "operationId": "mcpRasorInfo",
        "parameters": [
          {
            "name": "RasorName",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Ім’я консультанта з нерухомості, щодо якого потрібно отримати детальну інформацію."
          },
          {
            "name": "StateName",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Дозволяє шукати консультантів за округом."
          },
          {
            "name": "TownName",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Дозволяє шукати консультантів за громадою."
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RasorInfoResponse"
                }
              }
            }
          }
        }
      }
    },
    "/mcp/imicalculator": {
      "get": {
        "summary": "Дозволяє визначити суму Муніципального податку на нерухомість (IMI) на основі даних, наданих користувачем. Сервіс перевіряє зазначений муніципалітет, визначає застосовний коефіцієнт, обробляє Податкову оцінку майна (VPT), кількість утриманців та характер майна (міський або сільський), повертаючи остаточну суму IMI до сплати відповідно до чинних податкових правил у Португалії.",
        "description": "Дозволяє визначити суму Муніципального податку на нерухомість (IMI) на основі даних, наданих користувачем. Сервіс перевіряє зазначений муніципалітет, визначає застосовний коефіцієнт, обробляє Податкову оцінку майна (VPT), кількість утриманців та характер майна (міський або сільський), повертаючи остаточну суму IMI до сплати відповідно до чинних податкових правил у Португалії.",
        "operationId": "mcpImiCalculator",
        "parameters": [
          {
            "name": "TownName",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Назва муніципалітету, де розташована нерухомість. Це поле обов’язкове для географічної ідентифікації та визначення ставки IMI. Приклад: \"Лісабон\", \"Порту\", \"Сінтра\", \"Албуфейра\"."
          },
          {
            "name": "TaxableValue",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "format": "decimal"
            },
            "description": "Оподатковувана кадастрова вартість нерухомості (VPT), зареєстрована в Податковій службі Португалії. Це офіційна фіскальна вартість, що використовується для розрахунку IMI. Має бути додатним десятковим числом у євро. Приклад: \"185000.00\"."
          },
          {
            "name": "DependentsNumber",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Кількість утриманців у домогосподарстві платника податків за відповідний податковий рік. Включає дітей, літніх батьків або інших законно визнаних утриманців, які можуть мати право на зниження або звільнення від IMI. Допустиме значення: ціле число ≥ 0. Приклад: \"2\"."
          },
          {
            "name": "IsUrban",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean"
            },
            "description": "Вказує, чи класифікується нерухомість як міська чи сільська. Міські об’єкти підлягають IMI, тоді як сільські можуть підлягати іншим податковим правилам. Приклад: true/false."
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IMIResponse"
                }
              }
            }
          }
        }
      }
    },
    "/mcp/servicesinfo": {
      "get": {
        "summary": "Опис endpoint, що надає повну інформацію про послуги, доступні для профілю клієнта.",
        "description": "Опис endpoint, що надає повну інформацію про послуги, доступні для профілю клієнта.",
        "operationId": "mcpServicesInfo",
        "parameters": [
          {
            "name": "CompanyId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Ідентифікатор компанії/агентства для запиту (необов’язково, за замовчуванням використовується внутрішній ідентифікатор компанії)."
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServicesInfoResponse"
                }
              }
            }
          }
        }
      }
    }
  }
}