Kaidn

Pontuação de fraude e abuso para operadores que não podem justificar uma equipe empresarial de fraude.

Documentação

Kaidn

npm version MCP registry license MIT docs

Kaidn MCP

Servidor de Protocolo de Contexto de Modelo (MCP) para a API de pontuação de fraude Kaidn.

Investigue fraudes em linguagem simples — "por que este cadastro foi bloqueado?", "o que mais este dispositivo tocou?", "o que está na fila de revisão esta manhã?"

  • Evidência, não apenas uma pontuação. Cada motivo carrega os números brutos por trás dele, para que um modelo possa explicar um veredito em vez de adivinhar.
  • Somente leitura por padrão. Nada altera seu tenant, a menos que você opte por isso.
  • Protegido por cota. Um agente em loop não pode gastar seu mês em dez minutos.
  • Qualquer cliente. MCP é um protocolo aberto — stdio localmente, HTTP Streamable para agentes remotos e hospedados.

Requisitos

Node.js 18 ou mais recente e uma chave de API do seu painel Kaidn.


Começando

Primeiro, instale o servidor Kaidn MCP com seu cliente. A configuração padrão funciona na maioria das ferramentas:

{
  "mcpServers": {
    "kaidn": {
      "command": "npx",
      "args": ["@kaidn/mcp@latest"],
      "env": { "KAIDN_API_KEY": "your_key" }
    }
  }
}
Claude Code
claude mcp add kaidn --env KAIDN_API_KEY=your_key -- npx @kaidn/mcp@latest
Claude Desktop

Adicione a configuração padrão a claude_desktop_config.json e reinicie o Claude. Configurações → Desenvolvedor → Editar Configuração abre o arquivo.

Cursor

Configurações → MCP → Adicionar novo servidor MCP, ou adicione a configuração padrão a .cursor/mcp.json no seu projeto (ou ~/.cursor/mcp.json para todos os projetos).

VS Code
code --add-mcp '{"name":"kaidn","command":"npx","args":["@kaidn/mcp@latest"],"env":{"KAIDN_API_KEY":"your_key"}}'
Windsurf

Adicione a configuração padrão a ~/.codeium/windsurf/mcp_config.json.

Cline

Adicione a configuração padrão a cline_mcp_settings.json via o ícone de Servidores MCP → Configurar Servidores MCP.

Zed

Adicione a settings.json sob context_servers, usando o mesmo comando, args e env da configuração padrão.

Qualquer outra coisa

Qualquer cliente MCP aceita um bloco command, args e env. Use a configuração padrão acima. Se o cliente só puder alcançar o servidor pela rede em vez de iniciar um processo, veja Streamable HTTP.


Configuração

OpçãoVariável de ambientePadrãoFinalidade
KAIDN_API_KEYobrigatórioSua chave secreta. Somente ambiente — nunca uma flag, nunca um argumento de ferramenta.
KAIDN_API_URLhttps://api.kaidn.ioURL base da API
--allow-writesKAIDN_MCP_ALLOW_WRITES=1desligadoRegistrar as ferramentas de mutação
KAIDN_MCP_MAX_QUOTA_CALLS100Teto de cota por processo
--httpKAIDN_MCP_TRANSPORT=httpstdioServir HTTP Streamable
--host <addr>KAIDN_MCP_HOST127.0.0.1Endereço de bind HTTP
--port <n>KAIDN_MCP_PORT8765Porta HTTP
KAIDN_MCP_HTTP_TOKENnão definidoExigir Authorization: Bearer em HTTP
--helpMostrar uso
--versionMostrar a versão

Precedência: flags de CLI sobrescrevem variáveis de ambiente.

A chave de API é deliberadamente somente ambiente. Uma chave passada como flag vaza em listagens de processos e histórico de shell.


Transportes

TransporteUse paraEndpoint
stdio (padrão)clientes locais que iniciam um subprocesso—
HTTP Streamableagentes remotos, contêineres, qualquer coisa fora da máquinaPOST /mcp

HTTP+SSE está deliberadamente ausente: descontinuado na especificação de 2025-03-26 e encerrado em junho de 2026.

HTTP Streamable

npx @kaidn/mcp@latest --http --port 8765

Sem estado — um servidor novo por requisição, nada compartilhado entre chamadores — então fica atrás de um balanceador de carga sem surpresas. GET /health não é autenticado para que um orquestrador possa verificar a vivacidade sem segurar o token.


Docker

docker build -t kaidn-mcp .
# stdio — behaves like the npx invocation
docker run -i --rm -e KAIDN_API_KEY=your_key kaidn-mcp

# HTTP — for remote agents
docker run --rm -p 8765:8765 \
  -e KAIDN_API_KEY=your_key \
  -e KAIDN_MCP_TRANSPORT=http \
  -e KAIDN_MCP_HOST=0.0.0.0 \
  -e KAIDN_MCP_HTTP_TOKEN=your_token \
  kaidn-mcp

Build multi-estágio, executa como o usuário não privilegiado node, com healthcheck.


Segurança

O servidor guarda sua chave de API. Quem puder alcançá-lo pode gastar sua cota, então os padrões são conservadores e as proteções falham fechadas em vez de avisar.

  • Faz bind em 127.0.0.1 e se recusa a iniciar em uma interface mais ampla a menos que KAIDN_MCP_HTTP_TOKEN esteja definido. Ele para com uma explicação em vez de expor silenciosamente sua conta.
  • Somente leitura por padrão. add_to_list e label_outcome existem apenas com --allow-writes.
  • set_config e forget_subject nunca são expostos, em nenhum modo. Um muda silenciosamente o veredito em cada evento futuro; o outro é apagamento irreversível de GDPR. Ambos pertencem ao painel, diante de um humano.
  • Teto de cota por processo, com orçamento restante relatado em cada resposta com custo. Uma reserva que ultrapassaria é recusada diretamente em vez de parcialmente gasta.
  • A chave nunca cruza o limite da ferramenta — não como parâmetro, não na saída, não em um erro.

Ferramentas

Duas coisas governam cada ferramenta: se ela gasta cota e se ela muda algo.

Somente leitura — disponível por padrão

FerramentaCustoO que faz
get_statsgrátisVeredito, pontuação e resumos de motivo em uma janela móvel. Comece aqui.
list_eventsgrátisEventos pontuados, mais recentes primeiro, filtráveis por veredito ou tipo, pesquisáveis por fingerprint ou id de usuário
explain_eventgrátisCada verificação que disparou em um evento, com a evidência bruta
triage_queuegrátisTudo em review, maior pontuação primeiro
get_configgrátisPesos e limites efetivos para este tenant
investigate_entity1 linha¹Enriquecimento, reputação de rede e eventos relacionados para uma entidade
check_email1 linhaDomínio descartável, entregabilidade, pontuação de fraude, histórico de abuso
check_ip1 linhaProxy, VPN, Tor, ASN de datacenter, geo, histórico de abuso
check_phone1 linhaValidade, tipo de linha, operadora, pontuação de fraude
score_event1 linhaPontuar um novo evento (também o registra)

¹ Grátis quando a entidade é um device_id; enriquecimento só custa em email ou IP.

Mutação — exige --allow-writes

FerramentaO que faz
add_to_listAdicionar uma entidade à lista de permitidos ou bloqueados
label_outcomeRelatar um resultado confirmado de fraude / chargeback / legítimo

Exemplos práticos

As ferramentas são projetadas para serem encadeadas. Estes são os fluxos para os quais foram construídas.

Triagem matinal

Você: O que aconteceu durante a noite e o que precisa de mim?

O modelo chama get_stats para o formato das últimas 24 horas, depois triage_queue para os eventos em review, depois explain_event no pior. Você recebe uma lista classificada com o raciocínio anexado, em vez de um painel que ainda precisa ler.

"Por que este cliente foi bloqueado?"

Você: Evento evt_8f21c — um cliente diz que foi bloqueado erroneamente.

explain_event retorna cada verificação que disparou com sua evidência bruta — o ASN de datacenter que correspondeu, quantas contas compartilharam o dispositivo, a contagem de velocidade. Suficiente para responder ao cliente ou concluir que a regra estava errada e precisa de ajuste.

Trabalhando para fora a partir de um sinal

Você: 194.x.x.x é um caso isolado ou parte de um anel?

investigate_entity retorna enriquecimento e reputação de rede para o IP mais cada evento recente em que aparece. Se os mesmos ids de dispositivo continuam recorrentes, isso é um anel em vez de uma coincidência.

Verificando uma mudança de regra antes de fazê-la

Você: Se eu reduzisse o peso de velocidade, o que deixaria de ser bloqueado?

get_config lê os pesos atuais; list_events com verdict: "block" mostra o que está sendo capturado atualmente. O modelo pode dizer quais desses dependem da verificação que você está prestes a enfraquecer.


Tratamento de erros

Falhas retornam como erros de ferramenta com uma mensagem legível, não exceções — o modelo pode agir sobre elas.

Você vêSignificadoCorreção
KAIDN_API_KEY is not setServidor iniciou sem chaveDefina-a no bloco env do cliente
Kaidn error: 401 …Chave rejeitadaGire ou copie novamente do painel
Kaidn error: 429 …Limitado por taxaDesacelere; a limitação por chave é por minuto
Session quota ceiling reached (100/100 …)A proteção parou uma execução caraAumente KAIDN_MCP_MAX_QUOTA_CALLS deliberadamente ou reinicie
No event <id> in the most recent 200 eventsEvento é mais antigo que a janela de varreduraVolte a página com list_events usando offset
Supply exactly one of email, ip or device_idInvestigação ambíguaPergunte sobre uma entidade por vez
Refusing to bind <host> without authenticationHTTP não-loopback sem tokenDefina KAIDN_MCP_HTTP_TOKEN ou faça bind em 127.0.0.1

Erros nunca contêm sua chave de API.


Solução de problemas

O cliente não mostra ferramentas. Verifique o log MCP do cliente para a linha de inicialização. kaidn-mcp: ready (stdio, …) no stderr significa que o servidor está ativo e o problema está no lado do cliente. Nada geralmente significa que npx não conseguiu resolver o pacote ou o Node é mais antigo que 18.

Inicia e sai imediatamente. Quase sempre um KAIDN_API_KEY ausente. A mensagem diz isso no stderr; alguns clientes ocultam o stderr, então execute em um terminal para vê-lo.

add_to_list e label_outcome estão ausentes. Funcionando como projetado. Eles precisam de --allow-writes.

set_config e forget_subject estão ausentes. Também por design, e não estão disponíveis em nenhum modo. Veja SECURITY.md.

O modo HTTP se recusa a iniciar. Você fez bind em algo diferente de loopback sem um token de portador. Isso é a proteção funcionando — o processo guarda sua chave de API.

Tudo está lento. As verificações de enriquecimento fazem chamadas upstream ao vivo. get_stats, list_events, explain_event e triage_queue são grátis e rápidas; prefira-as ao ler histórico.

Verifique o servidor independentemente do cliente:

node dist/index.js --help                 # no key required
KAIDN_API_KEY=your_key npm start          # should print a ready line

Suporte


Executar a partir do código-fonte

git clone https://github.com/Kaidn-io/kaidn-mcp.git
cd kaidn-mcp
npm install
npm run build
npm test
claude mcp add kaidn --env KAIDN_API_KEY=your_key -- node /absolute/path/to/kaidn-mcp/dist/index.js

Para verificar se inicia sem um cliente:

KAIDN_API_KEY=your_key npm start

Imprime kaidn-mcp: ready (stdio, read-only, quota ceiling 100) no stderr e então espera no stdin — isso é o transporte MCP, então o silêncio está correto.


Por que a evidência importa

O motor do Kaidn é baseado em regras e explicável: cada motivo carrega os números brutos por trás dele. Uma pontuação nua não dá nada para um modelo raciocinar, enquanto checks[] com evidência anexada dá algo para explicar. Essa é a diferença entre explain_event ser útil e ser decorativo.

As regras decidem. O modelo narra.


Projeto

Licença

MIT