How to Answer
“The description is a prompt, not documentation. The model reads it at selection time with nothing else around it, so it has to answer three questions: what does this do, when should I reach for it, and when should I not.
That last one does most of the work. ‘Use get_account for account metadata. Do NOT use this for billing — use get_invoice.’ A negative example prevents more mistakes than a positive one does.
On parameters: enums over free strings, always. If a status is one of four values, the schema says so and the model cannot invent a fifth. And required versus optional has to be honest — mark everything optional and the model omits the filters, and you get an unbounded query that times out.
Errors are part of the interface too. A tool that returns ‘Error: 400’ teaches the model nothing. One that returns ‘start_date must be before end_date; you sent 2026-08-01 and 2026-07-01’ gets a correct retry.”