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
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âmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
action | string | ✅ | O tipo de ação, ex.: send_email, make_payment, run_sql, delete_file, post_content |
inputs | objeto | ✅ | Parâmetros concretos: destinatário, amount_usd, SQL statement, caminho do arquivo, corpo da mensagem, URL, etc. |
context | objeto | — | Opcional: { agent_role, user_intent, environment } |
depth | standard | deep | — | Profundidade 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. RetornaGO/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/verifycom{ 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 ambiente | Obrigatório | Padrão | Observações |
|---|---|---|---|
BLACKWALL_API_KEY | ✅ | — | bw_live_… do seu painel |
BLACKWALL_BASE_URL | — | https://blackwalltier.com | |
BLACKWALL_MODE | — | enforce | observe = apenas registro, nunca bloqueia |
Links
- Site e documentação: https://blackwalltier.com
- Obtenha uma chave: https://blackwalltier.com/dashboard/keys
Licença MIT.