cognite agents eval to run YAML-defined test cases against a deployed Atlas AI agent. Cases live in eval/eval.yaml inside an agent project created with cognite agents create.
This is the CLI / file-based evaluation path. Cognite Data Fusion (CDF) also offers Running agent evaluations in Atlas AI. Use the CLI when you want cases in Git, CI-friendly exit codes, and coding agents that can author YAML against a published schema.
Run evaluations
eval/eval.yaml (and optional include fragments). By default it uses externalId from local <name>.agent.yaml. You can instead pass --external-id <id> or --system-agent to evaluate a deployed agent without reading local <name>.agent.yaml.
Full flags: command reference: agents eval.
Example suite
eval/eval.yaml
Schema
Root file (eval/eval.yaml)
Case
Turn
Session context
Optional fields that scope agent chat. They may appear at root, included file, or case level. Most-specific wins (field replace, not deep merge).
After resolution,
dataModels and instanceSpaces must both be present or both absent for a case. appContext may be set alone.
Multi-file suites
eval/eval.yaml
cases array. They may declare file-level tags that are unioned into each case, and file-level tools / session context that override the root for every case in that file.
Scorers
Tool scorers
toolSelection and toolInvocation judge agent tool use against a declared tool list. Both share the same inheritance, skip behavior, and optional per-scorer tools override.
Eval tools vs <name>.agent.yaml tools: These are different. <name>.agent.yaml declares tools for the agent runtime (config-time names like query). Eval tools declare what the judge should expect the agent to call at runtime (names like find_assets, execute). Put parameter details in each tool’s description so toolInvocation can check arguments.
When to declare eval tools:
- Custom tools (config name = runtime name): tool scorers can use
<name>.agent.yamltools when no evaltoolsare set. - Platform tools (
query,ask_document, and similar): the runtime often exposes sub-tools (find_assets,list_views, …). Declare those runtime names in evaltools, or score outcomes withcorrectness/faithfulnessinstead. - System tools (sandbox
execute, and similar): not in<name>.agent.yaml— declare them in evaltools. --external-id/--system-agent: local<name>.agent.yamlis not loaded — supply evaltoolsif you use tool scorers.
--verbose or --report-dir and inspecting toolsCalled:.
Empty tool list: If no tools resolve after the cascade, the tool scorer is skipped with a stderr warning; other scorers on the turn still run. A case whose only scorers were skipped tool scorers fails the verdict.
Tools for tool scorers
Optionaltools field for toolSelection and toolInvocation. Each entry needs non-empty name and description. Empty tools: [] is rejected.
Inheritance matches session context: most-specific-wins, whole-array replace (not merge-by-name):
- Root
eval/eval.yaml - Included file
- Individual case
- Scorer on a turn (overrides everything above for that scorer only)
tools, eval falls back to tools[] in local <name>.agent.yaml when that file is loaded.
eval/eval.yaml
Machine-readable schema
Coding agents and editors can validate suites against the published JSON Schema: Keep local cases compatible with this schema when you editeval/eval.yaml. Loader rules that are harder to express in JSON Schema (unique ids across includes, scored-turn requirements, dataModels/instanceSpaces pairing) are still enforced by cognite agents eval at runtime.