1Open Slashspace and go to Settings, then Connectors.
2On Discover, search for Linear MCP and click Connect.
3Sign in to Linear MCP in your browser. Slashspace updates when the account is connected.
Then ask for what you need in any Agent mode chat. Linear MCP is on in every chat unless you switch it off.
What your chats can do
78 tools from Linear MCP.
Create attachmentDeprecated 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.
Create attachment from uploadLink 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.
Create initiative label
Create a new Linear initiative label. Deprecated: use `save_initiative_label`, which can also update labels.
Create issue labelCreate a new Linear issue label. Deprecated: use `save_issue_label`, which can also update labels.
Delete attachmentDelete an attachment by ID
Delete commentDelete 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.
Delete customerDelete a customer in Linear
Delete customer needArchive a customer need in Linear
Delete diff commentDelete a comment or persisted draft from a Linear diff
Delete status updateDelete (archive) a project or initiative status update.
Extract imagesExtract 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.
Get agent skillRetrieve a Linear Agent skill by ID, including its full markdown instructions.
Get attachmentRetrieve an attachment's content by ID.
Get diffExact lookup for a Linear diff. Use with review URLs, GitHub PR URLs, Linear full identifiers, UUIDs, or slugs.
Get diff threadsExact lookup for diff threads and the authenticated user's drafts. Use with review URLs, GitHub PR URLs, Linear full identifiers, UUIDs, or slugs.
Get documentRetrieve a Linear document by ID or slug
Get initiativeRetrieve detailed information about a specific initiative in Linear
Get issueRetrieve detailed information about an issue by ID, including attachments, git branch name, and active Triage Intelligence suggestions when the issue is in triage
Get issue statusRetrieve detailed information about an issue status in Linear by name or ID
Get milestoneRetrieve details of a specific milestone by ID or name
Get notificationsGet a page of notifications from the authenticated user's Linear inbox.
Get projectRetrieve details of a specific project in Linear
Get releaseRetrieve details of a release by ID or slug.
Get release noteRetrieve release notes by ID or slug, including markdown content.
Get status updatesList or get project/initiative status updates. Pass `id` to get a specific update, or filter to list.
Get teamRetrieve details of a specific Linear team
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. 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.
Get userRetrieve details of a specific Linear user
Get workspaceRetrieve the connected Linear workspace
List agent skillsList Linear Agent skills available to the authenticated user.
List commentsList 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.
List customersList customers in the user's Linear workspace
List cyclesRetrieve cycles for a specific Linear team
List diffsList Linear diff pull requests visible to the authenticated user
List documentsList documents in the user's Linear workspace
List initiative labelsList available initiative labels in the Linear workspace. A retired label carries `retiredAt` and cannot be applied to new initiatives.
List initiativesList initiatives in the user's Linear workspace
List issue labelsList available issue labels in a Linear workspace or team. A retired label carries `retiredAt` and cannot be applied to new issues.
List issuesList 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.
List issue statusesList available issue statuses in a Linear team
List milestonesList all milestones in a Linear project
List project labelsList available project labels in the Linear workspace. A team-scoped label carries a `team` field; different teams can hold same-named labels, so check it before acting on an ID. A retired label carries `retiredAt` and cannot be applied to new projects.
List projectsList projects in the user's Linear workspace
List release notesList release notes in the workspace, optionally filtered by pipeline or covered release.
List release pipelinesList release pipelines in the workspace.
List releasesList releases in the workspace, with optional filtering by pipeline, stage, version, and text.
List teamsList teams in the user's Linear workspace
List templatesList 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.
List usersRetrieve users in the Linear workspace
Mark notificationMark a Linear inbox notification as read or unread, or snooze or unsnooze it.
Merge diffMerge a Linear diff or add it to the repository's merge queue
Prepare attachment uploadPrepare 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>"
Resolve diff threadResolve or reopen a top-level comment thread on a Linear diff
Restore initiative labelRestore 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.
Restore issue labelRestore 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.
Restore project labelRestore 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.
Retire initiative labelRetire 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`.
Retire issue labelRetire 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`.
Retire project labelRetire 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`.
Save commentCreate 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).
Save customerCreate or update a Linear customer. If `id` is provided, updates the existing customer; otherwise creates a new one. When creating, `name` is required.
Save customer needCreate 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.
Save diff commentCreate, 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.
Save documentCreate 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`.
Save initiativeCreate 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`.
Save initiative labelCreate or update a Linear initiative label. If `id` is provided, updates the existing label; otherwise creates a new one. When creating, `name` is required.
Save issueCreate 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".
Save issue labelCreate or update a Linear issue label. If `id` is provided, updates the existing label; otherwise creates a new one. When creating, `name` is required.
Save milestoneCreate 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.
Save projectCreate 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`.
Save project labelCreate or update a Linear project label. If `id` is provided, updates the existing label; otherwise creates a new one. When creating, `name` is required.
Save releaseCreate 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.
Save release noteCreate 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`.
Save status updateCreate or update a project/initiative status update. Omit `id` to create, provide `id` to update.
Search documentationSearch Linear's documentation to learn about features and usage
Share issueShare an issue with a workspace user who cannot otherwise access it. Use this tool only when the user explicitly asks to share the issue.
Submit diff reviewApprove a Linear diff, request changes, or submit a review comment
Unshare issueRemove a workspace user's shared access to an issue. Use this tool only when the user explicitly asks to stop sharing the issue.