Skip to content
← Back to research
Engineering

Giving AI Hands: The Quiet Power of Tool Use

Mayur GajareResearcher at Vesper Labs11 min read

Ask an old chatbot to book a meeting and it would write you a lovely paragraph about how to book a meeting. Ask a modern agent, and it checks your calendar, finds a free slot, and sends the invite. The difference is not raw intelligence. It is hands. The model learned to use tools, and that single capability is what quietly turned conversational assistants into systems that get work done. This article explains what tool use is, how it works under the hood, where it shines, and how to grant those powers without getting burned.

What is tool use?

Tool use, often called function calling, is the ability of a language model to decide that it needs to do something beyond writing text, then call a piece of software to do it. The tool might be a web search, a database query, a calculator, an internal API, or a snippet of code. The model issues a structured request, the software runs, and the result comes back for the model to read and act on.

The important shift is that the model stops pretending to know everything and starts delegating. Instead of guessing today’s exchange rate, it calls a currency API. Instead of hallucinating your order status, it queries your order system. The answer is grounded in a real action rather than a confident recollection.

How function calling actually works

The mechanism is more mundane than the magic suggests, which is a good thing, because mundane is predictable. It runs as a short loop between the model and your code.

  • You describe the available tools to the model: each one’s name, what it does, and the inputs it expects.
  • The user asks for something, and the model decides whether a tool is needed to answer it.
  • If so, the model does not run the tool itself. It emits a structured request naming the tool and the arguments.
  • Your code receives that request, runs the real function, and hands the result back to the model.
  • The model reads the result and either answers, or decides it needs another tool call, and the loop repeats.

That last point is the key to agents. When a model can call a tool, read the outcome, and then call another, it can chain steps together to complete a task that no single call could. Check the calendar, find a slot, draft the invite, send it. The reasoning lives in the model; the doing lives in your software.

A model that can only answer gives advice. A model that can act gets work done.

From chatbot to agent

The word agent gets overused, but tool use is the honest line between a chatbot and an agent. A chatbot takes a turn: you speak, it speaks, done. An agent takes a goal and works toward it across many steps, calling tools, observing results, and adjusting until the goal is met or it gets stuck.

This is why the same underlying model can feel like a toy in one product and a tireless worker in another. The model is the same. What changed is whether it was given hands and a loop to use them in.

Where tool use earns its keep

Tool use is not decoration. It is what makes AI useful for real operational work rather than just conversation.

  • Live data: fetching current prices, inventory, order status, or weather instead of guessing.
  • System actions: creating tickets, updating records, scheduling events, or triggering workflows.
  • Precise computation: calling a calculator or code runner rather than doing arithmetic in its head, which models do badly.
  • Search and retrieval: querying a knowledge base or the web to ground an answer in sources.
  • Multi-step automation: stitching several systems together to complete a request end to end.

Why it needs discipline

The moment a model can act, its mistakes stop being merely wrong words and start being wrong actions. A hallucinated sentence is embarrassing. A hallucinated database deletion is an incident. Giving a model hands is powerful precisely because it is consequential, and that demands guardrails from the first line of code.

Principles for granting tools safely

  • Grant narrowly: give each agent the smallest set of tools and permissions it needs, nothing more.
  • Separate read from write: let the model read freely, but gate anything that changes the world.
  • Checkpoint the irreversible: sending, paying, deleting, and publishing deserve a human confirmation.
  • Validate inputs: never pass model-generated arguments straight into a system without checking them.
  • Log everything: record every tool call so you can audit what the agent did and why.

Think of it the way you would onboard a capable but brand-new employee. You trust them to look things up on day one. You do not hand them the authority to wire money until they have earned it and there is a second pair of eyes on the transfer.

Common pitfalls

  • Too many tools: flood the model with options and it picks the wrong one or freezes; a short, clear toolset works better.
  • Vague descriptions: if a tool’s purpose and inputs are poorly described, the model misuses it.
  • No failure handling: tools fail, time out, and return errors, and the agent needs a plan for when they do.
  • Unbounded loops: an agent that keeps calling tools without a stopping condition can spin forever and run up a bill.
  • Trusting output blindly: a tool can return bad data, and the model will happily build on it unless you validate.

Frequently asked questions

What is the difference between function calling and tool use?

They refer to the same idea, and the terms are used interchangeably. Function calling is the lower-level name for the model emitting a structured request to run a function. Tool use is the broader framing, where those functions are the tools an agent can reach for. One is the mechanism, the other is the concept.

Does the AI model run the tools itself?

No, and this trips people up. The model only decides which tool to call and with what arguments. Your own code executes the tool and returns the result. That separation is what keeps you in control: the model proposes, your software disposes, and you can validate or block anything before it runs.

How do I stop an agent from doing something dangerous?

Limit the tools it has, separate actions that only read from actions that change things, and require human confirmation for anything irreversible. Validate every argument the model produces before executing, and log all calls. Safety comes from the permissions and checkpoints you design, not from trusting the model to behave.

Do I need an agent framework to use tools?

Not necessarily. The core loop of describe tools, let the model request one, run it, feed back the result is simple enough to build directly, and doing so teaches you how it works. Frameworks help once you need many tools, complex orchestration, or built-in retries and logging, but they are a convenience, not a requirement.

Key takeaways

  • Tool use, or function calling, lets a model trigger real software instead of only producing text.
  • The model decides which tool to call; your code runs it and returns the result, keeping you in control.
  • Chaining tool calls in a loop is what turns a chatbot into an agent that completes multi-step tasks.
  • Actions carry real consequences, so grant tools narrowly and checkpoint anything irreversible.
  • Clear tool descriptions, input validation, and logging separate reliable agents from risky ones.

Tool use is what makes agents genuinely useful and genuinely consequential at the same time. The craft is in choosing which hands to give the model, describing them well, and knowing exactly when to hold them. If you are designing an agent that needs to act on your systems safely, that balance of capability and control is exactly the kind of applied work we do at Vesper Labs.

Share

Want to go deeper?

Talk to the team building this. We'd love to hear about the problems you're trying to solve.

Get in touch →

Comments