MCP server for Laver — drive kanban boards, tickets and the wiki from an agent.
Laver MCP has 13 tools with consistent naming (verb_noun pattern: workspace_read, board_read, ticket_create, etc.) and complete input schemas with typed parameters. Descriptions are present but brief (10-80 chars), below the 50-200 char LLM-optimized baseline. Parameter descriptions are minimal or absent in several tools. Output schemas are not documented. Error handling exists but lacks recovery guidance. No tool annotations (readOnlyHint, destructiveHint) despite clear risk stratification in the tool list.
Delete an attachment.
Read an attachment: download its content.
Upload an attachment to a ticket or wiki page.
Read a board: its name, description, columns, and all tickets in it.
Create a ticket in a board.
Delete a ticket.
Read a ticket: its title, description, status, assignee, and all other fields.
Update a ticket's fields: title, description, status, assignee, and others.
Descriptions are too brief (10-80 chars vs. 50-200 char baseline). LLMs cannot determine when to select tools or distinguish similar ones (e.g., ticket_read vs. ticket_update). Expand each to explain WHAT, WHEN, and WHAT IT RETURNS.
No output schemas documented. LLMs cannot plan downstream calls or extract required fields (e.g., board_uuid from board_read to pass to ticket_create). Add explicit return type documentation for each tool.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk stratification. Destructive tools (ticket_delete, wiki_delete, attachment_delete) should be marked to enable agent safety checks and confirmation patterns.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 51 | 2026-07-28+ | v2 |
Create a wiki page.
Delete a wiki page.
Read a wiki page: its title, body, and all other fields.
Update a wiki page: its title, body, and other fields.
Read the workspace: its name, UUID, and the list of boards.
Error handling lacks recovery guidance. LaverError class returns status + body but does not categorize errors as retryable, user-fixable, or fatal. Agents cannot determine next steps on failure.
attachment_upload parameter 'file' description is vague ('file content or path'). Does not specify format (base64, raw bytes, file path string?), size limits, or supported MIME types. LLMs will guess wrong.