kassi-CLI
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
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": true
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/ui": {}
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| stepA | Advance the FSM by one transition. Actions (entry: select_mode):
Transitions:
|
| reset_sessionA | Reset this session's FSM to its entrypoint. |
| fork_atA | Rewind the session to the state captured after history[seq=N]. |
| fork_from_pastA | Resume a past Burr run by loading persisted state. |
| list_resourcesA | List all available resources and resource templates. Returns JSON with resource metadata. Static resources have a 'uri' field, while templates have a 'uri_template' field with placeholders like {name}. |
| read_resourceA | Read a resource by its URI. For static resources, provide the exact URI. For templated resources, provide the URI with template parameters filled in. Returns the resource content as a string. Binary content is base64-encoded. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| _graph_resource | Static description of the Application's FSM topology. Read once per session. The graph doesn't change after mount; a model that has this resource doesn't need to keep polling ``theodosia://next`` to plan ahead. Each tool response already carries the current state and the valid next actions, so runtime polling is only useful for forensic inspection of an already-running session. Shape: { "name": "<server name>", "entrypoint": "<starting action>", "actions": [ {"name", "description", "reads", "writes", "required_inputs", "optional_inputs"}, ... ], "transitions": [ {"from", "to", "condition": "<expr or null>"}, ... ] } |
| _state_resource | Current Application state as JSON. Internal Burr keys (``__PRIOR_STEP``, ``__SEQUENCE_ID``) are filtered. Non-JSON-representable values are coerced to strings, with the affected keys listed under ``_theodosia.coerced_keys`` so the client knows the round-trip is lossy. |
| _next_resource | Action names reachable from the current state. For non-branching graphs this is one name. For branching graphs, all conditionally-reachable next actions are listed. After a terminal action this is an empty list, meaning the FSM is done. |
| _history_resource | Timeline of every action attempted in this session. The payload is a JSON array (no wrapper object) of entries each carrying ``seq``, ``ts``, ``action``, ``inputs``, ``state_after``, ``valid_next_actions``, ``refused``, and ``refusal_reason``. Both successful steps and refused attempts (invalid transitions, unknown actions) appear. In factory-mode deployments each session sees only its own history; in shared-app deployments each session sees the timeline of its own calls against the shared FSM. |
| _subruns_resource | Index of sub-Application runs spawned in this session. Each entry has ``id``, ``uri``, ``label``, ``started_ts``, ``ended_ts``, and the ``parent_action`` that spawned it. The ``uri`` field is the fully-rendered ``theodosia://subruns/{id}`` address, ready to read without constructing it from a template. Empty list if no actions in this session called ``spawn_subapp``. |
| _trace_resource | Burr's on-disk LocalTrackingClient log for this session's Application. Returns the JSONL records Burr writes for every action step (action enter/exit, state diff, timing). The Application must have been built with ``.with_tracker(LocalTrackingClient(...))`` for this resource to return data; otherwise the response is ``{"error": "no_tracker", "message": "..."}``. Responses are capped at the most recent 1000 records to keep the wire payload bounded. For full traces, read the log file directly off disk at the path Burr's tracker writes to. This is the cross-reference between theodosia's in-memory ``theodosia://history`` (one entry per attempted action, including refusals) and Burr's own structured trace format (one entry per state transition, full Burr replay shape). |
| _session_resource | Tracker coordinates for the current MCP session's Application. Returns ``{project, app_id, app_dir, partition_key}`` so a client (or the agent itself) can locate this session's tracker data on disk without guessing. Useful for terminal tooling like ``theodosia watch <project>`` that tails the LocalTrackingClient JSONL, and for any out-of-band inspection of ``~/.burr/<project>/<app-id>/log.jsonl``. ``project`` and ``app_dir`` are null when no ``LocalTrackingClient`` is attached; ``app_id`` and ``partition_key`` are always populated because they live on the Application directly. |
TDQS
Scored across 6 tools
The core FSM `step` tool is a single entrypoint that dispatches to ~14 embedded actions, while the named tools (step, fork_at, fork_from_past, reset_session) all deal with session/FSM lifecycle and heavily overlap in purpose—all four are about navigating or resetting the state machine state. The `read_resource`/`list_resources` pair is distinct, but the boundary between step-driven control flow and fork/rewind/resume tools is genuinely blurry and would cause misselection.
The tool names use consistent snake_case and a Verb_Noun structure (read_resource, list_resources, reset_session, fork_at, fork_from_past), which is fairly consistent. However, `step` and `fork_at`/`fork_from_past` use dramatically different verb styles—`step` is vague while the others are specific—and there's no clear naming cue that these all orchestrate the same state machine. The embedded actions inside `step` are well-named, but the surface-level naming lacks a cohesive pattern.
Six tools is a well-scoped count for an orchestration server whose real surface is a state machine. The design deliberately centralizes the ~14 pipeline actions behind `step`, so six surface tools appropriately capture both the FSM orchestration (step, reset, forks) and resource access (read/list). This is reasonable for the stated purpose.
The FSM covers an impressively complete lifecycle: entry, intermediate pipeline stages, validation/fix loops, telemetry correlation, analysis, screening, and final reporting—plus reset and multiple resume/fork mechanisms. However, there are notable gaps: no tool exposes the FSM's current state/history/valid-next directly (only indirectly via `step` errors and `theodosia://history`), and no mechanism to inspect available code actions before stepping. The `read_resource` mechanism partially covers this, but it's not a first-class surface capability.