BLACK_WALL

Um portão de risco pré-ação que seu agente de IA consulta antes de qualquer ação irreversível — retorna uma pontuação de risco, bandeiras vermelhas nomeadas e um portão: prosseguir / confirmar / exigir humano.

Documentação

blackwall-mcp

Glama quality

Uma salvaguarda para agentes de IA, como um servidor MCP. Seu agente chama uma ferramenta — forecast — antes de qualquer ação irreversível (enviar e-mail, mover dinheiro, executar SQL, excluir dados, publicar conteúdo). Ele recebe uma pontuação de risco (0–100), uma classe de reversibilidade, uma recomendação GO / CAUTION / STOP e bandeiras vermelhas nomeadas em poucos segundos (~4-8s).

Funciona em qualquer host MCP: Claude Desktop, Claude Code, Cursor, Windsurf e qualquer framework de agente com suporte a MCP.

A parede entre seu agente e o desastre. Um produto BLUETIER.


1. Obtenha uma chave de API

Cadastre-se gratuitamente em https://blackwalltier.com → Dashboard → API keys → Criar chave. Plano gratuito: ~100 previsões/mês, sem cartão. Sua chave se parece com bw_live_….

2. Adicione o servidor ao seu host MCP

Claude Desktop

Edite o arquivo claude_desktop_config.json (Configurações → Desenvolvedor → Editar configuração):

{
  "mcpServers": {
    "blackwall": {
      "command": "npx",
      "args": ["-y", "blackwall-mcp"],
      "env": { "BLACKWALL_API_KEY": "bw_live_your_key_here" }
    }
  }
}

Reinicie o Claude Desktop. Você verá a ferramenta forecast disponível.

Cursor

Settings → MCP → Add new global MCP server, depois em mcp.json:

{
  "mcpServers": {
    "blackwall": {
      "command": "npx",
      "args": ["-y", "blackwall-mcp"],
      "env": { "BLACKWALL_API_KEY": "bw_live_your_key_here" }
    }
  }
}

Claude Code

claude mcp add blackwall -e BLACKWALL_API_KEY=bw_live_your_key_here -- npx -y blackwall-mcp

Execute localmente (qualquer host / testes)

BLACKWALL_API_KEY=bw_live_your_key_here npx -y blackwall-mcp

3. Use

Depois de adicionado, instrua seu agente: "Antes de qualquer ação irreversível, chame a ferramenta forecast e pare se ela retornar STOP." O modelo a chamará automaticamente quando estiver prestes a fazer algo arriscado.


A ferramenta forecast

ParâmetroTipoObrigatórioDescrição
actionstringO tipo de ação, ex.: send_email, make_payment, run_sql, delete_file, post_content
inputsobjetoParâmetros concretos: destinatário, amount_usd, SQL statement, caminho do arquivo, corpo da mensagem, URL, etc.
contextobjetoOpcional: { agent_role, user_intent, environment }
depthstandard | deepProfundidade da análise. standard é o padrão.

Retorna: recomendação (GO/CAUTION/STOP), risk_score (0–100), reversibility (classe + custo de reversão), gate (prosseguir/confirmar/requer humano), confidence, red_flags[], predicted_result, alternative_actions[].

Exemplo

Agente prestes a executar DELETE FROM users; (sem cláusula WHERE) →

🛑 BLACK_WALL: STOP — risk 99/100
Red flags:
  • [CRITICAL] SQL_NO_WHERE — deletes the entire table, not one row
  • [CRITICAL] INTENT_MISMATCH — intent was "remove a single test row"
  • [CRITICAL] IRREVERSIBLE_NO_BACKUP — no recovery path
Guidance: DO NOT take this action. Surface the red flags to the user.

Modo observação — teste com risco zero

Não está pronto para deixar uma salvaguarda bloquear seus agentes? Comece no modo observação. Ele avalia e registra cada ação, mas nunca diz ao agente para parar — seus agentes se comportam exatamente como hoje. Após uma semana, revise seu painel e veja o que ele teria capturado.

{
  "mcpServers": {
    "blackwall": {
      "command": "npx",
      "args": ["-y", "blackwall-mcp"],
      "env": {
        "BLACKWALL_API_KEY": "bw_live_your_key_here",
        "BLACKWALL_MODE": "observe"
      }
    }
  }
}

Depois veja "o que seus agentes quase fizeram" no painel. Quando estiver pronto para bloquear, alterne BLACKWALL_MODE para enforce (ou simplesmente remova — o modo enforce é o padrão).

Duas ferramentas

O servidor expõe duas ferramentas MCP:

  • forecast — verificação de risco pré-ação. Retorna GO / CAUTION / STOP, pontuação de risco, bandeiras vermelhas nomeadas, classe de reversibilidade e um recibo verificável.
  • observe — relatório de resultado pós-ação. Informa ao BLACK_WALL o que realmente aconteceu após a ação ser executada (ou após o agente obedecer a um veredito STOP). Fecha o loop para que o sistema acompanhe a precisão das previsões ao longo do tempo. GRATUITO — sem cobrança de tokens.

Conecte seu agente para chamar forecast antes de qualquer ação irreversível e depois observe com o forecast_id da resposta original. observe aceita um outcome_class (matched / over_scope / under_scope / no_op / diverged / aborted) e opcionalmente divergence_severity e details. Veja o exemplo forecast abaixo; a mesma conexão se aplica a observe.

Uso em código — o controle gate() (qualquer agente JS/TS)

Rodando um agente em Node (LangChain, um loop customizado, ElizaOS, um cron job)? Você não precisa de um host MCP — chame o BLACK_WALL diretamente da biblioteca e deixe gate() tornar a verificação impossível de pular. Um wrapper prevê a ação, aplica o veredito (falha fechada em STOP / desconhecido / inacessível), executa seu efeito colateral apenas quando permitido e relata o resultado real com observe automaticamente.

npm i blackwall-mcp
import { gate, BlackWallBlocked } from 'blackwall-mcp/lib/gate';

// Wrap ANY risky action in a few lines. BLACKWALL_API_KEY lives in the env.
try {
  const { result } = await gate(
    { action: 'run_sql', inputs: { statement: sql }, context: { user_intent } },
    () => db.query(sql),                        // your real side effect — only runs if allowed
    { onCaution: (v) => confirmWithHuman(v) },  // CAUTION needs a yes; default = block
  );
  // ...use result
} catch (e) {
  if (e instanceof BlackWallBlocked) {
    // STOP, unconfirmed CAUTION, or forecast unavailable → the action NEVER ran
    console.error('Blocked:', e.reason, e.verdict?.red_flags);
  } else throw e; // a real error thrown by your action
}

Falha fechada por design. Se nenhum veredito puder ser obtido (rede / autenticação / tempo esgotado), a ação não é executada, a menos que você passe explicitamente failOpen: true. Um portão de risco que falha aberto não é um portão de risco. O loop se fecha sozinho — gate() chama observe com o resultado real (matched / diverged / aborted), para que suas previsões se aprimorem com o tempo.

Prefere as partes de nível mais baixo? Elas também são exportadas:

import { forecast, observe } from 'blackwall-mcp/lib';

const v = await forecast({ action: 'make_payment', inputs: { amount_usd: 50000 } });
if (v.recommendation === 'STOP') throw new Error('halt');
// ... take the action ...
await observe(v.id, { outcome_class: 'matched' });

Demonstração executável: examples/gate-quickstart.mjs.

Recibos de decisão (criptográficos, verificáveis offline)

Toda resposta forecast agora inclui um campo receipt — uma assinatura Ed25519 sobre hashes canônicos SHA-256 da solicitação + resposta. Qualquer pessoa com a chave pública publicada pode verificar offline que o BLACK_WALL aprovou um par específico (solicitação, resposta), sem confiar em nossos servidores.

  • Chaves publicadas: https://blackwalltier.com/.well-known/blackwall-signing-keys.json (estável, em cache)
  • Endpoint de verificação sem estado: POST https://blackwalltier.com/api/v1/receipts/verify com { envelope, request_body, response_body }
  • Apenas hashes — o BLACK_WALL nunca armazena os corpos brutos da solicitação/resposta, então os recibos fornecem auditoria criptográfica sem exposição de dados
  • Retenção no plano gratuito: 90 dias. Pago: indefinido.

O servidor MCP exibe o id do recibo na saída da ferramenta para que seu agente possa registrá-lo para reprodução/auditoria posterior.

Referência de configuração

Variável de ambienteObrigatórioPadrãoObservações
BLACKWALL_API_KEYbw_live_… do seu painel
BLACKWALL_BASE_URLhttps://blackwalltier.com
BLACKWALL_MODEenforceobserve = apenas registro, nunca bloqueia

Links

Licença MIT.