Saltar al contenido principal

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 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ónAlcanceQué hace
automations.describe_schemareadLa 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.proposecreateRedacta la automatización y te entrega una página de revisión, para que veas el diseño antes de acercarte a él.
automations.createcreateRedacta la automatización directo en tu cuenta como un borrador inactivo.
workflows.triggerwriteTodaví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.runrunEjecuta 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"
)
Nada empieza a correr porque un asistente lo haya creado

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.create escribe 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.run no 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 appskills.run
Importaciones, archivos, redNinguna — datos puros que entran y salenUn entorno completo, con carpeta de trabajo
Puede cambiar tus registrosNuncaSí, si las herramientas que recibe lo permiten
Qué correCódigo escrito para esa app, revisado línea por líneaUna skill conocida y guardada, traída por su slug
SesiónObligatoriaObligatoria — 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.run recibe 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 necesita write, y ejecutar una skill necesita run. Mira los alcances.

Siguiente paso