{"course":{"slug":"choosing-your-tools","title":"Choosing and Using the Tools","url":"https://addaly.com/learn/choosing-your-tools","level":"beginner","track":"work"},"lesson":{"slug":"what-tool-use-means","title":"What 'it can browse the web' actually means","url":"https://addaly.com/learn/choosing-your-tools/what-tool-use-means","position":7,"of":76,"minutes":9,"answer":"Tool use is one loop (the model chooses to call a tool, the result is pasted into its context as text.","keyIdea":"Tool use is one loop (the model chooses to call a tool, the result is pasted into its context as text, and it continues) so most tool-assisted errors are bad tool output rather than bad reasoning."},"body":{"format":"markdown","text":"## The loop underneath the feature list\n\nWhen a product says the assistant can search the web, run code, read your files or send an email, one mechanism is doing all of it. The product describes a set of tools to the model: name, purpose, what arguments each takes. The model, instead of answering, can emit a request to call one. The product runs it, puts the result back into the conversation, and asks the model to continue. Round and round until the model produces a final answer.\n\nThree things follow, and they explain nearly every disappointment people have with these features.\n\n**The model decides whether to call the tool.** It is not a rule; it is a judgement made from the tool description. This is why a model sometimes answers a current-events question from memory when search was available, and gets it wrong. It did not fail to search. It decided not to.\n\n**Whatever the tool returns goes straight into the context as text.** If the search returns three pages of search-engine slop, the model is now reasoning over three pages of slop. Garbage in the tool result is garbage in the answer, and the model has no independent way to know it.\n\n**Each round trip costs tokens and time.** A five-step tool sequence is five model calls with a growing conversation each time. This is why agent-ish features feel slow and why they cost more than they look.\n\n## The four tools you will actually meet\n\n**Web search.** The product runs a query on a search engine, pulls the top few results, and feeds in extracts. Quality is bounded by the search engine, not the model. Ask about something where the top results are marketing pages and you will get marketing.\n\n**Code execution.** A sandbox (usually Python) where the model writes and runs code and reads the output. Excellent for arithmetic, data files, charts and format conversion, because the answer is computed rather than recalled. Two limits catch people: the sandbox usually has **no internet access**, so it cannot install a library or fetch a URL, and it is **wiped** between sessions, sometimes between messages.\n\n**File retrieval.** Your uploaded documents are chunked, indexed and searched for each question. This is the mechanism behind the long-document behaviour from two lessons ago.\n\n**Connectors.** Access to your mail, calendar, drive, repository, ticket system. This is where tool use stops being convenient and becomes a decision about permissions, because a connector granted read access to your whole drive has read access to your whole drive.\n\n## Checking what actually happened\n\nGood products show their working. Before you trust an answer that involved a tool, look for:\n\n- **A list of tool calls** you can expand. If you can see the query it searched and the pages it opened, you can judge the sources yourself.\n- **Citations that link to real pages.** Click one. Models can produce a citation that looks right and points nowhere, and a product that formats citations without verifying them will pass that straight through.\n- **The code, not just the chart.** If it computed something, read the four lines. This is where wrong column names and silently dropped rows show up.\n\nIf a product gives you none of these, you are being asked to trust the tool layer on faith, and the tool layer is the part most likely to have failed.\n\n## Free paths\n\nYou do not need a paid tier to have tool use. Open front-ends like **Open WebUI** and **LibreChat** support web search and code execution against whatever model you point them at, including a local one. **Jupyter** with a free API key gives you the code-execution pattern with far better visibility, because you can see and edit every line. For search specifically, **SearxNG** is a free, self-hostable search backend that several of these front-ends accept.\n\n## The judgement to make\n\nTool access changes what a tool is for more than model quality does. A middling model that can read your actual files and run actual code is more useful for real work than an excellent model answering from memory, because most work questions are about your material rather than about the world.\n\nBut every tool you switch on is a new way to be wrong, and each one fails quietly. Search returns a wrong page and the answer is fluent. Code drops a row and the chart is beautiful. The connector reads a stale copy and the summary is confident. When an answer that used tools is wrong, check the tool output first and the model second. That order is right far more often than it feels."},"check":{"question":"An assistant with code execution is asked to install a charting library and fetch live prices from a URL, and reports that it cannot. Why?","options":[{"text":"The model lacks permission to write files, so any installation step fails before it starts.","correct":false,"tempting":"Blames a file-permission model that is not the operative constraint; sandboxes generally allow writing to their own temporary storage."},{"text":"The code sandbox is normally isolated from the network, so it can neither download a package nor reach an external URL.","correct":true},{"text":"Code execution only supports a fixed list of approved operations chosen by the provider.","correct":false,"tempting":"Imagines an allowlist of operations; the sandbox runs arbitrary code, which is exactly why it is isolated from the network."},{"text":"The request needed the web-search tool instead, and the model called the code tool by mistake when search would have supplied both.","correct":false,"tempting":"Confuses two tools: search returns page extracts as text and cannot supply a library to the sandbox or hand it live data to compute over."}]},"prev":{"slug":"the-invisible-system-prompt","title":"The instructions you never see","url":"https://addaly.com/learn/choosing-your-tools/the-invisible-system-prompt"},"next":{"slug":"multimodal-in-practice","title":"'It understands images': what that buys","url":"https://addaly.com/learn/choosing-your-tools/multimodal-in-practice"},"authorship":"Founder and series editor: Dr Mustafa Mun. Written by AI models to a written standard. Exam keys checked blind by a second model: 3,665 of 3,666 agreed. Academic review invited.","review":{"status":"Draft, open for academic review"},"cite":"Addaly (2026) 'What 'it can browse the web' actually means', in Choosing and Using the Tools. Edited by M. Mun. Addaly. Available at: https://addaly.com/learn/choosing-your-tools/what-tool-use-means (Accessed: 13 October 2026).","licence":{"name":"CC BY-NC-SA 4.0","url":"https://creativecommons.org/licenses/by-nc-sa/4.0/"},"reader":{"schema":1,"title":"What ‘it can browse the web’ actually means","courseTitle":"Choosing and Using the Tools","module":{"index":1,"slug":"anatomy-of-a-tool","title":"What a tool is made of"},"answer":null,"keyIdea":"Tool use is one loop (the model chooses to call a tool, the result is pasted into its context as text, and it continues) so most tool-assisted errors are bad tool output rather than bad reasoning.","hero":{"kind":"plate","image":null,"alt":null,"caption":null},"blocks":[{"t":"h2","id":"the-loop-underneath-the-feature-list","runs":[{"text":"The loop underneath the feature list"}]},{"t":"p","runs":[{"text":"When a product says the assistant can search the web, run code, read your files or send an email, one mechanism is doing all of it. The product describes a set of tools to the model: name, purpose, what arguments each takes. The model, instead of answering, can emit a request to call one. The product runs it, puts the result back into the conversation, and asks the model to continue. Round and round until the model produces a final answer."}]},{"t":"p","runs":[{"text":"Three things follow, and they explain nearly every disappointment people have with these features."}]},{"t":"p","runs":[{"text":"The model decides whether to call the tool.","b":true},{"text":" It is not a rule; it is a judgement made from the tool description. This is why a model sometimes answers a current-events question from memory when search was available, and gets it wrong. It did not fail to search. It decided not to."}]},{"t":"p","runs":[{"text":"Whatever the tool returns goes straight into the context as text.","b":true},{"text":" If the search returns three pages of search-engine slop, the model is now reasoning over three pages of slop. Garbage in the tool result is garbage in the answer, and the model has no independent way to know it."}]},{"t":"p","runs":[{"text":"Each round trip costs tokens and time.","b":true},{"text":" A five-step tool sequence is five model calls with a growing conversation each time. This is why agent-ish features feel slow and why they cost more than they look."}]},{"t":"h2","id":"the-four-tools-you-will-actually-meet","runs":[{"text":"The four tools you will actually meet"}]},{"t":"p","runs":[{"text":"Web search.","b":true},{"text":" The product runs a query on a search engine, pulls the top few results, and feeds in extracts. Quality is bounded by the search engine, not the model. Ask about something where the top results are marketing pages and you will get marketing."}]},{"t":"p","runs":[{"text":"Code execution.","b":true},{"text":" A sandbox (usually Python) where the model writes and runs code and reads the output. Excellent for arithmetic, data files, charts and format conversion, because the answer is computed rather than recalled. Two limits catch people: the sandbox usually has "},{"text":"no internet access","b":true},{"text":", so it cannot install a library or fetch a URL, and it is "},{"text":"wiped","b":true},{"text":" between sessions, sometimes between messages."}]},{"t":"p","runs":[{"text":"File retrieval.","b":true},{"text":" Your uploaded documents are chunked, indexed and searched for each question. This is the mechanism behind the long-document behaviour from two lessons ago."}]},{"t":"p","runs":[{"text":"Connectors.","b":true},{"text":" Access to your mail, calendar, drive, repository, ticket system. This is where tool use stops being convenient and becomes a decision about permissions, because a connector granted read access to your whole drive has read access to your whole drive."}]},{"t":"h2","id":"checking-what-actually-happened","runs":[{"text":"Checking what actually happened"}]},{"t":"p","runs":[{"text":"Good products show their working. Before you trust an answer that involved a tool, look for:"}]},{"t":"ul","items":[[{"text":"A list of tool calls","b":true},{"text":" you can expand. If you can see the query it searched and the pages it opened, you can judge the sources yourself."}],[{"text":"Citations that link to real pages.","b":true},{"text":" Click one. Models can produce a citation that looks right and points nowhere, and a product that formats citations without verifying them will pass that straight through."}],[{"text":"The code, not just the chart.","b":true},{"text":" If it computed something, read the four lines. This is where wrong column names and silently dropped rows show up."}]]},{"t":"p","runs":[{"text":"If a product gives you none of these, you are being asked to trust the tool layer on faith, and the tool layer is the part most likely to have failed."}]},{"t":"h2","id":"free-paths","runs":[{"text":"Free paths"}]},{"t":"p","runs":[{"text":"You do not need a paid tier to have tool use. Open front-ends like "},{"text":"Open WebUI","b":true},{"text":" and "},{"text":"LibreChat","b":true},{"text":" support web search and code execution against whatever model you point them at, including a local one. "},{"text":"Jupyter","b":true},{"text":" with a free API key gives you the code-execution pattern with far better visibility, because you can see and edit every line. For search specifically, "},{"text":"SearxNG","b":true},{"text":" is a free, self-hostable search backend that several of these front-ends accept."}]},{"t":"h2","id":"the-judgement-to-make","runs":[{"text":"The judgement to make"}]},{"t":"p","runs":[{"text":"Tool access changes what a tool is for more than model quality does. A middling model that can read your actual files and run actual code is more useful for real work than an excellent model answering from memory, because most work questions are about your material rather than about the world."}]},{"t":"p","runs":[{"text":"But every tool you switch on is a new way to be wrong, and each one fails quietly. Search returns a wrong page and the answer is fluent. Code drops a row and the chart is beautiful. The connector reads a stale copy and the summary is confident. When an answer that used tools is wrong, check the tool output first and the model second. That order is right far more often than it feels."}]}],"check":{"question":[{"text":"An assistant with code execution is asked to install a charting library and fetch live prices from a URL, and reports that it cannot. Why?"}],"options":[{"text":[{"text":"The model lacks permission to write files, so any installation step fails before it starts."}],"correct":false,"tempting":[{"text":"Blames a file-permission model that is not the operative constraint; sandboxes generally allow writing to their own temporary storage."}]},{"text":[{"text":"The code sandbox is normally isolated from the network, so it can neither download a package nor reach an external URL."}],"correct":true,"tempting":null},{"text":[{"text":"Code execution only supports a fixed list of approved operations chosen by the provider."}],"correct":false,"tempting":[{"text":"Imagines an allowlist of operations; the sandbox runs arbitrary code, which is exactly why it is isolated from the network."}]},{"text":[{"text":"The request needed the web-search tool instead, and the model called the code tool by mistake when search would have supplied both."}],"correct":false,"tempting":[{"text":"Confuses two tools: search returns page extracts as text and cannot supply a library to the sandbox or hand it live data to compute over."}]}],"order":[3,2,1,0],"why":null},"prev":{"slug":"the-invisible-system-prompt","title":"The instructions you never see","minutes":8},"next":{"slug":"multimodal-in-practice","title":"‘It understands images’: what that buys","minutes":8}}}