MCP Reference
task_save
Create or Update Task
Beschreibung
Linear-style upsert. Pass id (prefix or KEY-N) to update,
omit it to create. On create the workspace is required (omit when
updating). Description accepts Markdown and is converted to
Tiptap JSON for storage; readers get Markdown back via
task_get so the round-trip is symmetric.
Zugriff
Zugriffsprofil: gated. Module: projects_tasks.
Die Freigabe im Profil ersetzt keine Account-, Workspace- oder Rollenberechtigung.
Parameter
| Name | Typ | Pflicht | Beschreibung |
|---|---|---|---|
account_id |
string | Ja | |
idempotency_key |
string | Nein | Stable unique key for this intended task. Reuse on retries. Required when delegating from a task session; creates a subscription that resumes your coordinating task. |
id |
string | Nein | Task prefix ID or KEY-N. Omit to create. |
workspace_id |
string | Nein | Workspace prefix ID or key. Required on create. |
project_id |
string / null | Nein | Project prefix ID (proj_…) or slug. Pass null to detach the task from its project. |
cycle_id |
string / null | Nein | Cycle prefix ID (cyc_…). Cycle must belong to the same workspace as the task; pass null to detach. |
pinned_to_cycle |
boolean | Nein | ENG-1094. When true, the task stays on its current cycle when that cycle closes (excluded from carry-over). |
parent_task_id |
string / null | Nein | Parent task prefix ID (task_…) or KEY-N. Pass null to make this a top-level task. |
title |
string | Nein | |
description_markdown |
string / null | Nein | |
status |
string | Nein | TaskStatus name or symbolic key. |
priority |
string | Nein | |
assignee |
string / null | Nein | User prefix or @handle. 'none' clears. |
start_on |
string / null | Nein | ISO date YYYY-MM-DD or null to clear. Optional, must be on or before due_on when both are set. |
due_on |
string / null | Nein | ISO date YYYY-MM-DD or null to clear. |
start_at |
string / null | Nein | ISO 8601 timestamp with UTC offset. Sets start_on in time_zone. Null removes only the time. Automatic agent work waits until this instant. |
due_at |
string / null | Nein | ISO 8601 timestamp with UTC offset. Sets due_on in time_zone. Null removes only the time. |
time_zone |
string | Nein | Task time zone, e.g. Europe/Berlin. Defaults to the creator's time zone. |
estimate_points |
integer / null | Nein | |
labels |
array | Nein | List of label names or prefix IDs. |
attachment_ids |
array | Nein | Attachment handles from attachment_upload — att_… ids or file_urls. Files appear in the task's attachments list. Existing attachments are kept; pass an empty array to add nothing new (use the web UI to remove). |
Eingabeschema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"account_id": {
"type": "string"
},
"idempotency_key": {
"type": "string",
"description": "Stable unique key for this intended task. Reuse on retries. Required when delegating from a task session; creates a subscription that resumes your coordinating task."
},
"id": {
"type": "string",
"description": "Task prefix ID or KEY-N. Omit to create."
},
"workspace_id": {
"type": "string",
"description": "Workspace prefix ID or key. Required on create."
},
"project_id": {
"type": [
"string",
"null"
],
"description": "Project prefix ID (proj_…) or slug. Pass null to detach the task from its project."
},
"cycle_id": {
"type": [
"string",
"null"
],
"description": "Cycle prefix ID (cyc_…). Cycle must belong to the same workspace as the task; pass null to detach."
},
"pinned_to_cycle": {
"type": "boolean",
"description": "ENG-1094. When true, the task stays on its current cycle when that cycle closes (excluded from carry-over)."
},
"parent_task_id": {
"type": [
"string",
"null"
],
"description": "Parent task prefix ID (task_…) or KEY-N. Pass null to make this a top-level task."
},
"title": {
"type": "string"
},
"description_markdown": {
"type": [
"string",
"null"
]
},
"status": {
"type": "string",
"description": "TaskStatus name or symbolic key."
},
"priority": {
"type": "string"
},
"assignee": {
"type": [
"string",
"null"
],
"description": "User prefix or @handle. 'none' clears."
},
"start_on": {
"type": [
"string",
"null"
],
"description": "ISO date YYYY-MM-DD or null to clear. Optional, must be on or before due_on when both are set."
},
"due_on": {
"type": [
"string",
"null"
],
"description": "ISO date YYYY-MM-DD or null to clear."
},
"start_at": {
"type": [
"string",
"null"
],
"description": "ISO 8601 timestamp with UTC offset. Sets start_on in time_zone. Null removes only the time. Automatic agent work waits until this instant."
},
"due_at": {
"type": [
"string",
"null"
],
"description": "ISO 8601 timestamp with UTC offset. Sets due_on in time_zone. Null removes only the time."
},
"time_zone": {
"type": "string",
"description": "Task time zone, e.g. Europe/Berlin. Defaults to the creator's time zone."
},
"estimate_points": {
"type": [
"integer",
"null"
]
},
"labels": {
"type": "array",
"items": {
"type": "string"
},
"description": "List of label names or prefix IDs."
},
"attachment_ids": {
"type": "array",
"items": {
"type": "string"
},
"description": "Attachment handles from `attachment_upload` — att_… ids or file_urls. Files appear in the task's attachments list. Existing attachments are kept; pass an empty array to add nothing new (use the web UI to remove)."
}
},
"required": [
"account_id"
],
"type": "object"
}
Ausgabeschema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"task": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"key": {
"type": "string"
},
"title": {
"type": "string"
}
},
"required": [
"id",
"key",
"title"
]
}
},
"required": [
"task"
],
"type": "object"
}