required es un bloqueo. cada opcional es un default.Cuando marcás un parámetro como required, le decís al modelo: "sin esto, no llames el tool". El modelo respeta esa regla a rajatabla. Si no tiene el dato, va a preguntar al usuario, va a buscar en otra tool, o va a desistir. nunca va a inventar el campo (en general).
Eso suena bueno hasta que required cualquier cosa. Entonces:
Por eso required no es la opción "segura". es una decisión de producto.
Marcalo required solo si:
transfer_credits(from, to, amount). los tres son required. Sin amount, ¿qué transferimos?mark_item_low_stock sin reason deja un registro inútil para auditoría. Required de producto.Dejalo opcional cuando:
list_inventory_items() sin filtros devuelve todo. Eso es válido y útil.notes, tags, priority cuando hay un default razonable.| Lado | Costo |
|---|---|
| Required cuando podría ser opcional | El modelo pide datos extra al usuario. fricción. A veces no invoca por miedo a equivocarse. |
| Opcional cuando debería ser required | El modelo invoca con campos vacíos. el handler crashea o devuelve basura. peor que no invocar. |
Regla práctica: lo mínimo viable en required, lo demás opcional con default explícito. Si dudás, escribilo en la description: "Si no se especifica
category, devuelve todos los items activos." El modelo lee. y respeta.
A la derecha tenés seis parámetros de tools que ya viste. Arrastralos al slot correcto.