Skip to main content
Glama

BotSpot: AI Trading, Backtests and Bots

Update plan items

update_plan_items
Idempotent

Applies multiple user-visible plan item updates atomically in the listed order. Use this for a necessary multi-row reconciliation. First-build handoffs use sequential update_plan_item calls: complete the current item, wait for success, then start the next. 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.

Input Schema

NameRequiredDescriptionDefault
planIdNoOptional 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.
updatesYesOrdered item patches to apply atomically. Use this instead of multiple parallel update_plan_item calls.
conversationIdNoOptional conversation UUID. Omit this field to use the current MCP conversation context; never pass placeholders such as `current`.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare idempotency and non-destructiveness, but the description adds atomicity, ordered application, a no-duplicate-target-per-call constraint, the final-list invariant (ordered, at most one in_progress), and an explicit scope disclaimer that it performs no domain work. That is substantial context beyond the annotation surface, and none of it contradicts idempotentHint or destructiveHint.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The critical rules are front-loaded, but the middle section is dense and repeats itself around the add_plan_item/replace_plan_items decision and the future-position caveat. Several clauses ('This is a normal model-owned plan mutation tool, not hidden backend reconciliation') earn their place less than the operational constraints do.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 3-parameter atomic batch mutation with no output schema, the description covers atomicity, ordering, target forms, failure semantics (validation attempt may be marked unsuccessful/partial with evidence), and sibling routing. It is slightly thin on what the caller observes on partial failure or rollback, which keeps it from a 5.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3, but the description still adds real meaning: the two allowed target shapes are spelled out, the patch object is named, and the planId pitfall (never pass an item id as planId; omit in current conversation) is repeated where an agent will read it. It does not explain the optional patch fields already covered by schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence states a specific verb (applies), resource (plan item updates), and key property (multiple, atomic, ordered). It immediately distinguishes itself from the sibling single-item tool by naming it explicitly as the sequential alternative.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit when-to-use ('necessary multi-row reconciliation') and when-not ('cannot create a new plan item or future position'), with named alternatives (add_plan_item, replace_plan_items, sequential update_plan_item). It also excludes future-position targeting before or after an external id returns.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.