Reports
A chart should lead back to the work.
Nine reports over your issues and logged time. Every bar, cell and point opens the issues it counted, a table with the same numbers sits under every chart, and every report exports to CSV.
Reports follow project permissions: a report never counts an issue you could not open yourself.
A burndown that shows its working.
Every point on the line is a row in the table beside it. Pick a day to read its figures; the same rows come out of the CSV.
- Committed at start
- 31
- Scope added since
- +3
- Completed
- 21
- Remaining
- 13
- Ends
- 17 Oct 2026
- Remaining
- Scope
- Ideal
- Non-working day
Daily figures
| Date | Remaining | Ideal | Scope | Added | Completed |
|---|---|---|---|---|---|
| 4 Oct 2026 (non-working day) | 31 | 31 | 31 | 0 | 0 |
| 5 Oct 2026 | 34 | 27.9 | 34 | +3 | 0 |
| 6 Oct 2026 | 31 | 24.8 | 34 | +3 | 3 |
| 7 Oct 2026 | 25 | 21.7 | 34 | +3 | 9 |
| 8 Oct 2026 | 22 | 18.6 | 34 | +3 | 12 |
| 9 Oct 2026 | 14 | 15.5 | 34 | +3 | 20 |
| 10 Oct 2026 (non-working day) | 14 | 15.5 | 34 | +3 | 20 |
| 11 Oct 2026 (non-working day) | 14 | 15.5 | 34 | +3 | 20 |
| 12 Oct 2026 | 13 | 12.4 | 34 | +3 | 21 |
| 13 Oct 2026now | 13 | 9.3 | 34 | +3 | 21 |
| 14 Oct 2026 | - | 6.2 | - | - | - |
| 15 Oct 2026 | - | 3.1 | - | - | - |
| 16 Oct 2026 | - | 0 | - | - | - |
| 17 Oct 2026 (non-working day) | - | 0 | - | - | - |
Past days are the figures recorded that night; today is read when you open the report.
Export CSVacme-burndown-acme-sprint-08.csv
date,remaining,ideal,scope,scope_added,completed,live 2026-10-04,31,31,31,0,0,false 2026-10-05,34,27.9,34,3,0,false 2026-10-06,31,24.8,34,3,3,false 2026-10-07,25,21.7,34,3,9,false 2026-10-08,22,18.6,34,3,12,false 2026-10-09,14,15.5,34,3,20,false 2026-10-10,14,15.5,34,3,20,false 2026-10-11,14,15.5,34,3,20,false 2026-10-12,13,12.4,34,3,21,false 2026-10-13,13,9.3,34,3,21,true 2026-10-14,,6.2,,,,false 2026-10-15,,3.1,,,,false 2026-10-16,,0,,,,false 2026-10-17,,0,,,,false
Hand-drawn product views with fictional data.
Follow every number back to its issues.
Sprint 08 has 13 points left where the ideal line has 9.3. The next question is who is holding the rest, and the answer is one click from the issues themselves.
Ask the question.
Open the project’s Reports and pick Issues per assignee: who is holding the unresolved work?
Scope it the way you search.
A query in the search language, a saved view by name, one or several projects. A query and a view narrow each other.
Open what it counted.
Every bar, slice and cell leads to the issue list with exactly the issues it counts, and no others.
sprint: {Sprint 08} #Unresolved5 issues in ACME. 1 has more than one assignee, so the bars add up to 6.
Alex Lee2 issues · 33.3% of the 6 counted
Open matching issues| Assignee | Issues | Share |
|---|---|---|
| Alex Lee | 2 | 33.3% |
| Casey Kim | 2 | 33.3% |
| Sam Ortiz | 1 | 16.7% |
| Unassigned | 1 | 16.7% |
| Total | 5 | - |
The total counts each issue once. Shares are of the 6 the bars add up to.
sprint: {Sprint 08} #Unresolved project: ACME assignee: @alex2 issues2 issues, the same number as the bar. ACME-15 has two assignees, so it is listed under each of them.
sprint: {Sprint 08} #Unresolved project: ACME assignee: @casey2 issues2 issues, the same number as the bar.
sprint: {Sprint 08} #Unresolved project: ACME assignee: @sam1 issue1 issue, the same number as the bar. ACME-15 has two assignees, so it is listed under each of them.
sprint: {Sprint 08} #Unresolved project: ACME assignee: Unassigned1 issue1 issue, the same number as the bar.
When nothing matches, it says which filter did it.
An empty report names the filters in your words and offers to drop each one in turn, instead of drawing an empty axis. A period is widened to This month or This year rather than dropped. An agent is told the same.
sprint: {Sprint 08} priority: CriticalNo issues match sprint: {Sprint 08}, priority: Critical, in ACME.
Widen it:Drop sprint: {Sprint 08}Drop priority: CriticalEvery project
Hand-drawn product views with fictional data.
Then see where last week went.
A time report adds up the time entries themselves, so a subtask’s time is never counted twice through its parent. In the app, the timesheet opens any cell to the entries behind it, on any issue you can open, whoever logged them.
project: ACMEPeriod Last weekGroup by Work type1d 6h logged in ACME, 5–11 Oct 2026.
| Work type | Spent | Estimate | Share |
|---|---|---|---|
| Development | 1d 2h | -- | 71.4% |
| Testing | 2h 15m | -- | 16.1% |
| Investigation | 1h 45m | -- | 12.5% |
| Total | 1d 6h | -- |
An estimate belongs to a whole issue, so a report by work type shows none. Group by issue or project to see spent against estimate.
1d 6h by three people, 5–11 Oct 2026: the same total as the time report.
| Person | Mon5 | Tue6 | Wed7 | Thu8 | Fri9 | Sat10 | Sun11 | Total |
|---|---|---|---|---|---|---|---|---|
| Alex Lee | 1h 30m | 1h 50m | 45m | 1h 25m | 1h | 6h 30m | ||
| Casey Kim | 1h | 30m | 1h | 30m | 3h | |||
| Sam Ortiz | 45m | 2h | 1h 15m | 30m | 4h 30m | |||
| Total | 3h 15m | 2h 20m | 3h 45m | 3h 10m | 1h 30m | 1d 6h |
Alex LeeTue 6 Oct 20261h 50m
- ACME-10Invite landing shows the inviterDevelopment1h 30m
- ACME-12Invite link blank after it expiresDevelopment20m
A still of the highlighted cell, opened: its entries add up to the 1h 50m in the grid.
Durations read 1w 1d 1h 1m with the organisation’s working day, here eight hours. Hand-drawn product views with fictional data.
Nine reports, three questions.
Each has a table under its chart, opens the issues it counted and exports to CSV. Every issue report takes the same scope: a query, a saved view, projects.
Delivery
Will the sprint land, and what is holding it up?
- BurndownRemaining work across a sprint, in story points, issue count or remaining estimate, against an ideal line that falls only on working days. Added scope is its own line.
- Gantt chartIssues from start date to due date, grouped by epic or assignee, with an arrow for every dependency. Issues missing a date are listed underneath, never dropped.
- Average issue ageHow long issues have been open, per field value, in days, naming the oldest issue in each group.
Distribution
Where is the work, and who has it?
- Issues per assigneeAn issue with two assignees counts once for each, and the report says how many did.
- Issues per projectHow issues spread over the organisation’s projects.
- Issues per fieldStatus, priority, type, tag, sprint, due date or a custom field. Statuses named differently across projects add up by category.
- MatrixTwo fields at once, such as status by assignee. Every cell opens the issues with both values.
Time
Where did the hours go?
- Time reportTime logged over a period by work type, person, issue, project or a work item attribute, against the estimate when grouped by issue or project.
- TimesheetPeople as rows, days as columns, totals both ways. Open a cell for the time entries behind it.
One table for the chart, the CSV and your agent.
Report definitions live on the server, and the web app, the CSV export and the run_report tool all call the same one. These are the Sprint 08 figures from the chart above, as a download and as an agent reads them.
label,value,issues,share Alex Lee,alex,2,33.3 Casey Kim,casey,2,33.3 Sam Ortiz,sam,1,16.7 Unassigned,,1,16.7 Total,,5,
Shares are of the 6 the bars add up to. The Total row counts each issue once, so it reads 5.
run_report {
"report": "issues-per-assignee",
"query": "sprint: {Sprint 08} #Unresolved",
"projects": ["ACME"]
}**Issues per assignee** - in ACME, for `sprint: {Sprint 08} #Unresolved`
| Group | Issues | Share | Series | Search with |
|---|---|---|---|---|
| Alex Lee | 2 | 33.3% | 1 | `sprint: {Sprint 08} #Unresolved project: ACME assignee: @alex` |
| Casey Kim | 2 | 33.3% | 2 | `sprint: {Sprint 08} #Unresolved project: ACME assignee: @casey` |
| Sam Ortiz | 1 | 16.7% | 3 | `sprint: {Sprint 08} #Unresolved project: ACME assignee: @sam` |
| Unassigned | 1 | 16.7% | 4 | `sprint: {Sprint 08} #Unresolved project: ACME assignee: Unassigned` |
5 issues; 1 has more than one value, so the groups add up to 6.
Chart: series 1–4, the 4 largest in their own order. The table is the series.An agent names the report and its choices the way you do, and when a report is empty it is told which filter to drop. MCP and AI agents
Reports follow project permissions.
A report never reveals an issue you could not open directly. Reports manual
Only issues you could open.
A report is scoped to the projects you can read before anything is counted. Projects you are not a member of and deleted issues never reach a bar, a total or a CSV.
Every role can view and export.
Observers included. Anyone who can see a report can download its CSV, with the same numbers on screen.
An agent sees no more than its token.
Through MCP, a report is limited further to the projects the access token allows, and needs the issues:read scope.
Worked out when you open it.
A report shows the time it was computed and does not refresh itself. A result is kept for at most five minutes, and any change in the organisation starts a fresh one.
Questions about reports.
What the numbers count, who can see them and how fresh they are. Definitions for each report are in the manual.
Can the chart, the table and the CSV disagree?
No. Each report is defined once on the server, and the chart, its table, the CSV and the agent’s answer all read that one result. The CSV writes durations as 1w 1d 1h 1m with your organisation’s working day and week, and closes with the totals. Reports manual
Who can see a report?
Every role can open reports and export them. A report never counts an issue you could not open yourself: projects you are not a member of and deleted issues are left out before anything is counted. An agent is further limited to the projects its access token allows, and needs the issues:read scope.
Are the figures live?
A report is worked out when you open it and shows the time it was worked out. It does not refresh on its own. A result is kept for at most five minutes, and any change in your organisation means the next request computes a fresh one.
The burndown records each day’s figures overnight and when the sprint starts and finishes, so later edits do not rewrite how the sprint went; today’s point is read when you open it.
Why can the bars add up to more than the number of issues?
An issue assigned to two people, or carrying two tags, counts once under each. The report states both numbers, as in "5 issues; 1 has more than one assignee, so the bars add up to 6", and the CSV’s total row counts each issue once.
Can an agent run the same reports?
Yes. The run_report tool takes the report’s name and the same choices by name, such as a query, a saved view, a project key or a sprint name. It answers with the table and series the chart is drawn from, and when a report is empty it is told which filter to drop. MCP and AI agents
Open your own sprint’s numbers.
Join the beta, create a project and plan a sprint. Its burndown starts the day the sprint does, and every chart leads back to the issues it counted.