---
title: "Evaluation API"
description: "An Evaluator or AsyncEvaluator receives EvaluationContext and returns an EvaluationDecision. EvaluatorCallable is the accepted callback union."
---

> M3 v0.2.16 · commit 796f6943274f075d973f267794444b91ba208010.


# Evaluation API

An `Evaluator` or `AsyncEvaluator` receives `EvaluationContext` and returns an
`EvaluationDecision`. `EvaluatorCallable` is the accepted callback union.

`EvaluatorRegistry` stores callbacks by stable name.
`register_builtin_evaluators(registry)` installs the built-in completed,
successful-tool-call, and non-empty-output evaluators.

`EvaluationRunner` combines a registry with an `EvaluationStore`, executes one
named evaluator, validates the decision, and persists the result.
`InMemoryEvaluationStore` is suitable for isolated tests.

`EvaluatorRegistration` declares an evaluator expected by an execution. Its
`required` setting is separate from registering the callback. Missing or
non-passing required evidence can raise `RequiredEvaluationError` after the
result has been persisted.

`EvaluationVerdict` is the callback-facing status input; public durable values
use `EvaluationStatus`. See [Custom evaluators](https://m3.sineframe.com/docs/guides/evaluations/custom.md),
[Judges](https://m3.sineframe.com/docs/guides/evaluations/judges.md), and
[Aggregation](https://m3.sineframe.com/docs/guides/evaluations/aggregate.md).
