Appearance
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:
| Field | Type | Description |
|---|---|---|
id | integer | Project ID |
name | string | Project name |
description | string | Project description |
issues_count | integer | Total number of issues |
archived | boolean | Always false here; present so a reader never has to interpret a missing field |
archived_at | string | null | ISO 8601 timestamp, null while active |
created_at | string | ISO 8601 timestamp |
updated_at | string | ISO 8601 timestamp |
avatar | object | null | The 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 |
pinned | boolean | true 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:
| Field | Type | Description |
|---|---|---|
github_repos | array | Linked 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:
| Field | Type | Description |
|---|---|---|
id | integer | Issue ID |
key | string | Issue key (e.g., KD-0042) |
title | string | Issue title |
description | string | Issue description |
priority | integer | Priority level (0–4) |
type | integer | 0 Feature, 1 Bug, 2 Task |
lane | object | null | {id, title} — current board lane |
assignee | object | null | {id, name} — assigned user |
sprint | object | null | {id, title} — current sprint |
blocked_by_ids | array | Issue IDs blocking this issue |
blocks_ids | array | Issue IDs blocked by this issue |
epic_id | integer | null | Associated epic ID |
branch_links | array | {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_count | integer | Number of attachments on this issue |
created_at | string | ISO 8601 timestamp |
updated_at | string | ISO 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:
| Field | Type | Description |
|---|---|---|
project | object | {id, name} — the issue's project |
order | integer | Position in the lane |
comments | array | {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_links | array | {branch_name, status, status_name, url, created_at, updated_at} — overrides the list shape above with timestamps |
estimated_minutes | integer | null | Time estimate in minutes |
total_minutes_spent | integer | Sum of all time entries |
attachments | array | {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:
| Field | Type | Description |
|---|---|---|
id | integer | Report ID |
title | string | Report title |
description | string | Report description |
source | integer | Source (0 Manual, 1 Api) |
source_name | string | Source name (Manual or Api) |
author_name | string | null | Reporter display name |
project_id | integer | Owning project ID |
created_by | integer | null | User ID that created the report |
promoted_issue_id | integer | null | Issue ID if promoted |
promoted_at | string | null | ISO 8601 timestamp if promoted |
dismissed_at | string | null | ISO 8601 timestamp if dismissed |
dismiss_reason | string | null | Dismiss reason category (e.g. not-planned) if dismissed |
dismiss_reason_note | string | null | Optional free-text note recorded at dismiss time |
attachments | array | {id, filename, mime_type, size, download_url, created_at} — download_url is a stable backend-proxy URL; fetch with your Passport bearer token. |
created_at | string | ISO 8601 timestamp |
updated_at | string | ISO 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:
| Field | Type | Description |
|---|---|---|
id | integer | Lane ID |
title | string | Lane title (e.g., "Backlog", "In Progress", "Done") |
color | string | Lane color |
order | integer | Display position |
issues_count | integer | Number of issues in this lane |
created_at | string | ISO 8601 timestamp |
updated_at | string | ISO 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:
| Field | Type | Description |
|---|---|---|
id | integer | Sprint ID |
title | string | Sprint title |
status | integer | 0 Planned, 1 Active, 2 Completed |
status_name | string | Planned, Active or Completed |
start | string | Start date |
end | string | End date |
issues_count | integer | Number of issues in the sprint |
created_at | string | ISO 8601 timestamp |
updated_at | string | ISO 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:
| Field | Type | Description |
|---|---|---|
id | integer | Epic ID |
title | string | Epic title |
goal | string | null | What the epic delivers, or null |
status | integer | Derived 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_name | string | Derived status name (Open or Closed) |
color | integer | Color code (0–9) |
color_name | string | Color name, e.g. Indigo |
start | string | null | Start date |
end | string | null | End date |
order | integer | Display position |
assignee_id | integer | null | User ID of the assigned project member, or null |
attachments_count | integer | Number of attachments on this epic |
checks_count | integer | Number of What done looks like checks |
wishes_count | integer | Number of Done when wishes |
checked_wishes_count | integer | Number of ticked Done when wishes |
progress | object | {completed, total} — issues in the last lane, and all issues |
issues_count | integer | Number of attached issues |
created_at | string | ISO 8601 timestamp |
updated_at | string | ISO 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:
| Field | Type | Description |
|---|---|---|
id | integer | User ID (use as assignee_id in tools) |
name | string | Full name |
email | string | Email address |
created_at | string | ISO 8601 timestamp |
updated_at | string | ISO 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:
| Field | Type | Description |
|---|---|---|
id | integer | Repository link ID |
name | string | Full repository name (e.g., org/repo) |
url | string | GitHub repository URL |
default_branch | string | Default branch name |
is_primary | boolean | Whether this is the primary repository |
created_at | string | ISO 8601 timestamp |
updated_at | string | ISO 8601 timestamp |
Teams
List Teams
URI: kendo://teams
List all teams the authenticated user belongs to, including team members.
Returns an array of teams:
| Field | Type | Description |
|---|---|---|
id | integer | Team ID |
name | string | Team name |
description | string | Team description |
members | array | {id, name, email} — team members |
created_at | string | ISO 8601 timestamp |
updated_at | string | ISO 8601 timestamp |
See Also
- MCP Overview & Setup — Authentication and connection setup
- Workflows — Using resources and tools together in multi-step flows
- API Overview — API for programmatic access