The front door to Merus’s 21 built-in reports. Stale cases, overdue tasks, the full cases list (including archived), dates of injury, tasks per case — all computed server-side by Merus, returned authoritative, presented cleanly. When Merus already has the report, AAI runs it rather than reimplementing the query.
At the prompt:
aaicase> run report
aaicase> stale cases report
aaicase> overdue tasks report
aaicase> what reports are available
The skill maps the request to a Merus report ID, runs /reports/view/[ID], and presents the rows formatted for the report type. If you ask “what reports are available,” it lists the useful ones. If you name a report, it runs it directly.
Several reports return data that the index endpoints can’t:
/caseFiles/index, which excludes archived.For these, running the native report is more authoritative than anything AAI could compute from the index endpoints. When Merus already does the work correctly, AAI defers to it.
| ID | Report | Use |
|---|---|---|
| 1 | Cases List | Every case, including archived. Broader than the index. 600+ rows — the skill shows summary counts, not all rows. |
| 2 | Stale Cases | Cases with no recent activity, by Merus’s own detection. The most actionable report — shown ranked by staleness. |
| 6 | Dates of Injury | DOI data across all cases. Useful for SOL cohort analysis (“which cases have a DOI approaching 5 years”). |
| 8 | Tasks Per Case | Task counts by case — surfaces the cases carrying the most task load. |
| 19 | Overdue Tasks | Every overdue task, server-side filtered. Not subject to the index cap. |
Merus has 21 reports total; these five are the ones with practical case-management value. The skill knows these by name; for the others, you can run by ID (run report 14) and the skill displays whatever comes back.
One fetch, parameterized by report ID:
node bin/merus-fetch.mjs /reports/view/[REPORT-ID]
The response shape varies by report — some return arrays, some return keyed objects. The skill handles both: arrays get row-counted and sampled; objects get key-counted and sampled. No AI, no temp directory — just fetch, parse, present.
For the named reports, the skill applies report-specific formatting (stale cases ranked by staleness, overdue tasks grouped by case). For unrecognized report IDs, it falls back to a generic row dump so the data is at least visible.
The skill maps natural-language requests to report IDs:
| You ask for | Report run |
|---|---|
| “stale cases” | Report 2 |
| “overdue tasks” | Report 19 |
| “all cases including archived” | Report 1 |
| “tasks per case” | Report 8 |
| “dates of injury” / “DOI list” | Report 6 |
| “what reports are available” | Lists the table above |
| “run report [N]” | Report N directly |
If the request is ambiguous (“run a report” with no specifier), the skill lists the available reports and asks which one.
Report 1 (Cases List) returns 600+ rows on a firm of any size. Dumping all of them to the terminal is useless. The skill:
For the actionable reports (Stale Cases, Overdue Tasks), the full result is usually small enough to show in entirety — and the skill does, ranked by the relevant key (staleness, days-overdue).
| run report | AAI-computed (e.g. which cases need attention) | |
|---|---|---|
| Source of logic | Merus server-side report engine | AAI’s own JavaScript scoring |
| Authoritative for | What Merus considers stale/overdue (matches the Merus UI) | AAI’s multi-signal urgency rubric |
| Customizable | No — Merus defines the report | Yes — the scoring weights are in the skill |
| Includes archived | Yes (Report 1) | No — open cases only |
| When to use | “What does Merus say?” / firm-management reporting | “What needs my attention?” / triage |
The two are complementary. Which cases need attention applies AAI’s own urgency scoring (days-since-activity + overdue tasks + missing events + HIGH backlog). The Stale Cases report applies Merus’s definition. They’ll overlap heavily but not perfectly — and when they disagree, the difference is informative (a case Merus calls stale but AAI doesn’t, or vice versa, is worth a look).
STALE CASES REPORT (from Merus)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
23 cases with no recent activity:
#[FILE-#] Doe, Jane v. Sample County Agency last activity 2025-11-12 Open
#[FILE-#] Roe, Maria v. Sample Industries last activity 2025-12-03 Open
#[FILE-#] Sample, Alex v. Sample Distribution last activity 2025-12-18 Open
#[FILE-#] Doe, John v. Sample Foods last activity 2026-01-05 Open
[...19 more, ranked by staleness]
Suggest: "Want me to run a health check on any of these?"
And overdue tasks:
OVERDUE TASKS REPORT (from Merus)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
17 overdue tasks across 11 cases:
Doe, Jane v. Sample Co. File QME objection due 2026-05-20 7d overdue
Roe, Maria v. Sample Inc. Request benefits log due 2026-05-12 15d overdue
Sample, Alex v. Sample Dist. Send TD demand due 2026-05-08 19d overdue
[...14 more, grouped by case]
Suggest: "Want me to walk these in process my tasks?"
The report ID may not exist on this firm’s Merus instance (the 21 reports are mostly standard but firms can have custom configurations). Run “what reports are available” to see the known list, or check the Merus UI’s Reports section for the exact IDs.
Expected — they use different definitions. Merus’s staleness is its own server-side logic; AAI’s attention scoring is a multi-signal rubric. A case in one but not the other is worth investigating: usually it means the case has recent activity (so AAI doesn’t flag it) but Merus considers it stale by a different measure, or vice versa.
Report 1 returns every case including archived — 600+ rows on most firms, sometimes thousands. The skill shows summary counts and a sample; for the full data, export it to a file (export) rather than scrolling the terminal.
For the five named reports, the skill applies specific formatting. For other report IDs run by number, it falls back to a generic row dump — the data’s there, but not pretty. If you regularly use an unformatted report, it can be added to the named set.
The report reflects Merus’s state at fetch time. If you completed tasks recently and they still show, either the completion didn’t save or there’s caching latency. Re-run; cross-check with show tasks on the specific case.
Part of AAI for MerusCase — code-guarded AI case intelligence for California Workers’ Comp attorneys.