A Monitor’s configuration has two parts: the runner (how the production output is judged) and the resolution (how the judge’s output maps to a verdict).Documentation Index
Fetch the complete documentation index at: https://docs.trymaitai.com/llms.txt
Use this file to discover all available pages before exploring further.
Runner types
Pick one of three runner types based on what you want the judge to do.Model
Calls a chat model with a custom prompt. Useful when you want an LLM to look at the production input and output and emit a structured judgment (e.g.{"is_bad": true, "reason": "..."}).
- Resource: any model your Company can call (
gpt-4o-mini, your finetunes, etc.) - Input: the prompt template plus the JSON paths from the production payload to feed into the model (typically
messages+response).
Workflow
Calls a Maitai Workflow with the production payload as input. Useful when judgment requires a multi-step process (retrieval, structured prompting, deterministic post-processing) — basically anywhere a Workflow already encodes the right logic.- Resource: a Workflow in your Company
- Input: the payload mapping the workflow expects
Direct
Skips the judge entirely. The resolution is evaluated directly against the production output. Use this when the production system already emits the structured signal you want to alert on (e.g. anot_enough_information flag, a confidence score, a boolean classifier output) — no second model call needed.
- Resource: none
- Input: just the JSON path to the field that holds the production output (default:
response)
Resolution
The resolution describes how to read the runner’s output and decide the verdict. It has three branches:- Error — boolean group of conditions; if it matches, the verdict is
error. - Warning — same shape; if it matches (and
errordid not), the verdict iswarning. - Default outcome — the verdict when neither error nor warning matches (always
passtoday).
AND / OR, optionally negated) and conditions. A condition picks a JSON dot-path or text segment of the runner output, an operator, and an optional value.
Operators
| Source | Operators |
|---|---|
text | contains, not_contains, equals, not_equals, regex_matches, is_empty, is_not_empty |
json | exists, does_not_exist, is_true, is_false, equals, not_equals, contains, regex_matches, gt, gte, lt, lte |
confidence.score, items.0.id, flags.is_bad.
Example: direct runner watching for a missing field
Designing against a real sample
The new-Monitor wizard fetches the most recent production payload from each attached target so you can:- See the actual JSON shape the runner will receive
- Autocomplete
pathfields in the resolution editor against real keys - Preview the verdict against that sample before saving
Live preview
The detail page exposes a Preview action that runs the current draft (or any published version, or an ad-hoc payload) and returns the verdict + decorated trace without persisting amonitor_run. Use this to iterate on conditions before publishing.