Character Update
character_updatePatch an existing VTT character sheet while preserving unspecified fields, merging nested data after a read and replacing arrays or scalars. Use for partial sheet changes, not new sheets.
Instructions
Patch an existing sheet while preserving unspecified fields (owner or campaign DM). Use character_get first; use token_hp_update for a signed HP change and character_create for a new sheet. data is a request-field object, e.g. {"data":{"hp":{"current":5}}}. Only name/data/tokenImageUrl are allowed at the top level. Nested data dictionaries merge recursively after a GET; arrays/scalars replace whole values and null is an explicit value, not deletion. The caller calculates rules values using the sheet's own gameSystem. Updates are locked only within this process; concurrent browser saves may be lost outside this tool's GET-to-PUT window. On servers supporting updatedAt guards, changes after this tool's GET produce a visible conflict; this does not protect stale intent from an earlier character_get. Upstream parsed validation may discard undeclared fixed-system fields even though this bridge preserves them outbound. REST errors retain diagnostics. Returns {ok:true,data} on success; tool-body failures return {ok:false,error} with optional diagnostic data. Argument-schema errors are MCP errors.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | Nonempty request patch containing only name, data, tokenImageUrl. Sheet changes go inside data as an object; arrays replace, null is explicit. | |
| character_id | Yes | Existing sheet ID to modify; upstream enforces owner or campaign DM access. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||