Server has 21 well-named tools with consistent verb_noun patterns (get*, create*, update*, delete*, add*, remove*). Descriptions are present and contextual (avg ~150 chars), explaining WHEN to use each tool. However, input schemas are severely underspecified: most parameters use generic 'object' type with minimal nested schema detail. Output schemas are completely undocumented, LLMs cannot predict what fields to expect from responses. Error handling is absent from tool definitions. No tool annotations (readOnlyHint, destructiveHint) despite clear risk levels. Parameter descriptions lack format constraints, ranges, and validation rules. Batch operation (createIssueBatch) is good composition, but many tools lack pagination/limit parameters despite returning lists.
Adds a specific label to an existing Linear issue. Use this tool when you need to categorize or tag an issue with a particular label for organization, filtering, or workflow purposes. You must provide both the issueId and labelId (which can be obtained from the getLabels tool).
Adds a new comment to an existing Linear issue. Use this tool when you need to provide feedback, updates, or additional information on an issue. Required fields are 'issueId' and 'body' which contains the comment text. You can use Markdown formatting in the comment body.
Creates a new issue in Linear with the provided details. Use this tool when you need to add a new task, bug report, or feature request to Linear. Required fields are 'title' and 'teamId'. Optional fields include 'description', 'assigneeId', 'priority', 'labelIds', and 'stateId'.
Creates multiple Linear issues in a single operation. Use this tool when you need to add several related issues at once. Each issue in the array requires the same fields as createIssue (title and teamId are required). This is more efficient than creating issues one by one for large batches.
Input schemas use generic 'object' type with no nested property definitions. LLMs cannot infer valid parameter structures, required fields, or constraints. E.g., getIssues filter param lacks pagination (limit, offset), sorting, and field specifications.
No output schemas documented. LLMs cannot predict response structure, field names, or types. Breaks tool chaining, agent cannot know if response includes team_id, project_id, or other IDs needed for downstream calls.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 44 | <=2025-11-25 | v2 |
Creates a new project in Linear with the provided details. Use this tool when you need to set up a new initiative, feature development, or any work requiring project-level organization. Required fields include 'name' and 'teamIds'. Optional fields include 'description', 'state', 'startDate', and 'targetDate'.
Creates a new status update for an existing Linear project. Use this tool when you need to report progress, document milestone completion, or share important project information with stakeholders. Required fields are 'projectId' and 'body' which contains the update text.
Permanently removes an issue from Linear. Use this tool with caution when an issue is no longer needed or was created in error. This action cannot be undone, and all data associated with the issue will be lost.
Retrieves comments associated with Linear issues based on specified filters. Use this tool when you need to read discussion threads, feedback, or updates on issues. You can filter by issueId to get comments for a specific issue, or use other filtering parameters to get comments across multiple issues.
Retrieves detailed information about a specific Linear issue by its ID. Use this tool when you need to look up information about a particular issue, such as its title, description, status, priority, assignee, or other metadata.
Retrieves a list of Linear issues with optional filtering and pagination parameters. Use this tool when you need to browse or search through multiple issues. You can filter by team, state, assignee, or other criteria by specifying these in the params object.
Retrieves all issue labels available in the Linear workspace. Use this tool when you need to see what labels exist, their IDs, names, and colors. This is useful when you want to add labels to issues or filter issues by label.
Retrieves detailed information about a specific Linear project by its ID. Use this tool when you need to look up information about a particular project, such as its name, description, and associated teams. This is useful when you need to reference project details or check project status.
Retrieves a specific update/status report for a Linear project by its ID. Use this tool when you need to view the content of a particular project update, such as progress reports, status changes, or milestone announcements. This helps in tracking project progress over time.
Retrieves a list of updates/status reports for Linear projects with optional filtering. Use this tool when you need to see the history of updates for one or more projects. This helps in tracking project progress, reviewing past status reports, or compiling project history.
Retrieves a list of all Linear projects with optional filtering parameters. Use this tool when you need to browse or search through multiple projects. This is helpful for getting an overview of all ongoing projects, finding relevant projects for an issue, or selecting a project for a new task.
Retrieves detailed information about a specific Linear team by its ID. Use this tool when you need to look up a team's details, such as its name, description, and member list. This is useful when creating issues that need to be assigned to a specific team or when you need to reference team-specific information.
Retrieves a list of all teams in the Linear workspace with optional filtering parameters. Use this tool when you need to browse or search through all available teams. This is helpful when you need to identify the appropriate team for issue assignment, determine which teams exist in the organization, or find team IDs for other operations.
Retrieves detailed information about a specific Linear user by their ID. Use this tool when you need to look up information about a particular user, such as their name, email, display name, or team memberships. This is useful when assigning issues, identifying team members, or determining user roles.
Retrieves a list of all users in the Linear workspace with optional filtering parameters. Use this tool when you need to browse or search through all available users. This is helpful when you need to identify users for issue assignment, find team members, or look up user IDs for other operations.
Removes a specific label from an existing Linear issue. Use this tool when an issue has been incorrectly tagged or when the label is no longer relevant to the issue. You must provide both the issueId and labelId to identify which label to remove from which issue.
Modifies an existing Linear issue with the provided update data. Use this tool when you need to change an issue's properties such as title, description, status, priority, assignee, or labels. Provide the issue ID and only the fields you want to update.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk levels. deleteIssue is DESTRUCTIVE but unmarked. Agents cannot distinguish safe reads from dangerous writes without parsing descriptions.
List tools (getIssues, getComments, getLabels, getProjects, getTeams, getUsers) lack pagination parameters (limit, offset, cursor). Returning unbounded lists risks context window exhaustion and token waste.
Parameter descriptions lack format constraints and validation rules. E.g., issueId is 'ID or identifier' but no pattern/format specified. createIssue requires 'title' and 'teamId' but schema shows generic object with no required field declaration.