*MCP › Reference › Operations › Tasks*

# Update a task

> Partially updates a task (send only the fields to change).

The staff, the project and the related document are checked against your account just as on creation. Returns the updated task.

TOOL `filmo_tasks_update` · `tasks:write` · 120/min · Server annotation: Idempotent

## Arguments

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `taskId` | string | Yes | Task identifier. |
| `title` | string | No | Task title. |
| `description` | string | No | Task description or notes; null clears it. |
| `startDate` | string<date-time> | No | Task start date and time (ISO 8601 with offset). |
| `endDate` | string<date-time> | No | Task end date and time (ISO 8601 with offset); must be equal to or later than startDate. null clears it. |
| `isAllDay` | boolean | No | Whether the task is all-day. |
| `isCompleted` | boolean | No | Marks the task as completed or pending. |
| `type` | string | No | Task type: its identifier or its name, matched ignoring case and accents (see [`POST /api/v1/tasks`](https://docs.filmo.io/rest-api/endpoint-reference/tasks/create-a-task)). Changing it also changes the color of the task to that of the type. |
| `assignedStaffIds` | string[] | No | Identifiers of the staff assigned to the task (max 50); replaces the existing assignment. |
| `projectId` | string | No | Identifier of the linked project; null unlinks it. |
| `relatedDocumentId` | string | No | Identifier of the related document; always goes together with relatedDocumentType. null (with relatedDocumentType: null) unlinks it. |
| `relatedDocumentType` | string | No | Type of the related document; always goes together with relatedDocumentId. null (with relatedDocumentId: null) unlinks it. `contact`, `order`, `item`, `kit`, `space`, `collection`, `invoice`, `quote`, `purchaseOrder`, `supplierInvoice`, `incident`, `repairTicket`, `project`, `vehicle`, `staff`, `service`, `opportunity` |
| `idempotencyKey` | string | No | Idempotency key chosen by the client (a UUID is recommended). Repeating the same key with the same arguments within 24 h returns the stored response without executing again; with different arguments it responds 422. It is the safe way to retry after a network failure. |
| `ifMatch` | string | No | Optimistic locking: the meta.etag you got from the detail read of this resource (or "*"). If the resource changed since, the call fails with 412 precondition_failed before writing anything; read it again and retry. Omit it to write unconditionally. |

## Result

On success the result carries `structuredContent` with `data` and `meta`. These are the attributes of `data`.

| Name | Type | Description |
| --- | --- | --- |
| `id` | string | Unique task identifier. |
| `title` | string | Task title. |
| `description` | string | Task description or notes; null if it has none. |
| `startDate` | string<date-time> | Start date and time in ISO 8601 with offset. |
| `endDate` | string<date-time> | End date and time in ISO 8601 with offset; null if it has no defined end. |
| `isAllDay` | boolean | Whether the task is all-day. |
| `isCompleted` | boolean | Whether the task is completed. |
| `isRecurring` | boolean | Whether the task is part of a recurring series. |
| `recurringGroupId` | string | Identifier of the recurrence group it belongs to; null if it is not recurring. |
| `recurrencePattern` | object | Recurrence pattern of the task; null if it is not recurring. |
| `recurrencePattern.frequency` | string | Recurrence frequency: daily, weekly, monthly or yearly. `daily`, `weekly`, `monthly`, `yearly` |
| `recurrencePattern.interval` | integer | Interval between repetitions according to the frequency (e.g. 2 with weekly = every two weeks). |
| `recurrencePattern.endAfterOccurrences` | integer | Number of repetitions after which the recurrence ends; null if it does not end by number of occurrences. |
| `recurrencePattern.endDate` | string<date-time> | Date on which the recurrence ends, in ISO 8601 with offset; null if it does not end by date. |
| `type` | string | Task type (identifier of the type). |
| `assignedStaffIds` | string[] | Identifiers of the staff assigned to the task. |
| `projectId` | string | Identifier of the linked project; null if the task is not linked. |
| `relatedDocumentId` | string | Identifier of the related document; null if it has none. |
| `relatedDocumentType` | string | Type of the related document (contact, order, invoice, quote, project, etc.); null if it has none. |
| `appearance` | object | Appearance of the task in the schedule (color and variant). |
| `appearance.color` | string | Task color in the schedule (hexadecimal code). |
| `appearance.variant` | string | Visual variant of the task: primary, secondary, destructive or default. `primary`, `secondary`, `destructive`, `default` |
| `createdAt` | string<date-time> | Creation date in ISO 8601 with offset. |
| `updatedAt` | string<date-time> | Last update date in ISO 8601 with offset. |

*Call · filmo_tasks_update*

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "filmo_tasks_update",
    "arguments": {
      "taskId": "task_8f2a1c"
    }
  }
}
```

*Result (generated from the schema)*

```json
{
  "structuredContent": {
    "data": {
      "id": "id_8f2a1c",
      "title": "Example",
      "description": "<description>",
      "startDate": "2026-09-01T08:00:00Z",
      "endDate": "2026-09-01T08:00:00Z",
      "isAllDay": true,
      "isCompleted": true,
      "isRecurring": true,
      "recurringGroupId": "recu_8f2a1c",
      "recurrencePattern": {
        "frequency": "daily",
        "interval": 1,
        "endAfterOccurrences": 1,
        "endDate": "2026-09-01T08:00:00Z"
      },
      "type": "<type>",
      "assignedStaffIds": [
        "assi_8f2a1c"
      ],
      "projectId": "proj_8f2a1c",
      "relatedDocumentId": "rela_8f2a1c",
      "relatedDocumentType": "<relatedDocumentType>",
      "appearance": {
        "color": "<color>",
        "variant": "primary"
      },
      "createdAt": "2026-09-01T08:00:00Z",
      "updatedAt": "2026-09-01T08:00:00Z"
    },
    "meta": {
      "idempotencyKey": "<the key you sent, or the one the server generated>",
      "rateLimit": {
        "limit": 120,
        "remaining": 119,
        "reset": 42
      }
    }
  }
}
```

## The same operation by REST

This tool runs [`PATCH /api/v1/tasks/{taskId}`](https://docs.filmo.io/rest-api/endpoint-reference/tasks/update-a-task).

---

Canonical URL: https://docs.filmo.io/mcp/tools/tasks/filmo-tasks-update  
Last updated: 2026-10-25