> ## Documentation Index
> Fetch the complete documentation index at: https://docs.zelto.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Monitores

> Comprobaciones continuas que evalúan cada llamada con tus criterios y muestran la evolución de los resultados.

Un **monitor** comprueba continuamente el comportamiento de los agentes.
Defines qué observar y las llamadas nuevas se evalúan con esos criterios.
El resultado es una tasa de llamadas afectadas que puedes seguir, filtrar y
usar para activar alertas.

Abre **Monitores** en la barra lateral. Cada monitor pertenece a la organización.
En **Se aplica a**, elige **Agentes** (la opción predeterminada) o **Empresas**
cuando la función Empresas esté habilitada.

## Monitorear empresas seleccionadas

Elige **Empresas**, busca las que necesitas y selecciona al menos una. La
selección usa la empresa atribuida a cada llamada. Incluye automáticamente las
llamadas de todos los agentes para esas empresas, también las de futuros agentes.
Se excluyen las llamadas sin empresa o atribuidas a una empresa no seleccionada.
Cambiar las empresas asignadas a un agente no modifica la cobertura histórica.

Puedes guardar un monitor para empresas que todavía no tengan agentes ni
llamadas. Mostrará **Todavía no hay llamadas coincidentes** hasta que lleguen
resultados coincidentes. Esto se aplica a todos los tipos de monitor, incluidos
los de audio.

Cambia la selección en la configuración del monitor. El historial, las tasas,
las exportaciones y las alertas usan la selección actual; los resultados
guardados se conservan. Los filtros de empresa de la barra lateral y los filtros
de metadatos reducen aún más esa selección. Las llamadas históricas solo se
evalúan si activas expresamente el análisis histórico. Un análisis en cola no
puede añadir empresas fuera de la selección que autorizaste.

Eliminar la última empresa seleccionada deja un monitor que no coincide con
ninguna llamada. Deshabilitar la función Empresas no elimina ni amplía los
alcances guardados. Las comparaciones de modelos de un alcance anterior se
marcan como desactualizadas; ejecuta una nueva comparación para evaluar la
selección actual.

## Componentes de un monitor

Un monitor es un **pipeline** de etapas que se ejecutan en orden:

| Etapa | Costo | Función |
| - | - | - |
| `filter_turns` | Gratis | Conserva llamadas cuyo número de turnos de un rol cumple un umbral. |
| `filter_chars` | Gratis | Aplica un umbral al número de caracteres. |
| `filter_regex` | Gratis | Conserva llamadas cuya transcripción coincide con un patrón. |
| `tool_check` | Gratis | Comprueba si una herramienta se ejecutó, tuvo éxito, falló, devolvió vacío o se ejecutó dos veces. |
| `code` | Gratis | Ejecuta un fragmento de TypeScript sobre la llamada y devuelve un valor tipado. |
| `ai_analyze` | Petición compartida según el contexto | Evalúa la llamada y devuelve un valor tipado. |
| `flow_check` | Petición compartida según el contexto | Recorre un flujo esperado y detecta dónde se abandona. |

Los filtros se ejecutan primero y detienen el pipeline cuando no se cumplen,
antes de incurrir en el costo de etapas posteriores. Coloca filtros gratuitos
antes de evaluaciones con modelos cuando puedan resolver la selección.

Cada `ai_analyze` devuelve un booleano, número, opción de una lista, texto,
lista de textos o JSON. Designa una etapa booleana, numérica, de flujo,
herramienta o código como **principal** para calcular la tasa de afectación.
Sin etapa principal, el monitor solo extrae valores y muestra volumen, no tasa.

En cada paso de IA, configura **Incluir prompt del agente** e **Incluir contexto
de la llamada (CRM)** por separado. Ambos empiezan desactivados en pasos nuevos;
los existentes conservan sus ajustes (los antiguos sin ajustes explícitos
incluyen el prompt y excluyen el CRM). Los pasos con los mismos ajustes comparten
una petición; los demás usan peticiones separadas, reflejadas en el costo estimado.
Las comprobaciones de flujo siempre incluyen el prompt y excluyen el CRM. Un paso
no recibe resultados de IA de otros grupos de contexto. Las pruebas con llamadas
reales incluyen los datos CRM disponibles solo en los pasos que los habilitan.

Un monitor compuesto únicamente por filtros es gratuito: superar los filtros
es la señal. También es gratuito uno compuesto solo por `tool_check` y `code`:
utiliza los [eventos de herramientas](/es/docs/conversations#invocaciones-de-herramientas)
y tu código, sin pedir una evaluación al modelo.

## Comprobaciones de herramientas

Usa una comprobación de herramientas para saber si el agente **hizo** algo,
como ejecutar `submit_order`, reservar o buscar un cliente, en vez de si dijo
que lo hizo. La etapa busca nombres en turnos `tool` sin distinguir mayúsculas
ni puntuación: `submit_order`, `submitOrder` y `submit-order` son equivalentes.

| Resultado | Significado |
| - | - |
| Herramienta correcta | Terminó con un resultado no vacío y sin error. |
| Herramienta no invocada | Hay otros eventos de herramientas, pero no el esperado. |
| Error de herramienta | La invocación correspondiente devolvió un error. |
| Resultado vacío o inválido | Terminó sin un resultado utilizable. |
| Ejecución duplicada | Se ejecutó más de una vez, con distintos `toolCallId` o apariciones separadas si no hay ID. |
| Afirmación sin ejecución correcta | El agente afirmó haber completado la acción, pero la herramienta no tuvo éxito. |
| Evidencia insuficiente | No hay metadatos de herramientas para verificar la ejecución. |

* **La confirmación verbal no demuestra éxito.** Una expresión regular opcional
  detecta afirmaciones en los turnos del agente. «Tu pedido está confirmado»
  sin un evento correcto de `submit_order` se marca como afirmación sin ejecución.
* **La ausencia de metadatos no es un aprobado.** Llamadas antiguas o proveedores
  sin esos eventos reciben evidencia insuficiente, sin puntuación principal;
  tampoco se consideran fallos demostrados.

La evidencia incluye nombre, ID, argumentos, resultado y estado de las
herramientas, junto con los turnos donde se detectó una afirmación.

## Etapas de código

Una etapa de código sirve para reglas deterministas que prefieres escribir.
El fragmento TypeScript, sin imports, se ejecuta una vez por llamada y devuelve
un valor. Es gratuito y funciona igual en pruebas, llamadas nuevas y análisis
histórico. Recibe un argumento `input`:

```ts theme={null}
input.transcript.turns   // [{ role, content, startSeconds?, endSeconds?, toolCall? }]
input.systemPrompt       // Prompt del agente, o null.
input.durationSeconds    // Duración derivada de los turnos, o null.
input.metadata           // Metadatos originales del proveedor, o null.
```

Devuelve un booleano, número u opción de una lista según el tipo declarado.
Un booleano o número puede ser la etapa principal y determinar la tasa o
puntuación media:

```ts theme={null}
// Marca llamadas en las que el usuario habló más de 20 veces.
const callerTurns = input.transcript.turns.filter((t) => t.role === "user");
return callerTurns.length > 20;
```

* **`exit(value)` detiene el pipeline.** `return` guarda el valor y continúa;
  `exit(value)` lo guarda y omite todas las etapas posteriores, incluido su
  costo de IA. Úsalo cuando una comprobación barata ya determine la respuesta.
* **Los resultados locales anteriores al primer paso de IA llegan a cada grupo.**
  Una etapa de código que devuelve un valor antes del primer paso de IA lo aporta
  como señal de referencia. Los resultados de código posteriores y los de IA de
  otros grupos no se añaden a esas señales compartidas.

El código se ejecuta aislado, con límites de memoria y tiempo, sin acceso a la
red, archivos ni datos fuera de `input`. Se detienen bucles infinitos y uso
excesivo de memoria. Los imports se rechazan y la sintaxis se comprueba al guardar.

## Crear un monitor

En **Monitores → Nuevo monitor**, busca o explora las plantillas. Todas las
organizaciones reciben el mismo catálogo. Cada plantilla muestra sus salidas
antes de elegirla; al seleccionarla puedes editar sus instrucciones.

Elige **Crear monitor personalizado** para comenzar con una descripción en
lenguaje natural. Indica qué observar y en qué agentes. El espacio de creación
muestra un asistente a la izquierda y el monitor a la derecha. El asistente
puede buscar llamadas reales, probar filtros y proponer un pipeline completo.
Sus propuestas se aplican al editor; también puedes editarlo manualmente y el
asistente continuará desde el contenido actual.

### Evaluaciones de audio

Las plantillas de **Evaluaciones de audio** puntúan la grabación, no la
transcripción: calidad del audio del usuario, latencia de respuesta y precisión
de pronunciación o idioma. Elige una, ajusta el umbral y los agentes y créala
como cualquier monitor.

### Pruébalo antes de guardar

**Probar** ejecuta los criterios en hasta 10 llamadas antes de crear el monitor.
Selecciona **Ejecutar prueba** para ver veredicto, valores por etapa y
razonamiento. Revisa falsos positivos con el asistente y vuelve a ejecutar;
el asistente puede consultar los últimos resultados.

* El selector solo ofrece llamadas **con transcripción**.
* Las pruebas usan modelos integrados. Si usas tu propia clave de OpenRouter,
  Vercel AI Gateway o TypeSafe, guarda primero para usarla en las llamadas posteriores.
* Probar y simular requiere ser **propietario o administrador**, por el gasto
  puntual de evaluar hasta diez llamadas por clic, con una petición por cada
  grupo de contexto alcanzado en cada llamada. Todos los miembros pueden crear
  monitores; los miembros sin esos permisos ven una explicación en el paso Probar.

### Simular una llamada

**Simular una llamada** genera una transcripción sintética a partir de una
situación breve y del prompt vigente del agente, por ejemplo un usuario
frustrado porque no encuentra su reserva. Se añade a las pruebas junto a las
llamadas reales. Sirve para casos raros o comportamientos que aún no ocurrieron.

Las simulaciones de prueba no se guardan como conversaciones ni aparecen en el
historial. Para escenarios reutilizables, aserciones y comparación entre prompts,
consulta [Simulaciones](/es/docs/simulations).

### Evaluar llamadas recientes

Por defecto, el monitor empieza vacío y solo evalúa llamadas posteriores a su
creación. **Evaluar también llamadas recientes** permite analizar hasta 10 días
anteriores. El control muestra el número de llamadas y el costo aproximado al
ajustar el periodo. Está desactivado hasta que lo habilites y solo lo ven
propietarios y administradores.

El análisis se ejecuta en segundo plano después de guardar, de las llamadas
más nuevas a las más antiguas, con un máximo de **5.000 llamadas**. Si el periodo
supera el límite, el control lo avisa y calcula el costo sobre el número limitado.

## Define tu orden de lectura

Arrastra un monitor por su control en las vistas Gráfico o Lista para establecer
tu orden. Se aplica en todos tus listados, incluido el panel **Monitores** de
una [conversación](/es/docs/conversations).

Con el teclado, enfoca el control con Tab, pulsa espacio para tomarlo, usa las
flechas y pulsa espacio para soltarlo. Escape cancela.

* **El orden es personal.** No cambia el de tus compañeros.
* **Los monitores nuevos se añaden al final.** **Restablecer orden** recupera
  el orden predeterminado.
* **Con filtros solo se mueven los visibles.** Los monitores ocultos mantienen
  sus posiciones.

## Interpretar un monitor

Usa **1d**, **7d**, **15d** o **30d** para un periodo móvil hasta hoy, o
**Personalizado** para un día UTC o fechas exactas; no se permiten fechas futuras.
El periodo filtra valores principales, Gráfico, Lista y Comparar y se guarda
en la URL. Las tarjetas y filas muestran el estado Activo/Pausado y la cobertura
evaluada de la versión actual. Las tendencias históricas usan todas las versiones
y el denominador indicado de llamadas con transcripción.

Abre **Monitores → Reportes** para consultar reportes guardados y descargar PDF.
Propietarios y administradores pueden seleccionar monitores y **Crear reporte**,
o usar **Agregar al reporte** desde un monitor. Los borradores conservan empresa,
metadatos y fechas; los filtros de agente/grupo no se guardan y se avisa antes de
guardar. Cada reporte admite hasta 20 monitores y 31 días calendario. Abre uno,
elige la semana anterior, la actual o fechas explícitas y usa **Descargar PDF**
en el encabezado. CSV/JSON, detalles de evaluación e historial se despliegan al
abrirlos. El envío semanal se habilita de forma explícita.

### Filtrar por metadatos de la llamada

La barra **Metadatos** filtra las **llamadas utilizadas para calcular las cifras**,
no los monitores que aparecen. Añade una clave como `campaign` o `model.provider`,
un operador y un valor. Se sugieren claves recientes. Los operadores son igual,
distinto, contiene, no contiene, mayor/menor que y sus formas inclusivas, está
definido, no está definido, verdadero y falso. Hasta ocho filas se combinan con
AND, igual que en [Conversaciones](/es/docs/conversations#filtros).

El filtro afecta tasas, recuentos y gráficos de la lista, columnas de **Comparar**,
tendencias y gráficos por etapa del **Resumen**, el embudo y las filas de
**Resultados**. Se guarda como `?meta=key:op:value`, se conserva al cambiar de
vista, periodo o pestaña y pasa de la lista al detalle y a Comparar. En Comparar,
la barra aparece al elegir dos o más columnas.

Al abrir un monitor desde el resumen o un reporte, la vista de lectura conserva
fechas y filtros y muestra cobertura y llamadas de la versión actual. Desde un
reporte también conserva su zona horaria. El enlace de regreso vuelve al mismo
periodo; **Abrir configuración del monitor** sale de ese alcance y abre el detalle:

* **Resumen:** tasa de afectación y gráficos de etapas compatibles.
* **Resultados:** llamadas evaluadas con veredictos y valores por etapa.
* **Benchmark:** compara los niveles Rápido, Equilibrado y Avanzado con una
  muestra automática de llamadas ya evaluadas.
* **Configuración:** pipeline, agentes y modelo. Editar aumenta la versión;
  los resultados históricos conservan la versión original y no se recalculan.
* **Alertas:** umbrales y destinatarios.

Propietarios y administradores pueden comparar hasta 1.000 llamadas con
transcripción evaluadas por la versión actual. Zelto equilibra casos afectados
y no afectados cuando el volumen lo permite y ejecuta lotes en segundo plano.
Cada nivel muestra precisión, contención, precio observado y proyección por
1.000 llamadas. La recomendación ordena por precisión, contención y costo.

El veredicto guardado es una etiqueta provisional. Al terminar, Benchmark muestra
solo desacuerdos entre ese veredicto y los modelos. Abre la transcripción y marca
el resultado correcto: la precisión se actualiza con esa corrección humana.
Las llamadas descartadas por filtros deterministas se excluyen de la contención
porque no llegaron a la IA. El benchmark no modifica el monitor ni sus resultados
de producción.

Los gráficos por etapa cubren 30 días. Booleanos y categorías muestran su
distribución; números, su media diaria; herramientas, la mezcla de resultados;
y flujos, su embudo y abandonos. Texto, listas y JSON permanecen en los resultados
individuales para conservar su significado.

**N/A** indica que el monitor asignado no evaluó esa llamada, normalmente porque
es anterior al monitor y no se analizó históricamente, o porque un filtro la descartó.

En **Resultados**, selecciona **Inspeccionar evaluación** para abrir el gráfico
que sigue la transcripción por cada etapa hasta el resultado. Selecciona un nodo
para ver evidencia: texto, coincidencia y turno en filtros regex; instrucciones,
entrada original, salida guardada, razonamiento y modelo en IA. Si el monitor se
editó después, se avisa de que el gráfico usa el pipeline actual mientras que
el veredicto mostrado es el resultado histórico guardado.

## Alertas

En **Alertas**, define si el valor debe estar por encima o por debajo de un
porcentaje, el periodo móvil y, opcionalmente, cuántos días consecutivos debe
mantenerse la infracción. Las notificaciones se envían a [Slack](/es/docs/integrations/slack),
a una lista de correos o a ambos. Se evalúan diariamente: espera la primera
notificación dentro de un día desde el inicio del incumplimiento, más los días
consecutivos que hayas exigido.

## De un hallazgo a un monitor

Un [hallazgo](/es/docs/findings) reúne evidencia de un problema; un monitor lo
comprueba continuamente. En las acciones del hallazgo, **Promover a monitor**
crea uno con sus llamadas existentes para comenzar la tendencia con ese historial.

## Mediante MCP y el agente

[MCP](/es/docs/mcp) expone `create_monitor` con criterios o un `starterKey` de
`list_starter_monitors`, `create_pipeline_monitor`, `list_monitors`,
`get_monitor_results`, `update_monitor`, `set_monitor_enabled`, `delete_monitor`,
`promote_finding_to_monitor` y `save_monitor_alert`.

`update_monitor` cambia nombre, pausa o etiquetas, sustituye los agentes
(`agentIds`; `[]` significa todos los agentes de la organización, incluidos
monitores de audio) o sustituye la selección de empresas (`companyIds`, al menos
una). `agentIds` y `companyIds` son mutuamente excluyentes; omitir ambos conserva
el alcance guardado. Las herramientas de creación también aceptan `companyIds`,
y `list_monitors` devuelve el alcance y las empresas seleccionadas. Editar el
alcance por empresas actualiza el historial visible sin eliminar resultados
guardados ni evaluar automáticamente llamadas antiguas. La herramienta también
modifica `sampleRate` entre 1 y 100. Para cambiar los criterios, edita el monitor
en la aplicación o elimínalo y crea otro.

Para cambiar el contexto de un paso de IA existente, consulta su ID con
`get_monitor` y pasa `stageContext: [{ stageId: "step-id", useAgentPrompt: false,
useCallContext: true }]` a `update_monitor`. Las opciones omitidas se conservan;
todos los cambios enviados se aplican de forma atómica. Cambiar el contexto
aumenta la versión para evaluaciones futuras, sin modificar resultados históricos.

## Relacionado

* [Agentes](/es/docs/agents): a quién se asigna un monitor.
* [Conversaciones](/es/docs/conversations): resultados por llamada.
* [Hallazgos](/es/docs/findings): problemas que puedes promover.
* [Simulaciones](/es/docs/simulations): escenarios sintéticos reutilizables.
* [Slack](/es/docs/integrations/slack): destino de alertas.

## Modelos TypeSafe con tu propia clave

Selecciona **TypeSafe (BYOK)** en la configuración del modelo del monitor, elige
`jev-latest` (o introduce un ID de modelo de TypeSafe) y proporciona tu clave API
de TypeSafe. Zelto cifra la clave por monitor. Dejar el campo vacío al editar
conserva la clave guardada solo si el proveedor no cambia. Al cambiar de
proveedor debes introducir una nueva clave.

TypeSafe admite estos resultados de verificaciones con IA:

* **Sí / no:** una probabilidad Noul de al menos el 50 % se convierte en `true`.
* **Categoría:** Choice devuelve una de tus opciones de categoría únicas.
* **Número:** introduce entre 2 y 10 niveles descriptivos, uno por línea, de
  menor a mayor. La puntuación fraccionaria se distribuye uniformemente entre
  el mínimo y el máximo (por defecto, 0–100). Una puntuación de 1,5 en tres
  niveles equivale a 7,5 en un rango de 0–10. Usa estas puntuaciones para
  evaluaciones, no para extraer números.

TypeSafe devuelve decisiones sin explicaciones escritas. No admite
verificaciones de flujo ni verificaciones con IA que devuelvan texto, listas o
JSON. Cambia esas verificaciones o elige otro proveedor antes de guardar.
Los filtros locales y las verificaciones de código y herramientas siguen
funcionando. Los resultados anteriores, los campos de referencia seleccionados
y el contexto de llamada habilitado siguen disponibles para la IA.

Las verificaciones con IA con los mismos ajustes de contexto comparten una solicitud a la API nativa
System One de TypeSafe. Los resultados conservan la versión real del modelo y
el uso de tokens informado. La estimación de costo BYOK es aproximada, no una
cotización de TypeSafe. Las pruebas de borradores y las comparaciones de modelos
usan los modelos integrados; guarda el monitor para usar tu clave de TypeSafe
en las llamadas entrantes.

Las solicitudes tienen un tiempo límite de 30 segundos y un reintento por
errores de red, límites de solicitudes o errores del servidor cuando el
intervalo de reintento es corto. Como con otros proveedores BYOK, un monitor
que falla se omite para esa llamada sin bloquear los demás monitores.
Las respuestas inválidas o incompletas se rechazan en lugar de convertirse en
un resultado negativo.

Consulta la [documentación de la API de TypeSafe](https://docs.typesafe.ai/api)
para conocer los modelos y las primitivas.
