Skip to main content
Glama

File a node without moving the focus

vivac_add

File a node for a finding or sibling task without changing the current focus; it belongs in the tree but is not what happens next.

Instructions

File a node without touching the stack: the focus stays exactly where it was. Use it for something that belongs in the tree but is not the next thing about to happen -- a finding surfaced while working on something else, a sibling task filed for later, a piece of an existing structure being brought in. vivac_push is for what comes next; this is for what was just noticed. Look first with vivac_find: what the tree already holds is not filed twice. A finding is one node for each thing found that you tell the person, written when you tell them. One that asks nothing of anyone -- a lesson, a measurement -- is a record: close it right away with vivac_done, its outcome starting with Record:.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
armNoCommands that verify this rule, one per entry, all run in arm_dir. Only for a rule; a rule without one is judged. vivac never runs them.
refNoPaths or identifiers this node is about.
whyNoWhy this matters.
rootNoBorn at the root, with no parent, instead of under the focus. Refused together with parent.
typeNogoal, task, decision, question, constraint, finding, assumption, pillar or rule. Defaults to goal at the root, task otherwise. A pillar is titled with its name and what it restricts, in the project's own words.
titleYesWhat this node is, in a few words.
blocksNoIts parent cannot close while this one is still open.
parentNoThe node it hangs from. Defaults to the current focus, or the root if there is none.
againstNoOnly for a decision: a pillar or rule it was judged against and a sentence on how it holds, as one entry: "r12: the write path stays local". Repeat for each one.
arm_dirNoThe folder every arm given here runs in, relative to the folder that holds .vivac: vivac, say, or . for that folder itself. Required with arm, refused without it. It has to exist.
governsNoGlobs of files this node's work is expected to touch.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.17.1

TDQS

A4.3/5.0
Behavior4/5

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

Annotations disclose the safety profile (write, non-destructive, non-idempotent), so the description's job is to add context. It does: dedup constraint via vivac_find, the one-node-per-finding rule written when the person is told, and the record-closing workflow. It does not explicitly warn that a repeated call creates a duplicate node, but the dedup guidance and idempotentHint=false together convey that.

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 core distinction from vivac_push is front-loaded in the first sentence and there is no filler per se, but the description is dense and runs long with several trailing workflow rules that could be tightened. Appropriately sized for an 11-parameter tool, though not maximally lean.

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?

No output schema exists and 11 params (1 required) give this tool real complexity, but the description covers the primary use cases, the dedup prerequisite, sibling routing, and node-creation semantics. It does not explain return values or what filing produces, which is the remaining gap.

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% across all 11 parameters, so the schema already documents every field including type, arm, ref, why, parent and governs. The description adds meaning for the 'finding' and record node concepts but no per-parameter syntax or format. Baseline 3 applies when the schema does the heavy lifting.

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 effect ('File a node without touching the stack: the focus stays exactly where it was') and explicitly contrasts with the sibling vivac_push ('is for what comes next; this is for what was just noticed'). An agent can distinguish it from vivac_push, vivac_find, and vivac_done 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?

Gives explicit when-to-use cases ('a finding surfaced while working on something else, a sibling task filed for later'), names the alternative it is not (vivac_push), prescribes a prerequisite ('Look first with vivac_find: what the tree already holds is not filed twice'), and routes follow-up work to vivac_done for records. Nothing about selection 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.