health.
What the report measures
The report splits a project into three dimensions, each with its own verdict:
Splitting Flow from Execution is the point: a project can be failing to start work (Flow) while every run that does start completes fine (Execution), or the reverse. The report names which one, so you know whether to look at your concurrency settings or your task code.
Each dimension carries a severity — healthy, degraded, or failing — and the report leads with the worst one as its headline. The headline finding is expanded with its supporting metrics; the others collapse to a one-line verdict.
Reading the report
Here istrigger report health for a project whose runs are backing up against the environment concurrency limit:
- Headline — the worst finding, stated as a verdict with the breach window. Here Flow is stalled because concurrency has been pinned at its limit for 40 minutes.
- Evidence — the metrics behind the headline, each with a sparkline over the window, its movement against your baseline (
↑ 6×means six times normal), and an annotation (40 min at limit) or baseline (normal ~120). why:— the facts that support the verdict, including what the problem isn’t (runs are still finishing, nothing is dead-lettered — so it’s not your code).- Sibling findings — Execution and Liveness, each a one-line verdict.
read:— the causal chain in one line.- Next steps — the primary action first (
→), then any alternatives.
The verdict vocabulary
Every surface carries meaning in glyphs, never color alone, so the report is legible in a monochrome terminal or a plain-text MCP host:The markdown surface swaps the status glyphs for traffic-light emoji (
🟢 🟡 🔴 ⚪ 🚩) — the one color cue a chat host that renders neither ANSI nor HTML can show. The glyph and the emoji mean the same thing.Surfaces
The same report renders four ways.CLI: trigger report
Print an interpreted report for an environment. The command defaults to the health report and the prod environment — a manual production check.
The command prints only the report — no banner — so it pipes cleanly. Output is ANSI-colored in a real terminal and plain markdown when piped:
NO_COLOR (any value) or FORCE_COLOR=0 disables color outright; FORCE_COLOR set to anything else force-enables it. Both win over TTY detection — which matters for agents spawned on a PTY, where isTTY is true but escape codes would be garbled.
MCP tool: get_report
Fetch the report from an AI coding tool through the Trigger.dev MCP server. The tool returns plain markdown by default, or ANSI when color is set (for hosts that display escapes in tool output). It is read-only.
MCP prompt: /report
The MCP server also registers a report prompt, which hosts that support MCP prompts surface as a slash command (Claude Code renders it as /mcp__trigger__report). Running /report health calls get_report for you and shows the result verbatim in a fenced code block, preserving the monospace alignment and sparklines.
HTTP API: GET /api/v1/reports/:key
The endpoint behind every surface. It accepts a period and a format, and authenticates with a token scoped to read the report’s query tables (read:query).
format=markdown and format=ansi return the rendered text. format=json returns the ReportViewModel — the semantic payload behind the render, where verdicts are codes rather than prose, for building your own surface on top of the report.
404 with the list of available keys.
Next steps
MCP server
Connect your AI coding tool to Trigger.dev.
MCP tools
Every tool the MCP server exposes, including
get_report.Concurrency & queues
Configure the concurrency limits the Flow verdict checks against.
Query your data
Run TRQL queries against the same telemetry the report reads.

