SENTINEL
SENTINEL
Demo en vivo → · Manual · Informe de compilación y pruebas en vivo
Un plano de control de aplicación de políticas, auditoría y evaluación para agentes LLM que operan sobre infraestructura de pagos.
Las protecciones a nivel de prompt son solo recomendaciones. SENTINEL las hace obligatorias moviendo la aplicación al límite de la llamada a herramientas — un proceso que el modelo no controla — y luego lo demuestra con un arnés de evaluación determinista y un conjunto de pruebas de equipo rojo adversario.
⚠️ Solo modo de prueba · No afiliado a Razorpay
Proyecto independiente de código abierto. No está afiliado, respaldado ni producido
por Razorpay. Se integra con el servidor MCP de código abierto publicado
razorpay/razorpay-mcp-server.
Solo claves de modo de prueba (rzp_test_*) — una clave rzp_live_ se rechaza al inicio y
se bloquea del repositorio por CI. Todos los datos son sintéticos y con checksum inválido, por lo que
ningún valor generado puede coincidir con un identificador real. El equipo rojo se ejecuta
exclusivamente contra el servidor de fixtures local, nunca contra un endpoint alojado.
El problema, en tres frases
Un constructor sin código está a punto de permitir que no ingenieros apunten agentes LLM a APIs que mueven dinero, y esos agentes ingieren texto controlado por el atacante por diseño — tickets de soporte, evidencia de contracargos, extractos bancarios subidos. La protección estándar de la industria es una frase en el prompt del sistema, que es una petición al modelo: no se puede probar unitariamente, no produce ningún artefacto cuando funciona o falla, y se degrada bajo entrada adversaria y actualizaciones del modelo. SENTINEL intercepta cada llamada a herramienta en el límite del protocolo, la clasifica, redacta PII, la evalúa contra una política declarativa, y permite / deniega / la escala a un humano — antes de que se ejecute.
Related MCP server: NORNR MCP Control
Los tres números principales
Producidos sin conexión por make redteam (A/B emparejado, calificación basada en reglas), reproducibles
por cualquiera sin clave API.
Cómo leer estos números (esto importa). El agente bajo prueba es un agente totalmente comprometido en el peor caso — un sustituto determinista escrito para seguir cada instrucción inyectada. Eso es deliberado: es metodología de seguridad estándar probar una defensa contra un adversario máximo, no uno promedio. Un modelo real podría resistir una inyección por suerte; este nunca lo hace. Entonces la columna "protecciones desactivadas" no es una afirmación de que un modelo real se deja engañar X% de las veces — es el peor caso, y el punto es lo que el proxy hace al respecto:
Contra un agente en el peor caso que sigue cada inyección | Resultado |
Protecciones desactivadas (sin plano de control) | 24 movimientos de dinero no autorizados + 5 exfiltraciones ejecutadas |
Protecciones activadas | 0 movimientos de dinero no autorizados, 0 exfiltraciones (24/29 intentos aún realizados — todos bloqueados en el límite) |
Tasa de falsos positivos de trabajo legítimo | 0% (sobre un conjunto benigno pequeño — ver Limitaciones) |
La aplicación no depende de que el modelo resista. Ese "0" es la parte independiente del modelo y genuinamente probada — el proxy deniega lo que el agente intente. (El envoltorio de cuarentena es una mitigación; la reducción de permisos en el límite es la garantía. No "resolvimos" la inyección de prompts — nadie lo ha hecho.)
Sobrecarga de las protecciones: la evaluación de políticas añade un tiempo medido de mucho menos de 0.1 ms por llamada con sin pérdida de precisión medible.
Diferenciación de capacidades del agente (aún no un hallazgo real de múltiples modelos)
El runtime es agnóstico al modelo por diseño, y el arnés se ejecuta contra dos agentes sustitutos deterministas de diferente calidad:
Un sustituto "fuerte" obtuvo 100% de éxito en tareas; uno "débil" obtuvo 87% con 13 llamadas a herramientas malformadas y menor precisión en casos difíciles — mientras que ambos tuvieron 0 ejecuciones no autorizadas, 0 fugas de PII, 0 errores de política. Esto demuestra que el arnés puede diferenciar la capacidad del agente mientras el resultado de la aplicación permanece invariante. No es una comparación Groq-vs-Gemini — eso requiere un pase de grabación único con claves reales de proveedor (
SENTINEL_CASSETTE=record), que está conectado y listo pero aún no se ha ejecutado.
Verificado contra el razorpay/mcp real (modo de prueba)
No solo un mock — SENTINEL se comprueba contra el servidor publicado genuino:
La paridad de la superficie de herramientas es real. El manifiesto de referencia se capturó en vivo al ejecutar
razorpay/mcp:latestsobre MCP stdio y llamar atools/list(41 herramientas); el fixture carga esa captura textualmente, por lo que la paridad es genuina, no circular. (Esto corrigió varios errores derivados de la documentación — verDECISIONS.mdADR-003a.)La aplicación se mantiene contra el servidor en vivo. Con claves de modo de prueba, un
create_refundse DENIEGA antes de que se reenvíe a Razorpay, y unfetch_all_paymentsreal devuelve la forma real{entity,count,items}a través del proxy con redacción + auditoría intactas.Reproducirlo:
export RAZORPAY_KEY_ID=rzp_test_… RAZORPAY_KEY_SECRET=… && make check-schemas-live(necesita Docker). Solo claves de modo de prueba; nada que mueva dinero se ejecuta; las claves nunca se escriben en un archivo.
Inicio rápido (sin credenciales requeridas)
Todo se ejecuta sin conexión en modo fixture con reproducción de cassette — sin clave API, sin red.
make install # venv + dependencies
make test # tiers 1-3 + the 5 load-bearing safety tests (~3s, no model)
make demo-cli # THE HEADLINE: an injected refund DENIED with a plain reason
make eval # golden set, per-model metrics, regression gates
make redteam # the paired A/B (100% -> 0%), ablation, false-positive rate
make verify-audit # walk the tamper-evident hash chain
make demo # the operator surface at http://localhost:8080Salida de make demo-cli (abreviada):
2 · Prompt injection in the statement — the refund is DENIED
the fooled model attempted: create_refund amount=₹450.00
✕ DENIED [DENY_FAIL_CLOSED]
Blocked: no rule permits create_refund for this agent, and the default is to deny.
refunds actually executed in the fixture: 0
4 · The audit chain — verifiable, and it breaks when tampered
⛓ verified — 7 entries, chain intact
after altering entry #2: ⛓ CHAIN BROKEN at entry #2 — refusing to certifyDesplegar una demo pública (modo fixture, sin credenciales)
La superficie del operador + la API se envían como una imagen Docker de múltiples etapas (verificado: se
compila y sirve la SPA, la API y los números del equipo rojo). Alójala gratis en
Render / Fly / Railway o cualquier host Docker — pasos completos en
DEPLOY.md:
docker build -t sentinel . && docker run -p 8080:8080 sentinel # -> http://localhost:8080
# Render: New > Blueprint (reads render.yaml). Fly: fly launch --no-deploy && fly deploy.No establezcas ninguna clave real en la demo pública — está pensada para ejecutarse sin protección de datos reales (no hay ninguno en el repositorio).
Arquitectura — aplicación en un proceso que el modelo no controla
Operator surface (React) ──REST+SSE──> Control-plane API (FastAPI)
│
Agent runtime (in-house loop)
├─ in-loop guard (layer 2, the experience)
└─ provider abstraction (Groq/Gemini, cassettes)
│ MCP protocol
SENTINEL MCP proxy (layer 1 — THE GUARANTEE)
classify → redact → evaluate → allow/deny/escalate
→ idempotency → forward → scan/quarantine → audit
│
fixture upstream (default) | razorpay/mcp (live, test keys)
cross-cutting: pure policy engine · redaction · hash-chained audit · approvals
offline: eval harness (golden set) · red-team A/B → CI regression gatesEl proxy MCP es un servidor MCP real, por lo que un cliente MCP completamente diferente
apuntado a él está sujeto a la misma política — una propiedad que un prompt nunca puede tener.
Ambas capas de aplicación llaman al mismo motor de políticas puro a través del mismo constructor
de contexto; un desacuerdo es un incidente P0 registrado. Recorrido completo y cada
decisión: docs/handbook.html y la lectura a continuación.
Cómo se mantiene incluso cuando el modelo se equivoca
Motor de políticas puro —
evaluate(policy_set, context), sin E/S, exhaustivamente probado y probado por propiedades. Un invariante de piso de clase hace imposible que cualquier archivo de política, sin importar cómo esté escrito, permita automáticamente el movimiento de dinero sin aprobación (probado sobre 400 políticas generadas).Redacción — el modelo razona sobre tokens estables (
ACCT_a17f), nunca PANs/cuentas/VPAs reales; un token no emitido en una llamada a herramienta es un intento de exfiltración marcado. El invariante de PII se prueba en cada superficie de salida en cada commit.Cuarentena de confianza — el texto no confiable se envuelve en un delimitador de nonce por ejecución;
provenance_guardreduce los permisos del agente una vez que ingiere contenido no confiable.Auditoría a prueba de manipulaciones — una cadena de hash SHA-256 de solo añadir; el verificador informa la primera ruptura en la posición exacta.
Lo que esto no es
No es un clon de Agent Studio, no es un producto de pagos, no es un firewall de IA de propósito general, no es un modelo de fraude, y no está afiliado a Razorpay.
Limitaciones (las honestas — lista completa en LIMITATIONS.md)
El libro de auditoría es a prueba de manipulaciones, no a prueba de manipulaciones absoluta: cualquiera que pueda escribir en la base de datos puede recalcular toda la cadena. La resistencia real necesita un ancla externa (un registro de transparencia estilo RFC 6962) o almacenamiento de una sola escritura — no implementado.
La inyección de prompts no está resuelta. L1 (comportamiento alterado) es distinto de cero incluso con protecciones activadas; el diseño lo hace inofensivo en lugar de pretender que es imposible.
Los "modelos" sin conexión son sustitutos deterministas — los adaptadores reales de Groq/Gemini y la capa de cassette están construidos y se activan cuando hay una clave presente (
SENTINEL_CASSETTE=record); el resultado de la aplicación es demostrable sin conexión de todos modos.Las respuestas de
tools/calldel agente sobre datos reales se validan solo por forma/aplicación (la cuenta de prueba está vacía); la redacción de PII genuina se demuestra en fixtures sintéticos, aún no en datos en vivo poblados.
Documentación
docs/handbook.html— el manual de extremo a extremo (abrir en un navegador).DECISIONS.md— cada decisión arquitectónica, con su compensación nombrada.LIMITATIONS.md— lo que esto no hace, sin titubeos.docs/spec/— el paquete de especificaciones del que se construyó esto.
Reproducir los números
git clone <repo> && cd sentinel && make install
SENTINEL_CASSETTE=replay make eval # replays committed cassettes, no key -> same numbers
SENTINEL_CASSETTE=replay make redteamConstruido fase por fase según docs/spec/11-BUILD-ORDER.md;
169 pruebas en verde (niveles 1–3), con cinco pruebas de seguridad críticas marcadas
@pytest.mark.critical.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- FlicenseNot gradedqualityNot gradedmaintenanceA transparent proxy and execution firewall that intercepts and audits AI agent tool calls against configurable security policies before forwarding them to downstream MCP servers. It provides safe execution environments with features like data redaction, anti-loop protection, and unified alert dispatching.
- AlicenseNot gradedqualityDmaintenanceA governance and control layer for MCP tools that manages tool requests as intents through policy-based approval, queuing, or blocking. It enables secure human oversight and audit trails for consequential agent actions across platforms like Claude Desktop and Cursor.1MIT No Attribution
- AlicenseNot gradedqualityAmaintenanceA local-first control plane for AI agent tools, providing policy enforcement, spend caps, rate limiting, and audit trails for MCP servers.1Apache 2.0
- FlicenseNot gradedqualityBmaintenanceRuntime agent firewall for PII redaction, rate limits, and policy enforcement, enabling autonomous agent security via MCP integration.
Related MCP Connectors
See, price, and control every tool call your AI agents make: policy checks, cost, and audit tools.
Security firewall for AI agents — scans MCP calls for injection, secrets, and risks.
Runtime permission, approval, and audit layer for AI agent tool execution.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/codeit-ronit/SENTINEL'
If you have feedback or need assistance with the MCP directory API, please join our Discord server