A Model Context Protocol (MCP) server implementation for the Linear GraphQL API that enables AI assistants to interact with Linear project management systems.
Scoring was not performed
Critical tool definitions missing from visible source code. linear_searchIssues, linear_createIssue, linear_updateIssue, and linear_createComment are listed in package.json but no input schemas or detailed descriptions are provided. Per HARD SCORING RULES, tools without visible schemas score 0 on schema dimension.
5 read-only discovery tools (linear_getViewer, linear_getOrganization, linear_getUsers, linear_getLabels, linear_getTeams) listed in package.json lack any visible parameter schemas or detailed descriptions. No output schemas documented. Input schemas are marked as {} (empty object), making them impossible to validate.
No error handling or recovery guidance documented anywhere. Tools offer no guidance on retryability, what to do on failure, or how to self-correct after an error. Pattern violation: recovery-guide.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 14 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 42 | - | v1 |
Tool definitions scattered across multiple files (package.json, src/tools/definitions/*.ts, src/tools/handlers/*.ts) with inconsistent documentation. Tools defined in handlers lack visible input/output schema definitions, while those in definitions/ have better schemas. This fragmentation risks incomplete tool registration.
No validation of output structure. Many tools return complex nested objects (e.g., issues with team, cycle, assignee objects) but no schema constraints ensure consistent field presence. LLMs cannot predict what fields will be present.
No pagination limits documented. Tools like linear_getIssues accept a limit parameter but no max value is specified. Without pagination caps (should be 20-50 per pattern), agents risk fetching thousands of items and exhausting context windows.
Parameter descriptions often generic or missing context. For example, 'ID or identifier of the issue' appears multiple times but does not explain what formats are accepted (e.g., 'PROJ-123' vs 'uuid'). Pattern violation: tool-description.
Enum constraints not used. Fields like 'state' in linear_createProject description lists examples ('planned', 'started', 'paused', 'completed', 'canceled') but does not declare enum in schema. LLMs may guess wrong values.
Destructive/irreversible operations lack confirmation or dry-run support. linear_archiveIssue, linear_deleteIssue, and linear_duplicateIssue (marked REVERSIBLE/WRITE) offer no pre-execution safety gate. Agents can accidentally archive or delete issues without confirmation.