Linear
Full-featured Linear integration via the GraphQL API. Manage issues, projects, teams, cycles, users, and execute raw GraphQL queries. Zero external dependencies — uses native fetch.
When to Use
- Managing Linear issues (create, update, close, assign, search, comment)
- Viewing or managing Linear projects and their progress
- Listing teams, workflow states, labels, and cycles
- Looking up users or viewing assigned work
- Running custom GraphQL queries against the Linear API
When NOT to Use
- GitHub Issues or other issue trackers — use their respective skills
- Jira, Asana, or other project management tools
- Linear webhook configuration or OAuth app management — use the Linear admin UI
Tools
All tools return { "result": "..." } on success (human-readable formatted text) or { "error": "..." } on failure.
linear_issue
Manage Linear issues: list, view, create, update, close, reopen, comment, assign, label, search, archive.
Parameters:
| Name |
Type |
Required |
Description |
action |
string |
yes |
One of: list, view, create, update, close, reopen, comment, assign, label, search, archive |
id |
string |
no |
Issue identifier (e.g. ENG-123 or UUID) |
title |
string |
no |
Issue title (for create, update) |
description |
string |
no |
Issue description in markdown (for create, update) |
team |
string |
no |
Team key (e.g. ENG) — resolved to teamId automatically |
teamId |
string |
no |
Team UUID (alternative to team key) |
priority |
number |
no |
Priority: 0=none, 1=urgent, 2=high, 3=medium, 4=low |
stateId |
string |
no |
Workflow state UUID |
state |
string |
no |
Filter by state name (for list) |
stateType |
string |
no |
Filter by state type: triage, backlog, unstarted, started, completed, cancelled |
assigneeId |
string |
no |
User UUID to assign |
assignee |
string |
no |
Special: @me for current user (for list filter) |
projectId |
string |
no |
Project UUID |
cycleId |
string |
no |
Cycle UUID |
parentId |
string |
no |
Parent issue UUID (for sub-issues) |
labelIds |
string[] |
no |
Label UUIDs to apply |
label |
string |
no |
Filter by label name (for list) |
estimate |
number |
no |
Point estimate |
dueDate |
string |
no |
Due date (ISO 8601) |
body |
string |
no |
Comment body in markdown (for comment action) |
query |
string |
no |
Search query text (for search action) |
limit |
number |
no |
Max results (default 25) |
Returns: { "result": "..." } — for view, includes identifier, title, state, priority, assignee, team, labels, description, and URL. For list, includes a formatted list with identifier, title, state, priority, and assignee. For create, confirms the issue was created with identifier and URL.
Examples:
{ "action": "list", "team": "ENG", "priority": 1 } — list urgent ENG issues
{ "action": "create", "team": "ENG", "title": "Bug: ...", "priority": 2 } — create a high-priority issue
{ "action": "search", "query": "authentication timeout" } — search issues
linear_project
Manage Linear projects: list, view, create, update, archive. View progress, members, and issue breakdown.
Parameters:
| Name |
Type |
Required |
Description |
action |
string |
yes |
One of: list, view, create, update, archive |
id |
string |
no |
Project UUID |
name |
string |
no |
Project name (for create, update) |
description |
string |
no |
Project description in markdown |
state |
string |
no |
Project state: planned, started, paused, completed, canceled |
teamIds |
string[] |
no |
Team UUIDs (for create) |
leadId |
string |
no |
Lead user UUID |
startDate |
string |
no |
Start date (YYYY-MM-DD) |
targetDate |
string |
no |
Target completion date (YYYY-MM-DD) |
color |
string |
no |
Project color (hex) |
limit |
number |
no |
Max results (default 20) |
Returns: { "result": "..." } — for view, includes name, state, progress percentage, lead, dates, and issue breakdown. For list, includes a formatted list with name, state, and progress.
Examples:
{ "action": "list", "state": "started" } — list active projects
{ "action": "view", "id": "uuid" } — view project details and progress
linear_team
View Linear teams, members, workflow states, labels, and cycles.
Parameters:
| Name |
Type |
Required |
Description |
action |
string |
yes |
One of: list, view, members, states, labels, cycles |
id |
string |
no |
Team key (e.g. ENG) or UUID |
limit |
number |
no |
Max results for cycles (default 5) |
Returns: { "result": "..." } — for states, includes workflow state names, types, and IDs. For members, includes user names and roles. For cycles, includes cycle name, number, start/end dates, and progress.
Examples:
{ "action": "list" } — list all teams
{ "action": "states", "id": "ENG" } — get workflow states for a team
{ "action": "cycles", "id": "ENG", "limit": 1 } — view the current cycle
linear_user
View Linear users: current user, list all users, view assigned issues.
Parameters:
| Name |
Type |
Required |
Description |
action |
string |
yes |
One of: me, list, assigned |
userId |
string |
no |
User UUID (for assigned; omit for current user) |
limit |
number |
no |
Max results (default 20) |
Returns: { "result": "..." } — for me, includes user name, email, and assigned issues. For list, includes all workspace users. For assigned, includes issues assigned to the specified user.
Examples:
{ "action": "me" } — view current user and assigned issues
{ "action": "list" } — list all workspace users
linear_graphql
Execute raw GraphQL queries and mutations against the Linear API. Use for anything not covered by other tools.
Parameters:
| Name |
Type |
Required |
Description |
query |
string |
yes |
GraphQL query or mutation string |
variables |
object |
no |
GraphQL variables |
Returns: { "result": "..." } — the raw GraphQL response data as formatted JSON text.
Examples:
{ "query": "{ viewer { name email } }" } — get current user info
{ "query": "{ organization { name urlKey } }" } — get workspace info
Notes
- Requires a Linear personal API key (create at linear.app/settings → Security & access)
- Team keys (e.g.
ENG) are automatically resolved to UUIDs
- Close/reopen actions auto-discover the correct workflow state
- The
@me assignee filter resolves to the current authenticated user
- All tools return
{ "result": "..." } with human-readable formatted text or { "error": "..." } on failure
1---2name: linear3description: Linear4---5# Linear67Full-featured Linear integration via the GraphQL API. Manage issues, projects, teams, cycles, users, and execute raw GraphQL queries. Zero external dependencies — uses native `fetch`.89## When to Use1011- Managing Linear issues (create, update, close, assign, search, comment)12- Viewing or managing Linear projects and their progress13- Listing teams, workflow states, labels, and cycles14- Looking up users or viewing assigned work15- Running custom GraphQL queries against the Linear API1617## When NOT to Use1819- GitHub Issues or other issue trackers — use their respective skills20- Jira, Asana, or other project management tools21- Linear webhook configuration or OAuth app management — use the Linear admin UI2223## Tools2425All tools return `{ "result": "..." }` on success (human-readable formatted text) or `{ "error": "..." }` on failure.2627### `linear_issue`2829Manage Linear issues: list, view, create, update, close, reopen, comment, assign, label, search, archive.3031**Parameters:**3233| Name | Type | Required | Description |34|------|------|----------|-------------|35| `action` | string | yes | One of: `list`, `view`, `create`, `update`, `close`, `reopen`, `comment`, `assign`, `label`, `search`, `archive` |36| `id` | string | no | Issue identifier (e.g. `ENG-123` or UUID) |37| `title` | string | no | Issue title (for `create`, `update`) |38| `description` | string | no | Issue description in markdown (for `create`, `update`) |39| `team` | string | no | Team key (e.g. `ENG`) — resolved to teamId automatically |40| `teamId` | string | no | Team UUID (alternative to team key) |41| `priority` | number | no | Priority: 0=none, 1=urgent, 2=high, 3=medium, 4=low |42| `stateId` | string | no | Workflow state UUID |43| `state` | string | no | Filter by state name (for `list`) |44| `stateType` | string | no | Filter by state type: `triage`, `backlog`, `unstarted`, `started`, `completed`, `cancelled` |45| `assigneeId` | string | no | User UUID to assign |46| `assignee` | string | no | Special: `@me` for current user (for `list` filter) |47| `projectId` | string | no | Project UUID |48| `cycleId` | string | no | Cycle UUID |49| `parentId` | string | no | Parent issue UUID (for sub-issues) |50| `labelIds` | string[] | no | Label UUIDs to apply |51| `label` | string | no | Filter by label name (for `list`) |52| `estimate` | number | no | Point estimate |53| `dueDate` | string | no | Due date (ISO 8601) |54| `body` | string | no | Comment body in markdown (for `comment` action) |55| `query` | string | no | Search query text (for `search` action) |56| `limit` | number | no | Max results (default 25) |5758**Returns:** `{ "result": "..." }` — for `view`, includes identifier, title, state, priority, assignee, team, labels, description, and URL. For `list`, includes a formatted list with identifier, title, state, priority, and assignee. For `create`, confirms the issue was created with identifier and URL.5960**Examples:**6162- `{ "action": "list", "team": "ENG", "priority": 1 }` — list urgent ENG issues63- `{ "action": "create", "team": "ENG", "title": "Bug: ...", "priority": 2 }` — create a high-priority issue64- `{ "action": "search", "query": "authentication timeout" }` — search issues6566---6768### `linear_project`6970Manage Linear projects: list, view, create, update, archive. View progress, members, and issue breakdown.7172**Parameters:**7374| Name | Type | Required | Description |75|------|------|----------|-------------|76| `action` | string | yes | One of: `list`, `view`, `create`, `update`, `archive` |77| `id` | string | no | Project UUID |78| `name` | string | no | Project name (for `create`, `update`) |79| `description` | string | no | Project description in markdown |80| `state` | string | no | Project state: `planned`, `started`, `paused`, `completed`, `canceled` |81| `teamIds` | string[] | no | Team UUIDs (for `create`) |82| `leadId` | string | no | Lead user UUID |83| `startDate` | string | no | Start date (YYYY-MM-DD) |84| `targetDate` | string | no | Target completion date (YYYY-MM-DD) |85| `color` | string | no | Project color (hex) |86| `limit` | number | no | Max results (default 20) |8788**Returns:** `{ "result": "..." }` — for `view`, includes name, state, progress percentage, lead, dates, and issue breakdown. For `list`, includes a formatted list with name, state, and progress.8990**Examples:**9192- `{ "action": "list", "state": "started" }` — list active projects93- `{ "action": "view", "id": "uuid" }` — view project details and progress9495---9697### `linear_team`9899View Linear teams, members, workflow states, labels, and cycles.100101**Parameters:**102103| Name | Type | Required | Description |104|------|------|----------|-------------|105| `action` | string | yes | One of: `list`, `view`, `members`, `states`, `labels`, `cycles` |106| `id` | string | no | Team key (e.g. `ENG`) or UUID |107| `limit` | number | no | Max results for cycles (default 5) |108109**Returns:** `{ "result": "..." }` — for `states`, includes workflow state names, types, and IDs. For `members`, includes user names and roles. For `cycles`, includes cycle name, number, start/end dates, and progress.110111**Examples:**112113- `{ "action": "list" }` — list all teams114- `{ "action": "states", "id": "ENG" }` — get workflow states for a team115- `{ "action": "cycles", "id": "ENG", "limit": 1 }` — view the current cycle116117---118119### `linear_user`120121View Linear users: current user, list all users, view assigned issues.122123**Parameters:**124125| Name | Type | Required | Description |126|------|------|----------|-------------|127| `action` | string | yes | One of: `me`, `list`, `assigned` |128| `userId` | string | no | User UUID (for `assigned`; omit for current user) |129| `limit` | number | no | Max results (default 20) |130131**Returns:** `{ "result": "..." }` — for `me`, includes user name, email, and assigned issues. For `list`, includes all workspace users. For `assigned`, includes issues assigned to the specified user.132133**Examples:**134135- `{ "action": "me" }` — view current user and assigned issues136- `{ "action": "list" }` — list all workspace users137138---139140### `linear_graphql`141142Execute raw GraphQL queries and mutations against the Linear API. Use for anything not covered by other tools.143144**Parameters:**145146| Name | Type | Required | Description |147|------|------|----------|-------------|148| `query` | string | yes | GraphQL query or mutation string |149| `variables` | object | no | GraphQL variables |150151**Returns:** `{ "result": "..." }` — the raw GraphQL response data as formatted JSON text.152153**Examples:**154155- `{ "query": "{ viewer { name email } }" }` — get current user info156- `{ "query": "{ organization { name urlKey } }" }` — get workspace info157158## Notes159160- Requires a Linear personal API key (create at linear.app/settings → Security & access)161- Team keys (e.g. `ENG`) are automatically resolved to UUIDs162- Close/reopen actions auto-discover the correct workflow state163- The `@me` assignee filter resolves to the current authenticated user164- All tools return `{ "result": "..." }` with human-readable formatted text or `{ "error": "..." }` on failure