Skip to main content
Glama

remove_etcd_member

Destructive

Remove one member from the etcd cluster of an Ankra-provisioned cluster (Hetzner, OVH, UpCloud, DigitalOcean, or Scaleway) - the cleanup step when a dead control-plane node is being replaced: its stale etcd member must be removed before a replacement joins, or quorum math breaks. Executes on a HEALTHY control-plane peer (node_id/node_name - never the node whose member is being removed) over SSH-via-bastion; a node that is not control-plane is refused before any removal is attempted. The scheduler re-reads live membership immediately before acting and REFUSES to remove: a member still observed serving (by any health source, not only its own endpoint), a member whose health could not be read at all (unknown is not dead), the member of the node the command runs on, an id that does not uniquely match, or any non-learner voter whose removal would leave fewer healthy voters than the post-removal quorum - a refusal comes back as a structured result explaining why, with the live member list as evidence. This is an irreversible control-plane change: a removed member cannot rejoin with its old identity. Call get_etcd_members first and pass the member_id it listed (hex or decimal). Not available for imported or managed-Kubernetes clusters, nor (yet) Proxmox/HPE Morpheus.

Input Schema

NameRequiredDescriptionDefault
node_idNoUUID of the HEALTHY control-plane peer to run the removal from. Preferred when known (from list_cluster_nodes).
member_idYesThe etcd member id to remove, in hex (as listed by get_etcd_members) or decimal form.
node_nameNoExact name of the healthy control-plane peer to run the removal from. Alternative to node_id.
cluster_idNoUUID of the cluster. Optional when a cluster is selected.
cluster_nameNoExact name of the cluster. Optional when a cluster is selected.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already flag destructiveHint=true and non-idempotent, but the description adds far more: execution runs over SSH-via-bastion on a healthy peer, non-control-plane nodes are refused pre-flight, an enumerated refusal list (member still serving, unknown health, self-node, ambiguous id, quorum-violating voter), the fact that refusal returns a structured result with the live member list, and that removal is irreversible with no rejoin under the old identity.

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?

Long, but front-loaded with purpose and prerequisites before the refusal detail, and nearly every sentence carries operational weight. The dense refusal enumeration could be tightened slightly, but it is not padding.

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 destructive, 5-parameter tool with no output schema, the description covers prerequisites, execution context, refusal semantics and the shape of a refusal response. An agent has everything needed to call it correctly and interpret failure.

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 would be 3, but the description adds real value: member_id must be the one listed by get_etcd_members (hex or decimal), and node_id/node_name must be a HEALTHY control-plane peer that is never the node whose member is being removed. That constrains parameter choice in a way the schema text only partially mirrors.

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?

States a specific verb and resource ('Remove one member from the etcd cluster') and immediately scopes it to Ankra-provisioned clusters on named providers. It distinguishes itself from the read sibling get_etcd_members, so an agent can tell the two apart without opening a schema.

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?

Gives the exact triggering scenario (cleanup when a dead control-plane node is replaced, before quorum math breaks), the required prerequisite ('Call get_etcd_members first'), and explicit exclusions (imported/managed-Kubernetes, Proxmox/HPE Morpheus). Nothing about when to reach for this over its neighbours is left to inference.

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.

Resources