Reports and Routines in the API and MCP
Finished runs are readable from outside Rize
Every report run and routine run is available to the Rize MCP server and the GraphQL API, so another agent can pull last week's team review, read a morning brief, compare it against a prior period, or fold it into something else you are building.
From an MCP client
Once the Rize MCP server is connected, four tools cover finished AI output:
| Tool | What it does |
|---|---|
list_report_runs | Lists runs for your reports, newest first. Filter by report_id or status (pending, running, ready, failed), and page with cursor and limit (default 25, max 100). |
get_report_run | Returns a single run by id, including the parent report's metadata and every AI analysis with its summary and insights. |
list_routine_runs | Lists routine runs for your account, newest first. Filter by routine_id or status, and page with cursor and limit. |
get_routine_run | Returns a single routine run by id, including the parent routine metadata and the briefs it produced. |
See the full tool reference for parameters.
Prompts that work:
- "Pull my last weekly team review and list every recommendation it made."
- "Compare the last three monthly reviews and tell me which trend held."
- "Find any report run that failed this month."
- "Read my latest start-of-day brief and turn it into a 5-bullet plan."
Both tools resolve against your own account. A run you cannot open in Rize is not returned to an MCP client either.
From the GraphQL API
The public API at https://api.rize.io/api/v1/graphql exposes reportRuns, reportRun, routineRuns, and routineRun. Authenticate with an API key from Settings > API as described in accessing the GraphQL API.
query RecentRuns {
reportRuns(status: "ready", first: 5) {
nodes {
publicId
status
startTime
endTime
report {
name
scope
outputFormat
cadence
}
analyses {
status
summary
bodyMd
insights
}
}
}
}
Filter to one report with reportId, and page with the standard connection arguments (see pagination).
What a run returns
| Field | Notes |
|---|---|
publicId | The run's stable handle, and what its hosted URL is built from |
status | pending, running, ready, or failed |
startTime / endTime | The period the run covers, fixed when the run was created |
structuredSections | Section data for Template runs, computed from live data at read time |
sectionsGeneratedAt | When those sections were last computed |
analyses | AI output: status, summary, bodyMd, and insights |
report | The parent report's name, scope, cadence, outputFormat, prompt, and schedule fields |
errorMessage | Populated on failed runs |
Fetch a single report run with reportRun(id: "...").
Fetch routine runs the same way:
query RecentRoutineRuns {
routineRuns(status: "ready", first: 5) {
nodes {
publicId
status
startTime
endTime
routine {
name
templateKey
}
briefs {
title
bodyMd
}
}
}
}
What this is good for
- Chaining agents. A scheduled report does the analysis on Rize's side; your agent reads the finished run instead of re-querying raw time entries.
- Reading routine briefs. A morning or end-of-day routine can become the input to another assistant without repeating the same prompt.
- Feeding other systems. Push a weekly summary into a client update, a status doc, or a channel that does not have a Rize integration.
- Longitudinal questions. Runs accumulate, so "what changed over the last six months" is a read across runs rather than a fresh analysis of a half-year of entries.