Task Completion
Registry name:
task_completion · Default threshold: 0.5 · Method: LLM judge (2-stage)How it works
Scoring guide
Metadata returned
Tool Correctness
Registry name:
tool_correctness · Default threshold: 0.5 · Method: LLM judge (2-stage)How it works
What the judge evaluates
- Correct selection — Were the tools used appropriate and sufficient?
- Over-selection — Were unnecessary or redundant tools called?
- Under-selection — Were useful available tools ignored?
- Mis-selection — Were wrong or irrelevant tools chosen?
Metadata returned
Argument Correctness
Registry name:
argument_correctness · Default threshold: 0.5 · Method: LLM judge (3-stage)How it works
Score calculation
The score is computed deterministically from the verdicts:Metadata returned
Step Efficiency
Registry name:
step_efficiency · Default threshold: 0.5 · Method: LLM judge (2-stage)How it works
What lowers the score
- Redundant or duplicate tool calls
- Unnecessary intermediate steps
- Speculative work that wasn’t needed for the task
- Overly verbose reasoning chains that don’t add value
Metadata returned
Confidence
Registry name:
confidence · Default threshold: 0.5 · Method: LLM judge (1-stage)agent_reliability and agent_consistency.
How it works
A single LLM call evaluates the entire trace against four criteria:- Decisiveness — Did the agent act without unnecessary hesitation or contradictory steps?
- Appropriateness — Were the actions relevant to the user’s goal?
- Consistency — Did the agent maintain a coherent strategy throughout?
- Indicators of low confidence — hedging language, contradictions, unnecessary retries, vague outputs, repeated tool calls with identical parameters, or abandoned strategies
Scoring guide
Metadata returned
Plan Adherence
Registry name:
plan_adherence · Default threshold: 0.5 · Method: LLM judge (3-stage)How it works
If no plan is found in the trace, the metric returns 1.0 (no plan to deviate from).
Scoring guide
What the judge evaluates
- Were all planned steps executed?
- Were steps followed in the intended order?
- Were there extraneous actions not in the plan?
- Were any planned steps skipped?
Plan Quality
Registry name:
plan_quality · Default threshold: 0.5 · Method: LLM judge (3-stage)How it works
If no plan is found, the metric returns 1.0.
What the judge evaluates
- Completeness — Does the plan address all aspects of the task?
- Logical coherence — Are steps ordered and structured sensibly?
- Optimality/efficiency — Could the plan be streamlined?
- Level of detail — Sufficiently detailed without being overly verbose?
- Alignment with task — Does the plan match the user’s intent?
Scoring guide
Coherence
Registry name:
coherence · Default threshold: 0.5 · Method: Embedding distance (no LLM call)How it works
- The trace’s
inputandoutputare serialized to text - Both texts are embedded using the configured embedding model
- The cosine distance between the two embeddings is computed
- Score =
1.0 - cosine_distance(clamped to [0, 1])
Edge cases
- If either input or output is empty, the metric returns 1.0 with a note explaining coherence was assumed
- The metric also serves as a signal for session-level aggregation
Metadata returned
Loop Detection
Registry name:
loop_detection · Default threshold: 0.5 · Method: Hybrid semantic + Jaccard similarityHow it works
- The current trace’s output and the previous traces’ outputs (up to a window of 3) are collected
- All outputs are embedded using the configured embedding model
- For each previous trace, two similarity scores are computed:
- Cosine similarity (semantic overlap) between embeddings
- Jaccard similarity (lexical overlap) between tokenized word sets (with stop-word removal)
- A hybrid score = cosine × Jaccard is computed for each pair
- Final score =
1.0 - max(hybrid_scores)(clamped to [0, 1])
Why the hybrid approach
The multiplication of cosine × Jaccard ensures that only outputs that are both semantically and lexically similar are flagged as loops.
Metadata returned
Model override
All LLM-based metrics support a model override parameter. When creating an eval run, you can specifymodel (e.g., "openai/gpt-5.4") to change which LLM serves as the judge. If omitted, the system default is used.
This lets you balance cost and accuracy — use a faster model for quick checks and a more capable model for production evaluations.
Next steps
Agent Evaluation Metrics
Learn about session-level aggregation metrics.
Run via API
Create trace eval runs programmatically.

