Skip to main content
Glama
codeit-ronit

SENTINEL

by codeit-ronit

SENTINEL

ci  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:latest sobre MCP stdio y llamar a tools/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 — ver DECISIONS.md ADR-003a.)

  • La aplicación se mantiene contra el servidor en vivo. Con claves de modo de prueba, un create_refund se DENIEGA antes de que se reenvíe a Razorpay, y un fetch_all_payments real 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:8080

Salida 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 certify

Desplegar 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 gates

El 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 puroevaluate(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_guard reduce 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/call del 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 redteam

Construido 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.

A
license - permissive license
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

  • F
    license
    Not graded
    quality
    Not graded
    maintenance
    A 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.
  • A
    license
    Not graded
    quality
    D
    maintenance
    A 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.
    1
    MIT No Attribution
  • A
    license
    Not graded
    quality
    A
    maintenance
    A local-first control plane for AI agent tools, providing policy enforcement, spend caps, rate limiting, and audit trails for MCP servers.
    1
    Apache 2.0

View all related MCP servers

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.

View all MCP Connectors

Latest Blog Posts

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