<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Tool Calling on AIBussin — AI applications, systems and books</title><link>https://aibussin.com/tags/tool-calling/</link><description>Recent content in Tool Calling on AIBussin — AI applications, systems and books</description><generator>Hugo</generator><language>en-US</language><lastBuildDate>Sat, 08 Aug 2026 17:09:00 +0100</lastBuildDate><atom:link href="https://aibussin.com/tags/tool-calling/index.xml" rel="self" type="application/rss+xml"/><item><title>The Action Boundary</title><link>https://aibussin.com/books/agents-from-first-principles/02-chapter/</link><pubDate>Sat, 08 Aug 2026 15:46:00 +0100</pubDate><guid>https://aibussin.com/books/agents-from-first-principles/02-chapter/</guid><description>&lt;p&gt;The previous chapter ended with a division of responsibility:&lt;/p&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;&lt;strong&gt;The model proposes. The runtime decides what may execute. The environment supplies observations about what happened.&lt;/strong&gt;&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;p&gt;This chapter takes the first clause seriously. What does it actually mean for a model to &lt;strong&gt;propose an action&lt;/strong&gt;?&lt;/p&gt;&#10;&lt;p&gt;Suppose the model emits the sentence &lt;em&gt;&amp;ldquo;Search the documentation for the latest PyTorch optimizer API.&amp;rdquo;&lt;/em&gt; A human reads that and understands the intention immediately. A runtime cannot act on it at all, because it needs answers to six questions the sentence does not contain: which action, which arguments, whether those arguments are well formed, whether their values are meaningful, whether this action is permitted in this run, and whether its execution preconditions currently hold.&lt;/p&gt;</description></item><item><title>Capabilities and Routing</title><link>https://aibussin.com/books/agents-from-first-principles/07-chapter/</link><pubDate>Sat, 08 Aug 2026 17:09:00 +0100</pubDate><guid>https://aibussin.com/books/agents-from-first-principles/07-chapter/</guid><description>&lt;p&gt;Every mechanism built so far has taken the action set as given. The action boundary validates a proposal against a fixed list of permitted action types. Candidate generation samples several proposals from the same list. The runtime-state chapter watches what happens after execution and decides whether to continue. All of them assume that somebody, somewhere, already decided which capabilities the policy could choose from.&lt;/p&gt;&#10;&lt;p&gt;So far we have treated that decision as an input. This chapter makes it explicit, because the capability surface changes the decision problem the policy has to solve and therefore belongs inside the agent architecture itself.&lt;/p&gt;</description></item><item><title>Agents From First Principles 06: AI Agent Chooses the Wrong Tool? Design Better Tool Interfaces, Schemas and Routing</title><link>https://aibussin.com/post/agents-from-first-principles-06/</link><pubDate>Sat, 08 Aug 2026 17:09:00 +0100</pubDate><guid>https://aibussin.com/post/agents-from-first-principles-06/</guid><description>&lt;p&gt;An agent can have a perfectly capable model and still behave badly because its tools are badly designed.&lt;/p&gt;&#10;&lt;p&gt;This is one of the most common agent failures in production:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;user goal&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ↓&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;agent&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ↓&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;wrong tool&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ↓&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;wrong action&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The model may understand the task.&lt;/p&gt;&#10;&lt;p&gt;The agent may have enough context.&lt;/p&gt;&#10;&lt;p&gt;The problem is that the action space is ambiguous.&lt;/p&gt;&#10;&lt;p&gt;If two tools overlap, their descriptions are vague, their schemas are huge, or their results are difficult to interpret, the model has to guess.&lt;/p&gt;</description></item><item><title>AI Agent Returning Invalid Tool Calls? How to Validate LLM Actions</title><link>https://aibussin.com/post/agents-from-first-principles-01/</link><pubDate>Sat, 08 Aug 2026 15:46:00 +0100</pubDate><guid>https://aibussin.com/post/agents-from-first-principles-01/</guid><description>&lt;p&gt;If your agent sometimes invents a tool name, omits a required argument, returns malformed JSON, or produces an action that looks plausible but cannot actually be executed, the problem is usually not &amp;ldquo;the agent is dumb.&amp;rdquo;&lt;/p&gt;&#10;&lt;p&gt;The problem is that &lt;strong&gt;raw language-model output has been allowed to cross directly into execution&lt;/strong&gt;.&lt;/p&gt;&#10;&lt;p&gt;That boundary is too weak.&lt;/p&gt;&#10;&lt;p&gt;The simplest useful agent architecture is not:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;prompt&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ↓&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;model&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ↓&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;execute whatever came back&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;It is:&lt;/p&gt;</description></item></channel></rss>