quern
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| QUERN_FLIGHT | No | Set to 0 to turn off flight recording (default is on). | |
| QUERN_REGISTRY | No | The registry path for quern (part of the nondeterminism boundary). |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/ui": {
"mimeTypes": [
"text/html;profile=mcp-app"
]
}
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| tree_setA | Create or update the node at The write answers with any rule it broke — on the branch itself or on one that contains it. Treat that as the verdict: it is the same thing tree_check would tell you, said at the moment you caused it. |
| tree_getB | Read the Quern at |
| tree_findA | Search the Quern instead of walking it — when the user names an element,
locate it in one call. |
| tree_briefA | The working set — one line per current entry: kind, path, name, the links
it declares, the params still ungrounded, the rules red on it; under headings
where the tree has sections (a kind declared |
| tree_deleteB | Delete the node at |
| tree_commitA | Apply a change-set — [{op: 'set'|'delete', path, node?}] — atomically,
under authoring's one invariant: the committed tree's red set never changes
silently. Green stays green; a set that would CREATE reds is refused whole
(nothing written) and returns them by name; commit deliberately by naming
each in |
| tree_vocabularyA | 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 |
| tree_ruleA | The tree's checks, as data. No arguments: list the rules. With name +
expr: register one — a boolean expression whose builtins are STRUCTURAL only
(param, nodes, params_of, count, sum/len/abs/min/max, ctx, superseded,
unsupported(p, rel) — how many of what p leans on via |
| tree_checkA | Run every applicable rule at or under
|
| tree_rollA | What the tree holds now, as {path, kind, digest} per node — and, given a roll you kept from last time, what changed since. Every rule runs against the tree as it is, so no rule can see what was
REMOVED: a deleted node is not red, it is absent. The roll is what makes
absence and silent rewriting mechanical. Keep the
|
| tree_solverA | The tree's artifacts, as data — capabilities you submit, stored by
content hash and served from artifact://{sha}. No arguments: list them.
With name + wasm_b64 (base64 of the content, whatever the medium): register
one. |
| tree_solveA | Run a registered solver on a branch it may read — sandboxed wasm, or a
native contract a package ships (native contracts see the effective tree;
wasm sees only the slice at |
| tree_packageA | The semantic package library — capitalized vocabulary, rules and solvers, shared across every account on this server. No arguments: list the library and this workspace's pins. install='name@version' pins a package — its whole dependency closure applies (its requires, transitively), your own entries always winning; a broken closure (missing dep, two versions of one name) is refused at pin time. The pin records the package's content digest, so it keeps meaning these exact semantics even against another library. uninstall removes the pin. publish submits {name, version, description, requires: [{name, version}], vocabulary, rules, solvers: [{name, description, reads, wasm_b64, medium: wasm|web|prose}], examples}. Publishing is proof-gated: every rule must be exercised by the package's own examples and pass — examples run with the requires closure staged beneath, so extending packages prove themselves in the semantics they will live in; every wasm solver must meet the ABI (web/prose artifacts are stored content-addressed, served from artifact://{sha}, never executed). requires pin exact versions of already-published packages. Versions are immutable — ship a new one to evolve. |
| tree_appA | Open the Quern navigator — an interactive view of the tree and its semantics (kinds, params with provenance, links, rules) where the user can browse and coedit. Returns the root slice; the UI then navigates and edits through the same tree_* tools you use. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| Quern navigator |
TDQS
Scored across 14 tools
Most verbs have distinct purposes, and the descriptions sharply separate read modes (tree_get, tree_brief, tree_find, tree_roll) from write modes (tree_set, tree_commit). However, tree_solver versus tree_solve and the adjacent semantic tools (tree_vocabulary, tree_rule, tree_solver, tree_package) could cause brief hesitation.
All 14 tools consistently use the tree_ prefix plus a snake_case verb/noun, e.g. tree_get, tree_set, tree_commit, tree_vocabulary. The convention is predictable across reads, writes, checks, and semantic operations.
Fourteen tools are well-scoped for a rich tree workspace covering CRUD, search, validation, atomic commits, semantics, solvers, packages, and UI. Each tool maps to a distinct operational layer without feeling padded.
The surface covers the core lifecycle: read/search, create/update/delete, validation, atomic commit, semantic vocabulary/rules, solvers, and package sharing. Minor gaps exist around explicit move/rename/copy or import/export operations, though these can be approximated with existing set/delete and package tools.