Skip to content

Report Tools ​

Seven tools for the report triage workflow and for sending feedback about Kendo itself: list incoming reports, fetch one by id, create new ones, promote to issues, dismiss, delete, or send feedback to the Kendo team. All report tools require the report-tool feature flag to be active for the tenant.

Triage Workflow ​

The typical flow for handling reports:

  1. List reports to see what's incoming
  2. Get a single report by id (for deep-links or focused triage)
  3. Create reports from external sources (bug reports, feature requests, feedback)
  4. Promote actionable reports to issues on the board
  5. Dismiss reports that aren't actionable (soft-archive)
  6. Delete reports that are spam or duplicates (permanent)

Permission Model ​

  • Listing reports: requires Reports: Read permission
  • Getting a single report: requires Reports: Read permission
  • Creating reports: requires Reports: Create permission
  • Promoting reports: requires Reports: Update permission (All scope)
  • Dismissing reports: requires Reports: Update permission (All scope)
  • Deleting reports: requires Reports: Delete permission (Own scope: own reports only, All scope: any report)
  • Project owners and admins bypass all permission checks

list-reports ​

List reports for a project: the last ones in the triage queue, where new reports land, returned in queue order. Read-only and safe to call repeatedly.

Parameters ​

ParameterTypeRequiredDescription
project_idintegerYesThe project to list reports for
statusintegerNoFilter by status: 0=Pending, 1=Promoted, 2=Dismissed. Omit to match every status.
limitintegerNoMaximum reports to return, taken from the end of the triage queue. Default 20, max 500.

Behavior ​

  • Selects from the end of the triage queue, where new reports land, then returns that slice in queue order. A report moved up the queue can fall outside the slice
  • Capped at limit (default 20). The response carries count, the limit applied, and truncated — when truncated is true more reports matched than came back, so raise limit or narrow with status
  • When status is omitted every status matches; pass status: 0 to fetch only pending reports for triage workflows
  • Each report includes title, description, source, author, status (pending/promoted/dismissed), and timestamps
  • Each report includes an attachments array with {id, filename, mime_type, size, download_url, created_at} — download_url is a stable backend-proxy URL (e.g. https://{tenant}.kendo.dev/api/projects/1/reports/5/attachments/3/download). Fetch it with your Passport bearer token; no expiration.
  • Promoted reports include the promoted_issue_id they were converted to
  • Dismissed reports include a dismissed_at timestamp plus the dismiss_reason category and optional dismiss_reason_note recorded when they were dismissed (both null on reports dismissed before this field existed, or if not yet dismissed)
  • Marked as #[IsReadOnly] and #[IsIdempotent] — safe to call multiple times with no side effects

Example Prompt ​

Show me the incoming reports in the kendo project so I can triage them

get-report ​

Fetch a single report by its ID. Use when a collaborator references a specific report (e.g. "look at report #42"), when following a shared deep-link URL, or when you need full detail on one report without loading the whole list.

Parameters ​

ParameterTypeRequiredDescription
report_idintegerYesThe report ID to fetch

Behavior ​

  • Returns the same per-report shape as list-reports (id, title, description, source, author, status, attachments, timestamps, etc.)
  • Project is derived from the report — no separate project_id needed
  • Marked as #[IsReadOnly] and #[IsIdempotent] — safe to call repeatedly
  • Also available as a resource: kendo://reports/{id}

Example Prompt ​

Pull up report #42 — my colleague just shared it with me

create-report ​

Create a new report in a project. Reports are incoming items that need triage before becoming issues.

Parameters ​

ParameterTypeRequiredDescription
project_idintegerYesThe project to create the report in
titlestringYesReport title (max 255 characters)
descriptionstringYesReport description — details of the bug, feature request, or feedback (max 65,535 characters). Supports markdown, rendered in the report card and detail view; the list preview shows plain text

Behavior ​

  • Source is automatically set to Api for MCP-created reports: the response sends source 1 and source_name Api
  • The report is placed at the end of the project's triage queue automatically
  • Returns the created report with ID, source, and timestamps

Example Prompt ​

Create a bug report in the kendo project: "Sidebar collapses on mobile when switching projects". The sidebar state resets on every navigation.

promote-reports ​

Promote one or more reports to a single issue on the board. This is the core triage action.

Parameters ​

ParameterTypeRequiredDescription
project_idintegerYesThe project containing the reports
report_idsarrayYesArray of report IDs to promote (min 1, at most 500, all must belong to the project)
titlestringYesTitle for the new issue (max 255 characters)
descriptionstringYesDescription for the new issue (max 65,535 characters)
lane_idintegerNoLane to place the issue in. Defaults to the first lane if omitted.
priorityintegerNo0 Highest, 1 High, 2 Medium (default), 3 Low, 4 Lowest
typeintegerNo0 Feature (default), 1 Bug, 2 Task
assignee_idintegerNoUser ID to assign. Use project members to find IDs.
sprint_idintegerNoSprint to add the issue to
epic_idintegerNoEpic to link the issue to
estimated_minutesintegerNoEstimated time in minutes (minimum 0)
blocked_by_idsarrayNoIssue IDs that block this issue (must be in the same project, at most 500)
blocks_idsarrayNoIssue IDs that this issue blocks (must be in the same project, at most 500)

Behavior ​

  • Batch promotion: multiple reports can be promoted to a single issue — useful when several reports describe the same problem
  • Defaults: if lane_id is omitted, the issue is placed in the project's first lane. Priority defaults to Medium, type to Feature
  • No lanes: if lane_id is omitted and the project has no lanes, returns Project has no lanes configured and promotes nothing
  • Order: the new issue is automatically placed at the end of the target lane
  • Validation: all reports must belong to the specified project, and none can be already promoted or dismissed
  • Already promoted: returns an error if any report has already been converted to an issue
  • Already dismissed: returns an error if any report has been dismissed
  • Returns the created issue with key, lane, assignee, sprint, blocking relations, and created_at/updated_at (ISO 8601)

Example Prompt ​

Promote reports 15 and 16 to a high-priority bug: "Sidebar collapses on mobile". Assign it to Jasper in the current sprint.

dismiss-report ​

Dismiss a report to mark it as not actionable. Dismissed reports are soft-archived. Requires a reason category, and accepts an optional free-text note.

Parameters ​

ParameterTypeRequiredDescription
report_idintegerYesThe ID of the report to dismiss
categorystringYesWhy the report is being dismissed: not-planned, duplicate, already-shipped, or invalid
notestringNoOptional free-text context for the dismissal (max 10,000 characters)

Behavior ​

  • Sets dismissed_at, dismiss_reason, and dismiss_reason_note on the report — the report remains visible but is marked as resolved without action
  • Already dismissed: returns an error and leaves the recorded reason unchanged — dismissing a report twice does not overwrite the original category/note, even when the retry sends the same category
  • Already promoted: returns an error if the report has already been converted to an issue
  • The report's project is derived from the report itself — no separate project_id needed
  • Requires Reports: Update permission (All scope)

Example Prompt ​

Dismiss report 23 as a duplicate, it's the same sidebar issue we already promoted

delete-report ​

Permanently delete a report.

Destructive

This action cannot be undone. The report is permanently removed.

Parameters ​

ParameterTypeRequiredDescription
report_idintegerYesThe ID of the report to delete

Behavior ​

  • Permanently removes the report from the database
  • Requires Reports: Delete permission (Own scope: own reports only, All scope: any report)
  • The report's project is derived from the report itself — no separate project_id needed
  • Consider using dismiss-report for soft-archival instead

Example Prompt ​

Delete report 25, it's spam

send-feedback ​

Send feedback, a bug report, a suggestion, or an idea about Kendo itself directly to the Kendo team from your LLM agent — no browser required. Unlike create-report, which writes into the tenant's own project queue, send-feedback targets the central Kendo report queue and works for any tenant.

Parameters ​

ParameterTypeRequiredDescription
titlestringYesShort headline for the feedback (max 255 characters)
descriptionstringYesDetailed feedback body — bug, suggestion, or idea (max 10,000 characters)

Behavior ​

  • Forwards the feedback to the central Kendo report queue via the pre-configured FEEDBACK_REPORT_URL / FEEDBACK_REPORT_TOKEN pipeline
  • source is set to 1 (Api) and author_name is the authenticated user's full name
  • Requires only that the report-tool feature flag is active for the tenant — no project-level permissions needed
  • Returns a simple confirmation payload (status, message)
  • Every invocation is audited via AiMcpLogger

Example Prompt ​

Send feedback to the Kendo team: title "MCP tool is great", description "Love that I can triage reports straight from Claude Code now."

See Also ​

  • Issues — Create and manage issues that reports get promoted to
  • Resources — Read project data via kendo://projects/{id}
  • Workflows — Common multi-step MCP workflows