Update plan items
update_plan_itemsApplies multiple user-visible plan item updates atomically in the listed order. Use this for handoffs between existing rows and multi-row reconciliation: first resolve the current item, then start the next existing item in the same ordered updates array. Preserve completed attempts; use unresolved rows or new linked follow-up work instead of reopening them. Each update target is required and must be {type:"id", itemId} or {type:"position", position}; each update has a patch object. Do not update the same target item twice in one update_plan_items call. If a validation attempt is unsuccessful, one update may mark that current item completed with outcome.status="unsuccessful" or "partial" and evidence; follow-up work references the attempt. This tool cannot create a new plan item or future position; use add_plan_item with a nested item object, or replace_plan_items when you need to resolve existing rows and add a new row in one visible plan mutation. Do not use this tool to target a future validation position before or after a domain tool returns an external id. After that tool returns, either update only the existing item here and then call add_plan_item, or use replace_plan_items for the whole visible list. When working in the current conversation, omit planId unless you already have the actual plan UUID; never pass a plan item id as planId. The final visible plan must still be ordered and must have at most one in_progress item. This is a normal model-owned plan mutation tool, not hidden backend reconciliation. It does not perform domain work, hide tools, or change backtests, deployments, trades, files, or strategy state.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"updates": "<updates>"
},
"name": "update_plan_items"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| planId | No | Optional plan UUID. In the current conversation, omit planId unless you already have the actual plan id from get_active_plan or a wake message. Never pass a plan item id here; target plan items through target.itemId or target.position. | |
| updates | Yes | Ordered item patches to apply atomically. Use this instead of multiple parallel update_plan_item calls. | |
| conversationId | No | Optional conversation UUID. Omit this field to use the current MCP conversation context; never pass placeholders such as `current`. |