Case Study · LLM Evaluation · 2026

Planner

Bench

A benchmark for the model that decides
which tools to call, and in what order.

Scroll
step[2].input = "{1.output.id}" temperature = 0.6, seed = fixed catalog.length === 100
01

The Problem.

A planner model turns a question into a chain of tool calls, where the output of one step feeds the next. A single accuracy number says little about it. Does it survive a catalog full of look-alike tools? Does it still wire things correctly five steps deep? And when it fails, is it the reasoning or just the output format?

02

The Solution.

A benchmark whose headline metric is the wiring: is every step fed by the right output of the right previous step. Answers are read tolerantly, so a formatting slip is reported as a diagnostic and never hides a correct plan. Catalogs scale up to 100 tools to add realistic noise. Run settings are fixed (temperature, seeds, timeouts, one retry) so two campaigns can be compared. It showed that deep chains were the breaking point, and traced the cause to the training data, where real deep chains made up less than 1% of examples, and not to the reward as first assumed.

One campaign, end to end.
01 Scenarios Questions with a known correct plan
02 Noise Catalogs padded up to 100 tools
03 Run Fixed seeds and settings
04 Score Wiring first, format as a diagnostic
05 Diagnose Where the chains break, and why
383 Model calls Per campaign
100 Tools In the noisiest catalog
<1% Deep chains In the training set: the root cause
The Stack.
01 TypeScript Benchmark harness
02 Bun Runtime
03 Fine-tuned planner The model under test
04 Tolerant parser Reads plans despite format slips
05 Seeded runs Comparable campaigns
← Back to works Next: Helios →