Automatizaciones y skills por MCP
Dos áreas vecinas de la conexión. automations y workflows cubren el trabajo que se repite solo;
skills cubre un trabajo guardado, ejecutado una vez, cuando lo pides.
Instalado, pero apagado
Tu asistente puede instalar un temporizador — elegir la hora, pasar el cable, montar la tapa. Lo que no puede hacer es subir el interruptor. La automatización que diseña llega completa y completamente apagada. Empieza a correr el día que tú la enciendes, ni un día antes.
Esa es toda la historia de seguridad de esta área, y por eso crear una automatización desde una ventana de chat es algo razonable de permitir.
| Acción | Alcance | Qué hace |
|---|---|---|
automations.describe_schema | read | La forma que tiene una automatización válida — tipos de disparador, cómo se encadenan los pasos, los dos modos de ejecución. Se lee antes de redactar nada. |
automations.propose | create | Redacta la automatización y te entrega una página de revisión, para que veas el diseño antes de acercarte a él. |
automations.create | create | Redacta la automatización directo en tu cuenta como un borrador inactivo. |
workflows.trigger | write | Todavía no disponible. Reservado para disparar una automatización existente cuando lo pidas; hoy devuelve un mensaje claro de "no disponible". Mientras tanto, ejecuta la automatización desde Nirvai. |
skills.run | run | Ejecuta una skill guardada en la nube de Nirvai, direccionada por su slug. |
Qué redacta tu asistente en realidad
Una automatización es un diseño pequeño y explícito: un name, un trigger (manual, o cron con
horario y zona horaria), los agents que puede usar — agentes tuyos que ya existen, nombrados por su
propio id — y los steps, donde cada uno dice qué agente corre, qué se le pide, y hacia dónde sigue
el flujo si sale bien o si falla. Un execution_mode opcional elige entre el modo rápido por defecto
y el pensado para trabajos largos o pesados.
nirvai_execute(
alias = "automations.create",
args = { name: "Monday pipeline digest",
trigger: { type: "cron", cron: "0 9 * * 1", timezone: "America/Santiago" },
agents: ["sales-analyst"],
steps: [{ node_idx: 1, from_idx: 0, type: "agent", name: "Summarise",
agent: "sales-analyst",
input_prompt: "Summarise last week's closed and stalled deals." }] },
description = "Redactar un resumen de pipeline de los lunes para revisar"
)
Ambas acciones de creación devuelven un borrador, inactivo. No existe ninguna acción que pueda probar, activar ni programar uno — eso lo haces tú en Nirvai, donde además puedes verlo correr. Mira Probar y monitorear ejecuciones.
Dónde lo terminas tú
automations.propose te entrega un enlace a /external/automations/…, y esa página es a propósito
de solo lectura — una vista previa del disparador y los pasos, para que revises la lógica antes
de que exista. No tiene botón de Crear; la automatización la terminas dentro de Nirvai.
- Tienes que estar conectado, y solo tú puedes abrir la vista previa — no es un enlace que se comparta.
- Nada de lo que hace un asistente empieza a correr solo.
automations.createescribe un borrador inactivo; la activas tú en Nirvai. - Para cambiar el diseño, copia el bloque que te da la página y pégalo en tu chat — la vista previa no tiene forma de escribirle a tu asistente. Mira la referencia MCP.
skills.runno involucra ninguna página de revisión; ejecuta una skill que ya tienes y devuelve el resultado.
Skills: un procedimiento guardado, ejecutado en la nube
Una skill es código real que tus agentes ya tienen disponible. skills.run ejecuta exactamente
una de ellas — nombrada por su slug, nunca por su nombre visible — del lado de Nirvai, con una
carpeta de trabajo de verdad debajo. Los archivos que produce se sincronizan de vuelta a tu sesión,
así tu asistente los puede tomar en el paso siguiente.
nirvai_execute(
alias = "skills.run",
args = { skill: "bulk-enrich", module: "main", entry: "run",
args: { table_session: "8e0438a3-…" },
tool_ids: [1697], session: "q3-cleanup" },
description = "Enriquecer las cuentas nuevas del trimestre con el tamaño de empresa"
)
Es el extremo opuesto a un script de datos de una live app, y el contraste es deliberado:
| Script de datos de live app | skills.run | |
|---|---|---|
| Importaciones, archivos, red | Ninguna — datos puros que entran y salen | Un entorno completo, con carpeta de trabajo |
| Puede cambiar tus registros | Nunca | Sí, si las herramientas que recibe lo permiten |
| Qué corre | Código escrito para esa app, revisado línea por línea | Una skill conocida y guardada, traída por su slug |
| Sesión | Obligatoria | Obligatoria — es a quien pertenece la carpeta de trabajo |
Un script de live app está enjaulado a propósito porque es código recién escrito. Una skill no lo
está de la misma manera porque no es nueva — es el mismo procedimiento que tus agentes ya ejecutan, y
no hay forma de entregarle a skills.run código libre en su lugar.
Límites y garantías
- Solo borradores. Crear una automatización nunca la activa, la prueba ni la programa.
- Solo agentes existentes. Los pasos referencian agentes que ya tienes; uno desconocido se rechaza antes de escribir nada.
- Llamar dos veces crea dos. Crear una automatización no es idempotente — una llamada repetida es una segunda automatización, no una actualización.
- Corre en Nirvai. Las automatizaciones se ejecutan del lado de Nirvai y consumen créditos, sin importar quién las haya redactado.
- Solo skills conocidas.
skills.runrecibe un slug, un módulo y un punto de entrada — no un cuerpo de código. - Acotado por lo declarado. Una skill solo alcanza las herramientas y tablas nombradas en la llamada. Las credenciales se resuelven del lado de Nirvai y nunca pasan por tu asistente; los secretos se eliminan de todo lo que imprime.
- Resultados acotados. La salida vuelve como una vista previa con tope más un archivo descargable. Las ejecuciones largas vuelven como aún corriendo en vez de colgarse en silencio — las skills están pensadas para ser cortas.
- Llaves distintas. Redactar necesita
create, disparar una automatización existente necesitawrite, y ejecutar una skill necesitarun. Mira los alcances.