Linear
Overview
Section titled “Overview”Linear is a streamlined issue tracking and project planning tool for modern teams, featuring fast workflows, keyboard shortcuts, and GitHub integrations. With the Linear integration in SquadOS, your agents can create and update issues, manage projects, list teams and members, and automate development workflows without leaving the chat.
- Official website: https://linear.app/
- Composio documentation: docs.composio.dev/toolkits/linear
Authentication
Section titled “Authentication”This tool supports two authentication modes: OAuth 2.0 (OAUTH2) and API key (API_KEY). OAuth 2.0 is the recommended method for personal use; API key is suited for automations and service integrations.
You will need the following fields (API key mode):
| Field | Required | Description |
|---|---|---|
api_key | Yes | API key generated in the Linear dashboard under Settings → API → Personal API keys. |
For OAuth 2.0, credentials are managed by Composio — no fields need to be entered manually.
How to get credentials
Section titled “How to get credentials”OAuth 2.0
Section titled “OAuth 2.0”- Go to linear.app and log in to your workspace.
- In Composio, click Connect on the Linear card and follow the OAuth authorization flow.
- You will be redirected to Linear to approve the requested permissions (read, write, issue and comment creation).
- After approving, you are returned to SquadOS with the account connected.
API Key
Section titled “API Key”- Go to linear.app and log in.
- Navigate to Settings (gear icon) → API → Personal API keys.
- Click Create key, give it a descriptive name (e.g., “SquadOS”), and click Create.
- Copy the generated key — it is only shown once.
How to connect in SquadOS
Section titled “How to connect in SquadOS”- Go to Tools in the side menu (
/admin/tools). - Open the Available tab and search for
Linear. - Click the card to open the details modal and hit Connect.
- You’re taken to the secure connection page hosted by Composio, where you authorize access via OAuth 2.0 or enter the API key obtained above.
- Once done, you’re sent back to SquadOS with the account connected and the tool available for your agents. (Connection-flow details in Organization Tools.)
Available actions
Section titled “Available actions”Create attachment
Section titled “Create attachment”LINEAR_CREATE_ATTACHMENT
Creates a new attachment and associates it with a specific, existing Linear issue.
Input parameters
Section titled “Input parameters”| Name | Type | Required | Description |
|---|---|---|---|
url | string | Yes | URL of the attachment’s content (e.g., file, webpage, online resource). |
title | string | Yes | Title for the attachment. |
issue_id | string | Yes | Identifier of the existing Linear issue to which the attachment will be added. Accepts either UUID format (e.g., ‘590a1127-f98b-49fc-ba74-2df8751c089e’) or issue key format (e.g., ‘GHO-300’, ‘ENG-123’). |
subtitle | string | No | Optional subtitle or short description for the attachment. |
Output
Section titled “Output”| Name | Type | Required | Description |
|---|---|---|---|
data | string | Yes | Data from the action execution. |
error | string | No | Error if any occurred during the execution of the action. |
successful | boolean | Yes | Whether or not the action execution was successful. |
Add reaction to comment
Section titled “Add reaction to comment”LINEAR_CREATE_COMMENT_REACTION
Tool to add a reaction to an existing Linear comment. Use when you want to programmatically react to a comment on an issue.
Input parameters
Section titled “Input parameters”| Name | Type | Required | Description |
|---|---|---|---|
emoji | string | Yes | Emoji for the reaction. Supports Unicode emojis or shortcodes like ‘:thumbsup:’. |
comment_id | string | Yes | Identifier of the existing Linear comment to add the reaction to. |
Output
Section titled “Output”| Name | Type | Required | Description |
|---|---|---|---|
data | string | Yes | Data from the action execution. |
error | string | No | Error if any occurred during the execution of the action. |
successful | boolean | Yes | Whether or not the action execution was successful. |
Create a comment
Section titled “Create a comment”LINEAR_CREATE_LINEAR_COMMENT
Creates a new comment on a specified Linear issue. This action modifies shared workspace data and is not reversible — confirm the target issue and comment content before executing.
Input parameters
Section titled “Input parameters”| Name | Type | Required | Description |
|---|---|---|---|
body | string | Yes | Non-empty comment content, in plain text or Markdown. Must not be whitespace-only. |
issueId | string | Yes | ID of the Linear issue to add the comment to. Must be in one of two formats: (1) UUID format: a 36-character string with hyphens (e.g., ‘c5748ccf-c67f-4af4-bd74-fe513dc4c054’), or (2) Shorthand identifier: team key followed by hyphen and issue number (e.g., ‘ENG-123’). Use LINEAR_LIST_LINEAR_ISSUES to retrieve valid issue IDs if needed. |
Output
Section titled “Output”| Name | Type | Required | Description |
|---|---|---|---|
data | string | Yes | Data from the action execution. |
error | string | No | Error if any occurred during the execution of the action. |
successful | boolean | Yes | Whether or not the action execution was successful. |
Create linear issue
Section titled “Create linear issue”LINEAR_CREATE_LINEAR_ISSUE
Creates a new issue in a specified Linear project and team, requiring team_id and title, and allowing optional properties like description, assignee, state, priority, cycle, and due date. All UUID parameters (state_id, assignee_id, cycle_id, label_ids, project_id) must belong to the same team as team_id. The created issue’s id is returned in data.id — capture it for use as parent_id in sub-issues or follow-up operations.
Input parameters
Section titled “Input parameters”| Name | Type | Required | Description |
|---|---|---|---|
title | string | Yes | The title of the new issue. |
team_id | string | Yes | UUID of the team responsible for this issue. Use LINEAR_GET_ALL_LINEAR_TEAMS to retrieve available teams and their UUIDs. Only UUID format is accepted — do not use team keys or names. |
cycle_id | string | No | UUID of the cycle (sprint) to assign this issue to. Only applicable if the team has cycles feature enabled. Must belong to the same team as team_id. |
due_date | string | No | The target completion date in ISO8601 datetime format or YYYY-MM-DD TimelessDate format (e.g., ‘2024-12-31’). |
estimate | integer | No | The estimated complexity or effort for the issue as a numerical point value (e.g., 1, 2, 3, 5, 8). Applies only if the estimates feature is enabled for the team. |
priority | integer | No | Priority of the issue: 0 = no priority, 1 = Urgent, 2 = High, 3 = Normal, 4 = Low. |
state_id | string | No | UUID of the workflow state to assign to the issue. Must belong to the same team as team_id. |
label_ids | array | No | A list of UUIDs for labels to be added to this issue. Linear organizes labels into groups where only ONE label per group can be applied. Use LINEAR_LIST_LINEAR_LABELS with team_id to get valid labels. |
parent_id | string | No | UUID of an existing issue to set as the parent, creating a sub-issue relationship. |
project_id | string | No | UUID of the project to associate with this issue. Must belong to the same team as team_id. |
assignee_id | string | No | UUID of the user to assign to this issue. User must be a member of the team specified in team_id. |
description | string | No | A detailed description of the issue, which can include markdown formatting. |
Output
Section titled “Output”| Name | Type | Required | Description |
|---|---|---|---|
data | string | Yes | Data from the action execution. |
error | string | No | Error if any occurred during the execution of the action. |
successful | boolean | Yes | Whether or not the action execution was successful. |
Create issue relation
Section titled “Create issue relation”LINEAR_CREATE_LINEAR_ISSUE_RELATION
Create a relationship between two Linear issues using the issueRelationCreate mutation. Use this to establish connections like ‘blocks’, ‘duplicate’, or ‘related’ between issues.
Input parameters
Section titled “Input parameters”| Name | Type | Required | Description |
|---|---|---|---|
issue_id | string | Yes | UUID of the primary issue in the relationship. |
relation_type | string | Yes | Type of relationship between the two issues. Options: ‘blocks’ (this issue blocks the related issue), ‘duplicate’ (this issue is a duplicate of the related issue), ‘related’ (general relationship between issues). |
related_issue_id | string | Yes | UUID of the related issue. |
Output
Section titled “Output”| Name | Type | Required | Description |
|---|---|---|---|
data | string | Yes | Data from the action execution. |
error | string | No | Error if any occurred during the execution of the action. |
successful | boolean | Yes | Whether or not the action execution was successful. |
Create a label
Section titled “Create a label”LINEAR_CREATE_LINEAR_LABEL
Creates a new label in Linear for a specified team, used to categorize and organize issues. Label names must be unique within each team. If a label with the same name already exists, the existing label will be returned.
Input parameters
Section titled “Input parameters”| Name | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Name of the new label, displayed in the Linear UI. Must be unique within the team. |
color | string | Yes | Hexadecimal color code (e.g., ‘#FF0000’) for the label’s appearance in the UI. |
team_id | string | Yes | Identifier of the team for which this label will be created. |
description | string | No | Optional detailed description for the label, providing context on its use. |
Output
Section titled “Output”| Name | Type | Required | Description |
|---|---|---|---|
data | string | Yes | Data from the action execution. |
error | string | No | Error if any occurred during the execution of the action. |
successful | boolean | Yes | Whether or not the action execution was successful. |
Create Project
Section titled “Create Project”LINEAR_CREATE_LINEAR_PROJECT
Creates a new Linear project with specified name and team associations.
Input parameters
Section titled “Input parameters”| Name | Type | Required | Description |
|---|---|---|---|
name | string | Yes | The name of the project. Linear permits duplicate project names within a team; uniqueness must be enforced externally if required. |
team_ids | array | Yes | List of team IDs (UUIDs) that this project will be associated with. At least one valid team ID is required. Use LINEAR_GET_ALL_LINEAR_TEAMS to obtain IDs. |
icon | string | No | Optional icon for the project. Must be a valid icon name string from Linear’s icon set (case-sensitive). Verified valid icon names include: ‘Project’, ‘Rocket’, ‘Bug’, ‘Team’, ‘Calendar’, ‘Home’. |
color | string | No | Optional color for the project (hex color code). |
lead_id | string | No | Optional ID (UUID) of the user who will lead this project. |
priority | integer | No | Priority level of the project: 0 = No priority, 1 = Urgent, 2 = High, 3 = Normal, 4 = Low. |
start_date | string | No | Optional planned start date in YYYY-MM-DD format. |
description | string | No | Optional description for the project. Supports markdown formatting. Maximum 255 characters. |
target_date | string | No | Optional planned completion date in YYYY-MM-DD format. |
Output
Section titled “Output”| Name | Type | Required | Description |
|---|---|---|---|
data | string | Yes | Data from the action execution. |
error | string | No | Error if any occurred during the execution of the action. |
successful | boolean | Yes | Whether or not the action execution was successful. |
Create Project Milestone
Section titled “Create Project Milestone”LINEAR_CREATE_PROJECT_MILESTONE
Tool to create a project milestone in Linear with a name and optional target date and sort order. Use when you need to add milestones to track progress within a project.
Input parameters
Section titled “Input parameters”| Name | Type | Required | Description |
|---|---|---|---|
name | string | Yes | The name/title of the milestone. |
project_id | string | Yes | UUID of the project to which this milestone belongs. |
sort_order | number | No | Optional sort order number for the milestone. Lower numbers appear first. |
description | string | No | Optional description for the milestone. Supports markdown formatting. |
target_date | string | No | Optional target date for the milestone in YYYY-MM-DD format. |
Output
Section titled “Output”| Name | Type | Required | Description |
|---|---|---|---|
data | string | Yes | Data from the action execution. |
error | string | No | Error if any occurred during the execution of the action. |
successful | boolean | Yes | Whether or not the action execution was successful. |
Create Project Update
Section titled “Create Project Update”LINEAR_CREATE_PROJECT_UPDATE
Tool to create a project status update post for a Linear project. Use when you need to post progress updates, status reports, or announcements for a project.
Input parameters
Section titled “Input parameters”| Name | Type | Required | Description |
|---|---|---|---|
body | string | Yes | The body content of the project update. Supports markdown formatting. This is the main content describing the project status, progress, blockers, and next steps. |
project_id | string | Yes | The unique identifier (UUID) of the project to create an update for. |
health | string | No | Health status for a project update in Linear: ‘onTrack’, ‘atRisk’, or ‘offTrack’. |
is_diff_hidden | boolean | No | Optional flag to control whether the diff (changes since last update) should be hidden in the update. If true, the diff will not be displayed. |
Output
Section titled “Output”| Name | Type | Required | Description |
|---|---|---|---|
data | string | Yes | Data from the action execution. |
error | string | No | Error if any occurred during the execution of the action. |
successful | boolean | Yes | Whether or not the action execution was successful. |
Delete issue
Section titled “Delete issue”LINEAR_DELETE_LINEAR_ISSUE
Archives an existing Linear issue by its ID, which is Linear’s standard way of deleting issues; the operation is idempotent. Archiving is permanent with no built-in undo — confirm the issue identifier and title before executing, especially in bulk operations.
Input parameters
Section titled “Input parameters”| Name | Type | Required | Description |
|---|---|---|---|
issue_id | string | Yes | ID of the Linear issue to be archived. Must be in one of two formats: (1) UUID format: a 36-character string with hyphens (e.g., ‘c5748ccf-c67f-4af4-bd74-fe513dc4c054’), or (2) Shorthand identifier: team key followed by hyphen and issue number (e.g., ‘ENG-123’). Plain numeric IDs are NOT valid. |
Output
Section titled “Output”| Name | Type | Required | Description |
|---|---|---|---|
data | string | Yes | Data from the action execution. |
error | string | No | Error if any occurred during the execution of the action. |
successful | boolean | Yes | Whether or not the action execution was successful. |
Get all teams (Deprecated)
Section titled “Get all teams (Deprecated)”LINEAR_GET_ALL_LINEAR_TEAMS
DEPRECATED: Use ListLinearTeams instead (returns paginated payloads with members and projects); this tool returns simpler id/name-level data for all teams visible to the connected workspace with no server-side filtering. Match teams on stable team id, not display name, as names are not guaranteed unique.
Input parameters
Section titled “Input parameters”| Name | Type | Required | Description |
|---|---|---|---|
after | string | No | Cursor for pagination. Use the endCursor from the previous response’s page_info to fetch the next page. |
first | integer | No | Number of teams to return per page. |
Output
Section titled “Output”| Name | Type | Required | Description |
|---|---|---|---|
data | string | Yes | Data from the action execution. |
error | string | No | Error if any occurred during the execution of the action. |
successful | boolean | Yes | Whether or not the action execution was successful. |
Download issue attachments
Section titled “Download issue attachments”LINEAR_GET_ATTACHMENT
Downloads a specific attachment from a Linear issue; the file_name must include the correct file extension.
Input parameters
Section titled “Input parameters”| Name | Type | Required | Description |
|---|---|---|---|
issue_id | string | Yes | The unique identifier of the Linear issue from which the attachment will be downloaded. |
file_name | string | Yes | The desired name for the downloaded file, including its extension. |
attachment_id | string | Yes | The unique identifier of the specific attachment to download. |
Output
Section titled “Output”| Name | Type | Required | Description |
|---|---|---|---|
data | string | Yes | Data from the action execution. |
error | string | No | Error if any occurred during the execution of the action. |
successful | boolean | Yes | Whether or not the action execution was successful. |
Get current user
Section titled “Get current user”LINEAR_GET_CURRENT_USER
Gets the currently authenticated user’s ID, name, email, and other profile information — this is the account behind the API token, which may be a bot or service account rather than a human user. Use the returned id field (nested under data.viewer) for downstream Linear operations requiring user ID filtering.
Output
Section titled “Output”| Name | Type | Required | Description |
|---|---|---|---|
data | string | Yes | Data from the action execution. |
error | string | No | Error if any occurred during the execution of the action. |
successful | boolean | Yes | Whether or not the action execution was successful. |
Get cycles by team ID
Section titled “Get cycles by team ID”LINEAR_GET_CYCLES_BY_TEAM_ID
Retrieves all cycles for a specified Linear team ID; cycles are time-boxed work periods (like sprints). Results are team-scoped to the given team_id. To identify the active cycle, check that the current date (in UTC) falls between a cycle’s startAt and endAt fields.
Input parameters
Section titled “Input parameters”| Name | Type | Required | Description |
|---|---|---|---|
team_id | string | Yes | The team’s unique identifier. Must be a valid UUID (e.g., ‘d282d590-8462-4390-8ef9-98f5ac2190b0’). Use LINEAR_GET_ALL_LINEAR_TEAMS to resolve if unknown. |
after | string | No | Cursor for pagination. Use the endCursor value from the previous response’s page_info to fetch the next page. |
first | integer | No | Number of cycles to return per page. Maximum 250. |
Output
Section titled “Output”| Name | Type | Required | Description |
|---|---|---|---|
data | string | Yes | Data from the action execution. |
error | string | No | Error if any occurred during the execution of the action. |
successful | boolean | Yes | Whether or not the action execution was successful. |
Get create issue default params
Section titled “Get create issue default params”LINEAR_GET_ISSUE_DEFAULTS
Fetches a Linear team’s default issue estimate and state, useful for pre-filling new issue forms.
Input parameters
Section titled “Input parameters”| Name | Type | Required | Description |
|---|---|---|---|
team_id | string | Yes | Identifier of the Linear team. Must be a valid UUID. |
Output
Section titled “Output”| Name | Type | Required | Description |
|---|---|---|---|
data | string | Yes | Data from the action execution. |
error | string | No | Error if any occurred during the execution of the action. |
successful | boolean | Yes | Whether or not the action execution was successful. |
Get Linear issue
Section titled “Get Linear issue”LINEAR_GET_LINEAR_ISSUE
Retrieves an existing Linear issue’s comprehensive details, including id, identifier, title, description, timestamps, state, team, creator, attachments, comments (with user info and timestamps), subscribers, and due date. Optional fields (labels, project, state, assignee, cycle) may be null.
Input parameters
Section titled “Input parameters”| Name | Type | Required | Description |
|---|---|---|---|
issue_id | string | Yes | ID of the Linear issue. Must be in one of two formats: (1) UUID format: a 36-character string with hyphens (e.g., ‘c5748ccf-c67f-4af4-bd74-fe513dc4c054’), or (2) Shorthand identifier (e.g., ‘ENG-123’). Plain numeric IDs and full URLs are invalid. |
Output
Section titled “Output”| Name | Type | Required | Description |
|---|---|---|---|
data | string | Yes | Data from the action execution. |
error | string | No | Error if any occurred during the execution of the action. |
successful | boolean | Yes | Whether or not the action execution was successful. |
Get Linear project
Section titled “Get Linear project”LINEAR_GET_LINEAR_PROJECT
Retrieves a single Linear project by its unique identifier. Use when verifying a newly created or updated project, or when fetching detailed project information by ID.
Input parameters
Section titled “Input parameters”| Name | Type | Required | Description |
|---|---|---|---|
project_id | string | Yes | The unique identifier (UUID) of the Linear project to retrieve. |
include_teams | boolean | No | Whether to include teams associated with the project in the response. |
include_members | boolean | No | Whether to include project members in the response. |
include_initiatives | boolean | No | Whether to include related initiatives in the response. |
Output
Section titled “Output”| Name | Type | Required | Description |
|---|---|---|---|
data | string | Yes | Data from the action execution. |
error | string | No | Error if any occurred during the execution of the action. |
successful | boolean | Yes | Whether or not the action execution was successful. |
List issue drafts
Section titled “List issue drafts”LINEAR_LIST_ISSUE_DRAFTS
Tool to list issue drafts. Use when you need to fetch draft issues for review or further editing. Check pageInfo.hasNextPage in the response to determine if additional drafts exist beyond the current page.
Input parameters
Section titled “Input parameters”| Name | Type | Required | Description |
|---|---|---|---|
after | string | No | Cursor for pagination. Use the endCursor from the previous response’s pageInfo to fetch the next set of drafts. |
first | integer | No | Number of draft issues to return. |
Output
Section titled “Output”| Name | Type | Required | Description |
|---|---|---|---|
data | string | Yes | Data from the action execution. |
error | string | No | Error if any occurred during the execution of the action. |
successful | boolean | Yes | Whether or not the action execution was successful. |
List issues by team ID
Section titled “List issues by team ID”LINEAR_LIST_ISSUES_BY_TEAM_ID
Tool to list all issues for a specific Linear team, scoped by team ID. Use when you need to retrieve issues belonging to a particular team without fetching workspace-wide issues. This is more efficient than workspace-wide listing followed by client-side filtering.
Input parameters
Section titled “Input parameters”| Name | Type | Required | Description |
|---|---|---|---|
team_id | string | Yes | The unique identifier (UUID) of the Linear team whose issues you want to list. |
after | string | No | Opaque pagination cursor for fetching the next page of results. Must be the exact end_cursor value from a previous response’s page_info. Omit for the first page. |
first | integer | No | Number of issues to return per page (forward pagination). Must be between 1 and 250. |
include_archived | boolean | No | Whether to include archived issues in the results. Default is false. |
Output
Section titled “Output”| Name | Type | Required | Description |
|---|---|---|---|
data | string | Yes | Data from the action execution. |
error | string | No | Error if any occurred during the execution of the action. |
successful | boolean | Yes | Whether or not the action execution was successful. |
Get all cycles
Section titled “Get all cycles”LINEAR_LIST_LINEAR_CYCLES
Retrieves all cycles (time-boxed sprint iterations) org-wide from the Linear account; no filters applied. In large multi-team workspaces this produces heavy responses — filter client-side by team ID and date range using each cycle’s startsAt/endsAt fields.
Input parameters
Section titled “Input parameters”| Name | Type | Required | Description |
|---|---|---|---|
after | string | No | Cursor for pagination. Use the endCursor from the previous response’s page_info to fetch the next page. |
first | integer | No | Number of cycles to return per page. |
Output
Section titled “Output”| Name | Type | Required | Description |
|---|---|---|---|
data | string | Yes | Data from the action execution. |
error | string | No | Error if any occurred during the execution of the action. |
successful | boolean | Yes | Whether or not the action execution was successful. |
List Linear issues
Section titled “List Linear issues”LINEAR_LIST_LINEAR_ISSUES
Lists non-archived Linear issues; if project_id is not specified, issues from all accessible projects are returned. Can filter by assignee_id. Only project_id and assignee_id server-side filters are supported; label, state, team, cycle, or date filters must be done client-side or via LINEAR_RUN_QUERY_OR_MUTATION.
Input parameters
Section titled “Input parameters”| Name | Type | Required | Description |
|---|---|---|---|
after | string | No | Cursor for pagination (opaque string). Use the exact endCursor value from the previous response’s page_info. |
first | integer | No | Number of issues to return. Maximum 250 per page. |
project_id | string | No | ID of the project to filter issues by. If provided, only issues belonging to this project will be returned. |
assignee_id | string | No | UUID of the user to filter issues by assignee. Use ‘me’ to filter by the current authenticated user, or provide a valid Linear user UUID. |
original_cursor | string | No | The original cursor value before it was reset. |
cursor_was_corrupted | boolean | No | Indicates whether the pagination cursor was corrupted and reset. |
Output
Section titled “Output”| Name | Type | Required | Description |
|---|---|---|---|
data | string | Yes | Data from the action execution. |
error | string | No | Error if any occurred during the execution of the action. |
successful | boolean | Yes | Whether or not the action execution was successful. |
Get labels
Section titled “Get labels”LINEAR_LIST_LINEAR_LABELS
Retrieves labels from Linear. If team_id is provided, returns labels for that specific team; if omitted, returns all labels across the workspace. Label names are not unique across teams — always use returned IDs, not names.
Input parameters
Section titled “Input parameters”| Name | Type | Required | Description |
|---|---|---|---|
after | string | No | Cursor for pagination. Use the endCursor value from the previous response’s page_info to fetch the next page. |
first | integer | No | Number of labels to return per page. Maximum 250. |
team_id | string | No | The unique identifier of the team for which to retrieve labels. If omitted, returns all labels across the workspace. Workspace-wide label IDs may not be valid for team-scoped mutations. |
Output
Section titled “Output”| Name | Type | Required | Description |
|---|---|---|---|
data | string | Yes | Data from the action execution. |
error | string | No | Error if any occurred during the execution of the action. |
successful | boolean | Yes | Whether or not the action execution was successful. |
List linear projects
Section titled “List linear projects”LINEAR_LIST_LINEAR_PROJECTS
Retrieves all projects from the Linear account. Returns a flat array (not a GraphQL connection) with fields id and name. No server-side filtering: all workspace projects are returned regardless of team or name — filter client-side. Multiple projects can share identical names; always confirm project_id before downstream use.
Input parameters
Section titled “Input parameters”| Name | Type | Required | Description |
|---|---|---|---|
after | string | No | Cursor for pagination. Use the endCursor from the previous response’s page_info to fetch the next page. |
first | integer | No | Number of projects to return per page. |
Output
Section titled “Output”| Name | Type | Required | Description |
|---|---|---|---|
data | string | Yes | Data from the action execution. |
error | string | No | Error if any occurred during the execution of the action. |
successful | boolean | Yes | Whether or not the action execution was successful. |
List Linear states
Section titled “List Linear states”LINEAR_LIST_LINEAR_STATES
Retrieves all workflow states for a specified team in Linear, representing the stages an issue progresses through in that team’s workflow. Returned state IDs are team-scoped — never reuse a stateId across different teams. State names (e.g., ‘Done’, ‘In Progress’) are non-unique across teams; always resolve names to IDs via this tool for the specific team_id.
Input parameters
Section titled “Input parameters”| Name | Type | Required | Description |
|---|---|---|---|
team_id | string | Yes | UUID of a team in your Linear workspace. Use LINEAR_GET_ALL_LINEAR_TEAMS to list teams and obtain valid IDs. |
after | string | No | Cursor for pagination. Use the endCursor value from the previous response’s page_info to fetch the next page. |
first | integer | No | Number of states to return per page. Maximum 250. |
Output
Section titled “Output”| Name | Type | Required | Description |
|---|---|---|---|
data | string | Yes | Data from the action execution. |
error | string | No | Error if any occurred during the execution of the action. |
successful | boolean | Yes | Whether or not the action execution was successful. |
Get teams
Section titled “Get teams”LINEAR_LIST_LINEAR_TEAMS
Retrieves all teams with their members and projects. Use stable team IDs or keys (not display names) for subsequent operations — names are non-unique. Results reflect only teams visible to the authenticated token scope.
Input parameters
Section titled “Input parameters”| Name | Type | Required | Description |
|---|---|---|---|
after | string | No | Cursor for pagination. Use the endCursor value from the previous response’s page_info to fetch the next page. |
first | integer | No | Number of teams to return per page. Maximum 250. |
project_id | string | No | Optional project ID to filter teams’ associated projects. If provided, only projects matching this ID will be included in each team’s ‘projects’ list. |
Output
Section titled “Output”| Name | Type | Required | Description |
|---|---|---|---|
data | string | Yes | Data from the action execution. |
error | string | No | Error if any occurred during the execution of the action. |
successful | boolean | Yes | Whether or not the action execution was successful. |
List Linear users
Section titled “List Linear users”LINEAR_LIST_LINEAR_USERS
Lists all workspace users (not team-scoped) with their IDs, names, emails, and active status. Display names are non-unique — use email to disambiguate before extracting an ID. Only assign users with active: true.
Input parameters
Section titled “Input parameters”| Name | Type | Required | Description |
|---|---|---|---|
after | string | No | Cursor for pagination. Use the endCursor from the previous response’s page_info to fetch the next set of users. |
first | integer | No | Number of users to return. In large workspaces, check page_info.hasNextPage and paginate using after. |
Output
Section titled “Output”| Name | Type | Required | Description |
|---|---|---|---|
data | string | Yes | Data from the action execution. |
error | string | No | Error if any occurred during the execution of the action. |
successful | boolean | Yes | Whether or not the action execution was successful. |
Remove label from Linear issue
Section titled “Remove label from Linear issue”LINEAR_REMOVE_ISSUE_LABEL
Removes a specified label from an existing Linear issue using their IDs; successful even if the label isn’t on the issue. Operation is irreversible — obtain explicit user approval before executing. Use this tool instead of LINEAR_UPDATE_ISSUE to avoid replacing the entire label set.
Input parameters
Section titled “Input parameters”| Name | Type | Required | Description |
|---|---|---|---|
issue_id | string | Yes | Identifier of the Linear issue from which to remove the label. Verify this is the correct issue before executing. |
label_id | string | Yes | Identifier of the label to remove. The operation is successful without change if this label isn’t on the issue. |
Output
Section titled “Output”| Name | Type | Required | Description |
|---|---|---|---|
data | string | Yes | Data from the action execution. |
error | string | No | Error if any occurred during the execution of the action. |
successful | boolean | Yes | Whether or not the action execution was successful. |
Remove reaction from comment
Section titled “Remove reaction from comment”LINEAR_REMOVE_REACTION
Tool to remove a reaction on a comment. Use when you have a reaction ID and need to delete it.
Input parameters
Section titled “Input parameters”| Name | Type | Required | Description |
|---|---|---|---|
reaction_id | string | Yes | Identifier of the reaction to delete. |
Output
Section titled “Output”| Name | Type | Required | Description |
|---|---|---|---|
data | string | Yes | Data from the action execution. |
error | string | No | Error if any occurred during the execution of the action. |
successful | boolean | Yes | Whether or not the action execution was successful. |
Run Query or Mutation
Section titled “Run Query or Mutation”LINEAR_RUN_QUERY_OR_MUTATION
Execute any GraphQL query or mutation against Linear’s API. USE WHEN: No dedicated action exists, need complex filtering, custom fields, or schema discovery. Run introspection before unknown operations. Linear uses nested objects (project { id }), NOT scalar IDs (projectId). All IDs are UUIDs. Filter: { field: { eq: value } }. Pagination: nodes[] + pageInfo.
Input parameters
Section titled “Input parameters”| Name | Type | Required | Description |
|---|---|---|---|
query_or_mutation | string | Yes | GraphQL query or mutation for Linear’s API. Must be a non-empty, valid GraphQL query or mutation string. |
variables | object | No | Variables for the GraphQL operation as a JSON object. Optional — omit or use {} if no variables are needed. |
Output
Section titled “Output”| Name | Type | Required | Description |
|---|---|---|---|
data | string | Yes | Data from the action execution. |
error | string | No | Error if any occurred during the execution of the action. |
successful | boolean | Yes | Whether or not the action execution was successful. |
Search Linear issues
Section titled “Search Linear issues”LINEAR_SEARCH_ISSUES
Search Linear issues using full-text search across identifier, title, and description. Use when you need to find issues by keywords or specific identifiers. Note: This endpoint only supports full-text search; for structured filtering by team, project, assignee, state, or labels, use LIST_ISSUES_BY_TEAM_ID instead.
Input parameters
Section titled “Input parameters”| Name | Type | Required | Description |
|---|---|---|---|
query | string | Yes | The search query text. Searches across issue identifier (e.g., ‘ENG-123’), title, and description fields. Full-text search only; structured filtering is not supported on this endpoint. |
after | string | No | Cursor for pagination. Use the endCursor from the previous response’s page_info to fetch the next page of results. |
first | integer | No | Number of issues to return per page. Must be between 1 and 50. Defaults to 25. |
include_archived | boolean | No | Whether to include archived issues in search results. Defaults to false. |
Output
Section titled “Output”| Name | Type | Required | Description |
|---|---|---|---|
data | string | Yes | Data from the action execution. |
error | string | No | Error if any occurred during the execution of the action. |
successful | boolean | Yes | Whether or not the action execution was successful. |
Update issue
Section titled “Update issue”LINEAR_UPDATE_ISSUE
Updates an existing Linear issue using its issue_id; requires at least one other attribute for modification, and all provided entity IDs (for state, assignee, labels, etc.) must be valid UUIDs — only issueId accepts key format (e.g., ‘ENG-123’). All updated fields are fully overwritten, not merged; omit any field you do not intend to change.
Input parameters
Section titled “Input parameters”| Name | Type | Required | Description |
|---|---|---|---|
issueId | string | Yes | Identifier of the issue to update. Accepts either UUID format (e.g., ‘d282c513-3265-4513-9099-abc0123def45’) or issue key format (e.g., ‘ENG-123’). |
title | string | No | New title for the issue. |
teamId | string | No | UUID of the team to move the issue to. Use to transfer an issue from one team to another. |
cycleId | string | No | UUID of the cycle (sprint) to assign this issue to. The cycle must belong to the same team as the issue. |
dueDate | string | No | New due date in ISO8601 datetime format or YYYY-MM-DD TimelessDate format. |
stateId | string | No | UUID of the workflow state to transition the issue to. The state must belong to the same team as the issue. |
estimate | integer | No | Estimate points for the issue (e.g., 1, 2, 3, 5, 8). |
labelIds | array | No | List of label identifiers to set; replaces all existing labels. An empty list removes all labels. |
parentId | string | No | UUID of an existing issue to set as this issue’s parent (making this issue a sub-issue). |
priority | integer | No | Priority: 0 (No priority), 1 (Urgent), 2 (High), 3 (Normal), 4 (Low). |
projectId | string | No | UUID of the project to associate the issue with. The project must belong to the same team as the issue. |
assigneeId | string | No | UUID of the user to assign to the issue. Must be a valid user UUID from your Linear workspace. |
description | string | No | New Markdown description for the issue. |
Output
Section titled “Output”| Name | Type | Required | Description |
|---|---|---|---|
data | string | Yes | Data from the action execution. |
error | string | No | Error if any occurred during the execution of the action. |
successful | boolean | Yes | Whether or not the action execution was successful. |
Update a comment
Section titled “Update a comment”LINEAR_UPDATE_LINEAR_COMMENT
Tool to update an existing Linear comment’s body text. Use when you need to edit or modify the content of a previously created comment.
Input parameters
Section titled “Input parameters”| Name | Type | Required | Description |
|---|---|---|---|
body | string | Yes | New comment content, in plain text or Markdown format. |
comment_id | string | Yes | Unique identifier of the comment to update. |
Output
Section titled “Output”| Name | Type | Required | Description |
|---|---|---|---|
data | string | Yes | Data from the action execution. |
error | string | No | Error if any occurred during the execution of the action. |
successful | boolean | Yes | Whether or not the action execution was successful. |
Update Project
Section titled “Update Project”LINEAR_UPDATE_LINEAR_PROJECT
Tool to update an existing Linear project. Use when you need to modify project properties like name, description, state, dates, or lead. All fields except project_id are optional - only provide the fields you want to update.
Input parameters
Section titled “Input parameters”| Name | Type | Required | Description |
|---|---|---|---|
project_id | string | Yes | The unique identifier (UUID) of the project to update. |
icon | string | No | Icon identifier for the project. |
name | string | No | New name for the project. |
color | string | No | Color for the project (hex color code). |
state | string | No | The state of the project. Standard values: ‘backlog’, ‘planned’, ‘started’, ‘completed’, ‘canceled’. |
lead_id | string | No | The UUID of the user who will lead this project. Use LINEAR_LIST_LINEAR_USERS to get valid user IDs. |
priority | integer | No | Priority level of the project: 0 = No priority, 1 = Urgent, 2 = High, 3 = Normal, 4 = Low. |
status_id | string | No | The UUID of the project status to set. |
start_date | string | No | New planned start date in YYYY-MM-DD format. |
description | string | No | New description for the project. Supports plain text. |
target_date | string | No | New planned completion date in YYYY-MM-DD format. |
Output
Section titled “Output”| Name | Type | Required | Description |
|---|---|---|---|
data | string | Yes | Data from the action execution. |
error | string | No | Error if any occurred during the execution of the action. |
successful | boolean | Yes | Whether or not the action execution was successful. |