Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
PLINTH_DATA_DIRNoWhere the registry lives. Give each client its own: one server per directory~/.plinth
PLINTH_FACTS_ALLOW_HOSTSNoComma-separated host:port pairs. Required when PLINTH_FACTS_NET_PROFILE is allowlist; refused by the other profiles.
PLINTH_FACTS_NET_PROFILENoNetwork profile: deny-all, loopback, private or allowlist. If set to allowlist, PLINTH_FACTS_ALLOW_HOSTS is required.loopback
PLINTH_FACTS_MAX_REDIRECTSNoHops a call may follow when it asks to (0–20)5
PLINTH_FACTS_DEFAULT_STALE_SECONDSNostale threshold when a query gives none3600

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

CapabilityDetails
tools
{
  "listChanged": false
}

Tools

Functions exposed to the LLM to take actions

NameDescription
facts.measure.httpA

Make one HTTP request and return the raw status, headers and body, with the time it was observed and the IP actually connected to. Measures from the server's network position. It does NOT judge the result: a 500 received cleanly is a successful observation (ok:true, http_status 500). It does not check the status against an expectation, does not validate the body, does not retry, and does not follow redirects unless asked.

facts.measure.wsA

Connect to a WebSocket, listen for a given number of seconds, and return the messages that arrived, each with its absolute time and its offset from the open. Measures from the server's network position. Zero messages is a valid observation, not an error: it does NOT wait for a particular message, does not interpret payloads, does not reconnect, and does not say whether silence is a problem.

facts.recall.assertA

Write a claim into the project registry: statement, evidence, who observed it and when. It does NOT measure anything and it does NOT check that the evidence supports the statement — that would be interpreting. It checks only that the evidence exists and belongs to this project, and embeds it so the claim stays auditable.

facts.recall.historyA

Return the raw events of one claim, in order, exactly as they sit in the log. This is the auditable proof that nothing was rewritten: an assert, then a retract if there was one.

facts.recall.queryA

Read claims from the project registry. It NEVER measures and opens no sockets: it returns what was recorded, each claim with its own age and stale mark, plus remeasure_with — the tool and arguments to measure it again yourself. Retracted claims are hidden unless asked for; they are never gone.

facts.recall.retractA

Mark a claim as retracted, with a reason and an author. The claim is NEVER deleted: the original line stays byte for byte and the retraction is a new event. There is no delete tool and no parameter that removes anything.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A4.2/5.0

Scored across 6 tools

Disambiguation5/5

The two namespaces (measure vs recall) cleanly separate observing the network from recording claims, and within each namespace the actions are distinct. measure.http vs measure.ws differ by protocol, while recall.assert/query/retract/history map to write, read, soft-delete, and raw audit respectively, with descriptions reinforcing the boundaries. No two tools can be plausibly confused.

Naming Consistency5/5

Every tool follows the same dotted namespace pattern facts.<domain>.<action> with a single lowercase verb, producing two tidy groups (measure.* and recall.*). The convention is applied uniformly with no camelCase/snake_case mixing or stray verb styles.

Tool Count5/5

Six tools is well scoped for the domain: four cover the fact-log lifecycle (assert, query, retract, history) and two cover measurement (http, ws). Each tool has a clear, non-redundant role and nothing feels padded or missing at the count level.

Completeness4/5

The immutable-log lifecycle is complete: assert, query, retract (with history as the audit trail), and deliberately no update/delete, which is defensible by design. Measurement covers http and ws, but other network probes (DNS, ping, TCP) are absent, a minor gap if broader measurement was intended.

Maintenance

ActivityMaintained
ResponsivenessNo issues