{
  "openapi": "3.0.1",
  "info": {
    "title": "Real Estate MCP API - Janssens Partner Real Estate",
    "version": "1.1",
    "description": "MCP vastgoedcontext voor het zoeken naar woningen en het indienen van contactverzoeken. - Janssens Partner Real Estate",
    "termsOfService": "https://www.janssenspartner.com/termos-e-condicoes",
    "contact": {
      "name": "Janssens Partner Real Estate",
      "url": "https://www.janssenspartner.com/",
      "email": "admin@janssenspartner.com"
    },
    "x-company-info": {
      "name": "Janssens Partner Real Estate",
      "address": "Calle Estribor, 34Z - Local 4, Urb. Altea Dorada - 03599 Altea (Alicante)"
    }
  },
  "servers": [
    {
      "url": "https://www.janssenspartner.com/",
      "description": "MCP-serveridentificatie"
    }
  ],
  "components": {
    "schemas": {
      "searchToMatchRequest": {
        "type": "object",
        "properties": {
          "businessType": {
            "type": "string",
            "description": "Definieert of retourneert de identificatie van het type bedrijf van het onroerend goed"
          },
          "countryName": {
            "type": "string",
            "description": "Naam van het land dat wordt gebruikt als filtercriterium. Dit veld moet leeg blijven wanneer het land niet wordt geïdentificeerd."
          },
          "stateName": {
            "type": "string",
            "description": "Naam van de regio (district) voor het pand (vereist bij zoeken als gemeente niet is opgegeven)."
          },
          "townName": {
            "type": "string",
            "description": "Naam van de gemeente voor het pand (vereist bij zoeken als district niet is opgegeven)."
          },
          "neighborhoodName": {
            "type": "string",
            "description": "Naam of ID van de wijk waar het pand zich bevindt."
          },
          "zoneName": {
            "type": "string",
            "description": "Geografische zone-identificatie gebruikt voor filteren in zoekopdrachten."
          },
          "masterCategoryIds": {
            "type": "array",
            "description": "IDs van één of meer hoofdgroepen van vastgoedcategorieën (bijv. appartementen, huizen, magazijnen, grond, hotels). Minimaal één is vereist als geen specifiek type vastgoed is opgegeven."
          },
          "categoryIds": {
            "type": "array",
            "description": "ID's van een of meer specifieke vastgoedcategorieën (bijv. appartement, huis, magazijn, grond, hotel)."
          },
          "condition": {
            "type": "string",
            "description": "Conditiestatus."
          },
          "minPrice": {
            "type": "integer",
            "description": "Minimale prijs in euro. Invullen wanneer de gebruiker een minimaal budget of ondergrens aangeeft.",
            "format": "int32"
          },
          "maxPrice": {
            "type": "integer",
            "description": "Maximale prijs in euro. Invullen wanneer de gebruiker een maximaal budget of bovengrens aangeeft.",
            "format": "int32"
          },
          "minBedrooms": {
            "type": "integer",
            "description": "Minimaal aantal slaapkamers om op te filteren",
            "format": "int32"
          },
          "maxBedrooms": {
            "type": "integer",
            "description": "Maximaal aantal slaapkamers om op te filteren",
            "format": "int32"
          },
          "bathrooms": {
            "type": "integer",
            "description": "Minimaal aantal badkamers.",
            "format": "int32"
          },
          "listingReference": {
            "type": "string",
            "description": "Interne referentie van het pand gebruikt voor identificatie."
          },
          "developmentName": {
            "type": "string",
            "description": "Naam van het project."
          },
          "developmentFractions": {
            "type": "boolean",
            "description": "Geeft aan of de zoekopdracht eenheden van een project (bijv. appartementen of winkels) moet meenemen in plaats van het project als geheel. Wanneer ingeschakeld, bevatten de resultaten alleen eenheden die aan een project zijn gekoppeld."
          },
          "developmentTags": {
            "type": "array",
            "description": "Projecttags die worden gebruikt om de zoekopdracht te filteren."
          },
          "withVideos": {
            "type": "boolean",
            "description": "Zoekt alleen naar woningen met beschikbare video’s. Toepassen wanneer de gebruiker termen noemt zoals 'met video', 'met video's', 'heeft video', 'heeft video’s', 'vastgoedvideo bekijken', 'video online bekijken', enz."
          },
          "withBluePrints": {
            "type": "boolean",
            "description": "Zoekt alleen naar woningen met beschikbare plattegronden (blueprints). Toepassen wanneer de gebruiker 'met plattegrond', 'heeft plattegrond', 'huisplattegrond', 'vastgoedkaart', 'plattegrond begane grond', 'zie plattegrond', etc. noemt."
          },
          "withVirtualVisits": {
            "type": "boolean",
            "description": "Zoekt alleen woningen met virtuele rondleidingen. Toepassen wanneer de gebruiker 'virtueel bezoek', 'virtuele rondleiding', '3D tour', 'interactieve tour', 'virtuele ervaring', 'virtuele weergave', 'virtuele rondleiding online bekijken' noemt."
          },
          "with360Photos": {
            "type": "boolean",
            "description": "Zoekt alleen naar woningen met beschikbare 360º-foto's. Toepassen wanneer de gebruiker 'met 360º foto's', 'heeft 360º foto's', 'met panoramafoto's', 'heeft panoramafoto's', '360º foto's online bekijken', etc. noemt."
          },
          "featuresNames": {
            "type": "array",
            "description": "Vastgoedeigenschappen, inclusief voorzieningen, diensten en nabijgelegen bezienswaardigheden, evenals typen uitzichten voor een volledige beschrijving van het pand"
          },
          "page": {
            "type": "integer",
            "description": "Paginanummer om terug te geven in de zoekresultaten.",
            "format": "int32"
          }
        },
        "description": "Schema dat de invoerparameters voor het zoeken naar onroerend goed beschrijft."
      },
      "searchResponse": {
        "type": "object",
        "properties": {
          "results": {
            "type": "array",
            "description": "Lijst met resultaten van de huidige pagina, gebaseerd op het aantal records per pagina.",
            "items": {
              "$ref": "#/components/schemas/DetailResponse"
            }
          },
          "count": {
            "type": "integer",
            "description": "Totaal aantal resultaten dat overeenkomt met de zoekcriteria.",
            "format": "int32"
          },
          "page": {
            "type": "integer",
            "description": "Nummer van de huidige pagina op basis van de zoekcriteria.",
            "format": "int32"
          },
          "totalpages": {
            "type": "integer",
            "description": "Totaal aantal pagina’s dat overeenkomt met de zoekcriteria.",
            "format": "int32"
          },
          "statetownnameequals": {
            "type": "boolean",
            "description": "Geeft aan of de naam van het district gelijk is aan de naam van de gemeente."
          },
          "developmentname": {
            "type": "string",
            "description": "Projectnaam; dit veld wordt alleen ingevuld als de resultaten gerelateerd zijn aan een specifiek project met deze naam."
          }
        },
        "description": "Schema dat de uitvoerparameters voor het zoeken naar onroerend goed beschrijft."
      },
      "detailRequest": {
        "type": "object",
        "properties": {
          "listingId": {
            "type": "integer",
            "description": "Vastgoed-ID voor contact.",
            "format": "int32"
          },
          "listingReference": {
            "type": "string",
            "description": "Interne referentie van het pand gebruikt voor identificatie."
          },
          "developmentFractions": {
            "type": "boolean",
            "description": "Geeft aan of de zoekopdracht eenheden van een project (bijv. appartementen of winkels) moet meenemen in plaats van het project als geheel. Wanneer ingeschakeld, bevatten de resultaten alleen eenheden die aan een project zijn gekoppeld."
          }
        },
        "description": "Schema dat de invoerparameters voor de vastgoeddetails beschrijft."
      },
      "detailResponse": {
        "type": "object",
        "properties": {
          "listingId": {
            "type": "integer",
            "description": "Uniek ID van de vastgoedvermelding.",
            "format": "int32"
          },
          "propertyType": {
            "type": "string",
            "description": "Type woning."
          },
          "condition": {
            "type": "string",
            "description": "Conditie van het onroerend goed."
          },
          "listingReference": {
            "type": "string",
            "description": "Referentie van het pand weergegeven in de zoekresultaten."
          },
          "firstPhoto": {
            "type": "string",
            "description": "URL van de miniatuur van de eerste foto van het pand."
          },
          "description": {
            "type": "string",
            "description": "Gedetailleerde beschrijving van het pand."
          },
          "title": {
            "type": "string",
            "description": "Titel van de advertentie."
          },
          "price": {
            "type": "string",
            "description": "Prijs in euro's."
          },
          "imiValue": {
            "type": "string",
            "description": "Te betalen IMI-bedrag voor het onroerend goed, berekend op basis van de VPT en toepasselijke fiscale regels."
          },
          "business": {
            "type": "string",
            "description": "Soort vastgoedtransactie."
          },
          "location": {
            "type": "string",
            "description": "Naam van de locatie."
          },
          "bedrooms": {
            "type": "integer",
            "description": "Aantal slaapkamers in het pand.",
            "format": "int32"
          },
          "bathrooms": {
            "type": "integer",
            "description": "Aantal badkamers in het pand.",
            "format": "int32"
          },
          "url": {
            "type": "string",
            "description": "Openbare URL van de aanbieding."
          },
          "hasVideos": {
            "type": "boolean",
            "description": "Geeft aan of het pand beschikbare video's heeft."
          },
          "hasBluePrints": {
            "type": "boolean",
            "description": "Geeft aan of het pand beschikbare plattegronden of blueprints heeft."
          },
          "has360Photos": {
            "type": "boolean",
            "description": "Geeft aan of de woning beschikbare 360°-foto's heeft."
          },
          "hasVirtualVisits": {
            "type": "boolean",
            "description": "Geeft aan of de woning beschikbare virtuele rondleidingen heeft."
          },
          "features": {
            "description": "Deze sleutels vertegenwoordigen de beschrijving van specifieke vastgoedkenmerken, inclusief fysieke attributen en relevante locaties zoals zwembad, zeezicht, nabijheid van ziekenhuizen, scholen en andere belangrijke faciliteiten. Deze informatie helpt om het vastgoed te detailleren en te kwalificeren voor een betere zoekfiltering en presentatie van resultaten volgens de voorkeuren van de gebruiker.",
            "$ref": "#/components/schemas/Dictionary`2"
          }
        },
        "description": "Schema dat de uitvoerparameters voor de vastgoeddetails beschrijft."
      },
      "leadRequest": {
        "type": "object",
        "properties": {
          "listingId": {
            "type": "integer",
            "description": "Vastgoed-ID voor contact.",
            "format": "int32"
          },
          "listingReference": {
            "type": "string",
            "description": "Interne referentie van het pand gebruikt voor identificatie."
          },
          "name": {
            "type": "string",
            "description": "Naam van de gebruiker."
          },
          "email": {
            "type": "string",
            "description": "E-mailadres van de gebruiker (vereist indien geen telefoonnummer wordt opgegeven)."
          },
          "phone": {
            "type": "string",
            "description": "Telefoonnummer van de gebruiker (optioneel als e-mailadres wordt opgegeven)."
          },
          "phoneCountryCode": {
            "type": "string",
            "description": "Telefoonlandcode inclusief plusteken, bijv. \"+31\" voor Nederland, \"+351\" voor Portugal."
          },
          "message": {
            "type": "string",
            "description": "Aangepast bericht van de gebruiker."
          }
        },
        "description": "Schema dat de invoerparameters voor het verzenden van vastgoedleads beschrijft."
      },
      "leadResponse": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "description": "Status van de verzending van het contactformulier (bijv.: succes, fout)."
          },
          "message": {
            "type": "string",
            "description": "Bericht die het resultaat van het indienen van het contactformulier beschrijft."
          },
          "confirmedLead": {
            "type": "boolean",
            "description": ""
          }
        },
        "description": "Schema dat de uitvoerparameters voor het verzenden van vastgoedleads beschrijft."
      },
      "companyInfoRequest": {
        "type": "object",
        "properties": {
          "companyId": {
            "type": "integer",
            "description": "Identificatie van het bedrijf/bureau om op te vragen (optioneel, standaard het interne van het bedrijf).",
            "format": "int32"
          }
        },
        "description": "Invoerschema voor bedrijfsinformatieaanvraag"
      },
      "companyInfoWithAgenciesResponse": {
        "type": "object",
        "properties": {
          "headquarters": {
            "description": "Informatie over de contactgegevens van het bedrijf met betrekking tot het hoofdkantoor.",
            "$ref": "#/components/schemas/CompanyInfoResponse"
          },
          "agencies": {
            "type": "array",
            "description": "Informatie over de contactgegevens van de agentschappen van het bedrijf.",
            "items": {
              "$ref": "#/components/schemas/CompanyInfoResponse"
            }
          }
        },
        "description": "Uitvoerschema met bedrijfsinformatiedata"
      },
      "companyInfoResponse": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Naam van het bedrijf"
          },
          "phone": {
            "type": "string",
            "description": "Telefoonnummer van het bedrijf"
          },
          "mobile": {
            "type": "string",
            "description": "Mobiel nummer van het bedrijf"
          },
          "email": {
            "type": "string",
            "description": "Contact e-mailadres van het bedrijf"
          },
          "address": {
            "type": "string",
            "description": "Adres van het bedrijf (zonder postcode)"
          },
          "district": {
            "type": "string",
            "description": "District waar het bedrijf zich bevindt"
          },
          "municipality": {
            "type": "string",
            "description": "Gemeente waar het bedrijf zich bevindt"
          },
          "parish": {
            "type": "string",
            "description": "Parochie waar het bedrijf zich bevindt"
          },
          "zipCode": {
            "type": "string",
            "description": "Postcode van het bedrijf"
          },
          "businessHours": {
            "type": "string",
            "description": "Openingstijden van het bedrijf"
          },
          "googleMapsUrl": {
            "type": "string",
            "description": "Directe Google Maps-link naar de locatie van het bedrijf"
          }
        },
        "description": "Uitvoerschema met bedrijfsinformatiedata"
      },
      "rasorInfoRequest": {
        "type": "object",
        "properties": {
          "rasorName": {
            "type": "string",
            "description": "Naam van de vastgoedadviseur over wie gedetailleerde informatie wordt opgevraagd."
          },
          "stateName": {
            "type": "string",
            "description": "Maakt het mogelijk consultants te zoeken per district."
          },
          "townName": {
            "type": "string",
            "description": "Maakt het mogelijk consultants te zoeken per gemeente."
          }
        },
        "description": "Invoerschema voor het aanvragen van gedetailleerde informatie over de vastgoedadviseur"
      },
      "rasorInfoResponse": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Volledige naam van de vastgoedadviseur."
          },
          "phone": {
            "type": "string",
            "description": "Vastgoedadviseur vast nummer."
          },
          "mobile": {
            "type": "string",
            "description": "Mobiel nummer van de vastgoedadviseur."
          },
          "observations": {
            "type": "string",
            "description": "Aanvullende opmerkingen met betrekking tot de vastgoedadviseur."
          },
          "email": {
            "type": "string",
            "description": "E-mailadres van de vastgoedadviseur."
          },
          "address": {
            "type": "string",
            "description": "Volledig adres van de vastgoedadviseur of kantoor."
          },
          "city": {
            "type": "string",
            "description": "Gemeente waar de consultant actief is."
          },
          "parish": {
            "type": "string",
            "description": "Parochie waar de consultant actief is."
          },
          "spokenLanguages": {
            "type": "array",
            "description": "Lijst van talen die de consultant spreekt."
          },
          "socialProfiles": {
            "type": "array",
            "description": "Lijst met links naar de sociale profielen van de consultant.",
            "items": {
              "$ref": "#/components/schemas/SocialProfile"
            }
          },
          "avatar": {
            "type": "string",
            "description": "Afbeelding van de avatar die aan de consultant is gekoppeld."
          },
          "listingUrl": {
            "type": "string",
            "description": "URL van de pagina die alle aan de consultant toegewezen of ermee verbonden panden toont en directe toegang biedt tot de volledige lijst van de betreffende panden."
          },
          "detailUrl": {
            "type": "string",
            "description": "Pagina met volledige informatie over de makelaar, inclusief contactgegevens, professioneel profiel en gekoppelde woningen."
          }
        },
        "description": "Uitvoerschema met gedetailleerde informatie over de vastgoedadviseur"
      },
      "imiRequest": {
        "type": "object",
        "properties": {
          "townName": {
            "type": "string",
            "description": "Naam van de gemeente waar het pand is gelegen. Dit veld is verplicht voor geografische identificatie en bepaling van het IMI-tarief. Voorbeeld: \"Lissabon\", \"Porto\", \"Sintra\", \"Albufeira\"."
          },
          "taxableValue": {
            "type": "number",
            "description": "Belastbare kadastrale waarde van het pand (VPT), zoals geregistreerd bij de Portugese Belastingdienst. Dit is de officiële fiscale waarde die wordt gebruikt als basis voor de berekening van IMI. Moet een positieve decimale waarde in euro’s zijn. Voorbeeld: \"185000.00\".",
            "format": "decimal"
          },
          "dependentsNumber": {
            "type": "integer",
            "description": "Aantal personen ten laste in het huishouden van de belastingplichtige voor het betreffende belastingjaar. Dit omvat kinderen, oudere ouders of anderen die wettelijk worden erkend en recht kunnen geven op IMI-vermindering of vrijstelling. Geldige waarden: geheel getal ≥ 0. Voorbeeld: \"2\".",
            "format": "int32"
          },
          "isUrban": {
            "type": "boolean",
            "description": "Geeft aan of het pand als stedelijk of landelijk wordt geclassificeerd. Stedelijke panden zijn onderworpen aan IMI, terwijl landelijke panden aan andere belastingregels kunnen worden onderworpen. Voorbeeld: true/false."
          }
        },
        "description": "Invoerschema gebruikt om de berekening van de gemeentelijke onroerendezaakbelasting (IMI) voor een eigendom aan te vragen."
      },
      "imiResponse": {
        "type": "object",
        "properties": {
          "townName": {
            "type": "string",
            "description": "Naam van de gemeente die in aanmerking wordt genomen voor de berekening van de IMI"
          },
          "taxableValue": {
            "type": "string",
            "description": "Belastbare vermogenswaarde (VPT) die wordt gebruikt voor de berekening van IMI, uitgedrukt in euro"
          },
          "dependentsNumber": {
            "type": "string",
            "description": "Aantal afhankelijke personen die worden meegenomen voor voordelen bij de IMI-berekening"
          },
          "isUrban": {
            "type": "string",
            "description": "Aanduiding of het pand stedelijk of landelijk is, meegenomen voor de berekening van IMI"
          },
          "imiValue": {
            "type": "string",
            "description": "Definitieve IMI-waarde (Gemeentelijke onroerendgoedbelasting) berekend op basis van de verstrekte gegevens."
          },
          "imiTaxValue": {
            "type": "string",
            "description": "Tarief gebruikt voor de berekening van de IMI."
          },
          "dependentDiscount": {
            "type": "string",
            "description": "Kortingswaarde gebaseerd op het aantal afhankelijken."
          },
          "dataYear": {
            "type": "integer",
            "description": "Referentiejaar van de tarieven die voor de IMI-berekening zijn gebruikt.",
            "format": "int32"
          }
        },
        "description": "Uitvoerschema dat het resultaat van de IMI-berekening biedt, inclusief gedetailleerde informatie over het te betalen bedrag."
      },
      "servicesInfoRequest": {
        "type": "object",
        "properties": {
          "companyId": {
            "type": "integer",
            "description": "Identificatie van het bedrijf/bureau om op te vragen (optioneel, standaard het interne van het bedrijf).",
            "format": "int32"
          }
        },
        "description": "Samenvatting van beschikbare diensten, inclusief hun doel en toepassing voor klanten."
      },
      "servicesInfoResponse": {
        "type": "object",
        "properties": {
          "companyId": {
            "type": "integer",
            "description": "Unieke identificatie van het bedrijf dat aan de dienstencatalogus is gekoppeld.",
            "format": "int32"
          },
          "companyName": {
            "type": "string",
            "description": "Naam van het bedrijf dat de dienstencatalogus aanbiedt."
          },
          "categories": {
            "type": "array",
            "description": "Lijst met beschikbare dienstcategorieën, georganiseerd per klantprofiel.",
            "items": {
              "$ref": "#/components/schemas/ServiceCategory"
            }
          }
        },
        "description": "Samenvatting van de aan de klant geleverde diensten, inclusief details, reikwijdte en toepassing."
      }
    }
  },
  "paths": {
    "/mcp/search": {
      "get": {
        "summary": "Zoek vastgoedadvertenties met filters zoals locatie, prijs, type en staat.",
        "description": "Zoek vastgoedadvertenties met filters zoals locatie, prijs, type en staat.",
        "operationId": "mcpSearch",
        "parameters": [
          {
            "name": "BusinessType",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Definieert of retourneert de identificatie van het type bedrijf van het onroerend goed (Te Huur, Te Koop). Indien niet opgegeven in de zoekopdracht, wordt standaard Verkoop gebruikt"
          },
          {
            "name": "CountryName",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Naam van het land dat wordt gebruikt als filtercriterium. Dit veld moet leeg blijven wanneer het land niet wordt geïdentificeerd., (is required)"
          },
          {
            "name": "StateName",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Naam van de regio (district) voor het pand (vereist bij zoeken als gemeente niet is opgegeven)., (is required)"
          },
          {
            "name": "TownName",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Naam van de gemeente voor het pand (vereist bij zoeken als district niet is opgegeven)."
          },
          {
            "name": "NeighborhoodName",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Naam of ID van de wijk waar het pand zich bevindt."
          },
          {
            "name": "ZoneName",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Geografische zone-identificatie gebruikt voor filteren in zoekopdrachten."
          },
          {
            "name": "MasterCategoryIds",
            "in": "query",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "description": "IDs van één of meer hoofdgroepen van vastgoedcategorieën (bijv. appartementen, huizen, magazijnen, grond, hotels). Minimaal één is vereist als geen specifiek type vastgoed is opgegeven."
          },
          {
            "name": "CategoryIds",
            "in": "query",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "description": "ID's van een of meer specifieke vastgoedcategorieën (bijv. appartement, huis, magazijn, grond, hotel)."
          },
          {
            "name": "Condition",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Conditiestatus. (Gebruikt, Gerenoveerd, Gereserveerd, In aanbouw, In project, Met rehabilitatie  Programma, Niet Van Toepassing, Nieuw, Te koop, Te Slopen of Herbouwen, Voor Renovatie)"
          },
          {
            "name": "MinPrice",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Minimale prijs in euro. Invullen wanneer de gebruiker een minimaal budget of ondergrens aangeeft."
          },
          {
            "name": "MaxPrice",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Maximale prijs in euro. Invullen wanneer de gebruiker een maximaal budget of bovengrens aangeeft."
          },
          {
            "name": "MinBedrooms",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Minimaal aantal slaapkamers om op te filteren"
          },
          {
            "name": "MaxBedrooms",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Maximaal aantal slaapkamers om op te filteren"
          },
          {
            "name": "Bathrooms",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Minimaal aantal badkamers."
          },
          {
            "name": "ListingReference",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Interne referentie van het pand gebruikt voor identificatie."
          },
          {
            "name": "DevelopmentName",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Naam van het project."
          },
          {
            "name": "DevelopmentFractions",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean"
            },
            "description": "Geeft aan of de zoekopdracht eenheden van een project (bijv. appartementen of winkels) moet meenemen in plaats van het project als geheel. Wanneer ingeschakeld, bevatten de resultaten alleen eenheden die aan een project zijn gekoppeld."
          },
          {
            "name": "DevelopmentTags",
            "in": "query",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "description": "Projecttags die worden gebruikt om de zoekopdracht te filteren. ()"
          },
          {
            "name": "WithVideos",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean"
            },
            "description": "Zoekt alleen naar woningen met beschikbare video’s. Toepassen wanneer de gebruiker termen noemt zoals 'met video', 'met video's', 'heeft video', 'heeft video’s', 'vastgoedvideo bekijken', 'video online bekijken', enz."
          },
          {
            "name": "WithBluePrints",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean"
            },
            "description": "Zoekt alleen naar woningen met beschikbare plattegronden (blueprints). Toepassen wanneer de gebruiker 'met plattegrond', 'heeft plattegrond', 'huisplattegrond', 'vastgoedkaart', 'plattegrond begane grond', 'zie plattegrond', etc. noemt."
          },
          {
            "name": "WithVirtualVisits",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean"
            },
            "description": "Zoekt alleen woningen met virtuele rondleidingen. Toepassen wanneer de gebruiker 'virtueel bezoek', 'virtuele rondleiding', '3D tour', 'interactieve tour', 'virtuele ervaring', 'virtuele weergave', 'virtuele rondleiding online bekijken' noemt."
          },
          {
            "name": "With360Photos",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean"
            },
            "description": "Zoekt alleen naar woningen met beschikbare 360º-foto's. Toepassen wanneer de gebruiker 'met 360º foto's', 'heeft 360º foto's', 'met panoramafoto's', 'heeft panoramafoto's', '360º foto's online bekijken', etc. noemt."
          },
          {
            "name": "FeaturesNames",
            "in": "query",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "description": "Vastgoedeigenschappen, inclusief voorzieningen, diensten en nabijgelegen bezienswaardigheden, evenals typen uitzichten voor een volledige beschrijving van het pand (Access to land, Airconditioning, Alarm, Apotheek, Barbecue, Building, Centrale Verwarming, Closet, Dinning room, Domotics, Electric blinds, Electricity, Eletric fence, Fireplace, Fitnesscenter, Garage, Gas hot water, Gemeubilleerd, Groengebieden, Gym, Highway, Jacuzzi, Kelder, Kitchen, Lift, Living room, Natural light, Openbaar Vervoer, Politie, Public sewage, School, Service bathroom, Shared pool, Solar panels, Solarium, Stadscentrum, Supermarkt, Terrain Type (Slope), Terras, Tuin, Wasruimte, Water, Wine cellar, Ziekenhuis, Zwembad)"
          },
          {
            "name": "Page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Paginanummer om terug te geven in de zoekresultaten."
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchResponse"
                }
              }
            }
          }
        }
      }
    },
    "/mcp/detail": {
      "get": {
        "summary": "Haalt gedetailleerde informatie op over een vastgoedobject.",
        "description": "Haalt gedetailleerde informatie op over een vastgoedobject.",
        "operationId": "mcpDetail",
        "parameters": [
          {
            "name": "ListingId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Vastgoed-ID voor contact."
          },
          {
            "name": "ListingReference",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Interne referentie van het pand gebruikt voor identificatie."
          },
          {
            "name": "DevelopmentFractions",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean"
            },
            "description": "Geeft aan of de zoekopdracht eenheden van een project (bijv. appartementen of winkels) moet meenemen in plaats van het project als geheel. Wanneer ingeschakeld, bevatten de resultaten alleen eenheden die aan een project zijn gekoppeld."
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DetailResponse"
                }
              }
            }
          }
        }
      }
    },
    "/mcp/lead": {
      "get": {
        "summary": "Verzend een contactformulier voor een specifieke vermelding.",
        "description": "Verzend een contactformulier voor een specifieke vermelding.",
        "operationId": "mcpLead",
        "parameters": [
          {
            "name": "ListingId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Vastgoed-ID voor contact."
          },
          {
            "name": "ListingReference",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Interne referentie van het pand gebruikt voor identificatie."
          },
          {
            "name": "Name",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Naam van de gebruiker., (is required)"
          },
          {
            "name": "Email",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "E-mailadres van de gebruiker (vereist indien geen telefoonnummer wordt opgegeven)., (is required)"
          },
          {
            "name": "Phone",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Telefoonnummer van de gebruiker (optioneel als e-mailadres wordt opgegeven)."
          },
          {
            "name": "PhoneCountryCode",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Telefoonlandcode inclusief plusteken, bijv. \"+31\" voor Nederland, \"+351\" voor Portugal."
          },
          {
            "name": "Message",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Aangepast bericht van de gebruiker."
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LeadResponse"
                }
              }
            }
          }
        }
      }
    },
    "/mcp/companyinfo": {
      "get": {
        "summary": "Maakt het mogelijk om de contactgegevens van het bedrijf op te halen, inclusief de naam van het bureau, adres, telefoonnummer en e-mail. Ideaal voor het weergeven van institutionele informatie of om de gebruiker in staat te stellen contact op te nemen met het bureau.",
        "description": "Maakt het mogelijk om de contactgegevens van het bedrijf op te halen, inclusief de naam van het bureau, adres, telefoonnummer en e-mail. Ideaal voor het weergeven van institutionele informatie of om de gebruiker in staat te stellen contact op te nemen met het bureau.",
        "operationId": "mcpCompanyInfo",
        "parameters": [
          {
            "name": "CompanyId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Identificatie van het bedrijf/bureau om op te vragen (optioneel, standaard het interne van het bedrijf)."
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CompanyInfoWithAgenciesResponse"
                }
              }
            }
          }
        }
      }
    },
    "/mcp/rasorinfo": {
      "get": {
        "summary": "Maakt het mogelijk om de contactgegevens van de vastgoedadviseur op te halen, inclusief naam, telefoon, e-mail en adres. Ideaal voor het weergeven van de contactinformatie van de adviseur of om de gebruiker in staat te stellen contact op te nemen.",
        "description": "Maakt het mogelijk om de contactgegevens van de vastgoedadviseur op te halen, inclusief naam, telefoon, e-mail en adres. Ideaal voor het weergeven van de contactinformatie van de adviseur of om de gebruiker in staat te stellen contact op te nemen.",
        "operationId": "mcpRasorInfo",
        "parameters": [
          {
            "name": "RasorName",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Naam van de vastgoedadviseur over wie gedetailleerde informatie wordt opgevraagd."
          },
          {
            "name": "StateName",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Maakt het mogelijk consultants te zoeken per district."
          },
          {
            "name": "TownName",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Maakt het mogelijk consultants te zoeken per gemeente."
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RasorInfoResponse"
                }
              }
            }
          }
        }
      }
    },
    "/mcp/imicalculator": {
      "get": {
        "summary": "Maakt het mogelijk de waarde van de gemeentelijke onroerendezaakbelasting (IMI) te bepalen op basis van door de gebruiker verstrekte gegevens. Deze dienst valideert de aangegeven gemeente, identificeert de toepasselijke coëfficiënt, verwerkt de Belastingbare Patrimoniale Waarde (VPT), het aantal afhankelijke personen en de aard van het onroerend goed (stedelijk of landelijk), en retourneert het uiteindelijke IMI-bedrag dat betaald moet worden volgens de huidige fiscale regels in Portugal.",
        "description": "Maakt het mogelijk de waarde van de gemeentelijke onroerendezaakbelasting (IMI) te bepalen op basis van door de gebruiker verstrekte gegevens. Deze dienst valideert de aangegeven gemeente, identificeert de toepasselijke coëfficiënt, verwerkt de Belastingbare Patrimoniale Waarde (VPT), het aantal afhankelijke personen en de aard van het onroerend goed (stedelijk of landelijk), en retourneert het uiteindelijke IMI-bedrag dat betaald moet worden volgens de huidige fiscale regels in Portugal.",
        "operationId": "mcpImiCalculator",
        "parameters": [
          {
            "name": "TownName",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Naam van de gemeente waar het pand is gelegen. Dit veld is verplicht voor geografische identificatie en bepaling van het IMI-tarief. Voorbeeld: \"Lissabon\", \"Porto\", \"Sintra\", \"Albufeira\"."
          },
          {
            "name": "TaxableValue",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "format": "decimal"
            },
            "description": "Belastbare kadastrale waarde van het pand (VPT), zoals geregistreerd bij de Portugese Belastingdienst. Dit is de officiële fiscale waarde die wordt gebruikt als basis voor de berekening van IMI. Moet een positieve decimale waarde in euro’s zijn. Voorbeeld: \"185000.00\"."
          },
          {
            "name": "DependentsNumber",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Aantal personen ten laste in het huishouden van de belastingplichtige voor het betreffende belastingjaar. Dit omvat kinderen, oudere ouders of anderen die wettelijk worden erkend en recht kunnen geven op IMI-vermindering of vrijstelling. Geldige waarden: geheel getal ≥ 0. Voorbeeld: \"2\"."
          },
          {
            "name": "IsUrban",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean"
            },
            "description": "Geeft aan of het pand als stedelijk of landelijk wordt geclassificeerd. Stedelijke panden zijn onderworpen aan IMI, terwijl landelijke panden aan andere belastingregels kunnen worden onderworpen. Voorbeeld: true/false."
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IMIResponse"
                }
              }
            }
          }
        }
      }
    },
    "/mcp/servicesinfo": {
      "get": {
        "summary": "Beschrijving van de endpoint die volledige informatie biedt over de beschikbare diensten voor een klantprofiel.",
        "description": "Beschrijving van de endpoint die volledige informatie biedt over de beschikbare diensten voor een klantprofiel.",
        "operationId": "mcpServicesInfo",
        "parameters": [
          {
            "name": "CompanyId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Identificatie van het bedrijf/bureau om op te vragen (optioneel, standaard het interne van het bedrijf)."
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServicesInfoResponse"
                }
              }
            }
          }
        }
      }
    }
  }
}