Skip to main content
Glama

local_ydb_bootstrap

Idempotent

Creates a local YDB tenant topology: static node with GraphShard flags, CMS tenant, and dynamic nodes. Validates container names and shared ports first, then returns plan unless confirm=true.

Instructions

Bootstrap a tenant topology: static node with GraphShard flags and loopback bindings for static plus every configured dynamic gRPC port, configured CMS tenant, and all dynamic nodes declared by profile.dynamicNodeCount. Before returning or executing a plan, configured container names must be distinct from the static container and all shared-network ports must be valid and unique. Nodes start in index order; before the next node starts, readiness requires the exact Docker container to be running, not restarting, stable by container ID and RestartCount across two checks, and registered by its IC port in viewer/json nodelist. An existing running or stopped static container is reused only after the full profile compatibility check, including every configured gRPC binding. Use only for tenant, GraphShard, dump/restore, or dynamic-node scenarios; without confirm=true this returns the full plan and creates nothing.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
confirmNoMust be true to execute planned commands. Omit or false for plan-only output.
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.

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. Addedv0.1.13
  3. Removedv0.1.12
  4. Addedv0.1.5
  5. Removedv0.1.4
  6. Changed3 schema fields changedv0.1.1
    • changedInput schema / properties / configPath / description
      Previous value: -"Explicit local-ydb config file path to load for this tool call."New 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."
  7. First observedv0.1.0

TDQS

A4.4/5.0
Behavior5/5

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

The description substantially enriches the annotations by disclosing validation behavior (distinct container names, unique ports), ordered node startup, readiness requirements, and the conditional reuse of existing static containers only after a full profile compatibility check. It also clarifies that without confirm=true nothing is created, which is important given readOnlyHint=false.

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 long but information-dense, front-loading the high-level purpose before diving into validation, startup ordering, and reuse rules. Each clause contributes meaningful operational detail, though a slightly tighter structure could improve scannability.

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?

For a complex multi-node bootstrap operation with no output schema, the description is unusually complete: it covers scope, execution gating, validation rules, node startup order, readiness criteria, and container reuse policy. An agent has enough context to select and invoke the tool correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all three parameters. The description adds a little extra context around confirm (plan-only behavior) and profile (dynamicNodeCount), but mostly reinforces what the schema already states. It does not introduce significant new parameter-level semantics.

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 names a specific verb and resource: 'Bootstrap a tenant topology' and enumerates exactly what is included (static node with GraphShard flags, loopback bindings, CMS tenant, dynamic nodes). This clearly distinguishes it from siblings like local_ydb_bootstrap_root_database or local_ydb_create_tenant.

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 explicitly states when the tool is appropriate: 'Use only for tenant, GraphShard, dump/restore, or dynamic-node scenarios.' It also explains plan-only behavior without confirm=true. It stops short of naming specific alternative sibling tools, but the usage boundaries are clear.

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