Letting a model act rather than only answer. Function calling and the contract a tool presents, the loop that reasons and acts in turn, what persists between steps, giving a subtask its own clean context, and the failure modes a loop introduces that a single call never had.
A car leasing company gives its assistant a tool named get_data, described in full as "Gets data", taking one string parameter called query. The assistant calls it at the wrong moments, and when it needs an account identifier it emits one that is correctly shaped and belongs to no account. Which rewrite addresses both faults?
AA description naming the question the tool answers, the limit on what comes back, what the tool cannot do and the tool that has to run first, together with a parameter description forbidding the model from constructing an identifier.
BA description written for the engineers who maintain the tool, since a precise account of the implementation is what removes the guessing.
CA second tool that validates an identifier before the first one runs, so a constructed identifier is caught by a call rather than by a description.
DA shorter tool set, since wrong calls come from the model choosing among too many tools rather than from what any one of them says.