Backlog MCP server has well-structured tool definitions with complete JSON schemas and consistent naming patterns. All 12 tools follow verb_noun convention (get_, add_, update_, delete_). Schemas are properly typed with descriptions for most parameters. However, descriptions are minimal (10-30 chars), lacking context about WHEN to use tools, dependencies, and recovery guidance. Output schemas are not documented. Error handling is absent, no guidance on retryability, user-fixable vs fatal errors, or recovery paths. Parameter descriptions lack format constraints (e.g., date format YYYY-MM-DD is mentioned but not enforced). No tool annotations (readOnlyHint, destructiveHint) despite clear risk levels.
Add a new issue to Backlog
Add a new wiki page to Backlog
Delete an issue from Backlog
Delete a wiki page from Backlog
Get a specific issue from Backlog
Get issues from Backlog
Get a specific project from Backlog
Tool descriptions are too brief (10-30 chars). LLMs cannot determine WHEN to use each tool or distinguish between similar operations. E.g., 'Get issues from Backlog' lacks context about filtering, pagination, or when to call vs backlog_get_issue.
No output schemas documented. LLMs cannot plan downstream tool calls or extract required fields (e.g., does backlog_get_issues return issue IDs for use in backlog_update_issue?). This breaks tool composition.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 52 | 2026-07-28+ | v2 |
Get projects from Backlog
Get a specific wiki page from Backlog
Get wiki pages from Backlog
Update an existing issue in Backlog
Update an existing wiki page in Backlog
No error handling guidance. Destructive tools (backlog_delete_issue, backlog_delete_wiki) lack confirmation or dry-run support. No recovery hints for common failures (e.g., 'Issue not found, try backlog_get_issues() to find the correct ID').
Tool annotations missing. Despite clear risk levels (READ_ONLY, WRITE, DESTRUCTIVE), no readOnlyHint, destructiveHint, or idempotentHint annotations are present. LLMs cannot infer safety properties.
Parameter descriptions lack format constraints and validation rules. E.g., 'Start date of the issue (YYYY-MM-DD format)' is mentioned but not enforced. No enum constraints for statusId, priorityId, etc., forcing LLMs to guess valid values.