Skip to main content
Glama

add_planned_symbol

Register intended symbols and dependency edges in a virtual planning workspace to declare architecture before coding; automatic policy checks block forbidden dependencies.

Instructions

Register an intended new or modified symbol and its dependency edges in a virtual planning workspace. Use this tool to declare your architectural design before writing code. Do NOT use mutate_graph (which modifies the physical index) for planned changes. Prerequisites: You must first call create_planning_workspace to obtain a valid plan_id. Side effects: This is an in-memory mutation that adds a virtual node to the specified workspace. It automatically runs pre-flight policy checks; if the proposed symbol or its dependencies violate .graphenium/policy.json rules (for example, forbidden dependencies), the tool returns a PRE_FLIGHT_VIOLATION error and blocks the registration. If the target_symbol does not exist, the tool returns an error and records nothing. Duplicate calls for the same symbol are idempotent. Returns a success confirmation or a structural violation error.

Input Schema

NameRequiredDescriptionDefault
labelYesLabel for the new planned symbol
plan_idYesPlanning workspace ID
relationYesRelation type (calls, depends_on, implements, etc.)
file_pathYesFile path where the symbol will be added
target_symbolYesID or label of the existing node to link to

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.8/5.0
Behavior5/5

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

With no annotations, the description carries the full disclosure burden and does so thoroughly: it identifies the operation as an in-memory virtual mutation, states that pre-flight policy checks run against .graphenium/policy.json, names the PRE_FLIGHT_VIOLATION failure mode, notes the target_symbol-missing failure records nothing, and declares duplicate calls idempotent. This is behavioral context an agent could not get from structured fields.

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 routing constraint and prerequisite are front-loaded before the behavioral detail, which is the right order. The closing sentence 'Returns a success confirmation or a structural violation error' largely restates the earlier pre-flight violation paragraph, so one sentence does not fully earn its place.

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 the description compensates by summarizing return outcomes (success confirmation vs. structural violation error). Combined with prerequisites, side effects, and idempotency, an agent has everything needed to invoke this correctly on the first attempt.

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 meaning beyond the schema: plan_id must come from a prior create_planning_workspace call, and target_symbol must reference an existing node or nothing is recorded. It does not elaborate on relation values (no enums present) or file_path format, which keeps it short of a 5.

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 and resource plus scope: 'Register an intended new or modified symbol and its dependency edges in a virtual planning workspace.' It explicitly distinguishes itself from mutate_graph by name, so an agent can separate the virtual/planned path from the physical-index path without opening any 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?

It states both when to use it ('declare your architectural design before writing code') and when not to ('Do NOT use mutate_graph ... for planned changes'), and names the required predecessor tool create_planning_workspace. The routing decision is fully specified with no inference left to the agent.

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