throng
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| THRONG_MCP_CONFIG | No | Config path instead of ~/.config/throng/config.yaml | |
| THRONG_MCP_CACHE_DIR | No | Cache dir instead of ~/.cache/throng (session records, kept 14 days) |
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
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| cancel_throngletA | Cancels the session's running turn (session/cancel) and drops its queued messages; a pending wait_thronglet returns the cancelled error. The session is idle afterwards and accepts a new send_message. No-op on an idle session. |
| list_harnessesA | Lists valid agent values for run_thronglet: installed harnesses with their models and effort levels, installed or configured ones that cannot run with the reason, and the server limits. Built-in harnesses that are not installed are not listed. |
| list_throngletsA | Lists thronglet sessions on this machine: description, agent, cwd, state (running | queued | idle | failed), queue length, accepts_messages (false: send_message to it fails), timestamps and the last error. Live state is this server's; a session run by another throng instance shows what its record says. |
| run_throngletA | Runs an agent of an installed harness (see list_harnesses) on a task in cwd and returns its final message as JSON {session_id, text, stop_reason, usage, duration_s, warnings?}; with schema, structured replaces text. description names the thronglet for listings. With background: true the call returns {session_id, state, queued} as soon as the turn runs; collect the result with wait_thronglet. |
| send_messageA | Sends the next message into an earlier session (session_id from run_thronglet) and returns the same JSON as run_thronglet. A message to a session whose turn is still running waits for that turn to end: turns on one session never overlap. With background: true the call returns {session_id, state, queued} as soon as the turn runs; collect the result with wait_thronglet. steer: true interrupts the running turn and delivers this message next; queued messages follow it. A session its harness cannot continue (resume or load) takes no further message, steer included: list_thronglets shows it as accepts_messages: false. |
| wait_throngletA | Waits until a session has no running or queued turn and returns the last turn's result: the same JSON as run_thronglet, or its error. With timeout_s elapsed returns {session_id, state, queued} instead. Idempotent: the result is stored with the session. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 6 tools
Each tool maps to a clear, distinct operation: running a new agent, waiting on a session, sending a message to an existing session, cancelling, and two distinct listing tools (harnesses vs sessions). The run/send/wait/cancel lifecycle boundaries are well delineated.
Five of six tools follow a consistent verb_noun pattern (run_thronglet, wait_thronglet, cancel_thronglet, list_harnesses, list_thronglets). send_message breaks the suffix convention but is still clear and consistent in its verb-first style.
Six tools tightly cover the agent-session lifecycle (run, wait, message, cancel) plus discovery (list harnesses, list sessions). No bloat, no thin spots.
The full session lifecycle is covered: launch, observe, continue/steer, cancel, and both discovery surfaces. Background collection via wait_thronglet rounds out async workflows, leaving no obvious dead ends.