Mets y sus herramientas
Crea y ajusta Mets, mira qué herramientas ve cada uno y controla a qué colecciones puede acceder.
Un Met es un agente de tu workspace: tiene una misión, instrucciones, Funciones IA, skills y acceso a los datos del workspace (colecciones y contactos). Con met.agents los creas y ajustas por código; con la introspección de tools sabes exactamente qué ve cada uno.
Crear y ajustar Mets
import Met from '@meteor.ia/sdk';
const met = new Met(process.env.MET_API_KEY!, { workspaceId: 40 });
const agente = await met.agents.create({
name: 'Valeria',
title: 'Asesora comercial',
mission: 'Calificar y responder leads entrantes',
instructions: 'Sé concisa. Confirma presupuesto antes de agendar.',
});
await met.agents.list(); // todos los Mets del workspace
await met.agents.retrieve(agente.id);
await met.agents.update(agente.id, { instructions: 'Nuevo guion.', active: true });
Los campos editables son name, title, mission, instructions y active. Para darle una skill del workspace: met.agents.linkSkill(agentId, skillId) (y unlinkSkill para quitarla).
Ver qué herramientas tiene un Met
Este es el diagnóstico #1 cuando una Función no aflora o cuando no sabes qué apagar:
const tools = await met.agents.tools(agente.id);
// [{ name, source: 'collection'|'skill'|'function'|'internal', description, disabled }]
Cada tool trae su source (de dónde viene) y disabled (si ya está apagada para este Met). Si tu Función no aparece con source: 'function', el problema está en la Función misma (sin handler, active: false), no en el Met. Los nombres que devuelve este método son los únicos válidos para disabled_tools.
Apagar herramientas por Met
await met.agents.update(agente.id, {
disabled_tools: ['mcp_meteor_list_items', 'mcp_meteor_get_item'],
});
Deshabilitar una tool no la desvincula: la deja fuera del set que el LLM puede llamar (se oculta del catálogo y se rechaza en runtime). Toma los nombres de agents.tools().
Las tools
mcp_meteor_*(sourceinternal) son genéricas: operan sobre todas las colecciones del workspace, no sobre una sola. Si apagasmcp_meteor_list_items, se lo quitas al Met para todas las colecciones a la vez. Para cerrar una colección puntual, usaexpose_to_agent(abajo).
Ocultar una colección al Met
Para que ninguna vía —API, chat o canal— exponga una colección al LLM, márcala como no visible, sin borrar datos:
await met.collections.update(collectionId, { expose_to_agent: false });
expose_to_agent viene en true por defecto. Ponla en false para datos internos que el Met no debe consultar, y vuelve a true para reexponerla. Más en Colecciones e items.
Qué Met responde un run se decide por ruteo determinístico (el bind
met), no por estas tools. Ver Ejecutar Mets.
Ejemplo: dejar un Met con solo su Función
const bot = await met.agents.create({ name: 'Cotizador', mission: 'Cotiza por API' });
// 1. Mira qué tiene disponible
const tools = await met.agents.tools(bot.id);
// 2. Apaga todo lo interno (colecciones genéricas) y deja pasar solo su Función
const internas = tools.filter((t) => t.source === 'internal').map((t) => t.name);
await met.agents.update(bot.id, { disabled_tools: internas });
// 3. Cierra además una colección sensible en todos los caminos
await met.collections.update(preciosInternosId, { expose_to_agent: false });
Así el Met queda acotado a su Función IA, sin acceso indiscriminado a las colecciones del workspace.