Skip to main content
Capabilities answer two different questions:
  1. What can the Runner construct or call? An Agent’s construction and runtime behavior provide Sandbox access, tracing, session continuation, and HITL.
  2. What conclusions can assertions trust? Every Agent must use evidenceCoverage to declare the completeness of six evidence channels.
There is no separate capabilities field on defineAgent / defineSandboxAgent. That does not mean “nothing needs to be declared”: evidenceCoverage is required on both definitions so missing evidence never becomes an ambiguous fourth state.

Construction and runtime capabilities

The required six-channel declaration

Both defineAgent and defineSandboxAgent require an EvidenceCoverage:
Use completeEvidenceCoverage only when the Adapter really captures every channel completely. An official converter provides its coverage declaration for the protocol it normalizes. A manual mapping must state all six channels honestly:
Turn.evidenceCoverage is an optional per-turn downgrade. List only channels that are worse for that turn than the Agent default, such as when a stream ends before usage arrives. Omitted channels inherit the Agent declaration. A Turn cannot upgrade the default coverage.

How coverage changes assertion results

Coverage prevents “not collected” from looking like “confirmed not to have happened”: An unavailable assertion is always persisted with a machine-readable reason. It is never silently discarded or folded into a pass:
  • A non-optional unavailable assertion makes the Attempt errored.
  • An assertion explicitly chained with .optional() remains visible as unavailable, but does not affect the Verdict.
Judge follows the same Verdict rule, but has its own unavailable reasons: an unresolved Judge model or API key, a failed Judge call, or a response without an extractable score all produce unavailable. Judge is therefore not “always available.”

What happens when a manual mapping misses events

If a manual mapping misses events but declares events or actions complete, negative assertions can appear to pass on an incomplete picture. That is an incorrect completeness declaration. Until the mapping covers successful, failed, rejected, and concurrent tool lifecycles, declare partial or unavailable honestly and give a reason. An official converter guarantees only the surface its protocol contract explicitly covers. OTel spans cannot repair an incomplete event mapping: spans go only to the waterfall, not assertions.