Es tentador resolver cada "lógica" con una tool. Te queda un sistema "modular", "auditable", "testable". Pero cada tool extra:
Y muchas veces, la "lógica" que estás encapsulando es algo que el LLM hace gratis y mejor.
Hacé esta pregunta antes de crear cualquier tool:
¿La operación necesita acceso a datos, sistemas o garantías que el modelo no tiene?
| Necesita | Tool sí | Tool no |
|---|---|---|
| Leer/escribir tu DB | ✓ | |
| Llamar a una API externa | ✓ | |
| Side effects (mails, pagos, notifs) | ✓ | |
| Determinismo absoluto (cálculo financiero) | ✓ | |
| Datos en tiempo real (precios, stocks) | ✓ | |
| Traducir / normalizar / reformular | ✓ (system prompt) | |
| Resumir contenido del contexto | ✓ (in-prompt) | |
| Decidir tono / estilo de respuesta | ✓ (system prompt) | |
| Hacer un cálculo simple con números visibles | ✓ (in-prompt) | |
| Clasificar texto en categorías conocidas | ✓ (in-prompt o output schema) |
En la nave había un MCP con 23 tools. Forge auditó y encontró que 8 de ellas eran "normalizadores": normalize_alias, format_date, parse_priority, expand_abbreviation. Todas se podían reemplazar por dos párrafos en el system prompt que dijeran las reglas de normalización.
Resultado de borrar las 8: el agente se aceleró 1.4x, el catálogo bajó a 15 tools, y la precision en la elección de las tools restantes subió (menos ruido, mejor decisión).
Antes de escribir una tool, preguntate: ¿esto necesita el mundo real, o solo necesita que el modelo piense un poco más en el prompt? Si es lo segundo, no es una tool.