---
title: Linear
description: 与 Linear 的问题、项目等进行交互
---

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

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

{/* MANUAL-CONTENT-START:intro */}
[Linear](https://linear.app) 是一个领先的项目管理和问题跟踪平台，帮助团队高效地规划、跟踪和管理工作。作为一款现代化的项目管理工具，Linear 因其简洁的界面和强大的功能，越来越受到软件开发团队和项目管理专业人士的欢迎。

Linear 提供了一套全面的工具，通过灵活且可定制的工作流系统来管理复杂项目。凭借其强大的 API 和集成能力，Linear 能够帮助团队简化开发流程，并清晰地掌握项目进展。

Linear 的主要功能包括：

- 敏捷项目管理：支持 Scrum 和 Kanban 方法论，提供可定制的看板和工作流
- 问题跟踪：高级跟踪系统，用于管理错误、用户故事、史诗和任务，并提供详细报告
- 工作流自动化：强大的自动化规则，用于简化重复性任务和流程
- 高级搜索：复杂的过滤和报告功能，便于高效管理问题

在 Sim 中，Linear 集成允许您的代理无缝地与项目管理工作流交互。这为自动化问题创建、更新和跟踪提供了可能性，成为 AI 工作流的一部分。该集成使代理能够以编程方式读取现有问题并创建新问题，从而促进自动化项目管理任务，确保重要信息得到妥善跟踪和记录。通过将 Sim 与 Linear 连接，您可以构建智能代理，在自动化日常项目管理任务的同时保持项目的可见性，提高团队生产力并确保一致的项目跟踪。
{/* MANUAL-CONTENT-END */}

## 使用说明

将 Linear 集成到工作流程中。可以管理问题、评论、项目、标签、工作流状态、周期、附件等。还可以基于 Linear 的 webhook 事件触发工作流。

## 工具

### `linear_read_issues`

从 Linear 获取并筛选问题

#### 输入

| 参数 | 类型 | 必需 | 描述 |
| --------- | ---- | -------- | ----------- |
| `teamId` | string | 否 | 按 Linear 团队 ID 筛选 |
| `projectId` | string | 否 | 按 Linear 项目 ID 筛选 |
| `assigneeId` | string | 否 | 按分配的用户 ID 筛选 |
| `stateId` | string | 否 | 按工作流状态 ID 筛选（状态）|
| `priority` | number | 否 | 按优先级筛选（0=无优先级，1=紧急，2=高，3=正常，4=低）|
| `labelIds` | array | 否 | 按标签 ID 数组筛选 |
| `createdAfter` | string | 否 | 筛选创建日期晚于此日期的问题（ISO 8601 格式）|
| `updatedAfter` | string | 否 | 筛选更新日期晚于此日期的问题（ISO 8601 格式）|
| `includeArchived` | boolean | 否 | 包括已归档的问题（默认值：false）|
| `first` | number | 否 | 返回的问题数量（默认值：50，最大值：250）|
| `after` | string | 否 | 下一页的分页游标 |
| `orderBy` | string | 否 | 排序顺序："createdAt" 或 "updatedAt"（默认值："updatedAt"）|

#### 输出

| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `issues` | array | 从 Linear 筛选的问题数组 |

### `linear_get_issue`

通过 ID 从 Linear 获取单个问题的完整详细信息

#### 输入

| 参数 | 类型 | 必需 | 描述 |
| --------- | ---- | -------- | ----------- |
| `issueId` | string | 是 | Linear 问题 ID |

#### 输出

| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `issue` | object | 包含完整详细信息的问题 |

### `linear_create_issue`

在 Linear 中创建一个新问题

#### 输入

| 参数 | 类型 | 必需 | 描述 |
| --------- | ---- | -------- | ----------- |
| `teamId` | string | 是 | Linear 团队 ID |
| `projectId` | string | 否 | Linear 项目 ID |
| `title` | string | 是 | 问题标题 |
| `description` | string | 否 | 问题描述 |
| `stateId` | string | 否 | 工作流状态 ID（状态）|
| `assigneeId` | string | 否 | 要分配问题的用户 ID |
| `priority` | number | 否 | 优先级（0=无优先级，1=紧急，2=高，3=正常，4=低）|
| `estimate` | number | 否 | 以点数估算 |
| `labelIds` | array | 否 | 要设置在问题上的标签 ID 数组 |
| `cycleId` | string | 否 | 要分配问题的周期 ID |
| `parentId` | string | 否 | 父问题 ID（用于创建子问题）|
| `dueDate` | string | 否 | 到期日期（ISO 8601 格式，仅日期：YYYY-MM-DD）|
| `subscriberIds` | array | 否 | 要订阅问题的用户 ID 数组 |
| `projectMilestoneId` | string | 否 | 要与问题关联的项目里程碑 ID |

#### 输出

| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `issue` | object | 创建的包含所有属性的问题 |

### `linear_update_issue`

更新 Linear 中的现有问题

#### 输入

| 参数 | 类型 | 必需 | 描述 |
| --------- | ---- | -------- | ----------- |
| `issueId` | string | 是 | 要更新的 Linear 问题 ID |
| `title` | string | 否 | 新的问题标题 |
| `description` | string | 否 | 新的问题描述 |
| `stateId` | string | 否 | 工作流状态 ID（状态）|
| `assigneeId` | string | 否 | 分配给问题的用户 ID |
| `priority` | number | 否 | 优先级（0=无优先级，1=紧急，2=高，3=正常，4=低）|
| `estimate` | number | 否 | 估算点数 |
| `labelIds` | array | 否 | 设置在问题上的标签 ID 数组（替换所有现有标签）|
| `projectId` | string | 否 | 要移动问题到的项目 ID |
| `cycleId` | string | 否 | 分配给问题的周期 ID |
| `parentId` | string | 否 | 父问题 ID（将其设为子问题）|
| `dueDate` | string | 否 | ISO 8601 格式的截止日期（仅日期：YYYY-MM-DD）|
| `addedLabelIds` | array | 否 | 添加到问题的标签 ID 数组（不替换现有标签）|
| `removedLabelIds` | array | 否 | 从问题中移除的标签 ID 数组 |

#### 输出

| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `issue` | object | 更新后的问题 |

### `linear_archive_issue`

在 Linear 中归档一个问题

#### 输入

| 参数 | 类型 | 必需 | 描述 |
| --------- | ---- | -------- | ----------- |
| `issueId` | string | 是 | 要归档的 Linear 问题 ID |

#### 输出

| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `success` | boolean | 归档操作是否成功 |
| `issueId` | string | 已归档问题的 ID |

### `linear_unarchive_issue`

在 Linear 中取消归档（恢复）一个已归档的问题

#### 输入

| 参数 | 类型 | 必需 | 描述 |
| --------- | ---- | -------- | ----------- |
| `issueId` | string | 是 | 要取消归档的 Linear 问题 ID |

#### 输出

| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `success` | boolean | 取消归档操作是否成功 |
| `issueId` | string | 已取消归档问题的 ID |

### `linear_delete_issue`

在 Linear 中删除（丢弃）一个问题

#### 输入

| 参数 | 类型 | 必需 | 描述 |
| --------- | ---- | -------- | ----------- |
| `issueId` | string | 是 | 要删除的 Linear 问题 ID |

#### 输出

| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `success` | boolean | 删除操作是否成功 |

### `linear_search_issues`

使用全文搜索在 Linear 中查找问题

#### 输入

| 参数 | 类型 | 必需 | 描述 |
| --------- | ---- | -------- | ----------- |
| `query` | string | 是 | 搜索查询字符串 |
| `teamId` | string | 否 | 按团队 ID 过滤 |
| `includeArchived` | boolean | 否 | 在搜索结果中包含已归档的问题 |
| `first` | number | 否 | 返回结果的数量（默认值：50） |

#### 输出

| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `issues` | array | 匹配问题的数组 |

### `linear_add_label_to_issue`

在 Linear 中为问题添加标签

#### 输入

| 参数 | 类型 | 必需 | 描述 |
| --------- | ---- | -------- | ----------- |
| `issueId` | string | 是 | Linear 问题 ID |
| `labelId` | string | 是 | 要添加到问题的标签 ID |

#### 输出

| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `success` | boolean | 标签是否成功添加 |
| `issueId` | string | 问题的 ID |

### `linear_remove_label_from_issue`

在 Linear 中从问题中移除标签

#### 输入

| 参数 | 类型 | 必需 | 描述 |
| --------- | ---- | -------- | ----------- |
| `issueId` | string | 是 | Linear 问题 ID |
| `labelId` | string | 是 | 要从问题中移除的标签 ID |

#### 输出

| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `success` | boolean | 标签是否成功移除 |
| `issueId` | string | 问题的 ID |

### `linear_create_comment`

在 Linear 中为问题添加评论

#### 输入

| 参数 | 类型 | 必需 | 描述 |
| --------- | ---- | -------- | ----------- |
| `issueId` | string | 是 | 要评论的 Linear 问题 ID |
| `body` | string | 是 | 评论文本（支持 Markdown） |

#### 输出

| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `comment` | object | 创建的评论 |

### `linear_update_comment`

在 Linear 中编辑评论

#### 输入

| 参数 | 类型 | 必需 | 描述 |
| --------- | ---- | -------- | ----------- |
| `commentId` | string | 是 | 要更新的评论 ID |
| `body` | string | 否 | 新的评论文本（支持 Markdown） |

#### 输出

| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `comment` | object | 更新的评论 |

### `linear_delete_comment`

从 Linear 中删除评论

#### 输入

| 参数 | 类型 | 必需 | 描述 |
| --------- | ---- | -------- | ----------- |
| `commentId` | string | 是 | 要删除的评论 ID |

#### 输出

| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `success` | boolean | 删除操作是否成功 |

### `linear_list_comments`

列出 Linear 中某个问题的所有评论

#### 输入

| 参数 | 类型 | 必需 | 描述 |
| --------- | ---- | -------- | ----------- |
| `issueId` | string | 是 | Linear 问题 ID |
| `first` | number | 否 | 返回的评论数量 \(默认值: 50\) |
| `after` | string | 否 | 分页游标 |

#### 输出

| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `comments` | array | 问题的评论数组 |

### `linear_list_projects`

列出 Linear 中的项目并支持可选过滤

#### 输入

| 参数 | 类型 | 必需 | 描述 |
| --------- | ---- | -------- | ----------- |
| `teamId` | string | 否 | 按团队 ID 过滤 |
| `includeArchived` | boolean | 否 | 包括已归档的项目 |
| `first` | number | 否 | 返回的项目数量 \(默认值: 50\) |
| `after` | string | 否 | 分页游标 |

#### 输出

| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `projects` | array | 项目数组 |

### `linear_get_project`

通过 ID 从 Linear 获取单个项目

#### 输入

| 参数 | 类型 | 必需 | 描述 |
| --------- | ---- | -------- | ----------- |
| `projectId` | string | 是 | Linear 项目 ID |

#### 输出

| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `project` | object | 包含完整详细信息的项目 |

### `linear_create_project`

在 Linear 中创建一个新项目

#### 输入

| 参数 | 类型 | 必需 | 描述 |
| --------- | ---- | -------- | ----------- |
| `teamId` | string | 是 | 要创建项目的团队 ID |
| `name` | string | 是 | 项目名称 |
| `description` | string | 否 | 项目描述 |
| `leadId` | string | 否 | 项目负责人的用户 ID |
| `startDate` | string | 否 | 项目开始日期（ISO 格式）|
| `targetDate` | string | 否 | 项目目标日期（ISO 格式）|
| `priority` | number | 否 | 项目优先级（0-4）|

#### 输出

| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `project` | object | 创建的项目 |

### `linear_update_project`

更新 Linear 中的现有项目

#### 输入

| 参数 | 类型 | 必需 | 描述 |
| --------- | ---- | -------- | ----------- |
| `projectId` | string | 是 | 要更新的项目 ID |
| `name` | string | 否 | 新的项目名称 |
| `description` | string | 否 | 新的项目描述 |
| `state` | string | 否 | 项目状态（planned、started、completed、canceled） |
| `leadId` | string | 否 | 项目负责人的用户 ID |
| `startDate` | string | 否 | 项目开始日期（ISO 格式: YYYY-MM-DD）|
| `targetDate` | string | 否 | 项目目标日期（ISO 格式: YYYY-MM-DD）|
| `priority` | number | 否 | 项目优先级（0=无优先级，1=紧急，2=高，3=正常，4=低） |

#### 输出

| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `project` | object | 更新后的项目 |

### `linear_archive_project`

在 Linear 中归档一个项目

#### 输入

| 参数 | 类型 | 必需 | 描述 |
| --------- | ---- | -------- | ----------- |
| `projectId` | string | 是 | 要归档的项目 ID |

#### 输出

| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `success` | boolean | 归档操作是否成功 |
| `projectId` | string | 已归档项目的 ID |

### `linear_list_users`

列出 Linear 工作区中的所有用户

#### 输入

| 参数 | 类型 | 必需 | 描述 |
| --------- | ---- | -------- | ----------- |
| `includeDisabled` | boolean | 否 | 包括已禁用/非活跃用户 |
| `first` | number | 否 | 要返回的用户数量（默认值：50） |
| `after` | string | 否 | 分页的游标 |

#### 输出

| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `users` | array | 工作区用户的数组 |

### `linear_list_teams`

列出 Linear 工作区中的所有团队

#### 输入

| 参数 | 类型 | 必需 | 描述 |
| --------- | ---- | -------- | ----------- |
| `first` | number | 否 | 要返回的团队数量（默认值：50） |
| `after` | string | 否 | 分页的游标 |

#### 输出

| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `teams` | array | 团队数组 |

### `linear_get_viewer`

获取当前已认证用户（查看者）信息

#### 输入

| 参数 | 类型 | 必需 | 描述 |
| --------- | ---- | -------- | ----------- |

#### 输出

| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `user` | object | 当前已认证用户 |

### `linear_list_labels`

列出 Linear 工作区或团队中的所有标签

#### 输入

| 参数 | 类型 | 必需 | 描述 |
| --------- | ---- | -------- | ----------- |
| `teamId` | string | 否 | 按团队 ID 筛选 |
| `first` | number | 否 | 返回的标签数量 \(默认值：50\) |
| `after` | string | 否 | 分页游标 |

#### 输出

| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `labels` | array | 标签数组 |

### `linear_create_label`

在 Linear 中创建新标签

#### 输入

| 参数 | 类型 | 必需 | 描述 |
| --------- | ---- | -------- | ----------- |
| `name` | string | 是 | 标签名称 |
| `color` | string | 否 | 标签颜色 \(十六进制格式，例如 "#ff0000"\) |
| `description` | string | 否 | 标签描述 |
| `teamId` | string | 否 | 团队 ID \(如果省略，则创建工作区标签\) |

#### 输出

| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `label` | object | 创建的标签 |

### `linear_update_label`

更新 Linear 中的现有标签

#### 输入

| 参数 | 类型 | 必需 | 描述 |
| --------- | ---- | -------- | ----------- |
| `labelId` | string | 是 | 要更新的标签 ID |
| `name` | string | 否 | 新的标签名称 |
| `color` | string | 否 | 新的标签颜色（十六进制格式） |
| `description` | string | 否 | 新的标签描述 |

#### 输出

| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `label` | object | 更新的标签 |

### `linear_archive_label`

在 Linear 中归档标签

#### 输入

| 参数 | 类型 | 必需 | 描述 |
| --------- | ---- | -------- | ----------- |
| `labelId` | string | 是 | 要归档的标签 ID |

#### 输出

| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `success` | boolean | 归档操作是否成功 |
| `labelId` | string | 已归档标签的 ID |

### `linear_list_workflow_states`

列出 Linear 中的所有工作流状态（状态）

#### 输入

| 参数 | 类型 | 必需 | 描述 |
| --------- | ---- | -------- | ----------- |
| `teamId` | string | 否 | 按团队 ID 筛选 |
| `first` | number | 否 | 要返回的状态数量（默认值：50） |
| `after` | string | 否 | 分页的游标 |

#### 输出

| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `states` | array | 工作流状态的数组 |

### `linear_create_workflow_state`

在 Linear 中创建一个新的工作流状态（状态）

#### 输入

| 参数 | 类型 | 必需 | 描述 |
| --------- | ---- | -------- | ----------- |
| `teamId` | string | 是 | 要在其中创建状态的团队 ID |
| `name` | string | 是 | 状态名称（例如 "In Review"）|
| `color` | string | 否 | 状态颜色（十六进制格式）|
| `type` | string | 是 | 状态类型: "backlog"、"unstarted"、"started"、"completed" 或 "canceled" |
| `description` | string | 否 | 状态描述 |
| `position` | number | 否 | 工作流中的位置 |

#### 输出

| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `state` | object | 创建的工作流状态 |

### `linear_update_workflow_state`

更新 Linear 中的现有工作流状态

#### 输入

| 参数 | 类型 | 必需 | 描述 |
| --------- | ---- | -------- | ----------- |
| `stateId` | string | 是 | 要更新的工作流状态 ID |
| `name` | string | 否 | 新的状态名称 |
| `color` | string | 否 | 新的状态颜色 \(十六进制格式\) |
| `description` | string | 否 | 新的状态描述 |
| `position` | number | 否 | 工作流中的新位置 |

#### 输出

| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `state` | object | 更新后的工作流状态 |

### `linear_list_cycles`

列出 Linear 中的周期（冲刺/迭代）

#### 输入

| 参数 | 类型 | 必需 | 描述 |
| --------- | ---- | -------- | ----------- |
| `teamId` | string | 否 | 按团队 ID 筛选 |
| `first` | number | 否 | 返回的周期数量 \(默认值：50\) |
| `after` | string | 否 | 分页的游标 |

#### 输出

| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `cycles` | array | 周期数组 |

### `linear_get_cycle`

通过 ID 从 Linear 获取单个周期

#### 输入

| 参数 | 类型 | 必需 | 描述 |
| --------- | ---- | -------- | ----------- |
| `cycleId` | string | 是 | 周期 ID |

#### 输出

| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `cycle` | object | 包含完整详细信息的周期 |

### `linear_create_cycle`

在 Linear 中创建一个新周期（冲刺/迭代）

#### 输入

| 参数 | 类型 | 必需 | 描述 |
| --------- | ---- | -------- | ----------- |
| `teamId` | string | 是 | 创建周期的团队 ID |
| `startsAt` | string | 是 | 周期开始日期 \(ISO 格式\) |
| `endsAt` | string | 是 | 周期结束日期 \(ISO 格式\) |
| `name` | string | 否 | 周期名称 \(可选，如果未提供将自动生成\) |

#### 输出

| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `cycle` | object | 创建的周期 |

### `linear_get_active_cycle`

获取团队当前的活动周期

#### 输入

| 参数 | 类型 | 必需 | 描述 |
| --------- | ---- | -------- | ----------- |
| `teamId` | string | 是 | 团队 ID |

#### 输出

| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `cycle` | object | 活动周期（如果没有活动周期，则为 null） |

### `linear_create_attachment`

在 Linear 中为问题添加附件

#### 输入

| 参数 | 类型 | 必需 | 描述 |
| --------- | ---- | -------- | ----------- |
| `issueId` | string | 是 | 要附加的 Issue ID |
| `url` | string | 是 | 附件的 URL |
| `title` | string | 是 | 附件标题 |
| `subtitle` | string | 否 | 附件副标题/描述 |

#### 输出

| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `attachment` | object | 创建的附件 |

### `linear_list_attachments`

列出 Linear 中问题的所有附件

#### 输入

| 参数 | 类型 | 必需 | 描述 |
| --------- | ---- | -------- | ----------- |
| `issueId` | string | 是 | Issue ID |
| `first` | number | 否 | 要返回的附件数量（默认值：50） |
| `after` | string | 否 | 分页的游标 |

#### 输出

| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `attachments` | array | 附件数组 |

### `linear_update_attachment`

更新 Linear 中的附件元数据

#### 输入

| 参数 | 类型 | 必需 | 描述 |
| --------- | ---- | -------- | ----------- |
| `attachmentId` | string | 是 | 要更新的附件 ID |
| `title` | string | 是 | 新的附件标题 |
| `subtitle` | string | 否 | 新的附件副标题 |

#### 输出

| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `attachment` | object | 更新后的附件 |

### `linear_delete_attachment`

从 Linear 中删除附件

#### 输入

| 参数 | 类型 | 必需 | 描述 |
| --------- | ---- | -------- | ----------- |
| `attachmentId` | string | 是 | 要删除的附件 ID |

#### 输出

| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `success` | boolean | 删除操作是否成功 |

### `linear_create_issue_relation`

在 Linear 中将两个问题链接在一起（阻止、相关、重复）

#### 输入

| 参数 | 类型 | 必需 | 描述 |
| --------- | ---- | -------- | ----------- |
| `issueId` | string | 是 | 源问题 ID |
| `relatedIssueId` | string | 是 | 要链接的目标问题 ID |
| `type` | string | 是 | 关系类型: "blocks"、"duplicate" 或 "related"。注意：当从 A 到 B 创建 "blocks" 时，会自动创建反向关系 \(B 被 A 阻止\)。 |

#### 输出

| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `relation` | object | 创建的问题关系 |

### `linear_list_issue_relations`

列出 Linear 中某个问题的所有关系（依赖关系）

#### 输入

| 参数 | 类型 | 必需 | 描述 |
| --------- | ---- | -------- | ----------- |
| `issueId` | string | 是 | 问题 ID |
| `first` | number | 否 | 要返回的关系数量 \(默认值：50\) |
| `after` | string | 否 | 分页的游标 |

#### 输出

| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `relations` | array | 问题关系的数组 |

### `linear_delete_issue_relation`

移除 Linear 中两个问题之间的关系

#### 输入

| 参数 | 类型 | 必需 | 描述 |
| --------- | ---- | -------- | ----------- |
| `relationId` | string | 是 | 要删除的关系 ID |

#### 输出

| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `success` | boolean | 删除操作是否成功 |

### `linear_create_favorite`

在 Linear 中收藏一个问题、项目、周期或标签

#### 输入

| 参数 | 类型 | 必需 | 描述 |
| --------- | ---- | -------- | ----------- |
| `issueId` | string | 否 | 要收藏的问题 ID |
| `projectId` | string | 否 | 要收藏的项目 ID |
| `cycleId` | string | 否 | 要收藏的周期 ID |
| `labelId` | string | 否 | 要收藏的标签 ID |

#### 输出

| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `favorite` | object | 创建的收藏项 |

### `linear_list_favorites`

列出当前用户在 Linear 中的所有书签项目

#### 输入

| 参数 | 类型 | 必需 | 描述 |
| --------- | ---- | -------- | ----------- |
| `first` | number | 否 | 返回的收藏项数量 \(默认值: 50\) |
| `after` | string | 否 | 分页游标 |

#### 输出

| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `favorites` | array | 收藏项的数组 |

### `linear_create_project_update`

为 Linear 中的项目发布状态更新

#### 输入

| 参数 | 类型 | 必需 | 描述 |
| --------- | ---- | -------- | ----------- |
| `projectId` | string | 是 | 要发布更新的项目 ID |
| `body` | string | 是 | 更新消息 \(支持 Markdown\) |
| `health` | string | 否 | 项目状态: "onTrack"、"atRisk" 或 "offTrack" |

#### 输出

| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `update` | object | 创建的项目更新 |

### `linear_list_project_updates`

列出 Linear 中某项目的所有状态更新

#### 输入

| 参数 | 类型 | 必需 | 描述 |
| --------- | ---- | -------- | ----------- |
| `projectId` | string | 是 | 项目 ID |
| `first` | number | 否 | 返回的更新数量 \(默认值: 50\) |
| `after` | string | 否 | 分页游标 |

#### 输出

| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `updates` | array | 项目更新的数组 |

### `linear_create_project_link`

在 Linear 中为项目添加一个外部链接

#### 输入

| 参数 | 类型 | 必需 | 描述 |
| --------- | ---- | -------- | ----------- |
| `projectId` | string | 是 | 要添加链接的项目 ID |
| `url` | string | 是 | 外部链接的 URL |
| `label` | string | 否 | 链接标签/标题 |

#### 输出

| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `link` | object | 创建的项目链接 |

### `linear_list_notifications`

列出当前用户在 Linear 中的通知

#### 输入

| 参数 | 类型 | 必需 | 描述 |
| --------- | ---- | -------- | ----------- |
| `first` | number | 否 | 要返回的通知数量（默认值：50） |
| `after` | string | 否 | 用于分页的游标 |

#### 输出

| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `notifications` | array | 通知的数组 |

### `linear_update_notification`

将 Linear 中的通知标记为已读或未读

#### 输入

| 参数 | 类型 | 必需 | 描述 |
| --------- | ---- | -------- | ----------- |
| `notificationId` | string | 是 | 要更新的通知 ID |
| `readAt` | string | 否 | 标记为已读的时间戳（ISO 格式）。传递 null 或省略以标记为未读 |

#### 输出

| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `notification` | object | 更新后的通知 |

### `linear_create_customer`

在 Linear 中创建新客户

#### 输入

| 参数 | 类型 | 必需 | 描述 |
| --------- | ---- | -------- | ----------- |
| `name` | string | 是 | 客户名称 |
| `domains` | array | 否 | 与此客户关联的域名 |
| `externalIds` | array | 否 | 来自其他系统的外部 ID |
| `logoUrl` | string | 否 | 客户的 logo URL |
| `ownerId` | string | 否 | 拥有此客户的用户 ID |
| `revenue` | number | 否 | 来自此客户的年收入 |
| `size` | number | 否 | 客户组织的规模 |
| `statusId` | string | 否 | 客户状态 ID |
| `tierId` | string | 否 | 客户层级 ID |

#### 输出

| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `customer` | object | 创建的客户 |

### `linear_list_customers`

列出 Linear 中的所有客户

#### 输入

| 参数 | 类型 | 必需 | 描述 |
| --------- | ---- | -------- | ----------- |
| `first` | number | 否 | 返回的客户数量 \(默认值: 50\) |
| `after` | string | 否 | 分页的游标 |
| `includeArchived` | boolean | 否 | 包括已归档的客户 \(默认值: false\) |

#### 输出

| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `customers` | array | 客户数组 |

### `linear_create_customer_request`

在 Linear 中创建客户请求（需求）。分配给客户，设置紧急程度（优先级：0 = 不重要，1 = 重要），并可选地链接到一个问题。

#### 输入

| 参数 | 类型 | 必需 | 描述 |
| --------- | ---- | -------- | ----------- |
| `customerId` | string | 是 | 要分配此请求的客户 ID |
| `body` | string | 否 | 客户请求的描述 |
| `priority` | number | 否 | 紧急程度：0 = 不重要，1 = 重要（默认：0）|
| `issueId` | string | 否 | 要链接此请求的问题 ID |
| `projectId` | string | 否 | 要链接此请求的项目 ID |

#### 输出

| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `customerNeed` | object | 创建的客户请求 |

### `linear_update_customer_request`

在 Linear 中更新客户请求（需求）。可以更改紧急程度、描述、客户分配和链接的问题。

#### 输入

| 参数 | 类型 | 必需 | 描述 |
| --------- | ---- | -------- | ----------- |
| `customerNeedId` | string | 是 | 要更新的客户请求 ID |
| `body` | string | 否 | 更新后的客户请求描述 |
| `priority` | number | 否 | 更新后的紧急程度：0 = 不重要，1 = 重要 |
| `customerId` | string | 否 | 新的客户 ID，用于分配此请求 |
| `issueId` | string | 否 | 新的问题 ID，用于链接此请求 |
| `projectId` | string | 否 | 新的项目 ID，用于链接此请求 |

#### 输出

| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `customerNeed` | object | 更新的客户请求 |

### `linear_list_customer_requests`

列出 Linear 中的所有客户请求（需求）

#### 输入

| 参数 | 类型 | 必需 | 描述 |
| --------- | ---- | -------- | ----------- |
| `first` | number | 否 | 要返回的客户请求数量（默认值：50） |
| `after` | string | 否 | 分页的游标 |
| `includeArchived` | boolean | 否 | 包括已归档的客户请求（默认值：false） |

#### 输出

| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `customerNeeds` | array | 客户请求的数组 |

### `linear_get_customer`

在 Linear 中通过 ID 获取单个客户

#### 输入

| 参数 | 类型 | 必需 | 描述 |
| --------- | ---- | -------- | ----------- |
| `customerId` | string | 是 | 要检索的客户 ID |

#### 输出

| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `customer` | object | 客户数据 |

### `linear_update_customer`

在 Linear 中更新客户

#### 输入

| 参数 | 类型 | 必需 | 描述 |
| --------- | ---- | -------- | ----------- |
| `customerId` | string | 是 | 要更新的客户 ID |
| `name` | string | 否 | 更新的客户名称 |
| `domains` | array | 否 | 更新的域名 |
| `externalIds` | array | 否 | 更新的外部 ID |
| `logoUrl` | string | 否 | 更新的 logo URL |
| `ownerId` | string | 否 | 更新的所有者用户 ID |
| `revenue` | number | 否 | 更新的年收入 |
| `size` | number | 否 | 更新的组织规模 |
| `statusId` | string | 否 | 更新的客户状态 ID |
| `tierId` | string | 否 | 更新的客户层级 ID |

#### 输出

| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `customer` | object | 更新的客户 |

### `linear_delete_customer`

删除 Linear 中的客户

#### 输入

| 参数 | 类型 | 必需 | 描述 |
| --------- | ---- | -------- | ----------- |
| `customerId` | string | 是 | 要删除的客户 ID |

#### 输出

| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `success` | boolean | 删除是否成功 |

### `linear_merge_customers`

通过将所有数据从源客户移动到目标客户，合并 Linear 中的两个客户

#### 输入

| 参数 | 类型 | 必需 | 描述 |
| --------- | ---- | -------- | ----------- |
| `sourceCustomerId` | string | 是 | 源客户 ID \(合并后将被删除\) |
| `targetCustomerId` | string | 是 | 目标客户 ID \(将接收所有数据\) |

#### 输出

| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `customer` | object | 合并后的目标客户 |

### `linear_create_customer_status`

在 Linear 中创建新的客户状态

#### 输入

| 参数 | 类型 | 必需 | 描述 |
| --------- | ---- | -------- | ----------- |
| `name` | string | 是 | 客户状态名称 |
| `color` | string | 是 | 状态颜色 \(十六进制代码\) |
| `displayName` | string | 否 | 状态的显示名称 |
| `description` | string | 否 | 状态描述 |
| `position` | number | 否 | 状态列表中的位置 |

#### 输出

| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `customerStatus` | object | 创建的客户状态 |

### `linear_update_customer_status`

更新 Linear 中的客户状态

#### 输入

| 参数 | 类型 | 必需 | 描述 |
| --------- | ---- | -------- | ----------- |
| `statusId` | string | 是 | 要更新的客户状态 ID |
| `name` | string | 否 | 更新后的状态名称 |
| `color` | string | 否 | 更新后的状态颜色 |
| `displayName` | string | 否 | 更新后的显示名称 |
| `description` | string | 否 | 更新后的描述 |
| `position` | number | 否 | 更新后的位置 |

#### 输出

| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `customerStatus` | object | 更新后的客户状态 |

### `linear_delete_customer_status`

删除 Linear 中的客户状态

#### 输入

| 参数 | 类型 | 必需 | 描述 |
| --------- | ---- | -------- | ----------- |
| `statusId` | string | 是 | 要删除的客户状态 ID |

#### 输出

| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `success` | boolean | 删除是否成功 |

### `linear_list_customer_statuses`

列出 Linear 中的所有客户状态

#### 输入

| 参数 | 类型 | 必需 | 描述 |
| --------- | ---- | -------- | ----------- |

#### 输出

| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `customerStatuses` | array | 客户状态列表 |

### `linear_create_customer_tier`

在 Linear 中创建一个新的客户等级

#### 输入

| 参数 | 类型 | 必需 | 描述 |
| --------- | ---- | -------- | ----------- |
| `name` | string | 是 | 客户等级名称 |
| `color` | string | 是 | 等级颜色（十六进制代码） |
| `displayName` | string | 否 | 等级的显示名称 |
| `description` | string | 否 | 等级描述 |
| `position` | number | 否 | 等级列表中的位置 |

#### 输出

| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `customerTier` | object | 创建的客户等级 |

### `linear_update_customer_tier`

在 Linear 中更新客户等级

#### 输入

| 参数 | 类型 | 必需 | 描述 |
| --------- | ---- | -------- | ----------- |
| `tierId` | string | 是 | 要更新的客户等级 ID |
| `name` | string | 否 | 更新后的等级名称 |
| `color` | string | 否 | 更新后的等级颜色 |
| `displayName` | string | 否 | 更新后的显示名称 |
| `description` | string | 否 | 更新后的描述 |
| `position` | number | 否 | 更新后的位置 |

#### 输出

| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `customerTier` | object | 更新的客户等级 |

### `linear_delete_customer_tier`

在 Linear 中删除客户等级

#### 输入

| 参数 | 类型 | 必需 | 描述 |
| --------- | ---- | -------- | ----------- |
| `tierId` | string | 是 | 要删除的客户等级 ID |

#### 输出

| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `success` | boolean | 删除是否成功 |

### `linear_list_customer_tiers`

列出 Linear 中的所有客户层级

#### 输入

| 参数 | 类型 | 必需 | 描述 |
| --------- | ---- | -------- | ----------- |

#### 输出

| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `customerTiers` | array | 客户层级列表 |

### `linear_delete_project`

删除 Linear 中的一个项目

#### 输入

| 参数 | 类型 | 必需 | 描述 |
| --------- | ---- | -------- | ----------- |
| `projectId` | string | 是 | 要删除的项目 ID |

#### 输出

| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `success` | boolean | 删除是否成功 |

### `linear_create_project_label`

在 Linear 中创建一个新的项目标签

#### 输入

| 参数 | 类型 | 必需 | 描述 |
| --------- | ---- | -------- | ----------- |
| `projectId` | string | 是 | 此标签所属的项目 |
| `name` | string | 是 | 项目标签名称 |
| `color` | string | 否 | 标签颜色 \(十六进制代码\) |
| `description` | string | 否 | 标签描述 |
| `isGroup` | boolean | 否 | 是否为标签组 |
| `parentId` | string | 否 | 父标签组 ID |

#### 输出

| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `projectLabel` | object | 创建的项目标签 |

### `linear_update_project_label`

更新 Linear 中的项目标签

#### 输入

| 参数 | 类型 | 必需 | 描述 |
| --------- | ---- | -------- | ----------- |
| `labelId` | string | 是 | 要更新的项目标签 ID |
| `name` | string | 否 | 更新后的标签名称 |
| `color` | string | 否 | 更新后的标签颜色 |
| `description` | string | 否 | 更新后的描述 |

#### 输出

| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `projectLabel` | object | 更新后的项目标签 |

### `linear_delete_project_label`

删除 Linear 中的项目标签

#### 输入

| 参数 | 类型 | 必需 | 描述 |
| --------- | ---- | -------- | ----------- |
| `labelId` | string | 是 | 要删除的项目标签 ID |

#### 输出

| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `success` | boolean | 删除是否成功 |

### `linear_list_project_labels`

列出 Linear 中的所有项目标签

#### 输入

| 参数 | 类型 | 必需 | 描述 |
| --------- | ---- | -------- | ----------- |
| `projectId` | string | 否 | 可选的项目 ID，用于筛选特定项目的标签 |

#### 输出

| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `projectLabels` | array | 项目标签列表 |

### `linear_add_label_to_project`

在 Linear 中为项目添加标签

#### 输入

| 参数 | 类型 | 必需 | 描述 |
| --------- | ---- | -------- | ----------- |
| `projectId` | string | 是 | 项目 ID |
| `labelId` | string | 是 | 要添加的标签 ID |

#### 输出

| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `success` | boolean | 标签是否成功添加 |
| `projectId` | string | 项目 ID |

### `linear_remove_label_from_project`

从 Linear 项目中移除标签

#### 输入

| 参数 | 类型 | 必需 | 描述 |
| --------- | ---- | -------- | ----------- |
| `projectId` | string | 是 | 项目 ID |
| `labelId` | string | 是 | 要移除的标签 ID |

#### 输出

| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `success` | boolean | 标签是否成功移除 |
| `projectId` | string | 项目 ID |

### `linear_create_project_milestone`

在 Linear 中创建新的项目里程碑

#### 输入

| 参数 | 类型 | 必需 | 描述 |
| --------- | ---- | -------- | ----------- |
| `projectId` | string | 是 | 项目 ID |
| `name` | string | 是 | 里程碑名称 |
| `description` | string | 否 | 里程碑描述 |
| `targetDate` | string | 否 | 目标日期 \(ISO 8601\) |

#### 输出

| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `projectMilestone` | object | 创建的项目里程碑 |

### `linear_update_project_milestone`

更新 Linear 中的项目里程碑

#### 输入

| 参数 | 类型 | 必需 | 描述 |
| --------- | ---- | -------- | ----------- |
| `milestoneId` | string | 是 | 要更新的项目里程碑 ID |
| `name` | string | 否 | 更新后的里程碑名称 |
| `description` | string | 否 | 更新后的描述 |
| `targetDate` | string | 否 | 更新后的目标日期 \(ISO 8601\) |

#### 输出

| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `projectMilestone` | object | 更新后的项目里程碑 |

### `linear_delete_project_milestone`

删除 Linear 中的项目里程碑

#### 输入

| 参数 | 类型 | 必需 | 描述 |
| --------- | ---- | -------- | ----------- |
| `milestoneId` | string | 是 | 要删除的项目里程碑 ID |

#### 输出

| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `success` | boolean | 删除操作是否成功 |

### `linear_list_project_milestones`

列出 Linear 中项目的所有里程碑

#### 输入

| 参数 | 类型 | 必需 | 描述 |
| --------- | ---- | -------- | ----------- |
| `projectId` | string | 是 | 要列出里程碑的项目 ID |

#### 输出

| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `projectMilestones` | array | 项目里程碑列表 |

### `linear_create_project_status`

在 Linear 中创建一个新的项目状态

#### 输入

| 参数 | 类型 | 必需 | 描述 |
| --------- | ---- | -------- | ----------- |
| `projectId` | string | 是 | 要为其创建状态的项目 |
| `name` | string | 是 | 项目状态名称 |
| `color` | string | 是 | 状态颜色 \(十六进制代码\) |
| `description` | string | 否 | 状态描述 |
| `indefinite` | boolean | 否 | 状态是否为无限期 |
| `position` | number | 否 | 状态列表中的位置 |

#### 输出

| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `projectStatus` | object | 创建的项目状态 |

### `linear_update_project_status`

更新 Linear 中的项目状态

#### 输入

| 参数 | 类型 | 必需 | 描述 |
| --------- | ---- | -------- | ----------- |
| `statusId` | string | 是 | 要更新的项目状态 ID |
| `name` | string | 否 | 更新后的状态名称 |
| `color` | string | 否 | 更新后的状态颜色 |
| `description` | string | 否 | 更新后的描述 |
| `indefinite` | boolean | 否 | 更新后的无限期标志 |
| `position` | number | 否 | 更新后的位置 |

#### 输出

| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `projectStatus` | object | 更新后的项目状态 |

### `linear_delete_project_status`

删除 Linear 中的项目状态

#### 输入

| 参数 | 类型 | 必需 | 描述 |
| --------- | ---- | -------- | ----------- |
| `statusId` | string | 是 | 要删除的项目状态 ID |

#### 输出

| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `success` | boolean | 删除是否成功 |

### `linear_list_project_statuses`

列出 Linear 中的所有项目状态

#### 输入

| 参数 | 类型 | 必需 | 描述 |
| --------- | ---- | -------- | ----------- |

#### 输出

| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `projectStatuses` | array | 项目状态列表 |

## 注意事项

- 类别：`tools`
- 类型：`linear`
