Linear MCP by usefulapi
Server Details
Search, read and create Linear issues, projects, teams and cycles.
- Status
- Healthy
- Uptime
- 84.9% over 72 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
- Repository
- m190/usefulapi-mcp
- GitHub Stars
- 0
TDQS
Scored across 8 tools
Each tool has a clearly distinct purpose: add_comment, create_issue, get_issue, list_cycles, list_projects, list_teams, my_issues, and search_issues. There is minimal overlap; for example, search_issues and my_issues could be confused but descriptions clarify the distinction (my_issues is specifically issues assigned to the current user).
All tool names follow a consistent verb_noun pattern with a common 'linear_' prefix, using snake_case throughout (e.g., linear_add_comment, linear_create_issue, linear_get_issue, linear_list_cycles). No deviations in style or casing.
Eight tools is a reasonable count for a focused Linear integration, covering essential read and write operations. It's not excessive, though there is room for a few more tools (e.g., update_issue, list_users) to round out the surface without bloating.
The set covers key operations like creating, getting, searching, and commenting on issues, plus listing teams, projects, and cycles. However, it lacks updates (e.g., updating issue status or priority), deletion, and user management, which are typical for a Linear MCP server and could cause agent limitations.
Available Tools
8 toolslinear_add_commentAdd comment (WRITE — mutates Linear)AInspect
⚠️ WRITE / MUTATING: posts a comment on an issue. Requires the issueId (UUID) and a markdown body. GraphQL: mutation commentCreate.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Comment text in markdown. | |
| issueId | Yes | UUID of the issue to comment on (the `id` field, not the ENG-123 identifier). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, openWorldHint=true and destructiveHint=false, so the safety profile is covered. The description adds the mutation target (commentCreate) and reinforces the write nature, but says nothing about permissions, rate limits, or whether the comment is editable/deletable afterward.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the warning emoji and WRITE label, then the required inputs and GraphQL target. Nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter, fully schema-documented write tool with annotations covering safety and no output schema, the description is nearly complete. Missing only edge-case behavior (e.g. what happens on an invalid issueId).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters are already documented, including the crucial 'id not ENG-123' caveat inside the issueId schema. The description only restates the parameter names and adds no format or syntax detail beyond the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('posts a comment on an issue') and even names the GraphQL mutation (commentCreate), which distinguishes it sharply from read-only siblings like linear_get_issue and linear_search_issues.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the WRITE label and the required inputs, but the description never states when to comment versus when to edit an issue or reply elsewhere, and it names no alternative sibling. Adequate but with a clear gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linear_create_issueCreate issue (WRITE — mutates Linear)AInspect
⚠️ WRITE / MUTATING: creates a new issue in Linear. Requires a teamId (from linear_list_teams) and a title. Optional description (markdown), priority (0=none,1=urgent,2=high,3=medium,4=low), and assigneeId. GraphQL: mutation issueCreate.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Issue title. | |
| teamId | Yes | UUID of the team to create the issue in (from linear_list_teams). | |
| priority | No | 0 none, 1 urgent, 2 high, 3 medium, 4 low. | |
| assigneeId | No | UUID of the user to assign the issue to. | |
| description | No | Issue body in markdown. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, and openWorldHint=true, so the WRITE/mutating framing largely restates structured data. It adds the required-input prerequisite and names the underlying GraphQL mutation, but says nothing about failure modes, validation behavior, or whether the created issue is returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the mutation warning and the two required inputs, which is the right ordering. The trailing 'GraphQL: mutation issueCreate' is low-value for an agent selecting a tool but does not bloat the text materially.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description is the only place an agent could learn what a successful call yields (issue ID, URL), and it omits that. Required inputs, optional fields, and mutation semantics are covered, but the return contract gap leaves it only adequate for a write tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents every parameter including the priority legend and the teamId source. The description's parameter details are essentially duplicative, adding no syntax or format meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('creates a new issue in Linear') and flags the operation class up front. The sibling set (get/list/search/add_comment) contains no other create tool, so the agent can distinguish it immediately.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives the prerequisite dependency explicitly: teamId must come from linear_list_teams, and title is required. It does not describe when-not-to-use or alternative flows (e.g., creating sub-issues or bulk creation), but for a single-purpose create tool the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linear_get_issueGet one issueARead-onlyInspect
Fetch a single issue by its UUID or human identifier (e.g. "ENG-123"), including description, state, assignee and recent comments. Read-only. GraphQL: query issue(id).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Issue UUID or identifier like "ENG-123". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so "Read-only" is redundant, but the description adds real value by disclosing the return contents (description, state, assignee, recent comments) and the underlying GraphQL operation. It stops short of noting comment-count limits or truncation behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact clauses, zero padding, with the core action and key format front-loaded before the read-only and GraphQL details. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description usefully compensates by listing what is returned (including comments) and the query it maps to. It is nearly complete, lacking only edge-case behavior such as error handling for unknown identifiers or comment truncation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With a single parameter at 100% schema description coverage, the schema already documents the id field, and the description's identifier example merely mirrors it. Baseline 3 is appropriate since the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Fetch) and resource (a single issue) and names the exact lookup keys (UUID or human identifier like "ENG-123"). The word "single" clearly distinguishes it from sibling bulk/list tools such as linear_search_issues and linear_my_issues.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by "by its UUID or human identifier" — it is the tool to use when you already hold an identifier. However, it never explicitly says when to prefer it over linear_search_issues or what to do if you only have free text, so the agent must infer the boundary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linear_list_cyclesList cyclesARead-onlyInspect
List cycles (sprints), optionally scoped to a team by key, with number, name and start/end dates. Read-only. GraphQL: query cycles(filter).
| Name | Required | Description | Default |
|---|---|---|---|
| first | No | Max cycles to return. Default 25. | |
| teamKey | No | Team key, e.g. "ENG", to scope cycles to one team. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so 'Read-only' is largely redundant with structured data. The description adds a GraphQL mapping hint and the field shape of results, which is useful but thin behavioral context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One front-loaded sentence packed with the scope, optional filter, and returned fields, followed by a short GraphQL tag. Efficient overall, though the GraphQL suffix is marginal implementation detail rather than agent-facing guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description helpfully names returned fields (number, name, start/end dates), covering the gap. It does not state result ordering or pagination behavior, but for a low-complexity two-parameter read tool this is nearly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (both 'first' and 'teamKey' are documented with examples), so the schema carries the parameter burden. The description's 'team by key' restates the schema rather than adding format, defaults, or constraints beyond it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('List cycles'), disambiguates the domain term with '(sprints)', and names the returned fields. 'Cycles' is a distinct resource from every sibling tool (issues, projects, teams, comments), so an agent can select it without inspecting schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Optionally scoped to a team by key' describes the parameter behavior rather than when to use this tool versus alternatives. No when-not conditions or sibling alternatives are named, so usage is only implied by the resource name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linear_list_projectsList projectsBRead-onlyInspect
List projects in the workspace (id, name, state, progress, target date). Read-only. GraphQL: query projects.
| Name | Required | Description | Default |
|---|---|---|---|
| first | No | Max projects to return. Default 50. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so "Read-only" merely restates structured data. The only added information is the implementation detail "GraphQL: query projects," which is not behaviorally useful (no pagination, ordering, or result-set limits beyond the schema). With annotations covering the safety profile, this is adequate but adds little.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded and compact: the core action and returned fields come first, followed by safety and implementation notes. Slightly redundant because "Read-only" duplicates the readOnlyHint annotation rather than adding information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list tool with full schema coverage and annotations, the description is sufficient, and enumerating returned fields compensates for the absence of an output schema. Missing only guidance on ordering/pagination behavior and when to prefer sibling list tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with a single parameter ("first") fully documented including default and maximum, so the baseline of 3 applies. The description adds no additional meaning about the parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ("List projects in the workspace") and enumerates the returned fields, which lets an agent distinguish it from issue/cycle/team siblings. It does not explicitly name or contrast a sibling, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no exclusion or alternative named (e.g., no hint about filtering or how it differs from linear_list_cycles/linear_list_teams beyond the resource). The agent must infer usage purely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linear_list_teamsList teamsARead-onlyInspect
List the teams in the workspace (id, key, name). Use a team's id for linear_create_issue or its key for linear_search_issues. Read-only. GraphQL: query teams.
| Name | Required | Description | Default |
|---|---|---|---|
| first | No | Max teams to return. Default 50. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
'Read-only' merely restates readOnlyHint=true from the annotations, earning no credit. The only extra disclosure is 'GraphQL: query teams', an implementation note; nothing is said about pagination/limits or auth needs beyond what the schema and annotations already provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Short and front-loaded, with purpose first and usage routing second. 'Read-only' is redundant with the annotations and 'GraphQL: query teams' is mildly filler, but nothing is verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description helpfully enumerates the returned fields (id, key, name) and points to how they are consumed downstream. The single pagination parameter is covered by the schema, so only minor gaps remain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single 'first' parameter is fully documented in the schema ('Max teams to return. Default 50.'). The description adds no syntax or format detail beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb+resource ('List the teams in the workspace') with the returned fields (id, key, name) named inline. It is clearly distinguishable from siblings like linear_list_projects and linear_list_cycles, which list different resources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent downstream: use a team's id for linear_create_issue, or its key for linear_search_issues. No sibling lists teams, so no exclusion is needed, but it stops short of stating when a caller should avoid this call (e.g., when teams are already cached).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linear_my_issuesMy assigned issuesBRead-onlyInspect
List issues assigned to the current user (the API key's owner / OAuth actor) via viewer.assignedIssues. Read-only. GraphQL: query viewer { assignedIssues }.
| Name | Required | Description | Default |
|---|---|---|---|
| first | No | Max issues to return. Default 25. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so 'Read-only' is redundant. The description does add real context the annotations cannot: the identity semantics of 'viewer' (API key owner / OAuth actor) and the underlying GraphQL call. It omits return shape and pagination behavior, and the redundancy of restating the read-only hint keeps it at a 3.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact fragments, front-loaded with the scope before implementation detail. 'Read-only' duplicates the annotation and the raw GraphQL query string is developer-facing padding, but overall it is tight and readable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-optional-parameter read tool with annotations covering safety, the description covers identity and mechanism. However, no output schema exists, so the description could have described the returned issue shape or pagination, and it does not; it is adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter ('first') and schema description coverage is 100%, so the schema already documents the maximum, default, and exclusivity. The description adds nothing about the parameter, which is the expected baseline when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) plus resource (issues assigned to the current user), and clarifies who 'current user' means (API key owner / OAuth actor via viewer.assignedIssues). It doesn't explicitly contrast itself with linear_search_issues, which is the sibling an agent would most likely confuse it with, so it falls short of 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The scope 'assigned to the current user' implies when the tool applies, but there is no explicit when-to-use statement, no exclusions, and no pointer to alternatives such as linear_search_issues for broader querying. Usage is inferable but not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linear_search_issuesSearch / filter issuesBRead-onlyInspect
Find issues, optionally filtered by a text query (matches title), team key, workflow-state name, or assignee email. Read-only. GraphQL: query issues(filter, first).
| Name | Required | Description | Default |
|---|---|---|---|
| first | No | Max issues to return. Default 25. | |
| query | No | Free text to match against issue titles (containsIgnoreCase). | |
| state | No | Workflow-state name, e.g. "In Progress", "Todo", "Done". | |
| teamKey | No | Team key, e.g. "ENG". Filters to that team. | |
| assigneeEmail | No | Filter to issues assigned to this user email. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true and openWorldHint=true. The description merely repeats 'Read-only' and adds a GraphQL implementation note, but does not disclose additional behavioral traits such as authentication requirements, rate limits, return format, or pagination beyond what the schema's 'first' parameter already implies.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loads the purpose and filters, with no wasted words. The 'Read-only' sentence duplicates the annotation and the GraphQL note is not strictly necessary for invocation, but overall it remains brief and readable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given full schema coverage and read-only annotations, the description contains enough to invoke the tool correctly for a filtered search. It lacks guidance on choosing among sibling tools and does not describe return values, but no output schema exists and the core invocation context is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents every parameter in detail. The description restates the filter fields but adds no new semantic meaning (e.g., matching syntax, edge cases) beyond what the schema provides, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Find') and resource ('issues') and enumerates the filter dimensions, making the purpose clear. It does not explicitly differentiate this general search from sibling tools like linear_my_issues or linear_get_issue, leaving some ambiguity for an agent choosing among them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the filtering options ('optionally filtered by...'), which suggests the tool is for searching issues with optional constraints. However, there is no explicit when-to-use guidance, no exclusions, and no mention of when to prefer it over linear_my_issues or linear_get_issue.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Related MCP Connectors
Find and manage issues, projects, and documents in your Linear workspace.
Linear MCP — wraps the Linear GraphQL API (OAuth)
Shortcut project management. Create, update, search stories and manage workflows.
Search and read your meeting notes, transcripts and action items, and create notes in Reline.
Related MCP Servers
- FlicenseAqualityBmaintenanceEnables reading and managing Linear issues by human-readable ID, with tools for searching, creating, updating, commenting, and resolving teams, states, labels, and assignees by name.11-
- AlicenseAqualityDmaintenanceEnables AI agents to search, create, update, and manage Linear issues through natural language, with support for teams, workflows, and comments.91,052 npm1MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to interact with Linear workspaces by listing, retrieving, creating, and searching issues, and listing teams via the Linear GraphQL API.407 npmMIT
- AlicenseBqualityDmaintenanceEnables interaction with Linear's API to manage issues, projects, and teams. Supports creating, updating, searching, and deleting issues, along with project management and team operations through API key authentication.13256 npmMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.