Skip to main content
Glama

BotSpot: AI Trading, Backtests and Bots

Add plan item

add_plan_item

Adds a user-visible item to the active plan when new work is discovered. When working in the current conversation, omit planId unless you already have the actual plan id; never pass a plan item id as planId. All new-item fields belong inside the nested item object, including item.position, item.parentItemId, and item.dependsOnItemIds. Never send position, label, or status at the top level. To insert a row, set item.position to the desired position. Include the exact field completionCriteria with model-visible completion criteria for the new item. Use this to append a new checklist/follow-up row; update_plan_item and update_plan_items cannot create a future position that does not already exist. Only add genuinely new executable work. Notes, evidence, limitations, fallbacks, or outcomes about work already represented by a plan item belong on that existing item. If the current attempt is partial or unsuccessful but the next action is still the same represented work, update the existing row instead of adding a child row. When adding work after a completed unsuccessful/partial item, the new item must reference that prior attempt with parentItemId or dependsOnItemIds so the audit chain is explicit. When more than one prior unsuccessful/partial attempt remains unresolved, use item.dependsOnItemIds with every unresolved attempt id; item.parentItemId is only enough for exactly one unresolved attempt. If add_plan_item returns unresolved attempt ids, retry once with item.dependsOnItemIds set to that exact id list, or use replace_plan_items once when you need to repair statuses and add the follow-up in one visible mutation. Do not add a waiting validation/start row for external work before the relevant domain tool has returned the real external id. First execute the active item with the relevant model-visible tools; then add or update the validation row with the returned externalKind/externalId evidence inside item.evidence (or patch.evidence for an update). A failed plan mutation changes no items. Adding an in_progress item records visible plan state only and does not perform domain work.

Input Schema

NameRequiredDescriptionDefault
itemYes
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.
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.9/5.0
Behavior5/5

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

Beyond the single destructiveHint=false annotation, the description discloses important mutation behavior: failed mutations change no items, an in_progress item records visible state only, and adding does not perform domain work. It also explains retry behavior for unresolved attempt ids and the audit-chain requirement via parentItemId or dependsOnItemIds.

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

Conciseness4/5

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

The description is front-loaded with the core action and the most important placement caveat, and nearly every sentence carries operational guidance. It is dense and somewhat repetitive, especially around nesting top-level fields, so it is not maximally concise.

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

Completeness5/5

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

There is no output schema and annotations are sparse, so the description must carry behavioral context; it does. It covers creation vs update, failure semantics, follow-up audit chaining, unresolved-attempt retries, and external-wait sequencing in enough detail for an agent to call the tool correctly.

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

Parameters5/5

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

Schema coverage is 67%, but the description adds substantial meaning beyond the schema. It explicitly says to omit planId in the current conversation, never pass a plan item id as planId, put all new-item fields inside the nested item object, use item.position to insert a row, and include completionCriteria.

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 description states a specific verb and resource: it adds a user-visible item to the active plan when new work is discovered. It also distinguishes creation from update by naming update_plan_item and update_plan_items and explaining why they cannot create a future row.

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?

It gives explicit when-to-use guidance: append a new checklist/follow-up row only for genuinely new executable work. It also gives when-not-to-use guidance: notes, evidence, limitations, and outcomes about existing work belong on that existing item, and partial retries should update the existing row instead of adding a child.

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.