> ## Documentation Index
> Fetch the complete documentation index at: https://docs.murmur.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# task_update

> MCP tool that updates a task's status, subject, description, or dependency edges without removing or recreating it on the checklist.

Updates an existing task in an [agent's](/concepts/agents) checklist. Can change the task's status, subject, description, or add dependency edges between tasks.

Equivalent to [`murmur task update`](/cli/task-update) in the CLI.

## Parameters

| Name             | Type      | Required | Description                                                                                                                     |
| ---------------- | --------- | -------- | ------------------------------------------------------------------------------------------------------------------------------- |
| `task_id`        | string    | yes      | ID of the task to update.                                                                                                       |
| `status`         | string    | no       | New task status: `pending`, `in_progress`, `completed`, or `deleted`.                                                           |
| `subject`        | string    | no       | New task subject.                                                                                                               |
| `description`    | string    | no       | New task description.                                                                                                           |
| `add_blocks`     | string\[] | no       | Task IDs that this task blocks. Adds forward dependency edges.                                                                  |
| `add_blocked_by` | string\[] | no       | Task IDs that block this task. Adds reverse dependency edges.                                                                   |
| `slug`           | string    | no       | Agent slug. Empty means self. Use an absolute path like `/w/workspace/u/account/slug` to target an agent outside your own path. |
| `workspace`      | string    | no       | Workspace name. Overrides the session default.                                                                                  |

### Dependency edges

Tasks can declare dependencies on other tasks using `add_blocks` and `add_blocked_by`. These edges express ordering constraints:

* `add_blocks`: "this task blocks those tasks" — the listed tasks cannot start until this one completes.
* `add_blocked_by`: "this task is blocked by those tasks" — this task cannot start until the listed tasks complete.

Both directions create the same underlying edge. Use whichever reads more naturally for your use case.

## Response

Returns a confirmation string: `updated task <task_id>`.

## Examples

### Mark a task completed

```json theme={null}
{
  "task_id": "t_abc123",
  "status": "completed"
}
```

Response:

```
updated task t_abc123
```

### Update subject and description

```json theme={null}
{
  "task_id": "t_abc123",
  "subject": "Add pagination to the users API (v2)",
  "description": "Use cursor-based pagination instead of offset."
}
```

### Add dependency edges

```json theme={null}
{
  "task_id": "t_deploy",
  "add_blocked_by": ["t_tests", "t_review"]
}
```

This means `t_deploy` cannot start until both `t_tests` and `t_review` are completed.

### Delete a task

```json theme={null}
{
  "task_id": "t_abc123",
  "status": "deleted"
}
```

## Errors

| Code               | Meaning                                  | What to do                                                                                      |
| ------------------ | ---------------------------------------- | ----------------------------------------------------------------------------------------------- |
| `INVALID_ARGUMENT` | Unknown status value or invalid task ID. | Check the error message. Valid statuses: `pending`, `in_progress`, `completed`, `deleted`.      |
| `NOT_FOUND`        | Task or agent not found.                 | Check the `task_id` and `slug`. Use [`task_list`](/mcp-server/task-list) to see existing tasks. |
| `UNAUTHENTICATED`  | Identity token is missing or expired.    | Check credentials.                                                                              |

## Related

* [`murmur task update`](/cli/task-update) — equivalent CLI command
* [`task_create`](/mcp-server/task-create) — create a new task
* [`task_list`](/mcp-server/task-list) — list all tasks
* [`task_get`](/mcp-server/task-get) — get a single task
