Overview
This post summarizes the paper "The Bitter Lesson of Tool Calling" (arXiv: 2608.06370, August 2026) by Ishan Patel, Sahil Sen, Elias Lumer, and Vamse Kumar Subbiah at PricewaterhouseCoopers. The authors systematically compare two paradigms for LLM tool use on a standard benchmark.
The Two Paradigms
- JSON tool calling (current standard): The model emits one JSON object per tool invocation, waits for the result, then emits the next. Each step is one round trip.
- Programmatic tool calling (PTC): The model emits a Python script that calls tools as functions, allowing chaining, branching, and parallel fan-out in a single turn.
- Benchmark: Berkeley Function Calling Leaderboard v4 (BFCL v4).
- Models: 14 LLMs spanning multiple generations and vendors.
- Stress dimensions beyond single-call accuracy: 1. Chaining — output of call A feeds B, then C. 2. Parallel fan-out — many tools invoked concurrently. 3. Context rot — long, noisy conversations containing irrelevant information.
- 11 / 14 models matched or exceeded JSON performance under PTC on the main BFCL v4 test.
- +10.6 points for the GPT-5.6 family — the largest single-model gain.
- 13 / 14 models won or tied under PTC in the parallel fan-out scenario.
- JSON calls dropped an average of 2.3% under context rot; PTC was essentially flat.
- Parallelism: JSON requires the model to plan "I will call these ten tools at once" and emit ten objects without mistakes. PTC expresses the same intent with a list comprehension; the interpreter handles concurrency.
- Chaining: JSON forces the model to remember that output of step *n* must feed step *n+1*. PTC encodes this via variable assignment, so the interpreter manages state.
- Context rot: PTC isolates tool calls inside a code block, structurally insulating parameters from conversational noise. JSON calls, generated inline with prose, leak context into arguments.
Experimental Setup
Key Findings
Why PTC Wins Structurally
The "Bitter Lesson" Framing
The title references Rich Sutton's 2019 essay: general methods scaled with compute eventually defeat hand-crafted priors. The authors extend this to tool calling — JSON schemas are a human-designed prior, and once a model can write code, expressing intent directly in code is more flexible. Crucially, the PTC advantage grows with model generation (GPT-5.6 > GPT-4.5 > GPT-4o), consistent with Sutton's prediction.
Honest Limitations
1. PTC only helps models with strong code ability — 3 of 14 models in the study scored worse with PTC. 2. BFCL v4 is synthetic; real-world error handling, retries, and timeouts are not evaluated. 3. Code-based calls are harder to debug than JSON for some developers. 4. The paper does not release code; the BFCL v4 benchmark is documented at the Gorilla project page.
Practical Takeaway for Agent Engineers
If your model can write reliable Python, PTC is the better default for chaining, parallel, and long-context scenarios. JSON tool calling is not a standard — it is a historical artifact likely to be displaced as code-capable models improve.
---
Paper: https://arxiv.org/abs/2608.06370 HTML: https://arxiv.org/html/2608.06370v1 Benchmark: https://gorilla.cs.berkeley.edu/blogs/13_bfcl_v4.html