Bernstein - Multi-agent orchestration
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 |
|---|---|
| tasks | {
"list": {},
"cancel": {},
"requests": {
"tools": {
"call": {}
}
}
} |
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| bernstein_runA | Start an orchestration run by posting a task to the Bernstein server. A run executes real work and takes minutes to hours. This call
returns as soon as the run is queued, not when it finishes. Do not
re-issue it while waiting: that starts a second run. To follow the
run, wait Args:
goal: Description of what you want Bernstein to accomplish.
role: Specialist role to assign (backend, frontend, qa, security, …).
priority: 1=critical, 2=normal, 3=nice-to-have.
scope: Task scope - small, medium, or large.
complexity: Task complexity - low, medium, or high.
estimated_minutes: Rough time estimate in minutes.
parent_task_id: When set, the run is created as a subtask of this
task, and the parent transitions to Returns:
JSON with the created task ID, title and status, plus the
|
| bernstein_statusA | Liveness, task counts, cost, and an optional filtered task list. One read answers the whole "how is the server doing" question: the
tool responding at all is the MCP liveness check, Args:
status: Optional task filter - open, claimed, in_progress, done,
failed, blocked, or cancelled. When set, the matching tasks
are included under Returns:
JSON with |
| bernstein_claimA | Claim the next eligible task and return a verifiable claim receipt. Drives the dependency-gated claim path: a task is offered only when
every id in its Args:
claimer_id: The claiming worker's identity.
role: Only claim tasks for this role (e.g. Returns:
JSON of the signed claim receipt ( |
| bernstein_post_messageA | Post a message to a task's mailbox as a signed journal entry. Wraps the worker mailbox: the message is DLP-redacted, HMAC-chained
onto the mailbox journal, Ed25519-signed, and mirrored to the audit
chain ( Args:
task_id: The task the message is addressed to.
body: The message body (<= 4096 bytes).
sender: The posting worker's identity.
kind: Typed message kind - one of Returns:
JSON of the signed mailbox journal entry ( |
| bernstein_post_artifactA | Attach a journal-anchored artifact to a task you hold the claim for. The artifact is stored content-addressed, sealed into the lineage
spine, appended to the task's Merkle-chained journal, and mirrored to
the audit chain. The returned record IS the receipt: its identity is the
spine entry hash, and any reviewer can re-verify the content hash offline
against the same chain Args:
task_id: The task to attach the artifact to. You must hold its claim.
key: The artifact slot; reposting a key appends a new version.
artifact_type: One of Returns:
JSON of the chain-anchored artifact record ( |
| bernstein_cancelA | Cancel one task and its subtask tree; the orchestrator keeps running. Posts to Args: task_id: The root task to cancel. Its descendants are cancelled with it. reason: Optional reason recorded on the cancellation. Returns: JSON with the cancelled root task, its status, and the count of cascaded descendants - or the task's current state when it was already terminal. |
| bernstein_shutdown_orchestratorA | Shut down the ENTIRE Bernstein orchestrator for this project - every
run, every worker - not one task; to stop a single run and keep the
orchestrator alive, use Writes Args: workdir: Project root directory (default: current directory). Returns: Confirmation message. |
| bernstein_approveA | Sign off a finished result that is waiting on a decision. The tool reads the task first and acts only on Every other status is refused with a structured error naming the current status, and no state-changing request is sent:
Args: task_id: ID of the task to approve. note: Approval note recorded as the result summary. Returns: JSON with the task id, its new status, and which approval was granted - or a structured refusal naming the current status. |
| bernstein_completeA | Report the result of work you are executing. This is the completion verb of the MCP worker loop (claim with
It is not a way to clear a task out of the way. A parent in
Args: task_id: ID of the task to complete. result_summary: What the work produced. The task server rejects an empty summary and fails the task instead. Returns: JSON with the task id, its new status, and the recorded summary - or a structured refusal naming the current status. |
| bernstein_run_statusA | Return a verifiable Tasks-extension handle for a run, by run id. The handle's status is a pure projection of the run journal, and it
embeds the run's audit-chain head so the client can later verify the
task it watched corresponds to the audited run ( Args:
run_id: The run to project. Either identifier Returns:
JSON of the Tasks-extension task-handle body ( |
| bernstein_task_capsuleA | Return the worker's context capsule, optionally verified offline. Args: task_id: The task whose capsule to read. Must be a plain identifier - path separators and traversal are refused. workdir: Project root directory (default: current directory). verify: When true, recompute the capsule offline from the run journal and audit chain and include the verdict. Returns:
JSON of the capsule projection (and, when |
| load_skillA | Discover skills, or load a named skill body, reference, or script. Omit Args:
name: Optional skill name (for example Returns:
The compact index when |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| orchestrate_goal | Plan a Bernstein orchestration run for a single goal. |
| triage_failed_tasks | Triage the most recent failed tasks and propose next actions. |
| cost_recap | Summarise Bernstein cost by role for a stated window. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| bernstein_capability | Runtime capability card: transports, auth, tiers, meter, spec rev. |
| skill_index | Compact index of loadable Bernstein skills and their content hashes. |
| lineage_stats | Summary counts over the entire lineage log. |
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/sipyourdrink-ltd/bernstein'
If you have feedback or need assistance with the MCP directory API, please join our Discord server