llm-council
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": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| council_startA | Convene a blind multi-model council on a hard problem. Fans 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
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 |
| 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
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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