Skip to main content
Glama

clawborrator-mcp (channel_v1)

MCP server that connects each running Claude Code instance to a clawborrator hub over WebSocket. Designed to be invoked by Claude Code via .mcp.json; runs as both a long-lived stdio MCP server AND a short-lived hook spawn (selected by the --hook=<HookName> CLI flag).

Published as clawborrator-mcp on npm.

Status: production hub at next.clawborrator.com. Local dev uses ws://localhost:8787. Both supported.


Configuration

Set in your project's .mcp.json:

{
  "mcpServers": {
    "clawborrator": {
      "command": "npx",
      "args": ["-y", "clawborrator-mcp"],
      "env": {
        "CLAWBORRATOR_HUB_URL": "wss://next.clawborrator.com",
        "CLAWBORRATOR_TOKEN":   "ck_live_…"
      }
    }
  }
}

Env var

Required

Notes

CLAWBORRATOR_HUB_URL

yes

ws://… or wss://…; no trailing slash

CLAWBORRATOR_TOKEN

yes

Channel token (ck_live_…) minted via claw token mint --kind=channel

CLAWBORRATOR_REUSE_SESSION_ID

no

Opt-in: reconnect rebinds to a known session id rather than creating a fresh one

CLAWBORRATOR_LOG_LEVEL

no

debug, info, warn, error; default info

Get the snippet pre-filled with the right URL + token via the clawborrator-cli:

npx clawborrator-cli token mint --kind=channel --name=mbp --mcp-snippet --out .mcp.json

If you're running the desktop daemon (clawborrator-supervisor), it mints channel tokens server-side when it spawns managed Claude Code sessions for you — the .mcp.json ends up in the spawned project automatically.


Related MCP server: Claude Relay

Install as a Claude Code plugin

clawborrator is an official external Claude Code plugin. This repo ships .claude-plugin/plugin.json and a root .mcp.json, so once it is listed in a plugin marketplace it installs with:

/plugin install clawborrator@<marketplace>

The bundled .mcp.json resolves its config from environment variables instead of a committed token, so it carries no secret. You still have to supply the channel token yourself — a committed plugin cannot ship a per-user secret. Before the MCP server can connect to the hub, set in your environment:

Env var

Required

Default

CLAWBORRATOR_TOKEN

yes

none. Mint one with claw token mint --kind=channel.

CLAWBORRATOR_HUB_URL

no

wss://next.clawborrator.com. Self-hosters point this at their own hub.

Without CLAWBORRATOR_TOKEN set, the server starts but cannot authenticate, and the session never registers with the hub. This is the one manual step the plugin install cannot do for you.


What it does

Long-lived MCP path (default invocation):

  1. Reads env config; loads channel token.

  2. Opens WSS to <HUB_URL>/channel with Authorization: Bearer <CHANNEL_TOKEN>.

  3. Sends register with host / cwd / pid / version; receives welcome with sessionId + routingName.

  4. Writes <cwd>/.claude/clawborrator/runtime.json (mode 0600) so per-event hook spawns can find the active session.

  5. Maintains the WS with heartbeat ping/pong; reconnects with exponential backoff (1s/2s/5s/15s/30s/60s).

  6. Listens for hub-side messages: prompt (cross-session route), permission_response, peers_update, bye, error.

  7. Dispatches MCP tool calls (see below) over the same WS.

  8. On clean shutdown (SIGINT/SIGTERM/exit), deletes the sidecar.

Short-lived hook path (--hook=<HookName> flag):

  1. Reads JSON payload from stdin (Claude Code's hook protocol).

  2. Locates the active sidecar at .claude/clawborrator/runtime.json.

  3. Maps the hook name to a clawborrator event (e.g. PreToolUsetail/PreToolUse, UserPromptSubmitchat/prompt).

  4. POSTs to <HUB_URL>/api/channel/event with the channel token from the sidecar.

  5. Echoes stdin to stdout so Claude's hook chain stays intact.

  6. Exits cleanly even if the hub is unreachable — never breaks the operator's actual Claude flow.

Hooks are auto-installed on first MCP startup: clawborrator-mcp reconciles .claude/settings.json to add (or refresh) the entries that point at dist-hook/clawborrator-tail.mjs. No separate install step.


MCP tools exposed to Claude

Routed: targets a peer (your own session or another operator's session you have a share on) by routingName.

Tool

Purpose

reply({ chat_id, text })

Post a tagged final reply for a routed prompt (closes the round-trip when the source session is blocking on a reply).

reply_chunk({ chat_id, text, done })

Stream a reply progressively — the operator sees text growing live; close with done:true. Same correlation as reply.

list_peers()

Discover other CC sessions the operator has access to (own sessions + shared ones). Refused on agents published as isolated.

route_to_peer({ peer, prompt, mode })

Send one prompt to one peer. mode: 'ask' blocks for the reply; mode: 'tell' is fire-and-forget.

probe_peers({ prompt, peers? })

Fan out the same short question to many peers in parallel for discovery.

await_routed_prompt({ maxWaitMs })

Dequeue an inbound routed prompt for THIS session — used by agents that service requests from other sessions.

Cross-tenant — public agents owned by other operators:

Tool

Purpose

list_agents()

Discover public agents on the hub. Returns handle, name, tagline, online, mine, isolated flags.

dispatch_to_agent({ handle, prompt, mode })

Invoke a published agent by <owner>/<slug> handle. ask mode waits up to 15 min for the reply; tell mode is fire-and-forget.

File exchange:

Tool

Purpose

attach_file({ path, targetSessionId?, publish? })

Upload a file from disk to the session (or to a peer's session you have a share on). Returns fileId. publish: true makes it a standing downloadable for everyone who can reach the agent (no expiry, idempotent per content); shared documents only.

read_file({ fileId })

Fetch a session-attached file inline (text-mime; under 1 MB). Reply-clone makes peer-uploaded files visible to the recipient.

download_to_path({ fileId, path })

Fetch a larger or binary file to disk. Returns the absolute path written.

The hub correlates reply / reply_chunk to their originating route_to_peer / dispatch_to_agent by chatId; the source session's CC unblocks when the matching reply lands. 15-minute timeout caps — see hub_v1/server/src/services/agents.ts and services/op-routes.ts.

For await_routed_prompt to actually fire — i.e., for an agent to service incoming requests — its CLAUDE.md needs a line telling Claude to call it at the start of each turn. Without that note, Claude won't know to consult the inbox. See hub_v1/docs/3-AGENT-SETUP.md for the dispatcher-pattern setup.


Hook coverage

Maps each Claude Code hook to a hub event. The hook script is dist-hook/clawborrator-tail.mjs; auto-installed on first MCP startup (no separate install step).

Hook

Hub event

Notes

UserPromptSubmit

chat/prompt (source='cli')

Operator typing into the local CC terminal.

PreToolUse

tail/PreToolUse (+ chat/assistant_text per text block from the transcript)

The tail captures pre-reply narration too.

PostToolUse

tail/PostToolUse

PostToolUseFailure

tail/PostToolUseFailure

Stop

tail/Stop (+ chat/reply if assistant_text present)

Turn-end signal.

Notification

tail/Notification

CC user notifications (idle / permission).

TaskCreated / TaskCompleted

tail/TaskCreated / tail/TaskCompleted

Carries task_id, task_subject, task_description.

SubagentStart / SubagentStop

tail/SubagentStart / tail/SubagentStop

SubagentStop carries last_assistant_message recap.

SessionStart / SessionEnd are intentionally not hooked by this MCP. The hook spawn had a fundamental race — the sidecar isn't written yet at SessionStart, and is already gone by SessionEnd — so lifecycle is now emitted server-side from the /channel WS welcome / close transitions (hub_v1/server/src/ws/channel.ts). Hub-authoritative, captures actual channel liveness, no hook timing involved.

The tail reads the CC transcript file directly to enrich PreToolUse with the assistant's pre-reply text (which CC doesn't put on the hook payload directly). See transcript.ts for the walker.


Local dev (linked to a sibling hub_v1 checkout)

npm install
npm run build
npm link

# verify the binary is on PATH
clawborrator-mcp --hook=PreToolUse < /dev/null   # exits cleanly with no sidecar

When claude runs in a folder whose .mcp.json references clawborrator-mcp, npm/npx resolves it to your linked build.

To publish a new release:

npm version patch                # bumps package.json + creates git tag
npm publish
git push --follow-tags

The CLI's claw token mint --mcp-snippet autogenerates an .mcp.json snippet pointing at the published version.

Available Tools

12 tools
ask_questionA

Ask the REMOTE operator a multiple-choice question through orchard-chat — does NOT block the local TUI. Prefer this over the built-in AskUserQuestion tool whenever the session is being driven remotely (operator messages arrive as tags), since AskUserQuestion opens a synchronous picker in the local terminal that no one is watching. Same input shape as AskUserQuestion: a questions[] array, each with question, optional header, optional multiSelect, and 2-4 options[] (each {label, description?}). Renders as a clickable card on the operator's orchard-chat. Blocks (max 15min) until the operator picks an option; returns the chosen label as the tool result. If the operator types a free-form chat message INSTEAD of clicking, that message returns the user to a normal turn — don't treat it as the answer; it's a redirect. Picking from a multi-question array fires once per question.

ParametersJSON Schema
NameRequiredDescriptionDefault
questionsYes

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses non-blocking behavior, rendering as clickable card, 15-min timeout, return value, and multi-question firing pattern. No annotations present, so description carries full burden.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single focused paragraph, front-loaded with purpose, then usage, shape, behavior. Every sentence adds value; no fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one parameter, the description covers purpose, usage, behavioral nuances, and return value. No output schema needed; fully adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Description adds meaningful context beyond schema (e.g., rendering, constraints like 2-4 options), even though schema has property descriptions. Schema coverage metric is 0% but schema itself is descriptive.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clear verb (ask), specific resource (REMOTE operator via orchard-chat), and distinguishes from sibling AskUserQuestion by noting it does not block local TUI.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says to prefer this over AskUserQuestion for remote sessions, explains why, and notes edge case of free-form chat messages.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

attach_fileA

Upload a file from your project as a chat attachment. The path must be inside your current working directory (relative paths are resolved against cwd; symlinks pointing outside are refused). Use this when the operator should be able to download a file you produced. Returns a fileId; mention it in your reply text so the operator can find the chip in the dashboard. Optional targetSessionId lets you upload directly into a different session (e.g. when delivering a file to a peer the channel-token owner has prompter+ on). Without it, the upload goes to the channel's own session — the common case.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesPath to the file. Relative is resolved against cwd; absolute must still resolve to a path under cwd.
targetSessionIdNoOptional UUID of a different session to upload to. The channel-token's owning user must have prompter+ role on it (owner or shared-as-prompter/approver). Most callers should omit this and let the upload go to the channel's own session.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description transparently discloses constraints (path must be under cwd, symlinks refused), return value (fileId), and usage of targetSessionId. It does not cover error cases but is sufficient for safe operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the main purpose and each sentence adds value. Slightly verbose but still efficient; no fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (2 params, no output schema), the description covers path constraints, return value, and optional usage. Minor gap: no error handling details, but adequate for typical use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds value by clarifying path resolution, security, and optional session targeting beyond the schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool uploads a file as a chat attachment, specifies the path constraint, and distinguishes from siblings like read_file or download_to_path.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides clear usage context ('when the operator should be able to download a file you produced') and explains when to use targetSessionId. However, it does not explicitly exclude alternatives or give when-not-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

dispatch_to_agentA

Invoke a published agent by handle (e.g. MRIIOT/orchard-api) and get its reply. Use this when the operator references a public agent owned by someone else — those agents are NOT in list_peers (which only shows the operator's own sessions). The agent's session must be online; budgets are enforced server-side. ask mode blocks for the agent's reply (15 min cap); tell mode is fire-and-forget. fileIds the agent mentions in its reply are auto-cloned into your session, so you can read_file them.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeYesask: wait for the reply (180s cap); tell: fire-and-forget.
handleYesAgent handle in `<owner>/<slug>` form (with or without leading `@`).
promptYesWhat to ask the agent.

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses all behavioral traits: session must be online, budgets enforced server-side, ask mode blocks for 15 min cap, tell mode is fire-and-forget, and fileIds mentioned in reply are auto-cloned. No annotations present, so description fully compensates.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single paragraph but densely packed with information. Could be slightly more structured (e.g., bullet points), but it is front-loaded with the main action and every sentence adds value. Not overly verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema, but description explains return value (the agent's reply) and the auto-cloning of files. Covers prerequisites, modes, and behavioral nuances. Complete for the tool's complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with all three parameters described. The description adds meaning beyond schema: example handle format (MRIIOT/orchard-api), clarifies prompt purpose, and explains mode timeouts. Provides valuable context.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it invokes a published agent by handle and gets its reply. It distinguishes from sibling list_peers by explaining that list_peers only shows the operator's own sessions, not public agents. The purpose is specific and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit guidance on when to use (referencing a public agent owned by someone else) and when not to (not in list_peers). Also explains the two modes (ask/tell) with timeouts and the auto-cloning behavior, giving clear context for selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

download_to_pathA

Download a hub-stored file by fileId to a local path. Use this for BINARY files (PDFs, images, archives, video, etc.) that read_file can't return inline, or whenever you need the bytes on local disk for processing (e.g. running Bash pdftoppm, Read on an image, unzip). The parent directory is created if missing; the target must NOT already exist (remove it first if you need to refetch). Returns the ABSOLUTE path the file was written to — always use that exact path verbatim in your follow-up Read/Bash, do not reconstruct it from the path you passed. (The path arg is resolved against the MCP subprocess's working directory, which is not guaranteed to match claude's own cwd; the returned absolute path is the source of truth.) Same ACL as read_file: row must live in this agent's session (i.e. the file was forward-cloned here by the hub, or you uploaded it here yourself).

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesRelative path for the download, e.g. "tmp/doc.pdf". Parent dirs are auto-created. Target must not already exist. NOTE: resolved against the MCP process cwd — read the absolute path back from the tool result rather than assuming where it landed.
fileIdYesThe fileId to download (typically from a routed prompt mentioning fileId=N).

TDQS

A5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description fully discloses behavioral traits: parent directory creation, non-existence requirement, return of absolute path, ACL constraints, and resolution quirks. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is slightly long but every sentence adds necessary information, starting with the main purpose, then use cases, then behavioral details, then return value. No redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (2 params, no output schema), the description covers all needed context: purpose, usage, behavior, return value, and access control. It is fully sufficient for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and the description adds important context: for 'path' it explains auto-creation, existence check, and resolution; for 'fileId' it gives usage hints. This significantly supplements the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool downloads a hub-stored file by fileId to a local path, and explicitly distinguishes it from read_file for binary files. This qualifies as a specific verb+resource with sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says to use for binary files and when bytes on disk are needed, and contrasts with read_file for text, providing clear when and when-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_agentsA

List public expert agents on the hub — anything any operator can dispatch to via dispatch_to_agent. Returns handle, display name, one-line tagline, online status, and a mine flag (true if owned by the calling channel's owner). Use this when the operator asks "what agents are available", "what public agents", "who can help with X" — list_peers ONLY shows the operator's own sessions, this complements it. Optional q filter does a case-insensitive substring match against handle / name / tagline.

ParametersJSON Schema
NameRequiredDescriptionDefault
qNoOptional substring filter (case-insensitive) on handle / name / tagline.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It discloses the return fields (handle, display name, tagline, online status, mine flag) and mentions the filtering behavior. However, it does not mention potential pagination or result limits, which could affect agent expectations. Still, it covers the essential behavioral aspects for a read-only list operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with front-loaded purpose and return value, followed by usage guidance and sibling differentiation. Every sentence contributes essential information with zero redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one optional parameter, no output schema, no annotations), the description fully covers purpose, usage, parameter semantics, and distinguishing context. It is sufficiently complete for an agent to correctly select and invoke this tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, providing a baseline of 3. The description repeats the schema's definition of the 'q' parameter (case-insensitive substring match on handle/name/tagline) without adding new meaning or constraints beyond what the schema already offers. Hence, no additional value over the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'List' and resource 'public expert agents on the hub', distinguishing it from sibling list_peers by noting that list_peers shows only the operator's own sessions. The scope is explicit: anything any operator can dispatch to via dispatch_to_agent.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit usage contexts: 'when the operator asks "what agents are available", "what public agents", "who can help with X"' and directly contrasts with list_peers, giving clear guidance on when to use this tool versus the alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_peersA

List your peer Claude Code sessions reachable for routing. Use this to discover what other projects you can route questions to.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It clarifies the tool is for discovery (read operation) and specifies 'reachable for routing', though could mention potential network or authentication requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no wasted words, front-loaded with core action. Every sentence is essential.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool with no parameters and no output schema, the description provides adequate context about what is listed and why. Lacks details on return format but acceptable given tool simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters exist; schema coverage is 100%. Description is not required to add parameter info, and baseline for zero parameters is 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it lists peer Claude Code sessions reachable for routing, distinguishing it from sibling tools like route_to_peer and probe_peers.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly suggests using it to discover projects for routing questions, providing clear context. Does not explicitly exclude other uses, but sibling tools cover alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

probe_peersA

Fan-out the same short question to many peers in parallel. Use for discovery (e.g. "do you have a User model?"). Returns a list of (peer, answer) pairs collected within 30s.

ParametersJSON Schema
NameRequiredDescriptionDefault
peersNoPeer routing names to ask; null = all online peers
promptYesThe question to fan out

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description discloses key behaviors: parallel fan-out, return format (list of peer-answer pairs), and a 30-second collection window. It lacks details on authorization needs or error handling, but covers the main behavioral traits beyond the verb.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, highly concise. The first sentence states the action, the second provides usage context and expected output. Every sentence adds value with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description explains the return format (list of pairs) and includes a time constraint. It covers the essential aspects for a simple tool, though it omits details like error behavior or maximum peers. Still, it is fairly complete for its complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, with both parameters described in the schema. The description adds minimal extra semantics: it explains the purpose of null for peers and the return format, but this adds little beyond the schema's descriptions. Baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's action: 'Fan-out the same short question to many peers in parallel.' It specifies the resource (peers) and the purpose (discovery), with an example. This distinguishes it from sibling tools like 'ask_question' (single peer) and 'list_peers' (no questioning).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance to 'Use for discovery' with an example, implying the appropriate context. However, it does not explicitly state when not to use this tool or mention alternative tools, leaving some room for ambiguity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

read_fileA

Read the contents of a hub-stored file by fileId. Use this whenever a prompt mentions fileId=N and you need to see what the file contains (the operator uploaded it on their side; the bytes live on the hub, not your local FS). Text-mime content is returned inline up to 1 MB; binary or oversized files return an error with metadata — the operator can share those out-of-band. Access is gated by the channel-token owner's role on the file's session, so cross-tenant fileId guesses are denied.

ParametersJSON Schema
NameRequiredDescriptionDefault
fileIdYesThe numeric fileId from the prompt (e.g. 16 for `fileId=16`).

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Despite no annotations, the description details key behaviors: text inline up to 1MB, binary/oversized return error with metadata, access gated by role, and cross-tenant denial. This provides full transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Five sentences, each adding distinct value: purpose, usage trigger, content handling, access control, and security. Front-loaded with the core action, no extraneous text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations or output schema, the description fully covers what the agent needs: input format, behavior for different content types, error handling, and authorization. It is self-sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for the single parameter, and the description adds context that fileId comes directly from a prompt (e.g., 'fileId=16'), reinforcing usage. This goes beyond the schema's description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it reads a hub-stored file by fileId with a specific verb and resource. It distinguishes from sibling tools by focusing only on file reading, and no sibling is a file read tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says to use when a prompt mentions fileId=N and provides context about file location. It also notes that binary/oversized files return an error, implying when not to use effectively.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

replyA

Post a tagged final reply to a chat. Use this whenever you finish replying to a routed prompt — pass back the chat_id you received from await_routed_prompt.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesYour reply text
chat_idYesThe chat id of the prompt you are replying to

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It mentions 'tagged' and 'final reply' but does not elaborate on behavioral implications such as whether it ends the prompt, prevents further replies, or any irreversible effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, first states purpose, second provides usage guidance. No unnecessary words. Front-loaded and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description explains the workflow context (finishing a routed prompt) and identifies chat_id source, but lacks information about return value, error handling, or whether the action is reversible. Adequate but with gaps given the critical nature of a final reply.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so description adds limited value. It adds context for chat_id (source from await_routed_prompt) but text parameter is just restated. Baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool posts a 'tagged final reply' to a chat. It uses a specific verb ('post') and resource ('chat'), and implicitly distinguishes from sibling 'reply_chunk' by specifying 'final reply'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit context: 'Use this whenever you finish replying to a routed prompt' and a prerequisite: 'pass back the chat_id you received from await_routed_prompt'. It does not mention when not to use or alternatives like reply_chunk.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

reply_chunkA

Stream a reply progressively to the operator instead of sending it all at once. Pass the same chat_id as reply and call this multiple times — each call broadcasts a chunk to the operator's dashboard live (they see text growing in real time). The FINAL call must set done: true to close the turn. Use this whenever your reply is long, when you're narrating progress through a multi-step task, or when generating output that builds up over time (file synthesis, code, multi-paragraph explanations). For short atomic replies, use reply instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
doneYestrue on the final chunk; closes the turn, persists the consolidated text, dispatches to route originators. false on intermediate chunks.
textYesThe chunk to append. Empty allowed (e.g. final empty chunk solely to mark done).
chat_idYesSame chat_id as the inbound prompt — every chunk in a turn shares it.

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Given no annotations, the description fully discloses the streaming behavior: each call broadcasts a chunk live, the final call must set `done: true` to close the turn, and the consolidated text is persisted. No contradictions with any missing annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is approximately six sentences, front-loaded with purpose, then immediately provides usage guidance, protocol details, and a sibling reference. Every sentence is informative with no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a streaming tool with 3 parameters, no output schema, and no annotations, this description covers purpose, when to use, behavioral protocol, parameter semantics, and interaction pattern. It is fully self-contained and leaves no critical gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% so parameters are already described. The description adds value by explaining the role of `done` in closing the turn, that `text` is appended incrementally, and that `chat_id` must be shared across chunks. This goes beyond the schema definitions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool streams a reply progressively, distinguishing it from the sibling `reply` which sends all at once. It specifies the verb 'stream' and resource 'reply', making the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use this tool ('when your reply is long, when you're narrating progress...') and when to use the alternative ('For short atomic replies, use `reply` instead'). Also describes the required protocol for marking the final chunk with `done: true`.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

route_to_peerA

Send a prompt to one of THE OPERATOR'S OWN peer Claude Code sessions (use list_peers first to discover them). Do NOT use this for cross-tenant public agents — those need dispatch_to_agent with an <owner>/<slug> handle. mode=ask blocks for the reply (15 min cap); mode=tell is fire-and-forget.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeYesask: wait for reply; tell: fire-and-forget
peerYesPeer routing name (e.g. "@reddit-scout")
promptYesWhat to ask

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. Discloses blocking behavior with 15-min cap and fire-and-forget mode. Could add error handling or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no redundancy. Front-loaded with main action, then caveats. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers essential aspects: purpose, usage boundaries, mode behaviors. Lacks return value description and error handling, but adequate for a simple tool with no output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but description adds value by specifying the 15-min timeout for mode=ask and clarifying peer naming. Baseline 3 plus extra context.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the action (send a prompt) and target (peer Claude Code sessions). Distinguishes from sibling 'dispatch_to_agent' for cross-tenant public agents.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit when-not-to-use (cross-tenant public agents) and alternative tool ('dispatch_to_agent'). Also explains mode semantics (ask vs tell) and timeout.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

submit_handoffA

Submit a structured handoff to an orchestrator or other recipient peer. Use this when finishing a delegated task (worker -> orchestrator, validator -> orchestrator, etc.) instead of free-form route_to_peer text. The hub persists the full structured payload as a Handoff tail event for audit AND routes a serialized JSON version to the recipient peer so their CC sees it as a turn input. Pairs with the missions-orchestrator pattern: orchestrator spawns ephemeral worker, worker implements feature, worker calls submit_handoff with status + completed[] + issues[] etc., orchestrator parses the JSON and decides next step. Returns the JSON string the recipient will see so you can confirm shape.

ParametersJSON Schema
NameRequiredDescriptionDefault
notesNoOptional free-form prose for context that doesn't fit the structured fields.
issuesNoProblems the orchestrator should know about: pre-existing breakages you noticed, ambiguous requirements, security concerns, etc.
statusYescompleted = every assertion / procedure satisfied. partial = work done but some items skipped (must populate skipped[]). failed = unrecoverable, requires orchestrator intervention.
toPeerYesRecipient peer routing name (e.g. "@orchestrator-passwordreset"). The recipient receives a serialized JSON string as their turn input.
skippedNoList of {item, reason} for anything deferred.
fromRoleYesWhich role you played while doing the work.
completedNoBullet list of what got implemented / verified / shipped.
featureIdYesWhich feature this handoff covers (from the orchestrator's features.json).
missionIdYesFree-form mission correlation id. Pass the same value the orchestrator gave you when it spawned you.
commandsRunNoEach significant shell command you ran, its exit code, optional last ~20 lines of stdout/stderr for diagnostics.
proceduresHonoredNoWhich of the orchestrator-defined procedures (numbered steps in your prompt) you actually followed.

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses that the hub persists the payload as Handoff tail event, routes serialized JSON to recipient, and returns the JSON string. No annotations provided, so description carries full burden; it adequately covers behavioral aspects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is informative but not overly long. Front-loaded with main purpose. Could potentially be more concise, but it's well-structured and includes necessary pattern explanation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Tool is complex (11 params, nested objects), but schema covers parameter details. Description provides pattern context and return value info. No output schema, but return value is explained. Sufficient for agent understanding.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with detailed descriptions per parameter, so baseline is 3. Tool description adds overall pattern context (e.g., missionId should match orchestrator) but does not substantially enhance individual parameter meaning beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool submits a structured handoff to an orchestrator or recipient peer, specifies use case (finishing delegated task), and distinguishes from free-form route_to_peer.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says when to use (finishing delegated task) and contrasts with route_to_peer. Mentions missions-orchestrator pattern context. Lacks explicit 'when not to use' but guidance is clear enough.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 12 tool updatesv0.0.45
    • First observedask_question
    • First observedattach_file
    • First observeddispatch_to_agent
    • First observeddownload_to_path
    • First observedlist_agents
    • First observedlist_peers
    • First observedprobe_peers
    • First observedread_file
    • First observedreply
    • First observedreply_chunk
    • First observedroute_to_peer
    • First observedsubmit_handoff

TDQS

A4.4/5.0
Disambiguation5/5

Each tool has a distinct, non-overlapping purpose: asking questions, file upload/download/read, agent/peer discovery, routing, streaming, and handoffs. No ambiguity.

Naming Consistency5/5

All tool names follow a consistent verb_phrase pattern (e.g., ask_question, attach_file, dispatch_to_agent), making them predictable and easy to distinguish.

Tool Count5/5

12 tools is well-scoped for a collaboration server, covering essential interactions with remote operators, peers, and public agents without being excessive.

Completeness4/5

Covers core operations (ask, upload, download, read, route, reply, handoff) well. Minor gaps like file deletion or agent management are not critical for the primary use case.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Facilitates integration with the Cursor code editor by enabling real-time code indexing, analysis, and bi-directional communication with Claude, supporting concurrent sessions and automatic reconnection.
    7
    39
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Orchestrates multiple Claude Code instances into a collaborative swarm for real-time task delegation, message exchange, and code snippet sharing. It features peer discovery, status tracking, and a centralized web dashboard to monitor coordinated activity across sessions.
    MIT

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/clawborrator/channel_v1'

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