Update record
update_recordPatch fields on a record by id. Pass object_type + id + a patch object of the fields to change (a null value clears a custom field). Works for custom objects (shallow-merges into the record's data; owner-scoped unless the object is shared) AND the built-in objects with an update verb (account, contact, opportunity, subscription, task, touch — fix an activity's subject/summary/time/type — and report: refining a saved View the user already has is update_record(report, {id, patch:{definition}}), NOT a new one — only make a fresh View for a genuinely different perspective), where it routes to the same domain logic as the typed update tools. Returns the full updated record (fresh state). For a complete sequence plan, patch steps (retain saved ids), expected_revision (sequence mcp_revision), expected_steps [{id,revision}] for every live step, and request_id (UUID, reuse only for an identical retry). Steps save together; people still enrolled prevent changes to their timing, channels or order. Maintain verbs, each passed on its own: task subtasks replaces the whole checklist [{id?, title, done?}]; contact engaged:true confirms the person (a ratchet); opportunity board_rank:{before?, after?} orders a card in its current column; sequence_step position onto a neighbour's slot swaps the two (fenced while people are partway through).
When to use: Edit a record: pass object_type + id + a patch. Built-in objects route to the same domain logic as the folded typed update tools (e.g. advance a deal with {stage}, complete a task with {status:'done'}). Custom records are owner-scoped unless the object is shared. Retiring a converted lead (status 'converted', its account/contact/opportunity ids, converted_at and deleted_at) is the LAST step of lead conversion — see the lead conversion guide, an MCP resource at capable://guide/leads.
Example: Update opportunity : set stage to verbal.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | A uuid. | |
| patch | Yes | Only the fields to change, key → new value; at least one key is required, and null clears a custom-object field (custom data is shallow-merged, not replaced). | |
| object_type | Yes | Object key of the record being patched, e.g. account, contact, task, report, a custom object's key, or rollup / automation (admin-only; the id from describe_schema); an unknown key returns the valid types and writes nothing. | |
| expected_revision | No | Optional record revision from a reviewed update; a changed record is refused without writing. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | ||
| record | No | ||
| result | No | ||
| updated | No | ||
| object_type | No | ||
| custom_field_definitions | No |