Rutinas y grupos
Lee qué rutinas puede aprenderse tu equipo de Mets, en qué grupos trabajan las personas con sus Mets, y de dónde nació cada tarea.
Tu equipo de Mets no solo responde: aprende rutinas. Una rutina es un proceso del negocio —crear y publicar en tus redes, anunciar lo que vendes, hacer seguimiento a tus clientes— que el equipo repite cada vez: tres pasos y, en cada paso, dos caminos para elegir. Esas rutinas corren en grupos, donde las personas del negocio y sus Mets conversan y trabajan juntos (en Met, «Conversaciones» → «Grupos»). Y cada vez que una rutina corre, deja una tarea.
Con la API lees las tres cosas. Empezar una rutina, elegir un camino, crear un grupo o sumar a alguien se hace en Met.
Antes de empezar
Tu key necesita routines:read para las rutinas y groups:read para los grupos. Las keys emitidas antes de que existieran no los traen: agrégalos en Ajustes › Desarrolladores o emite una nueva. Funcionan también con una key de test (met_test_), porque solo leen. El campo origin de las tareas no pide nada nuevo: va con tasks:read, como el resto de la tarea.
Las rutinas del negocio
import { Met } from '@meteor.ia/sdk';
const met = new Met(process.env.METEOR_API_KEY!);
const { data: rutinas } = await met.routines.list();
for (const r of rutinas) {
console.log(r.id, '—', r.name);
for (const paso of r.steps) {
console.log(` ${paso.number}. ${paso.title}:`, paso.paths.map((c) => `${c.title} (${c.done_by})`).join(' / '));
}
}
Cada rutina trae:
id,nameyachieves(qué logra, en una o dos frases).steps: los pasos, en orden, con la pregunta que le hace el Met a la persona en cada uno.pathsen cada paso: los caminos para elegir, condone_by—metlo hace un Met (met_namedice cuál),personlo hace la persona,automaticlo hace Meteor sin IA— .
Solo salen las rutinas disponibles en tu negocio. Algunas se abren de a poco: mientras una no esté disponible para ti, no aparece en la lista y met.routines.retrieve(id) responde 404.
Los ids son texto, no una lista cerrada. Hoy las rutinas abiertas son redes, anuncios y seguimiento (y hay otras en piloto), pero el producto suma rutinas y caminos cada semana. Trata un id que no conoces como uno más, no como un error.
Los grupos
for await (const g of met.groups.iterate()) {
const personas = g.members.people.map((p) => `${p.name} (${p.role})`);
const mets = g.members.mets.map((m) => (m.main ? `${m.name} ★` : m.name));
console.log(g.title, '·', g.purpose ?? 'sin propósito', '·', personas.join(', '), '·', mets.join(', '));
}
Cada grupo trae para qué es (purpose), la rutina que corre en él (routine, el id de una rutina, o null) y sus miembros, separados:
members.people: las personas, con surole—ownerlo creó,approveraprueba lo que los Mets del grupo dejan esperando,memberel resto—.members.mets: los Mets. El Met principal del negocio llega primero, conmain: true; un grupo solo de personas no lo trae.
Solo ves tus grupos. La lista trae los grupos de los que eres parte —o de los que es parte la persona que representa tu key—. Los de otras personas no se ven, tampoco con una key de administrador: es la misma regla de las conversaciones.
Una conversación de a dos no es un grupo. Si solo están dos personas, sin propósito ni rutina, la app la muestra como la conversación con esa persona, y aquí no aparece: ni en la lista ni en el detalle (404). Basta con darle un propósito, sumar a alguien más o a un Met para que sea un grupo.
La lista es siempre { data, has_more, next_cursor }, del grupo más nuevo al más viejo: pasa next_cursor en starting_after hasta que has_more sea false, o usa iterate().
De dónde nació una tarea
Cada tarea suma origin:
const tarea = await met.tasks.retrieve('b3e1c0d2-4f5a-4e6b-8c7d-9a0b1c2d3e4f');
if (tarea.origin?.type === 'routine') {
console.log('La dejó la rutina', tarea.origin.routine, 'en el grupo', tarea.origin.group_id);
}
origin.type | Qué quiere decir |
|---|---|
routine | La corrida de una rutina (o su programación semanal). routine dice cuál. |
group | La dejó un Met mientras trabajaba en un grupo. |
conversation | La dejó un Met en una conversación con Mets. |
group_id y conversation_id solo llegan si puedes ver ese grupo o esa conversación; si no, llegan null y el resto del origen se mantiene. origin: null quiere decir que la tarea no guarda de dónde nació: la creó una persona, la API o una automatización. Si en una respuesta no se pudo averiguar, el campo no viene. type también crece: trata un valor que no conoces como «otro origen».
Desde el conector MCP
El conector tiene met_list_routines, met_list_groups y met_get_group. Sus scopes no se piden solos al conectar Claude: una app que las quiera tiene que pedir routines:read y groups:read al registrarse.
Lo que no se puede (todavía)
- Empezar una rutina, elegir un camino o programarla.
- Crear un grupo, sumar o sacar a alguien.
- Leer los mensajes de un grupo.
Todo eso sigue en Met.