Model Council
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| COUNCIL_ALLOW | No | CIDRs, bare addresses, or names (private, loopback, any) allowed to reach the HTTP server. Required for non-loopback HTTP binding. | |
| COUNCIL_PROXY | No | Default proxy route for all members. Omit to follow HTTP_PROXY/HTTPS_PROXY; use 'direct' for no proxy, a URL for a specific proxy, or 'env' to force the environment proxy. | |
| COUNCIL_CONFIG | No | Path to a JSON config file. If set, it is the most explicit configuration source and overrides the roster and default config file. | |
| COUNCIL_MODELS | No | Comma-separated list of model member IDs. Each ID gets its own variables named after it, e.g. GPT5_BASE_URL. Defaults to 'chatgpt,glm' if omitted. | chatgpt,glm |
| COUNCIL_RETRIES | No | Default number of retries for transient failures. Default 2. | 2 |
| COUNCIL_TIMEOUT | No | Default per-attempt timeout in seconds. Default 180. | 180 |
| COUNCIL_ENV_FILE | No | Path to an environment file to load. | |
| COUNCIL_HTTP_HOST | No | Host and port for the HTTP server, e.g. 0.0.0.0:8000. | |
| COUNCIL_TRUST_PROXY | No | Reverse proxies whose X-Forwarded-For header may be believed. | |
| COUNCIL_ALLOW_ORIGIN | No | Permitted browser Origin for HTTP requests. Can be repeated. | |
| COUNCIL_RETRY_BACKOFF | No | Default retry backoff in seconds, doubling after each attempt. Default 1. | 1 |
| COUNCIL_MATERIALS_ROOT | No | The one directory that 'materials' paths may name over HTTP. Without it, HTTP deployments refuse file paths. |
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 |
|---|---|
| askA | Ask ONE member of the council a question and return its answer.
The member is stateless and cannot see this conversation, so
|
| ask_allA | Ask several members the SAME prompt in parallel, returning their answers side by side and labeled by model. By default every configured member answers. Pass
One round is a survey of opinion. Two is worth the extra latency and tokens when the answers are likely to disagree and the disagreement is the interesting part.
A guest speaks once and does not revise, so it appears in round 1 only. The transcript says so, and says it is not a retraction. From round 2 the members are told to answer its strongest point rather than pass over it: a seat that cannot restate itself is the one a discussion drops by default, and dropping it reads in the transcript exactly like answering it.
Note what is and is not assigned. No member is told to argue a side it does not
hold, so what the members say is still what they think; the assignment lives in
one extra call they are not told about, and they answer it as they answer any
other seat. It speaks every round rather than once, because an objection that
cannot reply to its own rebuttal is quoted rather than represented, and by the
third round the table is arguing with its paraphrase of it. Members may carry different weights — how much this council trusts each one. When they do, every answer is labeled with its weight and the transcript ends with the ranking and how to read it. The members are never told each other's weights; a model told it is outranked stops arguing, and its dissent is what you came for.
|
| reviseA | Run ONE more round of an existing discussion: show every member what was said last round and ask it to revise. This is You would rather decide after reading. A voice in the discussion is one only you can produce — a subagent you spawned, or your own answer — and you want it to be a full member rather than a one-off: something that answers, reads the others, and revises alongside them. The loop, in the second case:
Each entry in
Pass the same |
| revision_promptA | Build the exact prompt a seat should be given for the next round — for the one seat this server cannot ask itself: yours.
Pass the same Material is named in the prompt rather than pasted into it, at the position the members were given it. Open those files for your seat before you hand it the rest: a seat that revises without the document is arguing about something it has not read, and the transcript will not show it. |
| list_councilA | List the council's members: their ids, labels, target models, weights, wire format, endpoint, call budget, and whether each one is ready to answer.
A member may have Cheap and local — makes no network calls. Use this to find out which ids you
may pass to |
| probe_modelsA | Ask a member's endpoint which model ids it actually exposes, by calling its /models route. Pass Use this when a call fails with an unknown-model error, or to discover what else a provider offers — model ids move fast. Not every endpoint has that route. A seat that refuses the listing is not thereby a seat that cannot answer — this establishes only the first, and the output says so rather than leaving you to read the second into it. |
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/Totti0135/model-council'
If you have feedback or need assistance with the MCP directory API, please join our Discord server