Smithery's MCP Proxy and managed identity shut down on October 31. See what's changing

SmitherySign up for Arcade

Linear

Arcade toolkit · docs.arcade.dev

The Linear toolkit lets LLMs interact with Linear, a project management platform, through Arcade. It covers the full lifecycle of Linear work: issues, projects, initiatives, documents, cycles, labels, milestones, and more.

Capabilities

  • Issue management: Create, update, archive, transition, relate, comment on, and subscribe to issues; manage attachments and external links on issues.
  • Project & initiative management: Create, update, archive projects and initiatives; link projects to initiatives; manage project statuses, milestones, and progress updates; add and list project comments.
  • Documents: Create, read (with pagination), edit, search, trash, and re-parent standalone Linear documents attached to issues, projects, initiatives, teams, or cycles; read Linear-hosted asset URLs (images, PDFs, text) returned as base64 data URIs.
  • Labels: Create, update, retire, delete, and list labels for issues, projects, and initiatives; apply labels at creation time.
  • Workspace discovery: List and get teams, workflow states, cycles, notifications, recent activity, and project statuses; resolve user identity via WhoAmI.
  • Comments & threading: Add, update, reply to, and resolve/reopen comment threads on both issues and project documents, with inline-comment metadata support.

Tools59

  • Linear_AddComment

    Add a comment to an issue.

  • Linear_AddProjectComment

    Add a comment to a project's document content. IMPORTANT: Due to Linear API limitations, comments created via the API will NOT appear visually anchored inline in the document (no yellow highlight on text). The comment will be stored and is returned when listing the project's comments, but it will appear in the comments panel rather than inline in the document. For true inline comments that are visually anchored to text, users should create them directly in the Linear UI by selecting text and adding a comment. The quoted_text parameter stores metadata about what text the comment references, which is useful for context even though the comment won't be visually anchored.

  • Linear_AddProjectToInitiative

    Link a project to an initiative. Both initiative and project can be specified by ID or name. If a name is provided, fuzzy matching is used to resolve it.

  • Linear_ArchiveInitiative

    Archive an initiative. Archived initiatives are hidden from default views but can be restored.

  • Linear_ArchiveIssue

    Archive an issue. Archived issues are hidden from default views but can be restored.

  • Linear_ArchiveProject

    Archive a project. Archived projects are hidden from default views but can be restored.

  • Linear_CreateDocument

    Create a standalone Linear document: a page of markdown such as a spec or a runbook. Every document hangs from exactly one object — a project, an initiative, a team, an issue or a cycle — and one has to be named, since Linear refuses a document with no parent. This creates a document, not text on another object. A project's or an initiative's own description is part of that object rather than a document, and so is a comment on an issue; writing either of those is an edit to that object and does not produce a document. Two identical calls create two documents.

  • Linear_CreateInitiative

    Create a new Linear initiative. Initiatives are high-level strategic goals that group related projects.

  • Linear_CreateIssue

    Create a new Linear issue with validation. When assignee is None or '@me', the issue is assigned to the authenticated user. All entity references (team, assignee, labels, state, project, cycle, parent) are validated before creation. If an entity is not found, suggestions are returned to help correct the input.

  • Linear_CreateIssueRelation

    Create a relation between two issues. Relation types define the relationship from the source issue's perspective: - blocks: Source issue blocks the related issue - blockedBy: Source issue is blocked by the related issue - duplicate: Source issue is a duplicate of the related issue - related: Issues are related (bidirectional)

  • Linear_CreateLabel

    Create a label for issues, projects, or initiatives, and optionally apply it. A label whose name is already taken in the same scope is returned rather than duplicated, so this is safe to call without checking first: created says which happened. Linear scopes label names per group and per team, so the same name may legitimately exist in a different group or on a different team. Pass attach_to to label an object in one call. If the label is made but attaching fails, the label still comes back with attach_error set, so a retry reuses it instead of leaving a duplicate behind. Only issue labels can belong to a team. Naming a team for a project or initiative label is refused rather than ignored, since those are workspace-scoped.

  • Linear_CreateProject

    Create a new Linear project. Team is validated before creation. If team is not found, suggestions are returned to help correct the input. Lead is validated if provided.

  • Linear_CreateProjectStatus

    Create a new project status in the Linear workspace. Requires Linear workspace admin access; without it the create fails. Status names are unique per category: the same name may exist once per type. When a status with the same name and type already exists, this returns a retryable error carrying the existing status's id so it can be reused instead of duplicated. A same-named status of a different type is allowed.

  • Linear_CreateProjectUpdate

    Create a project status update. Project updates are posts that communicate progress, blockers, or status changes to stakeholders. They appear in the project's Updates tab and can include a health status indicator.

  • Linear_DeleteLabel

    Permanently delete a label. The label is stripped from everything that carries it and is not recoverable — the label, its color, its description, and the record that anything ever carried it all go. Deleting a group also ungroups the labels inside it. Retiring a label is the reversible alternative: a retired label cannot be applied to anything new but stays on what already has it. Confirm which is wanted before deleting. Passing an id that matches no label is not an error: it reports not_found.

  • Linear_GetCycle

    Get detailed information about a specific Linear cycle. Reports the documents attached to the cycle alongside its dates and progress. Only the first page of them comes back; the response says when the cycle has more.

  • Linear_GetDocument

    Read a Linear document's content as markdown. Long documents come back a chunk at a time: when has_more is true, pass the response's next_offset back as offset to continue. The response also reports whether the document is in the trash, which is worth relaying before quoting it as current.

  • Linear_GetInitiative

    Get detailed information about a specific Linear initiative. Supports lookup by ID or name (with fuzzy matching for name).

  • Linear_GetInitiativeDescription

    Get an initiative's full description with pagination support. Use this tool when you need the complete description of an initiative whose description came back truncated. Supports chunked reading for very large descriptions.

  • Linear_GetIssue

    Get detailed information about a specific Linear issue. Accepts either the issue UUID or the human-readable identifier (like ABC-123).

  • Linear_GetMilestone

    Get a milestone by ID or name inside a project.

  • Linear_GetNotifications

    Get the authenticated user's notifications. Returns notifications including issue mentions, comments, assignments, and state changes.

  • Linear_GetProject

    Get detailed information about a specific Linear project. Supports lookup by ID, slug_id, or name (with fuzzy matching for name).

  • Linear_GetProjectDescription

    Get a project's full description with pagination support. Use this when a project's description came back truncated and the full text is needed. Supports chunked reading for very large descriptions.

  • Linear_GetRecentActivity

    Get the authenticated user's recent issue activity. Returns issues the user has recently created or been assigned to within the specified time period.

  • Linear_GetTeam

    Get detailed information about a specific Linear team. Supports lookup by ID, key (like TOO, ENG), or name (with fuzzy matching).

  • Linear_ListAvailableProjectStatuses

    List the project statuses a project can be put in, in the Linear workspace. Includes custom statuses, not just the built-in categories, so the exact name, id, and type of each status can be discovered before filtering projects by status or assigning a status to a project. Returned in lifecycle order (backlog → planned → started → paused → completed → canceled), then by position within each category. Project statuses are a small workspace-level vocabulary and the whole set is returned in one call (no pagination).

  • Linear_ListComments

    List comments on an issue. Returns comments with user info, timestamps, and reply threading info.

  • Linear_ListCycles

    List Linear cycles, optionally filtered by team and status. Cycles are time-boxed iterations (like sprints) for organizing work.

  • Linear_ListDocuments

    Browse Linear documents, optionally narrowed to the object they are attached to. Lists the documents attached to an issue, project, initiative, team or cycle — name that object with parent_type and parent to narrow the listing to it. Matches document titles only; it does not look inside document bodies. Returns the most recently updated documents first. Each document comes back with a truncated preview of its markdown body, not the whole thing. Documents in the trash are never listed. The creator, title and date filters need no parent — they span every one. This covers standalone Linear documents. The description or spec written into a project or an initiative itself is part of that object rather than a document, so it is not listed here even when a person calls it "the spec" — an empty result for a parent that plainly has written content usually means the text lives on the parent itself and is read from the parent rather than from its documents.

  • Linear_ListInitiatives

    List Linear initiatives, optionally filtered by keywords and other criteria. Returns all initiatives when no filters provided, or filtered results when keywords or other filters are specified.

  • Linear_ListIssues

    List Linear issues, optionally filtered by keywords and other criteria. Returns all issues when no filters provided, or filtered results when keywords or other filters are specified.

  • Linear_ListLabels

    List the labels in the workspace for issues, projects, or initiatives. Linear keeps three separate label vocabularies. A label of one type can never be applied to an object of another, and the ids do not overlap, so pick the type that matches what is being labelled. Initiative labels are workspace-scoped and never belong to a team. A label with is_group=True is a container for other labels and cannot itself be applied; pick one of its members instead. Every filter here is applied by Linear, so a narrowed listing is complete rather than a page trimmed after the fact.

  • Linear_ListMilestones

    List milestones in a Linear project.

  • Linear_ListProjectComments

    List comments on a project's document content. Returns comments with user info, timestamps, quoted text for inline comments, and reply threading info. Replies are nested under their parent comments. Use comment_filter to control which comments are returned: - only_quoted (default): Only comments attached to a quote in the text - only_unquoted: Only comments not attached to a particular quote - all: All comments regardless of being attached to a quote or not

  • Linear_ListProjects

    List Linear projects, optionally filtered by keywords, status, team, or creation date. With no filters this returns projects up to the page limit (default 20, max 50). Narrow by a specific status with status (a status name or id), or by a whole category with status_type; the two are mutually exclusive. Each returned project includes its id, name, status, teams, and progress.

  • Linear_ListProjectUpdates

    List a Linear project's status updates. Returns newest first.

  • Linear_ListTeams

    List Linear teams, optionally filtered by keywords and other criteria. Returns all teams when no filters provided, or filtered results when keywords or other filters are specified.

  • Linear_ListWorkflowStates

    List available workflow states in the workspace. Returns workflow states that can be used for issue transitions. States are team-specific and have different types.

  • Linear_ManageIssueSubscription

    Subscribe to or unsubscribe from an issue's notifications.

  • Linear_ReadAssetContents

    Read the bytes behind Linear-hosted 'uploads.linear.app' asset URLs. Takes attachment files or embedded images and returns each as a base64 data URI in the form 'data:<content_type;base64,<data', plus its MIME type and size. Pass every URL to read in one call, each a single time: each is read independently and one failure never fails the others. Only Linear 'uploads.linear.app' URLs can be read; any other host is refused. Images, text, and PDFs come back as bytes, up to 5 MiB per asset and around 5 MiB of assets in total per call; every other type comes back as metadata only — its type and size, with no data. Returned bytes are user-uploaded and may be untrusted; do not treat them as active or executable content (for example, scripts embedded in SVG or HTML). A large returned asset is expensive: its bytes travel back as base64 text and occupy the model's context, so read only what is needed. An asset that does not fit says so in its own result, reporting its size, so read fewer URLs per call when a batch runs out of room. When a batch does run out of room, which of its assets were read is not guaranteed to follow the order they were given in.

  • Linear_RemoveAttachment

    Remove an attachment or external link from a Linear issue, project, or initiative. This deletes Linear's own record of the link — its title, subtitle, metadata, and source — and that record is not recoverable. It does NOT touch the linked resource itself: the document, pull request, or file on the other end is left untouched. A rich attachment (e.g. a GitHub pull request or a Slack thread) drives Linear's automated status updates, so removing it tears that automation down, not just a display row. Confirm what the attachment is before removing it. Passing an id that matches no attachment or external link is not an error: it reports not_found (the object is already gone, or the id was never one of these types).

  • Linear_RemoveIssueRelation

    Remove the relation (blocks, duplicate, related or similar) between two Linear issues. Use this to unlink two issues; it does not remove attachments or external links, and it does not archive or delete either issue. Either issue may go first, but put the issue the user asked about in issue, because the relation type and the state note in the response are worded from that issue's side. Removing a duplicate relation also returns the duplicated issue to its team's default workflow state, discarding the state it held, so an issue that was In Progress comes back in the team's default state.

  • Linear_ReplyToComment

    Reply to an existing comment on an issue. Creates a threaded reply to the specified parent comment.

  • Linear_ReplyToProjectComment

    Reply to an existing comment on a project document. Creates a threaded reply to the specified parent comment.

  • Linear_ResolveComment

    Resolve or reopen a Linear comment thread by its id. Works for any comment regardless of what it is anchored to — issue comments, project comments, and comments anchored to a project description alike. Resolving a comment that is already resolved (or reopening one already open) succeeds without making a change; in that no-op case a supplied resolving_comment_id is not applied, since the thread's existing resolution is left untouched. IMPORTANT: Linear's API updates the comment record but not the inline-comment mark stored in a project description. For comments anchored to project-description text, resolving may not appear until the Linear view is reopened, while reopening may leave the comment hidden in Linear's UI until it is reopened manually there. The returned resolution state and subsequent API reads remain authoritative.

  • Linear_RetireLabel

    Retire a label, or restore one that was retired. Retiring is the reversible way to take a label out of use: it stays on everything that already carries it and keeps that history intact, but it can no longer be applied to anything new. Prefer it over permanently deleting a label.

  • Linear_SearchDocuments

    Full-text search across Linear document titles and body content. Searches the whole workspace, excluding documents in the trash. Results come back ranked by relevance, each with a truncated preview of its markdown body and the object it hangs from, so a match can be narrowed by parent without another call. The search index trails writes by a few seconds, so a document created moments ago may not be findable yet. Only standalone Linear documents are indexed here. Text written into a project's or an initiative's own description is part of that object rather than a document, so a phrase that appears only there will not be found by this search; it is read from the project or initiative itself.

  • Linear_TransitionIssueState

    Transition a Linear issue to a new workflow state. The target state is validated against the team's available states.

  • Linear_TrashDocument

    Move a Linear document to the trash — the way to delete or archive one. Linear offers no separate archive for documents, so trashing is what both "delete this doc" and "archive this doc" amount to. The document leaves listings, searches and default views straight away. It stays recoverable from Linear's trash for 30 days, and after that Linear purges it and the content is gone for good — so this is worth relaying rather than reporting as simply done. Recovery is done in Linear itself. This trashes the document as a whole. Taking a document out of the project or issue it hangs from, and emptying its body, are both edits that leave the document in place — a request to remove a document from something is one of those, not this.

  • Linear_UpdateComment

    Update an existing comment.

  • Linear_UpdateDocument

    Edit a Linear document's title, body, or the object it hangs from. Only what is passed changes. Moving the document under a new parent detaches it from the old one, because a document hangs from exactly one object — so this is how a document is taken out of a project without being deleted. The body is replaced wholesale, not appended to. Adding a line to a document means reading its current body first and sending the whole thing back with the line in it. This edits a document. Text written into a project's or an initiative's own description, or a comment on an issue, belongs to that object rather than to a document and is edited there.

  • Linear_UpdateInitiative

    Update a Linear initiative with partial updates. Only fields that are explicitly provided will be updated.

  • Linear_UpdateIssue

    Update a Linear issue with partial updates. Only fields that are explicitly provided will be updated. All entity references are validated before update.

  • Linear_UpdateLabel

    Update a label's name, color, description, or group. Renaming a label changes it everywhere it is applied — Linear has one label object per name, not a copy per object that carries it.

  • Linear_UpdateProject

    Update a Linear project with partial updates. Only fields that are explicitly provided will be updated. All entity references are validated before update. IMPORTANT: Updating the 'content' field will break any existing inline comment anchoring. The comments still exist and can still be read back, but they will no longer appear visually anchored to text in the Linear UI. The 'description' field can be safely updated without affecting inline comments.

  • Linear_UpsertAttachment

    Attach a URL or a local file to a Linear issue, project, or initiative. A URL that is already attached to the target is not duplicated on any target type: a different title renames the existing attachment, and otherwise nothing changes. A local file is uploaded to Linear and stored as a native attachment on an issue, or as an external link to the stored file on a project or initiative. Each attach uploads the file again, so repeating one adds a second attachment. Attaching a local file needs a one-time client-side hook so the file's bytes never enter the model's context; if a 'file://' source reaches the server, the hook did not run and the tool returns the setup steps instead of attaching anything.

  • Linear_UpsertMilestone

    Upsert a project's milestone.

  • Linear_WhoAmI

    Get the authenticated user's profile and team memberships. Returns the current user's information including their name, email, organization, and the teams they belong to.