Find and read the loop
Call list_loops with {} where exposed. Select the actual loop id and call get_loop:
{"loop_id":"<returned loop id>"}
Inspect its content, state, version, status, rollout and case summaries. Approved plus shadow is different from approved plus active. Do not infer an executed result from a loop's existence or approval.
Read one case
Call get_case with identifiers returned for that loop:
{"loop_id":"<loop id>","case_id":"<case id>"}
Inspect case, timeline, pending_wait, current status, close reason and available output. Respect redactions. Read each row's own shadow/execution marker: a shadow case can contain real read-only steps and metered checks.
The timeline does not supply every field a diagnostic might want; missing per-step timestamps or activity references are not a licence to invent them.
Answer a wait and verify continuation
If a human answer is required, show the actual question, options and available due time. Use the attention procedure and the current request reference. After acceptance, re-read the same case to determine what continued and whether it eventually completed, failed or escalated.
On timeout or error, preserve the current state and reason. Do not resubmit the original trigger to fake a resumed case.
Read aggregate metrics separately
get_loop_metrics requires a supported window of 7d, 30d or 90d; loop_id is optional. For one loop:
{"loop_id":"<loop id>","window":"7d"}
Counts, rates and spending describe the recorded window. They do not establish source truth or prove that a particular business outcome was correct. Retain exact case evidence for repeated corrections.
Related
Practical guides for people and agents