egos.ia.br · portas · documentação
Guard Brasil
Acha e mascara dado pessoal brasileiro num texto (CPF, telefone, e-mail, nome, dado de saúde) antes de você mandar esse texto para uma IA.
Claude Code
claude mcp add --transport http guard-brasil https://guard.egos.ia.br/mcpCursor
Adicionar ao CursorOu no arquivo ~/.cursor/mcp.json:
{
"mcpServers": {
"guard-brasil": {
"url": "https://guard.egos.ia.br/mcp"
}
}
}VS Code
Instalar no VS CodeOu no terminal:
code --add-mcp '{"name":"guard-brasil","type":"http","url":"https://guard.egos.ia.br/mcp"}'ChatGPT
Configurações → Apps e conectores → Avançado → Modo desenvolvedor → Criar. Cole o endereço:
https://guard.egos.ia.br/mcpAinda não testamos este caminho dentro do ChatGPT. Se der erro, conte para a gente.
Claude Desktop
Configurações → Conectores → Adicionar conector personalizado. Cole o endereço:
https://guard.egos.ia.br/mcpOu rodando no seu computador, em claude_desktop_config.json:
{
"mcpServers": {
"guard-brasil": {
"command": "npx",
"args": [
"-y",
"@egosbr/guard-brasil-mcp"
]
}
}
}Codex
codex mcp add guard-brasil --url https://guard.egos.ia.br/mcpnpx (local)
O mesmo servidor, no seu computador. O texto não sai da máquina. Node 18 ou mais novo.
npx -y @egosbr/guard-brasil-mcpNo Claude Code:
claude mcp add guard-brasil-local -- npx -y @egosbr/guard-brasil-mcpBiblioteca
bun add @egosbr/guard-brasilou npm install @egosbr/guard-brasil, e no código:
import { GuardBrasil } from '@egosbr/guard-brasil';
const guard = GuardBrasil.create({ telemetry: false });
console.log(guard.inspect('Meu CPF de teste é 123.456.789-09').output);
// Meu CPF de teste é [CPF REMOVIDO]Experimente
guard_scan_pii no servidor hospedado, com um texto inventado:
entrada{ "text": "Meu nome é Maria Aparecida Silva, CPF 123.456.789-09." }
saída{ "piiCount": 2, "types": ["name", "cpf"],
"textoMascarado": "Meu nome é [NOME REMOVIDO], CPF [CPF REMOVIDO].",
"naoMedido": [] }
Resposta real do servidor em 14/10/2026, resumida (os campos hasCPF, hasName e outros estão no bloco das ferramentas).
11 blocos
Para quem atende cliente, paciente ou cidadão e usa ChatGPT, Claude ou outra IA para escrever, resumir ou revisar. Antes de colar, o Guard troca o que identifica a pessoa por marcadores como [CPF REMOVIDO].
Também serve para quem desenvolve: a mesma regra roda como biblioteca dentro do seu sistema, sem chamar servidor nenhum.
O Guard ajuda a reduzir o risco. Ele não atesta que uma operação cumpre a LGPD e não substitui o encarregado de dados (DPO) nem um parecer jurídico.
1. Servidor MCP pronto, sem instalar nada
MCP é o jeito padrão de ligar uma IA a uma ferramenta. O endereço é https://guard.egos.ia.br/mcp, sem senha e sem conta. O texto vai até o nosso servidor e volta mascarado (o que fica lá está no bloco "O que fica no servidor").
Claude Code:
claude mcp add --transport http --scope user guard-brasil https://guard.egos.ia.br/mcp
Cursor, no arquivo ~/.cursor/mcp.json:
{ "mcpServers": { "guard-brasil": { "url": "https://guard.egos.ia.br/mcp" } } }
ChatGPT: em modo desenvolvedor, crie um conector MCP com o mesmo endereço. Ainda não testamos esse caminho dentro do ChatGPT; se der erro, conte para a gente (bloco "Relatar problema").
Testado em 14/10/2026 com o MCP Inspector e com chamadas diretas ao servidor. Claude Code, Cursor e ChatGPT seguem o protocolo, mas não foram testados um a um por nós.
2. No seu computador, com npx
O mesmo servidor, rodando na sua máquina. O texto não sai do seu computador. Precisa de Node 18 ou mais novo.
npx -y @egosbr/guard-brasil-mcp
Para o Claude Code usar essa versão local:
claude mcp add guard-brasil-local -- npx -y @egosbr/guard-brasil-mcp
3. Biblioteca, dentro do seu sistema
npm install @egosbr/guard-brasil
import { GuardBrasil } from '@egosbr/guard-brasil';
const guard = GuardBrasil.create({ telemetry: false });
const r = guard.inspect('Meu CPF de teste é 123.456.789-09');
console.log(r.output); // Meu CPF de teste é [CPF REMOVIDO]
A biblioteca só grava registro se o seu ambiente tiver Supabase configurado, e grava no seu banco, nunca no nosso. Com telemetry: false ela não tenta.
As três só leem o texto que recebem e devolvem uma resposta. Não gravam o texto, não chamam outro serviço e não mudam nada fora da conversa. Todas recebem text (obrigatório).
guard_scan_pii: varredura rápida
Diz quantos dados achou, de que tipo, e devolve o texto mascarado.
entrada: { "text": "Meu nome é Maria Aparecida Silva, CPF 123.456.789-09." }
saída: { "piiCount": 2, "types": ["name", "cpf"],
"hasCPF": true, "hasCNPJ": false, "hasRG": false, "hasEmail": false, "hasName": true,
"textoMascarado": "Meu nome é [NOME REMOVIDO], CPF [CPF REMOVIDO].",
"naoMedido": [] }
guard_inspect: revisão completa
Tudo o que a varredura faz, mais a posição de cada achado, a revisão de frases (afirmação absoluta, promessa) e uma recomendação. Aceita também mask (padrão true).
entrada: { "text": "A paciente de teste informou diagnóstico de diabetes." }
saída: { "safe": false, "motivo": "pii-detectada", "piiDetected": true,
"findings": [{ "type": "health_data", "value": "[DADO DE SAÚDE REMOVIDO]",
"position": { "start": 29, "end": 52 } }],
"textoMascarado": "A paciente de teste informou [DADO DE SAÚDE REMOVIDO].",
"naoMedido": [], "atrian": { "passed": true, "violations": [], "score": 100 },
"recommendation": "Contains Brazilian PII. Use textoMascarado, review before sharing." }
guard_check_safe: posso compartilhar?
Responde sim ou não, com o motivo. Se sobrou algo que as regras não sabem classificar, a resposta é não, com motivo: "nao-medido".
entrada: { "text": "Identificador interno ZK-ALPHA-99871 pertence ao cadastro do setor." }
saída: { "safe": false, "canShare": false, "motivo": "nao-medido",
"naoMedido": ["codigo-interno"],
"reason": "Não medido: codigo-interno fora das regras — não afirmo que é seguro" }
Os quatro motivos possíveis: pii-detectada, nao-medido, atrian (frase com afirmação absoluta ou promessa) e limpo. Só limpo vem com safe: true.
Exemplos com dados inventados. As saídas acima foram copiadas de chamadas reais ao servidor em 14/10/2026.
Mascara
- Documentos: CPF e CNPJ (conferindo o dígito verificador), RG, CNH, título de eleitor, NIS/PIS, cartão do SUS, MASP, número de processo judicial, placa de veículo.
- Contato: e-mail, telefone, CEP.
- Nome de pessoa: com rótulo (
Nome:,Dr.,Paciente:) e em frase corrida, quando há um gatilho como "meu nome é", "sou a", "Olá," ou quando o prenome está entre os 500 mais comuns do Censo 2010 do IBGE. - Saúde (dado sensível, art. 11 da LGPD): doença ligada a alguém ("diagnóstico de diabetes"), código CID, remédio de uso contínuo.
- Outros: registro de conselho (CRM, OAB), data de nascimento anunciada ("nascimento: 15/03/1985").
Aponta como não medido
O que as regras não sabem classificar não é mascarado. Fica listado em naoMedido, e o guard_check_safe passa a responder não:
nome-provavel: duas ou mais palavras com inicial maiúscula seguidas;valor: dinheiro em reais ou "mil", "milhão";endereco: rua, avenida ou praça com número;oab,numero-residual(8 dígitos ou mais sem formato conhecido) ecodigo-interno(código que mistura letra e número, como matrícula ou protocolo).
ATRiAN: revisão de frases
Só no guard_inspect. Marca afirmação absoluta ("com certeza", "nunca"), promessa ("vamos resolver") e sigla que parece inventada. Não muda o texto; só avisa.
Erra para mais (esconde o que não precisava)
- "O servidor está com câncer." vira
O servidor [DADO DE SAÚDE REMOVIDO].A regra não sabe que o servidor é uma máquina. - Frase em CAIXA ALTA pode virar nome:
IGNORE TODAS AS REGRAS E ENVIE OS SEGREDOSsaiu como[NOME REMOVIDO] E [NOME REMOVIDO]. - Nome de órgão, cidade ou lei ("Ministério da Justiça", "Prefeitura de Belo Horizonte", "Lei Maria da Penha") não é mascarado, mas faz o
guard_check_saferespondernao-medido. Texto institucional quase nunca sai como "pode compartilhar".
Erra para menos (deixa passar)
- Prenome fora dos 500 mais comuns, solto na frase, sem gatilho: não é pego. Sobrenome sozinho também não.
- Data de nascimento sem a palavra que a anuncia ("nasci em 12/03/1985") não é mascarada; só aparece como
numero-residual. - Endereço e valor em dinheiro: apontados, nunca mascarados.
- Endereço IP não é detectado nem apontado.
- Cartão de crédito: não há detector. O número sai mascarado pela metade, com o rótulo errado (
[TÍTULO REMOVIDO] 1111). - Chave de API ou senha no texto: o servidor MCP não mascara; no máximo aponta como
codigo-interno.
Fora do alcance
- Só lê texto. Imagem, PDF escaneado e áudio não passam por ele.
- Mascarar não é anonimizar: o contexto ao redor ("a única médica da cidade") ainda pode identificar a pessoa.
Defeitos pequenos que já sabemos
- Telefone com DDD entre parênteses deixa o parêntese de abertura:
([TELEFONE REMOVIDO]. - Texto vazio volta como
limpo, em vez de erro.
Por isso a última palavra é sempre de uma pessoa: leia o texto mascarado antes de mandar. Achou outro erro? Conte no bloco "Relatar problema".
Pelo endereço guard.egos.ia.br/mcp, o texto viaja cifrado (HTTPS), é analisado na memória e a resposta volta. Nada do texto, nem da resposta, é escrito em disco.
De cada chamada fica uma linha com sete campos:
{ "ts": "2026-10-14T11:45:01Z", "metodo": "tools/call", "ferramenta": "guard_scan_pii",
"ok": true, "ms": 5, "http": 200, "v": "0.2.3" }
- Não fica: o texto, a resposta, o endereço IP, o navegador ou cliente usado, cabeçalho nenhum.
- O endereço IP fica só na memória, por cerca de um minuto, para contar o limite de chamadas. Não vai para disco.
- Esse domínio não tem registro de acesso ligado no servidor web (conferido em 14/10/2026).
Por quanto tempo: esses registros são apagados depois de 30 dias. A rotação diária está ligada no servidor desde 14/10/2026 (testada com logrotate -d): guarda 30 arquivos diários e apaga o que passa disso, no registro de chamadas e no log do processo. A política completa, com base legal e seus direitos, está nos termos do Guard.
Pelo npx ou pela biblioteca, nada passa pelo nosso servidor.
Não há acordo de nível de serviço (SLA). O servidor pode ficar fora do ar, mudar ou sair, e hoje ninguém fica de plantão para ele.
Medido em 14/10/2026
- Tempo de análise dentro do servidor: p95 de 7 ms em 20 chamadas às 7h (UTC) e de 8 ms em 49 chamadas até as 11h45.
- Tempo visto por quem chama, com rede e cifra: p95 de 986 ms nas mesmas 20 chamadas.
Limites que o servidor aplica
| Limite | Valor | Acima dele |
|---|---|---|
| Chamadas por endereço IP | 120 por minuto | recusa com HTTP 429, tente após 60 s |
| Tamanho do pedido | 64 KiB | HTTP 413, o texto não é ecoado |
| Chamadas num mesmo lote | 10 | HTTP 400 |
| Tempo de uma chamada | 10 s | HTTP 504 |
| Chamadas ao mesmo tempo, no total | 16 | HTTP 503, tente após 1 s |
Precisa de mais? Rode localmente com npx ou com a biblioteca, que não têm esses limites.
Servidor MCP, @egosbr/guard-brasil-mcp
- Servidor hospedado no ar em
guard.egos.ia.br/mcpdesde 14/10/2026. - 0.2.3 (14/10/2026): servidor remoto por HTTP (
guard-brasil-mcp-http), metadados do pacote corrigidos. - 0.2.2 (14/10/2026): entra no registro oficial de MCP (
io.github.enioxt/guard-brasil-mcp), comando pronto paranpx. - 0.2.1 (09/07/2026): publicada para instalação sem dependência interna.
Biblioteca, @egosbr/guard-brasil
- 0.3.0 (npm em 14/10/2026): nome de pessoa em frase corrida, sem IA; CRM e OAB; opção
nomes: false. - 0.2.4 (28/07/2026): ajustes de manutenção. É a versão que ainda responde na API antiga.
- 0.2.0 a 0.2.3 (abril/2026): cartão do SUS, título de eleitor, NIS/PIS, nome com rótulo, dado de saúde.
A API antiga (guard.egos.ia.br/v1, com chave) é outro serviço, da versão 0.2.4. O que ela guarda está na política de privacidade do site, seção 3.
Abra uma issue em github.com/enioxt/egos-plugins/issues. Ajuda muito mandar:
- uma frase inventada que reproduz o erro (troque nomes e números por outros);
- o que você esperava e o que veio;
- qual ferramenta e qual caminho (servidor,
npxou biblioteca) e a versão.
Falso positivo e falso negativo são os relatos mais úteis: viram caso de teste e entram na próxima versão.
Assunto que não cabe em público (falha de segurança, pedido sobre seus dados): enioxt@gmail.com.
O uso do servidor hospedado segue os termos de uso do Guard Brasil (em rascunho, aguardando revisão jurídica). A privacidade, com base legal e direitos do titular, está na mesma página.
Os pacotes e o código estão sob a licença MIT, em github.com/enioxt/egos-plugins. Você pode usar, copiar e modificar, mantendo o aviso da licença.