
Manage issues, projects, and track development progress with AI assistance
LINEAR CREATE COMMENT REACTION
Tool to add a reaction to an existing Linear comment. Use when you want to programmatically react to a comment on an issue.
LINEAR CREATE LINEAR ATTACHMENT
Creates a new attachment and associates it with a specific, existing Linear issue.
LINEAR CREATE LINEAR COMMENT
Creates a new comment on a specified Linear issue.
LINEAR CREATE LINEAR ISSUE
Creates a new issue in a specified Linear project and team, requiring team_id and title, and allowing for optional properties like description, assignee, state, priority, cycle, and due date.
LINEAR CREATE LINEAR ISSUE DETAILS
Fetches a Linear team's default issue estimate and state, useful for pre-filling new issue forms.
LINEAR CREATE LINEAR 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.
LINEAR CREATE LINEAR PROJECT
Creates a new Linear project with specified name and team associations.
LINEAR DELETE LINEAR ISSUE
Archives an existing Linear issue by its ID, which is Linear's standard way of deleting issues; the operation is idempotent.
LINEAR GET ALL LINEAR TEAMS
Retrieves all teams from the Linear workspace without requiring any parameters.
LINEAR GET ATTACHMENTS
Downloads a specific attachment from a Linear issue; the `file_name` must include the correct file extension.
LINEAR GET CURRENT USER
Gets the currently authenticated user's ID, name, email, and other profile information. Use this to identify 'me' in other Linear operations that require user ID filtering.
LINEAR GET CYCLES BY TEAM ID
Retrieves all cycles for a specified Linear team ID; cycles are time-boxed work periods (like sprints) and the team ID must correspond to an existing team.
LINEAR GET LINEAR ISSUE
Retrieves an existing Linear issue's comprehensive details, including id, identifier, title, description, timestamps, state, team, creator, attachments, comments, and due date.
LINEAR GET LINEAR PROJECT
Retrieves a single Linear project by its unique identifier. Use when verifying a newly created or updated project, or when fetching detailed project information by ID.
LINEAR LIST ISSUE DRAFTS
Tool to list issue drafts. Use when you need to fetch draft issues for review or further editing.
LINEAR LIST ISSUES BY TEAM ID
Tool to list all issues for a specific Linear team, scoped by team ID. Use when you need to retrieve issues belonging to a particular team without fetching workspace-wide issues. This is more efficient than workspace-wide listing followed by client-side filtering.
LINEAR LIST LINEAR CYCLES
Retrieves all cycles (time-boxed iterations for work) from the Linear account; no filters are applied.
LINEAR LIST LINEAR ISSUES
Lists non-archived Linear issues; if project_id is not specified, issues from all accessible projects are returned. Can also filter by assignee_id to get issues assigned to a specific user.
LINEAR LIST LINEAR LABELS
Retrieves labels from Linear. If team_id is provided, returns labels for that specific team. If team_id is omitted, returns all labels across the workspace.
LINEAR LIST LINEAR PROJECTS
Retrieves all projects from the Linear account.
LINEAR LIST LINEAR STATES
Retrieves all workflow states for a specified team in Linear, representing the stages an issue progresses through in that team's workflow.
LINEAR LIST LINEAR TEAMS
Retrieves all teams with their members. Optionally filters each team's associated projects by project_id.
LINEAR LIST LINEAR USERS
Lists all users in the Linear workspace with their IDs, names, emails, and active status.
LINEAR MANAGE DRAFT
Tool to create, update, or delete issue drafts in Linear. Use when you need to save or modify draft notes before converting to an issue. Note: Linear's public GraphQL API does not expose explicit Issue Draft mutations. This action leverages standard Issue mutations to emulate draft management: - create -> issueCreate - update -> issueUpdate - delete -> issueDelete The response maps the created/updated Issue fields to the DraftModel for compatibility.
LINEAR REMOVE ISSUE LABEL
Removes a specified label from an existing Linear issue using their IDs; successful even if the label isn't on the issue.
LINEAR REMOVE REACTION
Tool to remove a reaction on a comment. Use when you have a reaction ID and need to delete it.
LINEAR 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[] + pageInfo.
LINEAR 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.
LINEAR UPDATE LINEAR COMMENT
Tool to update an existing Linear comment's body text. Use when you need to edit or modify the content of a previously created comment.
LINEAR UPDATE LINEAR 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.
LINEAR CUSTOM RESOLVE CONTEXT
LINEAR — RESOLVE CONTEXT Resolves fuzzy/partial names to Linear entity IDs efficiently. Use this tool FIRST when you need to convert user-provided names to IDs. Args: team_name (str): Partial team name (e.g., 'eng' for 'Engineering') user_name (str): Partial user name to match label_names (List[str]): Partial label names to match project_name (str): Partial project name to match state_name (str): Partial state name (requires team_id) team_id (str): Team ID for state resolution Returns: { "current_user": {"id": "...", "name": "...", "email": "..."}, "teams": [{"id": "...", "name": "...", "key": "..."}], "users": [...], "labels": [...], "projects": [...], "states": [...] }
LINEAR CUSTOM GET MY TASKS
LINEAR — GET MY TASKS Gets the current user's assigned issues with smart filtering. USE THIS TOOL when user asks: • "What are my tasks?" • "What should I work on?" • "Show my high priority issues" • "What's overdue?" Args: filter (str): 'all', 'today', 'this_week', 'overdue', 'high_priority' include_completed (bool): Include completed issues (default: False) limit (int): Maximum issues to return (default: 20) Returns: { "filter": "high_priority", "count": 5, "issues": [{"identifier": "ENG-123", "title": "...", ...}] }
LINEAR CUSTOM SEARCH ISSUES
LINEAR — SEARCH ISSUES Searches issues using natural language queries across titles, descriptions, and comments. Args: query (str): Search query (natural language) team_id (str): Optional team filter state_filter (str): Optional - 'backlog', 'unstarted', 'started', 'completed', 'canceled' assignee_id (str): Optional assignee filter priority_filter (str): Optional - 'urgent', 'high', 'medium', 'low', 'none' created_after (str): Optional date filter (ISO format) limit (int): Maximum results (default: 20) Returns: { "query": "authentication", "count": 3, "issues": [{"identifier": "ENG-123", "title": "...", ...}] }
LINEAR CUSTOM GET ISSUE FULL CONTEXT
LINEAR — GET ISSUE FULL CONTEXT Gets complete issue details including comments, relations, and history in one call. Args: issue_id (str): Issue UUID issue_identifier (str): Issue identifier (e.g., 'ENG-123') Returns: { "issue": { "identifier": "ENG-123", "title": "...", "description": "...", "state": "In Progress", "priority": "high", "sub_issues": [...], "relations": [...], "comments": [...], "activity": [...] } }
LINEAR CUSTOM CREATE ISSUE
LINEAR — CREATE ISSUE Creates a new issue with full field support, optionally with sub-issues. Use RESOLVE_CONTEXT first to convert names to IDs. Required Args: team_id (str): Team UUID. Get via RESOLVE_CONTEXT(team_name="...") title (str): Issue title Optional Args: description (str): Detailed description (markdown supported) assignee_id (str): Assignee UUID. Get via RESOLVE_CONTEXT(user_name="...") priority (int): 0=none, 1=urgent, 2=high, 3=medium, 4=low state_id (str): Workflow state UUID. Get via RESOLVE_CONTEXT(state_name="...", team_id="...") label_ids (List[str]): Label UUIDs. Get via RESOLVE_CONTEXT(label_names=[...]) project_id (str): Project UUID. Get via RESOLVE_CONTEXT(project_name="...") cycle_id (str): Sprint UUID. Get via GET_ACTIVE_SPRINT due_date (str): Due date (YYYY-MM-DD or ISO8601) estimate (int): Estimate points (1, 2, 3, 5, 8 etc.) parent_id (str): Parent issue UUID to create as sub-issue sub_issues (List): Sub-issues to create under this issue: - title (str): Required - description (str): Optional - assignee_id (str): Optional - priority (int): Optional Returns: { "issue": { "id": "...", "identifier": "ENG-456", "title": "...", "url": "https://linear.app/..." }, "sub_issues": [ {"id": "...", "identifier": "ENG-457", "title": "..."} ] } Workflow: 1. RESOLVE_CONTEXT(team_name="eng", user_name="john", label_names=["bug"]) 2. CREATE_ISSUE(team_id=..., title=..., assignee_id=..., label_ids=[...])
LINEAR CUSTOM CREATE SUB ISSUES
LINEAR — CREATE SUB-ISSUES (Batch) Creates multiple sub-issues under a parent issue in one call. Sub-issues inherit the team from the parent automatically. Args: parent_issue_id (str): Parent issue UUID parent_identifier (str): Parent issue identifier (e.g., 'ENG-123') sub_issues (List): List of sub-issues to create (max 10): - title (str): Required. Sub-issue title. - description (str): Optional description - assignee_id (str): Optional assignee - priority (int): Optional (0=none, 1=urgent, 2=high, 3=medium, 4=low) Returns: { "parent": "ENG-123", "created_count": 3, "sub_issues": [ {"id": "...", "identifier": "ENG-124", "title": "..."}, {"id": "...", "identifier": "ENG-125", "title": "..."}, ... ] }
LINEAR CUSTOM CREATE ISSUE RELATION
LINEAR — CREATE ISSUE RELATION Creates a relationship between two issues. Relation types: - 'blocks': This issue blocks the related issue - 'is_blocked_by': This issue is blocked by the related issue - 'relates_to': Issues are related - 'duplicates': This issue duplicates the related issue Args: issue_id (str): Source issue UUID related_issue_id (str): Target issue UUID relation_type (str): 'blocks', 'is_blocked_by', 'relates_to', 'duplicates' Returns: { "relation": {"id": "...", "type": "blocks", "from_issue": "...", "to_issue": "..."} }
LINEAR CUSTOM GET ISSUE ACTIVITY
LINEAR — GET ISSUE ACTIVITY Gets the change history for an issue including state changes, assignments, labels. Args: issue_id (str): Issue UUID issue_identifier (str): Issue identifier (e.g., 'ENG-123') limit (int): Maximum history entries (default: 10) Returns: { "issue": "ENG-123", "activity_count": 5, "activities": [ {"timestamp": "...", "actor": "John", "change_type": "state", "from": "Todo", "to": "In Progress"} ] }
LINEAR CUSTOM GET ACTIVE SPRINT
LINEAR — GET ACTIVE SPRINT Gets current/active cycle (sprint) context with progress and issues. Returns summary counts and limited issue samples per state. Args: team_id (str): Optional team filter. If None, returns for all teams. issues_per_state_limit (int): Max issues per state category (default: 3, max: 10) Returns: { "sprint_count": 2, "sprints": [ { "name": "Sprint 24", "team": "Engineering", "progress": 65.5, "total_issues": 12, "issues_by_state": {"started": 4, "completed": 6, ...}, "in_progress": [... limited ...], "todo": [... limited ...] } ] }
LINEAR CUSTOM BULK UPDATE ISSUES
LINEAR — BULK UPDATE ISSUES Batch updates multiple issues at once. Efficient for moving issues between cycles or projects. Args: issue_ids (List[str]): List of issue UUIDs to update state_id (str): New state ID priority (int): New priority (0-4) assignee_id (str): New assignee cycle_id (str): Cycle to add to (empty string to remove) project_id (str): Project to move to (empty string to remove) labels_to_add (List[str]): Label IDs to add labels_to_remove (List[str]): Label IDs to remove Returns: { "updated_count": 5, "updated_issues": [{"id": "...", "identifier": "ENG-123"}] }
LINEAR CUSTOM GET NOTIFICATIONS
LINEAR — GET NOTIFICATIONS Gets the current user's notifications/inbox. Args: include_read (bool): Include read notifications (default: False) limit (int): Maximum notifications (default: 20) Returns: { "count": 3, "notifications": [ {"type": "issueAssigned", "issue": {"identifier": "ENG-123", "title": "..."}, "actor": "John"} ] }
LINEAR CUSTOM GET WORKSPACE CONTEXT
LINEAR — GET WORKSPACE CONTEXT Gets full workspace context for session initialization. Use at the start of a conversation to understand the workspace. Returns: { "user": {"id": "...", "name": "...", "assigned_issue_count": 12}, "teams": [{"name": "Engineering", "key": "ENG", "active_cycle": "Sprint 24", "cycle_progress": 65.5}], "urgent_items": { "overdue": [...], "high_priority": [...], "sla_at_risk": [...] } }
LINEAR CUSTOM GATHER CONTEXT
Get Linear workspace context snapshot: current user, teams, and urgent items. Zero required parameters. Returns full workspace state for session initialization.
GAIA connects to Linear via MCP (Model Context Protocol) and exposes every action as a natural-language command. Tell GAIA what you want — it handles the rest, automatically.
Set up your Linear automation in three simple steps — no code required.
Connect Linear to GAIA
Open the GAIA Marketplace, find the Linear integration, and click "Add to your GAIA". Authorise access in under two minutes — no code, no configuration files.
Tell GAIA what to automate in plain English
Describe the task in your own words: "summarise my Linear activity every morning" or "notify me on Slack when a new developer event happens". GAIA understands context and intent.
GAIA handles it automatically, 24/7
GAIA runs your Linear automations in the background around the clock. No manual triggers, no scripts to maintain — just results delivered to you.
Everything you need to know about the GAIA Linear integration.
Linear is just one piece of the puzzle. GAIA integrates with 50+ tools across developer, communication, productivity, and more — letting you build cross-tool automations in plain English without writing a single line of code.
Browse all integrationsEvaluating your options? Compare GAIA vs Linear →