Tool use, also called function calling, lets you hand the model a list of typed function definitions. The model never runs code. It returns a structured request that names one tool and its arguments. Your code runs it and passes the result back.
{ "type": "tool_use", "name": "get_order", "input": { "order_id": "A-1187" } }
It is the foundation because a raw model can only produce text from what it learned in training. Tools give it fresh reads of the world and real writes to it. Almost every other agent capability ships as just another tool: retrieval, memory, even calling another agent.
The tradeoff is that the model decides but your code executes. Tool selection is probabilistic, so validation, permissions and rate limits belong in your handler, never in the prompt.
This answer doesn't lend itself to a diagram - it reads best . No credits were charged.
Why there's no diagram: “”
The interactive diagram is below the answer - jump to diagram ↓ · Below it, the related concept . Jump to it ↓
The diagram below the answer is the concept . Jump to it ↓