Linear
Issue tracking platform for teams, issues, projects, cycles, roadmaps, comments, and labels.
Supports Linear issue planning around comments, initiatives, issues, projects, and issue update events.
Use Linear with Snow
Snow is a personal AI assistant that builds real apps for you, and they can put Linear to work.
What Snow can do with Linear
These are the Linear operations Snow and the apps you build with it can run. Sign in to choose which ones Snow may run without asking.
Reads21
Look at your data without changing it.
- Get current user
Gets the currently authenticated user's ID, name, email, and other profile information — this is the account behind the API token, which may be a bot or service account rather than a human user. Use the returned `id` field (nested under `data.viewer`) for downstream Linear operations requiring user ID filtering. To search or compare other workspace members, use LINEAR_LIST_LINEAR_USERS instead.
- List comments
Lists comments from Linear workspace accessible to the authenticated user. Use this action when you need to retrieve comments for analysis, reporting, or tracking discussions across issues. The response includes comment content, timestamps, author information, and associated issue details. Supports pagination for large result sets.
- List project updates
Retrieves all project updates from the Linear workspace. Project updates are status posts written by team members to communicate project progress, blockers, and health. Use when you need to fetch project update history, track project health over time, or review team communication. Returns a paginated list with fields including id, body, health, createdAt, url, user, and project. Results are permission-scoped to the connected user — only updates from accessible projects are returned. Pagination: loop while page_info.hasNextPage is true, passing page_info.endCursor as after, or results will be silently truncated. HTTP 429 may occur in large workspaces; apply exponential backoff between calls.
- Search Linear issues
Search Linear issues using full-text search across identifier, title, and description. Use when you need to find issues by keywords or specific identifiers. Note: This endpoint only supports full-text search; for structured filtering by team, project, assignee, state, or labels, use LIST_ISSUES_BY_TEAM_ID instead.
- Download issue attachments
Downloads a specific attachment from a Linear issue; the `file_name` must include the correct file extension.
- Get a comment
Retrieves a single Linear comment by its unique ID. Returns comprehensive details including the comment body, author, timestamps, associated issue, and thread information. Use this action when you need to fetch details about a specific comment, such as when displaying comment information, checking comment status, or retrieving comment content for processing. The comment ID can be obtained from issue queries, comment lists, or comment creation responses.
- Get all cycles
Retrieves all cycles (time-boxed sprint iterations) org-wide from the Linear account; no filters applied. In large multi-team workspaces this produces heavy responses — filter client-side by team ID and date range using each cycle's startsAt/endsAt fields. Cycles are team-scoped; always group by team ID to avoid mixing sprints across teams. To identify the active sprint, verify the current UTC timestamp falls between startsAt and endsAt, and handle null startsAt/endsAt defensively. Timestamps are UTC. Results may be paginated; follow pageInfo.endCursor and hasNextPage until hasNextPage is false to avoid truncated lists.
- Get create issue default params
Fetches a Linear team's default issue estimate and state, useful for pre-filling new issue forms.
- Get cycles by team ID
Retrieves all cycles for a specified Linear team ID; cycles are time-boxed work periods (like sprints). Results are team-scoped to the given team_id. To identify the active cycle, check that the current date (in UTC) falls between a cycle's startAt and endAt fields; either field may be null. Results may be paginated — follow page_info cursors to retrieve all cycles.
- Get labels
Retrieves labels from Linear. If team_id is provided, returns labels for that specific team; if omitted, returns all labels across the workspace. Label names are not unique across teams — always use returned IDs, not names, and track each label ID with its team ID. In large workspaces, results may paginate; follow pageInfo.hasNextPage and pageInfo.endCursor to retrieve all labels.
Creates10
Add something new to your account.
- Create Project
Creates a new Linear project with specified name and team associations.
- Create Project Milestone
Tool to create a project milestone in Linear with a name and optional target date and sort order. Use when you need to add milestones to track progress within a project.
- Create Project Update
Tool to create a project status update post for a Linear project. Use when you need to post progress updates, status reports, or announcements for a project.
- Create Team
Creates a new team in Linear with the specified name and key. Use this action when you need to create a new organizational unit or work group in a Linear workspace. Teams are fundamental organizational structures in Linear that group issues, projects, and members together. Once created, the team's key becomes the prefix for all issues created within that team (e.g., 'ENG-123'). IMPORTANT: The key must be unique across the workspace and cannot be changed after creation.
- Add reaction to comment
Tool to add a reaction to an existing Linear comment. Use when you want to programmatically react to a comment on an issue.
- Create a comment
Creates a new comment on a specified Linear issue. This action modifies shared workspace data and is not reversible — confirm the target issue and comment content before executing.
- Create a label
Creates a new label in Linear for a specified team, used to categorize and organize issues. Label names must be unique within each team. If a label with the same name already exists, the existing label will be returned. Both new and existing labels return the same object structure; check the label's `createdAt` or compare IDs to determine if creation occurred.
- Create attachment
Creates a new attachment and associates it with a specific, existing Linear issue.
- Create issue relation
Create a relationship between two Linear issues using the issueRelationCreate mutation. Use this to establish connections like 'blocks', 'duplicate', or 'related' between issues.
- Create linear issue
Creates a new issue in a specified Linear project and team, requiring team_id and title, and allowing optional properties like description, assignee, state, priority, cycle, and due date. All UUID parameters (state_id, assignee_id, cycle_id, label_ids, project_id) must belong to the same team as team_id. The created issue's id is returned in data.id — capture it for use as parent_id in sub-issues or follow-up operations. No template_id field exists; expand templates manually into title and description before calling.
Updates11
Change something that is already there.
- Update issue
Updates an existing Linear issue using its `issue_id`; requires at least one other attribute for modification, and all provided entity IDs (for state, assignee, labels, etc.) must be valid UUIDs — only `issueId` accepts key format (e.g., 'ENG-123'). All updated fields are fully overwritten, not merged; omit any field you do not intend to change.
- Update Project
Tool to update an existing Linear project. Use when you need to modify project properties like name, description, state, dates, or lead. All fields except project_id are optional - only provide the fields you want to update.
- Update Project Update
Tool to update an existing Linear project update post. Use this action when you need to modify a project update's content, health status, or diff visibility settings. All fields except the update ID are optional - only provide the fields you want to update. Changes are immediately visible to all team members viewing the project.
- Update Team
Updates an existing Linear team's settings and configuration. Use when you need to modify team properties like name, description, key, cycle settings, workflow states, or other team-level configurations. All fields except team_id are optional - only provide the fields you want to update.
- Archive issue
Archives an existing Linear issue by its ID, removing it from active views while preserving its data for future reference. Use this action when you need to remove an issue from active work without permanently deleting it — for example, when an issue is no longer relevant, was created by mistake, or has been superseded by another issue. Archiving is reversible via the unarchive mutation, unlike permanent deletion. This action is irreversible through the API once completed, though issues can be manually unarchived in the Linear UI or via the issueUnarchive mutation.
- Archive Project
Archives an existing Linear project by its UUID, removing it from active views. Use this action when you need to mark a completed or obsolete project as archived. Archiving is reversible (projects can be unarchived later), but confirm the project name with the user before executing, especially in bulk operations.
- Archive Project Update
Archives a project update in Linear, hiding it from the default view while preserving its data. Use this action when you need to clean up old or obsolete project status updates without permanently deleting them. Archived updates can be unarchived later if needed. This action is irreversible only in the sense that the project update will be hidden from active views until explicitly unarchived.
- Resolve comment
Marks a Linear comment as resolved. This action is used when a comment thread or discussion has been addressed and should be marked as complete. Use this action when you need to resolve a comment after addressing the feedback or discussion it represents. The comment remains visible but is marked as resolved with a timestamp and the resolving user's information.
- Unarchive Project Update
Unarchive a previously archived project update in Linear. Use this action when you need to restore an archived project update to make it visible and active again. Archived project updates are hidden from normal views but can be restored using this action. Use when a project update was archived by mistake or needs to be brought back into active use.
- Unresolve a comment
Unresolves a previously resolved Linear comment, marking it as requiring attention again. Use this action when you need to reopen a comment thread that was previously marked as resolved. This is useful when additional discussion is needed or the resolution was premature.
Deletes4
Remove something. This often cannot be undone.
- Remove label from Linear issue
Removes a specified label from an existing Linear issue using their IDs; successful even if the label isn't on the issue. Operation is irreversible — obtain explicit user approval before executing. Use this tool instead of LINEAR_UPDATE_ISSUE to avoid replacing the entire label set.
- Remove reaction from comment
Tool to remove a reaction on a comment. Use when you have a reaction ID and need to delete it.
- Run Query or Mutation
Execute any GraphQL query or mutation against Linear's API. USE WHEN: No dedicated action exists, need complex filtering, custom fields, or schema discovery. * INTROSPECTION FIRST - NEVER GUESS FIELD NAMES * Run introspection before unknown operations: - query { __type(name: "Issue") { fields { name } } } - query { __type(name: "Mutation") { fields { name } } } Linear uses nested objects (project { id }), NOT scalar IDs (projectId). KEY: All IDs are UUIDs. Filter: { field: { eq: value } }. Pagination: nodes
- Delete issue
Archives an existing Linear issue by its ID, which is Linear's standard way of deleting issues; the operation is idempotent. Archiving is permanent with no built-in undo — confirm the issue identifier and title with the user before executing, especially in bulk operations.
Triggers
These are the trigger events currently available for Linear.
- Comment Received Trigger
Triggered when a comment is received.
- Issue Created Trigger
Triggered when a new issue is created.
- Issue Updated Trigger
Triggered when an issue is updated. For example labels are changed, issue status is changed, etc.
- Private Team Comment Created
Fires when a new comment is posted on an issue in a private Linear team (polled with the connected user's token).
- Private Team Issue Created
Fires when a new issue appears in a private Linear team (polled with the connected user's token).
- Private Team Issue Properties Updated
Fires when properties on an issue change in a private Linear team (polled with the connected user's token).
- Project Created
Fires when a new Linear project is created. Covers projects in both public and private teams — polls with the connected user's token, so visibility matches what the connected user can see in Linear.
- Project Properties Updated
Fires when properties on a Linear project change (status, lead, target date, priority, etc.). Covers projects in both public and private teams — polls with the connected user's token.
- Project Update Posted
Fires when a project status update is posted on the Linear project's Updates tab. Covers projects in both public and private teams — polls with the connected user's token.
- Public Team Comment Created
Fires when a new comment is posted on a *public-team* Linear issue. For private teams (lock icon in Linear's sidebar) use `LINEAR_PRIVATE_TEAM_COMMENT_CREATED`.
Related integrations
Ready to put Linear to work?
Sign up free, build an app by chatting, and connect Linear in minutes. No credit card required.