Pon el Guardian delante de el agente que ya tienes.
Si tu agente llama a herramientas, puede hacerlo a través de NrtVix. El agente propone una acción; el Guardian responde con una decisión; la pasarela de confianza ejecuta lo permitido.
NrtVix AI / Desarrolladores
Tres pasos para una llamada protegida.
- Paso 1
Registra un agente
Crea un agente en tu espacio y elige qué herramientas puede usar. El agente recibe una identidad, nunca un secreto utilizable.
- Paso 2
Llama a las herramientas a través del Guardian
Usa la caja de herramientas protegida en lugar de llamar a tus herramientas directamente. Cada llamada se valida y luego se propone al Guardian.
- Paso 3
Gestiona la decisión
Lee el estado: ejecutado, pendiente de aprobación o bloqueado. Di a tu usuario la verdad sobre lo que pasó.
- Después
Reanuda tras la aprobación
Cuando el propietario aprueba, reanuda la misma solicitud por su id. Se ejecuta una vez, en la pasarela.
from nrtvix import GuardedToolbox tools = GuardedToolbox(bridge) # your workspace + agent identity result = tools.call("refund_order", order="ORDER-1042", amount=180) if result.status == "executed": ... # done by the trusted gateway elif result.status == "awaiting_approval": ... # tell the customer it is with the owner else: ... # blocked or refused: do not retry
const res = await fetch(APP + "/api/m17/agents/" + agentId + "/chat/stream", { method: "POST", credentials: "include", headers: { "Content-Type": "application/json", "X-SaaS-CSRF": csrf }, body: JSON.stringify({ message: "Refund ORDER-1042 for $180" }), }); const reader = res.body.getReader(); // server-sent events over POST // event: delta -> text as the model writes it // event: tool -> one Guardian-checked tool result // event: done -> the final reply and all results
curl -X POST "$APP/api/m17/agents/$AGENT_ID/chat" \ -H "Content-Type: application/json" \ -H "X-SaaS-CSRF: $CSRF" -b cookies.txt \ -d '{"message": "Look up CUSTOMER-01"}' # {"reply": "...", "tool_results": [{"tool": "lookup_customer", # "status": "executed", "executed": true, ...}], "stopped": "completed"}
Vista previa. Todo lo que hay en esta página describe la versión actual. Los nombres y rutas pueden cambiar antes del lanzamiento, y la API alojada aún no está activa. La documentación se abre por completo con el acceso anticipado.
Una llamada. Un estado claro.
El mismo tipo de solicitud puede acabar de formas distintas. Tu agente lee el estado y le dice a su usuario la verdad sobre lo que pasó.
executed: the gateway ran the action onceawaiting_approval: the owner decides; resume the same request afterwardsblocked: policy does not allow it, so do not retryalready_executed: a repeated request is never run twice
executed
Revisión del Guardian
Requiere aprobación
Una superficie pequeña. Garantías sólidas.
Herramientas protegidas
Un catálogo fijo de herramientas con esquemas de argumentos estrictos. El agente no puede inventarse una herramienta.
Un único formato de decisión
Los mismos estados para cada herramienta, para que la lógica de tu agente siga siendo sencilla.
API de chat en tiempo real
Las respuestas llegan como eventos del servidor mientras el modelo escribe, con los resultados de herramientas intercalados.
Sin secretos en tu agente
Tu agente solo tiene una identidad. Las credenciales de las herramientas se quedan en la pasarela.
Una auditoría que puedes verificar
Un endpoint recalcula la cadena de hash de auditoría de tu espacio.
Laboratorio local
Todo se ejecuta en local con datos de ejemplo, para que pruebes con seguridad antes de pasar a producción.
Cuatro herramientas hoy. Más en camino.
| Herramienta | Argumentos | Qué hace | Qué revisa el Guardian |
|---|---|---|---|
lookup_customer | customer | Busca la ficha de un cliente por referencia | Solo lectura |
refund_order | order, amount | Reembolsa un pedido en dólares estadounidenses | Límites de importe, presupuesto, aprobación |
add_support_note | ticket, note | Añade una nota de hasta 500 caracteres a un ticket | Límite de longitud |
export_customer_manifest | export, rows | Prepara una exportación de clientes de 1 a 1.000 filas | Límites de filas, aprobación |
Lo que puede devolver una llamada a herramienta.
| Estado | Significado |
|---|---|
executed | La pasarela de confianza ejecutó la acción una vez. |
awaiting_approval | La solicitud está en la cola del propietario. Todavía no ha pasado nada. |
already_executed | Esta solicitud ya se completó antes; no se ejecuta dos veces. |
blocked | La política no lo permite. No lo reintentes. |
rejected | El propietario dijo que no. |
expired | La aprobación o el permiso caducó. |
invalid | Los argumentos no eran aceptables. |
duplicate_refused | La misma llamada ya se hizo en esta tarea. |
limit_reached | La tarea usó todas las llamadas a herramientas que tiene permitidas. |
El texto según se escribe. Los resultados según se deciden.
| Evento | Datos | Significado |
|---|---|---|
delta | {text} | El texto mientras el modelo lo escribe. |
turn | {} | Un nuevo turno del modelo empieza tras las llamadas a herramientas; el texto anterior era solo una vista previa. |
tool | {tool, status, executed, event_id, reason} | Un resultado de herramienta revisado por el Guardian. |
done | {reply, tool_results, pending_approvals, stopped} | La respuesta guardada y todos los resultados. |
error | {detail, status} | La ejecución no pudo terminar. |
Límites razonables, indicados de antemano.
| Límite | Valor |
|---|---|
| Longitud del mensaje | De 1 a 2.000 caracteres |
| Turnos del modelo por mensaje | Up to 6 |
| Llamadas a herramientas por mensaje | Hasta 4; los duplicados se rechazan |
| Memoria de conversación | Los últimos 8 turnos, cada uno con longitud limitada |
| Información del negocio | Hasta 6.000 caracteres por agente |
| Mensajes por agente al día | 50 por defecto; configurable |
| Tamaño de la respuesta en tiempo real | Limitado; si el flujo no sirve, se pide una vez más sin tiempo real |
Códigos de estado HTTP sencillos.
| Estado | Significado |
|---|---|
401 | Sesión no iniciada. |
403 | Falta el token CSRF o es incorrecto, o es una solicitud de otro sitio. |
404 | El agente no existe en tu espacio. |
409 | El agente está archivado. |
422 | El cuerpo de la solicitud no es válido. |
429 | Se alcanzó el límite diario de mensajes de este agente. |
503 | El modelo de IA no está configurado en el servidor. |
Previsto para desarrolladores.
Webhooks Previsto
Recibe un aviso cuando una solicitud se aprueba, se rechaza o caduca.
SDK de JavaScript Previsto
La caja de herramientas protegida para Node.js y el navegador.
Claves de API Previsto
Claves con alcance limitado para la API alojada, rotadas desde el panel.
API versionada Previsto
Rutas estables bajo un prefijo de versión en el lanzamiento.
¿Qué modelos y frameworks funcionan?
Cualquier modelo o framework que pueda llamar a una función. El agente alojado de la versión actual usa un modelo de lenguaje mediante la API de su proveedor; el SDK no depende de ningún modelo.
¿Puede mi agente aprobar sus propias solicitudes?
No. La aprobación es una acción aparte y autenticada del propietario, ligada a la solicitud exacta. Un agente solo puede pedir.
¿Qué pasa si mi agente reintenta una llamada bloqueada?
Se rechaza otra vez. Las llamadas idénticas repetidas dentro de una tarea se rechazan como duplicadas, y las acciones bloqueadas siguen bloqueadas.
¿Cuándo podré usar la API alojada?
Con el acceso anticipado, previsto para diciembre de 2026. Hasta entonces la API solo funciona en la versión local.
Deja que los agentes actúen. Mantén el control.
Abrimos NrtVix AI primero a un pequeño grupo de negocios. Cuéntanos sobre el tuyo y te contactaremos.