The kyzo MCP server: the KyzoDB Work board tools (the manage-board surface).
26 tools with consistent naming (verb_noun pattern: create_, read_, move_, attach_, etc.) and complete input schemas. All tools have descriptions (avg 95 chars, within baseline 34-392). However, descriptions are terse and lack WHEN/WHY context. Output schemas are undocumented, LLMs cannot infer return structure. No error handling guidance. Parameter descriptions are minimal (e.g., 'Issue number' without format/range). No enum constraints on board columns despite fixed set (Backlog, Now, Next, In Progress, Blocked, Done). Missing idempotency and retry guidance for write operations.
Abandon an epic: delete the branch, close the epic, and move it to Done column.
Add a comment to an issue.
Attach a story or task as a sub-issue to an epic.
Mark a task as complete by its task ID (T#) within a story.
Close an issue.
Create a new GitHub project board with the standard schema (Status field with columns: Backlog, Now, Next, In Progress, Blocked, Done) and link it to a repository.
Create a new epic issue with outcome description and optional lede. Returns the issue number.
Output schemas undocumented. No tool describes what fields it returns (e.g., read_issue returns IssueRecord but LLM cannot infer structure). LLMs cannot plan downstream calls or extract required data.
Board column parameter ('column' in read_board) lacks enum constraint. Valid values are fixed (Backlog, Now, Next, In Progress, Blocked, Done) but not declared. LLM may hallucinate invalid column names.
Descriptions lack WHEN/WHY context. 'Move a card to the Backlog column' does not explain when to use move_to_backlog vs move_to_next, or what side effects occur. LLM cannot distinguish between similar tools.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 56 | 2026-07-28+ | v2 |
Create a new story issue with description, sources, ceiling, engineering choice, context, tasks, and definition of done. Returns the issue number.
Create a new task issue. Returns the issue number.
Delete an issue permanently.
Detach a story or task from its parent epic.
Land an epic: merge the branch to main, close the epic, and move it to Done column.
Move a card to the Backlog column.
Move a card to the Blocked column and add a blocking comment.
Move a card to the Done column and remove focus label.
Move a card to the In Progress column and add focus label and @me assignee.
Move a card to the Next column.
Move a card to the Now column.
Survey one column of the board: list all cards in that column with their titles, labels, and focus status.
Fetch a complete epic record: title, state, label, lede, outcome description, and story list.
Fetch a complete issue record: title, state, label, parent epic, sub-issues, body, comments, and linked branches.
Fetch a complete story record: title, state, label, description, sources, ceiling, engineering choice, context, tasks, and definition of done.
Rename a story issue.
Replace the entire body of a story with new description, sources, ceiling, engineering choice, context, tasks, and definition of done.
Start an epic: create a branch, tag the anchor, and move the epic to Now column.
Mark a task as incomplete by its task ID (T#) within a story.
Destructive operations (delete_issue, abandon_epic) lack confirmation or dry-run support. No guidance on recovery. Agents may delete issues without safeguards.
No error handling guidance. Tools do not document what errors can occur, whether they are retryable, or what the LLM should do next. E.g., create_board fails if project already exists, no recovery hint.