Skip to content

MCP Resources ​

Resources provide read-only access to kendo data. Unlike tools, resources don't modify anything — they're used to discover IDs, check state, and gather context before calling tools.

All resources respect authorization: you only see data for projects your teams have access to.

Projects ​

List Projects ​

URI: kendo://projects

List the active projects accessible to the authenticated user. Archived projects are excluded — read kendo://projects/archived for those.

Returns an array of projects:

FieldTypeDescription
idintegerProject ID
namestringProject name
descriptionstringProject description
issues_countintegerTotal number of issues
archivedbooleanAlways false here; present so a reader never has to interpret a missing field
archived_atstring | nullISO 8601 timestamp, null while active
created_atstringISO 8601 timestamp
updated_atstringISO 8601 timestamp
avatarobject | nullThe project avatar as absolute avif and webp URLs, the same object as the REST API's project avatar, or null when the project has none
pinnedbooleantrue when the calling user pinned the project in Kendo's sidebar

List Archived Projects ​

URI: kendo://projects/archived

List the archived projects accessible to the authenticated user — finished work deliberately kept out of kendo://projects. Read this when a project you expect is missing from that list, or when you need history from completed work.

Returns the same fields as the list above except pinned, with archived always true and archived_at always set.

Archiving hides a project from listings only. Every other resource keeps working on it unchanged: kendo://projects/{id}, its issues, lanes, sprints, epics and members are all readable while it is archived.

Get Project ​

URI: kendo://projects/{id}

Get details of a specific project, including linked GitHub repositories.

Returns a single project with all fields from the list above except pinned, plus:

FieldTypeDescription
github_reposarrayLinked repositories with id, name (full name), and other repo details

Issues ​

List Project Issues ​

URI: kendo://projects/{id}/issues

List all issues in a project with lane, assignee, sprint, blocking relations, and branch links.

Returns an array of issues:

FieldTypeDescription
idintegerIssue ID
keystringIssue key (e.g., KD-0042)
titlestringIssue title
descriptionstringIssue description
priorityintegerPriority level (0–4)
typeinteger0 Feature, 1 Bug, 2 Task
laneobject | null{id, title} — current board lane
assigneeobject | null{id, name} — assigned user
sprintobject | null{id, title} — current sprint
blocked_by_idsarrayIssue IDs blocking this issue
blocks_idsarrayIssue IDs blocked by this issue
epic_idinteger | nullAssociated epic ID
branch_linksarray{branch_name, status, status_name, url} — linked branches; status is 0 Linked, 1 Open, 2 Merged, 3 Closed, and status_name is its name
attachments_countintegerNumber of attachments on this issue
created_atstringISO 8601 timestamp
updated_atstringISO 8601 timestamp

Get Single Issue ​

URI: kendo://issues/{id} — also accepts a key string, e.g. kendo://issues/KD-0042

Get full details of a single issue by numeric ID or key, including comments and time tracking data.

Returns a single issue with all fields from the project issues list above, plus:

FieldTypeDescription
projectobject{id, name} — the issue's project
orderintegerPosition in the lane
commentsarray{id, content, author: {id, name}, parent_id, is_pinned, liker_ids, attachments, created_at, updated_at} — full comment history; parent_id is the comment a reply answers, null for a top-level comment
branch_linksarray{branch_name, status, status_name, url, created_at, updated_at} — overrides the list shape above with timestamps
estimated_minutesinteger | nullTime estimate in minutes
total_minutes_spentintegerSum of all time entries
attachmentsarray{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/issues/2/attachments/3/download). Fetch it with your Passport bearer token; no expiration.

When to Use

Use kendo://issues/{id} (or kendo://issues/KD-0042) when you need full details (comments, time) for a specific issue. Use kendo://projects/{id}/issues when you need an overview of all issues in a project.

Reports ​

Get Report ​

URI: kendo://reports/{id}

Get full details of a single report by ID. Use when a collaborator references a specific report, when following a shared deep-link URL, or when focused triage on one report is needed without loading the whole list.

Requires the report-tool feature flag and the same permissions as list-reports.

Returns a single report object:

FieldTypeDescription
idintegerReport ID
titlestringReport title
descriptionstringReport description
sourceintegerSource (0 Manual, 1 Api)
source_namestringSource name (Manual or Api)
author_namestring | nullReporter display name
project_idintegerOwning project ID
created_byinteger | nullUser ID that created the report
promoted_issue_idinteger | nullIssue ID if promoted
promoted_atstring | nullISO 8601 timestamp if promoted
dismissed_atstring | nullISO 8601 timestamp if dismissed
dismiss_reasonstring | nullDismiss reason category (e.g. not-planned) if dismissed
dismiss_reason_notestring | nullOptional free-text note recorded at dismiss time
attachmentsarray{id, filename, mime_type, size, download_url, created_at} — download_url is a stable backend-proxy URL; fetch with your Passport bearer token.
created_atstringISO 8601 timestamp
updated_atstringISO 8601 timestamp

When to Use

Use kendo://reports/{id} when you have a report ID (e.g. from a deep-link URL or a colleague). Use list-reports to work through a project's triage queue — it returns the 20 newest by default, so raise limit or check truncated when you need the whole queue.

Board ​

List Lanes ​

URI: kendo://projects/{id}/lanes

List all board lanes in a project, ordered by position.

Returns an array of lanes:

FieldTypeDescription
idintegerLane ID
titlestringLane title (e.g., "Backlog", "In Progress", "Done")
colorstringLane color
orderintegerDisplay position
issues_countintegerNumber of issues in this lane
created_atstringISO 8601 timestamp
updated_atstringISO 8601 timestamp

Sprints ​

List Sprints ​

URI: kendo://projects/{id}/sprints

List all sprints in a project, ordered by start date (oldest first).

Returns an array of sprints:

FieldTypeDescription
idintegerSprint ID
titlestringSprint title
statusinteger0 Planned, 1 Active, 2 Completed
status_namestringPlanned, Active or Completed
startstringStart date
endstringEnd date
issues_countintegerNumber of issues in the sprint
created_atstringISO 8601 timestamp
updated_atstringISO 8601 timestamp

Epics ​

List Epics ​

URI: kendo://projects/{id}/epics

List all epics in a project, each as get-epics' list form sends the epic itself, without its issue rows. Ordered by display order. No description, checks, wishes or comments: read one epic with get-epics and epic_id for those.

Returns an array of epics:

FieldTypeDescription
idintegerEpic ID
titlestringEpic title
goalstring | nullWhat the epic delivers, or null
statusintegerDerived status, 0 Open or 1 Closed: with Done when wishes, Closed when every wish is ticked; without, when the epic has issues and every one is in the last lane
status_namestringDerived status name (Open or Closed)
colorintegerColor code (0–9)
color_namestringColor name, e.g. Indigo
startstring | nullStart date
endstring | nullEnd date
orderintegerDisplay position
assignee_idinteger | nullUser ID of the assigned project member, or null
attachments_countintegerNumber of attachments on this epic
checks_countintegerNumber of What done looks like checks
wishes_countintegerNumber of Done when wishes
checked_wishes_countintegerNumber of ticked Done when wishes
progressobject{completed, total} — issues in the last lane, and all issues
issues_countintegerNumber of attached issues
created_atstringISO 8601 timestamp
updated_atstringISO 8601 timestamp

Members ​

List Project Members ​

URI: kendo://projects/{id}/members

List all users who are members of a project (via team or direct membership). Useful for finding assignee_id values.

Returns an array of users, ordered by name:

FieldTypeDescription
idintegerUser ID (use as assignee_id in tools)
namestringFull name
emailstringEmail address
created_atstringISO 8601 timestamp
updated_atstringISO 8601 timestamp

GitHub Repositories ​

List Linked Repos ​

URI: kendo://projects/{id}/github-repos

List all GitHub repositories linked to a project. Primary repos are listed first.

Returns an array of repositories:

FieldTypeDescription
idintegerRepository link ID
namestringFull repository name (e.g., org/repo)
urlstringGitHub repository URL
default_branchstringDefault branch name
is_primarybooleanWhether this is the primary repository
created_atstringISO 8601 timestamp
updated_atstringISO 8601 timestamp

Teams ​

List Teams ​

URI: kendo://teams

List all teams the authenticated user belongs to, including team members.

Returns an array of teams:

FieldTypeDescription
idintegerTeam ID
namestringTeam name
descriptionstringTeam description
membersarray{id, name, email} — team members
created_atstringISO 8601 timestamp
updated_atstringISO 8601 timestamp

See Also ​