# BLUECOAST Live or Invest - Complete MCP & API Documentation

**Version:** 1.1
**Generated:** 2026-11-05 18:38:01

## Table of Contents

1. [System Overview](#system-overview)
2. [MCP Server Information](#mcp-server-information)
3. [Getting Started](#getting-started)
4. [Available Endpoints](#available-endpoints)
5. [OpenAPI Specification](#openapi-specification)
6. [System Prompts & AI Guidance](#system-prompts)
7. [Contact Information](#contact-information)

## MCP Server Information {#mcp-server-information}

- **Name:** BLUECOAST Live or Invest
- **Email:** backoffice@bluecoast.pt
- **Phone:** 211502148
- **Address:** Rua Jorge de Sousa, Nº 32, 2900-428 Setúbal
- **License (AMI):** 16731
- **MCP Server URL:** https://www.bluecoast.pt/
- **Public Website:** https://www.bluecoast.pt/

## Getting Started {#getting-started}

### MCP transport

The MCP endpoint is JSON-RPC 2.0 over HTTP. Send `POST` requests to `/mcp` or `/mcp/rpc` with `Content-Type: application/json`.
Supported protocol methods are `initialize`, `ping`, `tools/list`, and `tools/call`; the server advertises MCP protocol version `2024-11-05`.

Client credentials are not validated by this public proxy. Requests forwarded to the internal API are protected with a binding-scoped signed assertion generated by the proxy.

### Discovery and metadata endpoints

- `GET /llms.txt` or `GET /.well-known/llm/llms.txt` - discovery summary
- `GET /llms-full.txt` or `GET /.well-known/llm/llms-full.txt` - this complete documentation
- `GET /llms-data.json` or `GET /.well-known/llm/llms-data.json` - structured server metadata
- `GET /openapi.json` - generated OpenAPI 3.0.1 document for the REST-oriented API schema
- `GET /.well-known/llm/openai.yaml` or `GET /.well-known/llm/openai.json` - OpenAI context document
- `GET /.well-known/server-card.json` or `GET /mcp/server-card` - MCP server card
- `GET /.well-known/ai-plugin.json` and `GET /.well-known/logo.png` - legacy AI plugin metadata

## Available Endpoints {#available-endpoints}

### MCP tools

Use `tools/list` to retrieve the authoritative, localized descriptions and input schemas. The currently registered tools are:

- `search` - search property listings
- `detail` - retrieve a listing or development detail
- `lead` and `leadexclusive` - register property enquiries
- `companyinfo` and `rasorinfo` - retrieve company and RASOR information
- `imicalculator` - calculate Portuguese IMI tax
- `servicesinfo` - retrieve available services
- `loancalculator` and `creditcontact` - mortgage simulation and credit contact
- `chat`, `history`, and `clear` - assistant conversation operations
- `registerevent` - register an AI-chat interaction event

#### tools/call example

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "search",
    "arguments": {
      "CountryName": "Portugal",
      "StateName": "Lisboa",
      "BusinessType": "Sale",
      "MinPrice": 100000,
      "MaxPrice": 500000
    }
  }
}
```

### REST-compatible routes

For existing integrations, the proxy also routes `/mcp/search`, `/mcp/mcpSearch`, `/mcp/detail`, `/mcp/mcpDetail`, `/mcp/lead`, `/mcp/mcpLead`, `/mcp/companyinfo`, `/mcp/mcpCompanyInfo`, `/mcp/rasorinfo`, `/mcp/mcpRasorInfo`, `/mcp/imicalculator`, `/mcp/mcpImiCalculator`, `/mcp/servicesinfo`, `/mcp/mcpServicesInfo`, `/mcp/loancalculator`, `/mcp/mcpLoanCalculator`, `/mcp/creditcontact`, `/mcp/mcpCreditContact`, `/mcp/chat`, `/mcp/history`, `/mcp/clear`, `/mcp/registerevent`, and `/mcp/leadexclusive`. These are compatibility routes; new MCP clients should use JSON-RPC.

## OpenAPI Specification {#openapi-specification}

Complete OpenAPI 3.0.1 specification for this MCP server:

```yaml
openapi: 3.0.1
info:
  title: Real Estate MCP API - BLUECOAST Live or Invest
  version: 1.1
  description: Contexto MCP Imobiliário para pesquisa de imóveis e submissão de pedidos de contacto. - BLUECOAST Live or Invest
  termsOfService: https://www.bluecoast.pt/termos-e-condicoes
  contact:
    name: BLUECOAST Live or Invest
    url: https://www.bluecoast.pt/
    email: backoffice@bluecoast.pt
  companyInfo:
    name: BLUECOAST Live or Invest
    nif: 
    aMI: 16731
    address: Rua Jorge de Sousa, Nº 32, 2900-428 Setúbal
servers:
- url: https://www.bluecoast.pt/
  description: Identificador do servidor MCP
components:
  securitySchemes: 
  schemas:
    SearchToMatchRequest:
      type: object
      properties:
        BusinessType:
          type: string
          example: 
          description: Define ou devolve o identificador do tipo de negócio do imóvel
          format: 
          items: 
          enum: 
          ref: 
        CountryName:
          type: string
          example: 
          description: Nome do país utilizado como critério de filtragem. Este campo deve permanecer vazio quando o país não for identificado.
          format: 
          items: 
          enum: 
          ref: 
        StateName:
          type: string
          example: 
          description: Nome da região (distrito) para o imóvel (é obrigatório na pesquisa se não mencionar concelho).
          format: 
          items: 
          enum: 
          ref: 
        TownName:
          type: string
          example: 
          description: Nome do concelho para o imóvel (é obrigatório na pesquisa se não mencionar distrito).
          format: 
          items: 
          enum: 
          ref: 
        NeighborhoodName:
          type: string
          example: 
          description: Nome ou ID da freguesia onde se localiza o imóvel.
          format: 
          items: 
          enum: 
          ref: 
        ZoneName:
          type: string
          example: 
          description: Identificador da zona geográfica para filtragem nas pesquisas.
          format: 
          items: 
          enum: 
          ref: 
        MasterCategoryIds:
          type: array
          example: 
          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.'
          format: 
          items: 
          enum: 
          ref: 
        CategoryIds:
          type: array
          example: 
          description: 'IDs de uma ou mais categorias específicas de imóveis (ex: apartamento, moradia, armazém, terreno, hotel).'
          format: 
          items: 
          enum: 
          ref: 
        Condition:
          type: string
          example: 
          description: Estado de conservação.
          format: 
          items: 
          enum: 
          ref: 
        MinPrice:
          type: integer
          example: 
          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
          items: 
          enum: 
          ref: 
        MaxPrice:
          type: integer
          example: 
          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
          items: 
          enum: 
          ref: 
        MinBedrooms:
          type: integer
          example: 
          description: Número mínimo de quartos para filtrar
          format: int32
          items: 
          enum: 
          ref: 
        MaxBedrooms:
          type: integer
          example: 
          description: Número máximo de quartos para filtrar
          format: int32
          items: 
          enum: 
          ref: 
        Bathrooms:
          type: integer
          example: 
          description: Número mínimo de casas de banho.
          format: int32
          items: 
          enum: 
          ref: 
        ListingReference:
          type: string
          example: 
          description: Referência interna do imóvel usada para identificação.
          format: 
          items: 
          enum: 
          ref: 
        DevelopmentName:
          type: string
          example: 
          description: Nome do empreendimento.
          format: 
          items: 
          enum: 
          ref: 
        DevelopmentFractions:
          type: boolean
          example: 
          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.
          format: 
          items: 
          enum: 
          ref: 
        DevelopmentTags:
          type: array
          example: 
          description: Etiquetas de empreendimentos utilizadas para filtrar a pesquisa.
          format: 
          items: 
          enum: 
          ref: 
        WithVideos:
          type: boolean
          example: 
          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.
          format: 
          items: 
          enum: 
          ref: 
        WithBluePrints:
          type: boolean
          example: 
          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.
          format: 
          items: 
          enum: 
          ref: 
        WithVirtualVisits:
          type: boolean
          example: 
          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'.
          format: 
          items: 
          enum: 
          ref: 
        With360Photos:
          type: boolean
          example: 
          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.
          format: 
          items: 
          enum: 
          ref: 
        FeaturesNames:
          type: array
          example: 
          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
          format: 
          items: 
          enum: 
          ref: 
        Page:
          type: integer
          example: 
          description: Número da página a devolver nos resultados da pesquisa.
          format: int32
          items: 
          enum: 
          ref: 
      description: Esquema que descreve os parâmetros de entrada para a pesquisa imobiliária.
    SearchResponse:
      type: object
      properties:
        results:
          type: array
          example: 
          description: Lista de resultados da página atual, baseada no número de registos por página.
          format: 
          items:
            type: 
            example: 
            description: 
            format: 
            items: 
            enum: 
            ref: '#/components/schemas/DetailResponse'
          enum: 
          ref: 
        count:
          type: integer
          example: 
          description: Número total de resultados que correspondem aos critérios de pesquisa.
          format: int32
          items: 
          enum: 
          ref: 
        page:
          type: integer
          example: 
          description: Número da página atual de acordo com os critérios de pesquisa.
          format: int32
          items: 
          enum: 
          ref: 
        totalpages:
          type: integer
          example: 
          description: Número total de páginas correspondentes aos critérios de pesquisa.
          format: int32
          items: 
          enum: 
          ref: 
        statetownnameequals:
          type: boolean
          example: 
          description: Indica se o nome do distrito é igual ao nome do concelho.
          format: 
          items: 
          enum: 
          ref: 
        developmentname:
          type: string
          example: 
          description: Nome do empreendimento; este campo só será preenchido se os resultados estiverem associados a um empreendimento específico com este nome.
          format: 
          items: 
          enum: 
          ref: 
      description: Esquema que descreve os parâmetros de saída da pesquisa imobiliária.
    DetailRequest:
      type: object
      properties:
        ListingId:
          type: integer
          example: 
          description: ID do imóvel para contacto.
          format: int32
          items: 
          enum: 
          ref: 
        ListingReference:
          type: string
          example: 
          description: Referência interna do imóvel usada para identificação.
          format: 
          items: 
          enum: 
          ref: 
        DevelopmentFractions:
          type: boolean
          example: 
          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.
          format: 
          items: 
          enum: 
          ref: 
      description: Esquema que descreve os parâmetros de entrada para o detalhe de imóvel.
    DetailResponse:
      type: object
      properties:
        ListingId:
          type: integer
          example: 
          description: ID único do anúncio do imóvel.
          format: int32
          items: 
          enum: 
          ref: 
        PropertyType:
          type: string
          example: 
          description: Tipo de imóvel.
          format: 
          items: 
          enum: 
          ref: 
        Condition:
          type: string
          example: 
          description: Estado de conservação do imóvel.
          format: 
          items: 
          enum: 
          ref: 
        ListingReference:
          type: string
          example: 
          description: Referência do imóvel apresentada nos resultados de pesquisa.
          format: 
          items: 
          enum: 
          ref: 
        FirstPhoto:
          type: string
          example: 
          description: URL da miniatura da primeira foto do imóvel.
          format: 
          items: 
          enum: 
          ref: 
        Description:
          type: string
          example: 
          description: Descrição detalhada da propriedade.
          format: 
          items: 
          enum: 
          ref: 
        Title:
          type: string
          example: 
          description: Título do anúncio.
          format: 
          items: 
          enum: 
          ref: 
        Price:
          type: string
          example: 
          description: Preço em euros.
          format: 
          items: 
          enum: 
          ref: 
        IMIValue:
          type: string
          example: 
          description: Valor do IMI a pagar pelo imóvel, calculado com base no VPT e nas regras fiscais aplicáveis.
          format: 
          items: 
          enum: 
          ref: 
        Business:
          type: string
          example: 
          description: Tipo de negócio do imóvel.
          format: 
          items: 
          enum: 
          ref: 
        Location:
          type: string
          example: 
          description: Nome da localização.
          format: 
          items: 
          enum: 
          ref: 
        Bedrooms:
          type: integer
          example: 
          description: Número de quartos da propriedade.
          format: int32
          items: 
          enum: 
          ref: 
        Bathrooms:
          type: integer
          example: 
          description: Número de casas de banho da propriedade.
          format: int32
          items: 
          enum: 
          ref: 
        Url:
          type: string
          example: 
          description: URL público do anúncio.
          format: 
          items: 
          enum: 
          ref: 
        HasVideos:
          type: boolean
          example: 
          description: Indica se o imóvel possui vídeos disponíveis.
          format: 
          items: 
          enum: 
          ref: 
        HasBluePrints:
          type: boolean
          example: 
          description: Indica se o imóvel possui plantas ou blueprints disponíveis.
          format: 
          items: 
          enum: 
          ref: 
        Has360Photos:
          type: boolean
          example: 
          description: Indica se o imóvel tem fotos 360° disponíveis.
          format: 
          items: 
          enum: 
          ref: 
        HasVirtualVisits:
          type: boolean
          example: 
          description: Indica se o imóvel tem visitas virtuais ou tours virtuais disponíveis.
          format: 
          items: 
          enum: 
          ref: 
        Features:
          type: 
          example: 
          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.
          format: 
          items: 
          enum: 
          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
          example: 
          description: ID do imóvel para contacto.
          format: int32
          items: 
          enum: 
          ref: 
        ListingReference:
          type: string
          example: 
          description: Referência interna do imóvel usada para identificação.
          format: 
          items: 
          enum: 
          ref: 
        Name:
          type: string
          example: 
          description: Nome do utilizador.
          format: 
          items: 
          enum: 
          ref: 
        Email:
          type: string
          example: 
          description: Endereço de email do utilizador (obrigatório se não fornecer telefone).
          format: 
          items: 
          enum: 
          ref: 
        Phone:
          type: string
          example: 
          description: Número de telefone do utilizador (opcional se fornecer email).
          format: 
          items: 
          enum: 
          ref: 
        PhoneCountryCode:
          type: string
          example: 
          description: Código do país do telefone incluindo o sinal de mais, por exemplo, "+351" para Portugal, "+34" para Espanha.
          format: 
          items: 
          enum: 
          ref: 
        Message:
          type: string
          example: 
          description: Mensagem personalizada do utilizador.
          format: 
          items: 
          enum: 
          ref: 
      description: Esquema que descreve os parâmetros de entrada para o envio de leads imobiliárias.
    LeadResponse:
      type: object
      properties:
        Status:
          type: string
          example: 
          description: 'Estado do envio do formulário de contacto (ex.: sucesso, erro).'
          format: 
          items: 
          enum: 
          ref: 
        Message:
          type: string
          example: 
          description: Mensagem que descreve o resultado do envio do formulário de contacto.
          format: 
          items: 
          enum: 
          ref: 
        ConfirmedLead:
          type: boolean
          example: 
          description: ''
          format: 
          items: 
          enum: 
          ref: 
      description: Esquema que descreve os parâmetros de saída do envio de leads imobiliárias.
    CompanyInfoRequest:
      type: object
      properties:
        CompanyId:
          type: integer
          example: 
          description: Identificador da empresa/agência a consultar (opcional, usa o interno da empresa por omissão).
          format: int32
          items: 
          enum: 
          ref: 
      description: Esquema de entrada para pedido de informação da empresa
    CompanyInfoWithAgenciesResponse:
      type: object
      properties:
        Headquarters:
          type: 
          example: 
          description: Informação dos dados de contacto da empresa relativa à sede.
          format: 
          items: 
          enum: 
          ref: '#/components/schemas/CompanyInfoResponse'
        Agencies:
          type: array
          example: 
          description: Informação dos dados de contacto das agências da empresa.
          format: 
          items:
            type: 
            example: 
            description: 
            format: 
            items: 
            enum: 
            ref: '#/components/schemas/CompanyInfoResponse'
          enum: 
          ref: 
      description: Esquema de saída com os dados de informação da empresa
    CompanyInfoResponse:
      type: object
      properties:
        Name:
          type: string
          example: 
          description: Nome da empresa
          format: 
          items: 
          enum: 
          ref: 
        Phone:
          type: string
          example: 
          description: Telefone da empresa
          format: 
          items: 
          enum: 
          ref: 
        Mobile:
          type: string
          example: 
          description: Telemóvel da empresa
          format: 
          items: 
          enum: 
          ref: 
        Email:
          type: string
          example: 
          description: Email de contacto da empresa
          format: 
          items: 
          enum: 
          ref: 
        Address:
          type: string
          example: 
          description: Morada da empresa (sem código postal)
          format: 
          items: 
          enum: 
          ref: 
        District:
          type: string
          example: 
          description: Distrito onde se localiza a empresa
          format: 
          items: 
          enum: 
          ref: 
        Municipality:
          type: string
          example: 
          description: Concelho onde se localiza a empresa
          format: 
          items: 
          enum: 
          ref: 
        Parish:
          type: string
          example: 
          description: Freguesia onde se localiza a empresa
          format: 
          items: 
          enum: 
          ref: 
        ZipCode:
          type: string
          example: 
          description: Código postal da morada da empresa
          format: 
          items: 
          enum: 
          ref: 
        BusinessHours:
          type: string
          example: 
          description: Horário de funcionamento da empresa
          format: 
          items: 
          enum: 
          ref: 
        GoogleMapsUrl:
          type: string
          example: 
          description: Link direto para a localização da empresa no Google Maps
          format: 
          items: 
          enum: 
          ref: 
      description: Esquema de saída com os dados de informação da empresa
    RasorInfoRequest:
      type: object
      properties:
        RasorName:
          type: string
          example: 
          description: Nome do consultor imobiliário para o qual se pretende obter informação detalhada.
          format: 
          items: 
          enum: 
          ref: 
        StateName:
          type: string
          example: 
          description: Permite pesquisar consultores por distrito.
          format: 
          items: 
          enum: 
          ref: 
        TownName:
          type: string
          example: 
          description: Permite pesquisar consultores por concelho.
          format: 
          items: 
          enum: 
          ref: 
      description: Esquema de entrada para solicitar informação detalhada sobre o consultor imobiliário
    RasorInfoResponse:
      type: object
      properties:
        Name:
          type: string
          example: 
          description: Nome completo do consultor imobiliário.
          format: 
          items: 
          enum: 
          ref: 
        Phone:
          type: string
          example: 
          description: Número de telefone fixo do consultor imobiliário.
          format: 
          items: 
          enum: 
          ref: 
        Mobile:
          type: string
          example: 
          description: Número de telemóvel do consultor imobiliário.
          format: 
          items: 
          enum: 
          ref: 
        Observations:
          type: string
          example: 
          description: Observações adicionais relacionadas com o consultor.
          format: 
          items: 
          enum: 
          ref: 
        Email:
          type: string
          example: 
          description: Endereço de email do consultor imobiliário.
          format: 
          items: 
          enum: 
          ref: 
        Address:
          type: string
          example: 
          description: Morada completa do consultor imobiliário ou escritório.
          format: 
          items: 
          enum: 
          ref: 
        City:
          type: string
          example: 
          description: Concelho onde o consultor exerce atividade.
          format: 
          items: 
          enum: 
          ref: 
        Parish:
          type: string
          example: 
          description: Freguesia onde o consultor exerce atividade.
          format: 
          items: 
          enum: 
          ref: 
        SpokenLanguages:
          type: array
          example: 
          description: Lista de idiomas falados pelo consultor.
          format: 
          items: 
          enum: 
          ref: 
        SocialProfiles:
          type: array
          example: 
          description: Lista de links para perfis ou páginas sociais do consultor.
          format: 
          items:
            type: 
            example: 
            description: 
            format: 
            items: 
            enum: 
            ref: '#/components/schemas/SocialProfile'
          enum: 
          ref: 
        Avatar:
          type: string
          example: 
          description: Imagem do avatar associado ao consultor.
          format: 
          items: 
          enum: 
          ref: 
        ListingUrl:
          type: string
          example: 
          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.
          format: 
          items: 
          enum: 
          ref: 
        DetailUrl:
          type: string
          example: 
          description: Página que apresenta a informação completa do agente, incluindo dados de contacto, perfil profissional e imóveis associados.
          format: 
          items: 
          enum: 
          ref: 
      description: Esquema de saída com informação detalhada sobre o consultor imobiliário
    IMIRequest:
      type: object
      properties:
        TownName:
          type: string
          example: 
          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".'
          format: 
          items: 
          enum: 
          ref: 
        TaxableValue:
          type: number
          example: 
          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
          items: 
          enum: 
          ref: 
        DependentsNumber:
          type: integer
          example: 
          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
          items: 
          enum: 
          ref: 
        IsUrban:
          type: boolean
          example: 
          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.'
          format: 
          items: 
          enum: 
          ref: 
      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
          example: 
          description: Nome do concelho considerado para o cálculo do IMI
          format: 
          items: 
          enum: 
          ref: 
        TaxableValue:
          type: string
          example: 
          description: Valor Patrimonial Tributário (VPT) considerado para o cálculo do IMI, expresso em euros
          format: 
          items: 
          enum: 
          ref: 
        DependentsNumber:
          type: string
          example: 
          description: Número de dependentes contabilizados para efeitos de benefícios aplicados no cálculo do IMI
          format: 
          items: 
          enum: 
          ref: 
        IsUrban:
          type: string
          example: 
          description: Indicação se o imóvel é urbano ou rústico, considerado para o cálculo do IMI
          format: 
          items: 
          enum: 
          ref: 
        IMIValue:
          type: string
          example: 
          description: Valor final do IMI (Imposto Municipal sobre Imóveis) calculado com base nos dados fornecidos.
          format: 
          items: 
          enum: 
          ref: 
        IMITaxValue:
          type: string
          example: 
          description: Taxa usada para cálculo do valor de IMI.
          format: 
          items: 
          enum: 
          ref: 
        DependentDiscount:
          type: string
          example: 
          description: Valor de desconto baseado no número de dependentes.
          format: 
          items: 
          enum: 
          ref: 
        DataYear:
          type: integer
          example: 
          description: Ano de referência das taxas utilizadas no cálculo do IMI.
          format: int32
          items: 
          enum: 
          ref: 
      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
          example: 
          description: Identificador da empresa/agência a consultar (opcional, usa o interno da empresa por omissão).
          format: int32
          items: 
          enum: 
          ref: 
      description: Resumo dos serviços disponíveis, incluindo a sua finalidade e aplicação para os clientes.
    ServicesInfoResponse:
      type: object
      properties:
        companyId:
          type: integer
          example: 
          description: Identificador único da empresa associada ao catálogo de serviços.
          format: int32
          items: 
          enum: 
          ref: 
        companyName:
          type: string
          example: 
          description: Nome da empresa que disponibiliza o catálogo de serviços.
          format: 
          items: 
          enum: 
          ref: 
        categories:
          type: array
          example: 
          description: Lista de categorias de serviços disponíveis, organizadas por perfil de cliente.
          format: 
          items:
            type: 
            example: 
            description: 
            format: 
            items: 
            enum: 
            ref: '#/components/schemas/ServiceCategory'
          enum: 
          ref: 
      description: Resumo dos serviços prestados ao cliente, incluindo detalhes, âmbito e aplicação.
security: 
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.
      security: 
      operationId: mcpSearch
      parameters:
      - name: BusinessType
        in: query
        required: false
        schema:
          type: string
          example: 
          description: 
          format: 
          items: 
          enum: 
          ref: 
        description: Define ou devolve o identificador do tipo de negócio do imóvel (Arrendamento, Venda). Caso não seja indicado na pesquisa, será utilizado Venda por defeito
      - name: CountryName
        in: query
        required: true
        schema:
          type: string
          example: 
          description: 
          format: 
          items: 
          enum: 
          ref: 
        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
          example: 
          description: 
          format: 
          items: 
          enum: 
          ref: 
        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
          example: 
          description: 
          format: 
          items: 
          enum: 
          ref: 
        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
          example: 
          description: 
          format: 
          items: 
          enum: 
          ref: 
        description: Nome ou ID da freguesia onde se localiza o imóvel.
      - name: ZoneName
        in: query
        required: false
        schema:
          type: string
          example: 
          description: 
          format: 
          items: 
          enum: 
          ref: 
        description: Identificador da zona geográfica para filtragem nas pesquisas.
      - name: MasterCategoryIds
        in: query
        required: false
        schema:
          type: array
          example: 
          description: 
          format: 
          items:
            type: string
            example: 
            description: 
            format: 
            items: 
            enum: 
            ref: 
          enum: 
          ref: 
        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
          example: 
          description: 
          format: 
          items:
            type: string
            example: 
            description: 
            format: 
            items: 
            enum: 
            ref: 
          enum: 
          ref: 
        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
          example: 
          description: 
          format: 
          items: 
          enum: 
          ref: 
        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
          example: 
          description: 
          format: int32
          items: 
          enum: 
          ref: 
        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
          example: 
          description: 
          format: int32
          items: 
          enum: 
          ref: 
        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
          example: 
          description: 
          format: int32
          items: 
          enum: 
          ref: 
        description: Número mínimo de quartos para filtrar
      - name: MaxBedrooms
        in: query
        required: false
        schema:
          type: integer
          example: 
          description: 
          format: int32
          items: 
          enum: 
          ref: 
        description: Número máximo de quartos para filtrar
      - name: Bathrooms
        in: query
        required: false
        schema:
          type: integer
          example: 
          description: 
          format: int32
          items: 
          enum: 
          ref: 
        description: Número mínimo de casas de banho.
      - name: ListingReference
        in: query
        required: false
        schema:
          type: string
          example: 
          description: 
          format: 
          items: 
          enum: 
          ref: 
        description: Referência interna do imóvel usada para identificação.
      - name: DevelopmentName
        in: query
        required: false
        schema:
          type: string
          example: 
          description: 
          format: 
          items: 
          enum: 
          ref: 
        description: Nome do empreendimento.
      - name: DevelopmentFractions
        in: query
        required: false
        schema:
          type: boolean
          example: 
          description: 
          format: 
          items: 
          enum: 
          ref: 
        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
          example: 
          description: 
          format: 
          items:
            type: string
            example: 
            description: 
            format: 
            items: 
            enum: 
            ref: 
          enum: 
          ref: 
        description: Etiquetas de empreendimentos utilizadas para filtrar a pesquisa. ()
      - name: WithVideos
        in: query
        required: false
        schema:
          type: boolean
          example: 
          description: 
          format: 
          items: 
          enum: 
          ref: 
        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
          example: 
          description: 
          format: 
          items: 
          enum: 
          ref: 
        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
          example: 
          description: 
          format: 
          items: 
          enum: 
          ref: 
        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
          example: 
          description: 
          format: 
          items: 
          enum: 
          ref: 
        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
          example: 
          description: 
          format: 
          items:
            type: string
            example: 
            description: 
            format: 
            items: 
            enum: 
            ref: 
          enum: 
          ref: 
        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, Aeroporto, Água, Alarme, Alpendre, Ampla gama de serviços, Anexos, Aquecimento Central, Ar Condicionado, Ar condicionado pré-instalação, Árvores de fruto, Aspiração Central, Auto-estrada, Banco, Banheira, Bombeiros, Campo, Campo de golfe, Campo de Ténis, Casa de banho de serviço, Casa de banho partilhada, Casa de banho privativa, Cave, Centro Comercial, Centro da Cidade, Churrasco, Cidade, Closet, Complexo selado, Copa, Cozinha, Despensa, Edifício, Eletricidade, Elevador, Escola, Escritório, Espaço aberto, Espaços Verdes, Esquentador, Estação rodoviária, Estacionamento, Estacionamento público, Exaustor, Excelente acesso, Farmácia, Fogão, Forno, Frigorífico, Garagem, Gás botija, Gás canalizado, Gás natural, Ginásio, Golf, Hipermercado, Hospital, Iluminação Pública, Internet Pré-Instalação, Isolamento acústico, Isolamento térmico, Jardim, Lago, Lareira, Lavandaria, Ligação Wi-fi, Lote, Luz natural, Máquina de lavar louça, Mar, Mercado, Microondas, Mobilado, Montanha, Muro, Orientação solar, Painéis solares, Parque Infantil, Persianas elétricas, Perto do mar, Piscina, Piscinas, Pisos radiantes, Placa de indução, Placa Vitrocerâmica, Poliban, Polícia, Porta alta segurança, Porta blindada, Portão elétrico, Portão manual, Posto de Combustível, Praça de táxi, Praia, Pré-instalação de TV a cabo, Recuperador de calor, Rio, Sala de estar, Sala de festas, Sala de jogos, Secador, Segurança 24 horas, Serviço de segurança, Sotão, Suite, Telheiro, Termoacumulador, Terraço, Transportes Públicos, Tratamento da água, Video Porteiro, Vidro duplo, Vidros espelhados, Vinha, Zona Comercial, Zona histórica)
      - name: Page
        in: query
        required: false
        schema:
          type: integer
          example: 
          description: 
          format: int32
          items: 
          enum: 
          ref: 
        description: Número da página a devolver nos resultados da pesquisa.
      required: 
      responses:
        200:
          description: Success
          content:
            application/json:
              schema:
                ref: '#/components/schemas/SearchResponse'
      requestBody: 
      servers: 
    post: 
  /mcp/detail:
    get:
      summary: Devolve informação detalhada sobre um imóvel.
      description: Devolve informação detalhada sobre um imóvel.
      security: 
      operationId: mcpDetail
      parameters:
      - name: ListingId
        in: query
        required: false
        schema:
          type: integer
          example: 
          description: 
          format: int32
          items: 
          enum: 
          ref: 
        description: ID do imóvel para contacto.
      - name: ListingReference
        in: query
        required: false
        schema:
          type: string
          example: 
          description: 
          format: 
          items: 
          enum: 
          ref: 
        description: Referência interna do imóvel usada para identificação.
      - name: DevelopmentFractions
        in: query
        required: false
        schema:
          type: boolean
          example: 
          description: 
          format: 
          items: 
          enum: 
          ref: 
        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.
      required: 
      responses:
        200:
          description: Success
          content:
            application/json:
              schema:
                ref: '#/components/schemas/DetailResponse'
      requestBody: 
      servers: 
    post: 
  /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.
      security: 
      operationId: mcpLead
      parameters:
      - name: ListingId
        in: query
        required: false
        schema:
          type: integer
          example: 
          description: 
          format: int32
          items: 
          enum: 
          ref: 
        description: ID do imóvel para contacto.
      - name: ListingReference
        in: query
        required: false
        schema:
          type: string
          example: 
          description: 
          format: 
          items: 
          enum: 
          ref: 
        description: Referência interna do imóvel usada para identificação.
      - name: Name
        in: query
        required: true
        schema:
          type: string
          example: 
          description: 
          format: 
          items: 
          enum: 
          ref: 
        description: Nome do utilizador., (é obrigatório)
      - name: Email
        in: query
        required: true
        schema:
          type: string
          example: 
          description: 
          format: 
          items: 
          enum: 
          ref: 
        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
          example: 
          description: 
          format: 
          items: 
          enum: 
          ref: 
        description: Número de telefone do utilizador (opcional se fornecer email).
      - name: PhoneCountryCode
        in: query
        required: false
        schema:
          type: string
          example: 
          description: 
          format: 
          items: 
          enum: 
          ref: 
        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
          example: 
          description: 
          format: 
          items: 
          enum: 
          ref: 
        description: Mensagem personalizada do utilizador.
      required: 
      responses:
        200:
          description: Success
          content:
            application/json:
              schema:
                ref: '#/components/schemas/LeadResponse'
      requestBody: 
      servers: 
    post: 
  /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.
      security: 
      operationId: mcpCompanyInfo
      parameters:
      - name: CompanyId
        in: query
        required: false
        schema:
          type: integer
          example: 
          description: 
          format: int32
          items: 
          enum: 
          ref: 
        description: Identificador da empresa/agência a consultar (opcional, usa o interno da empresa por omissão).
      required: 
      responses:
        200:
          description: Success
          content:
            application/json:
              schema:
                ref: '#/components/schemas/CompanyInfoWithAgenciesResponse'
      requestBody: 
      servers: 
    post: 
  /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.
      security: 
      operationId: mcpRasorInfo
      parameters:
      - name: RasorName
        in: query
        required: false
        schema:
          type: string
          example: 
          description: 
          format: 
          items: 
          enum: 
          ref: 
        description: Nome do consultor imobiliário para o qual se pretende obter informação detalhada.
      - name: StateName
        in: query
        required: false
        schema:
          type: string
          example: 
          description: 
          format: 
          items: 
          enum: 
          ref: 
        description: Permite pesquisar consultores por distrito.
      - name: TownName
        in: query
        required: false
        schema:
          type: string
          example: 
          description: 
          format: 
          items: 
          enum: 
          ref: 
        description: Permite pesquisar consultores por concelho.
      required: 
      responses:
        200:
          description: Success
          content:
            application/json:
              schema:
                ref: '#/components/schemas/RasorInfoResponse'
      requestBody: 
      servers: 
    post: 
  /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.
      security: 
      operationId: mcpImiCalculator
      parameters:
      - name: TownName
        in: query
        required: false
        schema:
          type: string
          example: 
          description: 
          format: 
          items: 
          enum: 
          ref: 
        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
          example: 
          description: 
          format: decimal
          items: 
          enum: 
          ref: 
        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
          example: 
          description: 
          format: int32
          items: 
          enum: 
          ref: 
        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
          example: 
          description: 
          format: 
          items: 
          enum: 
          ref: 
        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.'
      required: 
      responses:
        200:
          description: Success
          content:
            application/json:
              schema:
                ref: '#/components/schemas/IMIResponse'
      requestBody: 
      servers: 
    post: 
  /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.
      security: 
      operationId: mcpServicesInfo
      parameters:
      - name: CompanyId
        in: query
        required: false
        schema:
          type: integer
          example: 
          description: 
          format: int32
          items: 
          enum: 
          ref: 
        description: Identificador da empresa/agência a consultar (opcional, usa o interno da empresa por omissão).
      required: 
      responses:
        200:
          description: Success
          content:
            application/json:
              schema:
                ref: '#/components/schemas/ServicesInfoResponse'
      requestBody: 
      servers: 
    post: 

```

## System Prompts & AI Guidance {#system-prompts}

The following system prompts guide AI behavior for different operation modes:

## Contact Information {#contact-information}

**Agency Name:** BLUECOAST Live or Invest
**Email:** backoffice@bluecoast.pt
**Phone:** 211502148
**Address:** Rua Jorge de Sousa, Nº 32, 2900-428 Setúbal

### Additional Contact Numbers

- 211502148

### Support & Legal

- **Website:** https://www.bluecoast.pt/
- **Privacy Policy:** https://www.bluecoast.pt/politica-de-privacidade
- **Terms of Service:** https://www.bluecoast.pt/termos-e-condicoes
- **Cookie Policy:** https://www.bluecoast.pt/politica-de-cookies
- **Dispute Resolution:** https://www.bluecoast.pt/resolucao-alternativa-de-litigios

---

*This documentation was automatically generated for BLUECOAST Live or Invest MCP Server.*
*For updates, visit: https://www.bluecoast.pt/llms-full.txt*

