Herramientas del Agente
En DYPAI, las tools son endpoints. Cualquier endpoint que ya tengas — una query SQL, un workflow que cobra una tarjeta, una función que envía un email — lo puedes activar como tool. El agente lee su descripción, decide cuándo llamarlo y recibe lo que el endpoint devuelva.
Esto significa que no escribes "tools del agente" aparte de tu app. El mismo endpoint list_products que tu frontend en React llama con useEndpoint() puede ser llamado por el agente dentro de una conversación.
Convertir un endpoint en tool
Abre el endpoint
Ve a la página de detalle del endpoint en el dashboard.
Activa el toggle Tool
En la cabecera, haz clic en el toggle Tool para activarlo. Aparecerá un badge junto al nombre del endpoint.
Escribe una descripción para la tool
Esto es lo que ve el agente. Hazla clara y específica — es cómo el agente decide cuándo llamar a la tool.
Bien: "Busca productos por nombre, categoría o rango de precio. Devuelve hasta 50 productos coincidentes con id, name, price y stock."
Mal: "Endpoint de productos"
Define el schema de entrada
Haz clic en Edit input schema y describe qué parámetros acepta la tool. Esto se convierte en el JSON Schema que el LLM usa para generar argumentos.
Engánchala al agente
Abre el endpoint del agente, busca el campo Tools y selecciona la tool. Guarda.
Hazlo pidiéndolo
El MCP permite a tu asistente IA hacer todo esto. Solo dile "Convierte list_products y create_order en tools y asígnalas a mi agente sales_assistant." El MCP cloud expone 41 tools para agentes — mira la referencia de MCP.
Definirlo vía YAML / MCP
Cuando tú (o tu asistente IA) defines un agente en YAML o a través del MCP, referencias las tools por su nombre de endpoint, no por UUID:
agent:
provider: DYPAI Managed
model: gpt-5-nano
tools: [list_tasks, create_task]
El codec mapea esos nombres a los tool_ids (UUIDs) subyacentes automáticamente, y los vuelve a mapear a nombres cuando lee el workflow. No escribas tool_ids a mano con nombres dentro — pon los nombres de endpoint bajo tools y deja que DYPAI resuelva los IDs.
Schemas de entrada
El schema de entrada le dice al LLM qué argumentos puede pasar. DYPAI usa JSON Schema estándar.
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Término de búsqueda para el nombre del producto"
},
"category": {
"type": "string",
"enum": ["electronics", "clothing", "books"],
"description": "Filtro opcional por categoría"
},
"max_price": {
"type": "number",
"description": "Precio máximo en EUR"
}
},
"required": ["query"]
}
Consejos para buenos schemas:
- Usa
descriptionen cada campo. El LLM los lee. - Usa
enumpara restringir opciones cuando hay una lista fija — el LLM no inventará valores. - Marca los campos obligatorios para que el LLM sepa qué debe proporcionar.
- Simple. Un schema con 20 campos opcionales suele indicar que la tool debería partirse en dos.
Cómo usa el agente una tool
Cuando el agente decide llamar a una tool:
- El LLM genera los argumentos que encajan con el schema de entrada.
- DYPAI invoca el endpoint tool dentro del mismo proyecto — con el contexto de usuario del agente (así
${current_user_id}y el auth funcionan como siempre). - El endpoint devuelve su respuesta normal.
- Esa respuesta se devuelve al LLM como resultado de tool.
- El agente decide si llamar a otra tool o producir la respuesta final.
Todo esto ocurre dentro de una sola ejecución. Tu frontend ve una única respuesta en streaming, no cinco peticiones separadas.
Guardrails
Los agentes pueden causar mucho daño si entran en bucle infinito o llaman a tools sin límite. DYPAI incluye varios guardrails, configurables por agente:
| Parameter | Type | Description |
|---|---|---|
max_iterations | número (defecto 5) | Cuántas rondas de tool-call puede ejecutar el agente antes de rendirse y devolver lo que tenga. Evita bucles infinitos. |
tool_timeout | segundos (defecto 30) | Timeout por tool. Si una tool tarda más, se aborta y el agente recibe un error del que puede recuperarse. |
Límite de profundidad | automático | Una tool que es agente no puede ser llamada por otro agente a más de 3 niveles. Evita que cadenas recursivas de tools se disparen. |
Tracking del stack de workflows | automático | Si una tool ya está en el stack de ejecución, no puede volver a llamarse en la misma request. Evita bucles A → B → A. |
Auth dentro de las tools
Las tools heredan el contexto de quien llama. Si un usuario con auth JWT habla con tu agente:
- Cualquier tool que el agente llame corre como ese usuario
${current_user_id}en SQL resuelve al ID del usuario- Se aplican normalmente las reglas de row-level security y los checks de rol
- Un usuario solo puede actuar sobre sus propios datos a través del agente
Esto significa que no necesitas "versiones para agente" separadas de tus endpoints. El endpoint que ya escribiste para GET /my-orders con auth JWT simplemente funciona.
¿Qué endpoints son buenas tools?
Bien
Endpoints de consulta que devuelven datos estructurados (list, search, get). Mutaciones simples (create, update) con inputs claros. Acciones idempotentes que el agente puede reintentar sin riesgo.
Evita
Endpoints con efectos secundarios complejos (enviar emails, cobrar tarjetas) salvo que realmente quieras que el agente lo haga autónomamente. Endpoints sin schemas claros de input/output.
Las tools destructivas requieren confirmación
Para tools que hacen cosas destructivas — borrar, enviar pagos, enviar mensajes — diséñalas para que requieran campos de confirmación explícitos (confirm: true) para que el agente no pueda ejecutarlas por accidente. O directamente no las pongas en agentes y deja que el usuario las dispare.
Límites
| Tools por agente | Sin límite estricto, pero >10 empieza a afectar la precisión del modelo |
| Longitud de descripción | 1024 caracteres |
| Timeout de tool | 1–120 segundos |
| Iteraciones máximas | 1–20 |
| Profundidad recursiva | 3 niveles |