Grade each tool call, not the reply
A final-output grader grades the response, not the process that produced it. Tessary runs per-call-site graders against individual ToolCall nodes in your production traces, so failures surface at the step where they occur. And when a grader's trend drops, Tessary traces it back to the change that caused it, in your prompt, your code, or the tool itself.
Tool selection falls as choice grows
Adaline Labs measured tool selection accuracy across agents as the number of available tools increased. At 4 tools, accuracy was 43%. At 51 tools, it was 2%. The degradation is not linear; it collapses. A final-response grader sees none of this because a wrong tool selection can still produce a plausible-looking reply when the agent compensates in later steps.
43%
tool selection accuracy with 4 available tools
2%
tool selection accuracy with 51 available tools
Per-step errors cascade silently
A parameter error at step 3 propagates through steps 4 and 5 and still produces a syntactically correct final response. The grader marks it passing. The failure surfaces later, in a user-reported broken workflow.
- 62%
of parameter-level tool errors cascade to a wrong final answer, per a June 2025 arXiv study on tool-integrated LLM agent stability
arXiv, June 2025
- 38%
register as wrong only in intermediate steps: invisible to any grader reading only the final response
arXiv, June 2025
- 3
dimensions fail independently at the call site: tool selection, argument correctness, and output handling, each requiring its own grader
Final-response vs per-call-site eval
Final-response graders are not wrong for text-output agents. They are the wrong unit for agents that use tools: the final response is several steps removed from what the agent actually did.
Final-response grader
Grades the output, not the process
- Cannot see which tool was called or what arguments were passed
- Passes when a wrong tool call resolves to a plausible-looking reply
- No signal on argument type errors or missing required fields
- Cannot detect when an agent misreads a structured error as success
Per-call-site grader
Grades each ToolCall node in isolation
- Runs at the exact step where the failure occurred, not after propagation
- Flags wrong tool selection before the incorrect result flows downstream
- Catches missing fields, wrong types, and incorrectly extracted values
- Detects output misinterpretation before the agent acts on corrupt context
Five steps from trace to cause
Tessary's trace model represents every tool invocation as its own ToolCall node. Graders run against those nodes directly, not against the turn output.
Connect your trace source
Send production traces via OTLP or pull from Langfuse or Braintrust. Every tool invocation lands as its own ToolCall node in the trace. No re-instrumentation required if your agent is already sending traces.
Write per-tool graders
Describe each failure mode in natural language: "agent calling web-search instead of catalog-search for product queries." Tessary compiles it to a classifier that runs on your traces. One grader per tool per failure type gives you granular coverage without overlap.
Run against real traffic
Each ToolCall node in production gets graded, and verdicts accumulate as a trend per grader. Tessary reads that trend rather than any single verdict: an imperfect grader is wrong at a roughly constant rate, so a failure rate that moves signals a real change. Failures link to the exact step where they occurred, not the final response that obscured them.
Gate deploys on tool-call risk
The diff classifier reads the next PR and reports which tool-call graders are at risk, the same attribution engine run against the diff before it merges. A GitHub Action blocks the merge or posts the trouble report as a PR comment, with a per-grader risk score you can threshold by tool criticality.
Trace a failing trend to its cause
A gate only covers changes that ship through a PR. A tool that changes its response schema, an upstream agent whose output shifts, or a provider model update reintroduces failures with no deploy at all. When a tool-call grader trend breaks, Tessary walks the failing dimension back through the chain to the change behind it, in your repo or outside it, and names that change.
Three call-site failure modes covered
One agent turn can include a dozen tool calls. Each one can fail on any of these three dimensions independently. Tessary runs one grader per tool per failure type.
Tool selection grader
Did the agent invoke the right tool for this step? An agent with 20 available tools that selects the semantically adjacent one passes a final-response eval. A selection grader catches it at the call site, before the wrong result propagates.
Argument correctness grader
Did the agent pass the right parameters? Wrong types, missing required fields, or values incorrectly extracted from a prior step register as silent failures. The tool returns HTTP 200, the agent continues, and downstream steps run on corrupt context.
Output handling grader
Did the agent correctly interpret what the tool returned? An agent that misreads a structured error as a success response, or silently truncates a partial result, carries that corruption into the next call without flagging it.
The Tuesday a tool changed underneath the agent
A catalog-search vendor changes its error payload from a structured code to a prose message. No deploy went out and nothing in the agent's repo changed. The agent starts reading those errors as successful empty results and answering that no products were found, which is a well-formed, plausible reply. The final-output grader stays flat. The output-handling grader's trend breaks within hours, and Tessary attributes the break to the tool's response change rather than to a commit, because no change in the repo lines up with the drop.
Questions about tool-call evals
Related pages
Code-generation agent evals
Grading agents that write code, where a passing build can still hide a wrong change.
Multimodal agent evaluation
Grade what the agent read from an image separately from what it did about it.
Agent evals SDK
The trace model that lands every tool invocation as its own graded node.
Grade tool calls, not just outputs.
Connect a Langfuse or Braintrust trace source, with no credit card required, and see which tool call is failing and which change made it fail.