Skip to main content
Glama

tree_vocabulary

Lists all defined tree kinds or defines and refines a kind's meaning, params, links, and solver-contract operations so checked knowledge bases stay semantically consistent.

Instructions

The tree's semantics, as data. No arguments: list every kind defined (stored + pinned packages + the domain's starter kinds). With kind + description: define or refine what that kind means, and optionally what its params/links stand for and what operations it affords — name: {contract, description, params_doc, medium}, binding the kind to a solver contract that makes sense on it (fetch the full contract at operation://{kind}/{name}, execute with tree_solve). Nothing branches on kinds — they mean exactly what this vocabulary says.

Input Schema

NameRequiredDescriptionDefault
kindNo
linksNo
paramsNo
operationsNo
descriptionNo

Output Schema

NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.2

TDQS

A3.5/5.0
Behavior3/5

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

No annotations, so the description carries the full burden. It discloses that kind definitions are pure data with no branching behavior and explains the solver-contract binding format, which is genuinely useful. However, it says nothing about mutation semantics: whether redefining a kind overwrites prior definitions, who may do it, or whether existing bindings are preserved.

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?

Front-loads the core concept ('The tree's semantics, as data') and wastes no sentences, but the body is a dense run-on relying on em dashes and semicolons that makes the two modes harder to parse than they need to be. It would benefit from explicit mode separation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained. Given five undocumented parameters and a write-capable path with no annotations, the description covers the shape of the calls but leaves the consequences of defining/refining a kind under-specified.

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 coverage is 0%, so the description has to compensate and it partially does: kind, description, params, links, and operations are each mentioned with a role, and the operations shape (name: {contract, description, params_doc, medium}) is spelled out. But 'what its params/links stand for' is the only treatment of two of the five parameters, so the map is thin for a 5-param tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource: it is the vocabulary of kinds, with two clear arg-driven modes (list vs. define/refine). It names related artifacts (operation://{kind}/{name}, tree_solve) but doesn't explicitly distinguish itself from sibling tree_rule / tree_package, which likely also deal with kind semantics.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The when-to-use is encoded cleanly by argument presence: no arguments = list everything; kind + description = define/refine. It also tells the agent that execution happens via tree_solve rather than here. What's missing is an explicit statement of when NOT to use this (e.g., vs. tree_rule or tree_package).

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