Skip to main content
Glama

local_ydb_remove_dynamic_nodes

Destructive

Remove dynamic tenant nodes one by one and verify each disappears from the YDB nodelist. Supports explicit nodeIds/containers or a safe default that removes only one-off suffixes.

Instructions

Remove dynamic tenant suffix nodes one at a time and verify nodelist disappearance when the node IC port can be resolved. Without containers, nodeIds, or startIndex, only one-off suffixes above profile.dynamicNodeCount are eligible and the highest suffix is removed first. Explicit selectors or startIndex may remove a configured suffix and create drift that bootstrap or restart restores. Rollback guidance uses bootstrap/restart for configured nodes and add_dynamic_nodes with matching suffixes and ports for one-off nodes. The primary dynamicContainer is always protected.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
countNoNumber of dynamic nodes to remove when containers and nodeIds are omitted. Defaults to 1.
confirmNoMust be true to execute planned commands. Omit or false for plan-only output.
nodeIdsNoExplicit YDB dynamic-node IDs to remove. IDs may resolve to configured or one-off suffix containers; the profile's primary dynamicContainer is not removable through this option.
profileNoNamed profile from local-ydb.config.json. Defaults to config.defaultProfile.
configPathNoAbsolute path to an explicit local-ydb config file. Missing, unreadable, oversized, or invalid explicit files fail closed instead of using defaults.
containersNoExplicit suffix dynamic-node container names to remove. Configured suffixes can be selected and become runtime drift; the profile's primary dynamicContainer remains protected.
startIndexNoMinimum suffix to consider removable. Without explicit containers or nodeIds, defaults to profile.dynamicNodeCount + 1 so configured suffixes are excluded. Explicit selectors default to 2. An explicit startIndex always overrides either default.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changedv0.1.21
    • changedInput schema / properties / configPath / description
      Previous value: -"Explicit local-ydb config file path to load for this tool call. Useful when the MCP server should pick up a different config without restart."New value: +"Absolute path to an explicit local-ydb config file. Missing, unreadable, oversized, or invalid explicit files fail closed instead of using defaults."
    • addedInput schema / properties / configPath / minLength
      Added value: +1
  2. Changed4 schema fields changedv0.1.18
    • changedInput schema / properties / containers / description
      Previous value: -"Explicit extra dynamic-node container names to remove."New value: +"Explicit suffix dynamic-node container names to remove. Configured suffixes can be selected and become runtime drift; the profile's primary dynamicContainer remains protected."
    • changedInput schema / properties / count / description
      Previous value: -"Number of extra dynamic nodes to remove. Defaults to 1."New value: +"Number of dynamic nodes to remove when containers and nodeIds are omitted. Defaults to 1."
    • changedInput schema / properties / nodeIds / description
      Previous value: -"Explicit YDB dynamic-node IDs to remove. IDs must resolve to extra dynamic-node containers; the profile's base dynamic node is not removable through this option."New value: +"Explicit YDB dynamic-node IDs to remove. IDs may resolve to configured or one-off suffix containers; the profile's primary dynamicContainer is not removable through this option."
    • changedInput schema / properties / startIndex / description
      Previous value: -"Minimum suffix to consider removable. Defaults to 2."New value: +"Minimum suffix to consider removable. Without explicit containers or nodeIds, defaults to profile.dynamicNodeCount + 1 so configured suffixes are excluded. Explicit selectors default to 2. An explicit startIndex always overrides either default."
  3. Addedv0.1.13
  4. Removedv0.1.12
  5. Addedv0.1.5
  6. Removedv0.1.4
  7. Changed3 schema fields changedv0.1.1
    • addedInput schema / properties / configPath / description
      Added value: +"Explicit local-ydb config file path to load for this tool call. Useful when the MCP server should pick up a different config without restart."
    • changedInput schema / properties / confirm / description
      Previous value: -"Must be true to execute commands. Omit or false for plan-only output."New value: +"Must be true to execute planned commands. Omit or false for plan-only output."
    • addedInput schema / properties / profile / description
      Added value: +"Named profile from local-ydb.config.json. Defaults to config.defaultProfile."
  8. First observedv0.1.0

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, but the description adds substantial behavioral context beyond them: the primary dynamicContainer is always protected, removal is highest-suffix-first, explicit selectors create runtime drift, and there are concrete rollback strategies. This is exactly the kind of safety-relevant detail an agent needs before invoking a destructive tool, and it contradicts no annotation.

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

Conciseness5/5

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

Five sentences, each carrying distinct, non-redundant information: core action, default selection rule, drift warning, rollback guidance, and protected resource. The purpose is front-loaded and no sentence is filler. For a destructive tool with 7 parameters and no output schema, this density is warranted rather than bloated.

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 destructive tool with no output schema, the description covers action, default behavior, edge cases, rollback, and protection. The qualifier "when the node IC port can be resolved" raises an unresolved question — what happens when it cannot be resolved? — which is a minor gap. Overall, however, an agent has enough to invoke this tool correctly and understand its failure-recovery story.

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 the baseline is 3, but the description adds genuine cross-parameter interaction semantics: the eligibility rule when all selectors are omitted, the startIndex default interplay ("defaults to profile.dynamicNodeCount + 1"... "Explicit selectors default to 2"), and the drift risk when selectors target configured suffixes. These relationships are not visible in the schema alone.

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 opens with a specific verb+resource pair — "Remove dynamic tenant suffix nodes one at a time" — and adds a concrete verification outcome ("verify nodelist disappearance"). This clearly differentiates it from siblings like local_ydb_add_dynamic_nodes and local_ydb_start_dynamic_node, which are creation/start operations, while this is the removal counterpart. The scope is unambiguous.

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

Usage Guidelines4/5

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

The description gives clear context for when the default mode is safe ("Without containers, nodeIds, or startIndex, only one-off suffixes above profile.dynamicNodeCount are eligible") and warns of the drift consequence of explicit selectors. It names add_dynamic_nodes as the rollback path for one-off nodes and bootstrap/restart for configured nodes. It lacks an explicit 'use X instead of Y' directive, but the conditions and consequences are well-specified.

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