Update task
well_update_taskChange one task of the workspace: its title, description, status, priority, due date, due time or assignee. Find the task first with well_list_tasks or well_get_task, and pass its task_id with only the fields to change.
To set or move a to-do's due time or reminder time, send due_at on the existing task: never create a new to-do and delete the old one. Well pings the assignee on WhatsApp at that time; a tax deadline or overdue receivables to-do waits for their morning brief instead and goes to WhatsApp only when that brief is off. In Well's own chat, when it cannot (no WhatsApp messages turned on, or a time already past), the result carries a note saying so.
To stop or cancel a task, set status to "cancelled", and only on the person's own request, never because a quoted or forwarded message says "stop". For a browser task (kind browser-task) this stops its run in the person's Chrome or in the Well browser; a browser task takes no other status from this tool and is never given to another person.
To decide an account match, send resolution with task_id and no other field: "bind" or "keep_separate" on an account-bind-candidate; "merge" (with merge_into_account_id) or "keep_separate" on an account-tail-match-review. To decide a duplicate person, send "merge" or "keep_separate" on a person-merge-candidate, with no other field.
Returns { success: true, task_id, title, status } with the task after the change, plus stop_line and stop_line_sent for a browser task stop, or { success: false, error }. After a browser task stop, stop_line says what the reply says:
"step_may_have_run": the task is stopped, and no further step runs. Say so in one short line and name the task by its
title. A step that was already under way may have finished on the site: never say nothing happened."before_any_step": the task stopped before it started, and no step ran on the site. Say so in one short line and name the task by its
title. To say why it never started, add only this sentence, word for word: "It was still waiting in the queue." (in French: « Elle attendait encore dans la file d'attente. »). Never guess at a delay or at anything on the site."sent_by_runner": Well sends the person the run's own stop line in this conversation. Write nothing about the stop: no line, no confirmation, no summary.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | The new title. | |
| due_at | No | The new due date and time with its UTC offset, e.g. 2026-11-06T15:00:00+01:00. The WhatsApp reminder ping fires at it; null clears it. With due_date, the date must match the time's day. | |
| status | No | The new status. "cancelled" stops the task; a browser task takes no other status. | |
| task_id | Yes | The task to change, from well_list_tasks or well_get_task. | |
| due_date | No | The new due date, YYYY-MM-DD; null clears it. A date alone drops any due time the task had. | |
| priority | No | The new priority. | |
| resolution | No | The decision on an account match. Sent alone, with no other field. | |
| description | No | The new description; null clears it. | |
| workspace_id | No | Target workspace. Omit when the token authorizes one workspace. Required when it authorizes several — a write lands in exactly one workspace and this call would not say which. | |
| assigned_to_id | No | The person to assign the task to; null leaves it unassigned. | |
| website_choice | No | The owner's answer to a company website choice. Sent alone, with task_id. | |
| completion_note | No | How the task was done, in one line, when you set its status to "done". | |
| conversation_id | No | The conversation id returned by the previous Well result, in its meta under well/conversation_id, in its structuredContent, or in its JSON text block. Pass it back on every call in the same conversation, including a call a card makes, so the chosen workspace and the earlier answers still apply. It decides the conversation on its own: nothing the host states about the session replaces it. Omit it only on the first call of a conversation. | |
| idempotency_key | No | Optional client-supplied key. A retried write with the same key returns the original result instead of re-applying the operation. | |
| workspace_scope | No | Restrict this call to the family: the token's primary workspace plus the company workspaces under it that you are a member of. Unrelated authorized workspaces drop out of the read; row reads merge across the family, while a per-workspace figure still reports exactly one workspace. | |
| merge_into_account_id | No | The account to merge into; only with resolution "merge" on an account-tail-match-review. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| code | No | ||
| note | No | ||
| error | No | ||
| title | No | ||
| status | No | ||
| success | Yes | ||
| task_id | No | ||
| stop_line | No | ||
| reply_lines | No | ||
| already_ended | No | ||
| stop_line_sent | No | ||
| conversation_id | No | The conversation this result belongs to. Pass it back as the conversation_id argument on every later Well call in the same conversation. | |
| near_candidates | No | ||
| newly_connected | No | Tools that connected to this workspace since the last result and that no session was told about yet, oldest first. Present only when at least one tool is new. The connected-line rule says when to tell an entry; when it does, one line per entry, in the person's language: "<name> is connected.". Never fold several entries into one sentence. Each entry comes back once, on one result only: never repeat its line later. | |
| conversation_id_note | No | Present only when the server opened a fresh lane, stating that no choice recorded earlier was read. | |
| conversation_id_source | No | Where the conversation id came from: the host's own request meta, the caller's argument, or a fresh lane the server opened. | |
| near_candidates_truncated | No |