{
  "openapi": "3.0.1",
  "info": {
    "title": "Real Estate MCP API - Wolves Properties",
    "version": "1.1",
    "description": "Kontekst MCP Nieruchomości do wyszukiwania nieruchomości i przesyłania próśb o kontakt. - Wolves Properties",
    "termsOfService": "https://www.wolves.properties/termos-e-condicoes",
    "contact": {
      "name": "Wolves Properties",
      "url": "https://www.wolves.properties/",
      "email": "info@wolves.properties"
    },
    "x-company-info": {
      "name": "Wolves Properties",
      "ami": "1",
      "address": "Calle Rubén Darío, 35200 Telde"
    }
  },
  "servers": [
    {
      "url": "https://www.wolves.properties/",
      "description": "Identyfikator serwera MCP"
    }
  ],
  "components": {
    "schemas": {
      "searchToMatchRequest": {
        "type": "object",
        "properties": {
          "businessType": {
            "type": "string",
            "description": "Definiuje lub zwraca identyfikator typu działalności nieruchomości"
          },
          "countryName": {
            "type": "string",
            "description": "Nazwa kraju używana jako kryterium filtrowania. To pole musi pozostać puste, jeśli kraj nie zostanie zidentyfikowany."
          },
          "stateName": {
            "type": "string",
            "description": "Nazwa regionu (okręg) dla nieruchomości (wymagana w wyszukiwaniu, jeśli nie podano gminy)."
          },
          "townName": {
            "type": "string",
            "description": "Nazwa gminy dla nieruchomości (wymagana w wyszukiwaniu, jeśli nie podano okręgu)."
          },
          "neighborhoodName": {
            "type": "string",
            "description": "Nazwa lub ID dzielnicy, w której znajduje się nieruchomość."
          },
          "zoneName": {
            "type": "string",
            "description": "Identyfikator strefy geograficznej używany do filtrowania w wyszukiwaniach."
          },
          "masterCategoryIds": {
            "type": "array",
            "description": "Identyfikatory (ID) jednej lub więcej głównych grup kategorii nieruchomości (np. mieszkania, domy, magazyny, działki, hotele). Przynajmniej jeden jest wymagany, jeśli nie określono konkretnego typu nieruchomości."
          },
          "categoryIds": {
            "type": "array",
            "description": "Identyfikatory (ID) jednego lub więcej konkretnych typów nieruchomości (np. mieszkanie, dom, magazyn, działka, hotel)."
          },
          "condition": {
            "type": "string",
            "description": "Stan zachowania."
          },
          "minPrice": {
            "type": "integer",
            "description": "Minimalna cena w euro. Wypełnić, gdy użytkownik poda minimalny budżet lub dolny limit ceny.",
            "format": "int32"
          },
          "maxPrice": {
            "type": "integer",
            "description": "Maksymalna cena w euro. Wypełnić, gdy użytkownik poda maksymalny budżet lub górny limit ceny.",
            "format": "int32"
          },
          "minBedrooms": {
            "type": "integer",
            "description": "Minimalna liczba sypialni do filtrowania",
            "format": "int32"
          },
          "maxBedrooms": {
            "type": "integer",
            "description": "Maksymalna liczba sypialni do filtrowania",
            "format": "int32"
          },
          "bathrooms": {
            "type": "integer",
            "description": "Minimalna liczba łazienek.",
            "format": "int32"
          },
          "listingReference": {
            "type": "string",
            "description": "Wewnętrzny numer referencyjny nieruchomości używany do identyfikacji."
          },
          "developmentName": {
            "type": "string",
            "description": "Nazwa inwestycji."
          },
          "developmentFractions": {
            "type": "boolean",
            "description": "Określa, czy wyszukiwanie powinno uwzględniać jednostki projektu (np. mieszkania lub lokale użytkowe) zamiast projektu jako całości. Po włączeniu wyniki obejmują wyłącznie jednostki powiązane z projektem."
          },
          "developmentTags": {
            "type": "array",
            "description": "Tagi inwestycji używane do filtrowania wyszukiwania."
          },
          "withVideos": {
            "type": "boolean",
            "description": "Wyszukuje tylko nieruchomości z dostępnymi filmami wideo. Stosować, gdy użytkownik wspomina 'z wideo', 'ma wideo', 'zobaczyć wideo nieruchomości', 'obejrzeć wideo online', itp."
          },
          "withBluePrints": {
            "type": "boolean",
            "description": "Szukaj tylko nieruchomości z dostępnymi planami (blueprints). Stosować, gdy użytkownik wspomina 'z planem', 'ma plany', 'plany domu', 'mapa nieruchomości', 'plan parteru', 'zobacz plan', itp."
          },
          "withVirtualVisits": {
            "type": "boolean",
            "description": "Wyszukuje tylko nieruchomości z dostępnymi wirtualnymi spacerami. Stosować, gdy użytkownik wspomina 'wirtualny spacer', 'tour wirtualny', 'spacer 3D', 'interaktywny tour', 'wirtualne doświadczenie', 'wirtualny podgląd', 'obejrzeć wirtualny spacer online'."
          },
          "with360Photos": {
            "type": "boolean",
            "description": "Szukaj tylko nieruchomości z dostępnymi zdjęciami 360º. Stosować, gdy użytkownik wspomina 'ze zdjęciami 360º', 'ma zdjęcia 360º', 'ze zdjęciami panoramicznymi', 'ma zdjęcia panoramiczne', 'zobacz zdjęcia 360º online', itp."
          },
          "featuresNames": {
            "type": "array",
            "description": "Cechy nieruchomości, w tym udogodnienia, usługi i pobliskie punkty zainteresowania, a także rodzaje widoków dla pełnego opisu nieruchomości"
          },
          "page": {
            "type": "integer",
            "description": "Numer strony do zwrócenia w wynikach wyszukiwania.",
            "format": "int32"
          }
        },
        "description": "Schemat opisujący parametry wejściowe dla wyszukiwania nieruchomości."
      },
      "searchResponse": {
        "type": "object",
        "properties": {
          "results": {
            "type": "array",
            "description": "Lista wyników bieżącej strony, oparta na liczbie rekordów na stronę.",
            "items": {
              "$ref": "#/components/schemas/DetailResponse"
            }
          },
          "count": {
            "type": "integer",
            "description": "Łączna liczba wyników spełniających kryteria wyszukiwania.",
            "format": "int32"
          },
          "page": {
            "type": "integer",
            "description": "Numer bieżącej strony według kryteriów wyszukiwania.",
            "format": "int32"
          },
          "totalpages": {
            "type": "integer",
            "description": "Łączna liczba stron odpowiadających kryteriom wyszukiwania.",
            "format": "int32"
          },
          "statetownnameequals": {
            "type": "boolean",
            "description": "Wskazuje, czy nazwa okręgu jest taka sama jak nazwa gminy."
          },
          "developmentname": {
            "type": "string",
            "description": "Nazwa inwestycji; pole to jest wypełniane tylko wtedy, gdy wyniki dotyczą konkretnej inwestycji o tej nazwie."
          }
        },
        "description": "Schemat opisujący parametry wyjściowe dla wyszukiwania nieruchomości."
      },
      "detailRequest": {
        "type": "object",
        "properties": {
          "listingId": {
            "type": "integer",
            "description": "ID nieruchomości do kontaktu.",
            "format": "int32"
          },
          "listingReference": {
            "type": "string",
            "description": "Wewnętrzny numer referencyjny nieruchomości używany do identyfikacji."
          },
          "developmentFractions": {
            "type": "boolean",
            "description": "Określa, czy wyszukiwanie powinno uwzględniać jednostki projektu (np. mieszkania lub lokale użytkowe) zamiast projektu jako całości. Po włączeniu wyniki obejmują wyłącznie jednostki powiązane z projektem."
          }
        },
        "description": "Schemat opisujący parametry wejściowe szczegółów nieruchomości."
      },
      "detailResponse": {
        "type": "object",
        "properties": {
          "listingId": {
            "type": "integer",
            "description": "Unikalny identyfikator ogłoszenia nieruchomości.",
            "format": "int32"
          },
          "propertyType": {
            "type": "string",
            "description": "Rodzaj nieruchomości."
          },
          "condition": {
            "type": "string",
            "description": "Stan zachowania nieruchomości."
          },
          "listingReference": {
            "type": "string",
            "description": "Referencja nieruchomości wyświetlana w wynikach wyszukiwania."
          },
          "firstPhoto": {
            "type": "string",
            "description": "URL miniatury pierwszego zdjęcia nieruchomości."
          },
          "description": {
            "type": "string",
            "description": "Szczegółowy opis nieruchomości."
          },
          "title": {
            "type": "string",
            "description": "Tytuł ogłoszenia."
          },
          "price": {
            "type": "string",
            "description": "Cena w euro."
          },
          "imiValue": {
            "type": "string",
            "description": "Kwota IMI do zapłaty za nieruchomość, obliczona na podstawie VPT i obowiązujących przepisów podatkowych."
          },
          "business": {
            "type": "string",
            "description": "Rodzaj transakcji nieruchomości."
          },
          "location": {
            "type": "string",
            "description": "Nazwa lokalizacji."
          },
          "bedrooms": {
            "type": "integer",
            "description": "Liczba sypialni w nieruchomości.",
            "format": "int32"
          },
          "bathrooms": {
            "type": "integer",
            "description": "Liczba łazienek w nieruchomości.",
            "format": "int32"
          },
          "url": {
            "type": "string",
            "description": "Publiczny URL ogłoszenia."
          },
          "hasVideos": {
            "type": "boolean",
            "description": "Wskazuje, czy nieruchomość ma dostępne filmy wideo."
          },
          "hasBluePrints": {
            "type": "boolean",
            "description": "Wskazuje, czy nieruchomość ma dostępne plany lub blueprints."
          },
          "has360Photos": {
            "type": "boolean",
            "description": "Wskazuje, czy nieruchomość ma dostępne zdjęcia 360°."
          },
          "hasVirtualVisits": {
            "type": "boolean",
            "description": "Wskazuje, czy nieruchomość ma dostępne wirtualne wizyty lub wycieczki."
          },
          "features": {
            "description": "Te klucze reprezentują opis konkretnych cech nieruchomości, w tym atrybuty fizyczne i istotne lokalizacje, takie jak basen, widok na morze, bliskość szpitali, szkół i innych istotnych udogodnień. Informacje te pomagają szczegółowo opisać i zakwalifikować nieruchomość w celu poprawy filtrowania wyszukiwania i prezentacji wyników zgodnie z preferencjami użytkownika.",
            "$ref": "#/components/schemas/Dictionary`2"
          }
        },
        "description": "Schemat opisujący parametry wyjściowe szczegółów nieruchomości."
      },
      "leadRequest": {
        "type": "object",
        "properties": {
          "listingId": {
            "type": "integer",
            "description": "ID nieruchomości do kontaktu.",
            "format": "int32"
          },
          "listingReference": {
            "type": "string",
            "description": "Wewnętrzny numer referencyjny nieruchomości używany do identyfikacji."
          },
          "name": {
            "type": "string",
            "description": "Nazwa użytkownika."
          },
          "email": {
            "type": "string",
            "description": "Adres e-mail użytkownika (wymagany, jeśli nie podano numeru telefonu)."
          },
          "phone": {
            "type": "string",
            "description": "Numer telefonu użytkownika (opcjonalny, jeśli podano adres e-mail)."
          },
          "phoneCountryCode": {
            "type": "string",
            "description": "Numer kierunkowy kraju telefonu z plusem, np. \"+48\" dla Polski, \"+351\" dla Portugalii."
          },
          "message": {
            "type": "string",
            "description": "Wiadomość niestandardowa od użytkownika."
          }
        },
        "description": "Schemat opisujący parametry wejściowe dla wysyłania leadów nieruchomości."
      },
      "leadResponse": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "description": "Status wysłania formularza kontaktowego (np.: sukces, błąd)."
          },
          "message": {
            "type": "string",
            "description": "Wiadomość opisująca wynik wysłania formularza kontaktowego."
          },
          "confirmedLead": {
            "type": "boolean",
            "description": ""
          }
        },
        "description": "Schemat opisujący parametry wyjściowe dla wysyłania leadów nieruchomości."
      },
      "companyInfoRequest": {
        "type": "object",
        "properties": {
          "companyId": {
            "type": "integer",
            "description": "Identyfikator firmy/agencji do zapytania (opcjonalnie, domyślnie używany wewnętrzny identyfikator firmy).",
            "format": "int32"
          }
        },
        "description": "Schema wejściowe dla zapytania o informacje o firmie"
      },
      "companyInfoWithAgenciesResponse": {
        "type": "object",
        "properties": {
          "headquarters": {
            "description": "Informacje o danych kontaktowych firmy dotyczących siedziby.",
            "$ref": "#/components/schemas/CompanyInfoResponse"
          },
          "agencies": {
            "type": "array",
            "description": "Informacje o danych kontaktowych agencji firmy.",
            "items": {
              "$ref": "#/components/schemas/CompanyInfoResponse"
            }
          }
        },
        "description": "Schema wyjściowe z danymi o firmie"
      },
      "companyInfoResponse": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Nazwa firmy"
          },
          "phone": {
            "type": "string",
            "description": "Numer telefonu firmy"
          },
          "mobile": {
            "type": "string",
            "description": "Numer telefonu komórkowego firmy"
          },
          "email": {
            "type": "string",
            "description": "Adres e-mail kontaktowy firmy"
          },
          "address": {
            "type": "string",
            "description": "Adres firmy (bez kodu pocztowego)"
          },
          "district": {
            "type": "string",
            "description": "Okręg, w którym znajduje się firma"
          },
          "municipality": {
            "type": "string",
            "description": "Gmina, w której znajduje się firma"
          },
          "parish": {
            "type": "string",
            "description": "Parafia, w której znajduje się firma"
          },
          "zipCode": {
            "type": "string",
            "description": "Kod pocztowy adresu firmy"
          },
          "businessHours": {
            "type": "string",
            "description": "Godziny otwarcia firmy"
          },
          "googleMapsUrl": {
            "type": "string",
            "description": "Bezpośredni link do lokalizacji firmy w Google Maps"
          }
        },
        "description": "Schema wyjściowe z danymi o firmie"
      },
      "rasorInfoRequest": {
        "type": "object",
        "properties": {
          "rasorName": {
            "type": "string",
            "description": "Nazwa konsultanta nieruchomości, o którym chcesz uzyskać szczegółowe informacje."
          },
          "stateName": {
            "type": "string",
            "description": "Umożliwia wyszukiwanie konsultantów według okręgu."
          },
          "townName": {
            "type": "string",
            "description": "Umożliwia wyszukiwanie konsultantów według gminy."
          }
        },
        "description": "Schema wejściowe do żądania szczegółowych informacji o konsultancie nieruchomości"
      },
      "rasorInfoResponse": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Pełne imię i nazwisko konsultanta nieruchomości."
          },
          "phone": {
            "type": "string",
            "description": "Numer telefonu stacjonarnego konsultanta nieruchomości."
          },
          "mobile": {
            "type": "string",
            "description": "Numer telefonu komórkowego konsultanta nieruchomości."
          },
          "observations": {
            "type": "string",
            "description": "Dodatkowe uwagi dotyczące konsultanta nieruchomości."
          },
          "email": {
            "type": "string",
            "description": "Adres e-mail konsultanta nieruchomości."
          },
          "address": {
            "type": "string",
            "description": "Pełny adres konsultanta nieruchomości lub biura."
          },
          "city": {
            "type": "string",
            "description": "Gmina, w której działa konsultant nieruchomości."
          },
          "parish": {
            "type": "string",
            "description": "Parafia, w której działa konsultant nieruchomości."
          },
          "spokenLanguages": {
            "type": "array",
            "description": "Lista języków, którymi posługuje się konsultant."
          },
          "socialProfiles": {
            "type": "array",
            "description": "Lista linków do profili społecznościowych konsultanta.",
            "items": {
              "$ref": "#/components/schemas/SocialProfile"
            }
          },
          "avatar": {
            "type": "string",
            "description": "Obraz avatara przypisanego do konsultanta."
          },
          "listingUrl": {
            "type": "string",
            "description": "Adres URL strony wyświetlającej wszystkie nieruchomości przypisane lub powiązane z konsultantem, umożliwiający bezpośredni dostęp do pełnej listy tych nieruchomości."
          },
          "detailUrl": {
            "type": "string",
            "description": "Strona prezentująca pełne informacje o agencie, w tym dane kontaktowe, profil zawodowy i powiązane nieruchomości."
          }
        },
        "description": "Schema wyjściowe z szczegółowymi informacjami o konsultancie nieruchomości"
      },
      "imiRequest": {
        "type": "object",
        "properties": {
          "townName": {
            "type": "string",
            "description": "Nazwa gminy, w której znajduje się nieruchomość. To pole jest obowiązkowe do identyfikacji geograficznej i określenia stawki IMI. Przykład: \"Lizbona\", \"Porto\", \"Sintra\", \"Albufeira\"."
          },
          "taxableValue": {
            "type": "number",
            "description": "Opodatkowana wartość katastralna nieruchomości (VPT), zgodnie z rejestracją w Portugalskim Urzędzie Skarbowym. Jest to oficjalna wartość fiskalna używana do obliczenia IMI. Musi to być dodatnia wartość dziesiętna wyrażona w euro. Przykład: \"185000.00\".",
            "format": "decimal"
          },
          "dependentsNumber": {
            "type": "integer",
            "description": "Liczba osób na utrzymaniu podatnika w danym roku podatkowym. Obejmuje dzieci, starszych rodziców lub inne prawnie uznane osoby, które mogą kwalifikować się do ulg lub zwolnień z IMI. Prawidłowe wartości: liczba całkowita ≥ 0. Przykład: \"2\".",
            "format": "int32"
          },
          "isUrban": {
            "type": "boolean",
            "description": "Wskazuje, czy nieruchomość jest sklasyfikowana jako miejska czy wiejska. Nieruchomości miejskie podlegają IMI, podczas gdy nieruchomości wiejskie mogą podlegać innym zasadom podatkowym. Przykład: true/false."
          }
        },
        "description": "Schemat danych wejściowych używany do żądania obliczenia podatku od nieruchomości (IMI) dla nieruchomości."
      },
      "imiResponse": {
        "type": "object",
        "properties": {
          "townName": {
            "type": "string",
            "description": "Nazwa gminy uwzględnionej przy obliczaniu IMI"
          },
          "taxableValue": {
            "type": "string",
            "description": "Wartość majątkowa podlegająca opodatkowaniu (VPT) uwzględniona przy obliczaniu IMI, wyrażona w euro"
          },
          "dependentsNumber": {
            "type": "string",
            "description": "Liczba osób pozostających na utrzymaniu uwzględnionych przy naliczaniu korzyści w obliczaniu IMI"
          },
          "isUrban": {
            "type": "string",
            "description": "Wskazanie, czy nieruchomość jest miejska czy wiejska, uwzględniona przy obliczaniu IMI"
          },
          "imiValue": {
            "type": "string",
            "description": "Końcowa wartość IMI (Podatek od Nieruchomości) obliczona na podstawie dostarczonych danych."
          },
          "imiTaxValue": {
            "type": "string",
            "description": "Stawka użyta do obliczenia wartości IMI."
          },
          "dependentDiscount": {
            "type": "string",
            "description": "Wartość ulgi zależna od liczby osób na utrzymaniu."
          },
          "dataYear": {
            "type": "integer",
            "description": "Rok odniesienia stawek użytych do obliczenia IMI.",
            "format": "int32"
          }
        },
        "description": "Schemat danych wyjściowych dostarczający wynik obliczenia IMI, w tym szczegółowe informacje o kwocie do zapłaty."
      },
      "servicesInfoRequest": {
        "type": "object",
        "properties": {
          "companyId": {
            "type": "integer",
            "description": "Identyfikator firmy/agencji do zapytania (opcjonalnie, domyślnie używany wewnętrzny identyfikator firmy).",
            "format": "int32"
          }
        },
        "description": "Podsumowanie dostępnych usług, w tym ich celu i zastosowania dla klientów."
      },
      "servicesInfoResponse": {
        "type": "object",
        "properties": {
          "companyId": {
            "type": "integer",
            "description": "Unikalny identyfikator firmy powiązanej z katalogiem usług.",
            "format": "int32"
          },
          "companyName": {
            "type": "string",
            "description": "Nazwa firmy udostępniającej katalog usług."
          },
          "categories": {
            "type": "array",
            "description": "Lista dostępnych kategorii usług, uporządkowanych według profilu klienta.",
            "items": {
              "$ref": "#/components/schemas/ServiceCategory"
            }
          }
        },
        "description": "Podsumowanie usług świadczonych klientowi, w tym szczegóły, zakres i zastosowanie."
      }
    }
  },
  "paths": {
    "/mcp/search": {
      "get": {
        "summary": "Wyszukaj ogłoszenia nieruchomości przy użyciu filtrów, takich jak lokalizacja, cena, typ i stan.",
        "description": "Wyszukaj ogłoszenia nieruchomości przy użyciu filtrów, takich jak lokalizacja, cena, typ i stan.",
        "operationId": "mcpSearch",
        "parameters": [
          {
            "name": "BusinessType",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Definiuje lub zwraca identyfikator typu działalności nieruchomości (Do wynajecia, Do wynajecia na wakacje, Na sprzedaz, Wynajem tymczasowe). Jeśli nie podano w wyszukiwaniu, domyślnie używana jest Sprzedaż"
          },
          {
            "name": "CountryName",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Nazwa kraju używana jako kryterium filtrowania. To pole musi pozostać puste, jeśli kraj nie zostanie zidentyfikowany., (is required)"
          },
          {
            "name": "StateName",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Nazwa regionu (okręg) dla nieruchomości (wymagana w wyszukiwaniu, jeśli nie podano gminy)., (is required)"
          },
          {
            "name": "TownName",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Nazwa gminy dla nieruchomości (wymagana w wyszukiwaniu, jeśli nie podano okręgu)."
          },
          {
            "name": "NeighborhoodName",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Nazwa lub ID dzielnicy, w której znajduje się nieruchomość."
          },
          {
            "name": "ZoneName",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Identyfikator strefy geograficznej używany do filtrowania w wyszukiwaniach."
          },
          {
            "name": "MasterCategoryIds",
            "in": "query",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "description": "Identyfikatory (ID) jednej lub więcej głównych grup kategorii nieruchomości (np. mieszkania, domy, magazyny, działki, hotele). Przynajmniej jeden jest wymagany, jeśli nie określono konkretnego typu nieruchomości."
          },
          {
            "name": "CategoryIds",
            "in": "query",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "description": "Identyfikatory (ID) jednego lub więcej konkretnych typów nieruchomości (np. mieszkanie, dom, magazyn, działka, hotel)."
          },
          {
            "name": "Condition",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Stan zachowania. (Do remontu, Do rozbiórki  lub odbudowy, Na sprzedaz, Nie dotyczy, Nowy por klucz, Po Remoncie, Rynek wtórny, W budowie, W projekcie, Wyremontowany, Z programu  motywacyjnego rehabilitacji, zastrzezony)"
          },
          {
            "name": "MinPrice",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Minimalna cena w euro. Wypełnić, gdy użytkownik poda minimalny budżet lub dolny limit ceny."
          },
          {
            "name": "MaxPrice",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Maksymalna cena w euro. Wypełnić, gdy użytkownik poda maksymalny budżet lub górny limit ceny."
          },
          {
            "name": "MinBedrooms",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Minimalna liczba sypialni do filtrowania"
          },
          {
            "name": "MaxBedrooms",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Maksymalna liczba sypialni do filtrowania"
          },
          {
            "name": "Bathrooms",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Minimalna liczba łazienek."
          },
          {
            "name": "ListingReference",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Wewnętrzny numer referencyjny nieruchomości używany do identyfikacji."
          },
          {
            "name": "DevelopmentName",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Nazwa inwestycji."
          },
          {
            "name": "DevelopmentFractions",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean"
            },
            "description": "Określa, czy wyszukiwanie powinno uwzględniać jednostki projektu (np. mieszkania lub lokale użytkowe) zamiast projektu jako całości. Po włączeniu wyniki obejmują wyłącznie jednostki powiązane z projektem."
          },
          {
            "name": "DevelopmentTags",
            "in": "query",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "description": "Tagi inwestycji używane do filtrowania wyszukiwania. ()"
          },
          {
            "name": "WithVideos",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean"
            },
            "description": "Wyszukuje tylko nieruchomości z dostępnymi filmami wideo. Stosować, gdy użytkownik wspomina 'z wideo', 'ma wideo', 'zobaczyć wideo nieruchomości', 'obejrzeć wideo online', itp."
          },
          {
            "name": "WithBluePrints",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean"
            },
            "description": "Szukaj tylko nieruchomości z dostępnymi planami (blueprints). Stosować, gdy użytkownik wspomina 'z planem', 'ma plany', 'plany domu', 'mapa nieruchomości', 'plan parteru', 'zobacz plan', itp."
          },
          {
            "name": "WithVirtualVisits",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean"
            },
            "description": "Wyszukuje tylko nieruchomości z dostępnymi wirtualnymi spacerami. Stosować, gdy użytkownik wspomina 'wirtualny spacer', 'tour wirtualny', 'spacer 3D', 'interaktywny tour', 'wirtualne doświadczenie', 'wirtualny podgląd', 'obejrzeć wirtualny spacer online'."
          },
          {
            "name": "With360Photos",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean"
            },
            "description": "Szukaj tylko nieruchomości z dostępnymi zdjęciami 360º. Stosować, gdy użytkownik wspomina 'ze zdjęciami 360º', 'ma zdjęcia 360º', 'ze zdjęciami panoramicznymi', 'ma zdjęcia panoramiczne', 'zobacz zdjęcia 360º online', itp."
          },
          {
            "name": "FeaturesNames",
            "in": "query",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "description": "Cechy nieruchomości, w tym udogodnienia, usługi i pobliskie punkty zainteresowania, a także rodzaje widoków dla pełnego opisu nieruchomości (24 godzinna ochrona, Alarm, Alarm przed instalacją, Apteka, Autostrada, Bank Bank, Barbec, Basen, Baseny, Biblioteka, Bike, Bilans, Blast drzwi, Blisko morza, Boiler, Bramka, Budowa, CCTV, Centrum handlowe, Centrum miasta, Czujka pożarowa, Dishwasher, Dom żywy, Drzwi o wysokim stopniu bezpieczeństwa, Dworzec autobusowy, Dworzec Pożarowy, Działka, Electric hob, Electricity, Elektryka, Fence, Filiżanka, Garage, Garaże, Gas, Gazowy, Gorąca woda, Góry, Green roof, Hipermarket, Historyczne miasto, Hoover, Indukacja, Internet, Iron, Izolacja akustyczna, Izolacja termiczna, Kitchen, Kitchenette, Kleaning service, Klimatyzacja, Kompleks Morza, Kort tenisowy, Kuchnia, Kuchniania, Licencia turystyczne, Lotnisko, Lustrzane szkło, Łazienki, Metro, Miasto, Microwave, Monitoring, Morze, Obszar handlowy, Ogród, Ogródek zimowy, Orientacja słoneczna, Oświetlenie publiczne, Park, Park dziecięcy, Parking publiczny, Piekarnik, Playground, Plaza, Plaża, Plenum, Płyta gazowa, Podwójne szyby, Pole, Pole golfowe, Policja, Połączenie WiFi, Pozaziemski, Pralnia, Preinstalacja telewizji kablowej, Prywatna łazienka, Przestrzeń Otwarta, Pudełko, Reception, Refrigerator, Rynek, Sala gimnastyczna, Shield, Siłownia, Służba Bezpieczeństwa, Smoke Detector (ang.)., Smoke extraction, Solarium, Spiżarnia, Sports Complex Sports, Stacja benzynowa, Stopień podatku, Suit, Szafa, Szerokość usług, Szkola, Szpital, światło naturalne, Świądek, Tansport publiczny, Taras, Telewizja kablowa, Tereny zielone, Umeblowany, Usuwalne partycje, Video entry, Washer machine, Winda, Woda, Wspólny Sypialnia, Wstępna instalacja Internetu, Wykrywanie wody, Zbawić się do domu, Zezwolenie turystyczne)"
          },
          {
            "name": "Page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Numer strony do zwrócenia w wynikach wyszukiwania."
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchResponse"
                }
              }
            }
          }
        }
      }
    },
    "/mcp/detail": {
      "get": {
        "summary": "Pobiera szczegółowe informacje o nieruchomości.",
        "description": "Pobiera szczegółowe informacje o nieruchomości.",
        "operationId": "mcpDetail",
        "parameters": [
          {
            "name": "ListingId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "description": "ID nieruchomości do kontaktu."
          },
          {
            "name": "ListingReference",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Wewnętrzny numer referencyjny nieruchomości używany do identyfikacji."
          },
          {
            "name": "DevelopmentFractions",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean"
            },
            "description": "Określa, czy wyszukiwanie powinno uwzględniać jednostki projektu (np. mieszkania lub lokale użytkowe) zamiast projektu jako całości. Po włączeniu wyniki obejmują wyłącznie jednostki powiązane z projektem."
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DetailResponse"
                }
              }
            }
          }
        }
      }
    },
    "/mcp/lead": {
      "get": {
        "summary": "Wyślij formularz kontaktowy dla konkretnej oferty.",
        "description": "Wyślij formularz kontaktowy dla konkretnej oferty.",
        "operationId": "mcpLead",
        "parameters": [
          {
            "name": "ListingId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "description": "ID nieruchomości do kontaktu."
          },
          {
            "name": "ListingReference",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Wewnętrzny numer referencyjny nieruchomości używany do identyfikacji."
          },
          {
            "name": "Name",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Nazwa użytkownika., (is required)"
          },
          {
            "name": "Email",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Adres e-mail użytkownika (wymagany, jeśli nie podano numeru telefonu)., (is required)"
          },
          {
            "name": "Phone",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Numer telefonu użytkownika (opcjonalny, jeśli podano adres e-mail)."
          },
          {
            "name": "PhoneCountryCode",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Numer kierunkowy kraju telefonu z plusem, np. \"+48\" dla Polski, \"+351\" dla Portugalii."
          },
          {
            "name": "Message",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Wiadomość niestandardowa od użytkownika."
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LeadResponse"
                }
              }
            }
          }
        }
      }
    },
    "/mcp/companyinfo": {
      "get": {
        "summary": "Pozwala na pobranie danych kontaktowych firmy, w tym nazwy agencji, adresu, numeru telefonu i e-maila. Idealne do wyświetlania informacji instytucjonalnych lub umożliwienia użytkownikowi kontaktu z agencją.",
        "description": "Pozwala na pobranie danych kontaktowych firmy, w tym nazwy agencji, adresu, numeru telefonu i e-maila. Idealne do wyświetlania informacji instytucjonalnych lub umożliwienia użytkownikowi kontaktu z agencją.",
        "operationId": "mcpCompanyInfo",
        "parameters": [
          {
            "name": "CompanyId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Identyfikator firmy/agencji do zapytania (opcjonalnie, domyślnie używany wewnętrzny identyfikator firmy)."
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CompanyInfoWithAgenciesResponse"
                }
              }
            }
          }
        }
      }
    },
    "/mcp/rasorinfo": {
      "get": {
        "summary": "Pozwala na pobranie danych kontaktowych konsultanta nieruchomości, w tym imienia, telefonu, e-maila i adresu. Idealne do wyświetlania informacji kontaktowych konsultanta lub umożliwienia użytkownikowi kontaktu z nim.",
        "description": "Pozwala na pobranie danych kontaktowych konsultanta nieruchomości, w tym imienia, telefonu, e-maila i adresu. Idealne do wyświetlania informacji kontaktowych konsultanta lub umożliwienia użytkownikowi kontaktu z nim.",
        "operationId": "mcpRasorInfo",
        "parameters": [
          {
            "name": "RasorName",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Nazwa konsultanta nieruchomości, o którym chcesz uzyskać szczegółowe informacje."
          },
          {
            "name": "StateName",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Umożliwia wyszukiwanie konsultantów według okręgu."
          },
          {
            "name": "TownName",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Umożliwia wyszukiwanie konsultantów według gminy."
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RasorInfoResponse"
                }
              }
            }
          }
        }
      }
    },
    "/mcp/imicalculator": {
      "get": {
        "summary": "Pozwala określić wartość Miejskiego Podatku od Nieruchomości (IMI) na podstawie danych dostarczonych przez użytkownika. Usługa weryfikuje wskazaną gminę, identyfikuje obowiązujący współczynnik, przetwarza Wartość Podatkową Nieruchomości (VPT), liczbę osób pozostających na utrzymaniu i charakter nieruchomości (miejska lub wiejska), zwracając ostateczną kwotę IMI do zapłaty zgodnie z obowiązującymi przepisami podatkowymi w Portugalii.",
        "description": "Pozwala określić wartość Miejskiego Podatku od Nieruchomości (IMI) na podstawie danych dostarczonych przez użytkownika. Usługa weryfikuje wskazaną gminę, identyfikuje obowiązujący współczynnik, przetwarza Wartość Podatkową Nieruchomości (VPT), liczbę osób pozostających na utrzymaniu i charakter nieruchomości (miejska lub wiejska), zwracając ostateczną kwotę IMI do zapłaty zgodnie z obowiązującymi przepisami podatkowymi w Portugalii.",
        "operationId": "mcpImiCalculator",
        "parameters": [
          {
            "name": "TownName",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Nazwa gminy, w której znajduje się nieruchomość. To pole jest obowiązkowe do identyfikacji geograficznej i określenia stawki IMI. Przykład: \"Lizbona\", \"Porto\", \"Sintra\", \"Albufeira\"."
          },
          {
            "name": "TaxableValue",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "format": "decimal"
            },
            "description": "Opodatkowana wartość katastralna nieruchomości (VPT), zgodnie z rejestracją w Portugalskim Urzędzie Skarbowym. Jest to oficjalna wartość fiskalna używana do obliczenia IMI. Musi to być dodatnia wartość dziesiętna wyrażona w euro. Przykład: \"185000.00\"."
          },
          {
            "name": "DependentsNumber",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Liczba osób na utrzymaniu podatnika w danym roku podatkowym. Obejmuje dzieci, starszych rodziców lub inne prawnie uznane osoby, które mogą kwalifikować się do ulg lub zwolnień z IMI. Prawidłowe wartości: liczba całkowita ≥ 0. Przykład: \"2\"."
          },
          {
            "name": "IsUrban",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean"
            },
            "description": "Wskazuje, czy nieruchomość jest sklasyfikowana jako miejska czy wiejska. Nieruchomości miejskie podlegają IMI, podczas gdy nieruchomości wiejskie mogą podlegać innym zasadom podatkowym. Przykład: true/false."
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IMIResponse"
                }
              }
            }
          }
        }
      }
    },
    "/mcp/servicesinfo": {
      "get": {
        "summary": "Opis endpointu dostarczającego pełne informacje o usługach dostępnych dla profilu klienta.",
        "description": "Opis endpointu dostarczającego pełne informacje o usługach dostępnych dla profilu klienta.",
        "operationId": "mcpServicesInfo",
        "parameters": [
          {
            "name": "CompanyId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Identyfikator firmy/agencji do zapytania (opcjonalnie, domyślnie używany wewnętrzny identyfikator firmy)."
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServicesInfoResponse"
                }
              }
            }
          }
        }
      }
    }
  }
}