The Linear MCP connector routes your AI agent's tool calls to Linear's own MCP server through Scalekit. Each user signs in to Linear once, and Scalekit stores and refreshes their tokens, so your agent never handles credentials. It comes with 83 tools.
- Tools
- 83
- What they doRead · write · destructive
- 43 · 28 · 1243 read28 write12 destructive
- Users sign in with
- OAuth
- OAuth app
- Scalekit's or your own
What you can do
- Manage issues: create, update, list, and look up issues with their labels, statuses, and attachments
- Plan projects and initiatives: create and update projects, milestones, and initiatives, and post status updates
- Comment and discuss: add, edit, and delete comments on issues, projects, documents, and status updates
- Write documents: create, update, and read documents in the workspace
- Review code changes: read diffs and review threads, leave comments, approve or request changes, and merge
- Track customers and releases: manage customers and their requests, and create releases and release notes
Setup
Install the SDK
Terminal window npm install @scalekit-sdk/node dotenvTerminal window pip install scalekit-sdk-python python-dotenvSet your credentials
Add your Scalekit credentials to your
.envfile. Find values in app.scalekit.com > Developers > API Credentials..env SCALEKIT_ENVIRONMENT_URL=<your-environment-url>SCALEKIT_CLIENT_ID=<your-client-id>SCALEKIT_CLIENT_SECRET=<your-client-secret>Create the Linear MCP connection
In AgentKit > Connections, create a Linear MCP connection. The name you give it is the
connection_nameyour code passes. See Configure connections.Scalekit credentials are available for Linear, so you don't need to register an OAuth app.
Authorize a user and make your first call
quickstart.mts import { ScalekitClient } from '@scalekit-sdk/node'import 'dotenv/config'import { createInterface } from 'node:readline/promises'const scalekit = new ScalekitClient(process.env.SCALEKIT_ENVIRONMENT_URL,process.env.SCALEKIT_CLIENT_ID,process.env.SCALEKIT_CLIENT_SECRET,)const actions = scalekit.actionsconst connector = 'linearmcp'const identifier = 'user_123'// Generate an authorization link for the userconst { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })console.log('Authorize Linear MCP:', link)const rl = createInterface({ input: process.stdin, output: process.stdout })await rl.question('Press Enter after authorizing...')rl.close()// Make your first callconst result = await actions.executeTool({connector,identifier,toolName: 'linearmcp_get_notifications',toolInput: {},})console.log(result)Terminal window npx tsx quickstart.mtsquickstart.py import osfrom scalekit import ScalekitClientfrom dotenv import load_dotenvload_dotenv()scalekit_client = ScalekitClient(env_url=os.getenv("SCALEKIT_ENVIRONMENT_URL"),client_id=os.getenv("SCALEKIT_CLIENT_ID"),client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),)actions = scalekit_client.actionsconnection_name = "linearmcp"identifier = "user_123"# Generate an authorization link for the userlink_response = actions.get_authorization_link(connection_name=connection_name,identifier=identifier,)print("Authorize Linear MCP:", link_response.link)input("Press Enter after authorizing...")# Make your first callresult = actions.execute_tool(tool_input={},tool_name="linearmcp_get_notifications",connection_name=connection_name,identifier=identifier,)print(result)Terminal window python quickstart.pyEach user signs in once. See Authorize a user for the full flow and statuses.
Tools
Pass the exact name toexecute_toollinearmcp_extract_imagesExtract and fetch images from markdown content.Read-onlyExtractImages
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.
Inputs
markdownstringrequired- Markdown content containing image references (e.g., issue description, comment body)
linearmcp_get_agent_skillRetrieve a Linear Agent skill by ID, including its full markdown instructions.Read-onlyGetAgentSkill
Retrieve a Linear Agent skill by ID, including its full markdown instructions.
Inputs
idstringrequired- Agent skill ID
linearmcp_get_attachmentRetrieve an attachment's content by ID.Read-onlyGetAttachment
Retrieve an attachment's content by ID.
Inputs
idstringrequired- Issue attachment ID from get_issue's attachments array (attachments[].id)
formatstring- Omit or use content to fetch a Linear-hosted file. Use url for attachment metadata without fetching the file; also supports external linksone of
contenturl
linearmcp_get_diffExact lookup for a Linear diff.Read-onlyGetDiff
Exact lookup for a Linear diff. Use with review URLs, GitHub PR URLs, Linear full identifiers, UUIDs, or slugs.
Inputs
urlOrIdstringrequired- Linear review URL, diff slug, pull request ID, Linear full identifier, or GitHub PR URL
linearmcp_get_diff_threadsExact lookup for diff threads.Read-onlyGetDiffThreads
Exact lookup for diff threads. Use with review URLs, GitHub PR URLs, Linear full identifiers, UUIDs, or slugs.
Inputs
urlOrIdstringrequired- Linear review URL, diff slug, pull request ID, Linear full identifier, or GitHub PR URL
orderBystring- Sort: createdAt | updatedAtone of
createdAtupdatedAtdefaultupdatedAt 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
linearmcp_get_documentRetrieve a Linear document by ID or slugRead-onlyGetDocument
Retrieve a Linear document by ID or slug
Inputs
idstringrequired- Document ID or slug
linearmcp_get_initiativeRetrieve detailed information about a specific initiative in LinearRead-onlyGetInitiative
Retrieve detailed information about a specific initiative in Linear
Inputs
querystringrequired- Initiative name, ID, identifier (e.g., INIT-123), or slug
includeProjectsboolean- Include projectsdefault
false includeSubInitiativesboolean- Include sub-initiativesdefault
false
linearmcp_get_issueRetrieve detailed information about an issue by ID, including attachments, git branch name, and active Triage Intelligence suggestions when the issue is in triageRead-onlyGetIssue
Retrieve detailed information about an issue by ID, including attachments, git branch name, and active Triage Intelligence suggestions when the issue is in triage
Inputs
idstringrequired- Issue ID or identifier (e.g., LIN-123). P-prefixed identifiers (e.g., P-ENG-123) are projects, not issues
fieldsarray- Fields to include in each result. Explicitly requested fields with no value return null. `id` is always included. Omit or pass an empty array for the default response.
includeCustomerNeedsboolean- Include associated customer needsdefault
false includeRelationsboolean- Include blocking/related/duplicate relationsdefault
false includeReleasesboolean- Include associated releasesdefault
false
linearmcp_get_issue_statusRetrieve detailed information about an issue status in Linear by name or IDRead-onlyGetIssueStatus
Retrieve detailed information about an issue status in Linear by name or ID
Inputs
idstringrequired- Status ID
namestringrequired- Status name
teamstringrequired- Team name or ID
linearmcp_get_milestoneRetrieve details of a specific milestone by ID or nameRead-onlyGetMilestone
Retrieve details of a specific milestone by ID or name
Inputs
projectstringrequired- Project name, ID, identifier (e.g., PROJ-123), or slug
querystringrequired- Milestone name or ID
linearmcp_get_notificationsGet a page of notifications from the authenticated user's Linear inbox.Read-onlyGet Notifications
Get a page of notifications from the authenticated user's Linear inbox.
Inputs
cursorstring- Omit for the first page. To continue, pass the previous response's cursor when hasNextPage is true
limitnumber- Maximum number of results to return per pagedefault
50 unreadOnlyboolean- Only return unread notificationsdefault
false
linearmcp_get_projectRetrieve details of a specific project in LinearRead-onlyGetProject
Retrieve details of a specific project in Linear
Inputs
querystringrequired- Project name, ID, identifier (e.g., P-ENG-123), or slug
customerNeedsCursorstring- Next customer-needs page: pass customerNeedsPageInfo.endCursor with includeCustomerNeeds true
customerNeedsLimitinteger- Customer needs per page when includeCustomerNeeds is true (default 10, max 50)default
10 includeCustomerNeedsboolean- Include one page of customer needs attached directly to the projectdefault
false includeMembersboolean- Include project membersdefault
false includeMilestonesboolean- Include milestonesdefault
false includeResourcesboolean- Include resources (documents, links, attachments)default
false
linearmcp_get_releaseRetrieve details of a release by ID or slug.Read-onlyGetRelease
Retrieve details of a release by ID or slug.
Inputs
idstringrequired- Release ID or slug
includeReleaseNotesboolean- Include associated release notesdefault
false
linearmcp_get_release_noteRetrieve release notes by ID or slug, including markdown content.Read-onlyGetReleaseNote
Retrieve release notes by ID or slug, including markdown content.
Inputs
idstringrequired- Release notes ID or slug
includeReleasesboolean- Include associated releasesdefault
false
linearmcp_get_status_updatesList or get project/initiative status updates.Read-onlyGetStatusUpdates
List or get project/initiative status updates. Pass `id` to get a specific update, or filter to list.
Inputs
typestringrequired- Type of status update — project or initiativeone of
projectinitiative 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 itemsdefault
false initiativestring- Initiative name, ID, identifier (e.g., INIT-123), or slug
limitnumber- Max results (default 50, max 250)default
50 orderBystring- Sort: createdAt | updatedAtone of
createdAtupdatedAtdefaultupdatedAt 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"
linearmcp_get_teamRetrieve details of a specific Linear teamRead-onlyGetTeam
Retrieve details of a specific Linear team
Inputs
querystringrequired- Team UUID, key, or name
linearmcp_get_templateRetrieve a Linear template by ID or name: the content it pre-fills, the ids it applies, its sub-issues, and its form fields.Read-onlyGet Template
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.
Inputs
idstringrequired- Template ID or name
linearmcp_get_triage_responsibilityRetrieve who is responsible for a team's triage: the person on triage now, what happens when an issue enters triage, and the upcoming shifts of the team's triage rotation.Read-onlyGet Triage Responsibility
Retrieve who is responsible for a team's triage: the person on triage now, what happens when an issue enters triage, and the upcoming shifts of the team's triage rotation. Pass `user` to get only that person's shifts, for example to find when their next triage duty starts, even when it is weeks away.
Inputs
teamstringrequired- Team name or ID
limitinteger- Max upcoming shifts to return (default 10, max 50)default
10 userstring- Only return shifts of this user: User ID, name, email, or "me"
linearmcp_get_userRetrieve details of a specific Linear userRead-onlyGetUser
Retrieve details of a specific Linear user
Inputs
querystringrequired- User ID, name, email, or "me"
linearmcp_get_workspaceRetrieve the connected Linear workspaceRead-onlyGetWorkspace
Retrieve the connected Linear workspace
Inputs
This tool takes no inputs.
linearmcp_list_agent_skillsList Linear Agent skills available to the authenticated user.Read-onlyListAgentSkills
List Linear Agent skills available to the authenticated user.
Inputs
cursorstring- Next page cursor
limitnumber- Max results (default 50, max 250)default
50 orderBystring- Sort: createdAt | updatedAtone of
createdAtupdatedAtdefaultupdatedAt
linearmcp_list_commentsList comments on a Linear issue, project, initiative, document, project milestone, or project/initiative status update.Read-onlyListComments
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.
Inputs
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 | updatedAtone of
createdAtupdatedAtdefaultupdatedAt 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.one of
projectinitiative
linearmcp_list_custom_viewsFind saved issue, project, and initiative views accessible to the user, including personal, workspace, and team views.Read-onlyList Custom Views
Find saved issue, project, and initiative views accessible to the user, including personal, workspace, and team views. Excludes archived views and views scoped to a project or initiative. Returns view metadata, not the records matching its filters.
Inputs
cursorstring- Omit for the first page. To continue, pass the previous response's cursor when hasNextPage is true
limitnumber- Maximum number of results to return per pagedefault
50 orderBystring- Timestamp to sort results by: creation time or last update timeone of
createdAtupdatedAtdefaultupdatedAt querystring- Search custom view names
sharedboolean- True for shared views, false for personal views
teamstring- Team name or ID
typestring- Entity type displayed by the viewone of
IssueProjectInitiative
linearmcp_list_customer_needsList customer needs (customer requests) for an issue, project, or initiative.Read-onlyList Customer Needs
List customer needs (customer requests) for an issue, project, or initiative. Provide exactly one of `issue`, `project`, or `initiative`. Project results include requests linked to the project's issues; initiative results include requests on projects in the initiative or any of its sub-initiatives, and on their issues. Returns requests on closed work too; each need includes its issue's workflow state and its project's status so callers can filter. Paginated; pass `cursor` from the previous page to fetch the next.
Inputs
cursorstring- Omit for the first page. To continue, pass the previous response's cursor when hasNextPage is true
initiativestring- Initiative name, ID, identifier (e.g., I-123), or slug to list needs for
issuestring- Issue ID or identifier (e.g., LIN-123). P-prefixed identifiers (e.g., P-ENG-123) are projects, not issues to list needs for
limitnumber- Maximum number of results to return per pagedefault
50 orderBystring- Timestamp to sort results by: creation time or last update timeone of
createdAtupdatedAtdefaultupdatedAt projectstring- Project name, ID, identifier (e.g., P-ENG-123), or slug to list needs for
linearmcp_list_customersList customers in the user's Linear workspaceRead-onlyListCustomers
List customers in the user's Linear workspace
Inputs
createdAtstring- Created after: ISO-8601 date/duration (e.g., -P1D)
cursorstring- Omit for the first page. To continue, pass the previous response's cursor when hasNextPage is true
domainstring- Exact customer domain (case-insensitive); combined with other filters
externalIdsarray- Match any stored external ID exactly (case-sensitive); combined with other filters
includeArchivedboolean- Include archived itemsdefault
false includeNeedsboolean- Include associated customer needsdefault
false limitnumber- Maximum number of results to return per pagedefault
50 orderBystring- Timestamp to sort results by: creation time or last update timeone of
createdAtupdatedAtdefaultupdatedAt 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)
linearmcp_list_cyclesRetrieve cycles for a specific Linear teamRead-onlyListCycles
Retrieve cycles for a specific Linear team
Inputs
teamIdstringrequired- Team ID
typestring- Filter: current, previous, next, or allone of
currentpreviousnext
linearmcp_list_diffsList Linear diff pull requests visible to the authenticated userRead-onlyListDiffs
List Linear diff pull requests visible to the authenticated user
Inputs
authorstring- Filter by author ID, name, email, or "me"
cursorstring- Omit for the first page. To continue, pass the previous response's cursor when hasNextPage is true
limitnumber- Maximum number of results to return per pagedefault
50 orderBystring- Timestamp to sort results by: creation time or last update timeone of
createdAtupdatedAtdefaultupdatedAt 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 setone of
pendingapprovedchangesRequestedcommenteddismissed statusstring- Filter returned diffs by pull request status
linearmcp_list_documentsList documents in the user's Linear workspaceRead-onlyListDocuments
List documents in the user's Linear workspace
Inputs
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 documentsdefault
false initiativeIdstring- Filter by initiative ID
limitnumber- Max results (default 50, max 250)default
50 orderBystring- Sort: createdAt | updatedAtone of
createdAtupdatedAtdefaultupdatedAt projectIdstring- Filter by project ID
querystring- Search query
teamIdstring- Filter by team ID
updatedAtstring- Updated after: ISO-8601 date/duration (e.g., -P1D)
linearmcp_list_initiative_labelsList available initiative labels in the Linear workspaceRead-onlyListInitiativeLabels
List available initiative labels in the Linear workspace
Inputs
cursorstring- Omit for the first page. To continue, pass the previous response's cursor when hasNextPage is true
includeArchivedboolean- Include archived itemsdefault
false includeGroupsboolean- Include label groups in the results, marked with `isGroup`. A group cannot be applied directly; retiring or restoring one cascades to its child labelsdefault
false limitnumber- Maximum number of results to return per pagedefault
50 namestring- Filter by name
orderBystring- Timestamp to sort results by: creation time or last update timeone of
createdAtupdatedAtdefaultupdatedAt
linearmcp_list_initiativesList initiatives in the user's Linear workspaceRead-onlyListInitiatives
List initiatives in the user's Linear workspace
Inputs
createdAtstring- Created after: ISO-8601 date/duration (e.g., -P1D)
cursorstring- Omit for the first page. To continue, pass the previous response's cursor when hasNextPage is true
customViewstring- Saved view ID, URL, slug, or exact name. Use list_custom_views to discover views. Applies saved filters and scope; other filters narrow the results. Uses list ordering, not saved display settings
fieldsarray- Fields to include in each result. Explicitly requested fields with no value return null. `id` is always included. Omit or pass an empty array for the default response.
includeArchivedboolean- Include archived itemsdefault
false includeProjectsboolean- Include projectsdefault
false includeSubInitiativesboolean- Include sub-initiativesdefault
false labelstring- Label name or ID
leadTeamstring- Lead team name, key, or ID
limitnumber- Maximum number of results to return per pagedefault
50 orderBystring- Timestamp to sort results by: creation time or last update timeone of
createdAtupdatedAtdefaultupdatedAt ownerstring- User ID, name, email, or "me"
parentInitiativestring- Parent initiative. Initiative name, ID, identifier (e.g., I-123), or slug
querystring- Search initiative name
statusstring- Status of the initiative
updatedAtstring- Updated after: ISO-8601 date/duration (e.g., -P1D)
linearmcp_list_issue_labelsList available issue labels in a Linear workspace or teamRead-onlyListIssueLabels
List available issue labels in a Linear workspace or team
Inputs
cursorstring- Omit for the first page. To continue, pass the previous response's cursor when hasNextPage is true
includeArchivedboolean- Include archived itemsdefault
false includeGroupsboolean- Include label groups in the results, marked with `isGroup`. A group cannot be applied directly; retiring or restoring one cascades to its child labelsdefault
false limitnumber- Maximum number of results to return per pagedefault
50 namestring- Filter by name
orderBystring- Timestamp to sort results by: creation time or last update timeone of
createdAtupdatedAtdefaultupdatedAt teamstring- Team name or ID
linearmcp_list_issue_statusesList available issue statuses in a Linear teamRead-onlyListIssueStatuses
List available issue statuses in a Linear team
Inputs
teamstringrequired- Team name or ID
linearmcp_list_issuesList issues in the user's Linear workspace, including active Triage Intelligence suggestions for issues in triage.Read-onlyListIssues
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.
Inputs
assigneestring- User ID, name, email, or "me"
createdAtstring- Created after: ISO-8601 date/duration (e.g., -P1D)
creatorstring- User ID, name, email, or "me"
cursorstring- Omit for the first page. To continue, pass the previous response's cursor when hasNextPage is true
customViewstring- Saved view ID, URL, slug, or exact name. Use list_custom_views to discover views. Applies saved filters and scope; other filters narrow the results. Uses list ordering, not saved display settings
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. Explicitly requested fields with no value return null. `id` is always included. Omit or pass an empty array for the default response.
includeArchivedboolean- Include archived itemsdefault
false includeSubTeamsboolean- Include results from the selected team and all descendants when team is set. Team ID filters already include descendants; this also expands name and key filtersdefault
false labelstring- Label name or ID
limitnumber- Maximum number of results to return per pagedefault
50 orderBystring- Timestamp to sort results by: creation time or last update timeone of
createdAtupdatedAtdefaultupdatedAt 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., P-ENG-123), or slug
querystring- Search issue title or description. Cannot be combined with customView
releasestring- Release ID or slug
statestring- State type, name, or ID
teamstring- Team name or ID
triagedAtstring- Left triage after: ISO-8601 date/duration (e.g., -P1D). Issues still in triage have no triagedAt; list them with state "triage"
updatedAtstring- Updated after: ISO-8601 date/duration (e.g., -P1D)
linearmcp_list_milestonesList all milestones in a Linear projectRead-onlyListMilestones
List all milestones in a Linear project
Inputs
projectstringrequired- Project name, ID, identifier (e.g., PROJ-123), or slug
linearmcp_list_project_labelsList available project labels in the Linear workspaceRead-onlyListProjectLabels
List available project labels in the Linear workspace
Inputs
cursorstring- Omit for the first page. To continue, pass the previous response's cursor when hasNextPage is true
includeArchivedboolean- Include archived itemsdefault
false includeGroupsboolean- Include label groups in the results, marked with `isGroup`. A group cannot be applied directly; retiring or restoring one cascades to its child labelsdefault
false limitnumber- Maximum number of results to return per pagedefault
50 namestring- Filter by name
orderBystring- Timestamp to sort results by: creation time or last update timeone of
createdAtupdatedAtdefaultupdatedAt teamstring- Team name or ID
linearmcp_list_projectsList projects in the user's Linear workspaceRead-onlyListProjects
List projects in the user's Linear workspace
Inputs
createdAtstring- Created after: ISO-8601 date/duration (e.g., -P1D)
cursorstring- Omit for the first page. To continue, pass the previous response's cursor when hasNextPage is true
customViewstring- Saved view ID, URL, slug, or exact name. Use list_custom_views to discover views. Applies saved filters and scope; other filters narrow the results. Uses list ordering, not saved display settings
fieldsarray- Fields to include in each result. Explicitly requested fields with no value return null. `id` is always included. Omit or pass an empty array for the default response.
includeArchivedboolean- Include archived itemsdefault
false includeMembersboolean- Include project membersdefault
false includeMilestonesboolean- Include milestonesdefault
false includeSubTeamsboolean- Include results from the selected team and all descendants when team is set. Team ID filters already include descendants; this also expands name and key filtersdefault
false initiativestring- Initiative name, ID, identifier (e.g., I-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- Timestamp to sort results by: creation time or last update timeone of
createdAtupdatedAtdefaultupdatedAt 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)
linearmcp_list_release_notesList release notes in the workspace, optionally filtered by pipeline or covered release.Read-onlyListReleaseNotes
List release notes in the workspace, optionally filtered by pipeline or covered release.
Inputs
createdAtstring- Created after: ISO-8601 date/duration (e.g., -P1D)
cursorstring- Next page cursor
includeArchivedboolean- Include archived itemsdefault
false includeContentboolean- Include markdown release notes contentdefault
false includeReleasesboolean- Include associated releasesdefault
false limitnumber- Max results (default 50, max 250)default
50 orderBystring- Sort: createdAt | updatedAtone of
createdAtupdatedAtdefaultupdatedAt 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)
linearmcp_list_release_pipelinesList release pipelines in the workspace.Read-onlyListReleasePipelines
List release pipelines in the workspace.
Inputs
createdAtstring- Created after: ISO-8601 date/duration (e.g., -P1D)
cursorstring- Next page cursor
includeArchivedboolean- Include archived itemsdefault
false includeStagesboolean- Include each pipeline's stagesdefault
false includeTeamsboolean- Include each pipeline's teamsdefault
false isProductionboolean- Filter by production pipeline flag
limitnumber- Max results (default 50, max 250)default
50 orderBystring- Sort: createdAt | updatedAtone of
createdAtupdatedAtdefaultupdatedAt querystring- Search pipeline name
teamstring- Team name or ID
typestring- Pipeline type: continuous | scheduledone of
continuousscheduled updatedAtstring- Updated after: ISO-8601 date/duration (e.g., -P1D)
linearmcp_list_releasesList releases in the workspace, with optional filtering by pipeline, stage, version, and text.Read-onlyListReleases
List releases in the workspace, with optional filtering by pipeline, stage, version, and text.
Inputs
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 itemsdefault
false includeReleaseNotesboolean- Include associated release notesdefault
false limitnumber- Max results (default 50, max 250)default
50 orderBystring- Sort: createdAt | updatedAtone of
createdAtupdatedAtdefaultupdatedAt 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 typeone of
plannedstartedcompletedcanceled updatedAtstring- Updated after: ISO-8601 date/duration (e.g., -P1D)
versionstring- Exact version match
linearmcp_list_teamsList teams in the user's Linear workspaceRead-onlyListTeams
List teams in the user's Linear workspace
Inputs
ancestorTeamstring- All descendant teams of this team, at any depth, excluding itself (name, key, or ID)
createdAtstring- Created after: ISO-8601 date/duration (e.g., -P1D)
cursorstring- Omit for the first page. To continue, pass the previous response's cursor when hasNextPage is true
includeArchivedboolean- Include archived itemsdefault
false limitnumber- Maximum number of results to return per pagedefault
50 orderBystring- Timestamp to sort results by: creation time or last update timeone of
createdAtupdatedAtdefaultupdatedAt parentTeamstring- Only direct sub-teams of this team (name, key, or ID)
querystring- Search query
updatedAtstring- Updated after: ISO-8601 date/duration (e.g., -P1D)
linearmcp_list_templatesList the Linear issue, project, and document templates available to the authenticated user.Read-onlyList Templates
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.
Inputs
teamstring- Team name or ID. Returns that team's templates plus workspace-level ones
typestring- Filter by template type. Omit to return every typeone of
issueprojectdocument
linearmcp_list_usersRetrieve users in the Linear workspaceRead-onlyListUsers
Retrieve users in the Linear workspace
Inputs
cursorstring- Next page cursor
limitnumber- Maximum number of users to returndefault
50 orderBystring- Sort: createdAt | updatedAtone of
createdAtupdatedAtdefaultupdatedAt querystring- Filter by name or email
teamstring- Team name or ID
linearmcp_search_documentationSearch Linear's documentation to learn about features and usageRead-onlySearchDocumentation
Search Linear's documentation to learn about features and usage
Inputs
querystringrequired- Search query
pagenumber- Page numberdefault
0
linearmcp_create_attachmentDeprecated fallback for tiny files only.WriteCreateAttachment
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.
Inputs
base64Contentstringrequired- Deprecated base64-encoded file content to upload
contentTypestringrequired- MIME type for the upload (e.g., 'image/png', 'application/pdf')
filenamestringrequired- Filename for the upload (e.g., 'screenshot.png')
issuestringrequired- Issue ID or identifier (e.g., LIN-123)
sha256stringrequired- Expected SHA-256 hex digest of the decoded file bytes.
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
linearmcp_create_attachment_from_uploadLink an already-uploaded Linear assetUrl to an existing issue as an attachment.WriteCreateAttachmentFromUpload
Link an already-uploaded Linear assetUrl to an existing issue as an attachment.
Inputs
assetUrlstringrequired- Linear upload assetUrl returned by prepare_attachment_upload
issuestringrequired- Issue ID or identifier (e.g., LIN-123)
subtitlestring- Optional attachment subtitle
titlestring- Attachment title. Defaults to filename or asset URL
linearmcp_create_initiative_labelCreate a new Linear initiative labelWriteCreateInitiativeLabel
Create a new Linear initiative label
Inputs
namestringrequired- Label name
colorstring- Hex color code
descriptionstring- Label description
isGroupboolean- Is label group (not directly applicable)default
false parentstring- Parent label group name
linearmcp_create_issue_labelCreate a new Linear issue labelWriteCreateIssueLabel
Create a new Linear issue label
Inputs
namestringrequired- Label name
colorstring- Hex color code
descriptionstring- Label description
isGroupboolean- Is label group (not directly applicable)default
false parentstring- Parent label group name
teamIdstring- Team UUID (omit for workspace label)
linearmcp_mark_notificationMark a Linear inbox notification as read or unread, or snooze or unsnooze it.WriteMark Notification
Mark a Linear inbox notification as read or unread, or snooze or unsnooze it.
Inputs
idstringrequired- Notification ID
readboolean- Whether the notification should be marked as read
snoozedUntilAtstring- ISO-8601 time to snooze until, or null to unsnooze
linearmcp_merge_diffMerge a Linear diff or add it to the repository's merge queueWriteMergeDiff
Merge a Linear diff or add it to the repository's merge queue
Inputs
urlOrIdstringrequired- Linear review URL, diff slug, pull request ID, Linear full identifier, or GitHub PR URL
mergeMethodstring- Merge method; omit to use the repository defaultone of
MERGEREBASESQUASH
linearmcp_prepare_attachment_uploadPrepare a direct Linear file upload for an existing issue.WritePrepareAttachmentUpload
Prepare a direct Linear file upload for an existing issue. Workflow: 1. Call this with issue, filename, contentType, and size. 2. Upload raw bytes with PUT to uploadRequest.url. 3. After PUT succeeds, call create_attachment_from_upload with assetUrl.
Inputs
contentTypestringrequired- MIME type, e.g. image/png or application/pdf
filenamestringrequired- Filename for the upload, e.g. screenshot.png
issuestringrequired- Issue ID or identifier (e.g., LIN-123)
sizeintegerrequired- Exact file size in bytes. Must be smaller than 2 GB.
subtitlestring- Suggested attachment subtitle for the finalize step
titlestring- Suggested attachment title for the finalize step
linearmcp_prepare_file_uploadPrepare a direct Linear file upload to embed an image or file in a Markdown field.WritePrepare File Upload
Prepare a direct Linear file upload to embed an image or file in a Markdown field. The file is not added to any issue's Resources. To attach a file to an issue's Resources, use prepare_attachment_upload. Workflow: 1. Call this tool with 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, put markdown (or assetUrl) in the body of save_diff_comment, update_diff, submit_diff_review, save_comment, save_document, save_project, or another Markdown field. 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 and PUT one file before calling this tool for another file. Do not batch multiple prepare_file_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>"
Inputs
contentTypestringrequired- MIME type, e.g. image/png or application/pdf
filenamestringrequired- Filename for the upload, e.g. screenshot.png
sizeintegerrequired- Exact file size in bytes. Must be smaller than 2 GB.
linearmcp_resolve_diff_threadResolve or reopen a top-level comment thread on a Linear diffWriteResolveDiffThread
Resolve or reopen a top-level comment thread on a Linear diff
- Idempotent
Inputs
threadIdstringrequired- Top-level diff thread/comment ID
resolvedboolean- True to resolve the thread; false to reopen itdefault
true
linearmcp_restore_initiative_labelRestore a retired Linear initiative label, making it available for use on initiatives again.WriteRestore Initiative Label
Restore a retired Linear initiative label, making it available for use on initiatives again. Restoring a label group also restores every child label, including any that were retired separately.
Inputs
idstringrequired- Label or label group ID
linearmcp_restore_issue_labelRestore a retired Linear issue label, making it available for use on issues again.WriteRestore Issue Label
Restore a retired Linear issue label, making it available for use on issues again. Restoring a label group also restores every child label, including any that were retired separately.
Inputs
idstringrequired- Label or label group ID
linearmcp_restore_project_labelRestore a retired Linear project label, making it available for use on projects again.WriteRestore Project Label
Restore a retired Linear project label, making it available for use on projects again. Restoring a label group also restores every child label, including any that were retired separately.
Inputs
idstringrequired- Label or label group ID
linearmcp_retire_initiative_labelRetire a Linear initiative label so it cannot be applied to new initiatives.WriteRetire Initiative Label
Retire a Linear initiative label so it cannot be applied to new initiatives. The label stays visible on initiatives that already have it. Retiring a label group also retires its child labels. Undo with `restore_initiative_label`.
Inputs
idstringrequired- Label or label group ID
linearmcp_retire_issue_labelRetire a Linear issue label so it cannot be applied to new issues.WriteRetire Issue Label
Retire a Linear issue label so it cannot be applied to new issues. The label stays visible on issues that already have it. Retiring a label group also retires its child labels. Undo with `restore_issue_label`.
Inputs
idstringrequired- Label or label group ID
linearmcp_retire_project_labelRetire a Linear project label so it cannot be applied to new projects.WriteRetire Project Label
Retire a Linear project label so it cannot be applied to new projects. The label stays visible on projects that already have it. Retiring a label group also retires its child labels. Undo with `restore_project_label`.
Inputs
idstringrequired- Label or label group ID
linearmcp_save_customerCreate or update a Linear customer.WriteSaveCustomer
Create or update a Linear customer. If id is provided, updates the existing customer; otherwise creates a new one. When creating, name is required.
Inputs
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
linearmcp_save_customer_needCreate or update a customer need (request) in Linear.WriteSaveCustomerNeed
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.
Inputs
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
linearmcp_save_diff_commentCreate, reply to, or edit a comment or persisted draft on a Linear diff.WriteSaveDiffComment
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.
Inputs
bodystringrequired- Comment body as plain text
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 submittingdefault
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
linearmcp_save_initiativeCreate or update a Linear initiative.WriteSaveInitiative
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.
Inputs
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., I-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., I-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). Null to remove
linearmcp_save_initiative_labelCreate or update a Linear initiative label.WriteSave Initiative Label
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.
Inputs
colorstring- Hex color code
descriptionstring- Label description. Null to clear it
groupTypestring- Selection mode for label groups. Defaults to singleSelect when creating; omit to keep it unchanged when updatingone of
singleSelectmultiSelect 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
linearmcp_save_issue_labelCreate or update a Linear issue label.WriteSave Issue Label
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.
Inputs
colorstring- Hex color code
descriptionstring- Label description. Null to clear it
groupTypestring- Selection mode for label groups. Defaults to singleSelect when creating; omit to keep it unchanged when updatingone of
singleSelectmultiSelect 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
linearmcp_save_project_labelCreate or update a Linear project label.WriteSave Project Label
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.
Inputs
colorstring- Hex color code
descriptionstring- Label description. Null to clear it
groupTypestring- Selection mode for label groups. Defaults to singleSelect when creating; omit to keep it unchanged when updatingone of
singleSelectmultiSelect 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
linearmcp_save_releaseCreate or update a release.WriteSaveRelease
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.
Inputs
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
linearmcp_save_release_noteCreate or update release notes.WriteSaveReleaseNote
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.
Inputs
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 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
linearmcp_submit_diff_reviewApprove a Linear diff, request changes, or submit a review commentWriteSubmitDiffReview
Approve a Linear diff, request changes, or submit a review comment
Inputs
decisionstringrequired- Review decision: approved, changesRequested, or commentedone of
approvedchangesRequestedcommented urlOrIdstringrequired- Linear review URL, diff slug, pull request ID, Linear full identifier, or GitHub PR URL
bodystring- Optional review body; required when requesting changes or commenting
linearmcp_update_diffUpdate a Linear diff's title, description, reviewer requests, issue links, or status.WriteUpdate Diff
Update a Linear diff's title, description, reviewer requests, issue links, or status. Provide at least one update. Combined updates can partially succeed; inspect the result before retrying. Use merge_diff to merge and submit_diff_review to approve or request changes.
Inputs
urlOrIdstringrequired- Linear review URL, diff slug, pull request ID, Linear full identifier, or GitHub PR URL
addedIssueLinksarray- Add issue links or change the relationship of an existing link
addedReviewRequestsarray- Request or re-request reviews; existing pending requests are unchanged
descriptionstring- New description as Markdown; an empty string clears it
removedIssueLinksarray- Linear issue identifiers or UUIDs to unlink
removedReviewRequestsarray- Withdraw pending review requests; submitted reviews are preserved
statusActionstring- Status transition to perform after metadata is updatedone of
markReadyForReviewconvertToDraftclosereopen titlestring- New diff title
linearmcp_delete_attachmentDelete an attachment by IDDestructiveDeleteAttachment
Delete an attachment by ID
Inputs
idstringrequired- Attachment ID
linearmcp_delete_commentDelete a Linear comment.DestructiveDeleteComment
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.
Inputs
idstringrequired- Comment ID
linearmcp_delete_customerDelete a customer in LinearDestructiveDeleteCustomer
Delete a customer in Linear
Inputs
idstringrequired- Customer ID
linearmcp_delete_customer_needArchive a customer need in LinearDestructiveDeleteCustomerNeed
Archive a customer need in Linear
Inputs
idstringrequired- Customer need ID
linearmcp_delete_diff_commentDelete a comment from a Linear diffDestructiveDeleteDiffComment
Delete a comment from a Linear diff
Inputs
commentIdstringrequired- Submitted diff comment ID to delete
draftIdstring- Persisted diff comment draft ID to delete
linearmcp_delete_status_updateDelete (archive) a project or initiative status update.DestructiveDeleteStatusUpdate
Delete (archive) a project or initiative status update.
Inputs
idstringrequired- Status update ID
typestringrequired- Type of status updateone of
projectinitiative
linearmcp_save_commentCreate or update a comment on a Linear issue, project, initiative, document, project milestone, or project/initiative status update.DestructiveSaveComment
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. To reply to an existing thread, pass parentId and body.
Inputs
bodystringrequired- 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)
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; rejected when id or parentId is provided.one of
projectinitiative
linearmcp_save_documentCreate or update a Linear document.DestructiveSaveDocument
Create or update a Linear document. If id is provided, updates 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.
Inputs
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 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)
linearmcp_save_issueCreate or update a Linear issue.DestructiveSaveIssue
Create or update a Linear issue. If id is provided, updates the existing issue; otherwise creates a new one. When creating, title and team are required. Note: use assignee (not assigneeId) to set the assignee, it accepts a user ID, name, email, or "me".
Inputs
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., P-ENG-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)
linearmcp_save_milestoneCreate or update a milestone in a Linear project.DestructiveSaveMilestone
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.
Inputs
projectstringrequired- Project name, ID, identifier (e.g., P-ENG-123), or slug
descriptionstring- Milestone description
idstring- Milestone name or ID
namestring- Milestone name (required when creating)
targetDatestring- Target completion date (ISO format, null to remove)
linearmcp_save_projectCreate or update a Linear project.DestructiveSaveProject
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. To change parts of the description without resending all of it, pass patch instead of description.
Inputs
addInitiativesarray- Initiatives to add. Initiative name, ID, identifier (e.g., I-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., P-ENG-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
leadTeamstring- Team that leads the project. Team name or ID. Overrides the default lead team; added to the project's teams when not among them
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., I-123), or slug
removeTeamsarray- Team name or ID to remove
setInitiativesarray- Replace all initiatives with these. Initiative name, ID, identifier (e.g., I-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). Null to remove
startDateResolutionstring- Start date resolution. Null for an exact day. When omitted, the current resolution stays and the date snaps to it
statestring- Project status name, type, or ID. Names resolve within the lead team's project statuses. If the lead team is unknown, standard labels resolve as status types; custom names require a status ID or leadTeam
summarystring- Short summary (max 255 chars)
targetDatestring- Target date (ISO format). Pair with targetDateResolution to indicate precision (e.g. month, quarter). Null to remove
targetDateResolutionstring- Target date resolution. Null for an exact day. When omitted, the current resolution stays and the date snaps to it
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
linearmcp_save_status_updateCreate or update a project/initiative status update.DestructiveSaveStatusUpdate
Create or update a project/initiative status update. Omit `id` to create, provide `id` to update.
Inputs
typestringrequired- Type of status updateone of
projectinitiative 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- Health status of the project or initiativeone of
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
No tools match.