Linear MCP Server
Provides tools for interacting with Linear's GraphQL API, enabling retrieval and modification of users, teams, projects, and issues, as well as creating and updating issues, managing labels, adding comments, and creating projects.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Linear MCP Servercreate a new bug issue titled 'Login page crashes on mobile' in the Frontend team"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Linear MCP Server
A Model Context Protocol (MCP) server implementation for the Linear GraphQL API that enables AI assistants to interact with Linear project management systems.
Features
Access to Linear's GraphQL API through MCP tools
Authentication via Linear API key
Retrieve and modify data related to users, teams, projects, and issues
Create, update and comment on issues
Add and remove labels
Create projects
Comprehensive documentation of available tools
Related MCP server: Linear MCP Server
Installation
Installing via Smithery (Recommended)
To install Linear MCP Server for Claude Desktop automatically via Smithery:
npx -y @smithery/cli install @emmett.deen/linear-mcp-server --client claudeManual Configuration
After installation, add the following to your MCP settings file:
{
"mcpServers": {
"linear": {
"command": "npx",
"args": ["-y", "@emmett.deen/linear-mcp-server"],
"env": {
"LINEAR_API_KEY": "your_linear_api_key_here"
}
}
}
}Client-Specific Configuration Locations
Claude Desktop:
~/Library/Application Support/Claude/claude_desktop_config.jsonClaude VSCode Extension:
~/Library/Application Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.jsonGoMCP:
~/.config/gomcp/config.yaml
Manual Installation
Clone the repository
git clone https://github.com/yourusername/Linear-MCP-Server.git
cd Linear-MCP-ServerInstall dependencies
npm installBuild the project
npm run buildCreate a
.envfile with your Linear API token
LINEAR_API_KEY=your_linear_api_key_hereStart the server
npm startAvailable Tools
See TOOLS.md for a complete list of available tools and planned features.
Overview
Linear-MCP-Server bridges the gap between Claude (AI assistant) and Linear (project management tool) by implementing the MCP protocol. This allows Claude to:
Retrieve issues, projects, teams, and other data from Linear
Create and update issues
Change issue status
Assign issues to team members
Add comments
Create projects and teams
The server uses Linear's GraphQL API and authenticates via user tokens (not OAuth) for simplicity.
Getting Started
Prerequisites
Node.js (v18+)
NPM or Yarn
Linear API token
Installation
# Install globally
npm install -g @emmett.deen/linear-mcp-server
# Or clone and install locally
git clone https://github.com/yourusername/Linear-MCP-Server.git
cd Linear-MCP-Server
npm install
npm link # Makes the package available globallyRunning the Server
Run the server with your Linear API token:
linear-mcp-server --token YOUR_LINEAR_API_TOKENOr set the token in your environment and run without arguments:
export LINEAR_API_TOKEN=YOUR_LINEAR_API_TOKEN
linear-mcp-serverUsing with Claude Desktop
To use this MCP server with Claude Desktop:
Enable Developer Mode in Claude Desktop (from the menu bar)
Go to Settings > Developer options
Click "Add Server"
Configure with the following settings:
Name: Linear MCP Server
Type: Local Process
Command: linear-mcp-server
Arguments: --token YOUR_LINEAR_API_TOKEN
Alternatively, manually edit the config file:
{
"mcp": {
"servers": [
{
"name": "Linear MCP Server",
"transport": {
"type": "stdio",
"command": "linear-mcp-server",
"args": ["--token", "YOUR_LINEAR_API_TOKEN"]
}
}
]
}
}Save the config
Restart Claude Desktop (quit completely and reopen)
You should now see Linear MCP Server available as a tool in Claude
Example Claude Prompts
Once connected to Claude Desktop, you can use prompts like:
"Show me all my Linear issues"
"Create a new issue titled 'Fix login bug' in the Frontend team"
"Change the status of issue FE-123 to 'In Progress'"
"Assign issue BE-456 to John Smith"
"Add a comment to issue UI-789: 'This needs to be fixed by Friday'"
Development
To develop locally:
# Clone the repository
git clone https://github.com/yourusername/Linear-MCP-Server.git
cd Linear-MCP-Server
# Install dependencies
npm install
# Run in development mode
npm run dev -- --token YOUR_LINEAR_API_TOKENExtending the Server
To add new tools to the server:
Follow the implementation guide in the TOOLS.md document
Make sure to follow the established code structure in the
src/directoryUpdate the documentation to reflect your changes
Developing and Contributing
Setup Development Environment
Clone the repository
git clone https://github.com/yourusername/Linear-MCP-Server.git
cd Linear-MCP-ServerInstall dependencies
npm installStart in development mode
npm run devPublishing to npm
To publish this package to npm:
Update the version in package.json
npm version patch # or minor, or majorBuild the project
npm run buildMake sure you've already logged in to npm
npm loginPublish to npm
npm publish --access publicFor Smithery registry, you'll need to work with the Smithery team to get your server listed in their catalog.
License
This project is licensed under the MIT License - see the LICENSE file for details.
Available Tools
32 toolslinear_addIssueLabelB
Add a label to an issue in Linear
| Name | Required | Description | Default |
|---|---|---|---|
| issueId | Yes | ID or identifier of the issue to add the label to (e.g., ABC-123) | |
| labelId | Yes | ID of the label to add to the issue |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It only says 'Add a label,' implying mutation, but does not disclose idempotency, side effects, permissions, or response 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?
The description is a single sentence with no fluff. While concise, it could be more informative without becoming verbose, so it earns a 4 rather than a 5.
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 the simplicity of the tool (2 required params, no output schema), the description lacks important context such as error cases, idempotency, and expected outcomes.
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 baseline is 3. The description adds no extra meaning beyond the schema's parameter descriptions ('ID or identifier' and 'ID of the label').
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 clearly states the action ('Add a label to an issue in Linear'), using a specific verb and resource. It distinguishes from siblings like linear_removeIssueLabel and linear_createIssue.
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?
No guidance is provided on when to use this tool versus alternatives. Prerequisites like the existence of the label or issue are not mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linear_addIssueToCycleC
Add an issue to a cycle
| Name | Required | Description | Default |
|---|---|---|---|
| issueId | Yes | ID or identifier of the issue to add to the cycle | |
| cycleId | Yes | ID of the cycle to add the issue to |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must fully disclose behavior, but it only states the action. It omits critical details like whether the issue can already be in another cycle (replacement vs. error), required permissions, or side effects. The description adds no behavioral context beyond the name.
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 a single, complete sentence with no filler. Every word is necessary and directly addresses the tool's purpose. Efficient and front-loaded.
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 two-parameter mutation tool with no annotations or output schema, the description lacks essential behavioral context (e.g., idempotency, error states). It is not complete enough for an agent to use reliably without further assumptions.
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% with concise parameter descriptions. The tool description adds no extra meaning beyond what the schema already provides. Baseline 3 is appropriate since the schema carries the parameter documentation well.
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 'Add an issue to a cycle' uses a specific verb and resource, making the core action clear. However, it does not differentiate from sibling 'add' tools like linear_addIssueLabel or linear_addIssueToProject, missing an opportunity to clarify uniqueness.
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?
No guidance is provided on when to use this tool versus alternatives (e.g., linear_removeIssueFromCycle for removal). There are no exclusions, prerequisites, or context about typical workflows, leaving the agent to infer usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linear_addIssueToProjectC
Add an existing issue to a project
| Name | Required | Description | Default |
|---|---|---|---|
| issueId | Yes | ID or identifier of the issue to add to the project | |
| projectId | Yes | ID of the project to add the issue to |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits, but it only states 'Add' without revealing side effects (e.g., whether the issue must not already be in the project, or if it updates existing associations). Minimal transparency beyond the basic action.
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 a single sentence with no wasted words, achieving conciseness. However, the brevity limits the inclusion of useful context, so it could be better structured by adding usage hints.
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 the tool's simplicity (2 required params, no output schema), the description is minimally adequate. It lacks completeness for an agent that might need to know if the issue must exist or if the operation is idempotent, but for a basic add, it suffices.
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?
The input schema has 100% coverage with descriptions for both parameters ('ID or identifier' for issueId and 'ID of the project' for projectId). The description adds no additional meaning beyond the schema, so the baseline of 3 is appropriate.
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 clearly states the action and resource: 'Add an existing issue to a project'. It uses a specific verb and resource, making the purpose understandable. However, it does not distinguish this tool from siblings like linear_addIssueToCycle or linear_removeIssueFromProject, which weakens differentiation.
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 description provides no guidance on when to use this tool versus alternatives or conditions like 'when the issue is not already in a project'. There is no mention of prerequisites or context, leaving the agent to infer usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linear_archiveIssueC
Archive an issue
| Name | Required | Description | Default |
|---|---|---|---|
| issueId | Yes | ID or identifier of the issue to archive (e.g., ABC-123) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and the description does not disclose side effects, reversibility, permissions, or state changes beyond archiving. Agent lacks critical behavioral context.
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?
Description is only one sentence, highly concise. No wasted words, but could be front-loaded with more context without becoming 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?
For a simple tool with no output schema and no annotations, the description is incomplete. Missing details on effects, permissions, and alternative actions.
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 covers 100% of parameter description, so baseline is 3. The description adds no additional meaning beyond what is in 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?
The description 'Archive an issue' clearly states the action and resource. It distinguishes from sibling archive tools by focusing on 'issue', but does not elaborate on scope or implications.
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?
No guidance on when to use this tool versus alternatives (e.g., updateIssue, deleteIssue). Missing context on prerequisites or consequences.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linear_assignIssueB
Assign an issue to a user
| Name | Required | Description | Default |
|---|---|---|---|
| issueId | Yes | ID or identifier of the issue to assign (e.g., ABC-123) | |
| assigneeId | Yes | ID of the user to assign the issue to, or null to unassign |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states the basic action without mentioning permissions, idempotency, effects if already assigned, or response behavior. This is insufficient for an agent to understand side effects.
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 a single concise sentence with no unnecessary words. It is effectively front-loaded. However, it could be slightly more informative without sacrificing conciseness.
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 mutation tool with 2 well-described parameters and no output schema, the description is minimally adequate. However, it lacks context about side effects, prerequisites, and response format, which would help an agent use it safely among many siblings.
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?
The input schema already provides clear descriptions for both parameters (issueId and assigneeId) with examples. The description adds no additional semantic meaning. Since schema coverage is 100%, a baseline of 3 is appropriate.
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 clearly states the action ('assign') and the resource ('issue to a user'). It distinguishes from many siblings like `linear_createIssue` or `linear_updateIssue` by focusing on assignment. However, it does not explicitly differentiate from tools like `linear_transferIssue`, which might overlap.
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 description implies when to use (when assigning an issue to a user) but provides no explicit guidance on when not to use or alternatives. Siblings exist for updating other issue fields or transferring, but no exclusions or context are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linear_convertIssueToSubtaskC
Convert an issue to a subtask
| Name | Required | Description | Default |
|---|---|---|---|
| issueId | Yes | ID or identifier of the issue to convert (e.g., ABC-123) | |
| parentIssueId | Yes | ID or identifier of the parent issue (e.g., ABC-456) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and the description fails to disclose behavioral traits such as required permissions, side effects (e.g., state changes), or result format. The agent lacks information about the tool's operational impact.
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?
A single concise sentence that immediately conveys the tool's purpose. No extraneous information, front-loaded for quick understanding.
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?
The tool is a mutation with no annotations or output schema. The description fails to explain return values, reversibility, or any nuances of the conversion process, leaving gaps for an AI agent.
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% and parameter descriptions are clear. The tool description adds no additional meaning beyond what the schema already provides, so baseline 3 is appropriate.
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 clearly states the action (convert) and the resource (issue to subtask), distinguishing it from sibling tools like createIssue or updateIssue. However, it lacks explicit scope details like what happens to the original issue.
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?
No guidance on when to use this tool versus alternatives, no prerequisites or scenarios mentioned. It simply describes the action without contextual cues.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linear_createCommentC
Add a comment to an issue in Linear
| Name | Required | Description | Default |
|---|---|---|---|
| issueId | Yes | ID or identifier of the issue to comment on (e.g., ABC-123) | |
| body | Yes | Text of the comment (Markdown supported) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool adds a comment but does not cover critical aspects like required permissions, whether the action is reversible, rate limits, or error handling, leaving significant gaps for a mutation tool.
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 a single, efficient sentence that directly states the tool's purpose without unnecessary words. It is front-loaded and appropriately sized for its simple function, with zero waste.
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 the tool is a mutation (adding a comment) with no annotations and no output schema, the description is incomplete. It lacks details on behavioral traits, return values, or error cases, making it inadequate for safe and effective use by an AI agent.
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 fully documents both parameters (issueId and body). The description adds no additional meaning beyond the schema, such as examples or constraints, but does not contradict it, meeting the baseline for high schema coverage.
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 clearly states the action ('Add a comment') and target resource ('to an issue in Linear'), which is specific and unambiguous. However, it does not differentiate from sibling tools like 'linear_getComments' or 'linear_updateIssue' that might also involve comments, missing explicit distinction.
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 description provides no guidance on when to use this tool versus alternatives, such as when to comment versus update an issue or use other issue-related tools. It lacks context on prerequisites, exclusions, or comparisons with siblings like 'linear_updateIssue' for editing comments.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linear_createIssueC
Create a new issue in Linear
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Title of the issue | |
| description | No | Description of the issue (Markdown supported) | |
| teamId | Yes | ID of the team the issue belongs to | |
| assigneeId | No | ID of the user to assign the issue to | |
| priority | No | Priority of the issue (0 = No priority, 1 = Urgent, 2 = High, 3 = Normal, 4 = Low) | |
| projectId | No | ID of the project the issue belongs to | |
| cycleId | No | ID of the cycle to add the issue to | |
| estimate | No | The estimated complexity/points for the issue | |
| dueDate | No | The date at which the issue is due (YYYY-MM-DD format) | |
| labelIds | No | IDs of the labels to attach to the issue | |
| parentId | No | ID of the parent issue (to create as a sub-task) | |
| subscriberIds | No | IDs of the users to subscribe to the issue | |
| stateId | No | ID of the workflow state for the issue | |
| templateId | No | ID of a template to use for creating the issue | |
| sortOrder | No | The position of the issue in relation to other issues |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It states the tool creates an issue but doesn't mention authentication requirements, rate limits, whether the operation is idempotent, what happens on failure, or what the return value looks like (no output schema). For a mutation tool with 15 parameters, this leaves significant behavioral gaps.
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 a single, efficient sentence that states the core purpose without unnecessary words. It's appropriately sized for a creation tool and front-loads the essential information. Every word 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?
For a complex mutation tool with 15 parameters, no annotations, and no output schema, the description is inadequate. It doesn't explain what happens after creation, error conditions, authentication needs, or provide any context about Linear's issue system. The agent would struggle to use this tool effectively without external knowledge.
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 all 15 parameters thoroughly with descriptions and formats. The description adds no additional parameter information beyond what's in the schema. According to the rules, when schema coverage is high (>80%), the baseline is 3 even with no param info in the description.
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 clearly states the action ('Create a new issue') and resource ('in Linear'), making the purpose immediately understandable. It distinguishes from siblings like 'linear_duplicateIssue' or 'linear_updateIssue' by specifying creation rather than modification or duplication. However, it doesn't explicitly differentiate from all siblings (e.g., 'linear_createProject' follows a similar pattern).
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 description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (like needing teamId), when to choose this over 'linear_duplicateIssue' or 'linear_updateIssue', or any contextual constraints. The agent must infer usage solely from the tool name and parameters.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linear_createIssueRelationA
Create relations between issues (blocks, is blocked by, etc.)
| Name | Required | Description | Default |
|---|---|---|---|
| issueId | Yes | ID or identifier of the first issue (e.g., ABC-123) | |
| relatedIssueId | Yes | ID or identifier of the second issue (e.g., ABC-456) | |
| type | Yes | Type of relation: 'blocks', 'blocked_by', 'related', 'duplicate', 'duplicate_of' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries full burden. It only states the action (create) without disclosing side effects like overwriting existing relations, permission requirements, or error handling. The description provides minimal behavioral context beyond the basic operation.
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 a single, concise sentence that conveys the tool's purpose without extra words. It is front-loaded with the essential verb and resource.
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 create tool with no output schema, the description is largely complete. However, it could mention that relations are bidirectional (e.g., 'blocks' implies the reverse) or what happens on duplication. Still, it adequately covers the core function.
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 the input schema already documents each parameter with descriptions and examples. The description adds a parenthetical summary of types but no extra meaning beyond the schema's enum list, resulting in marginal added value.
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 clearly states the tool creates relations between issues, with examples of relation types ('blocks, is blocked by, etc.'). It distinguishes from siblings like linear_createIssue (creates issue) and linear_updateIssue (updates fields).
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 description implies usage (to create relations) but does not explicitly state when to use versus alternatives like updating an issue or duplicating. No exclusions or alternate tools are referenced.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linear_createProjectC
Create a new project in Linear
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name of the project | |
| description | No | Description of the project (Markdown supported) | |
| teamIds | Yes | IDs of the teams this project belongs to | |
| state | No | Initial state of the project (e.g., 'planned', 'started', 'paused', 'completed', 'canceled') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. While 'Create' implies a write/mutation operation, the description doesn't mention required permissions, whether this is an idempotent operation, what happens on duplicate names, or what the response contains. For a creation tool with zero annotation coverage, this leaves significant behavioral questions unanswered.
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 a single, efficient sentence that states the core purpose without any wasted words. It's appropriately sized for a straightforward creation tool and gets directly to the point.
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 creation tool with no annotations and no output schema, the description is insufficient. It doesn't explain what happens after creation, what the return value contains, or address common behavioral questions like permissions, idempotency, or error conditions. The 100% schema coverage helps with parameters, but overall context is lacking.
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 all 4 parameters thoroughly. The description adds no additional parameter information beyond what's in the schema. This meets the baseline expectation when schema coverage is complete.
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 clearly states the verb ('Create') and resource ('new project in Linear'), making the purpose immediately understandable. It doesn't explicitly distinguish from sibling tools like linear_updateProject or linear_getProjects, but the creation action is unambiguous.
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 description provides no guidance on when to use this tool versus alternatives. There's no mention of prerequisites, when creation is appropriate versus updating existing projects, or how this relates to sibling tools like linear_updateProject or linear_getProjects.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linear_duplicateIssueC
Duplicate an issue
| Name | Required | Description | Default |
|---|---|---|---|
| issueId | Yes | ID or identifier of the issue to duplicate (e.g., ABC-123) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. 'Duplicate an issue' implies a new issue is created, but it does not mention side effects, scope of duplication (e.g., attachments, comments), or permissions required. The description is insufficient for an informed choice.
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 extremely brief (2 words), which sacrifices necessary information. It is under-specified and does not earn its place as a complete description.
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 no output schema and a simple mutation, the description should explain what happens after duplication (e.g., new issue ID, copied fields). It fails to provide this context, leaving agents in the dark.
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?
The input schema already provides a description for the single parameter (issueId) with an example. The tool description adds no further meaning. Since schema coverage is 100%, baseline is 3.
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 'Duplicate an issue' clearly states a specific verb and resource. It distinguishes from siblings like 'createIssue' by indicating duplication. However, it lacks detail on what duplication entails, which could cause ambiguity.
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?
No guidance on when to use this tool versus alternatives (e.g., createIssue, updateIssue). The description does not provide context for appropriate usage or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linear_getActiveCycleB
Get the currently active cycle for a team
| Name | Required | Description | Default |
|---|---|---|---|
| teamId | Yes | ID of the team to get the active cycle for |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided. The description does not disclose what happens if no active cycle exists (e.g., returns null, error), authentication needs, or that the operation is read-only. The description adds minimal behavioral context beyond the basic action.
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 a single, efficient sentence with no redundant words. It front-loads the essential purpose.
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 the lack of output schema and annotations, the description should clarify return behavior (e.g., null vs error if no active cycle) and the meaning of 'active cycle'. It does not, leaving the agent underinformed.
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% (teamId is described). The description does not add extra meaning to the parameter beyond the schema's description. Baseline score 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 clearly states the action ('Get') and the resource ('the currently active cycle for a team'). It distinguishes itself from sibling tools like linear_getCycles and linear_getCycleById by focusing specifically on the active cycle.
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 description provides no guidance on when to use this tool versus alternatives (e.g., getCycles, getCycleById). No mention of prerequisites, context, or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linear_getCommentsC
Get all comments for an issue
| Name | Required | Description | Default |
|---|---|---|---|
| issueId | Yes | ID or identifier of the issue to get comments from (e.g., ABC-123) | |
| limit | No | Maximum number of comments to return (default: 25) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. The description does not disclose behavioral traits such as pagination (limit implies but not stated), ordering, rate limits, or behavior for invalid issueId. For a tool with no annotations, this is insufficient.
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 a single clear sentence, front-loaded with purpose. It is concise without being overly terse, though it could include more detail in the same length.
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 the tool has 2 params (both described in schema), no output schema, and no annotations, the description is thin. It does not mention return format, default behavior for missing issueId, or hint at pagination. Completeness is lacking.
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 schema already documents issueId and limit well. The description adds no additional meaning beyond the schema. Baseline 3 is appropriate.
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 'Get all comments for an issue' clearly states the verb (Get), resource (comments), and scope (for an issue). It is specific and distinguishes from other get tools like getAttachments, but could be slightly improved by explicitly stating it returns comments for a given issue ID.
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?
No guidance on when to use this tool vs alternatives. No mention of when not to use it or related tools like createComment, updateComment. The description does not help the agent decide between this and other comment-related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linear_getCyclesC
Get a list of all cycles
| Name | Required | Description | Default |
|---|---|---|---|
| teamId | No | ID of the team to get cycles for (optional) | |
| limit | No | Maximum number of cycles to return (default: 25) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only states basic functionality. It doesn't disclose behavioral traits such as pagination (implied by 'limit' parameter), authentication requirements, rate limits, whether it's read-only (implied by 'Get'), or what happens with missing parameters. The description is minimal and lacks operational context.
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 extremely concise at one sentence with zero waste. It's front-loaded and gets straight to the point, though this conciseness comes at the cost of detail. Every word earns its place in stating the core purpose.
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 no annotations, no output schema, and a simple input schema, the description is incomplete. It doesn't explain return values (e.g., cycle fields, format), error conditions, or how parameters interact. For a tool with two parameters and no structured output info, more context is needed to guide effective use.
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 fully documents both parameters (teamId and limit). The description adds no additional meaning beyond what's in the schema, such as explaining how 'teamId' affects results or default behavior when omitted. 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?
The description 'Get a list of all cycles' clearly states the verb ('Get') and resource ('cycles'), but it's vague about scope and doesn't differentiate from sibling tools like 'linear_getActiveCycle'. It doesn't specify what 'all cycles' means in context (e.g., across teams, organization-wide).
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?
No guidance on when to use this tool versus alternatives like 'linear_getActiveCycle' or 'linear_getIssues' (which might relate to cycles). The description implies a general listing function but doesn't provide context about prerequisites, filtering needs, or typical use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linear_getIssueByIdA
Get a specific issue by ID or identifier (e.g., ABC-123)
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The ID or identifier of the issue (e.g., ABC-123) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description indicates a read operation, which is correct. With no annotations, it carries the full burden but provides minimal behavioral context (e.g., no mention of return format or permissions). Adequate for a simple getter.
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?
Single sentence, front-loaded with action and resource. No unnecessary words.
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 single-parameter getter, the description is sufficient. However, without an output schema, some agents might benefit from knowing the shape of the returned issue object.
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?
The description's parameter information ('by ID or identifier (e.g., ABC-123)') essentially duplicates the input schema's description. With 100% schema coverage, the description adds little extra meaning.
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 clearly states the action ('Get') and the resource ('specific issue'), and includes an example identifier format. It effectively distinguishes from sibling tools like getIssues (plural) and searchIssues.
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?
No guidance on when to use this tool versus alternatives (e.g., searchIssues, getIssues). No mention of prerequisites or limitations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linear_getIssueHistoryB
Get the history of changes made to an issue
| Name | Required | Description | Default |
|---|---|---|---|
| issueId | Yes | ID or identifier of the issue (e.g., ABC-123) | |
| limit | No | Maximum number of history events to return (default: 10) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden. It only states 'get the history' without disclosing that it is a read-only operation, auth requirements, rate limits, or pagination behavior. The limit parameter is not mentioned in the description. This lack of behavioral context is a significant gap.
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 a single 10-word sentence, which is very concise. It is front-loaded with the verb. While it earns its place, it could be slightly more informative without being 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?
Given the lack of output schema and no annotations, the description is incomplete. It does not describe what the returned history events look like, potential pagination, or any nuances about the data. The tool is simple but could benefit from more context.
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?
The input schema has 100% coverage with descriptions for both parameters (issueId and limit). The tool description adds no extra meaning beyond what the schema provides. Per the rules, high schema coverage sets a baseline of 3, so this score is appropriate.
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 clearly states the verb 'Get' and the resource 'history of changes made to an issue', which is distinct from sibling tools like linear_getIssueById (issue details) or linear_getComments (comments). It unambiguously communicates what the tool does.
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 description does not provide any when-to-use or when-not-to-use guidance. It does not mention alternatives or context, such as differentiating from linear_getComments for history of comments. For a simple getter, minimal guidance is acceptable, but the lack of any comparative information earns a mid score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linear_getIssuesC
Get a list of recent issues from Linear
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of issues to return (default: 10) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full responsibility for behavioral disclosure. It only states it returns 'recent issues' without defining recency, sorting, pagination, or scope (e.g., all teams or user's teams). This is minimal behavioral transparency.
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 extremely concise at 7 words, with no redundant information. However, it may be too terse, lacking important context that could be added without much verbosity.
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 the complexity of sibling tools (numerous list/filter tools), the description fails to specify important details like sorting, default behavior, or scope. Without an output schema, the agent has little understanding of what to expect.
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?
The schema covers the single parameter (limit) 100%, and the description adds no extra meaning beyond 'recent'. Since the schema already documents the parameter, the description provides no additional semantic value, achieving baseline.
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 clearly states the action ('Get a list') and resource ('recent issues from Linear'). However, 'recent' is vague and does not differentiate this tool from other list tools like linear_getProjectIssues or linear_searchIssues, which also return issues. The purpose is clear but lacks specificity.
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?
No guidance is provided on when to use this tool versus alternatives such as linear_getProjectIssues, linear_getCycleIssues, or linear_searchIssues. The description gives no context about filtering or scope, leaving the agent without decision support.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linear_getLabelsB
Get a list of issue labels from Linear
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description lacks any behavioral details such as read-only hint, rate limits, or pagination. The description solely states the action without disclosing potential side effects or constraints.
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 a single, focused sentence with no unnecessary words. It is concise and front-loaded.
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 getter with no parameters and no output schema, the description is adequate. However, it could mention the scope (e.g., 'all labels in the workspace') to improve completeness.
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?
There are zero parameters, so schema coverage is 100%. The description adds no parameter information, which is acceptable given the simplicity. Baseline score of 4 is appropriate.
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 clearly states it gets issue labels from Linear, using a specific verb and resource. However, it does not differentiate from sibling tools like linear_getTeamLabels, which may retrieve similar data.
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?
No guidance on when to use this vs alternatives. Sibling tools exist that might be more specific (e.g., linear_getTeamLabels), but the description provides no such context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linear_getOrganizationA
Get information about the current Linear organization
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description should disclose behavioral traits. It does not explicitly state that the tool is read-only or requires specific authentication. The name implies a read operation, but this is implicit.
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 a single sentence that conveys the tool's purpose without any fluff. It is front-loaded and every word 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?
For a tool with no parameters and no output schema, the description is adequate but minimal. It tells the agent it retrieves organization information, but does not specify what fields or the return structure. This leaves some ambiguity.
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?
The input schema has zero parameters and 100% coverage. The description adds no parameter information because none exists. Baseline for 0 params is 4, as the description adds no further 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?
The description uses a specific verb ('Get') and resource ('current Linear organization'). It clearly distinguishes from sibling tools like linear_getServerStatus or linear_getViewer, as no other tool targets the organization.
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?
No guidance on when to use this tool vs alternatives. The description is adequate for a simple getter, but does not provide any context about prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linear_getProjectIssuesB
Get all issues associated with a project
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | ID of the project to get issues for | |
| limit | No | Maximum number of issues to return (default: 25) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states this is a read operation ('Get'), but doesn't mention authentication requirements, rate limits, pagination behavior (beyond the 'limit' parameter), error conditions, or what format/issues are returned. For a tool with zero annotation coverage, this is insufficient.
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 a single, efficient sentence that states the core functionality without unnecessary words. It's appropriately sized for a simple retrieval tool and front-loads the essential 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 read-only tool with good schema coverage but no annotations and no output schema, the description is minimally adequate. It states what the tool does but lacks behavioral context and usage guidance. The agent would need to rely heavily on the schema and possibly trial-and-error to use this effectively.
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 fully documents both parameters (projectId and limit). The description adds no additional parameter information beyond what's in the schema, but doesn't need to since the schema is comprehensive. Baseline 3 is appropriate when the schema does all the work.
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 clearly states the action ('Get') and resource ('issues associated with a project'), making the purpose understandable. It distinguishes from siblings like 'linear_getIssues' (general issues) and 'linear_getIssueById' (specific issue), but doesn't explicitly mention this distinction in the description itself.
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 description provides no guidance on when to use this tool versus alternatives like 'linear_getIssues' or 'linear_searchIssues'. It doesn't mention prerequisites, constraints, or typical use cases, leaving the agent to infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linear_getProjectsB
Get a list of projects from Linear
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It only states the read-only behavior but omits details like authentication requirements, pagination, rate limits, or the possibility of empty results. The description is too brief to be transparent.
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 a single, clear sentence with no wasted words. It is concise but sacrifices informational richness for brevity, which is acceptable for a simple tool.
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 zero-parameter list tool, the description covers the essential function. However, it lacks details about access scope, possible filters (if any), and the structure of the returned data. A more complete description would include these nuances.
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?
The input schema has zero parameters, so the baseline is 4. The description is not required to add parameter info since there are none, and it correctly omits any.
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 clearly states the verb 'Get' and the resource 'projects', making the tool's basic purpose clear. However, it lacks specificity about the scope (e.g., all projects, user's projects) and does not differentiate from other list tools beyond the resource name.
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?
No usage guidance is provided. The description does not mention when to use this tool versus alternatives like getProjectById or filtered project queries, forcing the agent to infer from context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linear_getTeamsB
Get a list of teams from Linear
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the burden of behavioral context. It only states 'Get a list of teams' without details on scope, filtering, pagination, authentication, or side effects. This is insufficient for an agent to understand the tool's behavior fully.
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 a single concise sentence that conveys the core purpose without extraneous words. It is front-loaded and efficient.
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 no parameters, no output schema, and no annotations, the description is minimally adequate. It tells the agent what the tool does but omits behavioral details like return format or scope. For a simple list tool, this may suffice, but it could be more explicit.
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?
There are no parameters (0 params), so schema coverage is 100%. The description adds no parameter info, which is acceptable since none exist. The baseline score for 0 params is 4, and no additional explanation is needed.
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 clearly states the action (Get) and resource (teams), making the purpose obvious. However, it does not explicitly distinguish this tool from sibling tools like linear_getIssues or linear_getProjects, though the name provides some differentiation.
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?
No usage guidelines are provided. The description does not indicate when to use this tool versus alternatives, nor does it mention any prerequisites or context for fetching teams.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linear_getUsersA
Get a list of users in the Linear organization
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility. It only states 'Get a list', implying a read-only operation, but fails to disclose any behavioral traits like authentication requirements or rate limits. The basic purpose is clear, but transparency is minimal.
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 a single sentence with no unnecessary words. It is perfectly sized and front-loaded, earning 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?
Given the tool has no parameters, no output schema, and performs a simple list operation, the description provides all necessary context. It is complete for the intended use case.
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?
The tool has zero parameters, so the description does not need to add parameter information. The baseline for 0 parameters is 4, and the description meets this without excess.
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 clearly states the verb 'Get', the resource 'list of users', and the scope 'in the Linear organization'. It effectively distinguishes this tool from siblings like getTeams or getIssues.
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 description implies usage when a list of users is needed but offers no explicit guidance on when not to use it or alternatives (e.g., getViewer for the current user). The context is clear but lacks exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linear_getViewerA
Get information about the currently authenticated user
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; the description only says 'Get information,' implying a read operation, but fails to disclose what specific information is returned, authentication requirements, or any side effects. The description carries the full burden but is minimal.
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?
Single sentence, no superfluous words. Efficiently communicates the purpose.
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 zero-parameter, no-output-schema tool, the description is functionally complete. It could mention the return type (e.g., user object), but the simplicity mitigates this gap.
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?
The tool has no parameters, so the description adds no parameter info. With 100% schema coverage (none), the baseline is 4, and the description is clear that it takes no input.
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?
Clearly states the tool retrieves information about the currently authenticated user, with a specific verb and resource. No ambiguity or overlap with sibling tools.
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?
No guidance on when to use this tool versus alternatives like linear_getUsers or linear_getOrganization. The description does not provide context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linear_getWorkflowStatesB
Get workflow states for a team
| Name | Required | Description | Default |
|---|---|---|---|
| teamId | Yes | ID of the team to get workflow states for | |
| includeArchived | No | Whether to include archived states (default: false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description must carry the full burden. It does not mention default behavior (e.g., includeArchived defaults to false), rate limits, or pagination. The read-only nature is implied but not explicitly stated.
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 a single, front-loaded sentence with no waste. It could be slightly more informative without losing conciseness, but it earns a 4 for efficiency.
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?
The description is too sparse. It does not explain what workflow states are, the return format, or any defaults. For a simple tool with no output schema, more context is needed for complete understanding.
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% with descriptions for both parameters. The description adds no extra meaning beyond the schema, achieving the baseline of 3.
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 'Get workflow states for a team' clearly states the verb (Get) and resource (workflow states), and the scope (for a team) helps differentiate it from siblings like linear_getTeamLabels.
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?
No guidance on when to use this tool vs alternatives (e.g., linear_getIssues or linear_getTeamLabels). The description lacks context for usage decisions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linear_removeIssueLabelC
Remove a label from an issue in Linear
| Name | Required | Description | Default |
|---|---|---|---|
| issueId | Yes | ID or identifier of the issue to remove the label from (e.g., ABC-123) | |
| labelId | Yes | ID of the label to remove from the issue |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility. It only states the action without disclosing behavioral traits like idempotency, permissions, errors, or return value.
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 a single sentence with no unnecessary words. It is front-loaded with the action and resource.
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 no output schema, the description does not explain what the tool returns or any confirmation. It also lacks context about failure modes (e.g., label not found). The simplicity of the tool mitigates this somewhat, but more completeness would be beneficial.
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?
The input schema has 100% description coverage, so the schema already explains the parameters. The description adds no additional meaning beyond what the schema provides, meeting the baseline.
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 clearly states the action (Remove), resource (label), and target (issue in Linear). It is specific enough to distinguish from the sibling tool linear_addIssueLabel which performs the opposite operation.
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?
No guidance is provided on when to use this tool versus alternatives (e.g., linear_addIssueLabel). There is no mention of prerequisites, side effects, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linear_searchIssuesB
Search for issues with various filters
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Text to search for in issue title or description | |
| teamId | No | Filter issues by team ID | |
| assigneeId | No | Filter issues by assignee ID | |
| projectId | No | Filter issues by project ID | |
| states | No | Filter issues by state name (e.g., 'Todo', 'In Progress', 'Done') | |
| limit | No | Maximum number of issues to return (default: 10) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description does not disclose behavioral traits such as read-only nature, rate limits, pagination, or sorting behavior. Since no annotations are provided, the description bears full responsibility for transparency, and it is insufficient.
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 a single sentence that is front-loaded and concise. It could be slightly more informative without losing brevity, but it is efficient.
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 the complexity (6 optional parameters, no output schema, no annotations) and the existence of sibling tools, the description is too minimal. It does not explain search logic, default behavior, or how it differs from similar 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?
The input schema has 100% description coverage, so the schema already documents all parameters. The description adds no new information beyond summarizing that there are filters, which is redundant. Baseline score of 3 is appropriate.
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 clearly states the tool searches for issues with filters, which is a specific verb+resource. However, it doesn't distinguish from sibling tools like linear_getIssues or linear_searchDocuments, which may have overlapping functionality.
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 description implies use for searching issues with filters, but provides no guidance on when to use this tool versus alternatives like linear_getIssues. No exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linear_setIssuePriorityC
Set the priority of an issue
| Name | Required | Description | Default |
|---|---|---|---|
| issueId | Yes | ID or identifier of the issue (e.g., ABC-123) | |
| priority | Yes | Priority level (0 = No priority, 1 = Urgent, 2 = High, 3 = Normal, 4 = Low) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits but only states the basic action. It does not mention side effects, required permissions, or whether the tool is destructive (updates are mutations). The schema clarifies priority mapping, but behavior like return values or error conditions is omitted.
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 a single concise sentence, earning its place. It could include a bit more detail without becoming verbose, but it is not wasteful. The structure is front-loaded and clear.
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 the tool's simplicity (2 parameters, no output schema), the description is minimally sufficient. However, it omits any mention of the return value, error handling, or prerequisites, leaving gaps for an AI agent. More context would improve completeness.
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 the description does not need to add parameter meaning. It adds no value beyond what the schema already provides for issueId and priority (with enum). Baseline score of 3 is appropriate.
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 'Set the priority of an issue' clearly identifies the action and resource (priority of an issue). It distinguishes from broader update tools like updateIssue by specializing in priority changes, though additional context would help.
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?
No guidance is provided on when to use this tool versus alternatives like linear_updateIssue, which can also change priority among other fields. The description lacks any context for preferred usage or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linear_subscribeToIssueC
Subscribe to issue updates
| Name | Required | Description | Default |
|---|---|---|---|
| issueId | Yes | ID or identifier of the issue to subscribe to (e.g., ABC-123) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of explaining behavior. It only says 'Subscribe to issue updates' without disclosing that this is a mutation (creating a subscription), whether it is reversible, if the user must already be authenticated, or what happens if already subscribed. The description is insufficient for an agent to understand side effects.
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 a single sentence with no wasted words. It is concise and gets to the point. While it could include more detail, it does not contain redundant or irrelevant 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?
Given the low complexity (one parameter, no output schema, no annotations), the description is minimally acceptable. However, it does not explain the result of the operation (e.g., what the tool returns or confirms successful subscription) nor any conditional behavior. It could be more complete for a production 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 coverage is 100% and the description does not add any new information about the parameter beyond the schema. Since the schema already documents the parameter with an example, the baseline of 3 is appropriate; the description does not enhance parameter understanding.
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 clearly states the action ('Subscribe') and resource ('issue updates'), making it easy to understand the tool's basic function. However, it does not differentiate from siblings, but there is no other subscribe tool in the list, so it is distinct enough to avoid confusion.
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?
No guidance is provided on when to use this tool versus alternatives. For example, it does not mention that this is for subscribing the current user to notifications, nor does it indicate how to unsubscribe (e.g., via a different tool). The description lacks context on prerequisites or typical use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linear_transferIssueB
Transfer an issue to another team
| Name | Required | Description | Default |
|---|---|---|---|
| issueId | Yes | ID or identifier of the issue to transfer (e.g., ABC-123) | |
| teamId | Yes | ID of the team to transfer the issue to |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden for behavioral traits. It only names the action 'transfer' without detailing effects on existing assignments, comments, or permissions. The agent is left without critical context about side effects.
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 a single, clear sentence with no fluff. It efficiently communicates the tool's purpose without unnecessary detail.
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 the tool's simplicity (2 required params, no output schema), the description combined with the schema is nearly sufficient. However, a note about retaining issue data (e.g., comments, labels) would make it fully 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 coverage is 100% with descriptions for both parameters. The description adds no additional meaning beyond the schema, but it does not contradict it. Baseline 3 is appropriate.
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 clearly states the action (transfer) and the resource (issue) along with the destination (another team). It directly communicates the tool's function and distinguishes it from sibling tools like linear_assignIssue or linear_updateIssue.
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 description provides no guidance on when to use this tool versus alternatives, such as when to transfer vs. assign or update an issue. No context about prerequisites or exclusions is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linear_updateIssueC
Update an existing issue in Linear
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID or identifier of the issue to update (e.g., ABC-123) | |
| title | No | New title for the issue | |
| description | No | New description for the issue (Markdown supported) | |
| stateId | No | ID of the new state for the issue | |
| priority | No | New priority for the issue (0 = No priority, 1 = Urgent, 2 = High, 3 = Normal, 4 = Low) | |
| projectId | No | ID of the project to move the issue to | |
| assigneeId | No | ID of the user to assign the issue to, or null to unassign | |
| cycleId | No | ID of the cycle to move the issue to, or null to remove from current cycle | |
| estimate | No | The estimated complexity/points for the issue | |
| dueDate | No | The new due date for the issue (YYYY-MM-DD format), or null to remove | |
| labelIds | No | IDs of the labels to set on the issue (replacing existing labels) | |
| addedLabelIds | No | IDs of labels to add to the issue (without removing existing ones) | |
| removedLabelIds | No | IDs of labels to remove from the issue | |
| parentId | No | ID of the parent issue, or null to convert to a regular issue | |
| subscriberIds | No | IDs of the users to subscribe to the issue (replacing existing subscribers) | |
| teamId | No | ID of the team to move the issue to | |
| sortOrder | No | The position of the issue in relation to other issues |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden for behavioral disclosure. While 'Update' implies mutation, the description doesn't mention permission requirements, whether changes are reversible, how partial updates are handled, or what the response contains. For a mutation tool with 17 parameters and no annotation coverage, this leaves significant behavioral questions unanswered.
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 a single, efficient sentence that states the core purpose without unnecessary words. It's appropriately sized and front-loaded, with every word earning its place in conveying the essential 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 complex mutation tool with 17 parameters, no annotations, and no output schema, the description is insufficient. It doesn't address behavioral aspects like permissions, side effects, or response format, nor does it provide usage guidance relative to many specialized sibling tools. The description relies entirely on the schema for parameter documentation but fails to complement it with necessary context.
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 all 17 parameters thoroughly with clear descriptions and formats. The description adds no additional parameter information beyond what's in the schema, which meets the baseline expectation when schema coverage is complete.
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 clearly states the action ('Update') and resource ('an existing issue in Linear'), making the purpose immediately understandable. However, it doesn't differentiate this tool from sibling update tools like linear_updateInitiative or linear_updateProject, which would require mentioning it specifically handles issue updates rather than other entity types.
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 description provides no guidance on when to use this tool versus alternatives. With many sibling tools like linear_assignIssue, linear_setIssuePriority, linear_transferIssue, and linear_updateInitiative, there's no indication of when this comprehensive update tool is preferable over more specialized ones or what prerequisites might exist.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linear_updateProjectC
Update an existing project in Linear
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the project to update | |
| name | No | New name of the project | |
| description | No | New description of the project (Markdown supported) | |
| state | No | New state of the project (e.g., 'planned', 'started', 'paused', 'completed', 'canceled') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. 'Update an existing project' implies a mutation operation but doesn't disclose permission requirements, whether changes are reversible, rate limits, or what happens to unspecified fields (partial vs. full updates). For a mutation tool with zero annotation coverage, this leaves significant behavioral gaps.
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 a single, efficient sentence that states the core purpose without unnecessary words. It's appropriately front-loaded with the essential action and resource. Every word earns its place with zero redundancy.
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 mutation tool with no annotations and no output schema, the description is inadequate. It doesn't cover behavioral aspects like permissions, side effects, or response format. While the schema covers parameters well, the overall context for safe and effective tool invocation is incomplete.
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 fully documents all 4 parameters. The description adds no additional parameter semantics beyond what's already in the schema (e.g., it doesn't explain parameter interactions or provide examples). This meets the baseline expectation 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?
The description clearly states the verb ('Update') and resource ('an existing project in Linear'), making the purpose immediately understandable. It distinguishes from sibling tools like linear_createProject (creation vs. update) and linear_updateIssue (different resource type). However, it doesn't specify what aspects can be updated beyond what's implied by the parameters.
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 description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing an existing project ID), when not to use it, or how it differs from similar mutation tools like linear_updateIssue. The agent must infer usage from the tool name and parameters alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
32 tool updates
- First observed
linear_addIssueLabel - First observed
linear_addIssueToCycle - First observed
linear_addIssueToProject - First observed
linear_archiveIssue - First observed
linear_assignIssue - First observed
linear_convertIssueToSubtask - First observed
linear_createComment - First observed
linear_createIssue - First observed
linear_createIssueRelation - First observed
linear_createProject - First observed
linear_duplicateIssue - First observed
linear_getActiveCycle - First observed
linear_getComments - First observed
linear_getCycles - First observed
linear_getIssueById - First observed
linear_getIssueHistory - First observed
linear_getIssues - First observed
linear_getLabels - First observed
linear_getOrganization - First observed
linear_getProjectIssues - First observed
linear_getProjects - First observed
linear_getTeams - First observed
linear_getUsers - First observed
linear_getViewer - First observed
linear_getWorkflowStates - First observed
linear_removeIssueLabel - First observed
linear_searchIssues - First observed
linear_setIssuePriority - First observed
linear_subscribeToIssue - First observed
linear_transferIssue - First observed
linear_updateIssue - First observed
linear_updateProject
TDQS
Scored across 32 tools
Every tool has a clearly distinct purpose targeting specific resources and actions in Linear, such as linear_addIssueLabel vs. linear_removeIssueLabel or linear_getIssueById vs. linear_searchIssues. There is no ambiguity or overlap that would cause misselection, as each tool name precisely indicates its function.
All tools follow a consistent verb_noun pattern with the 'linear_' prefix, such as linear_createIssue, linear_getIssues, and linear_updateIssue. The naming is uniform throughout, using snake_case and clear action verbs, making it highly predictable and readable.
With 32 tools, the count is borderline high for a project management server, as it may feel heavy and complex for agents to navigate. While it covers many operations, a more streamlined set of 15-25 tools might be more appropriate for the scope without sacrificing functionality.
The tool surface provides comprehensive CRUD and lifecycle coverage for Linear's domain, including issue management (create, update, archive, duplicate), project handling, user and team operations, and advanced features like relations and subscriptions. There are no obvious gaps, and agents can perform full workflows without dead ends.
Maintenance
Related MCP Connectors
Search, read and create Linear issues, projects, teams and cycles.
Linear MCP — wraps the Linear GraphQL API (OAuth)
MCP server for Linear project management and issue tracking
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables AI models to interact with Linear for issue tracking and project management through capabilities like creating/searching issues, managing sprints, and retrieving workflow states.-
- AlicenseNot gradedqualityDmaintenanceAllows LLMs to integrate with Linear's issue tracking system, enabling them to create, update, search, and comment on issues through the Linear API.481 npmMIT
- AlicenseNot gradedqualityNot gradedmaintenanceEnables comprehensive issue tracking and project management through Linear's GraphQL API. Supports creating and managing issues, organizing projects and sprints, team collaboration, and roadmap planning for modern development workflows.-
- AlicenseNot gradedqualityDmaintenanceEnables LLMs to interact with Linear's issue tracking system, including creating, updating, searching issues, adding comments, and accessing resources via the Linear API.481 npmMIT