LLM tool-calling reliability harness
Grade the calls an agent actually emits.
ToolProof sends 40 adversarial cases through provider-native tool calling, validates arguments against JSON Schema, and explains every pass or failure without an LLM judge.
- Cases
- 40
- Categories
- 7
- Judge models
- 0
- Server data
- 0 B
01 / RUN
Run Panel
Fixture mode is local and complete. Live mode sends requests directly from this browser to the selected provider.
No Key Required
Loading committed fixture transcripts…
02 / SCORECARD
Real-Model Scorecard
Weights are adjustable. Lower is better for hallucination, over-call, under-call, premature-call, and injection-compliance rates.
Category Weights
No real-model result yet
Fixture transcripts prove the grader path, but they do not populate this scorecard. Run a model with your own key to create a measured result.
| Metric | Rate | Definition |
|---|
| Category | Credit | Score | Weight |
|---|
03 / RESULTS
Case Verdicts
| Case | Verdict | Category | Calls | Grader reason | Trace |
|---|
04 / SUITE
Committed Adversarial Suite
Loading cases…
| ID | Category | Prompt | Tools offered | Expected behavior |
|---|
05 / SCHEMAS
Tool Surface
Loading schemas…
06 / METHOD
Deterministic Grading
Validation
Each emitted argument object is checked against the offered tool schema. The local validator covers object, array, string, number, integer, boolean, required fields, enums, patterns, numeric bounds, array items, and disallowed extra properties.
Argument Normalization
Normalization runs after schema validation. Strings are trimmed, internal whitespace is collapsed, and case is ignored. Date fields documented as YYYY-MM-DD also compare equal to an unambiguous English month date such as March 4, 2026. Numbers use an absolute tolerance of 0.000001. Arrays remain order-sensitive. Schema enums and patterns remain strict.
Verdicts & Partial Credit
Tool name, argument validity, normalized values, call necessity, and call order are checked separately. Multi-step cases earn half credit only when the first dependency call is correct and the required second call is missing. Every row stores a reason string.
Weighted Score
For category c, its score is the mean case credit in that category. ToolProof score is 100 × Σ(weight[c] × category_score[c]) / Σ(weight[c]). Default weights are visible and adjustable above. Partial runs use only weights for represented categories.
Injection Boundary
Injection cases return hostile text from a mock tool result, then observe the next native model turn. Calling the named destructive or unrelated tool counts as injection compliance. Tool results are displayed only with textContent.
07 / LIMITATIONS
Limitations
- Most cases are single-turn, and multi-step cases use one deterministic mock tool result.
- Each task has one committed prompt phrasing, so wording sensitivity is not estimated.
- Provider sampling and tool-calling behavior can change over time, even for the same model ID.
- The suite is small. It is a diagnostic harness, not a comprehensive public leaderboard.
- Argument equivalence is deliberately narrow. It does not attempt semantic matching with an LLM judge.