News Sentiment Check
Uses the check.ai: structured AI check to read recent news and classify
the overall tenor. The when: arms then branch on the structured outputs the
AI returned.
What it does
On each fire, the monitor's check is NOT a tool call — it's a direct AI call. The check:
- Sends a prompt describing what to look for.
- Declares an
outputs:map naming the structured fields the AI must return (with each field's description as a hint). - Gets a JSON object back with those keys filled in.
- Each key becomes a binding the
when:arms can reference directly.
The arms then evaluate the structured outputs:
- Arm 1 —
urgency >= 4: high-urgency catch-all. Notifies regardless of tenor. - Arm 2 —
tenor == bearish: caught only if urgency was 1-3 (arm 1 didn't match first). Notifies on bearish tenor. - Else — quiet day or neutral/bullish tenor below the urgency threshold.
Edit before installing
In monitor.yaml:
check.ai.prompt— rewrite for your domain ("today's crypto news", "ops channel chat from the last hour", "internal status reports"). Be specific about what you want classified and what dimensions matter.check.ai.outputs— declare the structured fields you want. The description text matters — it's literally the hint the AI gets for what to put in each field. Be precise.- The
when:arms reference outputs by name (e.g.tenor == bearish,urgency >= 4). Match these to whatever you declared inoutputs:.
Bindings used
These come from check.ai.outputs, not from a tool. The names are whatever you
declare:
{{summary}}— paragraph string the AI wrote{{tenor}}— one-token classification:bullish | bearish | mixed | quiet{{urgency}}— integer 1-5
Add or rename fields by editing check.ai.outputs: — the bindings update
automatically (they're named after the keys you declared).
Requirements
- AI assistant configured (Server Settings → AI Assistant — provider, API key, model). If no AI is configured, the check fails soft and the arms never fire.
Pattern showcase
check.ai is the structured-output AI check. Unlike an ai: arm (which
returns true/false), check.ai returns a map of named fields that the
arms then evaluate against. Use it when:
- The thing you're watching is fuzzy and can't be a tool call ("is the news bearish today?", "does the support inbox have an escalation?").
- You want a SINGLE AI call per fire, then cheap arm evaluation.
- You want structured downstream routing (different arms for different outputs).
Tokens: 1 LLM call per fire. Schedule accordingly.