Skip to main content
Glama

Soft-delete a node

delete_node

Sets removed_at on the node. By default this tool rejects deletion if the node has any active descendant, so a subtree is never lost silently. To soft-delete the node together with all its active descendants, pass cascade=true — only when the human asked to remove the whole branch; soft-deleted nodes cannot be restored. The response lists the cascaded ids. EXCEPTION — while the ground is transplanting (project.transplanting=true), the active-descendant guard is lifted (subtree cascade allowed) and you may pass hard=true to permanently remove import mistakes, including grown (past-season) nodes. Once the human roots the ground, normal guards return.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "slug": "<slug>",
      "id": "<id>"
    },
    "name": "delete_node"
  }
}

Input Schema

NameRequiredDescriptionDefault
idYesNode id.
hardNoPermanently delete (incl. descendants via FK cascade) instead of soft-delete. Only honored while the ground is transplanting; irreversible — use for import cleanup.
slugYesGround slug.
cascadeNoAlso soft-delete every active descendant. Without it, a node with active children is rejected.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.4/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden and does well: it discloses the soft-delete mechanism, irreversibility ("soft-deleted nodes cannot be restored"), the descendant guard, the transplant exception, and the response contents. Some operational details remain opaque, notably what the rejection looks like (error shape) and whether the tombstoned node stays visible in reads.

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?

Front-loaded with the core mutation, then default guard, then opt-in cascade, then the exception block — a logical escalation order. It runs long and the EXCEPTION section is dense with parentheticals ("(past-season)"), but every clause carries decision-relevant information rather than filler.

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 mutation tool with no annotations and no output schema, the description supplies what's missing: irreversibility, default rejection semantics, the transplant-mode override, and an explicit note that the response lists cascaded ids. An agent can decide between soft, cascade-soft, and hard deletion without further lookups.

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 adds genuine meaning beyond the schema strings: the coincidence between cascade and the active-descendant guard, and the temporal precondition that hard is only honored during transplanting. It also names the return value of cascade. Minor gap: it never mentions slug, though that parameter is self-explanatory in schema.

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 the concrete mechanism ("Sets removed_at on the node") rather than restating the title, which immediately distinguishes this from sibling delete_edge, delete_api, and delete_bug. It also scopes the operation (node within a ground slug) so an agent knows exactly which resource is affected.

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 conditions: cascade=true only "when the human asked to remove the whole branch," and hard=true only while project.transplanting=true. It also states the default behavior and the guard that rejects nodes with active descendants, so the agent knows which parameter combination selects which outcome.

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.