El primer tool fue facilito. un solo input, una sola salida. La realidad es más fea: la mayoría de las funciones útiles toman 2-5 parámetros, algunos con valores limitados (enum), otros con formatos específicos (fechas, IDs).
Tu trabajo acá es definir assign_shift: una operación que modifica el roster de turnos. Tres parámetros:
crewmate_alias. string. El alias del crewmate.shift_id. string. Formato específico: shift-YYYY-MM-DD-NN.role. string. Solo cinco valores válidos: lead, engineer, medic, comms, support.enumCuando un parámetro acepta solo un conjunto finito de valores, usá enum:
"role": {
"type": "string",
"enum": ["lead", "engineer", "medic", "comms", "support"],
"description": "Rol durante el turno."
}Con enum, el modelo no puede inventar valores que no existen ("captain", "doctor", "comms_lead"). El sistema rechaza valores fuera del enum y el modelo aprende rápido el set válido.
Cada parámetro tiene su propia description. Para tipos genéricos (string, number), la descripción es lo que le dice al modelo qué meter ahí. Ejemplo: shift_id es un string, pero el modelo no va a saber el formato a menos que lo digas.
Regla de oro: si pudieras pasar el parámetro mal (formato raro, valor inválido), agregá su description.
lookup_crewmate es read-only. assign_shift modifica estado. La descripción del tool tiene que dejar claro cuál es cuál. el modelo decide diferente para operaciones que cambian cosas.