{
  "openapi": "3.0.1",
  "info": {
    "title": "Real Estate MCP API - Dils Portugal",
    "version": "1.1",
    "description": "Contexto MCP Imobiliário para pesquisa de imóveis e submissão de pedidos de contacto. - Dils Portugal",
    "termsOfService": "/termos-e-condicoes",
    "contact": {
      "name": "Dils Portugal",
      "url": "https://dils.pt/",
      "email": "info.portugal@dils.com"
    },
    "x-company-info": {
      "name": "Dils Portugal",
      "ami": "3497",
      "address": "Avenida da República, 5 – 2º Piso, 1050-185 Lisboa"
    }
  },
  "servers": [
    {
      "url": "https://dils.pt/",
      "description": "Identificador do servidor MCP"
    }
  ],
  "components": {
    "schemas": {
      "searchToMatchRequest": {
        "type": "object",
        "properties": {
          "businessType": {
            "type": "string",
            "description": "Define ou devolve o identificador do tipo de negócio do imóvel"
          },
          "countryName": {
            "type": "string",
            "description": "Nome do país utilizado como critério de filtragem. Este campo deve permanecer vazio quando o país não for identificado."
          },
          "stateName": {
            "type": "string",
            "description": "Nome da região (distrito) para o imóvel (é obrigatório na pesquisa se não mencionar concelho)."
          },
          "townName": {
            "type": "string",
            "description": "Nome do concelho para o imóvel (é obrigatório na pesquisa se não mencionar distrito)."
          },
          "neighborhoodName": {
            "type": "string",
            "description": "Nome ou ID da freguesia onde se localiza o imóvel."
          },
          "zoneName": {
            "type": "string",
            "description": "Identificador da zona geográfica para filtragem nas pesquisas."
          },
          "masterCategoryIds": {
            "type": "array",
            "description": "IDs de um ou mais grupos principais de categorias de imóvel (ex.: apartamentos, moradias, armazéns, terrenos, hotéis). É obrigatório indicar pelo menos um se não for indicado um tipo específico de imóvel."
          },
          "categoryIds": {
            "type": "array",
            "description": "IDs de uma ou mais categorias específicas de imóveis (ex: apartamento, moradia, armazém, terreno, hotel)."
          },
          "condition": {
            "type": "string",
            "description": "Estado de conservação."
          },
          "minPrice": {
            "type": "integer",
            "description": "Preço mínimo em euros. Preencher quando o utilizador indicar um orçamento mínimo ou limite inferior de preço.",
            "format": "int32"
          },
          "maxPrice": {
            "type": "integer",
            "description": "Preço máximo em euros. Preencher quando o utilizador indicar um orçamento máximo ou limite superior de preço.",
            "format": "int32"
          },
          "minBedrooms": {
            "type": "integer",
            "description": "Número mínimo de quartos para filtrar",
            "format": "int32"
          },
          "maxBedrooms": {
            "type": "integer",
            "description": "Número máximo de quartos para filtrar",
            "format": "int32"
          },
          "bathrooms": {
            "type": "integer",
            "description": "Número mínimo de casas de banho.",
            "format": "int32"
          },
          "listingReference": {
            "type": "string",
            "description": "Referência interna do imóvel usada para identificação."
          },
          "developmentName": {
            "type": "string",
            "description": "Nome do empreendimento."
          },
          "developmentFractions": {
            "type": "boolean",
            "description": "Indica se a pesquisa deve considerar fracções de empreendimentos (por exemplo, apartamentos ou lojas) em vez do empreendimento como um todo. Quando activo, os resultados incluem apenas fracções associadas a um empreendimento."
          },
          "developmentTags": {
            "type": "array",
            "description": "Etiquetas de empreendimentos utilizadas para filtrar a pesquisa."
          },
          "withVideos": {
            "type": "boolean",
            "description": "Procura apenas imóveis com vídeos disponíveis. Aplicar quando o utilizador mencionar expressões como 'com vídeo', 'com vídeos', 'tem vídeo', 'tem vídeos', 'vídeo do imóvel', 'ver vídeo online', etc."
          },
          "withBluePrints": {
            "type": "boolean",
            "description": "Procura apenas imóveis que tenham plantas (blueprints) disponíveis. Aplicar quando o utilizador mencionar 'com planta', 'tem planta', 'plantas da casa', 'mapa do imóvel', 'planta baixa', 'ver planta', etc."
          },
          "withVirtualVisits": {
            "type": "boolean",
            "description": "Procura apenas imóveis com visitas virtuais disponíveis. Aplicar quando o utilizador mencionar 'com visita virtual', 'tem visita virtual', 'tour virtual', 'tour 3D', 'visita 3D', 'tour interativo', 'passeio virtual', 'experiência virtual', 'visualização virtual', 'ver visita virtual online'."
          },
          "with360Photos": {
            "type": "boolean",
            "description": "Procura apenas imóveis com fotos 360º disponíveis. Aplicar quando o utilizador mencionar 'com fotos 360º', 'tem fotos 360º', 'com fotos panorâmicas', 'tem fotos panorâmicas', 'ver fotos 360º online', etc."
          },
          "featuresNames": {
            "type": "array",
            "description": "Características do imóvel, incluindo comodidades, serviços, locais de interesse próximos e tipos de vistas para fornecer uma descrição completa e detalhada da propriedade"
          },
          "page": {
            "type": "integer",
            "description": "Número da página a devolver nos resultados da pesquisa.",
            "format": "int32"
          }
        },
        "description": "Esquema que descreve os parâmetros de entrada para a pesquisa imobiliária."
      },
      "searchResponse": {
        "type": "object",
        "properties": {
          "results": {
            "type": "array",
            "description": "Lista de resultados da página atual, baseada no número de registos por página.",
            "items": {
              "$ref": "#/components/schemas/DetailResponse"
            }
          },
          "count": {
            "type": "integer",
            "description": "Número total de resultados que correspondem aos critérios de pesquisa.",
            "format": "int32"
          },
          "page": {
            "type": "integer",
            "description": "Número da página atual de acordo com os critérios de pesquisa.",
            "format": "int32"
          },
          "totalpages": {
            "type": "integer",
            "description": "Número total de páginas correspondentes aos critérios de pesquisa.",
            "format": "int32"
          },
          "statetownnameequals": {
            "type": "boolean",
            "description": "Indica se o nome do distrito é igual ao nome do concelho."
          },
          "developmentname": {
            "type": "string",
            "description": "Nome do empreendimento; este campo só será preenchido se os resultados estiverem associados a um empreendimento específico com este nome."
          }
        },
        "description": "Esquema que descreve os parâmetros de saída da pesquisa imobiliária."
      },
      "detailRequest": {
        "type": "object",
        "properties": {
          "listingId": {
            "type": "integer",
            "description": "ID do imóvel para contacto.",
            "format": "int32"
          },
          "listingReference": {
            "type": "string",
            "description": "Referência interna do imóvel usada para identificação."
          },
          "developmentFractions": {
            "type": "boolean",
            "description": "Indica se a pesquisa deve considerar fracções de empreendimentos (por exemplo, apartamentos ou lojas) em vez do empreendimento como um todo. Quando activo, os resultados incluem apenas fracções associadas a um empreendimento."
          }
        },
        "description": "Esquema que descreve os parâmetros de entrada para o detalhe de imóvel."
      },
      "detailResponse": {
        "type": "object",
        "properties": {
          "listingId": {
            "type": "integer",
            "description": "ID único do anúncio do imóvel.",
            "format": "int32"
          },
          "propertyType": {
            "type": "string",
            "description": "Tipo de imóvel."
          },
          "condition": {
            "type": "string",
            "description": "Estado de conservação do imóvel."
          },
          "listingReference": {
            "type": "string",
            "description": "Referência do imóvel apresentada nos resultados de pesquisa."
          },
          "firstPhoto": {
            "type": "string",
            "description": "URL da miniatura da primeira foto do imóvel."
          },
          "description": {
            "type": "string",
            "description": "Descrição detalhada da propriedade."
          },
          "title": {
            "type": "string",
            "description": "Título do anúncio."
          },
          "price": {
            "type": "string",
            "description": "Preço em euros."
          },
          "imiValue": {
            "type": "string",
            "description": "Valor do IMI a pagar pelo imóvel, calculado com base no VPT e nas regras fiscais aplicáveis."
          },
          "business": {
            "type": "string",
            "description": "Tipo de negócio do imóvel."
          },
          "location": {
            "type": "string",
            "description": "Nome da localização."
          },
          "bedrooms": {
            "type": "integer",
            "description": "Número de quartos da propriedade.",
            "format": "int32"
          },
          "bathrooms": {
            "type": "integer",
            "description": "Número de casas de banho da propriedade.",
            "format": "int32"
          },
          "url": {
            "type": "string",
            "description": "URL público do anúncio."
          },
          "hasVideos": {
            "type": "boolean",
            "description": "Indica se o imóvel possui vídeos disponíveis."
          },
          "hasBluePrints": {
            "type": "boolean",
            "description": "Indica se o imóvel possui plantas ou blueprints disponíveis."
          },
          "has360Photos": {
            "type": "boolean",
            "description": "Indica se o imóvel tem fotos 360° disponíveis."
          },
          "hasVirtualVisits": {
            "type": "boolean",
            "description": "Indica se o imóvel tem visitas virtuais ou tours virtuais disponíveis."
          },
          "features": {
            "description": "Estas chaves representam a descrição das características específicas de um imóvel, incluindo atributos físicos e localizações relevantes como piscina, vista para o mar, proximidade a hospitais, escolas e outras facilidades importantes. Essas informações ajudam a detalhar e qualificar o imóvel para facilitar a busca e apresentação de resultados conforme as preferências do usuário.",
            "$ref": "#/components/schemas/Dictionary`2"
          }
        },
        "description": "Esquema que descreve os parâmetros de saída do detalhe de imóvel."
      },
      "leadRequest": {
        "type": "object",
        "properties": {
          "listingId": {
            "type": "integer",
            "description": "ID do imóvel para contacto.",
            "format": "int32"
          },
          "listingReference": {
            "type": "string",
            "description": "Referência interna do imóvel usada para identificação."
          },
          "name": {
            "type": "string",
            "description": "Nome do utilizador."
          },
          "email": {
            "type": "string",
            "description": "Endereço de email do utilizador (obrigatório se não fornecer telefone)."
          },
          "phone": {
            "type": "string",
            "description": "Número de telefone do utilizador (opcional se fornecer email)."
          },
          "phoneCountryCode": {
            "type": "string",
            "description": "Código do país do telefone incluindo o sinal de mais, por exemplo, \"+351\" para Portugal, \"+34\" para Espanha."
          },
          "message": {
            "type": "string",
            "description": "Mensagem personalizada do utilizador."
          }
        },
        "description": "Esquema que descreve os parâmetros de entrada para o envio de leads imobiliárias."
      },
      "leadResponse": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "description": "Estado do envio do formulário de contacto (ex.: sucesso, erro)."
          },
          "message": {
            "type": "string",
            "description": "Mensagem que descreve o resultado do envio do formulário de contacto."
          },
          "confirmedLead": {
            "type": "boolean",
            "description": ""
          }
        },
        "description": "Esquema que descreve os parâmetros de saída do envio de leads imobiliárias."
      },
      "companyInfoRequest": {
        "type": "object",
        "properties": {
          "companyId": {
            "type": "integer",
            "description": "Identificador da empresa/agência a consultar (opcional, usa o interno da empresa por omissão).",
            "format": "int32"
          }
        },
        "description": "Esquema de entrada para pedido de informação da empresa"
      },
      "companyInfoWithAgenciesResponse": {
        "type": "object",
        "properties": {
          "headquarters": {
            "description": "Informação dos dados de contacto da empresa relativa à sede.",
            "$ref": "#/components/schemas/CompanyInfoResponse"
          },
          "agencies": {
            "type": "array",
            "description": "Informação dos dados de contacto das agências da 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": "Nome da empresa"
          },
          "phone": {
            "type": "string",
            "description": "Telefone da empresa"
          },
          "mobile": {
            "type": "string",
            "description": "Telemóvel da empresa"
          },
          "email": {
            "type": "string",
            "description": "Email de contacto da empresa"
          },
          "address": {
            "type": "string",
            "description": "Morada da empresa (sem código postal)"
          },
          "district": {
            "type": "string",
            "description": "Distrito onde se localiza a empresa"
          },
          "municipality": {
            "type": "string",
            "description": "Concelho onde se localiza a empresa"
          },
          "parish": {
            "type": "string",
            "description": "Freguesia onde se localiza a empresa"
          },
          "zipCode": {
            "type": "string",
            "description": "Código postal da morada da empresa"
          },
          "businessHours": {
            "type": "string",
            "description": "Horário de funcionamento da empresa"
          },
          "googleMapsUrl": {
            "type": "string",
            "description": "Link direto para a localização da empresa no Google Maps"
          }
        },
        "description": "Esquema de saída com os dados de informação da empresa"
      },
      "rasorInfoRequest": {
        "type": "object",
        "properties": {
          "rasorName": {
            "type": "string",
            "description": "Nome do consultor imobiliário para o qual se pretende obter informação detalhada."
          },
          "stateName": {
            "type": "string",
            "description": "Permite pesquisar consultores por distrito."
          },
          "townName": {
            "type": "string",
            "description": "Permite pesquisar consultores por concelho."
          }
        },
        "description": "Esquema de entrada para solicitar informação detalhada sobre o consultor imobiliário"
      },
      "rasorInfoResponse": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Nome completo do consultor imobiliário."
          },
          "phone": {
            "type": "string",
            "description": "Número de telefone fixo do consultor imobiliário."
          },
          "mobile": {
            "type": "string",
            "description": "Número de telemóvel do consultor imobiliário."
          },
          "observations": {
            "type": "string",
            "description": "Observações adicionais relacionadas com o consultor."
          },
          "email": {
            "type": "string",
            "description": "Endereço de email do consultor imobiliário."
          },
          "address": {
            "type": "string",
            "description": "Morada completa do consultor imobiliário ou escritório."
          },
          "city": {
            "type": "string",
            "description": "Concelho onde o consultor exerce atividade."
          },
          "parish": {
            "type": "string",
            "description": "Freguesia onde o consultor exerce atividade."
          },
          "spokenLanguages": {
            "type": "array",
            "description": "Lista de idiomas falados pelo consultor."
          },
          "socialProfiles": {
            "type": "array",
            "description": "Lista de links para perfis ou páginas sociais do consultor.",
            "items": {
              "$ref": "#/components/schemas/SocialProfile"
            }
          },
          "avatar": {
            "type": "string",
            "description": "Imagem do avatar associado ao consultor."
          },
          "listingUrl": {
            "type": "string",
            "description": "URL da página que apresenta todos os imóveis atribuídos ou relacionados com o consultor, permitindo o acesso direto à listagem completa dos respetivos imóveis."
          },
          "detailUrl": {
            "type": "string",
            "description": "Página que apresenta a informação completa do agente, incluindo dados de contacto, perfil profissional e imóveis associados."
          }
        },
        "description": "Esquema de saída com informação detalhada sobre o consultor imobiliário"
      },
      "imiRequest": {
        "type": "object",
        "properties": {
          "townName": {
            "type": "string",
            "description": "Nome do concelho onde o imóvel se encontra localizado. Este campo é obrigatório para a identificação geográfica e determinação da taxa de IMI. Exemplo: \"Lisboa\", \"Porto\", \"Sintra\", \"Albufeira\"."
          },
          "taxableValue": {
            "type": "number",
            "description": "Valor Patrimonial Tributário (VPT) do imóvel, conforme registado na Autoridade Tributária. Trata-se do valor fiscal oficial utilizado como base para o cálculo do IMI (Imposto Municipal sobre Imóveis). Deve ser um valor decimal positivo, expresso em euros. Exemplo: \"185000.00\".",
            "format": "decimal"
          },
          "dependentsNumber": {
            "type": "integer",
            "description": "Número de dependentes no agregado familiar do contribuinte para o ano fiscal de referência. Consideram-se dependentes as crianças, ascendentes idosos ou outros dependentes legalmente reconhecidos que possam gerar benefícios de redução ou isenção de IMI. Valores válidos: inteiro ≥ 0. Exemplo: \"2\".",
            "format": "int32"
          },
          "isUrban": {
            "type": "boolean",
            "description": "Indica se o imóvel está classificado como urbano ou rústico. Os imóveis urbanos estão sujeitos a IMI, enquanto os imóveis rústicos podem estar sujeitos a regras de tributação distintas. Exemplo: true/false."
          }
        },
        "description": "Esquema de dados de entrada utilizado para solicitar o cálculo do Imposto Municipal sobre Imóveis (IMI) de um imóvel."
      },
      "imiResponse": {
        "type": "object",
        "properties": {
          "townName": {
            "type": "string",
            "description": "Nome do concelho considerado para o cálculo do IMI"
          },
          "taxableValue": {
            "type": "string",
            "description": "Valor Patrimonial Tributário (VPT) considerado para o cálculo do IMI, expresso em euros"
          },
          "dependentsNumber": {
            "type": "string",
            "description": "Número de dependentes contabilizados para efeitos de benefícios aplicados no cálculo do IMI"
          },
          "isUrban": {
            "type": "string",
            "description": "Indicação se o imóvel é urbano ou rústico, considerado para o cálculo do IMI"
          },
          "imiValue": {
            "type": "string",
            "description": "Valor final do IMI (Imposto Municipal sobre Imóveis) calculado com base nos dados fornecidos."
          },
          "imiTaxValue": {
            "type": "string",
            "description": "Taxa usada para cálculo do valor de IMI."
          },
          "dependentDiscount": {
            "type": "string",
            "description": "Valor de desconto baseado no número de dependentes."
          },
          "dataYear": {
            "type": "integer",
            "description": "Ano de referência das taxas utilizadas no cálculo do IMI.",
            "format": "int32"
          }
        },
        "description": "Esquema de dados de saída que fornece o resultado do cálculo do IMI, incluindo informações detalhadas sobre o valor a pagar."
      },
      "servicesInfoRequest": {
        "type": "object",
        "properties": {
          "companyId": {
            "type": "integer",
            "description": "Identificador da empresa/agência a consultar (opcional, usa o interno da empresa por omissão).",
            "format": "int32"
          }
        },
        "description": "Resumo dos serviços disponíveis, incluindo a sua finalidade e aplicação para os clientes."
      },
      "servicesInfoResponse": {
        "type": "object",
        "properties": {
          "companyId": {
            "type": "integer",
            "description": "Identificador único da empresa associada ao catálogo de serviços.",
            "format": "int32"
          },
          "companyName": {
            "type": "string",
            "description": "Nome da empresa que disponibiliza o catálogo de serviços."
          },
          "categories": {
            "type": "array",
            "description": "Lista de categorias de serviços disponíveis, organizadas por perfil de cliente.",
            "items": {
              "$ref": "#/components/schemas/ServiceCategory"
            }
          }
        },
        "description": "Resumo dos serviços prestados ao cliente, incluindo detalhes, âmbito e aplicação."
      }
    }
  },
  "paths": {
    "/mcp/search": {
      "get": {
        "summary": "Pesquisar anúncios imobiliários usando filtros como localização, preço, tipo e condição.",
        "description": "Pesquisar anúncios imobiliários usando filtros como localização, preço, tipo e condição.",
        "operationId": "mcpSearch",
        "parameters": [
          {
            "name": "BusinessType",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Define ou devolve o identificador do tipo de negócio do imóvel (Arrendamento, Trespasse, Venda). Caso não seja indicado na pesquisa, será utilizado Venda por defeito"
          },
          {
            "name": "CountryName",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Nome do país utilizado como critério de filtragem. Este campo deve permanecer vazio quando o país não for identificado., (é obrigatório)"
          },
          {
            "name": "StateName",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Nome da região (distrito) para o imóvel (é obrigatório na pesquisa se não mencionar concelho)., (é obrigatório)"
          },
          {
            "name": "TownName",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Nome do concelho para o imóvel (é obrigatório na pesquisa se não mencionar distrito)."
          },
          {
            "name": "NeighborhoodName",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Nome ou ID da freguesia onde se localiza o imóvel."
          },
          {
            "name": "ZoneName",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Identificador da zona geográfica para filtragem nas pesquisas."
          },
          {
            "name": "MasterCategoryIds",
            "in": "query",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "description": "IDs de um ou mais grupos principais de categorias de imóvel (ex.: apartamentos, moradias, armazéns, terrenos, hotéis). É obrigatório indicar pelo menos um se não for indicado um tipo específico de imóvel."
          },
          {
            "name": "CategoryIds",
            "in": "query",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "description": "IDs de uma ou mais categorias específicas de imóveis (ex: apartamento, moradia, armazém, terreno, hotel)."
          },
          {
            "name": "Condition",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Estado de conservação. (Com Programa de Incentivos à Reabilitação, Em construção, Em projecto, Não Aplicável, Novo, Para Demolir ou Reconstruir, Para Venda, Por recuperar, Recuperado, Renovado, Reservado, Usado)"
          },
          {
            "name": "MinPrice",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Preço mínimo em euros. Preencher quando o utilizador indicar um orçamento mínimo ou limite inferior de preço."
          },
          {
            "name": "MaxPrice",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Preço máximo em euros. Preencher quando o utilizador indicar um orçamento máximo ou limite superior de preço."
          },
          {
            "name": "MinBedrooms",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Número mínimo de quartos para filtrar"
          },
          {
            "name": "MaxBedrooms",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Número máximo de quartos para filtrar"
          },
          {
            "name": "Bathrooms",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Número mínimo de casas de banho."
          },
          {
            "name": "ListingReference",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Referência interna do imóvel usada para identificação."
          },
          {
            "name": "DevelopmentName",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Nome do empreendimento."
          },
          {
            "name": "DevelopmentFractions",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean"
            },
            "description": "Indica se a pesquisa deve considerar fracções de empreendimentos (por exemplo, apartamentos ou lojas) em vez do empreendimento como um todo. Quando activo, os resultados incluem apenas fracções associadas a um empreendimento."
          },
          {
            "name": "DevelopmentTags",
            "in": "query",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "description": "Etiquetas de empreendimentos utilizadas para filtrar a pesquisa. (Algarve - Destaque Home Empreendimento, Alojamento local - licença, Atlantic Villas, Atualização_2, Casa Sapo Sim, Cascais - Destaque Home Empreendimento, CE (not), Co Exclusivo , Com notas, comissao 3%, comissão 4%, comissão 5%, comissão 6%, Comporta - Destaque Home Empreendimento, Concl 2019, Concl 2020, Concl 2021, Concl 2022, Concl 2023, Concl 2024, concl 2025, Concl 2026, Concl 2027, concl 2028, concl 2029, Concluido, Condomínio Fechado, Destaque, Destaque-Carrossel, Dils Porto Foz, ego teste, Empreendimento Algarve, Empreendimento Cascais, Empreendimento Comporta, Empreendimento Lisboa, Empreendimento Porto, Empreendimento Setúbal, EQUIPA RETAIL DILS, Exclusivo, Exportar_Habiihub, Idealista - Emp. Destacado, Idealista - Tarifa Plana, Idealista Sim, Imovirtual Sim, Isenção de IMT, Lisboa - Destaque Home Empreendimento, Lojas_Site, LU - já tem, Nâo Casa Sapo, Não Exportar, Não Idealista, Não Imovirtual, Não Olx, Não Portais Generalistas, Não Portais Internacionais, Não Portais Nacionais, Não Redes Sociais, não super casa, Oeiras - Destaque Home Empreendimento, PH ok, Placa Castelhana, Placa Dils, Porto - Destaque Home Empreendimento, Preço sob consulta, Properstar Sim, Rendimento Garantido, Site, Site - Empreend. Comercialização, Site - Empreend. Portfolio, Site Destaque-Luxo, Site Destaque-Rendimento, Site Destaque-Terraços e Jardins, Site Empreendimentos - Imóveis, Site HP - empreendimento grande, Site HP - Empreendimentos, Site HP - Top Choice, Site Pág. Empreend. Grande, Supercasa Emp. Destacado, Supercasa sim, Visita virtual, vista, vista cidade, vista mar, vista rio, x 1 de Maio, x 141 Gomes, x 1965 Cidade Jardim, x Afonso Cordeiro 85, x Aires Gouveia, x Ajuda Riverview, x Alagoa, x ALBA100, x Alcântara Gardens, x Alcântara Riverside, x Alea, x Alecrim 53, x Alegria 284, x Alfama 83, x Alfândega 80, x Alfarroba Condominium, x Aliados 9, x Alive Riverside, x Alma Gardens, x Alma Hills, x Alma Living, x Alma Luz, x Almada 109, x Almada 170, x Almar Bridge, x Almirante Reis 67A, x Althea, x Alto do Tejo, x Alure, x Alva, x Alvares Cabral 127, x Alvôr: The Breeze, x Amoreiras Villas, x AMR39, x Antas Atrium, x Antas Atrium II, x Antas Prime, x Antiga Fábrica do Prado, X Anza Boa Hora Living, x Arco d'Olide, x Areeiro Select, x Aroeira Collections: Apartamentos, x Aroeira Collections: Hotel, x Aroeira Collections: Moradias, x Aroeira Collections: Villas, x Arriaga 41, x Atelier, x Atlante, x Atlantic Villas, x Atrium - Faro, x Attico, X Aura, x Aurificia, x Aurios, x Avant Garden, x Avenidas Novas 15 (DS15), x Azo, x Azuaga 68, x AZUYA, x B779, x Bahuto, x Baía Residence, x Barroca 8, x Beach Walk Residences, x Beato Quarter, x Bloom Living, x Bloomia, x Blue House, x Boavista 255, x Boavista 5205, x Boavista 7, x Boavista Garden, x Boavista II, x Bom Jardim Complex, X Bom Sucesso, x Bonjardim, x Bonsant, x Bosk, x Boss Garden, x Botanica, x BOW, x Braancamp Downtown Apartments, x Brito Capelo 1023, x Brito Capelo e Roberto Ivens, x Cacilhas Bay, x Campo Alegre 1024, x Campo Grande 200, x Campo Grande 264, x Campo Novo, x Carmim Porto, x Carofini, x Casa da Música, x Casas de Sal, x Casas de Santo Amaro, x Casas do Mar, x Casas do Sol, x Casas do Troncal, x Casas Garcia de Orta, x Caulinos Residences, x Caxias Heights, x Cedofeita 289, x Cedofeita 497, x Colina do Outeiro, x Conde da Ribeira, x Conde Redondo Residences, x Copa Cool Living, x Coral, x Costa Cabral & Dr. António Coelho, x Costa Cabral 1014, x Costa Cabral Flats, x Covelo Park, x CR80, x Cuckoo's Villas, x Damasceno 85, x Del Mar Waterfront Living, x DISTRIKT, x Docks, x Domus, x Douradores 6 (SixGild), x Douro Atlântico, X Douro Atlântico II, x Douro Nobilis, x Duke Residences, x Duque D'Ávila 139, X DUUO, x DUUO Skyline Collection, x Edificio Alvares Cabral, x Edifício ASF, x Edifício Boavista, x Edifício Molhe da Montevideu, x Edifício Santiago, x Egas Moniz 209, x Eleven, x Eleven Gaia, x ÉLou, x Élou Jardins, x Ernesto 65, x Esperança 82, x Essence New Tradition, x Estória, x Estoril Prime, x Estoril Woods, x Fábrica 40, x Faria Guimarães 406, X Fernandes Thomaz 797, X Fernão Magalhães 127, x Ferreira de Castro Flats, X Fervença Palace, x Filipe Folque 43, x FiniSal, x Fiori Cascais, x Floratta Cascais, x Flower Tower Camelia, x Foco, x Foliage, x Fontinha Apartments, x Foz Elements, x Foz Nature, x Foz Villas, x Freedom, x Future Mirear, x Gaia Hills Ágora, x Gaia Hills Douro, x Gaia Hills Parque, X Garcia 38, x Garrett 53, x Glória, x Glória Studios, x Golden View Metropolitan, x Gondarém 691, x Grace 858, x Granja Living, x Green Avenue, x Green Plaza Carcavelos, x Greenstone, x Grid 2891, x Guimaflats Residence, x Herdade do meio, x Hilton Cascais, x House Factory, x Infante Residences, x Janelas Verdes, x Jardim da Glória, x Jardim de Matosinhos, x Jardim de Ourique, x Jardim Miraflores, x Jardins Efanor - Factory, x Jardins Efanor - Natura, x José Falcão 124, x Juso Prime, x Juzzo Apartments, x Juzzo Design Villas, x KORI, x Laguna Resort, x Lake, x Land Roots River Apartments, x Lapa 93, x Laranjeira Residence, x Legacy, x Legacy by the Sea, x Legacy Living, x Les Terrasses, x Light  Houses, x Lindo Vale, x Linea Residences, x Lisboa Garden, x Lisboa Residence (Hyatt), x Lisbon Heights, x LIV Matosinhos, x Living Sardoal, x Living Sea, x Lumare, x LUMINA, x L'Urbain, x Lurion Residences, x Lux Garden, x LX Living, x Madalena 88, x Marina Douro, x Marquesa Palace, x Mártires da Liberdade Porto, x Matsu, x Mauritânia II, x MIMA Living, X Miradouro 68, x MobNature, x Moinho de Vento Flats, x Monsanto Residences, x Monte Bello, x Monte Cativo, x Monte Da Virgem Flats, x Monte Rei Golf – Clubhouse Residences, x Monte Rei Golf – Linked Villas, x Montebelo, x Monview, x Monville, x Nama, x Nature Condo Villas, x Nau, x Nine One, x Nobel 41-85, x NoLiPa, x Nomad Bay, x Nomad Eden, x Noor, x Noor II, x Novel Park, x Nuance, x OAK, x OAK 35, x OCEAM, x Oceanic Reserve, x Odeon, x Oeiras Golf - Eagle 4, x Olive Green, x O'Living II, x Ombria Algarve, x ON.Living Boavista, x Oporto Luxury Residences, x Oporto Metropolitano, x Oporto Plaza, x Oriental Park, X Outubro 77, x Pac man, x Paço de Moreira, x Padre António Vieira 155, x Padre Cruz 64, x Palacete Douro, x Palácio BR Avenida, x Palácio do Infantado, x Palácio Santa Clara, x Palazzo, x Palm Residence, x Palmares Signature II, x Parque das Nações Residences (Martinhal), x Passadiço, X Passos Manuel 182, x Pátios do Monte, x Paulo Dias Novais 45, x Pearls Vilamoura, x Penha Longa Edition, x Pescaria, x Pestana Porto Covo Beach Residences, x Pharma Village, x Pilar, x Plaza View, x Portas do Sol - Lote 8, x Post Scriptum 70, x Pousio, X Praça do Chile 16, x Praia Mar Residence, x Prata Riverside Village, x Prateato, x Prelada Gardens, x Prestige V, x Print House, x Prisma, x Prisma Douro, x Privato, x Promenade, x Pulse Lisboa, x Pulse Townhouses Lisboa, x Quinta do Alverde, x Quinta Marquês Gomes, x Quintinha 56, x Raiz, x Rasa 503, x RCC Alvalade, x Real Calçada, x Real Serenity, x Red in Blue, x República 5, x Ria Terraces, x Rialto, x Ribamar, x River Quarter, x Riverside III, x RM Villas, x Rocio, X Royal Cabanas Beach II, x Rua Cinco, x Rua Dezanove, x Rua Trinta e Seis, x Ruínas do Malhadal, x Sá da Bandeira, x Sá da Bandeira 39, x Sabóia 1257, x Sabóia 876, x Sal D'ouro Coast, x Sal D'ouro Horizon, x Sal D'ouro Park, x Sal D'ouro Reserve, x Sal D'ouro Sea Pearl, x Salgados Beach Villas, x Salgueiros Flats, x Santa Catarina Unique, x Santa Luzia Ria, x São João da Mata 151, x São João da Praça, x Sapphirus, x Saramago Condomínio, x Scala Mare, x SeaHaus, x Secret Garden Villas, X Seixal Baía, x Selva, x Senhora do Porto 249, x Senhora do Porto Residence, x Serenity, x Serpa 687, x Serralves 239, x Splendid Beloura, x Splendouro, x Sta. Maria 2, x Stephens, x SUL482, x SUL560, x Taborda 1, x Terceira 22, x Terra Condomínio, x TESTE, x The Avenue, x The Breeze, x The Corner, x The Frame, x The GreenPeak, x The Hill, x The Principado, x The Twelve, x The View II, x The Vines, x ToLive, x Tribute 170, x True Living, x Unico, x Unique Belem, x Unique Porto, x Urban Living, x Urban Terrazza, x Vale Pisão, x Valmonte Caxias, x Varandas de Cabanas, x Varandas de Cabanas II, x Vertice, x Vieira da Silva, x Vila Graça, x Vila Nova Parque, x Vila Tijolo, x Vilabranca 32, x Vilamoura Parque, x Vilas da Madalena, x Vilas Mar e Sol, x Villa Citrina, x Villa dos Coches, x Villa Infante, x Villas do Campo, x Villas do Goulão, x Vinhas, x Vintage 18, x Vista Mar, x Vista Mar Residences, x Vista Mar Residences 2, x Vistabella, x Vivva+Setúbal)"
          },
          {
            "name": "WithVideos",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean"
            },
            "description": "Procura apenas imóveis com vídeos disponíveis. Aplicar quando o utilizador mencionar expressões como 'com vídeo', 'com vídeos', 'tem vídeo', 'tem vídeos', 'vídeo do imóvel', 'ver vídeo online', etc."
          },
          {
            "name": "WithBluePrints",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean"
            },
            "description": "Procura apenas imóveis que tenham plantas (blueprints) disponíveis. Aplicar quando o utilizador mencionar 'com planta', 'tem planta', 'plantas da casa', 'mapa do imóvel', 'planta baixa', 'ver planta', etc."
          },
          {
            "name": "WithVirtualVisits",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean"
            },
            "description": "Procura apenas imóveis com visitas virtuais disponíveis. Aplicar quando o utilizador mencionar 'com visita virtual', 'tem visita virtual', 'tour virtual', 'tour 3D', 'visita 3D', 'tour interativo', 'passeio virtual', 'experiência virtual', 'visualização virtual', 'ver visita virtual online'."
          },
          {
            "name": "With360Photos",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean"
            },
            "description": "Procura apenas imóveis com fotos 360º disponíveis. Aplicar quando o utilizador mencionar 'com fotos 360º', 'tem fotos 360º', 'com fotos panorâmicas', 'tem fotos panorâmicas', 'ver fotos 360º online', etc."
          },
          {
            "name": "FeaturesNames",
            "in": "query",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "description": "Características do imóvel, incluindo comodidades, serviços, locais de interesse próximos e tipos de vistas para fornecer uma descrição completa e detalhada da propriedade (Acesso ao terreno, Adega, Aeroporto, Água, Água quente solar, Alarme, Alpendre, Ampla gama de serviços, Anexos, Antena parabólica, Aquecimento Central, Ar Condicionado, Ar condicionado pré-instalação, Área administrativa, Armazém, Árvores de fruto, Aspiração Central, Aspirador, Atracadouro, Auto-estrada, Banco, Banheira, Banheira de hidromassagem, Banho turco, Bar, Barragem, Biblioteca, Bombeiros, Cais de cargas e descargas, Caldeira, Campo, Campo de golfe, Campo de jogos, Campo de Ténis, Casa de banho de serviço, Casa de banho partilhada, Casa de banho privativa, Cave, CCTV, Celeiro(s), Centro Comercial, Centro da Cidade, Cerca Elétrica, Churrasco, Cidade, Closet, Cofre, Complexo desportivo, Complexo selado, Copa, Co-working (nº de lugares), Cozinha, Cozinha equipada, Despensa, Detector de intrusos, Detectores de gás, Detetor de fumos, Detetor de incêndio, Detetor de inundação, Divisórias amovíveis, Doca, Domótica, Drenagem, Edifício, Electicidade de 3 fases, Eletricidade, Elevador, Escola, Escritório, Espaço aberto, Espaços Verdes, Esplanada, Esquentador, Estação rodoviária, Estacionamento, Estacionamento de pesados, Estacionamento público, Exaustor, Excelente acesso, Extração de fumos, Farmácia, Faz esquina, Ferro de engomar, Fogão, Fogão elétrico, Forno, Frigorífico, Garagem, Gás, Gás botija, Gás canalizado, Gás natural, Gerador, Ginásio, Golf, Hipermercado, Hospital, Iluminação Pública, Internet, Internet Pré-Instalação, Isolamento acústico, Isolamento térmico, Jacuzzi, Jardim, Jardim de Inverno, Kitchenette, Lagar, Lago, Lareira, Lavandaria, Ligação Wi-fi, Lote, Luz natural, Máquina de lavar louça, Mar, Mercado, Metrô, Microondas, Mobilado, Montanha, Montra, Muro, Música de ambiente, Orientação solar, Painéis solares, Parque Infantil, Persianas elétricas, Perto do mar, Piscina, Piscina partilhada, Piscinas, Pisos radiantes, Placa de gás, Placa de indução, Placa Vitrocerâmica, Poliban, Polícia, Porta alta segurança, Porta blindada, Porta corta fogo, Portão elétrico, Porto do mar, Porto do rio, Posto de Combustível, Praça de táxi, Praia, Pré-instalação alarme, Pré-instalação aspiração central, Pré-instalação de lareira, Pré-instalação de painéis solares, Pré-instalação de TV a cabo, Pré-instalação música ambiente, Quarto de hóspedes, Rampa, Recepção, Recuperador de calor, Refeitório, Resíduos, Rio, Sala de conferências, Sala de estar, Sala de festas, Sala de jogos, Sala de reunião, Sala de vestir, Sauna, Secador, Segurança 24 horas, Serviço de jardinagem, Serviço de limpeza, Serviço de manutenção, Serviço de segurança, Solário, Sotão, Suite, Suporte de bicicleta, Telefone, Telhado verde, Telheiro, Termoacumulador, Terraço, Tipo de Terreno (Declive), Toalheiros Aquecidos, Transportes Públicos, Tratamento da água, TV por cabo, Vedação, Vestiário do pessoal, Video Porteiro, Vídeo vigilância, Vidro duplo, Vidros espelhados, Vidros fumados, Vinha, Zona Comercial, Zona de manobras, Zona histórica, Zona refrigerada)"
          },
          {
            "name": "Page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Número da página a devolver nos resultados da pesquisa."
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchResponse"
                }
              }
            }
          }
        }
      }
    },
    "/mcp/detail": {
      "get": {
        "summary": "Devolve informação detalhada sobre um imóvel.",
        "description": "Devolve informação detalhada sobre um imóvel.",
        "operationId": "mcpDetail",
        "parameters": [
          {
            "name": "ListingId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "description": "ID do imóvel para contacto."
          },
          {
            "name": "ListingReference",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Referência interna do imóvel usada para identificação."
          },
          {
            "name": "DevelopmentFractions",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean"
            },
            "description": "Indica se a pesquisa deve considerar fracções de empreendimentos (por exemplo, apartamentos ou lojas) em vez do empreendimento como um todo. Quando activo, os resultados incluem apenas fracções associadas a um empreendimento."
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DetailResponse"
                }
              }
            }
          }
        }
      }
    },
    "/mcp/lead": {
      "get": {
        "summary": "Submeter um formulário de contacto para um anúncio específico.",
        "description": "Submeter um formulário de contacto para um anúncio específico.",
        "operationId": "mcpLead",
        "parameters": [
          {
            "name": "ListingId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "description": "ID do imóvel para contacto."
          },
          {
            "name": "ListingReference",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Referência interna do imóvel usada para identificação."
          },
          {
            "name": "Name",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Nome do utilizador., (é obrigatório)"
          },
          {
            "name": "Email",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Endereço de email do utilizador (obrigatório se não fornecer telefone)., (é obrigatório)"
          },
          {
            "name": "Phone",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Número de telefone do utilizador (opcional se fornecer email)."
          },
          {
            "name": "PhoneCountryCode",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Código do país do telefone incluindo o sinal de mais, por exemplo, \"+351\" para Portugal, \"+34\" para Espanha."
          },
          {
            "name": "Message",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Mensagem personalizada do utilizador."
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LeadResponse"
                }
              }
            }
          }
        }
      }
    },
    "/mcp/companyinfo": {
      "get": {
        "summary": "Permite obter os dados de contacto da empresa, incluindo o nome da agência, morada, telefone e email. Ideal para apresentar informações institucionais ou permitir que o utilizador entre em contacto com a agência.",
        "description": "Permite obter os dados de contacto da empresa, incluindo o nome da agência, morada, telefone e email. Ideal para apresentar informações institucionais ou permitir que o utilizador entre em contacto com a agência.",
        "operationId": "mcpCompanyInfo",
        "parameters": [
          {
            "name": "CompanyId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Identificador da empresa/agência a consultar (opcional, usa o interno da empresa por omissão)."
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CompanyInfoWithAgenciesResponse"
                }
              }
            }
          }
        }
      }
    },
    "/mcp/rasorinfo": {
      "get": {
        "summary": "Permite obter os dados de contacto do consultor imobiliário, incluindo nome, telefone, email e morada. Ideal para apresentar informação de contacto do consultor ou permitir que o utilizador entre em contacto com ele.",
        "description": "Permite obter os dados de contacto do consultor imobiliário, incluindo nome, telefone, email e morada. Ideal para apresentar informação de contacto do consultor ou permitir que o utilizador entre em contacto com ele.",
        "operationId": "mcpRasorInfo",
        "parameters": [
          {
            "name": "RasorName",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Nome do consultor imobiliário para o qual se pretende obter informação detalhada."
          },
          {
            "name": "StateName",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Permite pesquisar consultores por distrito."
          },
          {
            "name": "TownName",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Permite pesquisar consultores por concelho."
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RasorInfoResponse"
                }
              }
            }
          }
        }
      }
    },
    "/mcp/imicalculator": {
      "get": {
        "summary": "Permite determinar o valor do Imposto Municipal sobre Imóveis (IMI) com base nos dados fornecidos pelo utilizador. Este serviço valida o concelho indicado, identifica o respetivo coeficiente aplicável, processa o Valor Patrimonial Tributário (VPT), número de dependentes e a natureza do imóvel (urbano ou rústico), devolvendo o valor final de IMI a pagar de acordo com as regras fiscais em vigor em Portugal.",
        "description": "Permite determinar o valor do Imposto Municipal sobre Imóveis (IMI) com base nos dados fornecidos pelo utilizador. Este serviço valida o concelho indicado, identifica o respetivo coeficiente aplicável, processa o Valor Patrimonial Tributário (VPT), número de dependentes e a natureza do imóvel (urbano ou rústico), devolvendo o valor final de IMI a pagar de acordo com as regras fiscais em vigor em Portugal.",
        "operationId": "mcpImiCalculator",
        "parameters": [
          {
            "name": "TownName",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Nome do concelho onde o imóvel se encontra localizado. Este campo é obrigatório para a identificação geográfica e determinação da taxa de IMI. Exemplo: \"Lisboa\", \"Porto\", \"Sintra\", \"Albufeira\"."
          },
          {
            "name": "TaxableValue",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "format": "decimal"
            },
            "description": "Valor Patrimonial Tributário (VPT) do imóvel, conforme registado na Autoridade Tributária. Trata-se do valor fiscal oficial utilizado como base para o cálculo do IMI (Imposto Municipal sobre Imóveis). Deve ser um valor decimal positivo, expresso em euros. Exemplo: \"185000.00\"."
          },
          {
            "name": "DependentsNumber",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Número de dependentes no agregado familiar do contribuinte para o ano fiscal de referência. Consideram-se dependentes as crianças, ascendentes idosos ou outros dependentes legalmente reconhecidos que possam gerar benefícios de redução ou isenção de IMI. Valores válidos: inteiro ≥ 0. Exemplo: \"2\"."
          },
          {
            "name": "IsUrban",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean"
            },
            "description": "Indica se o imóvel está classificado como urbano ou rústico. Os imóveis urbanos estão sujeitos a IMI, enquanto os imóveis rústicos podem estar sujeitos a regras de tributação distintas. Exemplo: true/false."
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IMIResponse"
                }
              }
            }
          }
        }
      }
    },
    "/mcp/servicesinfo": {
      "get": {
        "summary": "Descrição do endpoint que fornece informações completas sobre os serviços disponíveis para um perfil de cliente.",
        "description": "Descrição do endpoint que fornece informações completas sobre os serviços disponíveis para um perfil de cliente.",
        "operationId": "mcpServicesInfo",
        "parameters": [
          {
            "name": "CompanyId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Identificador da empresa/agência a consultar (opcional, usa o interno da empresa por omissão)."
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServicesInfoResponse"
                }
              }
            }
          }
        }
      }
    }
  }
}