# Update Task

`lawmatics_update-task` · Lawmatics MCP tool · Tasks

Update an existing task in Lawmatics by ID. Provide any combination of name, description, due date, assigned users, priority, completion status, tags, recurrence rule, or a new associated matter/contact/company. Returns a `relationships` envelope of {id,type} pointers to related records (the associated matter/contact/company via `taskable`, assigned users, documents, files, subtasks, and comments). Known Lawmatics quirk: marking a RECURRING task done (and any later update to that completed recurring task) is applied but returns an upstream error — on such an error, verify the result with get-task instead of retrying.

## Input

- **taskId** `string` (required, pattern: ^\d+$) — ID of the task to update; a numeric string
- **name** `string` — New name/title for the task
- **description** `string` — New description of the work to be done
- **dueDate** `string(date) | string(date-time)` — New due date as an ISO 8601 date or datetime
- **userIds** `array` — IDs of the firm users to assign to this task (replaces the assigned set)
  - **[]** `string`
- **priority** `string` (enum: "high", "medium", "low") — New task priority
- **done** `boolean` — Completion status; true marks the task done
- **tagIds** `array` — IDs of existing tags to attach to this task (not tag names)
  - **[]** `string`
- **assignedById** `string` — ID of the firm user the task is assigned by
- **recurrenceRule** `object` — New recurrence rule for a repeating task
  - **type** `string` (required, enum: "daily", "weekly", "monthly", "yearly") — How often the task recurs
  - **endOption** `boolean` — Whether the recurrence has an end
  - **endDate** `string` — Date the recurrence ends (Postman examples use MM/DD/YYYY, e.g. "08/15/2023")
  - **frequency** `integer` (> 0) — Repeat every N days (daily type only)
  - **sunday** `boolean` — Recur on Sundays (weekly type only)
  - **monday** `boolean` — Recur on Mondays (weekly type only)
  - **tuesday** `boolean` — Recur on Tuesdays (weekly type only)
  - **wednesday** `boolean` — Recur on Wednesdays (weekly type only)
  - **thursday** `boolean` — Recur on Thursdays (weekly type only)
  - **friday** `boolean` — Recur on Fridays (weekly type only)
  - **saturday** `boolean` — Recur on Saturdays (weekly type only)
  - **monthlyFrequency** `integer` (> 0) — Repeat every N months (monthly type only)
  - **dayOfMonth** `integer` (> 0) — Day of the month the task recurs on (monthly type only)
  - **month** `string` — Month the task recurs in (yearly type only)
  - **dayOfMonthYear** `integer` (> 0) — Day of the month the task recurs on (yearly type only)
- **matterId** `string` (min length: 1) — ID of the matter to re-associate this task with
- **contactId** `string` (min length: 1) — ID of the contact to re-associate this task with
- **companyId** `string` (min length: 1) — ID of the company to re-associate this task with

## Output

- **id** `string` (required) — Unique ID of the task
- **name** `string` (required) — Name/title of the task
- **description** `string | null` (required) — Description of the task; null if unset
- **dueDate** `string | null` (required) — ISO 8601 timestamp the task is due; null if no due date is set
- **done** `boolean` (required) — Whether the task is completed
- **status** `string | null` (required) — Read-only display status (e.g. "No Status"); null when the projection omits it
- **priority** `string` (required) — Task priority as returned by the API (high, medium, low)
- **tags** `array` (required) — Tags attached to this task
  - **[]** `object`
    - **id** `string` (required) — Unique ID of the tag
    - **name** `string` (required) — Name of the tag
    - **color** `string | null` (required) — Hex display color of the tag; null if unset
- **assignedById** `string | null` (required) — ID of the firm user who assigned the task; null if unset or omitted
- **recurrenceRule** `object | null` (required) — Recurrence rule with inner keys preserved exactly as the API returns them (type, frequency, weekday booleans, and an end-date key that may appear as endDate or end_date); null when the task does not recur
  - **[key: string]** `string | number | boolean | null`
- **createdAt** `string | null` (required) — When the task was created, as an ISO 8601 timestamp; null if unknown
- **updatedAt** `string | null` (required) — When the task was last updated, as an ISO 8601 timestamp; null if unknown
- **relationships** `object` (required) — JSON:API relationship pointers to related records as {id,type} stubs. Not materialized — follow a pointer by calling that resource's own get/find tool (e.g. type 'prospect' -> get-matter, type 'contact' -> get-contact, type 'user' -> get-user).
  - **taskable** `object | null` (required) — Associated record (matter/prospect, contact, or company) pointer; null for unattached tasks
    - **id** `string` (required) — ID of the referenced Lawmatics record
    - **type** `string` (required) — JSON:API record class of the reference (e.g. "user", "contact", "prospect", "firm"); resolve it by calling that resource's own get/find tool — this pointer is not materialized
  - **users** `array` (required) — Assigned firm-user pointers (type 'user'); empty if none
    - **[]** `object`
      - **id** `string` (required) — ID of the referenced Lawmatics record
      - **type** `string` (required) — JSON:API record class of the reference; resolve it by calling that resource's own tool
  - **documents** `array` (required) — Document pointers; empty if none
    - **[]** `object`
      - **id** `string` (required) — ID of the referenced Lawmatics record
      - **type** `string` (required) — JSON:API record class of the reference; resolve it by calling that resource's own tool
  - **files** `array` (required) — File pointers; empty if none
    - **[]** `object`
      - **id** `string` (required) — ID of the referenced Lawmatics record
      - **type** `string` (required) — JSON:API record class of the reference; resolve it by calling that resource's own tool
  - **subtasks** `array` (required) — Subtask pointers; empty if none
    - **[]** `object`
      - **id** `string` (required) — ID of the referenced Lawmatics record
      - **type** `string` (required) — JSON:API record class of the reference; resolve it by calling that resource's own tool
  - **comments** `array` (required) — Comment pointers; empty if none
    - **[]** `object`
      - **id** `string` (required) — ID of the referenced Lawmatics record
      - **type** `string` (required) — JSON:API record class of the reference; resolve it by calling that resource's own tool
