<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Tool-Use on René Zander | AI Automation Consultant</title><link>https://renezander.com/tags/tool-use/</link><description>Recent content in Tool-Use on René Zander | AI Automation Consultant</description><generator>Hugo</generator><language>en</language><lastBuildDate>Thu, 26 Mar 2026 07:00:00 +0100</lastBuildDate><atom:link href="https://renezander.com/tags/tool-use/index.xml" rel="self" type="application/rss+xml"/><item><title>Claude API Tool Use: Function Calling Guide for Production</title><link>https://renezander.com/guides/claude-api-tool-use/</link><pubDate>Thu, 26 Mar 2026 07:00:00 +0100</pubDate><guid>https://renezander.com/guides/claude-api-tool-use/</guid><description>&lt;p&gt;Tool use is the default pattern for any Claude workload beyond chat. If you are building anything that reads from a database, hits an API, writes a file, or decides between branches of logic, you should be using tools. If you are not, you are probably over-prompting and under-engineering.&lt;/p&gt;
&lt;p&gt;I run ten Claude-powered agents in production as bash scripts on a Debian VPS. Every one of them uses tool use, not prompt chaining, to decide what to do next. The model picks a tool, I execute it, I feed the result back, the model continues. That loop is boring, predictable, and debuggable. It beats &amp;ldquo;parse the JSON out of the model&amp;rsquo;s free-form answer&amp;rdquo; every time.&lt;/p&gt;</description></item><item><title>Claude API Structured Output: Three Patterns for Guaranteed JSON</title><link>https://renezander.com/blog/claude-api-structured-output/</link><pubDate>Wed, 25 Mar 2026 09:00:00 +0100</pubDate><guid>https://renezander.com/blog/claude-api-structured-output/</guid><description>&lt;p&gt;If you come from the OpenAI SDK, you are used to &lt;code&gt;response_format: { type: &amp;quot;json_object&amp;quot; }&lt;/code&gt; or strict JSON schema mode. You pass a schema, OpenAI enforces it at the decoder level, you get parseable JSON or an error. Simple.&lt;/p&gt;
&lt;p&gt;Claude does not have that. There is no &lt;code&gt;response_format&lt;/code&gt; flag, no strict schema decoder, no JSON mode toggle. If you ask Claude nicely for JSON in the prompt, it will usually comply. &amp;ldquo;Usually&amp;rdquo; is not a word I want in production. I run ten AI agents as cron scripts on a Debian VPS. Every one of them parses Claude output into typed objects downstream. One unescaped quote in a string field will take down the pipeline at 06:30 while I am asleep.&lt;/p&gt;</description></item></channel></rss>