Skip to main content
Glama

Create a node in a ground

create_node

Creates a node. Follows the plant vocabulary protocol — see umtri://rules/vocabulary. type ∈ trunk · limb · twig · leaf · vein. Role is derived (structure / object / action). Build leaf-first: when adding a leaf/vein, create only the missing trunk/limb/twig ancestors on its path, then the leaf — do NOT pre-build every trunk, then every limb, then leaves (see Build order in umtri://rules/vocabulary). Aim for a faithful, COMPLETE map of the project, not a summary: every meaningful module/screen/endpoint/table/integration should become a node (grouped at the information-unit grain, not one-per-file). A real project yields many leaves — under-capturing to a few nodes is the more common mistake. See Completeness in umtri://rules/system-structure. parent ∈ existing node id; omit to create a root-level node. season ∈ existing season id; omit to use the active "now" season. Past seasons are normally rejected, but allowed while the ground is transplanting (project.transplanting=true) — nodes added then are auto-stamped metadata.transplanted=true for audit. See umtri://rules/transplant. The tool validates against protocol policies. Hierarchy violations are rejected. Soft issues (reserved-domain labels, leaf↔vein heuristic, trunk naming) come back as warnings in the response — reconsider before continuing if warnings appear. A trunk carries metadata.kind ∈ front · server · database · library · device · tooling, and its limbs follow that kind's axis: same domain name across trunks with no suffix ("예약", not "예약 API"), no technical-layer limbs, and at most one common limb (metadata.common=true). Read umtri://rules/trunk-kinds before creating a trunk or a limb under one. After creating a leaf/vein, consider its connections: if it calls/feeds another node add an api (create_api), if it depends on/is built on another add an edge (create_edge). The response carries a connectionCheck reminder. See umtri://rules/system-structure (Connections). Do not open a new season just because none fits — attach to the now-season, or ask the user. create_season needs their confirmation (umtri://rules/seasons). When realizing a human-drawn plan brief, any detail nodes you add should carry metadata.plan=true and the realized node needs metadata.implements — see umtri://rules/plan. A trunk is never plan: metadata.plan on a trunk is rejected.

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>",
      "type": "<type>",
      "label": "<label>"
    },
    "name": "create_node"
  }
}

Input Schema

NameRequiredDescriptionDefault
slugYesGround slug.
tagsNo
typeYesNode type. Use trunk/limb/twig/leaf/vein per the metaphor.
labelYesNode label, visible in the tree.
parentNoParent node id. Omit for root-level (a new trunk).
seasonNoSeason id. Omit to use the active "now" season.
metadataNoFree-form metadata. For `leaf` and `vein`, set `metadata.implements` to an array of file paths (or `path#identifier` for multi-export files) — this is how the graph maps concept → code and is expected on essentially every leaf/vein. Use `metadata.placeholder=true` for intentionally-empty structure.
sproutedAtNoEffective creation time (ISO 8601 with offset, e.g. "2024-03-15T09:00:00Z"). Omit to use the current moment. Use only when back-filling history of a project that existed before Umtri — e.g. importing past commits or migrating a tree. The visualization timeline (sibling order, season visibility, events) follows this value.
descriptionNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.6/5.0
Behavior5/5

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

No annotations exist, so the description carries the full burden and does so: it discloses validation against protocol policies, that hierarchy violations are rejected, that soft issues (reserved-domain labels, leaf↔vein heuristic, trunk naming) return as warnings, and that responses carry a connectionCheck reminder. It also explains the past-season exception during transplanting and the auto-stamped metadata.transplanted=true audit flag, plus that metadata.plan on a trunk is rejected. This is unusually rich behavioral disclosure.

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

Conciseness3/5

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

Every sentence carries information, but it is delivered as one dense paragraph with no headings, bullets, or line breaks, and much of it is deferred to external rule URIs. The most critical build-order rule sits mid-paragraph rather than front-loaded. Content is justified; presentation is not.

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 9-parameter, nested-metadata mutation tool with no annotations and no output schema, the definition covers creation rules, validation behavior, warnings, and follow-up connections thoroughly. The main remaining gap is the response shape: it mentions warnings and a connectionCheck reminder but never states whether the created node id is returned, which an agent needs for subsequent create_edge/create_api calls.

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?

With 78% schema coverage the baseline is 3, but the description adds genuine meaning beyond the schema: the trunk metadata.kind enumeration (front · server · database · library · device · tooling) and its limb-axis rules, metadata.plan/implements semantics for plan realization, and the season transplant exception. It leaves tags, description, and sproutedAt unaddressed, but the metadata semantics it contributes go well past the schema text.

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 ('Creates a node') and immediately enumerates the node taxonomy (trunk · limb · twig · leaf · vein) with derived roles. It also distinguishes itself from siblings by routing connection work to create_api and create_edge, and season creation to create_season. An agent can tell what this tool does and what it does not do.

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 explicit when/when-not rules: build leaf-first and only create missing ancestors rather than pre-building trunks and limbs; omit parent for root-level nodes; omit season to use the active 'now' season; do not open a new season just because none fits — attach to now-season or ask the user, since create_season needs confirmation. It also names alternatives for follow-up work (create_api, create_edge) and warns against under-capturing the graph.

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.