If you read one line: A tool-use score is three tests hiding under one word — did the model emit the right call, does that call actually run, and does the whole task complete reliably — and the reliability number (pass^k), not the headline average (pass^1), is the one that predicts your production agent.

Every model that wants to be your agent backend now ships a function-calling number: a rank on the Berkeley Function-Calling Leaderboard, a τ-bench score, a "tool-use accuracy" percentage in the launch post. Founders read one of them and pick the model that runs their agent loop. But tool-use benchmarks fail differently than the coding benchmarks we walked through last week — the traps are in what the metric quietly leaves out. Here's how to read them so the leaderboard informs your choice instead of making it for you.

Rule 1: "function-calling accuracy" is three different tests#

The word "accuracy" hides which question a benchmark actually answered.

A high AST-match score sitting on top of calls that would error on execution is a real and common gap. When a vendor writes "90% function-calling accuracy," your first question is which of these three it measured. If they don't say, treat it as AST-match — the most flattering and least predictive of the three.

Rule 2: pass^1 is what they show you; pass^k is what predicts production#

This is the number founders miss, and it's the most important one on the page.

The headline is almost always pass^1 — average success on a single attempt. The metric that predicts an unsupervised agent is pass^k: the probability the agent solves the same task on every one of k tries. τ-bench measured exactly this gap and it is brutal — an agent above 60% average success (pass^1) fell below 25% at pass^8 (Sierra). Run the same task eight times and it went a perfect eight-for-eight less than a quarter of the time.

What it means: doing the task once is not the job. An agent that books the wrong flight one time in four isn't a 75% agent, it's a liability. Read pass^1 as "can the model do this at all" and pass^k as "can I leave it running." If a benchmark reports only pass^1, its reliability is unknown — which is the same discipline behind why one tokens-per-second number lies to you.

Rule 3: single-turn is not multi-turn#

Most function-calling leaderboards started single-turn: one prompt, one set of tools, one correct call. Real agents don't work that way — they carry state across many turns, remember what they already did, and sometimes have to decide no tool applies. BFCL v3 added multi-turn, state-tracked categories (plus "missing function" and long-context cases) precisely because single-turn scores overstate how a model behaves inside a stateful loop.

Match the benchmark's shape to your agent's shape. If your agent makes one clean call per request, a single-turn score is fair. If it runs a ten-step workflow that has to stay coherent, a single-turn #1 tells you almost nothing about the step where it forgets the order ID it looked up three turns ago. This is the tool-use twin of matching a memory benchmark to your memory workload — the discipline we laid out in how to read an agent-memory benchmark.

Rule 4: a tool-use score is a model plus a schema plus a tool count#

The same weights post different tool-use scores depending on two things the leaderboard rarely foregrounds:

Vendors report the format and tool-set that flatter their model. You run your schemas and your tool count. That's why a BFCL rank rarely survives contact with your real tool belt, and why the deciding question is never "which model is #1" but "which model is #1 with tools shaped like mine — and is that even the same as MCP vs. plain function calling for my stack."

What to actually do#

  1. Match the shape. Single well-specified calls → a single-turn score is fair. Long stateful workflow → only a multi-turn benchmark (BFCL v3, τ-bench) is honest.
  2. Read pass^k, not pass^1. If reliability isn't reported, it's unknown — and unknown reliability is a red flag for anything unsupervised.
  3. Know which "accuracy" you're reading. AST-match ("can it emit the call") is not execution ("does the call work") is not task completion ("did the job get done").
  4. Run a private eval with your real tools. Pull 20–50 real tasks, wire in your tool schemas and your tool count, and run each finalist several times — recording both pass^1 and pass^k. It takes an afternoon and measures the only thing BFCL and τ-bench can't: how the model behaves with your tools, in your loop. The private-eval playbook we wrote for coding models ports directly to tool use.

Public tool-use benchmarks are a filter for deciding who gets into that eval. They were never meant to be the decision — and once you read them as which test, which metric, which schema, the weekly "best at function calling" headlines stop being confusing and start being useful. The alternative is reading a benchmark exactly the way it's built to be misread.