Giving a model a set of described functions it may invoke — look up an order, create a ticket, check stock — so it returns a structured call your code executes instead of inventing an answer.
This is the line between a model that talks about your business and one that works in it. It also makes outputs machine-readable, which plain prose never reliably is.
We keep tool sets small and sharply described, validate every argument before execution, and make write actions idempotent — a retried call must not create the same order twice.