{
  "openapi": "3.0.1",
  "info": {
    "title": "Real Estate MCP API - Sitgeshouses",
    "version": "1.1",
    "description": "Context MCP Immobiliari per buscar immobles i enviar sol·licituds de contacte. - Sitgeshouses",
    "termsOfService": "https://www.sitgeshouses.com/termos-e-condicoes",
    "contact": {
      "name": "Sitgeshouses",
      "url": "https://www.sitgeshouses.com/",
      "email": "info@sitgeshouses.com"
    },
    "x-company-info": {
      "name": "Sitgeshouses",
      "address": "Carrer Bòbila 14, 3º1º, 08870 Sitges ( zona la Bóbila), la tenéis que implantar en sistema"
    }
  },
  "servers": [
    {
      "url": "https://www.sitgeshouses.com/",
      "description": "Identificador del servidor MCP"
    }
  ],
  "components": {
    "schemas": {
      "searchToMatchRequest": {
        "type": "object",
        "properties": {
          "businessType": {
            "type": "string",
            "description": "Defineix o retorna l'identificador del tipus de negoci de l'immoble"
          },
          "countryName": {
            "type": "string",
            "description": "Nom del país utilitzat com a criteri de filtratge. Aquest camp ha de romandre buit quan el país no s’identifiqui."
          },
          "stateName": {
            "type": "string",
            "description": "Nom de la regió (districte) de l'immoble (obligatori en la cerca si no s'especifica el municipi)."
          },
          "townName": {
            "type": "string",
            "description": "Nom del municipi de l'immoble (obligatori en la cerca si no s'especifica el districte)."
          },
          "neighborhoodName": {
            "type": "string",
            "description": "Nom o ID de la parròquia o barri on es troba la propietat."
          },
          "zoneName": {
            "type": "string",
            "description": "Identificador de la zona geogràfica per a la filtració en les cerques."
          },
          "masterCategoryIds": {
            "type": "array",
            "description": "Identificadors (IDs) d’un o més grups principals de categories d’immobles (adib.: apartaments, pisos, cases, magatzems, terrenys, hotels). És obligatori indicar-ne almenys un si no s’especifica un tipus específic d’immoble."
          },
          "categoryIds": {
            "type": "array",
            "description": "Identificadors (IDs) d’una o més categories específiques d’immobles (ex.: apartament, pis, casa, magatzem, terreny, hotel)."
          },
          "condition": {
            "type": "string",
            "description": "Estat de conservació."
          },
          "minPrice": {
            "type": "integer",
            "description": "Preu mínim en euros. Omplir quan l’usuari indiqui un pressupost mínim o un límit inferior de preu.",
            "format": "int32"
          },
          "maxPrice": {
            "type": "integer",
            "description": "Preu màxim en euros. Omplir quan l’usuari indiqui un pressupost màxim o un límit superior de preu.",
            "format": "int32"
          },
          "minBedrooms": {
            "type": "integer",
            "description": "Nombre mínim d'habitacions o dormitoris per filtrar",
            "format": "int32"
          },
          "maxBedrooms": {
            "type": "integer",
            "description": "Nombre màxim d'habitacions o dormitoris per filtrar",
            "format": "int32"
          },
          "bathrooms": {
            "type": "integer",
            "description": "Número mínim de banys.",
            "format": "int32"
          },
          "listingReference": {
            "type": "string",
            "description": "Referència interna del immoble utilitzada per a la seva identificació."
          },
          "developmentName": {
            "type": "string",
            "description": "Nom de l'promocio."
          },
          "developmentFractions": {
            "type": "boolean",
            "description": "Indica si la cerca ha de considerar fraccions d’un projecte immobiliari (per exemple, apartaments o locals comercials) en lloc del projecte en el seu conjunt. Quan està activat, els resultats inclouen només fraccions associades a un projecte."
          },
          "developmentTags": {
            "type": "array",
            "description": "Etiquetes de promocions immobiliàries utilitzades per filtrar la cerca."
          },
          "withVideos": {
            "type": "boolean",
            "description": "Busca només immobles amb vídeos disponibles. Aplicar quan l'usuari mencionin expressions com 'amb vídeo', 'amb vídeos', 'té vídeo', 'té vídeos', 'veure el vídeo de l'immoble', 'veure vídeo online', etc."
          },
          "withBluePrints": {
            "type": "boolean",
            "description": "Busca només immobles que tinguin plantes (blueprints) disponibles. Aplicar quan l'usuari mencionin 'com planta', 'té plantes', 'plantes de la casa', 'mapa de l'immoble', 'planta baixa', 'veure planta', 'plànol', etc."
          },
          "withVirtualVisits": {
            "type": "boolean",
            "description": "Busca només immobles amb visites virtuals disponibles. Aplicar quan l'usuari mencionin 'amb visita virtual', 'té visita virtual', 'tour virtual', 'tour 3D', 'visita 3D', 'tour interactiu', 'passeig virtual', 'experiència virtual', 'visualització virtual', 'veure visita virtual online', 'veure tour virtual'."
          },
          "with360Photos": {
            "type": "boolean",
            "description": "Busca només immobles amb fotos 360º disponibles. Aplicar quan l'usuari mencionin 'amb fotos 360', 'té fotos 360', 'amb fotos panoràmiques', 'té fotos panoràmiques', 'veure fotos 360 online', etc."
          },
          "featuresNames": {
            "type": "array",
            "description": "Característiques de l'immoble, incloses les comoditats, serveis i llocs d'interès propers, així com tipus de vistes per proporcionar una descripció completa de la propietat"
          },
          "page": {
            "type": "integer",
            "description": "Nombre de la pàgina a retornar als resultats de la cerca.",
            "format": "int32"
          }
        },
        "description": "Esquema que descriu els paràmetres d’entrada per a la cerca immobiliària."
      },
      "searchResponse": {
        "type": "object",
        "properties": {
          "results": {
            "type": "array",
            "description": "Llista de resultats de la pàgina actual, basada en el nombre de registres per pàgina.",
            "items": {
              "$ref": "#/components/schemas/DetailResponse"
            }
          },
          "count": {
            "type": "integer",
            "description": "Nombre total de resultats que corresponen als criteris de cerca.",
            "format": "int32"
          },
          "page": {
            "type": "integer",
            "description": "Número de la pàgina actual segons els criteris de cerca.",
            "format": "int32"
          },
          "totalpages": {
            "type": "integer",
            "description": "Nombre total de pàgines corresponents als criteris de cerca.",
            "format": "int32"
          },
          "statetownnameequals": {
            "type": "boolean",
            "description": "Indica si el nom del districte és igual al nom del municipi."
          },
          "developmentname": {
            "type": "string",
            "description": "Nom de l’urbanització; aquest camp només s’omple si els resultats estan associats a un projecte específic amb aquest nom."
          }
        },
        "description": "Esquema que descriu els paràmetres de sortida de la cerca immobiliària."
      },
      "detailRequest": {
        "type": "object",
        "properties": {
          "listingId": {
            "type": "integer",
            "description": "ID de l'immoble per a contacte.",
            "format": "int32"
          },
          "listingReference": {
            "type": "string",
            "description": "Referència interna del immoble utilitzada per a la seva identificació."
          },
          "developmentFractions": {
            "type": "boolean",
            "description": "Indica si la cerca ha de considerar fraccions d’un projecte immobiliari (per exemple, apartaments o locals comercials) en lloc del projecte en el seu conjunt. Quan està activat, els resultats inclouen només fraccions associades a un projecte."
          }
        },
        "description": "Esquema que descriu els paràmetres d’entrada per al detall de la propietat."
      },
      "detailResponse": {
        "type": "object",
        "properties": {
          "listingId": {
            "type": "integer",
            "description": "ID únic de l'anunci de l'immoble.",
            "format": "int32"
          },
          "propertyType": {
            "type": "string",
            "description": "Tipus d'immoble."
          },
          "condition": {
            "type": "string",
            "description": "Estat de conservació de la propietat."
          },
          "listingReference": {
            "type": "string",
            "description": "Referència del immoble mostrada en els resultats de cerca."
          },
          "firstPhoto": {
            "type": "string",
            "description": "URL de la miniatura de la primera foto de la propietat."
          },
          "description": {
            "type": "string",
            "description": "Descripció detallada de la propietat."
          },
          "title": {
            "type": "string",
            "description": "Títol de l'anunci."
          },
          "price": {
            "type": "string",
            "description": "Preu en euros."
          },
          "imiValue": {
            "type": "string",
            "description": "Import de l'IMI a pagar per l'immoble, calculat segons el VPT i la normativa fiscal aplicable."
          },
          "business": {
            "type": "string",
            "description": "Tipus de negoci de la propietat."
          },
          "location": {
            "type": "string",
            "description": "Nom de la localització."
          },
          "bedrooms": {
            "type": "integer",
            "description": "Nombre d’habitacions de la propietat.",
            "format": "int32"
          },
          "bathrooms": {
            "type": "integer",
            "description": "Nombre de banys de la propietat.",
            "format": "int32"
          },
          "url": {
            "type": "string",
            "description": "URL públic de l'anunci."
          },
          "hasVideos": {
            "type": "boolean",
            "description": "Indica si l'immoble disposa de vídeos disponibles."
          },
          "hasBluePrints": {
            "type": "boolean",
            "description": "Indica si l'immoble disposa de plànols o blueprints disponibles."
          },
          "has360Photos": {
            "type": "boolean",
            "description": "Indica si la propiedad té fotos 360° disponibles."
          },
          "hasVirtualVisits": {
            "type": "boolean",
            "description": "Indica si la propiedad té visites virtuals o recorreguts virtuals disponibles."
          },
          "features": {
            "description": "Aquestes claus representen la descripció de les característiques específiques d’un immoble, incloent atributs físics i ubicacions rellevants com piscina, vista al mar, proximitat a hospitals, escoles i altres facilitats importants. Aquesta informació ajuda a detallar i qualificar l’immoble per facilitar la cerca i la presentació de resultats segons les preferències de l’usuari.",
            "$ref": "#/components/schemas/Dictionary`2"
          }
        },
        "description": "Esquema que descriu els paràmetres de sortida del detall de la propietat."
      },
      "leadRequest": {
        "type": "object",
        "properties": {
          "listingId": {
            "type": "integer",
            "description": "ID de l'immoble per a contacte.",
            "format": "int32"
          },
          "listingReference": {
            "type": "string",
            "description": "Referència interna del immoble utilitzada per a la seva identificació."
          },
          "name": {
            "type": "string",
            "description": "Nom de l'usuari."
          },
          "email": {
            "type": "string",
            "description": "Adreça de correu electrònic de l'usuari (obligatòria si no proporciona telèfon)."
          },
          "phone": {
            "type": "string",
            "description": "Número de telèfon de l'usuari (opcional si proporciona correu electrònic)."
          },
          "phoneCountryCode": {
            "type": "string",
            "description": "Codi del país del telèfon incloent el signe més, per exemple, \"+34\" per a Espanya, \"+351\" per a Portugal."
          },
          "message": {
            "type": "string",
            "description": "Missatge personalitzat de l'usuari."
          }
        },
        "description": "Esquema que descriu els paràmetres d’entrada per enviar leads immobiliaris."
      },
      "leadResponse": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "description": "Estat de l'enviament del formulari de contacte (ex.: èxit, error)."
          },
          "message": {
            "type": "string",
            "description": "Missatge que descriu el resultat de l'enviament del formulari de contacte."
          },
          "confirmedLead": {
            "type": "boolean",
            "description": ""
          }
        },
        "description": "Esquema que descriu els paràmetres de sortida de l’enviament de leads immobiliaris."
      },
      "companyInfoRequest": {
        "type": "object",
        "properties": {
          "companyId": {
            "type": "integer",
            "description": "Identificador de l’empresa/agència a consultar (opcional, per defecte s’utilitza l’intern de l’empresa).",
            "format": "int32"
          }
        },
        "description": "Esquema de entrada para pedido de informação da empresa"
      },
      "companyInfoWithAgenciesResponse": {
        "type": "object",
        "properties": {
          "headquarters": {
            "description": "Informació de les dades de contacte de l’empresa corresponents a la seu.",
            "$ref": "#/components/schemas/CompanyInfoResponse"
          },
          "agencies": {
            "type": "array",
            "description": "Informació de les dades de contacte de les agències de l’empresa.",
            "items": {
              "$ref": "#/components/schemas/CompanyInfoResponse"
            }
          }
        },
        "description": "Esquema de saída com os dados de informação da empresa"
      },
      "companyInfoResponse": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Nom de l'empresa"
          },
          "phone": {
            "type": "string",
            "description": "Telèfon de l'empresa"
          },
          "mobile": {
            "type": "string",
            "description": "Telèfon mòbil de l'empresa"
          },
          "email": {
            "type": "string",
            "description": "Correu electrònic de contacte de l'empresa"
          },
          "address": {
            "type": "string",
            "description": "Adreça de l'empresa (sense codi postal)"
          },
          "district": {
            "type": "string",
            "description": "Província on es troba l'empresa"
          },
          "municipality": {
            "type": "string",
            "description": "Municipi on es troba l'empresa"
          },
          "parish": {
            "type": "string",
            "description": "Població/Barri on es troba l'empresa"
          },
          "zipCode": {
            "type": "string",
            "description": "Codi postal de l'adreça de l'empresa"
          },
          "businessHours": {
            "type": "string",
            "description": "Horari d'atenció de l'empresa"
          },
          "googleMapsUrl": {
            "type": "string",
            "description": "Enllaç directe a la ubicació de l'empresa a Google Maps"
          }
        },
        "description": "Esquema de saída com os dados de informação da empresa"
      },
      "rasorInfoRequest": {
        "type": "object",
        "properties": {
          "rasorName": {
            "type": "string",
            "description": "Nom del consultor immobiliari del qual es vol obtenir informació detallada."
          },
          "stateName": {
            "type": "string",
            "description": "Permet cercar consultors per districte."
          },
          "townName": {
            "type": "string",
            "description": "Permet cercar consultors per municipi."
          }
        },
        "description": "Esquema d'entrada per sol·licitar informació detallada del consultor immobiliari"
      },
      "rasorInfoResponse": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Nom complet del consultor immobiliari."
          },
          "phone": {
            "type": "string",
            "description": "Telèfon fix del consultor immobiliari."
          },
          "mobile": {
            "type": "string",
            "description": "Telèfon mòbil del consultor immobiliari."
          },
          "observations": {
            "type": "string",
            "description": "Observacions addicionals relacionades amb el consultor."
          },
          "email": {
            "type": "string",
            "description": "Adreça de correu electrònic del consultor immobiliari."
          },
          "address": {
            "type": "string",
            "description": "Adreça completa del consultor immobiliari o oficina."
          },
          "city": {
            "type": "string",
            "description": "Concell on el consultor exerceix activitat."
          },
          "parish": {
            "type": "string",
            "description": "Freguesia on el consultor exerceix activitat."
          },
          "spokenLanguages": {
            "type": "array",
            "description": "Llista d'idiomes que parla el consultor."
          },
          "socialProfiles": {
            "type": "array",
            "description": "Llistat d'enllaços a perfils o pàgines socials del consultor.",
            "items": {
              "$ref": "#/components/schemas/SocialProfile"
            }
          },
          "avatar": {
            "type": "string",
            "description": "Imatge de l'avatar associat al consultor."
          },
          "listingUrl": {
            "type": "string",
            "description": "URL de la pàgina que mostra tots els immobles assignats o relacionats amb el consultor, permetent l'accés directe al llistat complet dels respectius immobles."
          },
          "detailUrl": {
            "type": "string",
            "description": "Pàgina que mostra la informació completa de l'agent, incloent dades de contacte, perfil professional i propietats associades."
          }
        },
        "description": "Esquema de salida con la información detallada del consultor inmobiliario"
      },
      "imiRequest": {
        "type": "object",
        "properties": {
          "townName": {
            "type": "string",
            "description": "Nom del municipi on es troba ubicat l'immoble. Aquest camp és obligatori per a la identificació geogràfica i la determinació de la taxa d'IMI. Exemple: \"Lisboa\", \"Porto\", \"Sintra\", \"Albufeira\"."
          },
          "taxableValue": {
            "type": "number",
            "description": "Valor cadastral de la propietat (VPT), segons consta a l’Autoritat Tributària portuguesa. És el valor fiscal oficial utilitzat com a base per al càlcul de l’IMI. Ha de ser un valor decimal positiu expressat en euros. Exemple: \"185000.00\".",
            "format": "decimal"
          },
          "dependentsNumber": {
            "type": "integer",
            "description": "Nombre de dependents que formen part de l’agregat familiar del contribuent per a l’any fiscal de referència. Inclou infants, avis o altres dependents legalment reconeguts que puguin dar lloc a reduccions o exempcions d’IMI. Valors vàlids: enter ≥ 0. Exemple: \"2\".",
            "format": "int32"
          },
          "isUrban": {
            "type": "boolean",
            "description": "Indica si la propiedad está clasificada como urbana o rústica. Las propiedades urbanas están sujetas al IMI, mientras que las propiedades rústicas pueden estar sujetas a reglas fiscales diferentes. Ejemplo: true/false."
          }
        },
        "description": "Esquema de dades d'entrada utilitzat per fer sol·licituds de càlcul de l'IMI d'un immoble."
      },
      "imiResponse": {
        "type": "object",
        "properties": {
          "townName": {
            "type": "string",
            "description": "Nom del concell considerat per al càlcul de l'IMI"
          },
          "taxableValue": {
            "type": "string",
            "description": "Valor Patrimonial Tributari (VPT) considerat per al càlcul de l'IMI, expressat en euros"
          },
          "dependentsNumber": {
            "type": "string",
            "description": "Nombre de dependents comptabilitzats per a efectes de beneficis aplicats en el càlcul de l'IMI"
          },
          "isUrban": {
            "type": "string",
            "description": "Indicació si l'immoble és urbà o rústic, considerat per al càlcul de l'IMI"
          },
          "imiValue": {
            "type": "string",
            "description": "Valor final de l'IMI (Impost Municipal sobre Béns Immobles) calculat a partir de les dades proporcionades."
          },
          "imiTaxValue": {
            "type": "string",
            "description": "Taxa utilitzada per al càlcul de l'IMI."
          },
          "dependentDiscount": {
            "type": "string",
            "description": "Valor del descompte basat en el nombre de dependents."
          },
          "dataYear": {
            "type": "integer",
            "description": "Any de referència de les taxes utilitzades per al càlcul de l'IMI.",
            "format": "int32"
          }
        },
        "description": "Esquema de dades de sortida que proporciona el resultat del càlcul de l'IMI, incloent informació detallada sobre l'import a pagar."
      },
      "servicesInfoRequest": {
        "type": "object",
        "properties": {
          "companyId": {
            "type": "integer",
            "description": "Identificador de l’empresa/agència a consultar (opcional, per defecte s’utilitza l’intern de l’empresa).",
            "format": "int32"
          }
        },
        "description": "Resum dels serveis disponibles, incloent la seva finalitat i aplicació per als clients."
      },
      "servicesInfoResponse": {
        "type": "object",
        "properties": {
          "companyId": {
            "type": "integer",
            "description": "Identificador únic de l’empresa associada al catàleg de serveis.",
            "format": "int32"
          },
          "companyName": {
            "type": "string",
            "description": "Nom de l’empresa que proporciona el catàleg de serveis."
          },
          "categories": {
            "type": "array",
            "description": "Llista de categories de serveis disponibles, organitzades per perfil de client.",
            "items": {
              "$ref": "#/components/schemas/ServiceCategory"
            }
          }
        },
        "description": "Resum dels serveis proporcionats al client, incloent detalls, àmbit i aplicació."
      }
    }
  },
  "paths": {
    "/mcp/search": {
      "get": {
        "summary": "Cercar anuncis immobiliaris utilitzant filtres com ubicació, preu, tipus i condició.",
        "description": "Cercar anuncis immobiliaris utilitzant filtres com ubicació, preu, tipus i condició.",
        "operationId": "mcpSearch",
        "parameters": [
          {
            "name": "BusinessType",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Defineix o retorna l'identificador del tipus de negoci de l'immoble (Lloguer, Lloguer temporal, Lloguer vacacional, Venda). Si no s'indica a la cerca, s'utilitzarà Venda per defecte"
          },
          {
            "name": "CountryName",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Nom del país utilitzat com a criteri de filtratge. Aquest camp ha de romandre buit quan el país no s’identifiqui., (es requereix)"
          },
          {
            "name": "StateName",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Nom de la regió (districte) de l'immoble (obligatori en la cerca si no s'especifica el municipi)., (es requereix)"
          },
          {
            "name": "TownName",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Nom del municipi de l'immoble (obligatori en la cerca si no s'especifica el districte)."
          },
          {
            "name": "NeighborhoodName",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Nom o ID de la parròquia o barri on es troba la propietat."
          },
          {
            "name": "ZoneName",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Identificador de la zona geogràfica per a la filtració en les cerques."
          },
          {
            "name": "MasterCategoryIds",
            "in": "query",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "description": "Identificadors (IDs) d’un o més grups principals de categories d’immobles (adib.: apartaments, pisos, cases, magatzems, terrenys, hotels). És obligatori indicar-ne almenys un si no s’especifica un tipus específic d’immoble."
          },
          {
            "name": "CategoryIds",
            "in": "query",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "description": "Identificadors (IDs) d’una o més categories específiques d’immobles (ex.: apartament, pis, casa, magatzem, terreny, hotel)."
          },
          {
            "name": "Condition",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Estat de conservació. (a demolir o reconstruir, amb incentius a la rehabilitació, en construcció, en projecte, En venda, No aplicable, Nou, per a reformar, Reformat, Rehabilitat, Reservat, Usat)"
          },
          {
            "name": "MinPrice",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Preu mínim en euros. Omplir quan l’usuari indiqui un pressupost mínim o un límit inferior de preu."
          },
          {
            "name": "MaxPrice",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Preu màxim en euros. Omplir quan l’usuari indiqui un pressupost màxim o un límit superior de preu."
          },
          {
            "name": "MinBedrooms",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Nombre mínim d'habitacions o dormitoris per filtrar"
          },
          {
            "name": "MaxBedrooms",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Nombre màxim d'habitacions o dormitoris per filtrar"
          },
          {
            "name": "Bathrooms",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Número mínim de banys."
          },
          {
            "name": "ListingReference",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Referència interna del immoble utilitzada per a la seva identificació."
          },
          {
            "name": "DevelopmentName",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Nom de l'promocio."
          },
          {
            "name": "DevelopmentFractions",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean"
            },
            "description": "Indica si la cerca ha de considerar fraccions d’un projecte immobiliari (per exemple, apartaments o locals comercials) en lloc del projecte en el seu conjunt. Quan està activat, els resultats inclouen només fraccions associades a un projecte."
          },
          {
            "name": "DevelopmentTags",
            "in": "query",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "description": "Etiquetes de promocions immobiliàries utilitzades per filtrar la cerca. ()"
          },
          {
            "name": "WithVideos",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean"
            },
            "description": "Busca només immobles amb vídeos disponibles. Aplicar quan l'usuari mencionin expressions com 'amb vídeo', 'amb vídeos', 'té vídeo', 'té vídeos', 'veure el vídeo de l'immoble', 'veure vídeo online', etc."
          },
          {
            "name": "WithBluePrints",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean"
            },
            "description": "Busca només immobles que tinguin plantes (blueprints) disponibles. Aplicar quan l'usuari mencionin 'com planta', 'té plantes', 'plantes de la casa', 'mapa de l'immoble', 'planta baixa', 'veure planta', 'plànol', etc."
          },
          {
            "name": "WithVirtualVisits",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean"
            },
            "description": "Busca només immobles amb visites virtuals disponibles. Aplicar quan l'usuari mencionin 'amb visita virtual', 'té visita virtual', 'tour virtual', 'tour 3D', 'visita 3D', 'tour interactiu', 'passeig virtual', 'experiència virtual', 'visualització virtual', 'veure visita virtual online', 'veure tour virtual'."
          },
          {
            "name": "With360Photos",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean"
            },
            "description": "Busca només immobles amb fotos 360º disponibles. Aplicar quan l'usuari mencionin 'amb fotos 360', 'té fotos 360', 'amb fotos panoràmiques', 'té fotos panoràmiques', 'veure fotos 360 online', etc."
          },
          {
            "name": "FeaturesNames",
            "in": "query",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "description": "Característiques de l'immoble, incloses les comoditats, serveis i llocs d'interès propers, així com tipus de vistes per proporcionar una descripció completa de la propietat (Acceso a la tierra, Agua, Aire condicionat, Aislamiento termico, Alarma , Ascensor, Baño de servicio, Barbacoa, Benzinstation, Biblioteca, Calefacció, Camp, Campo de golf, Carretera, Centre ciutat , Centre comercial, Chimenea, Ciutat, Closet, Cocina, Cocina equipada, Connexió Wi-fi, Cristal doble, Edificio, Electricidad, Escola , Espacio abierto, Espacios verdes, Farmàcia, Garaje, Garatge, Gas natural, Golf, Hipermercat, Jardí , Luz natural, Mar , Moblat , Offentlig belysning, Oficina, Orientación solar, Piscina compartida, Piscina , Pisos radiantes, Platja, Platja , Playroom, Policia , Porche, Puerta blindada, Recepción, Safareig, Sala de estar, Satélite, Sewage público, Solarium, Suite , Terrassa, Tipo de Terreno (Pendiente), Transports Públics, Videovigilància)"
          },
          {
            "name": "Page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Nombre de la pàgina a retornar als resultats de la cerca."
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchResponse"
                }
              }
            }
          }
        }
      }
    },
    "/mcp/detail": {
      "get": {
        "summary": "Obté la informació completa d'una propietat immobiliària.",
        "description": "Obté la informació completa d'una propietat immobiliària.",
        "operationId": "mcpDetail",
        "parameters": [
          {
            "name": "ListingId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "description": "ID de l'immoble per a contacte."
          },
          {
            "name": "ListingReference",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Referència interna del immoble utilitzada per a la seva identificació."
          },
          {
            "name": "DevelopmentFractions",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean"
            },
            "description": "Indica si la cerca ha de considerar fraccions d’un projecte immobiliari (per exemple, apartaments o locals comercials) en lloc del projecte en el seu conjunt. Quan està activat, els resultats inclouen només fraccions associades a un projecte."
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DetailResponse"
                }
              }
            }
          }
        }
      }
    },
    "/mcp/lead": {
      "get": {
        "summary": "Enviar un formulari de contacte per a un anunci específic.",
        "description": "Enviar un formulari de contacte per a un anunci específic.",
        "operationId": "mcpLead",
        "parameters": [
          {
            "name": "ListingId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "description": "ID de l'immoble per a contacte."
          },
          {
            "name": "ListingReference",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Referència interna del immoble utilitzada per a la seva identificació."
          },
          {
            "name": "Name",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Nom de l'usuari., (es requereix)"
          },
          {
            "name": "Email",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Adreça de correu electrònic de l'usuari (obligatòria si no proporciona telèfon)., (es requereix)"
          },
          {
            "name": "Phone",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Número de telèfon de l'usuari (opcional si proporciona correu electrònic)."
          },
          {
            "name": "PhoneCountryCode",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Codi del país del telèfon incloent el signe més, per exemple, \"+34\" per a Espanya, \"+351\" per a Portugal."
          },
          {
            "name": "Message",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Missatge personalitzat de l'usuari."
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LeadResponse"
                }
              }
            }
          }
        }
      }
    },
    "/mcp/companyinfo": {
      "get": {
        "summary": "Permet obtenir les dades de contacte de l'empresa, incloent-hi el nom de l'agència, l'adreça, el telèfon i el correu electrònic. Ideal per mostrar informació institucional o permetre que l'usuari contacti amb l'agència.",
        "description": "Permet obtenir les dades de contacte de l'empresa, incloent-hi el nom de l'agència, l'adreça, el telèfon i el correu electrònic. Ideal per mostrar informació institucional o permetre que l'usuari contacti amb l'agència.",
        "operationId": "mcpCompanyInfo",
        "parameters": [
          {
            "name": "CompanyId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Identificador de l’empresa/agència a consultar (opcional, per defecte s’utilitza l’intern de l’empresa)."
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CompanyInfoWithAgenciesResponse"
                }
              }
            }
          }
        }
      }
    },
    "/mcp/rasorinfo": {
      "get": {
        "summary": "Permet obtenir les dades de contacte del consultor immobiliari, incloent-hi nom, telèfon, correu electrònic i adreça. Ideal per mostrar informació de contacte del consultor o permetre que l'usuari es comuniqui amb ell.",
        "description": "Permet obtenir les dades de contacte del consultor immobiliari, incloent-hi nom, telèfon, correu electrònic i adreça. Ideal per mostrar informació de contacte del consultor o permetre que l'usuari es comuniqui amb ell.",
        "operationId": "mcpRasorInfo",
        "parameters": [
          {
            "name": "RasorName",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Nom del consultor immobiliari del qual es vol obtenir informació detallada."
          },
          {
            "name": "StateName",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Permet cercar consultors per districte."
          },
          {
            "name": "TownName",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Permet cercar consultors per municipi."
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RasorInfoResponse"
                }
              }
            }
          }
        }
      }
    },
    "/mcp/imicalculator": {
      "get": {
        "summary": "Permet determinar el valor de l'Impost Municipal sobre Immobles (IMI) basat en les dades proporcionades per l'usuari. Aquest servei valida el municipi indicat, identifica el coeficient aplicable, processa el Valor Patrimonial Tributari (VPT), el nombre de dependents i la naturalesa de l'immoble (urbà o rústic), retornant l'import final de l'IMI a pagar segons les normes fiscals vigents a Portugal.",
        "description": "Permet determinar el valor de l'Impost Municipal sobre Immobles (IMI) basat en les dades proporcionades per l'usuari. Aquest servei valida el municipi indicat, identifica el coeficient aplicable, processa el Valor Patrimonial Tributari (VPT), el nombre de dependents i la naturalesa de l'immoble (urbà o rústic), retornant l'import final de l'IMI a pagar segons les normes fiscals vigents a Portugal.",
        "operationId": "mcpImiCalculator",
        "parameters": [
          {
            "name": "TownName",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Nom del municipi on es troba ubicat l'immoble. Aquest camp és obligatori per a la identificació geogràfica i la determinació de la taxa d'IMI. Exemple: \"Lisboa\", \"Porto\", \"Sintra\", \"Albufeira\"."
          },
          {
            "name": "TaxableValue",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "format": "decimal"
            },
            "description": "Valor cadastral de la propietat (VPT), segons consta a l’Autoritat Tributària portuguesa. És el valor fiscal oficial utilitzat com a base per al càlcul de l’IMI. Ha de ser un valor decimal positiu expressat en euros. Exemple: \"185000.00\"."
          },
          {
            "name": "DependentsNumber",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Nombre de dependents que formen part de l’agregat familiar del contribuent per a l’any fiscal de referència. Inclou infants, avis o altres dependents legalment reconeguts que puguin dar lloc a reduccions o exempcions d’IMI. Valors vàlids: enter ≥ 0. Exemple: \"2\"."
          },
          {
            "name": "IsUrban",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean"
            },
            "description": "Indica si la propiedad está clasificada como urbana o rústica. Las propiedades urbanas están sujetas al IMI, mientras que las propiedades rústicas pueden estar sujetas a reglas fiscales diferentes. Ejemplo: true/false."
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IMIResponse"
                }
              }
            }
          }
        }
      }
    },
    "/mcp/servicesinfo": {
      "get": {
        "summary": "Descripció de l’endpoint que proporciona informació completa sobre els serveis disponibles per a un perfil de client.",
        "description": "Descripció de l’endpoint que proporciona informació completa sobre els serveis disponibles per a un perfil de client.",
        "operationId": "mcpServicesInfo",
        "parameters": [
          {
            "name": "CompanyId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Identificador de l’empresa/agència a consultar (opcional, per defecte s’utilitza l’intern de l’empresa)."
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServicesInfoResponse"
                }
              }
            }
          }
        }
      }
    }
  }
}