code · freeuipathdeterministicmirrors uipath.eval ToolCallArgsEvaluator

Tool call args (exact)

Tool call args (exact) computes the share of expected tool calls that appear in the output with the same name and exactly matching arguments. It mirrors UiPath's ToolCallArgsEvaluator and is free.

how it works // frame by frame

What the evaluator does

For each expected call, look for an actual call with the same name whose arguments are structurally identical (JSON similarity ≥ 0.999). Score is matched / expected.

frame 1/4 · the two inputs
tool_calls
book_flight({flight_id:"UA-873", passenger:"Priya"})
expected_tool_calls
book_flight({flight_id:"UA-873", passenger:"Priya"})
1.match by name
2.compare args structurally
3.count matches / expected
1/1score 1
runs in code · $0 · ~0 ms · deterministic
when to use it

Reach for it when

  • Arguments that must be precise: recipients, amounts, IDs.
  • Deterministic CI gates.

Not the right tool when

  • Schemas or formats vary (use tool_call_semantic).

Watch out for

  • A renamed key fails the whole call; that is the point, but pair with the semantic version to see intent.
inputs and example

What to send

required fields
tool_callsexpected_tool_calls
optional fields
none
in suites
AgentEverything
result shape

score 0–1 computed in code, label, passed at an evaluator-specific threshold, no probabilities.

POST /api/v1/evaluateopen in console
{
  "evaluators": [
    "tool_call_args"
  ],
  "output": "…",
  "tool_calls": [
    {
      "name": "book_flight",
      "args": {
        "flight_id": "UA-873",
        "passenger": "Priya"
      }
    }
  ],
  "expected_tool_calls": [
    {
      "name": "book_flight",
      "args": {
        "flight_id": "UA-873",
        "passenger": "Priya"
      }
    }
  ]
}
expected

1/1 matched.

rolling it up

Aggregate with

One result per item is a fact; a dataset of them is a metric. These are the aggregations that fit this evaluator's output shape.

related evaluators
questions people ask
What does 'exact' mean for tool arguments?
Same key names and same values after JSON parsing. Number formatting differences like 89 vs 89.0 are treated as equal; string differences are not.