An MCP server implementing a multi-agent coordination protocol with task management, agent registration, heartbeat monitoring, lock acquisition, and state checkpointing
Bifrost-protocol has 11 tools with complete Zod schemas and basic descriptions. However, descriptions are uniformly terse (10-60 chars), parameter descriptions lack context about constraints and formats, and output schemas are undocumented. No error handling guidance, no recovery paths, and no indication of which operations are idempotent or irreversible (except 'shutdown'). Tool names follow verb_noun convention well. Schemas are present but minimal, most parameters lack type constraints (enums, ranges, patterns). This is a functional but immature implementation typical of internal coordination tools, not production-grade agent interfaces.
Acquires an exclusive lock on a file for an agent
Adds a new task to the task queue with specified priority, skills, and properties
Saves a checkpoint of agent progress on a task including status, context, and artifacts
Claims an unassigned task for an agent, transitioning it to in_progress status
Fetches unassigned tasks matching agent skills
Retrieves full team state including all agents, tasks, and locks
Hands off a task from one agent to another with a summary of progress
Descriptions are uniformly terse (10-60 chars, well below 194-char baseline). Most lack context about when to call the tool, prerequisites, or what the LLM should expect. E.g., 'Retrieves full team state including all agents, tasks, and locks' does not explain what fields are returned or when an agent should call this vs. get_available_tasks.
Parameter descriptions are missing or minimal. E.g., 'agent_id' in heartbeat has no description of format or constraints. 'priority' in add_task defaults to 'P2' but no enum or valid values documented. 'status' in checkpoint has no description of allowed values (in_progress, completed, failed?). LLMs cannot infer valid inputs.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 49 | 2026-07-28+ | v2 |
Updates agent heartbeat to indicate the agent is still active
Registers a new agent with the team, specifying role, domain, skills, and capacity
Releases an exclusive lock on a file held by an agent
Shuts down an agent and marks its completed and incomplete tasks accordingly
Output schemas are completely undocumented. Tools return JSON.stringify() of database records, but the LLM has no schema to parse results. E.g., get_team_state returns 'full team state' but no field list. claim_task returns JSON result but structure is opaque. This forces LLMs to guess field names for downstream tool calls.
No error handling or recovery guidance. Tools return plain text success messages ('ok', 'Checkpoint saved') but no indication of failure modes, retryability, or what the LLM should do if a lock acquisition fails or a task claim conflicts. Agents cannot distinguish transient from permanent failures.
Irreversible operations (shutdown, release_lock, handoff) lack confirmation or dry-run support. shutdown is marked IRREVERSIBLE but has no confirmation step. An agent could accidentally shut down an active agent, losing in-progress work. No pattern:confirmation-request implemented.