Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault

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

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
council_startA

Convene a blind multi-model council on a hard problem. Fans brief out to one seat session per model — each an independent file-reading agent bound to working_dir — runs them CONCURRENTLY in the background, and returns IMMEDIATELY with a council_id and blind hat labels (hat1, hat2, ...). The hat->model mapping is hidden (revealed only via council_reveal), so you can synthesize across seats without knowing which model produced which answer. Poll for answers with council_poll.

models: OPTIONAL — omit it (or pass []) to get the default one-seat-per-family roster. working_dir defaults to the server's current working directory.

kind: what this council is FOR, e.g. "bug", "review", "architecture" (default "adhoc"). Purely descriptive record-keeping — never affects routing — but persisted so the council history shows why a council was convened.

council_pollA

Poll a council for seat STATUS ONLY (blind — no model names, no answer bodies, so it never bloats your context). Each hat returns its status; a DONE hat returns answer_chars (size hint); a RUNNING hat returns live progress {turns, output_tokens} read natively from its transcript so you can tell it's advancing vs wedged. With wait=True this long-polls up to timeout seconds, returning early as soon as a new seat finishes or all are done.

FIRST poll: use timeout >= 360 — seats take minutes, and a short first poll just burns turns on no-op status checks (the long-poll returns EARLY the moment any seat finishes, so a big timeout costs nothing). Subsequent polls can be shorter. Call repeatedly until done=true, THEN fetch each answer with council_answer(council_id, hat).

council_answerA

Fetch ONE seat's FULL answer text by blind hat label (e.g. 'hat2') — the content council_poll deliberately omits to keep your context lean. Call once a hat shows status=done in council_poll. Never reveals the model.

council_askA

Cross-examine ONE seat by its blind hat label (e.g. 'hat2') within a council. Runs a follow-up turn on that seat's session (it may re-read files) and returns its reply synchronously. Never reveals the model. Use to probe disagreements before you synthesize.

council_revealA

De-anonymize a council: return the hat->model mapping and per-seat status. For human/debug insight AFTER synthesis — do NOT use this to weight the diagnosis.

council_is_model_repliedA

Blind check: has model finished answering (status=done) in this council? Returns True/False only — never the hat label or answer — so you can confirm a model participated without breaking hat blindness for scoring/synthesis.

council_scoreA

Score each seat's reply — the MANDATORY end step of every council, AFTER your synthesis and BEFORE council_reveal (so scores can't be biased by model identity). scores: [{"hat": "hat1", "score": 7, "notes": "verified root cause, thin on fix"}, ...] score is 1-10; judge correctness against the verified code, depth, and actionability. The server resolves hat->model itself, feeding the per-model quality leaderboard (see model_scores).

model_scoresA

Per-model quality leaderboard from all council scores: avg_score, eval count, and the 5 most recent scores per model.

seat_healthA

Dump the seat/model availability cache: per-model status (ok/cooldown), the classified reason (balance/quota), the last error, and cooldown expiry. Seats record capacity failures here; council_start skips models in cooldown. (Renamed from model_health, Decision #20; backing table renamed in P2.)

council_closeA

Mark a council closed. Records are KEPT (council, hats with answers/errors, and seat sessions) for history/debugging — nothing is deleted. Score the seats with council_score FIRST if you haven't.

chat_startA

Open a direct 1:1 chat with one seat (seats.yaml key). Returns {chat_session_id, seat, model}. model defaults to the seat's first healthy model.

chat_sendA

Send a message to the chat's seat — ASYNC; returns immediately with {task_id}. Poll the turn with chat_poll.

chat_pollB

Long-poll a queued chat turn; returns early when the turn completes: {status, reply?, usage?, progress?}.

chat_historyC

Message-level history of a chat: [{role, content_preview, ts, usage}, ...].

chat_listB

List chat sessions, optionally filtered to a single working directory.

chat_closeA

Mark a chat closed. History is KEPT.

list_seatsA

List the seats defined in seats.yaml: [{name, models, runner_kind}, ...]. A seat is an LLM family served by a local agent CLI (claude/pi/codex).

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/blessthis/llm-council'

If you have feedback or need assistance with the MCP directory API, please join our Discord server