BLACK_WALL
Una puerta de riesgo previa a la acción que tu agente de IA consulta antes de cualquier acción irreversible: devuelve una puntuación de riesgo, banderas rojas nombradas y una puerta: proceder / confirmar / requiere humano.
Documentación
blackwall-mcp
Una salvaguarda para agentes de IA, como servidor MCP. Tu agente llama a una herramienta — forecast — antes de cualquier acción irreversible (enviar correo, mover dinero, ejecutar SQL, borrar datos, publicar contenido). Obtiene una puntuación de riesgo (0–100), una clase de reversibilidad, una recomendación GO / CAUTION / STOP, y banderas rojas nombradas en unos segundos (~4-8s).
Funciona en cualquier host MCP: Claude Desktop, Claude Code, Cursor, Windsurf, y cualquier framework de agentes con soporte MCP.
El muro entre tu agente y el desastre. Un producto BLUETIER.
1. Obtén una clave API
Regístrate gratis en https://blackwalltier.com → Panel → Claves API → Crear clave.
Plan gratuito: ~100 predicciones/mes, sin tarjeta. Tu clave se ve así: bw_live_….
2. Añade el servidor a tu host MCP
Claude Desktop
Edita claude_desktop_config.json (Configuración → Desarrollador → Editar configuración):
{
"mcpServers": {
"blackwall": {
"command": "npx",
"args": ["-y", "blackwall-mcp"],
"env": { "BLACKWALL_API_KEY": "bw_live_your_key_here" }
}
}
}
Reinicia Claude Desktop. Verás una herramienta forecast disponible.
Cursor
Settings → MCP → Add new global MCP server, luego en 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
Ejecutar localmente (cualquier host / pruebas)
BLACKWALL_API_KEY=bw_live_your_key_here npx -y blackwall-mcp
3. Úsalo
Una vez añadido, instruye a tu agente: "Antes de cualquier acción irreversible, llama a la herramienta forecast y detente si devuelve STOP." El modelo la llamará automáticamente cuando esté a punto de hacer algo arriesgado.
La herramienta forecast
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
action | string | ✅ | El tipo de acción, p. ej. send_email, make_payment, run_sql, delete_file, post_content |
inputs | object | ✅ | Parámetros concretos: destinatario, amount_usd, SQL statement, ruta de archivo, cuerpo del mensaje, URL, etc. |
context | object | — | Opcional: { agent_role, user_intent, environment } |
depth | standard | deep | — | Profundidad de análisis. standard es el predeterminado. |
Devuelve: recomendación (GO/CAUTION/STOP), risk_score (0–100), reversibility (clase + costo de reversión), gate (proceder/confirmar/se requiere humano), confidence, red_flags[], predicted_result, alternative_actions[].
Ejemplo
Agente a punto de ejecutar DELETE FROM users; (sin 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 observación — pruébalo con riesgo cero
¿No estás listo para que una salvaguarda bloquee a tus agentes? Comienza en modo observación. Puntúa y registra cada acción pero nunca le dice al agente que se detenga — tus agentes se comportan exactamente como hoy. Después de una semana, revisa tu panel y ve lo que habría detectado.
{
"mcpServers": {
"blackwall": {
"command": "npx",
"args": ["-y", "blackwall-mcp"],
"env": {
"BLACKWALL_API_KEY": "bw_live_your_key_here",
"BLACKWALL_MODE": "observe"
}
}
}
}
Luego ve "lo que tus agentes casi hicieron" en tu panel. Cambia BLACKWALL_MODE a enforce (o simplemente elimínalo — enforce es el predeterminado) cuando estés listo para bloquear de verdad.
Dos herramientas
El servidor expone dos herramientas MCP:
forecast— verificación de riesgo previa a la acción. DevuelveGO/CAUTION/STOP, puntuación de riesgo, banderas rojas nombradas, clase de reversibilidad y un recibo verificable.observe— informe de resultado posterior a la acción. Informa a BLACK_WALL de lo que realmente sucedió después de que la acción se ejecutara (o después de que el agente obedeciera un veredicto STOP). Cierra el ciclo para que el sistema pueda rastrear la precisión de las predicciones con el tiempo. GRATIS — no se cobran tokens.
Conecta a tu agente para que llame a forecast antes de cualquier acción irreversible, y luego llame a observe después con el forecast_id de la respuesta original. observe acepta un outcome_class (matched / over_scope / under_scope / no_op / diverged / aborted) y opcionalmente divergence_severity y details. Ve el ejemplo forecast a continuación; el mismo cableado se aplica a observe.
Úsalo en código — el control gate() (cualquier agente JS/TS)
¿Ejecutando un agente en Node (LangChain, un bucle personalizado, ElizaOS, un trabajo cron)? No necesitas un host MCP — llama a BLACK_WALL directamente desde la librería, y deja que gate() haga la verificación imposible de omitir. Un envoltorio predice la acción, aplica el veredicto (falla cerrada en STOP / desconocido / inalcanzable), ejecuta tu efecto secundario solo cuando está permitido, e informa el resultado real con observe automáticamente.
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
}
Falla cerrada por diseño. Si no se puede obtener un veredicto (red / autenticación / tiempo de espera), la acción no se ejecuta a menos que pases explícitamente failOpen: true. Una puerta de riesgo que falla abierta no es una puerta de riesgo. El ciclo se cierra solo — gate() llama a observe con el resultado real (matched / diverged / aborted), para que tus predicciones se afinen con el tiempo.
¿Prefieres las piezas de bajo nivel? También se exportan:
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' });
Demo ejecutable: examples/gate-quickstart.mjs.
Recibos de decisión (criptográficos, verificables sin conexión)
Cada respuesta de forecast ahora incluye un campo receipt — una firma Ed25519 sobre hashes SHA-256 canónicos de la solicitud + respuesta. Cualquiera con la clave pública publicada puede verificar sin conexión que BLACK_WALL firmó un par (solicitud, respuesta) específico, sin confiar en nuestros servidores.
- Claves publicadas: https://blackwalltier.com/.well-known/blackwall-signing-keys.json (estable, cacheable)
- Endpoint de verificación sin estado:
POST https://blackwalltier.com/api/v1/receipts/verifycon{ envelope, request_body, response_body } - Solo hashes — BLACK_WALL nunca almacena los cuerpos de solicitud/respuesta en bruto, por lo que los recibos brindan auditoría criptográfica sin exposición de datos
- Retención del plan gratuito: 90 días. De pago: indefinida.
El servidor MCP expone el id del recibo en su salida de herramienta para que tu agente pueda registrarlo para reproducción / auditoría posterior.
Referencia de configuración
| Variable de entorno | Requerido | Predeterminado | Notas |
|---|---|---|---|
BLACKWALL_API_KEY | ✅ | — | bw_live_… de tu panel |
BLACKWALL_BASE_URL | — | https://blackwalltier.com | |
BLACKWALL_MODE | — | enforce | observe = solo registro, nunca bloquear |
Enlaces
- Sitio y documentación: https://blackwalltier.com
- Obtén una clave: https://blackwalltier.com/dashboard/keys
Licencia MIT.