By default Claude decides for itself whether a question needs a tool. A request field called tool_choice lets you change that. It sits next to tools in the request, and it has four settings.
auto is right most of the time. Claude calls a tool when the question maps to one and the answer isn't already in the conversation, and answers directly for things it knows, creative tasks and small talk.
none is handy when you want a plain-text answer from a conversation that has tools in it, such as a final summary.
any and tool force a call. They come with catches. The API starts Claude's reply with the call for you, so Claude writes no explanation before it, and it skips thinking first. And the newest large models don't accept them at all: as of October 2026, Claude Opus 5.5, Sonnet 5.5 and Fable 5.1 reject a forced tool_choice with a 400 error. Claude Haiku 5.5 still accepts it.
The way that works on every model is to ask in words. Leave tool_choice on auto and say what you want, in the system prompt or the user message.
“Use the tools to investigate before responding” makes Claude reach for tools more often. “Always call a tool first before responding” pushes harder. “Use your judgment about whether to call a tool” keeps it cautious. For one question, be direct: “What's the weather in Oslo? Use the get_weather tool.”
Asking isn't a guarantee, so check. If the reply has no tool_use block when you needed one, handle it: show the text, or ask again. Your lesson 3 code already does this.