← Back to all apps

Linear

Productivityby Linear Orbit, Inc
Launched May 20, 2026 on ChatGPT

Manage issues, projects, and team workflows in Linear with natural language. Create and update issues, track progress, plan cycles, and coordinate development tasks using Linear’s streamlined project management interface for faster, more efficient workflows.

75ChatGPT Tools
22Claude Tools
Linear Orbit, IncDeveloper
ProductivityCategory

Use Cases

productivity

Available Tools

Create attachment (deprecated)

create_attachment
Full Description

Deprecated fallback for tiny files only. Accepts base64 file content, verifies SHA-256 checksum, and uploads it through the MCP worker. Prefer prepare_attachment_upload plus direct PUT plus create_attachment_from_upload.

CRITICAL: Do not print base64Content and then copy it into this tool call. Opaque base64 copied through model-visible text is easy to corrupt.

Generate base64Content mechanically from the source bytes and pass it through a programmatic argument construction path whenever available. Before calling this tool, verify the values are consistent:

Unix-like shells: file="/path/to/file" base64Content=$(base64 < "$file" | tr -d '\n\r') sha256=$(shasum -a 256 "$file" | awk '{print $1}') decodedSha256=$(printf '%s' "$base64Content" | base64 -d | shasum -a 256 | awk '{print $1}') size=$(wc -c < "$file" | tr -d ' ')

optional; stat can also get file byte size

decodedSize=$(printf '%s' "$base64Content" | base64 -d | wc -c | tr -d ' ')

PowerShell: $file = 'C:\path\to\file' $bytes = [IO.File]::ReadAllBytes($file) $base64Content = [Convert]::ToBase64String($bytes) $sha256 = (Get-FileHash -Algorithm SHA256 -Path $file).Hash.ToLower() $size = $bytes.Length

optional

$decoded = [Convert]::FromBase64String($base64Content) $decodedStream = [IO.MemoryStream]::new($decoded) $decodedSha256 = (Get-FileHash -Algorithm SHA256 -InputStream $decodedStream).Hash.ToLower() $decodedSize = $decoded.Length

decodedSha256 must equal sha256. If you pass size, decodedSize must equal size. Pass sha256. Passing size is optional, but recommended for clearer mismatch errors.

Parameters (5 required, 3 optional)
Required
base64Contentstring

Deprecated base64-encoded file content to upload

contentTypestring

MIME type for the upload (e.g., 'image/png', 'application/pdf')

filenamestring

Filename for the upload (e.g., 'screenshot.png')

issuestring

Issue ID or identifier (e.g., LIN-123)

sha256string

Expected SHA-256 hex digest of the decoded file bytes.

Optional
sizeinteger

Optional expected decoded file size in bytes. Rejects the upload if it does not match.

subtitlestring

Optional subtitle for the attachment

titlestring

Optional title for the attachment

Create attachment from upload

create_attachment_from_upload
Full Description

Link an already-uploaded Linear assetUrl to an existing issue as an attachment.

Use this only after: 1. prepare_attachment_upload returned an assetUrl and uploadRequest. 2. The client successfully PUT raw file bytes to uploadRequest.url.

This tool does not upload file content. It only creates the Linear attachment row. If the direct upload failed or the signed URL expired, rerun prepare_attachment_upload and upload again.

Parameters (2 required, 2 optional)
Required
assetUrlstring

Linear upload assetUrl returned by prepare_attachment_upload

issuestring

Issue ID or identifier (e.g., LIN-123)

Optional
subtitlestring

Optional attachment subtitle

titlestring

Attachment title. Defaults to filename or asset URL

Create document

create_document
Full Description

Create a new document in Linear

Parameters (1 required, 5 optional)
Required
titlestring

Document title

Optional
colorstring

Hex color

contentstring

Content as Markdown

iconstring

Icon emoji

issuestring

Issue ID or identifier (e.g., LIN-123)

projectstring

Project name, ID, or slug

Create initiative label (deprecated)

create_initiative_label
Full Description

Create a new Linear initiative label. Deprecated: use save_initiative_label, which can also update labels.

Parameters (1 required, 4 optional)
Required
namestring

Label name

Optional
colorstring

Hex color code

descriptionstring

Label description

isGroupboolean

Whether the label is a group

Default: False
parentstring

Parent label group name or ID

Create issue label (deprecated)

create_issue_label
Full Description

Create a new Linear issue label. Deprecated: use save_issue_label, which can also update labels.

Parameters (1 required, 5 optional)
Required
namestring

Label name

Optional
colorstring

Hex color code

descriptionstring

Label description

isGroupboolean

Whether the label is a group

Default: False
parentstring

Parent label group name or ID

teamIdstring

Team UUID (omit for workspace label)

Delete attachment

delete_attachment
Full Description

Delete an attachment by ID

Parameters (1 required)
Required
idstring

Attachment ID

Delete comment

delete_comment
Full Description

Delete a Linear comment. Inline description comments (those with non-null quotedText) anchor a mark in the editor, so their root cannot be deleted — delete the replies individually or resolve the thread instead.

Parameters (1 required)
Required
idstring

Comment ID

Delete customer

delete_customer
Full Description

Delete a customer in Linear

Parameters (1 required)
Required
idstring

Customer ID

Delete customer need

delete_customer_need
Full Description

Archive a customer need in Linear

Parameters (1 required)
Required
idstring

Customer need ID

Delete diff comment

delete_diff_comment
Full Description

Delete a comment or persisted draft from a Linear diff

Parameters (0 required, 2 optional)
Optional
commentIdstring

Submitted diff comment ID to delete

draftIdstring

Persisted diff comment draft ID to delete

Delete status update

delete_status_update
Full Description

Delete (archive) a project or initiative status update.

Parameters (2 required)
Required
idstring

Status update ID

typestring

Type of status update

Options:projectinitiative

Extract images

extract_images
Full Description

Extract and fetch images from markdown content. Use this to view screenshots, diagrams, or other images embedded in Linear issues, comments, or documents. Pass the markdown content (e.g., issue description) and receive the images as viewable data.

Parameters (1 required)
Required
markdownstring

Markdown content containing image references (e.g., issue description, comment body)

Fetch

fetch
Full Description

Fetch a Linear issue, project, initiative, or document by entity-prefixed ID. Use to get full details for results returned by the search tool. Also works with any known identifier.

Parameters (1 required)
Required
idstring

Entity-prefixed ID returned by `search`, like `issue:LIN-123`

Get agent skill

get_agent_skill
Full Description

Retrieve a Linear Agent skill by ID, including its full markdown instructions.

Parameters (1 required)
Required
idstring

Agent skill ID

Get attachment

get_attachment
Full Description

Retrieve an attachment's content by ID.

Parameters (1 required)
Required
idstring

Attachment ID

Get diff

get_diff
Full Description

Exact lookup for a Linear diff. Use with review URLs, GitHub PR URLs, Linear full identifiers, UUIDs, or slugs.

Parameters (1 required)
Required
urlOrIdstring

Linear review URL, diff slug, pull request ID, Linear full identifier, or GitHub PR URL

Get diff threads

get_diff_threads
Full Description

Exact lookup for diff threads and the authenticated user's drafts. Use with review URLs, GitHub PR URLs, Linear full identifiers, UUIDs, or slugs.

Parameters (1 required, 3 optional)
Required
urlOrIdstring

Linear review URL, diff slug, pull request ID, Linear full identifier, or GitHub PR URL

Optional
orderBystring

Sort: createdAt | updatedAt

Options:createdAtupdatedAt
Default: updatedAt
resolvedboolean

Filter returned threads by resolved state

threadIdstring

Optional Linear comment UUID of any comment in the thread (not its `externalThreadId`); a reply's UUID resolves to its thread root

Get document

get_document
Full Description

Retrieve a Linear document by ID or slug

Parameters (1 required)
Required
idstring

Document ID or slug

Get initiative

get_initiative
Full Description

Retrieve detailed information about a specific initiative in Linear

Parameters (1 required, 2 optional)
Required
querystring

Initiative name, ID, identifier (e.g., INIT-123), or slug

Optional
includeProjectsboolean

Include projects

Default: False
includeSubInitiativesboolean

Include sub-initiatives

Default: False

Get issue

get_issue
Full Description

Retrieve detailed information about an issue by ID, including attachments, git branch name, and active Triage Intelligence suggestions when the issue is in triage

Parameters (1 required, 3 optional)
Required
idstring

Issue ID or identifier (e.g., LIN-123)

Optional
includeCustomerNeedsboolean

Include associated customer needs

Default: False
includeRelationsboolean

Include blocking/related/duplicate relations

Default: False
includeReleasesboolean

Include associated releases

Default: False

Get issue status

get_issue_status
Full Description

Retrieve detailed information about an issue status in Linear by name or ID

Parameters (3 required)
Required
idstring

Status ID

namestring

Status name

teamstring

Team name or ID

Get milestone

get_milestone
Full Description

Retrieve details of a specific milestone by ID or name

Parameters (2 required)
Required
projectstring

Project name, ID, identifier (e.g., PROJ-123), or slug

querystring

Milestone name or ID

Get notifications

get_notifications
Full Description

Get a page of notifications from the authenticated user's Linear inbox.

Parameters (0 required, 3 optional)
Optional
cursorstring

Next page cursor

limitnumber

Max results (default 50, max 250)

Default: 50
unreadOnlyboolean

Only return unread notifications

Default: False

Get profile

get_profile
Full Description

Retrieve the profile of the currently authenticated user

Get project

get_project
Full Description

Retrieve details of a specific project in Linear

Parameters (1 required, 3 optional)
Required
querystring

Project name, ID, identifier (e.g., PROJ-123), or slug

Optional
includeMembersboolean

Include project members

Default: False
includeMilestonesboolean

Include milestones

Default: False
includeResourcesboolean

Include resources (documents, links, attachments)

Default: False

Get release

get_release
Full Description

Retrieve details of a release by ID or slug.

Parameters (1 required, 1 optional)
Required
idstring

Release ID or slug

Optional
includeReleaseNotesboolean

Include associated release notes

Default: False

Get release notes

get_release_note
Full Description

Retrieve release notes by ID or slug, including markdown content.

Parameters (1 required, 1 optional)
Required
idstring

Release notes ID or slug

Optional
includeReleasesboolean

Include associated releases

Default: False

Get status updates

get_status_updates
Full Description

List or get project/initiative status updates. Pass id to get a specific update, or filter to list.

Parameters (1 required, 10 optional)
Required
typestring

Type of status update

Options:projectinitiative
Optional
createdAtstring

Created after: ISO-8601 date/duration (e.g., -P1D)

cursorstring

Next page cursor

idstring

Status update ID - if provided, returns this specific update

includeArchivedboolean

Include archived items

Default: False
initiativestring

Initiative name, ID, identifier (e.g., INIT-123), or slug

limitnumber

Max results (default 50, max 250)

Default: 50
orderBystring

Sort: createdAt | updatedAt

Options:createdAtupdatedAt
Default: updatedAt
projectstring

Project name, ID, identifier (e.g., PROJ-123), or slug

updatedAtstring

Updated after: ISO-8601 date/duration (e.g., -P1D)

userstring

User ID, name, email, or "me"

Get team

get_team
Full Description

Retrieve details of a specific Linear team

Parameters (1 required)
Required
querystring

Team UUID, key, or name

Get template

get_template
Full Description

Retrieve a Linear template by ID or name: the content it pre-fills, the ids it applies, its sub-issues, and its form fields. Pass the template to save_issue or save_project to apply it. References come back as ids, so read a name with the matching tool when you need one. A form template collects its answers through a form, so applying one here creates an issue with the form unanswered.

Parameters (1 required)
Required
idstring

Template ID or name

Get user

get_user
Full Description

Retrieve details of a specific Linear user

Parameters (1 required)
Required
querystring

User ID, name, email, or "me"

Get workspace

get_workspace
Full Description

Retrieve the connected Linear workspace

List agent skills

list_agent_skills
Full Description

List Linear Agent skills available to the authenticated user.

Parameters (0 required, 3 optional)
Optional
cursorstring

Next page cursor

limitnumber

Max results (default 50, max 250)

Default: 50
orderBystring

Sort: createdAt | updatedAt

Options:createdAtupdatedAt
Default: updatedAt

List comments

list_comments
Full Description

List comments on a Linear issue, project, initiative, document, project milestone, or project/initiative status update. Provide exactly one of issueId, projectId, initiativeId, documentId, milestoneId, or statusUpdateId. For issues, projects, and initiatives this returns both top-level discussion threads and inline description comments. Inline (anchored) comments carry a non-null quotedText set to the snippet of description text they reference. Returned comments include author and nullable onBehalfOf; when set, onBehalfOf identifies the user the agent author acted for.

Parameters (0 required, 10 optional)
Optional
cursorstring

Next page cursor

documentIdstring

Document ID or slug (provide exactly one parent)

initiativeIdstring

Initiative name, ID, identifier (e.g., INIT-123), or slug (provide exactly one parent)

issueIdstring

Issue ID or identifier (e.g., LIN-123) (provide exactly one parent)

limitnumber

Max results (default 50, max 250)

Default: 50
milestoneIdstring

Milestone UUID (provide exactly one parent). Resolve milestone names via `list_milestones` first.

orderBystring

Sort: createdAt | updatedAt

Options:createdAtupdatedAt
Default: updatedAt
projectIdstring

Project name, ID, identifier (e.g., PROJ-123), or slug (provide exactly one parent)

statusUpdateIdstring

Status update UUID (provide exactly one parent). Resolve status updates via `get_status_updates` first.

statusUpdateTypestring

Type of status update named by `statusUpdateId`, as returned by `get_status_updates`. Only valid together with `statusUpdateId`; omit to check both project and initiative status updates.

Options:projectinitiative

List customers

list_customers
Full Description

List customers in the user's Linear workspace

Parameters (0 required, 11 optional)
Optional
createdAtstring

Created after: ISO-8601 date/duration (e.g., -P1D)

cursorstring

Next page cursor

includeArchivedboolean

Include archived items

Default: False
includeNeedsboolean

Include associated customer needs

Default: False
limitnumber

Max results (default 50, max 250)

Default: 50
orderBystring

Sort: createdAt | updatedAt

Options:createdAtupdatedAt
Default: updatedAt
ownerstring

User ID, name, email, or "me"

querystring

Search customer name

statusstring

Customer status name or ID

tierstring

Customer tier name or ID

updatedAtstring

Updated after: ISO-8601 date/duration (e.g., -P1D)

List cycles

list_cycles
Full Description

Retrieve cycles for a specific Linear team

Parameters (1 required, 1 optional)
Required
teamIdstring

Team ID

Optional
typestring

Filter: current, previous, next, or all

Options:currentpreviousnext

List diffs

list_diffs
Full Description

List Linear diff pull requests visible to the authenticated user

Parameters (0 required, 10 optional)
Optional
authorstring

Filter by author ID, name, email, or "me"

cursorstring

Next page cursor

limitnumber

Max results (default 50, max 250)

Default: 50
orderBystring

Sort: createdAt | updatedAt

Options:createdAtupdatedAt
Default: updatedAt
ownerstring

Filter returned diffs by repository owner

querystring

Broad search by title, branch, PR number, or bare slug

repostring

Filter returned diffs by repository name

reviewerstring

Filter by reviewer ID, name, email, or "me"

reviewStatestring

Reviewer state; requires reviewer and defaults to pending when reviewer is set

Options:pendingapprovedchangesRequestedcommenteddismissed
statusstring

Filter returned diffs by pull request status

List documents

list_documents
Full Description

List documents in the user's Linear workspace

Parameters (0 required, 12 optional)
Optional
createdAtstring

Created after: ISO-8601 date/duration (e.g., -P1D)

creatorIdstring

Filter by creator ID

cursorstring

Next page cursor

fieldsarray

Fields to include in each result. `id` is always included. Omit or pass an empty array for the default response.

includeArchivedboolean

Include archived items

Default: False
initiativeIdstring

Filter by initiative ID

limitnumber

Max results (default 50, max 250)

Default: 50
orderBystring

Sort: createdAt | updatedAt

Options:createdAtupdatedAt
Default: updatedAt
projectIdstring

Filter by project ID

querystring

Search query

teamIdstring

Filter by team ID

updatedAtstring

Updated after: ISO-8601 date/duration (e.g., -P1D)

List initiative labels

list_initiative_labels
Full Description

List available initiative labels in the Linear workspace

Parameters (0 required, 4 optional)
Optional
cursorstring

Next page cursor

limitnumber

Max results (default 50, max 250)

Default: 50
namestring

Filter by name

orderBystring

Sort: createdAt | updatedAt

Options:createdAtupdatedAt
Default: updatedAt

List initiatives

list_initiatives
Full Description

List initiatives in the user's Linear workspace

Parameters (0 required, 15 optional)
Optional
createdAtstring

Created after: ISO-8601 date/duration (e.g., -P1D)

cursorstring

Next page cursor

fieldsarray

Fields to include in each result. `id` is always included. Omit or pass an empty array for the default response.

includeArchivedboolean

Include archived items

Default: False
includeProjectsboolean

Include projects

Default: False
includeSubInitiativesboolean

Include sub-initiatives

Default: False
labelstring

Label name or ID

leadTeamstring

Lead team name, key, or ID

limitnumber

Max results (default 50, max 250)

Default: 50
orderBystring

Sort: createdAt | updatedAt

Options:createdAtupdatedAt
Default: updatedAt
ownerstring

User ID, name, email, or "me"

parentInitiativestring

Parent initiative. Initiative name, ID, identifier (e.g., INIT-123), or slug

querystring

Search initiative name

statusstring

Status of the initiative

updatedAtstring

Updated after: ISO-8601 date/duration (e.g., -P1D)

List issue labels

list_issue_labels
Full Description

List available issue labels in a Linear workspace or team

Parameters (0 required, 5 optional)
Optional
cursorstring

Next page cursor

limitnumber

Max results (default 50, max 250)

Default: 50
namestring

Filter by name

orderBystring

Sort: createdAt | updatedAt

Options:createdAtupdatedAt
Default: updatedAt
teamstring

Team name or ID

List issue statuses

list_issue_statuses
Full Description

List available issue statuses in a Linear team

Parameters (1 required)
Required
teamstring

Team name or ID

List issues

list_issues
Full Description

List issues in the user's Linear workspace, including active Triage Intelligence suggestions for issues in triage. For my issues, use "me" as the assignee. Use "null" for no assignee.

Parameters (0 required, 18 optional)
Optional
assigneestring

User ID, name, email, or "me"

createdAtstring

Created after: ISO-8601 date/duration (e.g., -P1D)

cursorstring

Next page cursor

cyclestring

Cycle name, number, or ID

delegatestring

Agent name or ID. When the user asks to delegate to "Linear" or "the Linear agent", this refers to the "Linear" app user specifically

fieldsarray

Fields to include in each result. `id` is always included. Omit or pass an empty array for the default response.

includeArchivedboolean

Include archived items

Default: False
labelstring

Label name or ID

limitnumber

Max results (default 50, max 250)

Default: 50
orderBystring

Sort: createdAt | updatedAt

Options:createdAtupdatedAt
Default: updatedAt
parentIdstring

Parent issue ID or identifier (e.g., LIN-123)

prioritynumber

0=None, 1=Urgent, 2=High, 3=Medium, 4=Low

projectstring

Project name, ID, identifier (e.g., PROJ-123), or slug

querystring

Search issue title or description

releasestring

Release ID or slug

statestring

State type, name, or ID

teamstring

Team name or ID

updatedAtstring

Updated after: ISO-8601 date/duration (e.g., -P1D)

List project milestones

list_milestones
Full Description

List all milestones in a Linear project

Parameters (1 required)
Required
projectstring

Project name, ID, identifier (e.g., PROJ-123), or slug

List project labels

list_project_labels
Full Description

List available project labels in the Linear workspace

Parameters (0 required, 4 optional)
Optional
cursorstring

Next page cursor

limitnumber

Max results (default 50, max 250)

Default: 50
namestring

Filter by name

orderBystring

Sort: createdAt | updatedAt

Options:createdAtupdatedAt
Default: updatedAt

List projects

list_projects
Full Description

List projects in the user's Linear workspace

Parameters (0 required, 15 optional)
Optional
createdAtstring

Created after: ISO-8601 date/duration (e.g., -P1D)

cursorstring

Next page cursor

fieldsarray

Fields to include in each result. `id` is always included. Omit or pass an empty array for the default response.

includeArchivedboolean

Include archived items

Default: False
includeMembersboolean

Include project members

Default: False
includeMilestonesboolean

Include milestones

Default: False
initiativestring

Initiative name, ID, identifier (e.g., INIT-123), or slug

labelstring

Label name or ID

limitnumber

Max results (default 50, max 50)

Default: 50
memberstring

User ID, name, email, or "me"

orderBystring

Sort: createdAt | updatedAt

Options:createdAtupdatedAt
Default: updatedAt
querystring

Search project name

statestring

State type, name, or ID

teamstring

Team name or ID

updatedAtstring

Updated after: ISO-8601 date/duration (e.g., -P1D)

List release notes

list_release_notes
Full Description

List release notes in the workspace, optionally filtered by pipeline or covered release.

Parameters (0 required, 11 optional)
Optional
createdAtstring

Created after: ISO-8601 date/duration (e.g., -P1D)

cursorstring

Next page cursor

includeArchivedboolean

Include archived items

Default: False
includeContentboolean

Include markdown release notes content

Default: False
includeReleasesboolean

Include associated releases

Default: False
limitnumber

Max results (default 50, max 250)

Default: 50
orderBystring

Sort: createdAt | updatedAt

Options:createdAtupdatedAt
Default: updatedAt
pipelinestring

Release pipeline ID, slug, or exact name

querystring

Search release notes title

releasestring

Release ID or slug

updatedAtstring

Updated after: ISO-8601 date/duration (e.g., -P1D)

List release pipelines

list_release_pipelines
Full Description

List release pipelines in the workspace.

Parameters (0 required, 12 optional)
Optional
createdAtstring

Created after: ISO-8601 date/duration (e.g., -P1D)

cursorstring

Next page cursor

includeArchivedboolean

Include archived items

Default: False
includeStagesboolean

Include each pipeline's stages

Default: False
includeTeamsboolean

Include each pipeline's teams

Default: False
isProductionboolean

Filter by production pipeline flag

limitnumber

Max results (default 50, max 250)

Default: 50
orderBystring

Sort: createdAt | updatedAt

Options:createdAtupdatedAt
Default: updatedAt
querystring

Search pipeline name

teamstring

Team name or ID

typestring

Pipeline type: continuous | scheduled

Options:continuousscheduled
updatedAtstring

Updated after: ISO-8601 date/duration (e.g., -P1D)

List releases

list_releases
Full Description

List releases in the workspace, with optional filtering by pipeline, stage, version, and text.

Parameters (0 required, 13 optional)
Optional
createdAtstring

Created after: ISO-8601 date/duration (e.g., -P1D)

cursorstring

Next page cursor

hasReleaseNotesboolean

Filter to releases that do (true) or do not (false) have release notes

includeArchivedboolean

Include archived items

Default: False
includeReleaseNotesboolean

Include associated release notes

Default: False
limitnumber

Max results (default 50, max 250)

Default: 50
orderBystring

Sort: createdAt | updatedAt

Options:createdAtupdatedAt
Default: updatedAt
pipelinestring

Release pipeline ID, slug, or exact name

querystring

Search release name or version

stagestring

Release stage ID or exact name

stageTypestring

Filter by stage lifecycle type

Options:plannedstartedcompletedcanceled
updatedAtstring

Updated after: ISO-8601 date/duration (e.g., -P1D)

versionstring

Exact version match

List teams

list_teams
Full Description

List teams in the user's Linear workspace

Parameters (0 required, 7 optional)
Optional
createdAtstring

Created after: ISO-8601 date/duration (e.g., -P1D)

cursorstring

Next page cursor

includeArchivedboolean

Include archived items

Default: False
limitnumber

Max results (default 50, max 250)

Default: 50
orderBystring

Sort: createdAt | updatedAt

Options:createdAtupdatedAt
Default: updatedAt
querystring

Search query

updatedAtstring

Updated after: ISO-8601 date/duration (e.g., -P1D)

List templates

list_templates
Full Description

List the Linear issue, project, and document templates available to the authenticated user. Use this to find the template a team expects, then call get_template for its content.

Parameters (0 required, 2 optional)
Optional
teamstring

Team name or ID. Returns that team's templates plus workspace-level ones

typestring

Filter by template type. Omit to return every type

Options:issueprojectdocument

List users

list_users
Full Description

Retrieve users in the Linear workspace

Parameters (0 required, 5 optional)
Optional
cursorstring

Next page cursor

limitnumber

Max results (default 50, max 250)

Default: 50
orderBystring

Sort: createdAt | updatedAt

Options:createdAtupdatedAt
Default: updatedAt
querystring

Filter by name or email

teamstring

Team name or ID

Mark notification

mark_notification
Full Description

Mark a Linear inbox notification as read or unread, or snooze or unsnooze it.

Parameters (1 required, 2 optional)
Required
idstring

Notification ID

Optional
readboolean

Whether the notification should be marked as read

snoozedUntilAtstring

ISO-8601 time to snooze until, or null to unsnooze

Merge diff

merge_diff
Full Description

Merge a Linear diff or add it to the repository's merge queue

Parameters (1 required, 1 optional)
Required
urlOrIdstring

Linear review URL, diff slug, pull request ID, Linear full identifier, or GitHub PR URL

Optional
mergeMethodstring

Merge method; omit to use the repository default

Options:MERGEREBASESQUASH

Prepare attachment upload

prepare_attachment_upload
Full Description

Prepare a direct Linear file upload for an existing issue.

Workflow: 1. Call this tool with issue, filename, contentType, and size. 2. Upload raw bytes with PUT to uploadRequest.url outside MCP. 3. All headers in uploadRequest.headers are part of the signed request, so send them verbatim. 4. After PUT succeeds, call create_attachment_from_upload with assetUrl to link it to the issue.

Do not base64-encode or transform the file. Use curl --data-binary @path or fetch(url, { method: 'PUT', body: blob }). Omitting or modifying any signed header, including casing, will return HTTP 403. The signed URL must be used within 60 seconds or it will expire.

Upload sequencing: Prepare, PUT, and finalize one file before calling this tool for another file. Do not batch multiple prepare_attachment_upload calls before starting the PUTs because earlier signed URLs can expire while later files are prepared.

Example: curl -X PUT --data-binary @file.png \ -H "content-type: image/png" \ -H "x-goog-content-length-range: N,N" \ -H "cache-control: public, max-age=31536000" \ -H 'Content-Disposition: attachment; filename="file.png"' \ "<uploadRequest.url>"

Parameters (4 required, 2 optional)
Required
contentTypestring

MIME type, e.g. image/png or application/pdf

filenamestring

Filename for the upload, e.g. screenshot.png

issuestring

Issue ID or identifier (e.g., LIN-123)

sizeinteger

Exact file size in bytes. Must be smaller than 2 GB.

Optional
subtitlestring

Suggested attachment subtitle for the finalize step

titlestring

Suggested attachment title for the finalize step

Search Linear

research
Full Description

Send a natural-language query to Linear and get a response. Use this tool for complex queries, analytics, multi-step actions, and any request that spans multiple entities or requires reasoning — for example "what's blocking my projects?", "summarize this week's updates for my teams", or "create an issue and assign it to the frontend team". This tool can search, create, and update issues, projects, initiatives, documents, comments, labels, customers, and more. Prefer this tool over making multiple individual API calls when the task involves cross-referencing data, generating summaries, or performing actions that require context. This tool also has access to data that is not exposed through other tools. If you are not able to find the right tool send a query to the research tool to search further. Supports multi-turn conversations by passing the returned conversationId.

Parameters (1 required, 1 optional)
Required
messagestring

A natural-language request or question for Linear, e.g. "list my high-priority issues", "what shipped this week?", or "create a bug for the search team"

Optional
conversationIdstring

Conversation ID for multi-turn conversations

Resolve diff thread

resolve_diff_thread
Full Description

Resolve or reopen a top-level comment thread on a Linear diff

Parameters (1 required, 1 optional)
Required
threadIdstring

Top-level diff thread/comment ID

Optional
resolvedboolean

True to resolve the thread; false to reopen it

Default: True

Save comment

save_comment
Full Description

Create or update a comment on a Linear issue, project, initiative, document, project milestone, or project/initiative status update. If id is provided, updates the existing comment; otherwise creates a new one. To start a new thread, pass body and exactly one of issueId, projectId, initiativeId, documentId, milestoneId, or statusUpdateId — comments on issues/projects/initiatives become top-level discussion threads; comments on documents/milestones become description comments. A status update holds a single thread, so a comment on an update that already has one is added to it as a reply. To reply to an existing thread, pass parentId and body; the reply inherits the parent's thread type, so no entity reference is needed. Parent reference fields are ignored when id or parentId is provided (statusUpdateType is rejected instead).

Parameters (1 required, 9 optional)
Required
bodystring

Content as Markdown. Do not escape the string — use literal newlines and special characters, not escape sequences. To mention a user, use @displayName (e.g., @johndoe)

Optional
documentIdstring

Document ID or slug (provide exactly one parent)

idstring

Comment ID. If provided, updates the existing comment

initiativeIdstring

Initiative name, ID, identifier (e.g., INIT-123), or slug (provide exactly one parent)

issueIdstring

Issue ID or identifier (e.g., LIN-123) (provide exactly one parent)

milestoneIdstring

Milestone UUID (provide exactly one parent). Resolve milestone names via `list_milestones` first.

parentIdstring

Parent comment ID (for replies, only when creating)

projectIdstring

Project name, ID, identifier (e.g., PROJ-123), or slug (provide exactly one parent)

statusUpdateIdstring

Status update UUID (provide exactly one parent). Resolve status updates via `get_status_updates` first.

statusUpdateTypestring

Type of status update named by `statusUpdateId`, as returned by `get_status_updates`. Only valid together with `statusUpdateId`; omit to check both project and initiative status updates.

Options:projectinitiative

Save customer

save_customer
Full Description

Create or update a Linear customer. If id is provided, updates the existing customer; otherwise creates a new one. When creating, name is required.

Parameters (0 required, 9 optional)
Optional
domainsarray

Domains to add to this customer. Append-only; existing domains are never removed

externalIdsarray

External system IDs to add. Append-only; existing IDs are never removed

idstring

Customer ID. If provided, updates the existing customer

namestring

Customer name (required when creating)

ownerstring

User ID, name, email, or "me"

revenuenumber

Annual revenue generated by the customer

sizenumber

Size of the customer organization

statusstring

Customer status name or ID

tierstring

Customer tier name or ID

Save customer need

save_customer_need
Full Description

Create or update a customer need (request) in Linear. If id is provided, updates the existing need; otherwise creates a new one. When creating, body is required.

Parameters (0 required, 7 optional)
Optional
bodystring

Description of the customer need (required when creating)

customerstring

Customer ID or name

idstring

Customer need ID. If provided, updates the existing need

issuestring

Issue ID or identifier (e.g., LIN-123) to associate with this need

prioritynumber

Whether the need is important. 0 = Not important, 1 = Important

projectstring

Project name, ID, identifier (e.g., PROJ-123), or slug to associate with this need

sourcestring

URL to attach as the source for this customer need, such as a transcript or support thread

Save diff comment

save_diff_comment
Full Description

Create, reply to, or edit a comment or persisted draft on a Linear diff. Set draft to true to save without submitting. Provide draftId to edit or submit a persisted draft, and commentId only to edit a submitted comment. Submitting an inline draft reuses its saved anchor; submitting a reply draft requires parentId again.

Parameters (1 required, 7 optional)
Required
bodystring

Content as Markdown. Do not escape the string — use literal newlines and special characters, not escape sequences

Optional
anchorobject

Optional comment anchor copied from a diff thread or built for a file or diff hunk

anchorContentstring

Exact source text of the anchor's end line; stored with an inline draft so it can be re-anchored after the diff receives new revisions

commentIdstring

Existing comment ID to edit

draftboolean

Save as a private persisted draft without submitting

Default: False
draftIdstring

Existing persisted draft ID to edit or submit

parentIdstring

Top-level comment ID to reply to; also required when submitting a persisted reply draft

urlOrIdstring

Linear review URL, diff slug, pull request ID, Linear full identifier, or GitHub PR URL

Save document

save_document
Full Description

Create or update a Linear document. If id is provided, edits the existing document; otherwise creates a new one. When creating, title is required and exactly one parent (project, issue, initiative, cycle, or team) must be specified. On update, passing a parent reparents the document. To change parts of the content without resending all of it, pass patch instead of content.

Parameters (0 required, 11 optional)
Optional
colorstring

Hex color

contentstring

Content as Markdown. Do not escape the string — use literal newlines and special characters, not escape sequences. To mention a user, use @displayName (e.g., @johndoe)

cyclestring

Cycle name, number, or ID. When passing a name or number, also pass `team` to disambiguate.

iconstring

Icon name or emoji code (e.g. "Rocket" or ":eagle:"), not a raw Unicode emoji

idstring

Document ID or slug to update. Omit to create a new document.

initiativestring

Initiative name, ID, identifier (e.g., INIT-123), or slug

issuestring

Issue ID or identifier (e.g., LIN-123)

patcharray

Partial edits applied to the current content, in order and atomically (one failing operation aborts the whole save). Every anchor string must match the current content exactly once. Only valid on update, in place of the full content/description field

projectstring

Project name, ID, identifier (e.g., PROJ-123), or slug

teamstring

Team name or ID. Attaches the document to the team, unless `cycle` is also passed, in which case it disambiguates the cycle.

titlestring

Document title (required when creating)

Save initiative

save_initiative
Full Description

Create or update a Linear initiative. If id is provided, updates the existing initiative; otherwise creates a new one. When creating, name is required. To change parts of the description without resending all of it, pass patch instead of description.

Parameters (0 required, 14 optional)
Optional
colorstring

Hex color

descriptionstring

Content as Markdown. Do not escape the string — use literal newlines and special characters, not escape sequences. To mention a user, use @displayName (e.g., @johndoe)

iconstring

Icon name or emoji code (e.g. "Rocket" or ":eagle:"), not a raw Unicode emoji

idstring

Initiative name, ID, identifier (e.g., INIT-123), or slug. If provided, updates the existing initiative

labelsarray

Label names or IDs as a JSON array of strings (e.g. ["Bug", "Urgent"]). Replaces the full label set; existing labels not included are removed. Omit to leave labels unchanged

leadTeamstring

Lead team name, key, or ID. Null to remove the lead team

namestring

Initiative name (required when creating)

ownerstring

User ID, name, email, or "me". Null to remove

parentInitiativesarray

Parent initiatives to add. Initiative name, ID, identifier (e.g., INIT-123), or slug. Appended to existing parents

patcharray

Partial edits applied to the current content, in order and atomically (one failing operation aborts the whole save). Every anchor string must match the current content exactly once. Only valid on update, in place of the full content/description field

priorityinteger

0=None, 1=Urgent, 2=High, 3=Medium, 4=Low

statusstring

Initiative status (Proposed, Planned, Active, Completed, Canceled)

summarystring

Short summary (max 255 chars)

targetDatestring

Target date (ISO format)

Save initiative label

save_initiative_label
Full Description

Create or update a Linear initiative label. If id is provided, updates the existing label; otherwise creates a new one. When creating, name is required.

Parameters (0 required, 6 optional)
Optional
colorstring

Hex color code

descriptionstring

Label description. Null to clear it

idstring

Label name or ID. If provided, updates the existing label

isGroupboolean

Whether the label is a group

namestring

Label name (required when creating)

parentstring

Parent label group name or ID. Null to remove from its group

Save issue

save_issue
Full Description

Create or update a Linear issue. If id is provided, updates the existing issue; otherwise creates a new one. When creating, team is required, and title is required unless template is set. Note: use assignee (not assigneeId) to set the assignee — it accepts a user ID, name, email, or "me".

Parameters (0 required, 32 optional)
Optional
addLabelsarray

Label names or IDs as a JSON array of strings (e.g. ["Bug", "Urgent"]) to add. Append-only; existing labels are never removed. Cannot be combined with a team change

addReleasesarray

Release IDs or slugs to add. Append-only; existing releases are never removed

assigneestring

User ID, name, email, or "me". Null to remove

blockedByarray

Issue IDs/identifiers blocking this. Append-only; existing relations are never removed

blocksarray

Issue IDs/identifiers this blocks. Append-only; existing relations are never removed

cyclestring

Cycle name, number, or ID. Null to remove

delegatestring

Agent name or ID. When the user asks to delegate to "Linear" or "the Linear agent", this refers to the "Linear" app user specifically. Null to remove

descriptionstring

Content as Markdown. Do not escape the string — use literal newlines and special characters, not escape sequences. To mention a user, use @displayName (e.g., @johndoe)

dueDatestring

Due date (ISO format). On update, pass null to remove the due date

duplicateOfstring

Duplicate of issue ID/identifier. Null to remove

estimatenumber

Issue estimate value. On create, pass null or omit for no estimate. On update, pass null to clear the estimate; omitting leaves it unchanged. 0 is a real estimate only on teams that allow zero estimates.

idstring

Only for updating an existing issue. Pass the issue ID or identifier (e.g., LIN-123). Do NOT pass this parameter when creating a new issue.

labelsarray

Label names or IDs as a JSON array of strings (e.g. ["Bug", "Urgent"]). Replaces the full label set; existing labels not included are removed. Omit to leave labels unchanged. Cannot be combined with addLabels/removeLabels; prefer those for incremental changes

linksarray

Link attachments to add [{url, title}]. Append-only; existing links are never removed

milestonestring

Milestone name or ID

parentIdstring

Parent issue ID or identifier (e.g., LIN-123). Null to remove

patcharray

Partial edits applied to the current content, in order and atomically (one failing operation aborts the whole save). Every anchor string must match the current content exactly once. Only valid on update, in place of the full content/description field

prioritynumber

0=None, 1=Urgent, 2=High, 3=Medium, 4=Low

projectstring

Project name, ID, identifier (e.g., PROJ-123), or slug. Null to remove

relatedToarray

Related issue IDs/identifiers. Append-only; existing relations are never removed

removeBlockedByarray

Issue IDs/identifiers to remove as blockers of this issue

removeBlocksarray

Issue IDs/identifiers to stop blocking

removeLabelsarray

Label names or IDs as a JSON array of strings (e.g. ["Bug", "Urgent"]) to remove. Only valid when updating an existing issue. Cannot be combined with a team change

removeRelatedToarray

Related issue IDs/identifiers to remove

removeReleasesarray

Release IDs or slugs to remove. Only valid when updating an existing issue

setReleasesarray

Replace all releases on the issue with these. Cannot be combined with addReleases/removeReleases

slaBreachesAtstring

ISO-8601 timestamp when the SLA will breach. On update, pass null to remove the SLA

slaTypestring

SLA day counting type: "all" or "onlyBusinessDays". Only use with slaBreachesAt; null means unset

statestring

State type, name, or ID

teamstring

Team name or ID (required when creating)

templatestring

Template name or ID. Applied on create only. The template fills in the content, fields, and sub-issues server-side. A `description` replaces the template body rather than merging with it, but an empty `description` keeps the template body. Labels merge with the template's own

titlestring

Issue title (required when creating, unless template is set)

Save issue label

save_issue_label
Full Description

Create or update a Linear issue label. If id is provided, updates the existing label; otherwise creates a new one. When creating, name is required.

Parameters (0 required, 7 optional)
Optional
colorstring

Hex color code

descriptionstring

Label description. Null to clear it

idstring

Label name or ID. If provided, updates the existing label

isGroupboolean

Whether the label is a group

namestring

Label name (required when creating)

parentstring

Parent label group name or ID. Null to remove from its group

teamIdstring

Team UUID (omit for workspace label). When updating, only disambiguates `id` by name; a label's team cannot be changed

Save milestone

save_milestone
Full Description

Create or update a milestone in a Linear project. If id is provided, updates the existing milestone; otherwise creates a new one. When creating, name is required.

Parameters (1 required, 4 optional)
Required
projectstring

Project name, ID, identifier (e.g., PROJ-123), or slug

Optional
descriptionstring

Milestone description

idstring

Milestone name or ID

namestring

Milestone name (required when creating)

targetDatestring

Target completion date (ISO format, null to remove)

Save project

save_project
Full Description

Create or update a Linear project. If id is provided, updates the existing project; otherwise creates a new one. When creating, name and at least one team (via addTeams or setTeams) are required. Pass template to create the project from a project template. To change parts of the description without resending all of it, pass patch instead of description.

Parameters (0 required, 23 optional)
Optional
addInitiativesarray

Initiatives to add. Initiative name, ID, identifier (e.g., INIT-123), or slug

addTeamsarray

Team name or ID to add

colorstring

Hex color

descriptionstring

Content as Markdown. Do not escape the string — use literal newlines and special characters, not escape sequences. To mention a user, use @displayName (e.g., @johndoe)

iconstring

Icon name or emoji code (e.g. "Rocket" or ":eagle:"), not a raw Unicode emoji

idstring

Project name, ID, identifier (e.g., PROJ-123), or slug. If provided, updates the existing project

labelsarray

Label names or IDs as a JSON array of strings (e.g. ["Bug", "Urgent"]). Replaces the full label set; existing labels not included are removed. Omit to leave labels unchanged

leadstring

User ID, name, email, or "me". Null to remove, except on create with a template that names a lead

linksarray

External resource links to add [{url, title}]. Append-only; existing links are never removed

namestring

Project name (required when creating)

patcharray

Partial edits applied to the current content, in order and atomically (one failing operation aborts the whole save). Every anchor string must match the current content exactly once. Only valid on update, in place of the full content/description field

priorityinteger

0=None, 1=Urgent, 2=High, 3=Medium, 4=Low

removeInitiativesarray

Initiatives to remove. Initiative name, ID, identifier (e.g., INIT-123), or slug

removeTeamsarray

Team name or ID to remove

setInitiativesarray

Replace all initiatives with these. Initiative name, ID, identifier (e.g., INIT-123), or slug. Cannot combine with addInitiatives/removeInitiatives

setTeamsarray

Replace all teams with these. Cannot combine with addTeams/removeTeams

startDatestring

Start date (ISO format). Pair with startDateResolution to indicate precision (e.g. month, quarter)

startDateResolutionstring

Start date resolution

Options:halfYearmonthquarteryear
statestring

Project state

summarystring

Short summary (max 255 chars)

targetDatestring

Target date (ISO format). Pair with targetDateResolution to indicate precision (e.g. month, quarter)

targetDateResolutionstring

Target date resolution

Options:halfYearmonthquarteryear
templatestring

Template name or ID. Applied on create only. The template fills in the content, fields, and sub-issues server-side. A `description` replaces the template body rather than merging with it, but an empty `description` keeps the template body. Labels merge with the template's own

Save project label

save_project_label
Full Description

Create or update a Linear project label. If id is provided, updates the existing label; otherwise creates a new one. When creating, name is required.

Parameters (0 required, 6 optional)
Optional
colorstring

Hex color code

descriptionstring

Label description. Null to clear it

idstring

Label name or ID. If provided, updates the existing label

isGroupboolean

Whether the label is a group

namestring

Label name (required when creating)

parentstring

Parent label group name or ID. Null to remove from its group

Save release

save_release
Full Description

Create or update a release. If id is provided, updates the existing release; otherwise creates a new one. When creating, name and pipeline are required. Release status is modeled as the release pipeline stage.

Parameters (0 required, 12 optional)
Optional
commitShastring

Commit SHA associated with the release

completedAtstring

Completed timestamp (ISO DateTime, null to remove)

createdAtstring

Import/create timestamp (ISO DateTime)

descriptionstring

Release description

idstring

Release ID or slug to update. Omit to create a new release.

namestring

Release name (required when creating)

pipelinestring

Release pipeline ID, slug, or exact name (required when creating)

stagestring

Release stage ID, exact name, or lifecycle type within the release pipeline

startDatestring

Estimated start date (ISO YYYY-MM-DD, null to remove)

startedAtstring

Started timestamp (ISO DateTime, null to remove)

targetDatestring

Estimated completion date (ISO YYYY-MM-DD, null to remove)

versionstring

Version identifier

Save release notes

save_release_note
Full Description

Create or update release notes. If id is provided, updates the existing release notes; otherwise creates a new one. When creating, pipeline and either releases or a release range are required. To change parts of the content without resending all of it, pass patch instead of content.

Parameters (0 required, 8 optional)
Optional
contentstring

Content as Markdown. Do not escape the string — use literal newlines and special characters, not escape sequences. To mention a user, use @displayName (e.g., @johndoe)

idstring

Release notes ID or slug to update. Omit to create new release notes.

patcharray

Partial edits applied to the current content, in order and atomically (one failing operation aborts the whole save). Every anchor string must match the current content exactly once. Only valid on update, in place of the full content/description field

pipelinestring

Release pipeline ID, slug, or exact name (required when creating)

rangeFromReleasestring

Oldest release ID or slug in the note range

rangeToReleasestring

Newest release ID or slug in the note range

releasesarray

Release IDs or slugs to include in the note

titlestring

Release notes title

Save status update

save_status_update
Full Description

Create or update a project/initiative status update. Omit id to create, provide id to update.

Parameters (1 required, 6 optional)
Required
typestring

Type of status update

Options:projectinitiative
Optional
bodystring

Content as Markdown. Do not escape the string — use literal newlines and special characters, not escape sequences. To mention a user, use @displayName (e.g., @johndoe)

healthstring

onTrack | atRisk | offTrack

Options:onTrackatRiskoffTrack
idstring

Status update ID - if provided, updates this existing update

initiativestring

Initiative name, ID, identifier (e.g., INIT-123), or slug

isDiffHiddenboolean

Deprecated. Hide diff with previous update (create only)

projectstring

Project name, ID, identifier (e.g., PROJ-123), or slug

Search

search
Full Description

Full-text search across Linear issues, projects, initiatives, and documents, ranked by relevance. Use this for keyword or natural-language queries (e.g. "memory leak in sync engine"). Supports "quoted phrases" for exact match, -term to exclude, and +term to require. For structured filtering by assignee, status, team, label, etc., use the list_issues or list_projects tools instead.

Parameters (1 required, 3 optional)
Required
querystring

Natural language or keyword search terms (e.g. "billing webhook failure"). Supports "quoted phrases" for exact match, -term for exclusion, and +term for required terms

Optional
includeArchivedboolean

Include archived items

Default: False
limitinteger

Max results (default 10, max 50)

Default: 10
typestring

Optional entity type filter

Options:allissueprojectinitiativedocument
Default: all

Search documentation

search_documentation
Full Description

Search Linear's documentation to learn about features and usage

Parameters (1 required, 1 optional)
Required
querystring

Search query

Optional
pagenumber

Page number

Default: 0

Share issue

share_issue
Full Description

Share an issue with a workspace user who cannot otherwise access it. Use this tool only when the user explicitly asks to share the issue.

Parameters (2 required)
Required
issuestring

Issue ID or identifier (e.g., LIN-123)

userstring

User ID, name, email, or "me" Must be an email address or UUID.

Submit diff review

submit_diff_review
Full Description

Approve a Linear diff, request changes, or submit a review comment

Parameters (2 required, 1 optional)
Required
decisionstring

Review decision: approved, changesRequested, or commented

Options:approvedchangesRequestedcommented
urlOrIdstring

Linear review URL, diff slug, pull request ID, Linear full identifier, or GitHub PR URL

Optional
bodystring

Content as Markdown. Do not escape the string — use literal newlines and special characters, not escape sequences. Required when requesting changes or commenting

Unshare issue

unshare_issue
Full Description

Remove a workspace user's shared access to an issue. Use this tool only when the user explicitly asks to stop sharing the issue.

Parameters (2 required)
Required
issuestring

Issue ID or identifier (e.g., LIN-123)

userstring

User ID, name, email, or "me" Must be an email address or UUID.

Update document

update_document
Full Description

Update an existing Linear document

Parameters (1 required, 5 optional)
Required
idstring

Document ID or slug

Optional
colorstring

Hex color

contentstring

Content as Markdown

iconstring

Icon emoji

projectstring

Project name, ID, or slug

titlestring

Document title