Answers the most common cron ops question — "what's running at 3am?" — that n8n's UI doesn't surface anywhere obvious.
Added
- `n8n_list_schedules` — read-only scanner that walks every workflow for `n8n-nodes-base.scheduleTrigger` and legacy `n8n-nodes-base.cron` nodes and decodes each interval rule into a human-readable string. Supported rule fields: `seconds` / `minutes` / `hours` / `days` / `weeks` (with multi-day `triggerAtDay`) / `months` plus raw `cronExpression`. Multi-interval rules emit one row per interval. Each row includes workflow context, node name/type, the human description, the rule field, optional `cronExpression`, and the original `raw` rule for further inspection. Optional `workflowId` (single-workflow scan), `activeOnly` (default true — inactive schedules don't fire), `limit` (default 100, max 250).
Examples of decoded schedules
- `every 2 hours at :30`
- `daily at 03:00`
- `weekly on Monday, Wednesday, Friday at 09:15`
- `monthly on day 1 at 06:00`
- `cron: 0 */6 * * *`
Notes
- Pairs naturally with `n8n_audit_browser_bridge_usage` (which schedules drive my browser-bridge calls?) and `n8n_diff_workflow` (did the cron rule change since the snapshot?).
- 11 new tests; full suite 172/172 green.