Skip to main content
Glama
sipyourdrink-ltd

Bernstein - Multi-agent orchestration

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault

No arguments

Capabilities

Features and capabilities supported by this server

CapabilityDetails
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

NameDescription
bernstein_healthA

Liveness check - always succeeds if the MCP server is running.

Use this to verify the Bernstein MCP connection is still alive.

Returns: JSON with status "ok".

bernstein_runA

Start an orchestration run by posting a task to the Bernstein server.

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.

Returns: JSON with the created task ID, title, and status.

bernstein_statusA

Return a summary of all task counts from the Bernstein server.

Returns: JSON with total, open, claimed, done, failed counts plus a per-role breakdown.

bernstein_tasksA

List tasks from the Bernstein server.

Args: status: Optional filter - open, claimed, in_progress, done, failed, blocked, or cancelled.

Returns: JSON array of task objects.

bernstein_costA

Return cost summary (total USD spent and per-role breakdown).

Returns: JSON with total_cost_usd and per-role cost breakdown.

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 depends_on is present in completed_ids. Unlike a raw claim, the result is a signed, content-addressed claim receipt the worker holds and can re-verify offline against the audit chain (bernstein audit verify), not a mutable task projection. A filter that matches no eligible task returns a signed refusal receipt - a claim attempt is never a silent skip.

Args: claimer_id: The claiming worker's identity. role: Only claim tasks for this role (e.g. backend). project: Only claim tasks in this project namespace. capability: Only claim tasks requiring this capability. completed_ids: Task ids whose dependencies are satisfied; a task is eligible only when all of its depends_on are listed. max_attempts: Skip tasks at or above this attempt count. claimer_card_fingerprint: sha256: fingerprint of the claimer's agent card key, bound into the receipt.

Returns: JSON of the signed claim receipt (taskId, granted, backlogHead, filterDigest, chainHead, receiptHash, signature, pollToken, ...).

bernstein_updateA

Post an incremental progress update as a signed journal entry.

Wraps the worker mailbox: the update is DLP-redacted, HMAC-chained onto the mailbox journal, Ed25519-signed, and mirrored to the audit chain (task.mailbox_message) before returning. The result IS the signed journal entry - a worker holds a progress record it can verify offline against the same chain bernstein audit verify walks, not a bare status string.

Args: task_id: The task the update is addressed to. body: The progress message body (<= 4096 bytes). sender: The posting worker's identity. kind: Typed message kind - one of finding / artefact_ref / question. sender_card_fingerprint: sha256: fingerprint of the sender's agent card key.

Returns: JSON of the signed mailbox journal entry (seq, prev_entry_hash, entry_hash, signature, signer_public_key_pem, body_hash, ...).

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 bernstein audit verify walks. Reposting a key appends a new version chained to the prior one. There is no way to set progress here - progress is a chain-computed projection of journaled work, never postable.

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 report (markdown body), table (columns + rows), or link (url + link_kind). poster: Your claim identity; posting against a task you do not hold is refused and the refusal is audit-recorded. body: Markdown body, for report artifacts. columns: Column headers, for table artifacts. rows: Rows of cells, for table artifacts. url: The URL, for link artifacts. link_kind: The declared link kind - preview / dashboard / document - for link artifacts.

Returns: JSON of the chain-anchored artifact record (key, version, content_hash, spine_entry_hash, journal_index, ...).

bernstein_stopA

Request a graceful Bernstein shutdown by writing a SHUTDOWN signal.

Writes .sdd/runtime/signals/SHUTDOWN in the project directory, which the orchestrator detects and shuts down gracefully.

Args: workdir: Project root directory (default: current directory).

Returns: Confirmation message.

bernstein_approveA

Approve a pending or blocked task, marking it complete.

This is used for approval gates - when a task is awaiting human sign-off before proceeding.

Args: task_id: ID of the task to approve. note: Optional approval note recorded as the result summary.

Returns: JSON with the updated task status.

bernstein_create_subtaskA

Create a subtask linked to a parent task.

Agents call this to decompose their current work into subtasks during execution. The parent task is automatically transitioned to WAITING_FOR_SUBTASKS status.

Args: parent_task_id: ID of the parent task that this subtask belongs to. goal: Description of what the subtask should accomplish. role: Specialist role to assign (backend, frontend, qa, …). 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.

Returns: JSON with the created subtask ID, parent_task_id, title, and status.

bernstein_task_handleA

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 (bernstein audit verify or the offline verifier). Polling is stateless: any server instance reprojects the same handle from the on-disk journal.

Args: run_id: The run identifier whose journal to project. Must be a plain identifier - path separators and traversal are refused. workdir: Project root directory (default: current directory).

Returns: JSON of the Tasks-extension task-handle body (taskId, runId, status, journalHead, chainHead, receiptHash, pollToken, ...).

load_skillA

Load a skill pack body (and optionally a reference or script).

Agents receive only a compact skill index in their system prompt. Call this tool to fetch the full SKILL.md body for a skill when you decide it's relevant to the current task. Pass reference to get a deeper-context file or script to read the content of an executable helper.

Args: name: Skill name (matches the index entry, e.g. "backend"). reference: Optional filename under references/ - for example "python-conventions.md". script: Optional filename under scripts/ - for example "lint.sh". The script content is returned as text; the MCP harness does not execute it.

Returns: JSON with name, body, available_references, available_scripts, and the optional fetched content.

Prompts

Interactive templates invoked by user choice

NameDescription
orchestrate_goalPlan a Bernstein orchestration run for a single goal.
triage_failed_tasksTriage the most recent failed tasks and propose next actions.
cost_recapSummarise Bernstein cost by role for a stated window.

Resources

Contextual data attached and managed by the client

NameDescription
bernstein_capabilityRuntime capability card: transports, auth, tiers, meter, spec rev.
lineage_statsSummary counts over the entire lineage log.

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/sipyourdrink-ltd/bernstein'

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