Linear

Create, search, and update Linear issues, projects, and cycles. Sign in with Linear to connect.

OAuthProductivity53 tools
Tools

What Linear exposes.

Every tool below is one this server advertised the last time Omniio refreshed it, under the linear__ namespace. Your agent never loads them all — it searches, and gets the few that match.

53 tools
  • linear__create_attachment8 arguments · 5 required

    Create attachment (deprecated)

    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.

    Requiredissuebase64ContentfilenamecontentTypesha256

  • linear__create_attachment_from_upload4 arguments · 2 required

    Create attachment from upload

    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.

    RequiredissueassetUrl

  • linear__create_issue_label6 arguments · 1 required

    Create issue label

    Create a new Linear issue label

    Requiredname

  • linear__delete_attachment1 argument · 1 required

    Delete attachment

    Delete an attachment by ID

    Requiredid

  • linear__delete_comment1 argument · 1 required

    Delete comment

    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.

    Requiredid

  • linear__delete_diff_comment2 arguments

    Delete diff comment

    Delete a comment or persisted draft from a Linear diff

  • linear__delete_status_update2 arguments · 2 required

    Delete status update

    Delete (archive) a project or initiative status update.

    Requiredtypeid

  • linear__extract_images1 argument · 1 required

    Extract images

    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.

    Requiredmarkdown

  • linear__get_agent_skill1 argument · 1 required

    Get agent skill

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

    Requiredid

  • linear__get_attachment1 argument · 1 required

    Get attachment

    Retrieve an attachment's content by ID.

    Requiredid

  • linear__get_diff1 argument · 1 required

    Get diff

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

    RequiredurlOrId

  • linear__get_diff_threads4 arguments · 1 required

    Get diff threads

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

    RequiredurlOrId

  • linear__get_document1 argument · 1 required

    Get document

    Retrieve a Linear document by ID or slug

    Requiredid

  • linear__get_issue4 arguments · 1 required

    Get issue

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

    Requiredid

  • linear__get_issue_status3 arguments · 3 required

    Get issue status

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

    Requiredidnameteam

  • linear__get_milestone2 arguments · 2 required

    Get milestone

    Retrieve details of a specific milestone by ID or name

    Requiredprojectquery

  • linear__get_project4 arguments · 1 required

    Get project

    Retrieve details of a specific project in Linear

    Requiredquery

  • linear__get_release2 arguments · 1 required

    Get release

    Retrieve details of a release by ID or slug.

    Requiredid

  • linear__get_release_note2 arguments · 1 required

    Get release notes

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

    Requiredid

  • linear__get_status_updates11 arguments · 1 required

    Get status updates

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

    Requiredtype

  • linear__get_team1 argument · 1 required

    Get team

    Retrieve details of a specific Linear team

    Requiredquery

  • linear__get_user1 argument · 1 required

    Get user

    Retrieve details of a specific Linear user

    Requiredquery

  • linear__get_workspaceno arguments

    Get workspace

    Retrieve the connected Linear workspace

  • linear__list_agent_skills3 arguments

    List agent skills

    List Linear Agent skills available to the authenticated user.

  • linear__list_comments10 arguments

    List comments

    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.

  • linear__list_cycles2 arguments · 1 required

    List cycles

    Retrieve cycles for a specific Linear team

    RequiredteamId

  • linear__list_diffs10 arguments

    List diffs

    List Linear diff pull requests visible to the authenticated user

  • linear__list_documents12 arguments

    List documents

    List documents in the user's Linear workspace

  • linear__list_issue_labels5 arguments

    List issue labels

    List available issue labels in a Linear workspace or team

  • linear__list_issue_statuses1 argument · 1 required

    List issue statuses

    List available issue statuses in a Linear team

    Requiredteam

  • linear__list_issues18 arguments

    List issues

    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.

  • linear__list_milestones1 argument · 1 required

    List project milestones

    List all milestones in a Linear project

    Requiredproject

  • linear__list_project_labels4 arguments

    List project labels

    List available project labels in the Linear workspace

  • linear__list_projects15 arguments

    List projects

    List projects in the user's Linear workspace

  • linear__list_release_notes11 arguments

    List release notes

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

  • linear__list_release_pipelines12 arguments

    List release pipelines

    List release pipelines in the workspace.

  • linear__list_releases13 arguments

    List releases

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

  • linear__list_teams7 arguments

    List teams

    List teams in the user's Linear workspace

  • linear__list_users5 arguments

    List users

    Retrieve users in the Linear workspace

  • linear__merge_diff2 arguments · 1 required

    Merge diff

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

    RequiredurlOrId

  • linear__prepare_attachment_upload6 arguments · 4 required

    Prepare attachment upload

    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>"

    RequiredissuefilenamecontentTypesize

  • linear__resolve_diff_thread2 arguments · 1 required

    Resolve diff thread

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

    RequiredthreadId

  • linear__save_comment10 arguments · 1 required

    Save comment

    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).

    Requiredbody

  • linear__save_diff_comment8 arguments · 1 required

    Save diff comment

    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.

    Requiredbody

  • linear__save_document11 arguments

    Save document

    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`.

  • linear__save_issue29 arguments

    Save issue

    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".

  • linear__save_milestone5 arguments · 1 required

    Save milestone

    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.

    Requiredproject

  • linear__save_project22 arguments

    Save project

    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`.

  • linear__save_release12 arguments

    Save release

    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.

  • linear__save_release_note8 arguments

    Save release notes

    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`.

  • linear__save_status_update7 arguments · 1 required

    Save status update

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

    Requiredtype

  • linear__search_documentation2 arguments · 1 required

    Search documentation

    Search Linear's documentation to learn about features and usage

    Requiredquery

  • linear__submit_diff_review3 arguments · 2 required

    Submit diff review

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

    RequiredurlOrIddecision

Connecting

Three steps, and the last one is not yours.

01

Point a client at Omniio

One URL, authorized once by your client. If you already use Omniio, this step is done.

02

Switch Linear on

Authorize it from your library; the grant is yours and stays yours.

03

Ask for what you need

The agent searches, reads the one schema it picked, and runs it. You do not name the tool.

claude code
claude mcp add --transport http omniio https://mcp.omniio.dev
Productivity

Others in the same category.

They share the endpoint, so having more than one on costs you nothing in context — the search decides which is relevant.

Browse the whole library