Skip to main content

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_due in 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.
Each count is read once for its date. The days are listed side by side, but they are not a trend and nothing in the report compares one day with another. In the app, New chat shows a card above Needs you whenever something is holding your work: what it is, and the one thing to do about it when it is yours to fix. The same words reach you by email at most once a day (see When a block is yours). Nothing about a block waits on anybody at Attensira. The 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).
Every status comes with its reasons as sentences you can act on, such as “The credit balance is spent, so scheduled automation runs are refused. Top up to restart the loop.” or “‘Daily win plan’ is paused.” Reasons also carry notes that do not block the loop, such as how many pieces of work wait for your approval.
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". owner is absent when the workspace is not blocked.
A run that such a pause stopped, before it started or partway through, is recorded as skipped with the reason 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.