> ## Documentation Index
> Fetch the complete documentation index at: https://strattumai.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Conectar via ChatGPT

> Integre o MCP Server da strattum.ai ao ChatGPT usando GPT Actions — a interface de plugins e ferramentas externas da OpenAI.

O ChatGPT não suporta o protocolo MCP nativamente. A integração é feita via **GPT Actions**: o MCP Server da strattum.ai expõe um schema OpenAPI que o ChatGPT consome para chamar as ferramentas `search_entity`, `get_entity_context` e `search_knowledge` como se fossem Actions nativas.

<Info>
  GPT Actions estão disponíveis no plano **ChatGPT Plus, Team ou Enterprise** e também via API da OpenAI para desenvolvedores. Não estão disponíveis no plano gratuito.
</Info>

## Como funciona

O MCP Server opera em modo SSE (HTTP) e o ChatGPT se comunica com ele via HTTPS usando um schema OpenAPI que descreve os três endpoints. O fluxo é:

```
ChatGPT → HTTPS POST → MCP Server (/sse ou endpoint REST) → Memory API / Knowledge API
```

<Warning>
  O ChatGPT precisa acessar o MCP Server via internet pública com HTTPS e certificado válido. Não é possível conectar a serviços em `localhost` ou em redes privadas sem um tunnel ou proxy reverso com domínio público.
</Warning>

## Pré-requisitos

* MCP Server em execução no modo SSE (porta 8005)
* URL pública HTTPS apontando para o MCP Server (ex: `https://mcp.sua-empresa.com`)
* `MCP_API_KEY` configurado para autenticação Bearer
* Conta ChatGPT Plus, Team ou Enterprise (para criar GPTs customizados)

## Schema OpenAPI para o GPT Action

Crie um arquivo `strattum-mcp-openapi.json` com o schema abaixo. Substitua `https://mcp.sua-empresa.com` pela URL real do seu servidor:

```json theme={null}
{
  "openapi": "3.1.0",
  "info": {
    "title": "Strattum Memory & Knowledge",
    "description": "Acessa Memory (entidades) e Knowledge (documentos) da plataforma strattum.ai.",
    "version": "1.0.0"
  },
  "servers": [
    {
      "url": "https://mcp.sua-empresa.com"
    }
  ],
  "paths": {
    "/v1/memory/search": {
      "post": {
        "operationId": "search_entity",
        "summary": "Busca entidades em Memory",
        "description": "Busca entidades (clientes, empresas, associados) por nome, e-mail, telefone, external_id ou texto livre. Use este endpoint para encontrar o entity_id antes de chamar get_entity_context.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": ["query"],
                "properties": {
                  "query": {
                    "type": "string",
                    "description": "Texto livre para busca. Ex: 'TechCorp', 'Maria Silva CTO'."
                  },
                  "email": { "type": "string", "description": "Filtro por e-mail exato." },
                  "name": { "type": "string", "description": "Filtro por nome (busca aproximada)." },
                  "phone": { "type": "string", "description": "Filtro por telefone." },
                  "external_id": { "type": "string", "description": "Filtro pelo identificador externo do cliente." },
                  "limit": { "type": "integer", "minimum": 1, "maximum": 100, "default": 10 }
                }
              }
            }
          }
        },
        "responses": {
          "200": { "description": "Lista de entidades encontradas." }
        }
      }
    },
    "/v1/memory/entity/{entity_id}/context": {
      "get": {
        "operationId": "get_entity_context",
        "summary": "Contexto completo de uma entidade",
        "description": "Retorna o perfil consolidado, timeline de eventos e relações de grafo da entidade. O resultado é um documento Markdown pronto para consumo.",
        "parameters": [
          {
            "name": "entity_id",
            "in": "path",
            "required": true,
            "schema": { "type": "string" },
            "description": "UUID da entidade strattum (ex: ent_8f3a2b1c) ou external_id do cliente."
          },
          {
            "name": "depth",
            "in": "query",
            "schema": { "type": "string", "enum": ["immediate", "none"], "default": "immediate" },
            "description": "Profundidade do grafo. 'immediate' inclui vizinhos de 1 grau."
          }
        ],
        "responses": {
          "200": { "description": "Contexto Markdown da entidade." },
          "404": { "description": "Entidade não encontrada." }
        }
      }
    },
    "/v1/knowledge/search": {
      "post": {
        "operationId": "search_knowledge",
        "summary": "Busca semântica na base de conhecimento",
        "description": "Busca documentos, políticas e procedimentos indexados usando busca vetorial. Resultados ranqueados por relevância.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": ["query"],
                "properties": {
                  "query": {
                    "type": "string",
                    "description": "O que você quer encontrar. Ex: 'política de SLA enterprise', 'checklist de onboarding'."
                  },
                  "filters": {
                    "type": "object",
                    "properties": {
                      "source": {
                        "type": "string",
                        "description": "Filtro por fonte. Ex: 'gdrive', 'sharepoint'."
                      }
                    }
                  },
                  "top_k": { "type": "integer", "minimum": 1, "maximum": 50, "default": 5 }
                }
              }
            }
          }
        },
        "responses": {
          "200": { "description": "Trechos de documentos ranqueados por relevância." }
        }
      }
    }
  },
  "components": {
    "securitySchemes": {
      "BearerAuth": {
        "type": "http",
        "scheme": "bearer"
      }
    }
  },
  "security": [{ "BearerAuth": [] }]
}
```

<Note>
  Este schema chama diretamente as APIs internas (Memory API e Knowledge API) via proxy reverso. Alternativamente, você pode criar endpoints REST no próprio MCP Server que façam o bridge — consulte a equipe de engenharia da strattum.ai para a opção mais adequada ao seu deployment.
</Note>

## Configuração no ChatGPT (GPT Builder)

<Steps>
  <Step title="Abra o GPT Builder">
    No ChatGPT, clique em **Explore GPTs** > **Create a GPT** (ou acesse [chatgpt.com/gpts/editor](https://chatgpt.com/gpts/editor)).
  </Step>

  <Step title="Configure o GPT">
    Na aba **Configure**:

    * **Name:** `Strattum Assistant`
    * **Description:** Assistente com acesso à Memory e Knowledge da strattum.ai.
    * **Instructions:** Cole o texto abaixo no campo de instruções:

    ```
    Você é um assistente que tem acesso à plataforma strattum.ai.
    Use search_entity para localizar clientes ou empresas pelo nome ou e-mail.
    Use get_entity_context para obter o perfil completo de uma entidade após ter o entity_id.
    Use search_knowledge para encontrar documentos, políticas e procedimentos corporativos.
    Sempre busque o entity_id com search_entity antes de chamar get_entity_context.
    Apresente os resultados de forma clara e estruturada.
    ```
  </Step>

  <Step title="Adicione a Action">
    Clique em **Add actions** > **Import from URL** e forneça a URL pública do schema OpenAPI, ou cole o conteúdo do JSON diretamente.
  </Step>

  <Step title="Configure a autenticação">
    * **Authentication type:** API Key
    * **Auth type:** Bearer
    * **API Key:** `<MCP_API_KEY>`
  </Step>

  <Step title="Teste e publique">
    Use o painel de preview para testar: pergunte sobre um cliente ou busque uma política. Quando funcionando corretamente, salve e publique para sua equipe.
  </Step>
</Steps>

## Exemplos de uso no ChatGPT

### Consultar um cliente

```
Busque a empresa "Acme Tecnologia" na strattum e me dê o contexto completo dela.
```

O GPT chamará `search_entity` → obterá o `entity_id` → chamará `get_entity_context` e apresentará perfil, eventos e relações.

### Consultar documentação interna

```
Qual é a nossa política de renovação de contratos para clientes enterprise?
```

O GPT chamará `search_knowledge` e retornará os trechos mais relevantes dos documentos indexados.

## Limitações desta integração

| Aspecto             | Detalhe                                                                                                                                |
| ------------------- | -------------------------------------------------------------------------------------------------------------------------------------- |
| **Protocolo**       | O ChatGPT usa REST/JSON, não o protocolo MCP binário. A integração é uma aproximação funcional, não uma conexão MCP nativa.            |
| **Contexto**        | O ChatGPT não mantém estado entre chamadas de Action — cada conversa começa do zero.                                                   |
| **Latência**        | Chamadas passam pela internet pública, adicionando latência em relação ao uso local (Claude Code).                                     |
| **Disponibilidade** | GPT Actions exigem que o servidor esteja acessível publicamente via HTTPS — incompatível com deployments puramente internos sem proxy. |
