{
  "openapi": "3.0.1",
  "info": {
    "title": "Real Estate MCP API - Villen Real Estate",
    "version": "1.1",
    "description": "MCP Immobilien-Kontext für die Immobiliensuche und das Senden von Kontaktanfragen. - Villen Real Estate",
    "termsOfService": "https://www.villenrealestate.com/termos-e-condicoes",
    "contact": {
      "name": "Villen Real Estate",
      "url": "https://www.villenrealestate.com/",
      "email": "geral@villenrealestate.com"
    },
    "x-company-info": {
      "name": "Villen Real Estate",
      "ami": "19598",
      "address": "Rua Camilo Castelo Branco 336, Loja 1, 4785-293 Trofa"
    }
  },
  "servers": [
    {
      "url": "https://www.villenrealestate.com/",
      "description": "MCP-Serverkennung"
    }
  ],
  "components": {
    "schemas": {
      "searchToMatchRequest": {
        "type": "object",
        "properties": {
          "businessType": {
            "type": "string",
            "description": "Definiert oder gibt die Kennung des Immobilientyp-Geschäfts zurück"
          },
          "countryName": {
            "type": "string",
            "description": "Name des Landes, das als Filterkriterium verwendet wird. Dieses Feld muss leer bleiben, wenn das Land nicht identifiziert wird."
          },
          "stateName": {
            "type": "string",
            "description": "Name der Region (Bezirk) für die Immobilie (Pflichtfeld in der Suche, wenn Gemeinde nicht angegeben ist)."
          },
          "townName": {
            "type": "string",
            "description": "Name der Gemeinde für die Immobilie (Pflichtfeld in der Suche, wenn Bezirk nicht angegeben ist)."
          },
          "neighborhoodName": {
            "type": "string",
            "description": "Name oder ID des Stadtteils oder der Gemeinde, in dem sich die Immobilie befindet."
          },
          "zoneName": {
            "type": "string",
            "description": "Geografische Zonenkennung zur Filterung bei Suchvorgängen."
          },
          "masterCategoryIds": {
            "type": "array",
            "description": "IDs einer oder mehrerer Hauptgruppen von Immobilienkategorien (z. B. Wohnungen, Häuser, Lagerhallen, Grundstücke, Hotels). Mindestens eine muss angegeben werden, wenn kein spezifischer Immobilientyp angegeben ist."
          },
          "categoryIds": {
            "type": "array",
            "description": "IDs einer oder mehrerer spezifischer Immobilientypen (z. B. Wohnung, Haus, Lagerhalle, Grundstück, Hotel)."
          },
          "condition": {
            "type": "string",
            "description": "Zustand."
          },
          "minPrice": {
            "type": "integer",
            "description": "Minimaler Preis in Euro. Ausfüllen, wenn der Nutzer ein Mindestbudget oder eine untere Preisgrenze angibt.",
            "format": "int32"
          },
          "maxPrice": {
            "type": "integer",
            "description": "Maximaler Preis in Euro. Ausfüllen, wenn der Nutzer ein maximales Budget oder eine obere Preisgrenze angibt.",
            "format": "int32"
          },
          "minBedrooms": {
            "type": "integer",
            "description": "Mindestanzahl an Schlafzimmern zum Filtern",
            "format": "int32"
          },
          "maxBedrooms": {
            "type": "integer",
            "description": "Maximale Anzahl an Schlafzimmern zum Filtern",
            "format": "int32"
          },
          "bathrooms": {
            "type": "integer",
            "description": "Mindestanzahl an Badezimmern.",
            "format": "int32"
          },
          "listingReference": {
            "type": "string",
            "description": "Interne Referenz der Immobilie zur Identifikation."
          },
          "developmentName": {
            "type": "string",
            "description": "Name des Projekts."
          },
          "developmentFractions": {
            "type": "boolean",
            "description": "Gibt an, ob die Suche Einheiten eines Projekts (z. B. Wohnungen oder Ladenflächen) anstelle des Projekts als Ganzes berücksichtigen soll. Wenn aktiviert, enthalten die Ergebnisse nur Einheiten, die einem Projekt zugeordnet sind."
          },
          "developmentTags": {
            "type": "array",
            "description": "Projekt-Tags zur Filterung der Suche."
          },
          "withVideos": {
            "type": "boolean",
            "description": "Suche nur nach Immobilien mit verfügbaren Videos. Anwenden, wenn der Benutzer Ausdrücke erwähnt wie 'mit Video', 'mit Videos', 'hat Video', 'hat Videos', 'Immobilienvideo ansehen', 'Video online ansehen', usw."
          },
          "withBluePrints": {
            "type": "boolean",
            "description": "Suche nur nach Immobilien mit verfügbaren Grundrissen (Blueprints). Anwenden, wenn der Benutzer 'mit Grundriss', 'hat Grundrisse', 'Hausplan', 'Immobilienkarte', 'Grundrissplan', 'Pläne', etc. erwähnt."
          },
          "withVirtualVisits": {
            "type": "boolean",
            "description": "Suche nur nach Immobilien mit verfügbaren virtuellen Rundgängen. Anwenden, wenn der Benutzer 'mit virtueller Besichtigung', 'hat virtuelle Besichtigung', 'virtuelle Tour', '3D-Tour', 'interaktive Tour', 'virtueller Rundgang', 'virtuelles Erlebnis', 'virtuelle Ansicht', 'virtuelle Besichtigung online ansehen'."
          },
          "with360Photos": {
            "type": "boolean",
            "description": "Suche nur nach Immobilien mit verfügbaren 360º-Fotos. Anwenden, wenn der Benutzer 'mit 360º Fotos', 'hat 360º Fotos', 'mit Panoramafotos', 'hat Panoramafotos', '360º Fotos online ansehen', usw. erwähnt."
          },
          "featuresNames": {
            "type": "array",
            "description": "Immobilienmerkmale, einschließlich Annehmlichkeiten, Dienstleistungen und nahegelegenen Interessenspunkten sowie Arten von Aussichten für eine vollständige Beschreibung der Immobilie"
          },
          "page": {
            "type": "integer",
            "description": "Seitennummer der Suchergebnisse.",
            "format": "int32"
          }
        },
        "description": "Schema, das die Eingabeparameter für die Immobiliensuche beschreibt."
      },
      "searchResponse": {
        "type": "object",
        "properties": {
          "results": {
            "type": "array",
            "description": "Liste der Ergebnisse der aktuellen Seite, basierend auf der Anzahl der Einträge pro Seite.",
            "items": {
              "$ref": "#/components/schemas/DetailResponse"
            }
          },
          "count": {
            "type": "integer",
            "description": "Gesamtzahl der Ergebnisse, die den Suchkriterien entsprechen.",
            "format": "int32"
          },
          "page": {
            "type": "integer",
            "description": "Nummer der aktuellen Seite gemäß den Suchkriterien.",
            "format": "int32"
          },
          "totalpages": {
            "type": "integer",
            "description": "Gesamtzahl der Seiten, die den Suchkriterien entsprechen.",
            "format": "int32"
          },
          "statetownnameequals": {
            "type": "boolean",
            "description": "Gibt an, ob der Name des Bezirks mit dem Namen der Gemeinde übereinstimmt."
          },
          "developmentname": {
            "type": "string",
            "description": "Name des Projekts; dieses Feld wird nur ausgefüllt, wenn die Ergebnisse einem bestimmten Projekt mit diesem Namen zugeordnet sind."
          }
        },
        "description": "Schema, das die Ausgabeparameter der Immobiliensuche beschreibt."
      },
      "detailRequest": {
        "type": "object",
        "properties": {
          "listingId": {
            "type": "integer",
            "description": "Objekt-ID für Kontakt.",
            "format": "int32"
          },
          "listingReference": {
            "type": "string",
            "description": "Interne Referenz der Immobilie zur Identifikation."
          },
          "developmentFractions": {
            "type": "boolean",
            "description": "Gibt an, ob die Suche Einheiten eines Projekts (z. B. Wohnungen oder Ladenflächen) anstelle des Projekts als Ganzes berücksichtigen soll. Wenn aktiviert, enthalten die Ergebnisse nur Einheiten, die einem Projekt zugeordnet sind."
          }
        },
        "description": "Schema, das die Eingabeparameter für die Immobiliendetails beschreibt."
      },
      "detailResponse": {
        "type": "object",
        "properties": {
          "listingId": {
            "type": "integer",
            "description": "Eindeutige ID des Immobilienangebots.",
            "format": "int32"
          },
          "propertyType": {
            "type": "string",
            "description": "Immobilientyp."
          },
          "condition": {
            "type": "string",
            "description": "Zustand der Immobilie."
          },
          "listingReference": {
            "type": "string",
            "description": "Referenz der Immobilie, die in den Suchergebnissen angezeigt wird."
          },
          "firstPhoto": {
            "type": "string",
            "description": "URL der Miniaturansicht des ersten Fotos der Immobilie."
          },
          "description": {
            "type": "string",
            "description": "Detaillierte Beschreibung der Immobilie."
          },
          "title": {
            "type": "string",
            "description": "Titel der Anzeige."
          },
          "price": {
            "type": "string",
            "description": "Preis in Euro."
          },
          "imiValue": {
            "type": "string",
            "description": "Zu zahlender IMI-Betrag für die Immobilie, berechnet nach dem VPT und den geltenden Steuervorschriften."
          },
          "business": {
            "type": "string",
            "description": "Art des Immobiliengeschäfts."
          },
          "location": {
            "type": "string",
            "description": "Name des Standorts."
          },
          "bedrooms": {
            "type": "integer",
            "description": "Anzahl der Schlafzimmer der Immobilie.",
            "format": "int32"
          },
          "bathrooms": {
            "type": "integer",
            "description": "Anzahl der Badezimmer der Immobilie.",
            "format": "int32"
          },
          "url": {
            "type": "string",
            "description": "Öffentliche URL der Anzeige."
          },
          "hasVideos": {
            "type": "boolean",
            "description": "Gibt an, ob die Immobilie verfügbare Videos hat."
          },
          "hasBluePrints": {
            "type": "boolean",
            "description": "Gibt an, ob die Immobilie verfügbare Grundrisse oder Blueprints hat."
          },
          "has360Photos": {
            "type": "boolean",
            "description": "Gibt an, ob die Immobilie verfügbare 360°-Fotos hat."
          },
          "hasVirtualVisits": {
            "type": "boolean",
            "description": "Gibt an, ob die Immobilie verfügbare virtuelle Besichtigungen hat."
          },
          "features": {
            "description": "Diese Schlüssel beschreiben die spezifischen Merkmale einer Immobilie, einschließlich physischer Eigenschaften und relevanter Standorte wie Pool, Meerblick, Nähe zu Krankenhäusern, Schulen und anderen wichtigen Einrichtungen. Diese Informationen helfen, die Immobilie detailliert zu beschreiben und Such- sowie Ergebnispräferenzen der Nutzer besser zu bedienen.",
            "$ref": "#/components/schemas/Dictionary`2"
          }
        },
        "description": "Schema, das die Ausgabeparameter für die Immobiliendetails beschreibt."
      },
      "leadRequest": {
        "type": "object",
        "properties": {
          "listingId": {
            "type": "integer",
            "description": "Objekt-ID für Kontakt.",
            "format": "int32"
          },
          "listingReference": {
            "type": "string",
            "description": "Interne Referenz der Immobilie zur Identifikation."
          },
          "name": {
            "type": "string",
            "description": "Name des Benutzers."
          },
          "email": {
            "type": "string",
            "description": "E-Mail-Adresse des Benutzers (erforderlich, wenn keine Telefonnummer angegeben ist)."
          },
          "phone": {
            "type": "string",
            "description": "Telefonnummer des Benutzers (optional, wenn eine E-Mail-Adresse angegeben ist)."
          },
          "phoneCountryCode": {
            "type": "string",
            "description": "Ländervorwahl des Telefons inklusive Pluszeichen, z.B. \"+49\" für Deutschland, \"+351\" für Portugal."
          },
          "message": {
            "type": "string",
            "description": "Benutzerspezifische Nachricht."
          }
        },
        "description": "Schema zur Beschreibung der Eingabeparameter für das Versenden von Immobilien-Leads."
      },
      "leadResponse": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "description": "Status der Kontaktformularübermittlung (z.B. Erfolg, Fehler)."
          },
          "message": {
            "type": "string",
            "description": "Nachricht, die das Ergebnis der Kontaktformularübermittlung beschreibt."
          },
          "confirmedLead": {
            "type": "boolean",
            "description": ""
          }
        },
        "description": "Schema zur Beschreibung der Ausgabeparameter für das Versenden von Immobilien-Leads."
      },
      "companyInfoRequest": {
        "type": "object",
        "properties": {
          "companyId": {
            "type": "integer",
            "description": "Identifikator des Unternehmens/der Agentur zur Abfrage (optional, standardmäßig wird der interne verwendet).",
            "format": "int32"
          }
        },
        "description": "Eingabeschema für Firmeninformationsanfrage"
      },
      "companyInfoWithAgenciesResponse": {
        "type": "object",
        "properties": {
          "headquarters": {
            "description": "Informationen zu den Kontaktdaten des Unternehmens in Bezug auf den Hauptsitz.",
            "$ref": "#/components/schemas/CompanyInfoResponse"
          },
          "agencies": {
            "type": "array",
            "description": "Informationen zu den Kontaktdaten der Niederlassungen des Unternehmens.",
            "items": {
              "$ref": "#/components/schemas/CompanyInfoResponse"
            }
          }
        },
        "description": "Ausgabeschema mit Firmendaten"
      },
      "companyInfoResponse": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Name des Unternehmens"
          },
          "phone": {
            "type": "string",
            "description": "Telefonnummer des Unternehmens"
          },
          "mobile": {
            "type": "string",
            "description": "Handynummer des Unternehmens"
          },
          "email": {
            "type": "string",
            "description": "Kontakt-E-Mail-Adresse des Unternehmens"
          },
          "address": {
            "type": "string",
            "description": "Adresse des Unternehmens (ohne Postleitzahl)"
          },
          "district": {
            "type": "string",
            "description": "Bezirk, in dem sich das Unternehmen befindet"
          },
          "municipality": {
            "type": "string",
            "description": "Gemeinde, in der sich das Unternehmen befindet"
          },
          "parish": {
            "type": "string",
            "description": "Pfarrgemeinde, in der sich das Unternehmen befindet"
          },
          "zipCode": {
            "type": "string",
            "description": "Postleitzahl der Unternehmensadresse"
          },
          "businessHours": {
            "type": "string",
            "description": "Geschäftszeiten des Unternehmens"
          },
          "googleMapsUrl": {
            "type": "string",
            "description": "Direkter Google-Maps-Link zum Standort des Unternehmens"
          }
        },
        "description": "Ausgabeschema mit Firmendaten"
      },
      "rasorInfoRequest": {
        "type": "object",
        "properties": {
          "rasorName": {
            "type": "string",
            "description": "Name des Immobilienberaters, über den detaillierte Informationen angefordert werden."
          },
          "stateName": {
            "type": "string",
            "description": "Ermöglicht die Suche nach Beratern nach Distrikt."
          },
          "townName": {
            "type": "string",
            "description": "Ermöglicht die Suche nach Beratern nach Gemeinde."
          }
        },
        "description": "Eingabeschema für die Anfrage detaillierter Informationen über den Immobilienberater"
      },
      "rasorInfoResponse": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Vollständiger Name des Immobilienberaters."
          },
          "phone": {
            "type": "string",
            "description": "Festnetznummer des Immobilienberaters."
          },
          "mobile": {
            "type": "string",
            "description": "Mobilnummer des Immobilienberaters."
          },
          "observations": {
            "type": "string",
            "description": "Zusätzliche Anmerkungen zum Berater."
          },
          "email": {
            "type": "string",
            "description": "E-Mail-Adresse des Immobilienberaters."
          },
          "address": {
            "type": "string",
            "description": "Vollständige Adresse des Immobilienberaters oder Büros."
          },
          "city": {
            "type": "string",
            "description": "Gemeinde, in der der Berater tätig ist."
          },
          "parish": {
            "type": "string",
            "description": "Pfarrei, in der der Berater tätig ist."
          },
          "spokenLanguages": {
            "type": "array",
            "description": "Liste der vom Berater gesprochenen Sprachen."
          },
          "socialProfiles": {
            "type": "array",
            "description": "Liste der Links zu sozialen Profilen des Beraters.",
            "items": {
              "$ref": "#/components/schemas/SocialProfile"
            }
          },
          "avatar": {
            "type": "string",
            "description": "Bild des dem Berater zugeordneten Avatars."
          },
          "listingUrl": {
            "type": "string",
            "description": "URL der Seite, die alle dem Berater zugewiesenen oder mit ihm verbundenen Immobilien anzeigt und direkten Zugriff auf die vollständige Liste der jeweiligen Objekte ermöglicht."
          },
          "detailUrl": {
            "type": "string",
            "description": "Seite, die vollständige Informationen über den Agenten anzeigt, einschließlich Kontaktdaten, beruflichem Profil und zugehörigen Immobilien."
          }
        },
        "description": "Ausgabeschema mit detaillierten Informationen über den Immobilienberater"
      },
      "imiRequest": {
        "type": "object",
        "properties": {
          "townName": {
            "type": "string",
            "description": "Name der Gemeinde, in der sich die Immobilie befindet. Dieses Feld ist für die geografische Identifizierung und die Bestimmung des IMI-Steuersatzes erforderlich. Beispiel: \"Lissabon\", \"Porto\", \"Sintra\", \"Albufeira\"."
          },
          "taxableValue": {
            "type": "number",
            "description": "Steuerpflichtiger Katasterwert der Immobilie (VPT), wie bei der portugiesischen Steuerbehörde registriert. Dies ist der offizielle steuerliche Wert, der als Grundlage für die Berechnung der IMI-Steuer dient. Er muss ein positiver Dezimalwert in Euro sein. Beispiel: \"185000.00\".",
            "format": "decimal"
          },
          "dependentsNumber": {
            "type": "integer",
            "description": "Anzahl der unterhaltsberechtigten Personen im Haushalt des Steuerpflichtigen für das betreffende Steuerjahr. Dazu zählen Kinder, ältere Eltern oder andere gesetzlich anerkannte Abhängige, die eine IMI-Ermäßigung oder Befreiung ermöglichen können. Gültige Werte: Ganzzahl ≥ 0. Beispiel: \"2\".",
            "format": "int32"
          },
          "isUrban": {
            "type": "boolean",
            "description": "Gibt an, ob die Immobilie als städtisch oder ländlich eingestuft ist. Städtische Immobilien unterliegen der IMI, während ländliche Immobilien unterschiedlichen Steuervorschriften unterliegen können. Beispiel: true/false."
          }
        },
        "description": "Eingabeschema zur Anforderung der Berechnung der Grundsteuer (IMI) für eine Immobilie."
      },
      "imiResponse": {
        "type": "object",
        "properties": {
          "townName": {
            "type": "string",
            "description": "Name der Gemeinde, die für die Berechnung der IMI berücksichtigt wird"
          },
          "taxableValue": {
            "type": "string",
            "description": "Zu versteuernder Vermögenswert (VPT), der für die IMI-Berechnung berücksichtigt wird, in Euro angegeben"
          },
          "dependentsNumber": {
            "type": "string",
            "description": "Anzahl der abhängigen Personen, die für Vorteile bei der IMI-Berechnung berücksichtigt werden"
          },
          "isUrban": {
            "type": "string",
            "description": "Angabe, ob die Immobilie städtisch oder ländlich ist, berücksichtigt bei der IMI-Berechnung"
          },
          "imiValue": {
            "type": "string",
            "description": "Endgültiger IMI-Wert (kommunale Grundsteuer), basierend auf den bereitgestellten Daten berechnet."
          },
          "imiTaxValue": {
            "type": "string",
            "description": "Für die Berechnung des IMI verwendeter Steuersatz."
          },
          "dependentDiscount": {
            "type": "string",
            "description": "Rabattbetrag basierend auf der Anzahl der Abhängigen."
          },
          "dataYear": {
            "type": "integer",
            "description": "Bezugsjahr der für die IMI-Berechnung verwendeten Steuersätze.",
            "format": "int32"
          }
        },
        "description": "Ausgabeschema, das das Ergebnis der IMI-Berechnung bereitstellt, einschließlich detaillierter Informationen über den zu zahlenden Betrag."
      },
      "servicesInfoRequest": {
        "type": "object",
        "properties": {
          "companyId": {
            "type": "integer",
            "description": "Identifikator des Unternehmens/der Agentur zur Abfrage (optional, standardmäßig wird der interne verwendet).",
            "format": "int32"
          }
        },
        "description": "Zusammenfassung der verfügbaren Dienstleistungen, einschließlich ihres Zwecks und ihrer Anwendung für Kunden."
      },
      "servicesInfoResponse": {
        "type": "object",
        "properties": {
          "companyId": {
            "type": "integer",
            "description": "Eindeutige Kennung des Unternehmens, das dem Servicekatalog zugeordnet ist.",
            "format": "int32"
          },
          "companyName": {
            "type": "string",
            "description": "Name des Unternehmens, das den Dienstleistungskatalog bereitstellt."
          },
          "categories": {
            "type": "array",
            "description": "Liste der verfügbaren Dienstleistungskategorien, nach Kundenprofil organisiert.",
            "items": {
              "$ref": "#/components/schemas/ServiceCategory"
            }
          }
        },
        "description": "Zusammenfassung der dem Kunden bereitgestellten Dienstleistungen, einschließlich Details, Umfang und Anwendung."
      }
    }
  },
  "paths": {
    "/mcp/search": {
      "get": {
        "summary": "Immobilienanzeigen mit Filtern wie Standort, Preis, Typ und Zustand suchen.",
        "description": "Immobilienanzeigen mit Filtern wie Standort, Preis, Typ und Zustand suchen.",
        "operationId": "mcpSearch",
        "parameters": [
          {
            "name": "BusinessType",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Definiert oder gibt die Kennung des Immobilientyp-Geschäfts zurück (Verkauf, Vermietung, Verpachtung). Wenn in der Suche nicht angegeben, wird standardmäßig Verkauf verwendet"
          },
          {
            "name": "CountryName",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Name des Landes, das als Filterkriterium verwendet wird. Dieses Feld muss leer bleiben, wenn das Land nicht identifiziert wird., (is required)"
          },
          {
            "name": "StateName",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Name der Region (Bezirk) für die Immobilie (Pflichtfeld in der Suche, wenn Gemeinde nicht angegeben ist)., (is required)"
          },
          {
            "name": "TownName",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Name der Gemeinde für die Immobilie (Pflichtfeld in der Suche, wenn Bezirk nicht angegeben ist)."
          },
          {
            "name": "NeighborhoodName",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Name oder ID des Stadtteils oder der Gemeinde, in dem sich die Immobilie befindet."
          },
          {
            "name": "ZoneName",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Geografische Zonenkennung zur Filterung bei Suchvorgängen."
          },
          {
            "name": "MasterCategoryIds",
            "in": "query",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "description": "IDs einer oder mehrerer Hauptgruppen von Immobilienkategorien (z. B. Wohnungen, Häuser, Lagerhallen, Grundstücke, Hotels). Mindestens eine muss angegeben werden, wenn kein spezifischer Immobilientyp angegeben ist."
          },
          {
            "name": "CategoryIds",
            "in": "query",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "description": "IDs einer oder mehrerer spezifischer Immobilientypen (z. B. Wohnung, Haus, Lagerhalle, Grundstück, Hotel)."
          },
          {
            "name": "Condition",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Zustand. (Guter Zustand, im Bau, in Planung, mit Förderungsprogramm für Wiederaufbau, neu, Remodelled, renoviert, renovierungsbedürftig, reserviert, Trifft nicht zu, zum Demolieren oder Wiederaufbau, zum Verkauf)"
          },
          {
            "name": "MinPrice",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Minimaler Preis in Euro. Ausfüllen, wenn der Nutzer ein Mindestbudget oder eine untere Preisgrenze angibt."
          },
          {
            "name": "MaxPrice",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Maximaler Preis in Euro. Ausfüllen, wenn der Nutzer ein maximales Budget oder eine obere Preisgrenze angibt."
          },
          {
            "name": "MinBedrooms",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Mindestanzahl an Schlafzimmern zum Filtern"
          },
          {
            "name": "MaxBedrooms",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Maximale Anzahl an Schlafzimmern zum Filtern"
          },
          {
            "name": "Bathrooms",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Mindestanzahl an Badezimmern."
          },
          {
            "name": "ListingReference",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Interne Referenz der Immobilie zur Identifikation."
          },
          {
            "name": "DevelopmentName",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Name des Projekts."
          },
          {
            "name": "DevelopmentFractions",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean"
            },
            "description": "Gibt an, ob die Suche Einheiten eines Projekts (z. B. Wohnungen oder Ladenflächen) anstelle des Projekts als Ganzes berücksichtigen soll. Wenn aktiviert, enthalten die Ergebnisse nur Einheiten, die einem Projekt zugeordnet sind."
          },
          {
            "name": "DevelopmentTags",
            "in": "query",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "description": "Projekt-Tags zur Filterung der Suche. ()"
          },
          {
            "name": "WithVideos",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean"
            },
            "description": "Suche nur nach Immobilien mit verfügbaren Videos. Anwenden, wenn der Benutzer Ausdrücke erwähnt wie 'mit Video', 'mit Videos', 'hat Video', 'hat Videos', 'Immobilienvideo ansehen', 'Video online ansehen', usw."
          },
          {
            "name": "WithBluePrints",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean"
            },
            "description": "Suche nur nach Immobilien mit verfügbaren Grundrissen (Blueprints). Anwenden, wenn der Benutzer 'mit Grundriss', 'hat Grundrisse', 'Hausplan', 'Immobilienkarte', 'Grundrissplan', 'Pläne', etc. erwähnt."
          },
          {
            "name": "WithVirtualVisits",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean"
            },
            "description": "Suche nur nach Immobilien mit verfügbaren virtuellen Rundgängen. Anwenden, wenn der Benutzer 'mit virtueller Besichtigung', 'hat virtuelle Besichtigung', 'virtuelle Tour', '3D-Tour', 'interaktive Tour', 'virtueller Rundgang', 'virtuelles Erlebnis', 'virtuelle Ansicht', 'virtuelle Besichtigung online ansehen'."
          },
          {
            "name": "With360Photos",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean"
            },
            "description": "Suche nur nach Immobilien mit verfügbaren 360º-Fotos. Anwenden, wenn der Benutzer 'mit 360º Fotos', 'hat 360º Fotos', 'mit Panoramafotos', 'hat Panoramafotos', '360º Fotos online ansehen', usw. erwähnt."
          },
          {
            "name": "FeaturesNames",
            "in": "query",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "description": "Immobilienmerkmale, einschließlich Annehmlichkeiten, Dienstleistungen und nahegelegenen Interessenspunkten sowie Arten von Aussichten für eine vollständige Beschreibung der Immobilie (Akustische Isolation, Apotheke, Aufzug, Autobahn, Closet, Dinning Zimmer, Elektrische Jalousien, Garage, Gebäude, Geschichte, Geschirrspülmaschine, Grünanlagen, Heizung, Induktionskochfeld, Klimaanlage, Küche, Küchenhaube, Kühlschrank, Mikrowelle, Öffentliche Vekehrsmittel , Oven, Parkplatz, Polizei, Rohrgas, Schule , Service Badezimmer, Stadt , Stadtmitte, Suite , Supermarkt, Tankstelle, Videoeintrag, Vorratskammer, Wärmerückgewinnungseinheit, Waschküche, Wohnzimmer, Zentralsauger)"
          },
          {
            "name": "Page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Seitennummer der Suchergebnisse."
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchResponse"
                }
              }
            }
          }
        }
      }
    },
    "/mcp/detail": {
      "get": {
        "summary": "Ruft detaillierte Informationen zu einer Immobilie ab.",
        "description": "Ruft detaillierte Informationen zu einer Immobilie ab.",
        "operationId": "mcpDetail",
        "parameters": [
          {
            "name": "ListingId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Objekt-ID für Kontakt."
          },
          {
            "name": "ListingReference",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Interne Referenz der Immobilie zur Identifikation."
          },
          {
            "name": "DevelopmentFractions",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean"
            },
            "description": "Gibt an, ob die Suche Einheiten eines Projekts (z. B. Wohnungen oder Ladenflächen) anstelle des Projekts als Ganzes berücksichtigen soll. Wenn aktiviert, enthalten die Ergebnisse nur Einheiten, die einem Projekt zugeordnet sind."
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DetailResponse"
                }
              }
            }
          }
        }
      }
    },
    "/mcp/lead": {
      "get": {
        "summary": "Ein Kontaktformular für ein bestimmtes Inserat absenden.",
        "description": "Ein Kontaktformular für ein bestimmtes Inserat absenden.",
        "operationId": "mcpLead",
        "parameters": [
          {
            "name": "ListingId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Objekt-ID für Kontakt."
          },
          {
            "name": "ListingReference",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Interne Referenz der Immobilie zur Identifikation."
          },
          {
            "name": "Name",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Name des Benutzers., (is required)"
          },
          {
            "name": "Email",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "E-Mail-Adresse des Benutzers (erforderlich, wenn keine Telefonnummer angegeben ist)., (is required)"
          },
          {
            "name": "Phone",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Telefonnummer des Benutzers (optional, wenn eine E-Mail-Adresse angegeben ist)."
          },
          {
            "name": "PhoneCountryCode",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Ländervorwahl des Telefons inklusive Pluszeichen, z.B. \"+49\" für Deutschland, \"+351\" für Portugal."
          },
          {
            "name": "Message",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Benutzerspezifische Nachricht."
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LeadResponse"
                }
              }
            }
          }
        }
      }
    },
    "/mcp/companyinfo": {
      "get": {
        "summary": "Ermöglicht das Abrufen der Kontaktdaten des Unternehmens, einschließlich Agenturname, Adresse, Telefonnummer und E-Mail. Ideal zur Anzeige institutioneller Informationen oder um dem Nutzer die Kontaktaufnahme mit der Agentur zu ermöglichen.",
        "description": "Ermöglicht das Abrufen der Kontaktdaten des Unternehmens, einschließlich Agenturname, Adresse, Telefonnummer und E-Mail. Ideal zur Anzeige institutioneller Informationen oder um dem Nutzer die Kontaktaufnahme mit der Agentur zu ermöglichen.",
        "operationId": "mcpCompanyInfo",
        "parameters": [
          {
            "name": "CompanyId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Identifikator des Unternehmens/der Agentur zur Abfrage (optional, standardmäßig wird der interne verwendet)."
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CompanyInfoWithAgenciesResponse"
                }
              }
            }
          }
        }
      }
    },
    "/mcp/rasorinfo": {
      "get": {
        "summary": "Ermöglicht das Abrufen der Kontaktdaten des Immobilienberaters, einschließlich Name, Telefonnummer, E-Mail und Adresse. Ideal zur Anzeige von Kontaktdaten des Beraters oder um dem Nutzer die Kontaktaufnahme zu ermöglichen.",
        "description": "Ermöglicht das Abrufen der Kontaktdaten des Immobilienberaters, einschließlich Name, Telefonnummer, E-Mail und Adresse. Ideal zur Anzeige von Kontaktdaten des Beraters oder um dem Nutzer die Kontaktaufnahme zu ermöglichen.",
        "operationId": "mcpRasorInfo",
        "parameters": [
          {
            "name": "RasorName",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Name des Immobilienberaters, über den detaillierte Informationen angefordert werden."
          },
          {
            "name": "StateName",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Ermöglicht die Suche nach Beratern nach Distrikt."
          },
          {
            "name": "TownName",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Ermöglicht die Suche nach Beratern nach Gemeinde."
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RasorInfoResponse"
                }
              }
            }
          }
        }
      }
    },
    "/mcp/imicalculator": {
      "get": {
        "summary": "Ermöglicht die Bestimmung des Werts der Kommunalsteuer auf Immobilien (IMI) basierend auf den vom Benutzer bereitgestellten Daten. Dieser Dienst überprüft die angegebene Gemeinde, ermittelt den anwendbaren Koeffizienten, verarbeitet den Steuerwert des Grundstücks (VPT), die Anzahl der abhängigen Personen und die Art des Grundstücks (urban oder ländlich) und gibt den endgültigen zu zahlenden IMI-Wert gemäß den in Portugal geltenden Steuervorschriften zurück.",
        "description": "Ermöglicht die Bestimmung des Werts der Kommunalsteuer auf Immobilien (IMI) basierend auf den vom Benutzer bereitgestellten Daten. Dieser Dienst überprüft die angegebene Gemeinde, ermittelt den anwendbaren Koeffizienten, verarbeitet den Steuerwert des Grundstücks (VPT), die Anzahl der abhängigen Personen und die Art des Grundstücks (urban oder ländlich) und gibt den endgültigen zu zahlenden IMI-Wert gemäß den in Portugal geltenden Steuervorschriften zurück.",
        "operationId": "mcpImiCalculator",
        "parameters": [
          {
            "name": "TownName",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Name der Gemeinde, in der sich die Immobilie befindet. Dieses Feld ist für die geografische Identifizierung und die Bestimmung des IMI-Steuersatzes erforderlich. Beispiel: \"Lissabon\", \"Porto\", \"Sintra\", \"Albufeira\"."
          },
          {
            "name": "TaxableValue",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "format": "decimal"
            },
            "description": "Steuerpflichtiger Katasterwert der Immobilie (VPT), wie bei der portugiesischen Steuerbehörde registriert. Dies ist der offizielle steuerliche Wert, der als Grundlage für die Berechnung der IMI-Steuer dient. Er muss ein positiver Dezimalwert in Euro sein. Beispiel: \"185000.00\"."
          },
          {
            "name": "DependentsNumber",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Anzahl der unterhaltsberechtigten Personen im Haushalt des Steuerpflichtigen für das betreffende Steuerjahr. Dazu zählen Kinder, ältere Eltern oder andere gesetzlich anerkannte Abhängige, die eine IMI-Ermäßigung oder Befreiung ermöglichen können. Gültige Werte: Ganzzahl ≥ 0. Beispiel: \"2\"."
          },
          {
            "name": "IsUrban",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean"
            },
            "description": "Gibt an, ob die Immobilie als städtisch oder ländlich eingestuft ist. Städtische Immobilien unterliegen der IMI, während ländliche Immobilien unterschiedlichen Steuervorschriften unterliegen können. Beispiel: true/false."
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IMIResponse"
                }
              }
            }
          }
        }
      }
    },
    "/mcp/servicesinfo": {
      "get": {
        "summary": "Beschreibung des Endpunkts, der vollständige Informationen über die für ein Kundenprofil verfügbaren Dienstleistungen liefert.",
        "description": "Beschreibung des Endpunkts, der vollständige Informationen über die für ein Kundenprofil verfügbaren Dienstleistungen liefert.",
        "operationId": "mcpServicesInfo",
        "parameters": [
          {
            "name": "CompanyId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Identifikator des Unternehmens/der Agentur zur Abfrage (optional, standardmäßig wird der interne verwendet)."
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServicesInfoResponse"
                }
              }
            }
          }
        }
      }
    }
  }
}