---
title: Linear
description: Interact with Linear issues, projects, and more
---

import { BlockInfoCard } from "@/components/ui/block-info-card"

<BlockInfoCard 
  type="linear"
  color="#5E6AD2"
/>

{/* MANUAL-CONTENT-START:intro */}
[Linear](https://linear.app) is a leading project management and issue tracking platform that helps teams plan, track, and manage their work effectively. As a modern project management tool, Linear has become increasingly popular among software development teams and project management professionals for its streamlined interface and powerful features.

Linear provides a comprehensive set of tools for managing complex projects through its flexible and customizable workflow system. With its robust API and integration capabilities, Linear enables teams to streamline their development processes and maintain clear visibility of project progress.

Key features of Linear include:

- Agile Project Management: Support for Scrum and Kanban methodologies with customizable boards and workflows
- Issue Tracking: Sophisticated tracking system for bugs, stories, epics, and tasks with detailed reporting
- Workflow Automation: Powerful automation rules to streamline repetitive tasks and processes
- Advanced Search: Complex filtering and reporting capabilities for efficient issue management

In Sim, the Linear integration allows your agents to seamlessly interact with your project management workflow. This creates opportunities for automated issue creation, updates, and tracking as part of your AI workflows. The integration enables agents to read existing issues and create new ones programmatically, facilitating automated project management tasks and ensuring that important information is properly tracked and documented. By connecting Sim with Linear, you can build intelligent agents that maintain project visibility while automating routine project management tasks, enhancing team productivity and ensuring consistent project tracking.
{/* MANUAL-CONTENT-END */}


## Usage Instructions

Integrate Linear into the workflow. Can manage issues, comments, projects, labels, workflow states, cycles, attachments, and more. Can also trigger workflows based on Linear webhook events.



## Tools

### `linear_read_issues`

Fetch and filter issues from Linear

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `teamId` | string | No | Linear team ID to filter by |
| `projectId` | string | No | Linear project ID to filter by |
| `assigneeId` | string | No | User ID to filter by assignee |
| `stateId` | string | No | Workflow state ID to filter by status |
| `priority` | number | No | Priority to filter by \(0=No priority, 1=Urgent, 2=High, 3=Normal, 4=Low\) |
| `labelIds` | array | No | Array of label IDs to filter by |
| `createdAfter` | string | No | Filter issues created after this date \(ISO 8601 format\) |
| `updatedAfter` | string | No | Filter issues updated after this date \(ISO 8601 format\) |
| `includeArchived` | boolean | No | Include archived issues \(default: false\) |
| `first` | number | No | Number of issues to return \(default: 50, max: 250\) |
| `after` | string | No | Pagination cursor for next page |
| `orderBy` | string | No | Sort order: "createdAt" or "updatedAt" \(default: "updatedAt"\) |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `issues` | array | Array of filtered issues from Linear |
|   ↳ `id` | string | Issue ID |
|   ↳ `title` | string | Issue title |
|   ↳ `description` | string | Issue description |
|   ↳ `priority` | number | Issue priority |
|   ↳ `estimate` | number | Issue estimate |
|   ↳ `url` | string | Issue URL |
|   ↳ `dueDate` | string | Due date \(YYYY-MM-DD\) |
|   ↳ `createdAt` | string | Creation timestamp |
|   ↳ `updatedAt` | string | Last update timestamp |
|   ↳ `state` | object | Issue state |
|   ↳ `assignee` | object | Assigned user |
|   ↳ `teamId` | string | Team ID |
|   ↳ `teamName` | string | Team name |
|   ↳ `projectId` | string | Project ID |
|   ↳ `projectName` | string | Project name |
|   ↳ `cycleId` | string | Cycle ID |
|   ↳ `cycleNumber` | number | Cycle number |
|   ↳ `cycleName` | string | Cycle name |
|   ↳ `labels` | array | Issue labels |
| `hasNextPage` | boolean | Whether there are more results available |
| `endCursor` | string | Cursor for fetching the next page \(use as  |

### `linear_get_issue`

Get a single issue by ID from Linear with full details

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `issueId` | string | Yes | Linear issue ID |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `issue` | object | The issue with full details |
| ↳ `id` | string | Issue ID |
| ↳ `title` | string | Issue title |
| ↳ `description` | string | Issue description |
| ↳ `priority` | number | Issue priority \(0-4\) |
| ↳ `estimate` | number | Issue estimate in points |
| ↳ `url` | string | Issue URL |
| ↳ `state` | object | Issue state/status |
| ↳ `assignee` | object | Assigned user |
| ↳ `labels` | array | Issue labels |
| ↳ `createdAt` | string | Creation timestamp |
| ↳ `updatedAt` | string | Last update timestamp |

### `linear_create_issue`

Create a new issue in Linear

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `teamId` | string | Yes | Linear team ID |
| `projectId` | string | No | Linear project ID |
| `title` | string | Yes | Issue title |
| `description` | string | No | Issue description |
| `stateId` | string | No | Workflow state ID \(status\) |
| `assigneeId` | string | No | User ID to assign the issue to |
| `priority` | number | No | Priority \(0=No priority, 1=Urgent, 2=High, 3=Normal, 4=Low\) |
| `estimate` | number | No | Estimate in points |
| `labelIds` | array | No | Array of label IDs to set on the issue |
| `cycleId` | string | No | Cycle ID to assign the issue to |
| `parentId` | string | No | Parent issue ID \(for creating sub-issues\) |
| `dueDate` | string | No | Due date in ISO 8601 format \(date only: YYYY-MM-DD\) |
| `subscriberIds` | array | No | Array of user IDs to subscribe to the issue |
| `projectMilestoneId` | string | No | Project milestone ID to associate with the issue |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `issue` | object | The created issue with all its properties |
| ↳ `id` | string | Issue ID |
| ↳ `title` | string | Issue title |
| ↳ `description` | string | Issue description |
| ↳ `priority` | number | Issue priority |
| ↳ `estimate` | number | Issue estimate |
| ↳ `url` | string | Issue URL |
| ↳ `dueDate` | string | Due date \(YYYY-MM-DD\) |
| ↳ `state` | object | Issue state |
| ↳ `assignee` | object | Assigned user |
| ↳ `teamId` | string | Team ID |
| ↳ `projectId` | string | Project ID |
| ↳ `cycleId` | string | Cycle ID |
| ↳ `cycleNumber` | number | Cycle number |
| ↳ `cycleName` | string | Cycle name |
| ↳ `parentId` | string | Parent issue ID |
| ↳ `parentTitle` | string | Parent issue title |
| ↳ `projectMilestoneId` | string | Project milestone ID |
| ↳ `projectMilestoneName` | string | Project milestone name |
| ↳ `labels` | array | Issue labels |

### `linear_update_issue`

Update an existing issue in Linear

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `issueId` | string | Yes | Linear issue ID to update |
| `title` | string | No | New issue title |
| `description` | string | No | New issue description |
| `stateId` | string | No | Workflow state ID \(status\) |
| `assigneeId` | string | No | User ID to assign the issue to |
| `priority` | number | No | Priority \(0=No priority, 1=Urgent, 2=High, 3=Normal, 4=Low\) |
| `estimate` | number | No | Estimate in points |
| `labelIds` | array | No | Array of label IDs to set on the issue \(replaces all existing labels\) |
| `projectId` | string | No | Project ID to move the issue to |
| `cycleId` | string | No | Cycle ID to assign the issue to |
| `parentId` | string | No | Parent issue ID \(for making this a sub-issue\) |
| `dueDate` | string | No | Due date in ISO 8601 format \(date only: YYYY-MM-DD\) |
| `addedLabelIds` | array | No | Array of label IDs to add to the issue \(without replacing existing labels\) |
| `removedLabelIds` | array | No | Array of label IDs to remove from the issue |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `issue` | object | The updated issue |
| ↳ `id` | string | Issue ID |
| ↳ `title` | string | Issue title |
| ↳ `description` | string | Issue description |
| ↳ `priority` | number | Issue priority |
| ↳ `estimate` | number | Issue estimate |
| ↳ `state` | object | Issue state |
| ↳ `assignee` | object | Assigned user |
| ↳ `labels` | array | Issue labels |
| ↳ `updatedAt` | string | Last update timestamp |
| ↳ `dueDate` | string | Due date \(YYYY-MM-DD\) |
| ↳ `projectId` | string | Project ID |
| ↳ `cycleId` | string | Cycle ID |
| ↳ `cycleNumber` | number | Cycle number |
| ↳ `cycleName` | string | Cycle name |
| ↳ `parentId` | string | Parent issue ID |
| ↳ `parentTitle` | string | Parent issue title |

### `linear_archive_issue`

Archive an issue in Linear

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `issueId` | string | Yes | Linear issue ID to archive |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `success` | boolean | Whether the archive operation was successful |
| `issueId` | string | The ID of the archived issue |

### `linear_unarchive_issue`

Unarchive (restore) an archived issue in Linear

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `issueId` | string | Yes | Linear issue ID to unarchive |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `success` | boolean | Whether the unarchive operation was successful |
| `issueId` | string | The ID of the unarchived issue |

### `linear_delete_issue`

Delete (trash) an issue in Linear

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `issueId` | string | Yes | Linear issue ID to delete |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `success` | boolean | Whether the delete operation was successful |

### `linear_search_issues`

Search for issues in Linear using full-text search

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `query` | string | Yes | Search query string |
| `teamId` | string | No | Filter by team ID |
| `includeArchived` | boolean | No | Include archived issues in search results |
| `first` | number | No | Number of results to return \(default: 50\) |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `issues` | array | Array of matching issues |
|   ↳ `id` | string | Issue ID |
|   ↳ `title` | string | Issue title |
|   ↳ `description` | string | Issue description |
|   ↳ `priority` | number | Issue priority |
|   ↳ `state` | object | Issue state |
|   ↳ `assignee` | object | Assigned user |
|   ↳ `labels` | array | Issue labels |
| `pageInfo` | object | Pagination information |
| ↳ `hasNextPage` | boolean | Whether there are more results |
| ↳ `endCursor` | string | Cursor for next page |

### `linear_add_label_to_issue`

Add a label to an issue in Linear

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `issueId` | string | Yes | Linear issue ID |
| `labelId` | string | Yes | Label ID to add to the issue |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `success` | boolean | Whether the label was successfully added |
| `issueId` | string | The ID of the issue |

### `linear_remove_label_from_issue`

Remove a label from an issue in Linear

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `issueId` | string | Yes | Linear issue ID |
| `labelId` | string | Yes | Label ID to remove from the issue |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `success` | boolean | Whether the label was successfully removed |
| `issueId` | string | The ID of the issue |

### `linear_create_comment`

Add a comment to an issue in Linear

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `issueId` | string | Yes | Linear issue ID to comment on |
| `body` | string | Yes | Comment text \(supports Markdown\) |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `comment` | object | The created comment |
| ↳ `id` | string | Comment ID |
| ↳ `body` | string | Comment text |
| ↳ `createdAt` | string | Creation timestamp |
| ↳ `user` | object | User who created the comment |
| ↳ `issue` | object | Associated issue |

### `linear_update_comment`

Edit a comment in Linear

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `commentId` | string | Yes | Comment ID to update |
| `body` | string | No | New comment text \(supports Markdown\) |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `comment` | object | The updated comment |
| ↳ `id` | string | Comment ID |
| ↳ `body` | string | Comment text |
| ↳ `updatedAt` | string | Last update timestamp |
| ↳ `user` | object | User who created the comment |

### `linear_delete_comment`

Delete a comment from Linear

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `commentId` | string | Yes | Comment ID to delete |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `success` | boolean | Whether the delete operation was successful |

### `linear_list_comments`

List all comments on an issue in Linear

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `issueId` | string | Yes | Linear issue ID |
| `first` | number | No | Number of comments to return \(default: 50\) |
| `after` | string | No | Cursor for pagination |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `comments` | array | Array of comments on the issue |
|   ↳ `id` | string | Comment ID |
|   ↳ `body` | string | Comment text |
|   ↳ `createdAt` | string | Creation timestamp |
|   ↳ `updatedAt` | string | Last update timestamp |
|   ↳ `user` | object | User who created the comment |
| `pageInfo` | object | Pagination information |
| ↳ `hasNextPage` | boolean | Whether there are more results |
| ↳ `endCursor` | string | Cursor for next page |

### `linear_list_projects`

List projects in Linear with optional filtering

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `teamId` | string | No | Filter by team ID |
| `includeArchived` | boolean | No | Include archived projects |
| `first` | number | No | Number of projects to return \(default: 50\) |
| `after` | string | No | Cursor for pagination |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `projects` | array | Array of projects |
|   ↳ `id` | string | Project ID |
|   ↳ `name` | string | Project name |
|   ↳ `description` | string | Project description |
|   ↳ `state` | string | Project state |
|   ↳ `priority` | number | Project priority |
|   ↳ `lead` | object | Project lead |
|   ↳ `teams` | array | Teams associated with project |
| `pageInfo` | object | Pagination information |

### `linear_get_project`

Get a single project by ID from Linear

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `projectId` | string | Yes | Linear project ID |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `project` | object | The project with full details |
| ↳ `id` | string | Project ID |
| ↳ `name` | string | Project name |
| ↳ `description` | string | Project description |
| ↳ `state` | string | Project state |
| ↳ `priority` | number | Project priority |
| ↳ `startDate` | string | Start date |
| ↳ `targetDate` | string | Target completion date |
| ↳ `lead` | object | Project lead |
| ↳ `teams` | array | Associated teams |

### `linear_create_project`

Create a new project in Linear

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `teamId` | string | Yes | Team ID to create the project in |
| `name` | string | Yes | Project name |
| `description` | string | No | Project description |
| `leadId` | string | No | User ID of the project lead |
| `startDate` | string | No | Project start date \(ISO format\) |
| `targetDate` | string | No | Project target date \(ISO format\) |
| `priority` | number | No | Project priority \(0-4\) |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `project` | object | The created project |
| ↳ `id` | string | Project ID |
| ↳ `name` | string | Project name |
| ↳ `description` | string | Project description |
| ↳ `state` | string | Project state |
| ↳ `priority` | number | Project priority |
| ↳ `lead` | object | Project lead |
| ↳ `teams` | array | Associated teams |

### `linear_update_project`

Update an existing project in Linear

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `projectId` | string | Yes | Project ID to update |
| `name` | string | No | New project name |
| `description` | string | No | New project description |
| `state` | string | No | Project state \(planned, started, completed, canceled\) |
| `leadId` | string | No | User ID of the project lead |
| `startDate` | string | No | Project start date \(ISO format: YYYY-MM-DD\) |
| `targetDate` | string | No | Project target date \(ISO format: YYYY-MM-DD\) |
| `priority` | number | No | Project priority \(0=No priority, 1=Urgent, 2=High, 3=Normal, 4=Low\) |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `project` | object | The updated project |
| ↳ `id` | string | Project ID |
| ↳ `name` | string | Project name |
| ↳ `description` | string | Project description |
| ↳ `state` | string | Project state |
| ↳ `priority` | number | Project priority |
| ↳ `startDate` | string | Project start date |
| ↳ `targetDate` | string | Project target date |
| ↳ `lead` | object | Project lead |
| ↳ `teams` | array | Associated teams |

### `linear_archive_project`

Archive a project in Linear

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `projectId` | string | Yes | Project ID to archive |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `success` | boolean | Whether the archive operation was successful |
| `projectId` | string | The ID of the archived project |

### `linear_list_users`

List all users in the Linear workspace

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `includeDisabled` | boolean | No | Include disabled/inactive users |
| `first` | number | No | Number of users to return \(default: 50\) |
| `after` | string | No | Cursor for pagination |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `users` | array | Array of workspace users |
|   ↳ `id` | string | User ID |
|   ↳ `name` | string | User name |
|   ↳ `email` | string | User email |
|   ↳ `displayName` | string | Display name |
|   ↳ `active` | boolean | Whether user is active |
|   ↳ `admin` | boolean | Whether user is admin |
|   ↳ `avatarUrl` | string | Avatar URL |
| `pageInfo` | object | Pagination information |

### `linear_list_teams`

List all teams in the Linear workspace

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `first` | number | No | Number of teams to return \(default: 50\) |
| `after` | string | No | Cursor for pagination |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `teams` | array | Array of teams |
|   ↳ `id` | string | Team ID |
|   ↳ `name` | string | Team name |
|   ↳ `key` | string | Team key \(used in issue identifiers\) |
|   ↳ `description` | string | Team description |
| `pageInfo` | object | Pagination information |

### `linear_get_viewer`

Get the currently authenticated user (viewer) information

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `user` | object | The currently authenticated user |
| ↳ `id` | string | User ID |
| ↳ `name` | string | User name |
| ↳ `email` | string | User email |
| ↳ `displayName` | string | Display name |
| ↳ `active` | boolean | Whether user is active |
| ↳ `admin` | boolean | Whether user is admin |
| ↳ `avatarUrl` | string | Avatar URL |

### `linear_list_labels`

List all labels in Linear workspace or team

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `teamId` | string | No | Filter by team ID |
| `first` | number | No | Number of labels to return \(default: 50\) |
| `after` | string | No | Cursor for pagination |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `labels` | array | Array of labels |
|   ↳ `id` | string | Label ID |
|   ↳ `name` | string | Label name |
|   ↳ `color` | string | Label color \(hex\) |
|   ↳ `description` | string | Label description |
|   ↳ `team` | object | Team this label belongs to |
| `pageInfo` | object | Pagination information |

### `linear_create_label`

Create a new label in Linear

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `name` | string | Yes | Label name |
| `color` | string | No | Label color \(hex format, e.g., "#ff0000"\) |
| `description` | string | No | Label description |
| `teamId` | string | No | Team ID \(if omitted, creates workspace label\) |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `label` | object | The created label |
| ↳ `id` | string | Label ID |
| ↳ `name` | string | Label name |
| ↳ `color` | string | Label color |
| ↳ `description` | string | Label description |
| ↳ `team` | object | Team this label belongs to |

### `linear_update_label`

Update an existing label in Linear

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `labelId` | string | Yes | Label ID to update |
| `name` | string | No | New label name |
| `color` | string | No | New label color \(hex format\) |
| `description` | string | No | New label description |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `label` | object | The updated label |
| ↳ `id` | string | Label ID |
| ↳ `name` | string | Label name |
| ↳ `color` | string | Label color |
| ↳ `description` | string | Label description |

### `linear_archive_label`

Archive a label in Linear

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `labelId` | string | Yes | Label ID to archive |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `success` | boolean | Whether the archive operation was successful |
| `labelId` | string | The ID of the archived label |

### `linear_list_workflow_states`

List all workflow states (statuses) in Linear

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `teamId` | string | No | Filter by team ID |
| `first` | number | No | Number of states to return \(default: 50\) |
| `after` | string | No | Cursor for pagination |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `states` | array | Array of workflow states |
|   ↳ `id` | string | State ID |
|   ↳ `name` | string | State name \(e.g.,  |
|   ↳ `type` | string | State type \(e.g.,  |
|   ↳ `color` | string | State color |
|   ↳ `position` | number | State position in workflow |
|   ↳ `team` | object | Team this state belongs to |
| `pageInfo` | object | Pagination information |

### `linear_create_workflow_state`

Create a new workflow state (status) in Linear

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `teamId` | string | Yes | Team ID to create the state in |
| `name` | string | Yes | State name \(e.g., "In Review"\) |
| `color` | string | No | State color \(hex format\) |
| `type` | string | Yes | State type: "backlog", "unstarted", "started", "completed", or "canceled" |
| `description` | string | No | State description |
| `position` | number | No | Position in the workflow |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `state` | object | The created workflow state |
| ↳ `id` | string | State ID |
| ↳ `name` | string | State name |
| ↳ `type` | string | State type |
| ↳ `color` | string | State color |
| ↳ `position` | number | State position |
| ↳ `team` | object | Team this state belongs to |

### `linear_update_workflow_state`

Update an existing workflow state in Linear

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `stateId` | string | Yes | Workflow state ID to update |
| `name` | string | No | New state name |
| `color` | string | No | New state color \(hex format\) |
| `description` | string | No | New state description |
| `position` | number | No | New position in workflow |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `state` | object | The updated workflow state |
| ↳ `id` | string | State ID |
| ↳ `name` | string | State name |
| ↳ `type` | string | State type |
| ↳ `color` | string | State color |
| ↳ `position` | number | State position |

### `linear_list_cycles`

List cycles (sprints/iterations) in Linear

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `teamId` | string | No | Filter by team ID |
| `first` | number | No | Number of cycles to return \(default: 50\) |
| `after` | string | No | Cursor for pagination |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `cycles` | array | Array of cycles |
|   ↳ `id` | string | Cycle ID |
|   ↳ `number` | number | Cycle number |
|   ↳ `name` | string | Cycle name |
|   ↳ `startsAt` | string | Start date |
|   ↳ `endsAt` | string | End date |
|   ↳ `completedAt` | string | Completion date |
|   ↳ `progress` | number | Progress percentage \(0-1\) |
|   ↳ `team` | object | Team this cycle belongs to |
| `pageInfo` | object | Pagination information |

### `linear_get_cycle`

Get a single cycle by ID from Linear

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `cycleId` | string | Yes | Cycle ID |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `cycle` | object | The cycle with full details |
| ↳ `id` | string | Cycle ID |
| ↳ `number` | number | Cycle number |
| ↳ `name` | string | Cycle name |
| ↳ `startsAt` | string | Start date |
| ↳ `endsAt` | string | End date |
| ↳ `progress` | number | Progress percentage |
| ↳ `team` | object | Team this cycle belongs to |

### `linear_create_cycle`

Create a new cycle (sprint/iteration) in Linear

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `teamId` | string | Yes | Team ID to create the cycle in |
| `startsAt` | string | Yes | Cycle start date \(ISO format\) |
| `endsAt` | string | Yes | Cycle end date \(ISO format\) |
| `name` | string | No | Cycle name \(optional, will be auto-generated if not provided\) |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `cycle` | object | The created cycle |
| ↳ `id` | string | Cycle ID |
| ↳ `number` | number | Cycle number |
| ↳ `name` | string | Cycle name |
| ↳ `startsAt` | string | Start date |
| ↳ `endsAt` | string | End date |
| ↳ `team` | object | Team this cycle belongs to |

### `linear_get_active_cycle`

Get the currently active cycle for a team

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `teamId` | string | Yes | Team ID |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `cycle` | object | The active cycle \(null if no active cycle\) |
| ↳ `id` | string | Cycle ID |
| ↳ `number` | number | Cycle number |
| ↳ `name` | string | Cycle name |
| ↳ `startsAt` | string | Start date |
| ↳ `endsAt` | string | End date |
| ↳ `progress` | number | Progress percentage |
| ↳ `team` | object | Team this cycle belongs to |

### `linear_create_attachment`

Add an attachment to an issue in Linear

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `issueId` | string | Yes | Issue ID to attach to |
| `url` | string | Yes | URL of the attachment |
| `title` | string | Yes | Attachment title |
| `subtitle` | string | No | Attachment subtitle/description |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `attachment` | object | The created attachment |
| ↳ `id` | string | Attachment ID |
| ↳ `title` | string | Attachment title |
| ↳ `subtitle` | string | Attachment subtitle |
| ↳ `url` | string | Attachment URL |
| ↳ `createdAt` | string | Creation timestamp |

### `linear_list_attachments`

List all attachments on an issue in Linear

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `issueId` | string | Yes | Issue ID |
| `first` | number | No | Number of attachments to return \(default: 50\) |
| `after` | string | No | Cursor for pagination |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `attachments` | array | Array of attachments |
|   ↳ `id` | string | Attachment ID |
|   ↳ `title` | string | Attachment title |
|   ↳ `subtitle` | string | Attachment subtitle |
|   ↳ `url` | string | Attachment URL |
|   ↳ `createdAt` | string | Creation timestamp |
| `pageInfo` | object | Pagination information |

### `linear_update_attachment`

Update an attachment metadata in Linear

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `attachmentId` | string | Yes | Attachment ID to update |
| `title` | string | Yes | New attachment title |
| `subtitle` | string | No | New attachment subtitle |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `attachment` | object | The updated attachment |
| ↳ `id` | string | Attachment ID |
| ↳ `title` | string | Attachment title |
| ↳ `subtitle` | string | Attachment subtitle |
| ↳ `url` | string | Attachment URL |
| ↳ `updatedAt` | string | Last update timestamp |

### `linear_delete_attachment`

Delete an attachment from Linear

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `attachmentId` | string | Yes | Attachment ID to delete |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `success` | boolean | Whether the delete operation was successful |

### `linear_create_issue_relation`

Link two issues together in Linear (blocks, relates to, duplicates)

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `issueId` | string | Yes | Source issue ID |
| `relatedIssueId` | string | Yes | Target issue ID to link to |
| `type` | string | Yes | Relation type: "blocks", "duplicate", or "related". Note: When creating "blocks" from A to B, the inverse relation \(B blocked by A\) is automatically created. |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `relation` | object | The created issue relation |
| ↳ `id` | string | Relation ID |
| ↳ `type` | string | Relation type |
| ↳ `issue` | object | Source issue |
| ↳ `relatedIssue` | object | Target issue |

### `linear_list_issue_relations`

List all relations (dependencies) for an issue in Linear

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `issueId` | string | Yes | Issue ID |
| `first` | number | No | Number of relations to return \(default: 50\) |
| `after` | string | No | Cursor for pagination |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `relations` | array | Array of issue relations |
|   ↳ `id` | string | Relation ID |
|   ↳ `type` | string | Relation type |
|   ↳ `issue` | object | Source issue |
|   ↳ `relatedIssue` | object | Target issue |
| `pageInfo` | object | Pagination information |

### `linear_delete_issue_relation`

Remove a relation between two issues in Linear

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `relationId` | string | Yes | Relation ID to delete |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `success` | boolean | Whether the delete operation was successful |

### `linear_create_favorite`

Bookmark an issue, project, cycle, or label in Linear

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `issueId` | string | No | Issue ID to favorite |
| `projectId` | string | No | Project ID to favorite |
| `cycleId` | string | No | Cycle ID to favorite |
| `labelId` | string | No | Label ID to favorite |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `favorite` | object | The created favorite |
| ↳ `id` | string | Favorite ID |
| ↳ `type` | string | Favorite type |
| ↳ `issue` | object | Favorited issue \(if applicable\) |
| ↳ `project` | object | Favorited project \(if applicable\) |
| ↳ `cycle` | object | Favorited cycle \(if applicable\) |

### `linear_list_favorites`

List all bookmarked items for the current user in Linear

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `first` | number | No | Number of favorites to return \(default: 50\) |
| `after` | string | No | Cursor for pagination |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `favorites` | array | Array of favorited items |
|   ↳ `id` | string | Favorite ID |
|   ↳ `type` | string | Favorite type |
|   ↳ `issue` | object | Favorited issue |
|   ↳ `project` | object | Favorited project |
|   ↳ `cycle` | object | Favorited cycle |
| `pageInfo` | object | Pagination information |

### `linear_create_project_update`

Post a status update for a project in Linear

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `projectId` | string | Yes | Project ID to post update for |
| `body` | string | Yes | Update message \(supports Markdown\) |
| `health` | string | No | Project health: "onTrack", "atRisk", or "offTrack" |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `update` | object | The created project update |
| ↳ `id` | string | Update ID |
| ↳ `body` | string | Update message |
| ↳ `health` | string | Project health status |
| ↳ `createdAt` | string | Creation timestamp |
| ↳ `user` | object | User who created the update |

### `linear_list_project_updates`

List all status updates for a project in Linear

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `projectId` | string | Yes | Project ID |
| `first` | number | No | Number of updates to return \(default: 50\) |
| `after` | string | No | Cursor for pagination |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `updates` | array | Array of project updates |
|   ↳ `id` | string | Update ID |
|   ↳ `body` | string | Update message |
|   ↳ `health` | string | Project health |
|   ↳ `createdAt` | string | Creation timestamp |
|   ↳ `user` | object | User who created the update |
| `pageInfo` | object | Pagination information |

### `linear_list_notifications`

List notifications for the current user in Linear

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `first` | number | No | Number of notifications to return \(default: 50\) |
| `after` | string | No | Cursor for pagination |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `notifications` | array | Array of notifications |
|   ↳ `id` | string | Notification ID |
|   ↳ `type` | string | Notification type |
|   ↳ `createdAt` | string | Creation timestamp |
|   ↳ `readAt` | string | Read timestamp \(null if unread\) |
|   ↳ `issue` | object | Related issue |
| `pageInfo` | object | Pagination information |

### `linear_update_notification`

Mark a notification as read or unread in Linear

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `notificationId` | string | Yes | Notification ID to update |
| `readAt` | string | No | Timestamp to mark as read \(ISO format\). Pass null or omit to mark as unread |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `notification` | object | The updated notification |
| ↳ `id` | string | Notification ID |
| ↳ `type` | string | Notification type |
| ↳ `createdAt` | string | Creation timestamp |
| ↳ `readAt` | string | Read timestamp |
| ↳ `issue` | object | Related issue |

### `linear_create_customer`

Create a new customer in Linear

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `name` | string | Yes | Customer name |
| `domains` | array | No | Domains associated with this customer |
| `externalIds` | array | No | External IDs from other systems |
| `logoUrl` | string | No | Customer's logo URL |
| `ownerId` | string | No | ID of the user who owns this customer |
| `revenue` | number | No | Annual revenue from this customer |
| `size` | number | No | Size of the customer organization |
| `statusId` | string | No | Customer status ID |
| `tierId` | string | No | Customer tier ID |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `customer` | object | The created customer |
| ↳ `id` | string | Customer ID |
| ↳ `name` | string | Customer name |
| ↳ `domains` | array | Associated domains |
| ↳ `externalIds` | array | External IDs |
| ↳ `logoUrl` | string | Logo URL |
| ↳ `approximateNeedCount` | number | Number of customer needs |
| ↳ `createdAt` | string | Creation timestamp |
| ↳ `archivedAt` | string | Archive timestamp \(null if not archived\) |

### `linear_list_customers`

List all customers in Linear

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `first` | number | No | Number of customers to return \(default: 50\) |
| `after` | string | No | Cursor for pagination |
| `includeArchived` | boolean | No | Include archived customers \(default: false\) |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `customers` | array | Array of customers |
|   ↳ `id` | string | Customer ID |
|   ↳ `name` | string | Customer name |
|   ↳ `domains` | array | Associated domains |
|   ↳ `externalIds` | array | External IDs |
|   ↳ `logoUrl` | string | Logo URL |
|   ↳ `approximateNeedCount` | number | Number of customer needs |
|   ↳ `createdAt` | string | Creation timestamp |
|   ↳ `archivedAt` | string | Archive timestamp \(null if not archived\) |
| `pageInfo` | object | Pagination information |

### `linear_create_customer_request`

Create a customer request (need) in Linear. Assign to customer, set urgency (priority: 0 = Not important, 1 = Important), and optionally link to an issue.

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `customerId` | string | Yes | Customer ID to assign this request to |
| `body` | string | No | Description of the customer request |
| `priority` | number | No | Urgency level: 0 = Not important, 1 = Important \(default: 0\) |
| `issueId` | string | No | Issue ID to link this request to |
| `projectId` | string | No | Project ID to link this request to |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `customerNeed` | object | The created customer request |
| ↳ `id` | string | Customer request ID |
| ↳ `body` | string | Request description |
| ↳ `priority` | number | Urgency level \(0 = Not important, 1 = Important\) |
| ↳ `createdAt` | string | Creation timestamp |
| ↳ `updatedAt` | string | Last update timestamp |
| ↳ `archivedAt` | string | Archive timestamp \(null if not archived\) |
| ↳ `customer` | object | Assigned customer |
| ↳ `issue` | object | Linked issue \(null if not linked\) |
| ↳ `project` | object | Linked project \(null if not linked\) |
| ↳ `creator` | object | User who created the request |
| ↳ `url` | string | URL to the customer request |

### `linear_update_customer_request`

Update a customer request (need) in Linear. Can change urgency, description, customer assignment, and linked issue.

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `customerNeedId` | string | Yes | Customer request ID to update |
| `body` | string | No | Updated description of the customer request |
| `priority` | number | No | Updated urgency level: 0 = Not important, 1 = Important |
| `customerId` | string | No | New customer ID to assign this request to |
| `issueId` | string | No | New issue ID to link this request to |
| `projectId` | string | No | New project ID to link this request to |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `customerNeed` | object | The updated customer request |
| ↳ `id` | string | Customer request ID |
| ↳ `body` | string | Request description |
| ↳ `priority` | number | Urgency level \(0 = Not important, 1 = Important\) |
| ↳ `createdAt` | string | Creation timestamp |
| ↳ `updatedAt` | string | Last update timestamp |
| ↳ `archivedAt` | string | Archive timestamp \(null if not archived\) |
| ↳ `customer` | object | Assigned customer |
| ↳ `issue` | object | Linked issue \(null if not linked\) |
| ↳ `project` | object | Linked project \(null if not linked\) |
| ↳ `creator` | object | User who created the request |
| ↳ `url` | string | URL to the customer request |

### `linear_list_customer_requests`

List all customer requests (needs) in Linear

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `first` | number | No | Number of customer requests to return \(default: 50\) |
| `after` | string | No | Cursor for pagination |
| `includeArchived` | boolean | No | Include archived customer requests \(default: false\) |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `customerNeeds` | array | Array of customer requests |
|   ↳ `id` | string | Customer request ID |
|   ↳ `body` | string | Request description |
|   ↳ `priority` | number | Urgency level \(0 = Not important, 1 = Important\) |
|   ↳ `createdAt` | string | Creation timestamp |
|   ↳ `updatedAt` | string | Last update timestamp |
|   ↳ `archivedAt` | string | Archive timestamp \(null if not archived\) |
|   ↳ `customer` | object | Assigned customer |
|   ↳ `issue` | object | Linked issue \(null if not linked\) |
|   ↳ `project` | object | Linked project \(null if not linked\) |
|   ↳ `creator` | object | User who created the request |
|   ↳ `url` | string | URL to the customer request |
| `pageInfo` | object | Pagination information |

### `linear_get_customer`

Get a single customer by ID in Linear

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `customerId` | string | Yes | Customer ID to retrieve |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `customer` | object | The customer data |
| ↳ `id` | string | Customer ID |
| ↳ `name` | string | Customer name |
| ↳ `domains` | array | Associated domains |
| ↳ `externalIds` | array | External IDs |
| ↳ `logoUrl` | string | Logo URL |
| ↳ `approximateNeedCount` | number | Number of customer needs |
| ↳ `createdAt` | string | Creation timestamp |
| ↳ `archivedAt` | string | Archive timestamp \(null if not archived\) |

### `linear_update_customer`

Update a customer in Linear

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `customerId` | string | Yes | Customer ID to update |
| `name` | string | No | Updated customer name |
| `domains` | array | No | Updated domains |
| `externalIds` | array | No | Updated external IDs |
| `logoUrl` | string | No | Updated logo URL |
| `ownerId` | string | No | Updated owner user ID |
| `revenue` | number | No | Updated annual revenue |
| `size` | number | No | Updated organization size |
| `statusId` | string | No | Updated customer status ID |
| `tierId` | string | No | Updated customer tier ID |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `customer` | object | The updated customer |

### `linear_delete_customer`

Delete a customer in Linear

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `customerId` | string | Yes | Customer ID to delete |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `success` | boolean | Whether the deletion was successful |

### `linear_merge_customers`

Merge two customers in Linear by moving all data from source to target

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `sourceCustomerId` | string | Yes | Source customer ID \(will be deleted after merge\) |
| `targetCustomerId` | string | Yes | Target customer ID \(will receive all data\) |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `customer` | object | The merged target customer |

### `linear_create_customer_status`

Create a new customer status in Linear

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `name` | string | Yes | Customer status name |
| `color` | string | Yes | Status color \(hex code\) |
| `displayName` | string | No | Display name for the status |
| `description` | string | No | Status description |
| `position` | number | No | Position in status list |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `customerStatus` | object | The created customer status |

### `linear_update_customer_status`

Update a customer status in Linear

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `statusId` | string | Yes | Customer status ID to update |
| `name` | string | No | Updated status name |
| `color` | string | No | Updated status color |
| `displayName` | string | No | Updated display name |
| `description` | string | No | Updated description |
| `position` | number | No | Updated position |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `customerStatus` | object | The updated customer status |

### `linear_delete_customer_status`

Delete a customer status in Linear

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `statusId` | string | Yes | Customer status ID to delete |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `success` | boolean | Whether the deletion was successful |

### `linear_list_customer_statuses`

List all customer statuses in Linear

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `customerStatuses` | array | List of customer statuses |

### `linear_create_customer_tier`

Create a new customer tier in Linear

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `name` | string | Yes | Customer tier name |
| `color` | string | Yes | Tier color \(hex code\) |
| `displayName` | string | No | Display name for the tier |
| `description` | string | No | Tier description |
| `position` | number | No | Position in tier list |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `customerTier` | object | The created customer tier |

### `linear_update_customer_tier`

Update a customer tier in Linear

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `tierId` | string | Yes | Customer tier ID to update |
| `name` | string | No | Updated tier name |
| `color` | string | No | Updated tier color |
| `displayName` | string | No | Updated display name |
| `description` | string | No | Updated description |
| `position` | number | No | Updated position |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `customerTier` | object | The updated customer tier |

### `linear_delete_customer_tier`

Delete a customer tier in Linear

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `tierId` | string | Yes | Customer tier ID to delete |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `success` | boolean | Whether the deletion was successful |

### `linear_list_customer_tiers`

List all customer tiers in Linear

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `customerTiers` | array | List of customer tiers |

### `linear_delete_project`

Delete a project in Linear

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `projectId` | string | Yes | Project ID to delete |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `success` | boolean | Whether the deletion was successful |

### `linear_create_project_label`

Create a new project label in Linear

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `name` | string | Yes | Project label name |
| `color` | string | No | Label color \(hex code\) |
| `description` | string | No | Label description |
| `isGroup` | boolean | No | Whether this is a label group |
| `parentId` | string | No | Parent label group ID |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `projectLabel` | object | The created project label |

### `linear_update_project_label`

Update a project label in Linear

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `labelId` | string | Yes | Project label ID to update |
| `name` | string | No | Updated label name |
| `color` | string | No | Updated label color |
| `description` | string | No | Updated description |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `projectLabel` | object | The updated project label |

### `linear_delete_project_label`

Delete a project label in Linear

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `labelId` | string | Yes | Project label ID to delete |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `success` | boolean | Whether the deletion was successful |

### `linear_list_project_labels`

List all project labels in Linear

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `projectId` | string | No | Optional project ID to filter labels for a specific project |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `projectLabels` | array | List of project labels |

### `linear_add_label_to_project`

Add a label to a project in Linear

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `projectId` | string | Yes | Project ID |
| `labelId` | string | Yes | Label ID to add |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `success` | boolean | Whether the label was added successfully |
| `projectId` | string | The project ID |

### `linear_remove_label_from_project`

Remove a label from a project in Linear

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `projectId` | string | Yes | Project ID |
| `labelId` | string | Yes | Label ID to remove |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `success` | boolean | Whether the label was removed successfully |
| `projectId` | string | The project ID |

### `linear_create_project_milestone`

Create a new project milestone in Linear

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `projectId` | string | Yes | Project ID |
| `name` | string | Yes | Milestone name |
| `description` | string | No | Milestone description |
| `targetDate` | string | No | Target date \(ISO 8601\) |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `projectMilestone` | object | The created project milestone |

### `linear_update_project_milestone`

Update a project milestone in Linear

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `milestoneId` | string | Yes | Project milestone ID to update |
| `name` | string | No | Updated milestone name |
| `description` | string | No | Updated description |
| `targetDate` | string | No | Updated target date \(ISO 8601\) |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `projectMilestone` | object | The updated project milestone |

### `linear_delete_project_milestone`

Delete a project milestone in Linear

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `milestoneId` | string | Yes | Project milestone ID to delete |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `success` | boolean | Whether the deletion was successful |

### `linear_list_project_milestones`

List all milestones for a project in Linear

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `projectId` | string | Yes | Project ID to list milestones for |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `projectMilestones` | array | List of project milestones |

### `linear_create_project_status`

Create a new project status in Linear

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `name` | string | Yes | Project status name |
| `type` | string | Yes | Status type: "backlog", "planned", "started", "paused", "completed", or "canceled" |
| `color` | string | Yes | Status color \(hex code\) |
| `position` | number | Yes | Position in status list \(e.g. 0, 1, 2...\) |
| `description` | string | No | Status description |
| `indefinite` | boolean | No | Whether the status is indefinite |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `projectStatus` | object | The created project status |

### `linear_update_project_status`

Update a project status in Linear

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `statusId` | string | Yes | Project status ID to update |
| `name` | string | No | Updated status name |
| `color` | string | No | Updated status color |
| `description` | string | No | Updated description |
| `indefinite` | boolean | No | Updated indefinite flag |
| `position` | number | No | Updated position |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `projectStatus` | object | The updated project status |

### `linear_delete_project_status`

Delete a project status in Linear

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `statusId` | string | Yes | Project status ID to delete |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `success` | boolean | Whether the deletion was successful |

### `linear_list_project_statuses`

List all project statuses in Linear

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `projectStatuses` | array | List of project statuses |


