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

Glama quality

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ámetroTipoRequeridoDescripción
actionstringEl tipo de acción, p. ej. send_email, make_payment, run_sql, delete_file, post_content
inputsobjectParámetros concretos: destinatario, amount_usd, SQL statement, ruta de archivo, cuerpo del mensaje, URL, etc.
contextobjectOpcional: { agent_role, user_intent, environment }
depthstandard | deepProfundidad 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. Devuelve GO / 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/verify con { 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 entornoRequeridoPredeterminadoNotas
BLACKWALL_API_KEYbw_live_… de tu panel
BLACKWALL_BASE_URLhttps://blackwalltier.com
BLACKWALL_MODEenforceobserve = solo registro, nunca bloquear

Enlaces

Licencia MIT.