Get project report data
get_project_report_dataGet all status-report data for a project and date window in one call: work-package changes, open counts, time entries, and team roster.
Instructions
Aggregate everything a status report needs about one project and one date window.
Use it for weekly reports, sprint reviews, standups and "what happened in June" —
one call replaces a dozen filtered listings. It returns, for the window: created,
updated and closed work-package buckets (each {items, total, truncated, more_via} with compact rows), open_total plus open_by_status counts computed
server-side over the whole open set, a time summary (total hours with per-activity
and per-user breakdowns) and the project's membership roster.
Done/in-progress classification is safe here: every row carries is_closed, read
from the status's own isClosed flag on this instance, so it works on translated
and renamed workflows where matching status names would not. closed is exactly
"in a closed status and touched inside the window" — the done-this-week set.
Pitfalls. Counts and row lists are different things: total is always the server's
number, while items stops at an internal cap and then sets truncated and adds a
notes entry — quote the count, not the row count. open_by_status covers the open
set as it is now, not as it was during the window. updated includes the rows in
closed. Time visibility is permission-bound, so a total_hours of 0 can mean "not
allowed to see" rather than "nobody logged time" — an unreadable time ledger and an
unreadable roster each degrade into a notes entry instead of failing the call.
Read notes before calling any number complete.
Cross-references: rendered reports are the weekly_report and daily_standup
prompts, which run this same aggregation server-side; drill into a bucket with
list_work_packages, into hours with list_time_entries, and into one row with
get_work_package.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| to_date | Yes | Last day of the report window, ISO YYYY-MM-DD, inclusive. | |
| from_date | Yes | First day of the report window, ISO YYYY-MM-DD, inclusive. Required and never inferred — 'this week' means different days to different people. | |
| project_id | Yes | Numeric project id or project identifier (the URL slug). Both come from list_projects; the identifier is what appears in /projects/<identifier>. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| time | Yes | Time logged against the project inside the window. | |
| notes | No | In-band markers: which lists were capped, which sources degraded. Read them before quoting a number as complete. | |
| closed | Yes | Work packages in a closed status that changed inside the window — the 'done this week' set. | |
| roster | No | Project membership roster: who may act in the project and with which roles. | |
| created | Yes | Work packages created inside the window (createdAt range filter). | |
| project | No | The project the report covers. | |
| to_date | Yes | Window end, ISO YYYY-MM-DD, inclusive. | |
| updated | Yes | Work packages changed inside the window (updatedAt range filter). Includes the ones that were closed. | |
| from_date | Yes | Window start, ISO YYYY-MM-DD, inclusive. | |
| open_total | No | Open work packages in the project right now, server-reported. | |
| open_by_status | No | Server-side groupBy=status counts over the whole open set, independent of paging. Never re-add these from rows. |