En esta sección
Guías / Mets y sus herramientas

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_* (source internal) son genéricas: operan sobre todas las colecciones del workspace, no sobre una sola. Si apagas mcp_meteor_list_items, se lo quitas al Met para todas las colecciones a la vez. Para cerrar una colección puntual, usa expose_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.