What it answers
“Why has nothing happened?” Loop health answers that from records rather than guesses. For each workspace and each day it shows:- Readings per engine: how many succeeded and how many failed.
- Scheduled automation outcomes: each automation that fired, was skipped (with the reason), or failed.
- Detection findings raised by the hourly detection pass. A finding held as noise is not counted.
- Work produced: items filed for your approval or review.
- Approvals pending: how many items wait on a person.
- Pull requests opened.
- Checks due (
rereads_duein the API): before-and-after checks whose after-window has closed and that the next nightly pass runs for the first time. A check still inside its window is being measured and is not counted. A check that failed is not counted as due either: each failed try is a line of its own, Measuring shipped changes, and the check is tried again until it has a verdict or stops with a stated reason.
brief verb carries the status and the first reason over MCP; the full day-by-day report is get_loop_health, which left the MCP tool list on 2026-10-19 and still answers by name, and GET /v1/loop-health over the REST API.
The three statuses
A workspace is blocked when any of these is true:
- the credit balance is spent;
- no reading succeeded in two days;
- nothing is scheduled and detection is off;
- every scheduled run failed;
- the scheduler stopped;
- agent work or answer checks are paused while we fix a problem on our side (see When something on our side stops).
The org home at /clients currently shows a simpler status per workspace, derived from its automations: blocked when there is no scheduled automation, all of them are paused, or credits are used up; idle when an automation is scheduled but has never run, or has not run in 48 hours. It will read loop health instead once that is wired in.
Why a scheduled run was skipped
A skipped run is recorded, grouped with a count, instead of disappearing. Each skip carries one of these reasons:
Markets add two lines of their own, named after the market or language rather than an automation. The first is recorded as a skipped run, the second as a failed one:
When something on our side stops
When something Attensira runs on stops working for us, every workspace that depends on it says so in one sentence, first among the reasons:Agent work is paused while we fix a problem on our side. Next try at 16:10. Nothing for you to do.The sentence starts with the work that waits: Agent work, Answer checks, Google rank tracking, Page checks, Emails from us, or Some scheduled work. The time of the next try is in your workspace’s time zone; a workspace with no time zone set gets the sentence without it. When something is failing without having stopped, after two failed tries in a row, the sentence says the work may be late instead, as a note: “Page checks may run late while we fix a problem on our side. Next try at 16:10. Nothing for you to do.”
- It is ours to fix, never yours. It does not touch your credits or your connections.
- We try again every 10 minutes. A try that works ends the pause on its own; nobody marks it fixed.
- Agent work or answer checks being paused makes the workspace Blocked. Google rank tracking, page checks or our email being paused is a note, because the rest of the work carries on.
- The sentence never says whose system failed and never states a balance.
-
A workspace blocked by one carries
"owner": "product": it is ours to act on. A workspace blocked for a reason only you can fix (credits, a cap, nothing scheduled) carries"owner": "customer".owneris absent when the workspace is not blocked.
vendor_incident, not as failed, and files nothing in your Inbox. When the problem is fixed, each such automation runs once on its own; see Paused runs catch up automatically. The claim check and Google rank tracking wait and catch up the same way. See also Troubleshooting.
When a block is yours
When the loop is blocked for a reason only you can clear, or a connection needs reconnecting, you are told what it is and given one action:
When more than one applies, a broken connection comes first, then the balance. The card on New chat shows it as soon as the loop is blocked. The email (the Attention category of your notifications) goes out once the block has lasted 12 hours, at most once a day, and says that nothing was changed while the work waited.
A block that is ours says so (“Work is paused on our side”) and asks nothing of you: it ends on its own when it is fixed.
GET /v1/projects/{id}/loop-health, the dashboard’s read, carries the action as fix, absent when nothing is yours to do:
Credits stop runs, not readings
A spent credit balance stops scheduled automation runs. It does not stop readings: the daily answers to your tracked prompts run on your plan’s monthly response budget, not on credits. A blocked workspace with no credits still gets its numbers; what stops is the work built on them. Loop health itself costs nothing and answers on a spent balance.Over the API
Shell
Response
days takes 1 to 30 and defaults to 7. The dashboard reads the same data from GET /v1/projects/{id}/loop-health.