teambrrr
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| OPENROUTER_API_KEY | No | OpenRouter API key. Read lazily per call from this environment variable or ~/.claude/.openrouter_key. Optional; without it, the provider falls back to a deterministic mock. | |
| PERSONA_RECRUITER_BUDGET_USD | No | Hard call budget ceiling in USD, read fresh from the persisted ledger so it survives a restart. Defaults to 1.00. | 1.00 |
| PERSONA_RECRUITER_BUDGET_CALLS | No | Maximum number of provider calls per process. Defaults to 200. | 200 |
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 |
|---|---|
| recruitB | Create a named recruit backed by an OpenRouter model. Validates the model id against the OpenRouter catalog. |
| askB | Send a message to one recruit (name) or several in parallel (names). Recruits receive the shared channel digest plus their own history. |
| discussA | Round-robin discussion between two or more recruits. Round 1 is each recruit's opening position; every later round hands each of them the previous round's replies, attributed by name, and asks them to push back or refine. Returns the full transcript grouped by round. |
| auditionA | Send one cheap probe to each candidate model in parallel and score the replies mechanically: honesty about missing context (the probe names a file that does not exist), length discipline, latency and cost. Returns a ranked table plus the raw replies. Recruits nobody — you pick, then call recruit. Pass |
| local_modelsA | Report the local model hosts (Ollama at :11434, llama-server at :8080, plus anything configured in /config.json) with the models each one serves. A host that is not running is reported as such, with the command that would start it. Costs nothing and probes nothing. |
| evaluate_roleA | Run repeated, role-specific cases against 1-4 candidate models. Uses deterministic evaluators, fatal safety criteria, consistency, latency and cost evidence; returns 2-3 offers but hires nobody. Pass |
| spendA | Per-recruit breakdown of the session: calls made, dollars spent, and what each call was for (ask, discuss, audition, judging, role-pack evaluation), plus the totals against both ceilings — the dollar cap (PERSONA_RECRUITER_BUDGET_USD) and the call ceiling (PERSONA_RECRUITER_BUDGET_CALLS). Reads the attribution log; costs nothing and calls nobody. |
| brief_compactA | A brief is written once at hire time and goes stale as the room moves on — and it rides on every call, so a stale brief actively misinforms, at a price. This returns the CURRENT brief plus the channel since the last compaction, and the instruction for rewriting it in <=800 words with superseded facts dropped. It calls no model: YOU are the author. Read what it returns, write the replacement, then call brief_update({name, briefing}) with it. show_persona reports how many events have passed since the last compaction. |
| assign_taskB | Create a durable task for a hired recruit. This records and assigns work; a Hermes/OpenClaw worker must claim and execute it under its own tool and approval policy. |
| tasksA | Get one task by id, or list tasks filtered by recruit and/or status. |
| task_decideA | Resolve a pending runtime approval. Approval returns the task to assigned so a worker can reclaim it; rejection terminates it. Runtime policy remains authoritative. |
| task_cancelA | Cancel a non-terminal task idempotently. This records intent; the runtime observes the event and stops work. |
| rosterA | List current recruits with model, tags, call count and spend. |
| dismissB | Archive a recruit; their persona and history move to /.dismissed/. |
| show_personaA | Print a recruit's full system prompt (never truncated) with their model, fallback, tags, params, current revision and the list of past revisions. Pass |
| update_personaA | Change a recruit's system prompt, tags, params, model or fallback_model. The superseded version is snapshotted as a numbered revision first, so nothing is lost. Their memory (history.jsonl) is untouched — they keep every exchange. Refuses if the recruit does not exist; it never creates one. |
| brief_updateA | Replace a recruit's onboarding brief wholesale. The superseded copy is snapshotted to briefings/.md, exactly like a persona revision, so nothing is lost. Use this when the user says "re-onboard " or when the project has moved on far enough that the brief they were hired with is now misleading. The persona and their memory are untouched. |
| pinA | Add one line of standing room context. Every recruit sees the pin board on every ask and discuss, after their onboarding brief and before the channel transcript. Pin decisions as they are taken ("we ship Postgres, not Dynamo"), not narration. Budget is ~2000 chars across all pins — over it, the call is refused and you must unpin or shorten. |
| unpinA | Remove one pin by id. Run pins() first to see the ids. |
| pinsA | List every pin (global and project) with its id, scope and author, plus the budget used. |
| rollback_personaA | Restore a past revision as a NEW revision. The chain is append-only: the revision you are leaving is kept, not overwritten, so you can roll forward again. |
| export_hermesA | Write a hired recruit out as a hermes-agent profile (SOUL.md, profile.yaml, config.yaml, .env) so it can EXECUTE — schedules, tools, approvals — under hermes' own guardrails. The room keeps the persona and the correspondence; the exported teammate is pointed at that history read-only. Your OpenRouter key is never copied into the profile. Refuses to overwrite an existing profile. Run with dry_run first. |
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 22 tools
Most tools target a distinct resource and action, and the two candidate-evaluation tools are clearly separated by probe depth and scoring methodology. A few adjacent pairs like ask/discuss and spend/roster overlap in territory, but the descriptions draw sufficient boundaries.
The set is mostly snake_case verb_noun, but it has notable deviations: noun-only commands like pins, tasks, and roster, plus noun-verb forms like task_decide and task_cancel sitting beside verb-noun assign_task. The names are readable but do not follow a single predictable pattern.
At 22 tools, this server is on the heavy side and spans several subdomains: personas, candidate evaluation, tasks, pins, spend, and export. Each tool appears purposeful, but the overall surface area feels more like a suite than a tightly scoped MCP server.
The persona lifecycle is well covered from recruit through show, update, rollback, and dismiss, and the candidate evaluation workflows connect cleanly to hiring. Minor gaps exist: dismissed recruits cannot be restored, and there is no general task-update tool beyond approval and cancellation.