swarm-mcp
Manages container lifecycle, resource scheduling, and networking for each agent, ensuring isolation and enabling GPU and resource semaphores.
Allows Claude agents to access Google Workspace services (Gmail, Drive, Calendar) via MCP, enabling email handling, file operations, and event management.
Allows Claude agents to access and interact with a Logseq knowledge graph via MCP, enabling reading, writing, and querying of pages and blocks.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@swarm-mcprun 3 code reviews in parallel and reduce them"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
swarm-mcp
Orchestrate parallel Claude agent workloads via Docker containers.
swarm-mcp is an MCP server that lets your Claude session spawn other Claude agents — each in an isolated Docker container — and compose their results using functional combinators. Instead of one agent doing everything, you describe the work as run, par, map, chain, reduce, and pipeline calls, and swarm-mcp handles container lifecycle, resource scheduling, and result plumbing. The agent outputs are lazy refs (metadata on the wire, text on disk) so you never blow up the MCP protocol with megabytes of agent output.
Why swarm-mcp?
True Docker isolation per agent. Every agent gets its own container with its own filesystem, network policy, memory limit, and CPU quota. No shared state leaks between agents. A rogue
rm -rf /in one container doesn't touch anything else.Lazy refs (metadata on the wire, text on disk). Combinators return refs — small JSON objects with metadata (cost, duration, exit code, provenance hash). The actual text stays on disk in
/tmp/swarm-mcp/{run_id}/{agent_id}/result.json. Callunwrapwhen you actually need the content. This keeps the MCP protocol fast and prevents context window bloat.Data-driven pipelines. The
pipelinetool interprets a JSON definition — steps withon_failhandlers,conditionguards,retry_ifloops, andnextjumps. The pipeline definition is data: store it in git, version it, resume it from any step, generate it programmatically. The interpreter handles container lifecycle, budget tracking, and inter-step state via a shared/shared/directory.GPU and resource semaphores. Named resource pools (
gpu,database,api, anything) are semaphores with configurable capacity. Agents queue for resources before execution. A single GPU doesn't get double-booked; a rate-limited API doesn't get hammered.Natural language type contracts with validation. Types are markdown files that describe what an agent should produce. The
validatetool spawns a validator agent that checks the output against the type definition.filterkeeps only results that pass.retryre-runs until the output validates. Types reference each other with[type-name]syntax.Agents can use your MCP servers. Set
mcps: ["database-mcp"]in a sandbox spec and the agent gets access to your local knowledge base, Logseq graph, Google Workspace, or any other MCP server configured in your Claude settings. Data paths are mounted into the container at the same host path; network MCPs need no extra config. See the MCP Access guide.Full artifact tracing. Every container runs a PostToolUse hook that logs MCP tool calls and file writes to
artifacts.jsonl.inspectgenerates a post-mortem debug report from any ref.unwrapextracts output to a file you canRead()orGrep. Every ref carries a provenance hash and parent chain.
Related MCP server: Orchestrator MCP Server
Architecture
flowchart TB
Claude["Claude Code<br/>(your session)"] -- "MCP" --> Server["swarm-mcp server<br/>run · par · map · chain · pipeline"]
Server --> Pools["Semaphore + Resource Pools<br/>SWARM_MAX_CONCURRENT · SWARM_RESOURCE_gpu"]
Pools --> Docker["Docker API"]
Docker --> C0["Container 0<br/>claude --model sonnet"]
Docker --> C1["Container 1<br/>claude --model opus"]
Docker --> CN["Container N<br/>claude --model haiku"]
C0 & C1 & CN --> Out[" /tmp/swarm-mcp/{run}/{agent}/<br/>result.json · stream.jsonl · artifacts.jsonl"]
Out -- "unwrap()" --> Text["output.md"]Ref flow
flowchart LR
A["run('Review code')"] --> R["ref: a1b2c3/agent-0<br/>exit_code: 0 · cost: $0.03<br/><i>metadata only — no text yet</i>"]
R -- "unwrap()" --> F["/tmp/.../output.md"]
R -- "inspect()" --> D["inspect.md<br/>debug report"]
R -- "reduce([r1,r2,r3])" --> S["synthesis ref"]Combinator composition
flowchart LR
P["par(3 tasks)"] --> R3["3 refs"]
R3 --> Re["reduce('Synthesise')"] --> Final["1 ref"] --> U["unwrap → text"]
M["map(template, 5 inputs)"] --> R5["5 refs"]
R5 --> Fi["filter('code-review')"] --> V["valid refs only"]Installation
Prerequisites
Docker — containers are the execution substrate
Claude Code CLI — with OAuth configured (
claude login)uv — Python package manager
Install
# Run directly
uvx mcp-swarm
# Or install as a tool
uv tool install mcp-swarmConfigure Claude Code
Add to your Claude settings (~/.claude.json or project .claude.json):
{
"mcpServers": {
"swarm": {
"command": "uvx",
"args": ["mcp-swarm"]
}
}
}Build the Docker image
The agent containers need a Docker image with Claude CLI and uv baked in. Clone the repo and build:
git clone https://github.com/stiege/swarm-mcp
cd swarm-mcp
docker build -t swarm-agent .The Dockerfile installs Claude Code CLI and uv from their official sources during the build — no binaries to copy. The image is based on Ubuntu 24.04 with git, Python 3, and jq. It auto-builds on first use if missing, but pre-building avoids the startup delay.
Quick Start
1. Single agent — code review
Use run to review this file:
run(
prompt: "Review the error handling in /workspace/src/api/auth.py. Flag any unhandled exceptions, missing input validation, or security issues. Be specific — line numbers and fix suggestions.",
model: "sonnet",
mounts: '[{"host_path": "/home/me/myproject", "container_path": "/workspace", "readonly": true}]',
tools: "Read,Glob,Grep"
)Returns a ref with metadata. Use unwrap on the ref to read the full review.
2. Parallel research — three topics at once
Use par to research these topics in parallel:
par(
tasks: '[
{"prompt": "Research the current state of WebTransport API browser support. What works, what doesn'\''t, what'\''s coming.", "model": "sonnet"},
{"prompt": "Research QUIC protocol performance characteristics vs TCP for real-time applications. Include benchmarks if available.", "model": "sonnet"},
{"prompt": "Research existing open-source WebTransport server implementations. Compare features, maturity, language.", "model": "sonnet"}
]',
max_concurrency: 3
)Three containers spin up simultaneously. Each gets its own network, filesystem, and execution context. Results come back as an array of refs with a summary showing succeeded/failed counts.
3. Pipeline — write, test, fix loop
Use pipeline to implement and test a feature:
pipeline(
definition: '{
"name": "implement-and-test",
"steps": [
{
"id": "implement",
"prompt": "Implement a rate limiter middleware for Express.js. Use a sliding window algorithm. Write to /shared/rate-limiter.js",
"model": "sonnet",
"tools": "Read,Write,Bash"
},
{
"id": "test",
"prompt": "Write tests for /shared/rate-limiter.js using Jest. Run them. Report pass/fail.",
"model": "sonnet",
"tools": "Read,Write,Bash",
"on_fail": "fix"
},
{
"id": "fix",
"prompt": "Fix the failing tests. Read the error output and fix either the implementation or the tests.",
"model": "sonnet",
"tools": "Read,Write,Bash",
"condition": "prev.error",
"next": "test",
"max_retries": 3
}
]
}'
)The pipeline writes code in step 1, tests it in step 2, and if tests fail, loops through the fix step up to 3 times. All steps share the /shared/ directory for file passing.
Combinators Reference
Execution
Combinator | Pattern | Use when |
| 1 prompt → 1 ref | Single agent task. The fundamental unit. |
| N prompts → N refs | Independent tasks that can run simultaneously. |
| 1 template + N inputs → N refs | Same operation applied to many inputs (fan-out). |
| N prompts → 1 final ref (sequential) | Each step needs the previous step's output as context. |
| N refs + synthesis prompt → 1 ref | Combine multiple results into a single synthesis. |
| map + reduce in one call | Fan-out then synthesize — no manual plumbing. |
Control Flow
Combinator | Pattern | Use when |
| N refs + type → valid refs | Keep only results that match a declared type. |
| N prompts → 1 winner ref | Multiple strategies, take the first success. |
| 1 prompt + max_attempts → 1 ref | Flaky task that may need multiple tries. Optionally validates against a type. |
| 1 ref + check → ref or error | Enforce constraints (validated, budget, classification, encrypted, exists) before passing downstream. |
| JSON definition → execution trace | Multi-step workflow with conditions, retries, on_fail handlers, and budget/deadline tracking. |
Observation
Tool | Pattern | Use when |
| ref → file path | You need the actual text content. Writes to |
| ref → debug report | Post-mortem on a failed or slow agent. Shows tool calls, stream log, artifacts. |
Security
Tool | Pattern | Use when |
| ref → encrypted ref + key_id | Protect sensitive output at rest. Metadata stays readable; text is Fernet-encrypted on disk. |
| encrypted ref + key_id → file path | Decrypt with the right key. Writes plaintext to |
| ref + level → classified ref | Tag data sensitivity (public/internal/confidential/restricted). Controls which MCPs can access. |
Types
Tool | Pattern | Use when |
| → list of types | See what types are defined. |
| name → markdown content | Read a type definition, with [references] resolved. |
| artifact + type → VALID/PARTIAL/INVALID | Check if an agent's output matches a declared type. |
Configuration
Tool | Pattern | Use when |
| name + JSON → saved | Create a reusable sandbox configuration. |
| → list of specs | See saved sandboxes. |
| file path → ref | Bring an external file/directory into the ref system. |
| project dir → registered resources | Register a project's pipelines/, sandboxes/, types/ directories. |
Sandbox Configuration
A sandbox spec defines the environment for an agent container. Use inline on any combinator, or save with save_sandbox_spec for reuse.
Field | Type | Default | Description |
| string |
| Claude model: |
| list[string] |
| Allowed Claude tools |
| list[string] |
| MCP servers to attach (by name from host |
| string |
| System prompt injected via |
| string |
| Written to workspace |
| dict |
| JSON schema for structured output ( |
| string |
| Effort level: |
| float |
| USD budget cap for the agent |
| string |
| Natural language type describing agent input |
| string |
| Natural language type describing expected output |
| list[dict] |
| Volume mounts: |
| string |
| Container working directory |
| dict |
| Files to inject: |
| bool |
| Network access (needed for Anthropic API) |
| string |
| Docker memory limit (e.g. |
| float |
| Docker CPU limit (e.g. |
| bool |
| Pass |
| list[string] |
| Named resource pools to acquire (e.g. |
| int |
| Max execution time in seconds (30 min default) |
| dict |
| Environment variables: |
Complete example
{
"model": "sonnet",
"tools": ["Read", "Write", "Glob", "Grep", "Bash"],
"system_prompt": "You are a senior backend engineer. Write production-quality Go code.",
"claude_md": "# Project\nThis is a Go microservice using chi router and pgx for Postgres.",
"mounts": [
{"host_path": "/home/me/myservice", "container_path": "/workspace", "readonly": false}
],
"mcps": ["database-mcp"],
"memory": "4g",
"cpus": 2.0,
"timeout": 600,
"effort": "high",
"env_vars": {"GOPATH": "/home/ubuntu/go"},
"output_type": "[go-module]"
}Save it:
save_sandbox_spec(name: "go-backend", spec: '<the JSON above>')Then use it anywhere:
run(prompt: "Add pagination to the /users endpoint", sandbox: "go-backend")
par(tasks: '[{"prompt": "...", "sandbox": "go-backend"}, ...]')Pipelines
A pipeline definition is a program expressed as data. The pipeline tool is the interpreter. You describe what should happen — steps, control flow, error handling — and the interpreter evaluates it, managing shared state and resource budgets.
The key property: the definition is a JSON value you can store, version, share, resume, and generate. It does nothing on its own. The interpreter handles all effects: spawning containers, tracking costs, enforcing deadlines, and routing control flow.
Complete pipeline example
{
"name": "research-and-report",
"budget": 2.00,
"deadline_seconds": 1800,
"classification": "internal",
"steps": [
{
"id": "gather",
"prompt": "Research the top 5 Rust web frameworks by GitHub stars. For each, note: name, stars, last commit date, key features. Write a JSON summary to /shared/frameworks.json",
"model": "sonnet",
"tools": "Read,Write,Bash"
},
{
"id": "benchmark",
"prompt": "Read /shared/frameworks.json. For each framework, find or estimate request throughput benchmarks. Write results to /shared/benchmarks.json",
"model": "sonnet",
"tools": "Read,Write,Bash"
},
{
"id": "draft",
"prompt": "Read /shared/frameworks.json and /shared/benchmarks.json. Write a comparative analysis report to /shared/report.md. Include a recommendation.",
"model": "opus",
"tools": "Read,Write",
"on_fail": "fix-draft"
},
{
"id": "fix-draft",
"prompt": "The report draft failed. Read the error, fix the issues, and rewrite /shared/report.md",
"model": "sonnet",
"tools": "Read,Write",
"condition": "prev.error",
"next": "review",
"max_retries": 2
},
{
"id": "review",
"prompt": "Read /shared/report.md. Check for factual accuracy, missing data, and unclear recommendations. Write feedback to /shared/review.md. If the report is good, just write 'APPROVED'.",
"model": "opus",
"tools": "Read,Write",
"retry_if": {"draft": "NEEDS_REVISION"}
}
]
}Step fields
Field | Type | Description |
| string | Step identifier (used by |
| string | The task prompt. Previous step's output is appended as context automatically. |
| string | dict | Step ID to jump to on failure, or |
| dict |
|
| string | Step ID to jump to after success (instead of next sequential step). |
| string |
|
| int | Max times this step can be entered via |
| dict |
|
+ any sandbox field |
|
Pipeline-level fields
Field | Type | Description |
| string | Pipeline name (optional). |
| string | Default sandbox spec applied to all steps. |
| float | Total USD budget. Pipeline stops if exceeded. |
| int | Wall-clock deadline. Pipeline stops if exceeded. |
| string | Default data classification for the run. |
| dict | Inline governor specs keyed by name. Per-project, version-controlled alongside the pipeline. |
Pipeline status
The pipeline tool returns a status field: "done" (all steps completed) or "broken" (last result had an error, or a governor returned broken). A broken_reason field is included when applicable. Broken pipelines can be inspected via pipeline_status.
The /shared/ directory
Every step in a pipeline gets /shared/ mounted read-write. This is the inter-step communication channel. Step 1 writes /shared/data.json, step 2 reads it. No ref passing needed — just files.
Resuming
pipeline(definition: "research-and-report", resume: "a1b2c3d4e5f6")
pipeline(definition: "research-and-report", resume: "a1b2c3d4e5f6/benchmark")resume: "run_id"— reuses the shared directory from a previous run, starts from step 0.resume: "run_id/step_id"— skips to the named step, previous artifacts available in/shared/.
Governors
Governors are LLM-powered control-flow hooks evaluated at pipeline trigger points (on_fail, on_success). They replace hardcoded fallback logic with natural language policy — a Claude model reads the live pipeline state and decides what happens next.
Unlike the stamp layer (stamps.py — provenance, cost, classification, encryption), governors are about control flow.
Continuation algebra
Every governor returns one of five actions:
Action | Effect |
| Proceed to the next step normally |
| Jump to a named step ( |
| Stop the pipeline cleanly (status: |
| Stop and mark pipeline as broken with a |
| Deep-merge patch the pipeline definition, then continue |
The context dict is free-form, accumulates across the pipeline, and is written to /shared/governor-context.json after each evaluation so steps can read it.
Inline pipeline governors
Define governors directly in the pipeline JSON — version-controlled alongside the pipeline, no global registration needed:
{
"name": "train-loop",
"governors": {
"TrainingFailure": {
"description": "Governs QLoRA train step failures",
"model": "claude-haiku-4-5-20251001",
"spec": "You govern the train step of a QLoRA fine-tuning pipeline. OOM errors → broken. NaN/loss divergence → broken. Transient errors (disk, timeout) → jump to the step before train to retry data preparation. Inspect exit_code and error output."
},
"QualityGate": {
"description": "Decides whether the current model iteration is good enough",
"model": "claude-haiku-4-5-20251001",
"spec": "You govern the evaluation step. If the pass rate is 5/5, return halt (we're done). If 3-4/5, jump to the training step for another iteration. If 0-2/5, return broken — the model is not converging."
}
},
"steps": [
{"id": "train", "prompt": "...", "on_fail": {"governor": "TrainingFailure"}},
{"id": "evaluate", "prompt": "...", "on_success": {"governor": "QualityGate"}}
]
}Global fallback: ~/.claude/governors/ (managed by save_governor_spec / list_governor_specs). Inline definitions take priority over global ones.
The patch_pipeline action
A governor can surgically modify the running pipeline definition. This uses JSON Merge Patch (RFC 7396) — null values delete keys, objects recurse, scalars/arrays replace:
{
"action": "patch_pipeline",
"pipeline_patch": {
"steps": [
{"id": "train", "prompt": "Run training with --batch-size 4 instead of 8"}
]
},
"context": {"adjusted_batch_size": true},
"reason": "Detected instability in loss curve — reducing batch size"
}governor_context
The context dict from each governor continuation is merged into a running governor_context that persists across the entire pipeline. Written to /shared/governor-context.json so steps can read it. Use it to pass structured observations between governors (e.g., iteration count, last loss value, retry history).
Type System
Types are natural language specifications stored as markdown files in a types/ directory. They describe what something is, what it should contain, and how to verify it.
Defining a type
Create types/code-review.md:
A code review document that covers:
1. **Summary** — one paragraph describing what the code does
2. **Issues** — numbered list of problems found, each with:
- Severity (critical / warning / nit)
- File and line number
- Description of the problem
- Suggested fix
3. **Security** — specific section for security concerns (XSS, injection, auth)
4. **Testing** — assessment of test coverage and suggestions
## Verification
- Has a Summary section
- Has at least one numbered issue with severity, location, and fix
- Has a Security section (even if "no issues found")
- Has a Testing sectionUsing types
Set input_type or output_type on any combinator to inject type context into the agent's prompt:
run(
prompt: "Review the auth module",
output_type: "code-review",
mounts: '[{"host_path": "/home/me/project", "container_path": "/workspace", "readonly": true}]'
)Validating
validate(artifact: '{"ref": "a1b2c3/agent-0"}', declared_type: "code-review")Returns VALID, PARTIAL, or INVALID with per-criterion results.
Type references
Types can reference other types with [type-name] syntax:
# types/api-server.md
A REST API server that includes:
- Route handlers with input validation
- Error handling middleware
- [test-suite] with integration tests
- [dockerfile] for containerized deploymentReferences are resolved recursively (up to depth 3). Each referenced type is inlined once; subsequent references become "(see above)".
Registering types
wrap_project(project_dir: "/home/me/myproject")This registers myproject/types/, myproject/sandboxes/, and myproject/pipelines/ as search paths. Types in the project take priority over global types in ~/.claude/types/.
Resource Pools & GPU
GPU access
run(
prompt: "Fine-tune the sentiment classifier on the new dataset",
gpu: true,
mounts: '[{"host_path": "/data/models", "container_path": "/models", "readonly": false}]'
)Setting gpu: true does two things:
Passes
--gpus allto the Docker containerAcquires the
"gpu"resource pool (capacity 1 by default)
If another agent is using the GPU, this one queues until the resource is free.
Named resource pools
Any string in the resources array becomes a semaphore. Configure capacity with environment variables:
# One GPU at a time (default)
export SWARM_RESOURCE_gpu=1
# Up to 3 concurrent database connections
export SWARM_RESOURCE_database=3
# Rate-limit external API access to 5 concurrent agents
export SWARM_RESOURCE_api=5Use in a run call:
run(
prompt: "Query the production database for user analytics",
resources: '["database"]',
mcps: '["database-mcp"]'
)Queue semantics
Resource acquisition uses a separate timeout (SWARM_QUEUE_TIMEOUT, default 1 hour) from execution timeout. An agent waiting 10 minutes for a GPU still gets its full execution time once the GPU is available. The global concurrency limit (SWARM_MAX_CONCURRENT) is acquired first, then named resources.
Observability
unwrap — extract text to file
unwrap(ref: "a1b2c3/agent-0")Writes the agent's full text output to /tmp/swarm-mcp/a1b2c3/agent-0/output.md and returns the path and size. Use Read() to view it. This is how you go from a lazy ref to actual content.
inspect — post-mortem debug
inspect(ref: "a1b2c3/agent-0")Generates a debug report at inspect.md containing:
Result metadata (exit code, error, duration, cost)
Output text (first 2000 chars)
Stream log summary (tool calls made, thinking steps)
Artifacts logged by the PostToolUse hook
Files in the output directory
Artifact tracing
Every agent container runs a PostToolUse hook (hooks/log-artifacts.sh) that captures MCP tool calls and file writes to /output/artifacts.jsonl. Each entry records:
{
"timestamp": "2025-01-15T10:30:00Z",
"tool": "Write",
"tool_use_id": "toolu_abc123",
"input": {"file_path": "/workspace/src/main.py", "content": "..."},
"response": {"success": true}
}This gives you a complete audit trail of what every agent did inside its container.
Encrypted refs
The encrypt / decrypt flow protects sensitive outputs at rest:
run(prompt: "Extract PII from the uploaded documents")
│
▼
encrypt(ref: "a1b2c3/agent-0")
│
▼
{ "ref": "a1b2c3/agent-0", ◄── metadata visible
"key_id": "f9e8d7c6b5a4", ◄── needed to decrypt
"encrypted": { ◄── text is Fernet-encrypted on disk
"key_id": "f9e8d7c6b5a4",
"algorithm": "fernet"
}}
│
├── unwrap() ──► ERROR: "Ref is encrypted. Use decrypt tool."
│
└── decrypt(ref: "a1b2c3/agent-0", key_id: "f9e8d7c6b5a4") ──► output.mdThe key is stored in /tmp/swarm-mcp/.keys/ with 0600 permissions. Only processes with the key_id can access the plaintext. The ciphertext stays in result.json — decrypt writes the plaintext to a separate output.md without replacing the encrypted copy.
Classification flow
classify(ref: "a1b2c3/agent-0", level: "confidential", denied_mcps: '["whatsapp", "slack"]')
│
▼
guard(ref: '<classified ref>', check: "classification", value: '["slack"]')
│
▼
ERROR: "MCP 'slack' denied for classification 'confidential'"Classification levels: public (0) → internal (1) → confidential (2) → restricted (3). Use guard with the "classification" check to enforce data flow policies before passing refs to downstream agents with MCP access.
On-Disk Layout
Every agent execution produces a directory under /tmp/swarm-mcp/:
/tmp/swarm-mcp/
└── a1b2c3d4e5f6/ ← run_id
├── agent-0/ ← agent_id
│ ├── result.json ← full output + metadata
│ ├── stream.jsonl ← raw stream-json from claude
│ ├── artifacts.jsonl ← PostToolUse hook log
│ ├── output.md ← created by unwrap()
│ ├── inspect.md ← created by inspect()
│ ├── prompt.txt ← the prompt sent to the agent
│ ├── home/ ← staged HOME dir mounted into container
│ │ ├── .claude/ ← claude config + settings + hooks
│ │ └── .claude.json ← oauth + mcp config
│ └── workspace/ ← mounted as /workspace in container
│ └── CLAUDE.md ← injected from sandbox spec
├── agent-1/
│ └── ...
└── shared/ ← pipeline shared directory (/shared/ in containers)
├── data.json
└── report.mdEnvironment Variables
Variable | Default | Description |
|
| Maximum agents running simultaneously across all combinators. |
|
| Seconds an agent will wait in the queue for an execution slot or resource pool. |
|
| Capacity of a named resource pool. e.g. |
| unset | Project root containing |
Contributing
See CONTRIBUTING.md.
License
MIT
Available Tools
33 toolsbeamA
Sample N candidates in parallel, score each, commit to the top-1.
The simplest search combinator: proposes width candidates via par,
scores each with a cheap haiku evaluator, and returns the highest-scoring
ref. Losing candidates are preserved on the winner's search.alternatives
field (unless keep_losers is false). This is self-consistency /
majority-vote with arbitrary scoring — the same shape as the governor
beam search, but applied to arbitrary agent output.
Evaluator forms:
score:<criterion>— direct haiku call, returns a float in [0, 1] plus a reason string. Use for rubric-style scoring.validate:<type>— runs the type validator; VALID=1.0, PARTIAL=0.5, INVALID=0.0. Use when the acceptance criterion is a registered type.
Budget semantics: a hard cap on total proposer spend. If exceeded, the
winner's search stamp records prune_reason="budget exhausted" but the
result is still returned — best-effort rather than abort. Evaluator cost
is not counted against budget for phase 1; evaluators are already
constrained to haiku.
Anti-pattern: the Tree Search paper flags evaluator-as-expensive-as-proposer as a non-starter. This combinator hardcodes haiku for scoring — if you need a stronger evaluator, lift that logic into a governor instead.
Args:
prompt: Task prompt sent to every candidate agent.
width: Number of parallel candidates (default: 3).
evaluator: Scoring directive. Must start with score: or validate:.
sandbox: Named sandbox spec or inline JSON for candidate agents.
model: Candidate agent model (default: sonnet — the proposer).
timeout: Per-candidate timeout in seconds.
mcps: JSON array of MCP server names attached to candidates.
keep_losers: Preserve losing candidates on winner search stamp
(default: true — useful for inspection + future step-lookahead).
budget: Total USD cap on proposer cost. Best-so-far semantics on breach.
max_concurrency: Upper bound on concurrent candidate agents.
Returns:
JSON with run_id, winner ref (search-stamped), scores, and
total_cost. If all candidates scored 0, error is populated.
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes | ||
| width | No | ||
| evaluator | No | score:overall quality, rigour, and correctness | |
| sandbox | No | ||
| model | No | sonnet | |
| timeout | No | ||
| mcps | No | ||
| keep_losers | No | ||
| budget | No | ||
| max_concurrency | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses behavior: parallel execution, scoring, best-effort budget cap, preservation of losers, evaluator cost exclusion, and return format. It covers edge cases like budget exhaustion and all-zero scores, and explains the search stamp recording.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a clear lead sentence, bullet points, and sections. It is thorough but not overly verbose; every sentence adds value. Minor conciseness could be improved by merging some explanations, but overall it is efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given ten parameters, no schema description coverage, and an output schema that exists, the description covers all aspects: input semantics, behavioral quirks, return schema, error handling, and anti-patterns. It leaves no obvious gaps for an agent to understand when and how to invoke the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate, and it does comprehensively. Every parameter is explained with context—e.g., evaluator must start with 'score:' or 'validate:', default values, and the effect of 'keep_losers' on preserving alternatives. This adds substantial meaning beyond the schema's basic type definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Sample N candidates in parallel, score each, commit to the top-1.' It clearly distinguishes from sibling tools like 'par' and 'race' by explaining it's a search combinator with scoring, comparing to self-consistency/majority-vote.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides explicit guidance on evaluator forms (score: vs validate:) and when to use each. It mentions an anti-pattern (expensive evaluator) and recommends using a governor instead. However, it does not explicitly contrast with all sibling tools like 'chain' or 'map', leaving some usage context implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chainA
Run agents sequentially as a pipeline. Each stage receives the prior stage's output as context.
Args: stages: JSON array of stage objects. Each supports all sandbox fields (prompt, model, tools, sandbox, system_prompt, etc.).
| Name | Required | Description | Default |
|---|---|---|---|
| stages | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Describes data flow (output as context) and that stages support sandbox fields, but lacks detail on error handling, resource usage, or execution semantics. With no annotations, more transparency would be beneficial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences for purpose and a clear explanation of stages format. No fluff, front-loaded, efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers input semantics and pipeline behavior adequately. Missing edge cases but output schema exists, so return values not needed. Good for a simple tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter 'stages' is a string, but description clarifies it is a JSON array of stage objects and lists supported sandbox fields, adding significant meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool runs agents sequentially as a pipeline, and explains that each stage receives prior output as context. This distinguishes it from sibling tools like 'par' (parallel) and 'map_reduce'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implied usage for sequential processing, but no explicit guidance on when to use vs alternatives or when not to use. Could mention that 'par' is for parallel execution.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
classifyA
Set the classification level on a ref. Controls which MCPs can access the data.
Use for data sensitivity enforcement — e.g. mark original legal documents as 'confidential' (no WhatsApp MCP), mark synthetic outputs as 'public'.
Args: ref: A ref string or JSON object. level: Classification level: public, internal, confidential, restricted. allowed_mcps: JSON array of MCP names allowed to access this ref. denied_mcps: JSON array of MCP names denied access.
| Name | Required | Description | Default |
|---|---|---|---|
| ref | Yes | ||
| level | Yes | ||
| allowed_mcps | No | ||
| denied_mcps | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose all behavioral traits. It explains the effect on MCP access but does not address whether classification overwrites existing settings, if changes are reversible, or if there are authorization requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, with a clear first sentence stating purpose, followed by a usage example and parameter details. Every sentence adds value without redundancy or unnecessary fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers purpose, parameters, and usage context adequately. It does not explain the return value, but an output schema exists, so the agent can infer that. Minor missing detail: what happens if both allowed and denied lists are provided.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds significant meaning beyond the input schema by enumerating the classification levels (public, internal, confidential, restricted) and explaining that allowed_mcps and denied_mcps are JSON arrays of MCP names. The schema only shows types with no enums or descriptions, so the description fully compensates for the 0% schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Set' and the resource 'classification level on a ref', specifying that it controls MCP access. It distinguishes from siblings like 'encrypt' or 'wrap' by focusing on data sensitivity enforcement, which is unique among the listed tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides concrete examples of when to use the tool, such as marking legal documents as confidential and synthetic outputs as public. However, it does not explicitly mention when not to use it or compare to alternatives, but the sibling tools are not in the same domain.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
decryptA
Decrypt an encrypted ref's text. Writes the plaintext to output.md and returns the path.
You need the key_id that was returned when the ref was encrypted.
Args: ref: A ref string like "run_id/agent_id", or a JSON object with a "ref" field. key_id: The key ID returned by the encrypt tool.
| Name | Required | Description | Default |
|---|---|---|---|
| ref | Yes | ||
| key_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses side effect: writes to output.md and returns path. With no annotations, this covers critical behavioral traits, though error conditions are omitted.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise paragraphs: main action first, then args list. No wasted words, front-loaded with purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 2-param tool with an output schema, description covers purpose, side effect, and parameter usage completely. No missing critical aspects.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Provides crucial detail beyond schema: ref can be a JSON object with 'ref' field, and key_id must come from encrypt tool. Schema coverage was 0%, so description fully compensates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Decrypt an encrypted ref's text' with specific verb and resource. Distinguishes from sibling 'encrypt' tool by implying the inverse operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly requires key_id from encrypt tool as prerequisite. No explicit when-not-to-use or alternatives, but context is clear for a simple decryption task.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
encryptA
Encrypt a ref's text payload. Returns the ref with a key_id — only callers with the key can decrypt.
The ref metadata (provenance, classification, etc.) stays visible; only the text content is encrypted. Pass the key_id to specific agents or features that should be able to read the content.
Args: ref: A ref string like "run_id/agent_id", or a JSON object with a "ref" field.
| Name | Required | Description | Default |
|---|---|---|---|
| ref | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description explains that metadata stays visible, only text is encrypted, and a key_id is returned. It does not cover error conditions or auth details, but provides sufficient behavioral context for a simple tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, front-loaded with the core purpose, and structured with an 'Args' section. Every sentence adds information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has one parameter and an output schema (not shown), the description explains input and outcome comprehensively. It covers encryption behavior, metadata visibility, and key usage, making it complete for its complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has no description for the 'ref' parameter (0% coverage). The description adds valuable semantics: it accepts a ref string like 'run_id/agent_id' or a JSON object with a 'ref' field, clarifying the input format.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool encrypts a ref's text payload and explains the effect (returns ref with key_id, only callers with key can decrypt). It distinguishes from the sibling tool 'decrypt' by implication.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for confidentiality of text content and mentions key-based access, but does not explicitly contrast with alternatives or provide 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.
filterA
Filter refs by type validation — keep only results that match the declared type.
Runs validate on each ref in parallel. Returns only refs with VALID verdict. This is the type-gated composition primitive: ensures only correct results flow downstream.
Args: refs: JSON array of ref objects: [{"ref": "run_id/agent_id"}, ...]. declared_type: Type name or description to validate against. model: Model for the validator agents (default: sonnet). timeout: Timeout per validation (default: 120).
| Name | Required | Description | Default |
|---|---|---|---|
| refs | Yes | ||
| declared_type | Yes | ||
| model | No | sonnet | |
| timeout | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description bears full burden. It discloses that validation runs in parallel on each ref, returns only valid results, and defines parameters. It does not mention side effects (likely none) or failure modes, but coverage is good.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is highly conciseness: two short paragraphs plus an Args list. Front-loaded with main purpose, then details, then parameters. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 4 parameters and an output schema, the description adequately covers behavior (parallelism, return criterion) and parameter meanings. Minor gaps: no edge case handling (e.g., empty refs) but not critical.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description must compensate. It provides a clear Args section explaining each parameter: refs (JSON array), declared_type (type name), model (default), timeout (default). This adds significant meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool filters refs by type validation, keeping only those with a VALID verdict. It explicitly calls itself a 'type-gated composition primitive', making its purpose distinct from sibling tools like 'validate' or 'chain'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use (to filter valid refs) but does not explicitly compare to alternatives or state when not to use it. Given many sibling tools, more explicit guidance would improve usability.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_type_definitionA
Get a type definition by name, optionally resolving [references] to other types.
Args: name: Type name (e.g. "mcp-server", "tarball", "code-review"). resolve_refs: Whether to inline [referenced] types (default: true).
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| resolve_refs | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must disclose behavior. It mentions optional resolution of references, but does not explain error conditions, permissions, or return format beyond the output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise: two sentences plus a bullet list, with no unnecessary words. Information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple getter with few parameters and an output schema, the description covers the core purpose and parameter semantics. It lacks guidance on when to use versus related tools, but is otherwise sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Despite 0% schema description coverage, the description adds examples for 'name' and clarifies the effect of 'resolve_refs' (inline references, default true), which goes beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get a type definition by name' with a specific verb and resource, and distinguishes itself from siblings like 'list_type_registry' which lists all types.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage (e.g., when you need a single type definition) but does not explicitly state when to use this tool versus alternatives like 'list_type_registry' or 'validate'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
guardA
Check a monadic condition on a ref. Returns the ref if the guard passes, error if not.
Use to enforce constraints before passing refs to downstream combinators.
Args: ref: A ref string or JSON object. check: The guard to check — one of: "validated", "budget", "classification", "encrypted", "exists". value: Required for some checks — e.g. the type name for "validated", the classification level for "classification".
| Name | Required | Description | Default |
|---|---|---|---|
| ref | Yes | ||
| check | Yes | ||
| value | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full burden of behavioral disclosure. It states the outcome (returns ref or error) but does not disclose side effects, permissions, or whether the operation is read-only. The mention of 'monadic condition' is vague. This leaves ambiguity about non-obvious behaviors.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (4 lines plus Args block) and well-structured. It provides essential information without unnecessary verbosity. The use of an Args section clearly delineates parameter explanations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (3 parameters, no annotations, output schema exists), the description covers purpose, parameters, and basic behavior. It mentions the output (ref or error) but does not detail the output schema structure. Still, this is sufficient for an agent to use the tool correctly in most scenarios.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains the 'check' parameter's enum values explicitly and provides examples for 'value' (e.g., type name for validated). However, the description for 'ref' says 'string or JSON object' while the schema defines it as 'string', which creates a minor inconsistency.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it checks a monadic condition on a ref and returns the ref or an error. It names specific check types, which aids understanding. However, it does not explicitly differentiate from sibling tools like 'validate' or 'filter', which may have overlapping functionality.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states 'Use to enforce constraints before passing refs to downstream combinators.' This provides clear usage context. It does not mention when not to use or alternative tools, but the context is sufficient for basic guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
huntA
Run multiple (fetch → map → score) hunt strategies in parallel and merge.
Each strategy is an independent (fetch, plan, score) triple with its own seed prompt or explicit seeds, plan template, and rubric. Strategies run concurrently; a failure in one does not halt the others. All scored refs across all strategies are merged into a single globally-ranked leaderboard so you can see which strategy produced the highest-yield finding.
This is the compound combinator that makes "run all the hunt framings at once" tractable — rather than sequentially trying one hunt shape at a time, you parallelise across framings (problem-driven, gap-in-field, broken-claims, tool-landscape, connection) and let the scoring sort them.
Strategy dict fields:
name(required) — short label used for tagging and per-strategy reporting in the leaderboard.seeds(optional) — pre-supplied list of seed strings (each becomes a map input). Exactly one ofseedsorfetcher_promptmust be set.fetcher_prompt(optional) — prompt sent to a singleruncall that must emit a JSON array of seed strings (or a JSON object with aseedskey). The agent runs with network enabled.planner_template(required) — prompt template for the map step. Use{input}as the placeholder for each seed.rubric(required) — evaluator directive for the score step. Any form accepted by_evaluate_node:validate:<type>,score:<criterion>, orexec:<cmd>.top_k(optional, default 3) — how many winners this strategy contributes to the unified leaderboard.model_planner(optional, default "haiku") — model for the map step.model_fetcher(optional, default "haiku") — model for the fetch step.timeout(optional) — per-agent timeout in seconds.
Args: strategies: JSON array of strategy dicts (or a Python list). max_parallel_strategies: Upper bound on strategies running at once (default: 5). Each strategy internally parallelises its map step. top_k_global: Size of the unified leaderboard across all strategies (default: 10).
Returns:
JSON with run_id, strategies (per-strategy summary including
name, error-if-any, total_cost, winner_ref, best_score), and
leaderboard (globally-ranked list tagged by strategy). The full
per-ref scoring trace lives at strategy_details[i].ranked.
| Name | Required | Description | Default |
|---|---|---|---|
| strategies | Yes | ||
| max_parallel_strategies | No | ||
| top_k_global | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully covers behavioral traits: concurrent execution, failure isolation, merging into a global leaderboard, default values for strategies (top_k, models, timeout), and detailed return structure (run_id, strategies, leaderboard, per-ref scoring trace).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is somewhat lengthy but well-structured: it starts with the core purpose, then explains the strategy dict in detail, followed by args and returns. Every sentence earns its place, though some sections (like the extensive strategy fields) could be slightly more compressed without losing clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (orchestrating multiple strategies), the description is complete. It covers usage, parameter details, defaults, failure behavior, merging logic, and return format. The output schema exists but the description also explains the return structure, so no gaps remain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description compensates by exhaustively documenting the strategies parameter with required/optional fields, each field's meaning, and examples. It also explains max_parallel_strategies and top_k_global with defaults, adding all meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Run multiple (fetch → map → score) hunt strategies in parallel and merge.' It further explains it's a 'compound combinator' for parallelizing hunt framings, distinguishing it from sibling tools like run, map, or chain that operate on single sequences.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly indicates when to use this tool: 'makes run all the hunt framings at once tractable — rather than sequentially trying one hunt shape at a time.' It implies an alternative (sequential use) but does not explicitly list when not to use it. The parallel nature and failure isolation are well explained.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inspectA
Inspect an agent's full execution state — partial output, stream log, files produced.
Use after a timeout, crash, or unexpected result to understand what happened. Writes a human-readable debug report to output_dir/inspect.md.
Args: ref: A ref string like "run_id/agent_id".
| Name | Required | Description | Default |
|---|---|---|---|
| ref | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses the side effect of writing a debug report to output_dir/inspect.md. No annotations exist, so description carries full burden; additional details on read-only nature could improve score.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise paragraphs with clear structure: first explains what the tool does, second gives usage guidance and parameter hint. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter tool with an output schema, the description fully covers input purpose, output side effect, and usage scenario. No gaps remain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaning to the 'ref' parameter beyond the schema by providing an example format 'run_id/agent_id'. With 0% schema coverage, this compensation is effective but still basic.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool inspects an agent's full execution state, listing specific components (partial output, stream log, files produced). This distinguishes it from sibling tools that execute or manage agents.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Use after a timeout, crash, or unexpected result to understand what happened', providing clear context for when to use this tool vs alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
iterateA
Iteratively refine an agent's output until an evaluator is satisfied.
Runs the agent up to max_iterations times. Each iteration sees the
prior attempts' outputs, scores, and issues injected into its prompt, so
the agent can correct the specific shortcomings the evaluator called out
on the last pass. Halts when any of these become true:
Evaluator score >=
success_threshold(success).patienceiterations pass with no improvement to the best score.Total agent cost exceeds
max_budget(best-so-far).Wall-time exceeds
max_wall_timeseconds (best-so-far).max_iterationsreached (best-so-far).
Evaluator forms (pass exactly one of target_type or evaluator):
target_type="some-type"— shorthand forevaluator="validate:some-type". LLM validator against a registered type. Best for text artifacts whose correctness is a matter of shape and content.evaluator="validate:<type>"— explicit form of the above.evaluator="exec:<shell cmd>"— ground-truth executor. The agent's output is written to a tempfile and the command runs with$ARTIFACTset to the path (and{artifact}substituted in the template). Exit 0 scores 1.0; non-zero scores 0.0 with stderr parsed into issues. Use for artifacts with compile/build/test semantics (docker build,pytest, etc.) — this is the only way to get ground-truth feedback.evaluator="score:<criterion>"— ad-hoc LLM rubric scoring via haiku.
Args:
prompt: Base task description sent to the agent on iteration 1; on
subsequent iterations it is augmented with a "Prior attempts"
section summarising previous outputs, scores, and issues.
target_type: Shorthand for evaluator="validate:<target_type>". Also
injects the type as output_type context on the agent prompt.
evaluator: Full evaluator directive (validate:, exec:, or
score:). Takes precedence over target_type if both given.
max_iterations: Hard cap on iteration count (default: 10).
success_threshold: Score at or above which we declare success
(default: 0.9). Must be in [0.0, 1.0].
patience: Halt if patience consecutive iterations fail to improve
on the best score so far (default: 3).
max_budget: Optional USD cap on total agent (proposer) cost. Evaluator
cost is not counted. Halts best-so-far on breach.
max_wall_time: Optional wall-time cap in seconds. Halts best-so-far
on breach.
sandbox: Named sandbox spec or inline JSON for the agent.
model: Agent (proposer) model (default: sonnet).
timeout: Per-iteration agent timeout in seconds.
mcps: JSON array of MCP server names attached to the agent.
Returns:
JSON with run_id, iterations, halted_because,
best_iteration, best_ref (validated-stamped), best_score,
total_cost, and the full attempts trace with per-iteration
ref / score / issues / cost.
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes | ||
| target_type | No | ||
| evaluator | No | ||
| max_iterations | No | ||
| success_threshold | No | ||
| patience | No | ||
| max_budget | No | ||
| max_wall_time | No | ||
| sandbox | No | ||
| model | No | sonnet | |
| timeout | No | ||
| mcps | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It thoroughly covers the iterative behavior, halting conditions (success threshold, patience, budget, wall time, max iterations), evaluator forms, and how prior attempts are injected. This is comprehensive and transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with sections for general behavior, evaluator forms, and arguments. It is front-loaded with the main purpose. While somewhat lengthy, it earns its sentences given the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite 12 parameters and 1 required, the description covers all aspects: behavior, halting conditions, evaluator variants, parameter details, and return value structure (output schema exists). It is complete and leaves no major gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, meaning the schema lacks parameter descriptions. The description compensates fully with detailed 'Args' section explaining each parameter, including defaults and behavior. This adds significant meaning beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Iteratively refine an agent's output until an evaluator is satisfied.' It explains the iterative process and distinguishes it from siblings like chain or map by emphasizing evaluator-based refinement.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use the tool (e.g., for iterative refinement with an evaluator) and describes evaluator forms and halting conditions. However, it does not explicitly state when not to use it or provide alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_governor_specsA
List all registered LLM-governed governors.
Returns each governor's name, description, model, and a preview of its spec.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states the return fields but does not explicitly mention read-only nature, pagination, or other behavioral traits. Inference is possible but not explicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no fluff. First sentence clearly states purpose, second adds return details. Efficient and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless list tool with an output schema, the description adequately explains the purpose and return. Could mention pagination or ordering but is generally complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, so baseline is 4. Description adds value by specifying the return fields (name, description, model, preview), which goes beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description explicitly states 'List all registered LLM-governed governors' with a clear verb and resource. It distinguishes from sibling 'list_sandbox_specs' by specifying 'governors' vs 'sandbox'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use guidance. While the purpose is clear, the description does not contrast with alternatives or provide context for when to choose this over sibling tools like 'save_governor_spec'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_pipelinesA
List recent pipeline runs and their current status.
Scans /tmp/swarm-mcp/ for pipeline-status.json files and returns a summary of all known runs, sorted by last_updated descending. Also annotates which runs have live threads in the current process.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description bears the full burden. It discloses scanning a specific directory, returning sorted summaries, and annotating live threads. It does not mention side effects or permissions, but for a read-only list tool, this is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences covering purpose, source, and behavior. Front-loaded with main action. Could be slightly more concise, but no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero parameters and presence of an output schema (not shown but noted), the description covers all essential aspects: what it lists, how it retrieves data, sorting, and additional annotation. No gaps detected.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, so per guidelines baseline is 4. The description doesn't need to add parameter info, and it doesn't repeat anything from the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it lists pipeline runs with status, specifies file source and sorting order, and distinguishes from siblings like pipeline_status by focusing on recent runs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains what the tool does but provides no guidance on when to use it versus alternatives like pipeline_status or pipeline_kill. Usage context is implied but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_sandbox_specsA
List all saved sandbox specs from ~/.claude/sandboxes/.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so description carries full burden. It only states the directory location, omitting behaviors like error handling, sorting, or symlink following. Minimal disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence that is direct and front-loaded. Every word contributes meaning without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters and an existing output schema, the description is nearly complete. It could mention edge cases like missing directory, but overall adequate for a simple list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, and schema coverage is 100%. The description adds no parameter details, but with zero parameters the baseline expectation is met.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'list' and identifies the resource as 'saved sandbox specs' with an explicit file path. It clearly distinguishes from sibling tools like 'list_governor_specs' and 'save_sandbox_spec'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., other list tools). No context on prerequisites or exclusions is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_type_registryA
List all registered types from ~/.claude/types/.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description only states the action without disclosing behavioral traits like being read-only, permissions needed, or side effects. The simplicity of listing might imply low risk, but transparency is minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with no wasted words. It is front-loaded and immediately communicates the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list operation with no parameters and an existing output schema, the description is complete. It sufficiently explains the tool's action and source context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has no parameters, and the schema coverage is 100%. The description adds value by specifying what is listed (registered types) and the source directory, providing context beyond the empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'List all registered types from ~/.claude/types/.' clearly states the action (list) and the resource (registered types from a specific path). It distinguishes itself from sibling tools that perform other operations like get_type_definition or inspect.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as get_type_definition. The description lacks context about prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mapA
Apply a prompt template to each input in parallel. Use {input} as the placeholder.
Args: prompt_template: Prompt template with {input} placeholder(s). inputs: JSON array of input strings: ["input1", "input2", ...]. sandbox: Named sandbox spec or inline JSON. network: Whether containers have network access (default: true — needed for API calls). tools: Comma-separated list of allowed Claude tools. model: Claude model to use (default: sonnet). timeout: Max execution time per agent in seconds (default: 120). max_concurrency: Max agents running simultaneously (default: 5). system_prompt: System prompt injected via --system-prompt. claude_md: Project instructions written to workspace CLAUDE.md. output_schema: JSON schema string for structured output. mcps: JSON array of MCP server names to attach. effort: Effort level: low, medium, high, max.
| Name | Required | Description | Default |
|---|---|---|---|
| prompt_template | Yes | ||
| inputs | Yes | ||
| sandbox | No | ||
| network | No | ||
| tools | No | Read,Write,Glob,Grep,Bash | |
| model | No | sonnet | |
| timeout | No | ||
| max_concurrency | No | ||
| system_prompt | No | ||
| claude_md | No | ||
| output_schema | No | ||
| mcps | No | ||
| effort | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries full burden. It discloses key behaviors: parallel execution, defaults (model, network, tools, timeout, concurrency), and that network=true is needed for API calls. Lacks warnings about cost or resource implications.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description begins with a concise one-sentence purpose, followed by a well-structured argument list. Every sentence adds value, with no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 13 parameters and an output schema, the description covers all necessary aspects: parallel execution, defaults, allowed tools, and optional settings. The output schema exists, so return values need not be explained. The tool's complexity is fully addressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, yet the description's 'Args' section explains every parameter with types, defaults, and context (e.g., 'inputs: JSON array of input strings', 'network: default: true — needed for API calls'). This adds substantial meaning beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Apply a prompt template to each input in parallel' which is a specific verb+resource, and the placeholder '{input}' clarifies usage. This differentiates from siblings like chain and map_reduce.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies parallel processing but does not explicitly contrast with alternatives like chain (sequential) or map_reduce (with reduction). No when-not-to-use guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
map_reduceA
Map a prompt over inputs in parallel, then reduce results into one — all in a single call. Fan-out then synthesise: map produces N results, reduce consumes them, no manual plumbing.
Args: prompt_template: Prompt template with {input} placeholder(s). inputs: JSON array of input strings: ["input1", "input2", ...]. synthesis_prompt: Instructions for how to synthesise the map results. sandbox: Named sandbox spec or inline JSON (used for map agents). network: Whether containers have network access (default: true — needed for API calls). tools: Comma-separated list of allowed Claude tools for map agents. model: Claude model for map agents (default: sonnet). reduce_model: Claude model for the reduce agent (default: same as model). timeout: Max execution time per agent in seconds (default: 120). max_concurrency: Max map agents running simultaneously (default: 5). system_prompt: System prompt for map agents. reduce_system_prompt: System prompt for the reduce agent. output_schema: JSON schema for structured reduce output. mcps: JSON array of MCP server names for map agents. effort: Effort level for map agents.
| Name | Required | Description | Default |
|---|---|---|---|
| prompt_template | Yes | ||
| inputs | Yes | ||
| synthesis_prompt | Yes | ||
| sandbox | No | ||
| network | No | ||
| tools | No | Read,Write,Glob,Grep,Bash | |
| model | No | sonnet | |
| reduce_model | No | ||
| timeout | No | ||
| max_concurrency | No | ||
| system_prompt | No | ||
| reduce_system_prompt | No | ||
| output_schema | No | ||
| mcps | No | ||
| effort | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, but description covers parallel execution, defaults for various parameters, and output schema. Omits edge cases like agent failures or cancellation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Opening sentences are concise and front-loaded. Parameter list is clear but long; could be more structured (e.g., required first).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers workflow, all parameters, defaults, and output schema. Lacks examples or error handling behavior, but sufficient for a complex tool with no annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All 15 parameters are described with one-line explanations adding meaning beyond names. Some descriptions are vague (e.g., effort) but overall good given 0% schema description coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool combines map and reduce in one call, explaining the fan-out and synthesis process. It distinguishes from siblings like map or reduce alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context for when to use (fan-out then synthesize) but lacks explicit when-not-to-use or direct comparison to separate map+reduce calls.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
parA
Run multiple Claude agents in parallel. Each task can have its own config.
Args: tasks: JSON array of task objects. Each supports all sandbox fields (prompt, model, tools, sandbox, system_prompt, claude_md, output_schema, mcps, effort, etc.). max_concurrency: Max agents running simultaneously (default: 5).
| Name | Required | Description | Default |
|---|---|---|---|
| tasks | Yes | ||
| max_concurrency | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must disclose behavior. It covers the core parallel execution and default concurrency, but lacks details on failure handling, timeouts, resource limits, or result aggregation, which are important for a parallel execution tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise: a two-sentence overview followed by parameter descriptions. It is front-loaded with the main purpose and every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (parallel execution) and that an output schema exists, the description should explain what the tool returns. It omits return value details, error behavior, and concurrency limits beyond the default, leaving gaps for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description adds rich semantics: explains that 'tasks' is a JSON array supporting all sandbox fields and lists examples, and clarifies 'max_concurrency' default. This greatly exceeds the minimal schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool runs multiple Claude agents in parallel with independent configs. It distinguishes from siblings like 'chain' or 'map' through the parallel execution aspect, but does not explicitly contrast with similar tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for parallel tasks with custom configs but does not provide explicit guidance on when to use this tool versus alternatives like 'map' or 'race'. No when-not-to-use or preconditions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipelineA
Launch a pipeline in the background and return immediately.
The pipeline runs asynchronously in a daemon thread. Use pipeline_status(run_id) to poll progress, and pipeline_kill(run_id) to stop it.
The definition is a JSON object or a pipeline name (loaded from registered project pipelines/ directories or ~/.claude/pipelines/).
Pipeline format: { "name": "optional-name", "sandbox": "optional-default-sandbox", "steps": [ {"id": "step-0", "prompt": "...", "model": "sonnet", "sandbox": "...", ...}, {"id": "test", "prompt": "Run tests", "tools": "Bash", "on_fail": "fix"}, {"id": "fix", "prompt": "Fix failing tests", "tools": "Read,Edit,Bash", "condition": "prev.error", "next": "test", "max_retries": 3} ] }
Step fields: prompt (required), plus any sandbox fields (model, tools, system_prompt, etc.). Control flow: on_fail (step id to jump to on error, or {"governor": "name"} for LLM-governed recovery — see save_governor_spec), on_success ({"governor": "name"} for LLM-governed continuation), next (jump after success), condition ("prev.error" = only run if previous failed), max_retries, retry_if ({target_step: keyword} — jump if output contains keyword). Any unhandled failure terminates the pipeline with status="broken".
Args: definition: Pipeline name (loaded from ~/.claude/pipelines/.json) or inline JSON definition. resume: Resume a previous run. Format: "run_id" or "run_id/step_id". Reuses the shared directory from the previous run. If step_id is given, skips to that step. If only run_id, resumes from the step that failed.
| Name | Required | Description | Default |
|---|---|---|---|
| definition | Yes | ||
| resume | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description fully covers behavior: asynchronous daemon thread, control flow fields (on_fail, condition, max_retries), resume semantics, and termination on unhandled failure. Comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with clear sections, bullet points for pipeline format, and front-loaded summary. Slightly lengthy but justified by complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given complexity, no annotations, and presence of output schema, the description is thorough: covers input, async behavior, control flow, error handling, resume, and references to other tools. No gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but description richly explains both parameters: 'definition' can be name or inline JSON with detailed format; 'resume' format and behavior for resuming from run_id or step_id. Adds significant value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool launches a pipeline asynchronously and returns immediately. Distinguishes from sibling tools like pipeline_status and pipeline_kill by referencing them for monitoring/stopping.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly describes when to use (async launch), references complementary tools, and explains control flow behavior. Lacks explicit when-not-to-use or comparison with synchronous alternatives like 'run'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipeline_artifactsA
List artifacts produced by a pipeline run.
Without step_id: lists the /shared/ directory contents (inter-step files) plus a summary of each step's output directory.
With step_id: lists that specific step's output directory in detail, including file sizes. Use unwrap(ref) or Read() to view file contents.
Args: run_id: The pipeline run ID. step_id: Optional step ID to inspect. If omitted, lists shared/ and all steps.
| Name | Required | Description | Default |
|---|---|---|---|
| run_id | Yes | ||
| step_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description should disclose behavioral traits. It explains the listing behavior (shared/ vs step outputs, file sizes) but does not explicitly state it is read-only, safe, or mention any side effects. The behavioral info is adequate but not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: a single-sentence intro, followed by two clear paragraphs for the two usage modes. Every sentence adds value, and the structure is front-loaded and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (two modes, output schema exists), the description covers all necessary aspects: parameters, usage modes, and hints for next steps. It does not need to detail the output schema since it is provided separately.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema coverage, the description fully explains both parameters: run_id (required) and step_id (optional, with effects). It details the difference in behavior between providing and omitting step_id, adding significant meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists artifacts from a pipeline run, with two distinct modes (with/without step_id). It distinguishes from sibling tools like pipeline_status and unwrap/Read, making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use each mode and suggests using unwrap(ref)/Read() to view contents. However, it does not explicitly state when not to use this tool or mention any prerequisites, though context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipeline_killA
Kill a running pipeline and all its Docker containers.
Sets the pipeline's stop event (so the loop exits cleanly after the current step) and immediately kills all Docker containers associated with the run.
Args: run_id: The pipeline run ID to kill.
| Name | Required | Description | Default |
|---|---|---|---|
| run_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses important behavioral traits: sets a stop event for clean loop exit and kills all Docker containers. With no annotations, this bears the full burden of transparency and does so adequately, though it lacks detail on side effects like irreversible data loss.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Concise and front-loaded with the main purpose. The Args section is structured but embedded in the description, making it slightly less clean. However, every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple action (kill) and availability of an output schema (not shown), the description covers the essential behavior and parameter. It does not need to explain return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter (run_id) with 0% schema coverage. The description adds meaning by stating 'The pipeline run ID to kill,' clarifying the purpose beyond the schema's type and title.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Kill') and the resource ('a running pipeline and all its Docker containers'). This is specific and distinguishes it from sibling tools like pipeline_status or pipeline_artifacts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. The description does not mention when not to use it or provide context for decision-making among related pipeline tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipeline_statusA
Return the current status of a running or completed pipeline.
Reads /tmp/swarm-mcp//pipeline-status.json and returns its contents. The status file is written after each step completes.
Args: run_id: The pipeline run ID returned by the pipeline() tool.
| Name | Required | Description | Default |
|---|---|---|---|
| run_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden and clearly explains it reads a file (non-destructive), specifies the file path, and notes when the file is updated. This provides sufficient behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with three short sentences, front-loading the purpose, and provides necessary details without unnecessary fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (1 param, output schema present), the description adequately covers purpose, behavior, and parameter meaning. Minor omission: no mention of possible errors, but not critical for a status check.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description explains the run_id parameter as 'The pipeline run ID returned by the pipeline() tool.', adding essential context beyond the schema's type-only definition.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns the current status of a running or completed pipeline, using a specific verb ('Return') and resource ('status'). It distinguishes itself from sibling tools like pipeline_kill and pipeline_artifacts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description indicates the tool is used after starting a pipeline via the pipeline() tool, and mentions the status file is written after each step, implying polling usage. It does not explicitly state when not to use it, but context from sibling tools makes the use case clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
raceA
Run multiple approaches in parallel, return the first to succeed.
All tasks start simultaneously. As soon as one completes without error, its ref is returned. Remaining tasks are abandoned (their containers are killed). Use for speculative execution or when multiple strategies might work.
Args: tasks: JSON array of task objects (same format as par). max_concurrency: Max agents running simultaneously (default: 5).
| Name | Required | Description | Default |
|---|---|---|---|
| tasks | Yes | ||
| max_concurrency | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite no annotations, the description discloses key behaviors: tasks run simultaneously, first success returns its ref, remaining tasks are abandoned and containers killed. This provides essential behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with a clear summary line and bullet-list args. Every sentence adds value, though could be slightly more concise; overall efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 2-param tool with no enums, the description covers the race pattern, parallel execution, and abandonment. Output schema exists but is not shown; 'ref' is mentioned but could be clarified, but given sibling context it is acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description adds meaning by referencing the task format from 'par' and explaining max_concurrency as controlling simultaneous agents. This compensates for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool runs multiple approaches in parallel and returns the first to succeed, with specific verbs and resource. It distinguishes from siblings like 'par' by highlighting the race condition and abandonment of remaining tasks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly recommends use for speculative execution or when multiple strategies might work. Implies not to use when all results are needed, but does not explicitly mention alternatives like 'par' for collecting all results, though the behavior difference is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reduceA
Synthesise multiple results into one. Accepts plain strings or structured AgentResult objects (auto-extracts .text fields), so you can pipe par/map output directly without manual unwrapping.
Args: results: JSON array — either plain strings ["text1", "text2"] or AgentResult objects [{"text": "...", ...}]. synthesis_prompt: Instructions for how to synthesise the results. sandbox: Named sandbox spec or inline JSON. network: Whether the container has network access (default: true — needed for API calls). tools: Comma-separated list of allowed Claude tools. model: Claude model to use (default: sonnet). timeout: Max execution time in seconds (default: 120). mcps: JSON array of MCP server names to attach to the reducer agent. system_prompt: System prompt for the reducer agent.
| Name | Required | Description | Default |
|---|---|---|---|
| results | Yes | ||
| synthesis_prompt | Yes | ||
| sandbox | No | ||
| network | No | ||
| tools | No | Read,Write,Glob,Grep,Bash | |
| model | No | sonnet | |
| timeout | No | ||
| system_prompt | No | ||
| mcps | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses auto-extraction of .text fields and input handling, but does not mention that it calls a language model or potential network usage (though parameter descriptions cover defaults). Without annotations, more explicit behavioral cues would help.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Concise intro followed by a clear parameter list. No redundant sentences; efficiently front-loads purpose. Appropriate length for the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers all parameters and core behavior. With an output schema provided, return values are handled. Could explicitly note that output is a single synthesized string and that model usage may incur costs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% description coverage, but the description provides thorough explanations for all 9 parameters, including format clarifications (e.g., results as JSON array, sandbox spec), defaults, and allowed values, fully compensating for schema gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly describes the tool as synthesizing multiple results into one, specifying input types (plain strings or AgentResult objects) and noting it works with output from par/map, distinguishing it from siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage after par/map, but does not explicitly contrast with alternatives like map_reduce or state when not to use it. Provides clear context but no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
retryA
Run a single agent with automatic retries on failure.
If declared_type is set, retries until the output validates as that type (not just until exit code 0). Each attempt receives the prior error as context.
Args: prompt: The task prompt. max_attempts: Maximum number of attempts (default: 3). sandbox: Named sandbox spec or inline JSON. model: Claude model (default: sonnet). timeout: Timeout per attempt (default: 120). declared_type: If set, validates output and retries if not VALID. mcps: JSON array of MCP server names to attach.
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes | ||
| max_attempts | No | ||
| sandbox | No | ||
| model | No | sonnet | |
| timeout | No | ||
| declared_type | No | ||
| mcps | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses key behavioral traits: retries on failure, prior error as context, type validation retry logic. Lacks details on final failure behavior, side effects, or idempotency. With no annotations, description is decent but not fully comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose stated upfront, followed by a bullet-like Args list. No redundant sentences, but could be slightly more concise by integrating defaults inline.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers main functionality but omits behavior after all retries exhausted, error handling, and does not reference output schema. For a 7-param tool with output schema, more completeness is expected.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but description provides brief explanations for each parameter, e.g., 'The task prompt' for prompt. Adds some meaning but lacks detail on constraints or formats.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool runs a single agent with automatic retries on failure, and explains the type validation retry condition. Distinguishes from siblings like 'run' (no retries) and 'chain' (multiple agents).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context for usage: when retries are needed or type validation is desired. However, does not explicitly state when not to use or compare to alternatives like 'run' or 'beam'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
runA
Run a single Claude agent in a Docker container. Returns the agent's text output and metadata.
Args: prompt: The task prompt for the agent. sandbox: Named sandbox spec (from ~/.claude/sandboxes/) or inline JSON. Overrides below are merged on top. network: Whether the container has network access (default: true — needed for API calls). tools: Comma-separated list of allowed Claude tools (default: Read,Write,Glob,Grep,Bash). mounts: JSON array of mount specs: [{"host_path": "...", "container_path": "...", "readonly": true}]. model: Claude model to use (default: sonnet). Options: haiku, sonnet, opus. timeout: Max execution time in seconds (default: 120). system_prompt: System prompt injected via --system-prompt (role, persona, instructions). claude_md: Project instructions written to workspace CLAUDE.md. output_schema: JSON schema string for structured output (--json-schema). mcps: JSON array of MCP server names to attach: ["database-mcp", "whatsapp"]. effort: Effort level: low, medium, high, max. max_budget: Explicit USD budget cap. env_vars: JSON object of environment variables: {"KEY": "value"}. input_files: JSON object of files to inject: {"/path": "content"}. memory: Docker memory limit (e.g. "2g"). cpus: Docker CPU limit (e.g. 2.0). gpu: Pass --gpus all to Docker for GPU access (default: false). Acquires the "gpu" resource pool (capacity 1). resources: JSON array of named resource pools to acquire before execution (e.g. '["gpu", "database"]'). Agents wait for all resources. Configure capacity via SWARM_RESOURCE_= env vars. input_type: Natural language type describing what the agent receives (e.g. "research notes", "[code-review]"). output_type: Natural language type describing what the agent must produce (e.g. "[mcp-server] with [test-suite]").
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes | ||
| sandbox | No | ||
| network | No | ||
| tools | No | Read,Write,Glob,Grep,Bash | |
| mounts | No | [] | |
| model | No | sonnet | |
| timeout | No | ||
| system_prompt | No | ||
| claude_md | No | ||
| output_schema | No | ||
| mcps | No | ||
| effort | No | ||
| max_budget | No | ||
| env_vars | No | ||
| input_files | No | ||
| memory | No | ||
| cpus | No | ||
| gpu | No | ||
| resources | No | ||
| input_type | No | ||
| output_type | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must convey behavioral traits. It details resource acquisition, GPU access, and Docker limits, but does not explicitly state whether the operation is destructive or cleans up containers. It mentions returning 'text output and metadata' but not error handling or side effects like filesystem modifications.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is verbose, spanning multiple paragraphs with per-parameter bullet points. While organized, it could be more concise by front-loading key behavioral traits and reducing parameter explanations that could be derived from defaults. It earns space but loses efficiency.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (21 parameters, Docker orchestration), the description covers purpose, parameters, and resource management comprehensively. It lacks details on return format beyond 'text output and metadata' and does not address error or cancellation handling, but remains largely complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema coverage, the description fully compensates by explaining each of the 21 parameters with default values, types, and examples (e.g., mcps: 'JSON array of MCP server names to attach: ["database-mcp", "whatsapp"]'). This adds significant meaning beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Run a single Claude agent in a Docker container.' indicating a specific verb and resource. The word 'single' hints at distinction from sibling tools like 'chain' or 'pipeline' that handle multi-step workflows, though it does not explicitly contrast them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not specify scenarios where 'run' is preferable (e.g., one-off tasks) or when to avoid it (e.g., multi-step orchestration). Sibling tools like 'chain', 'pipeline', or 'map' are not mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_governor_specA
Register an LLM-governed governor for use in pipeline control flow.
Governors are evaluated at trigger points (on_fail, on_success) to decide the continuation. The spec is a natural language description of what the governor should decide. The governor LLM returns one of:
next — proceed normally
jump(target) — jump to a named step
halt — stop the pipeline cleanly
broken(reason) — stop and write broken status (visible via pipeline_status)
patch_pipeline — deep-merge patch the pipeline definition and continue
Each continuation also carries a free-form context dict that accumulates
across the pipeline and is written to /shared/governor-context.json, plus a
confidence score in [0.0, 1.0].
Reference a governor in a pipeline step: "on_fail": {"governor": "Failure"} "on_success": {"governor": "Validation"}
Args:
name: Unique governor name used to reference it from pipeline steps.
spec: Natural language description telling the LLM what to decide.
description: One-line summary shown in list_governor_specs.
model: Claude model for evaluation (default: haiku).
beam_width: Self-consistency beam width. When >1 the harness samples the
governor N times in parallel and commits to the confidence-weighted
majority decision. Losing candidates are preserved on the winner's
alternatives field for inspection. Default 1 (no beam).
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| spec | Yes | ||
| description | No | ||
| model | No | claude-haiku-4-5-20251001 | |
| beam_width | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It details the beam_width behavior (parallel sampling, confidence-weighted majority, alternatives field) and mentions context dict accumulation. It does not specify overwrite behavior or error handling, but the core behavioral traits are well covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured: a one-line purpose, followed by details on governor decisions, then a clear Args section for parameters. Every sentence adds value, and the most critical information is front-loaded. No unnecessary words or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite the tool's complexity (5 parameters, beam_width behavior), the description omits the return value of the save operation and does not clarify whether re-registering an existing name overwrites or errors. With an output schema present (but not shown), the agent might infer the return type, but explicit mention would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description fully compensates by explaining each parameter in the Args section: name (unique reference), spec (natural language), description (one-line summary), model (Claude variant with default), beam_width (self-consistency with detailed behavior). This adds rich semantic meaning beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Register an LLM-governed governor for use in pipeline control flow.' It explains what a governor does, lists possible continuations, and shows how to reference it in pipeline steps. This distinguishes it from sibling tools like list_governor_specs, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool (defining a governor for pipeline steps) and explains the parameters and behavior. It does not explicitly state when not to use it or compare with alternatives, but the context is sufficient for an AI agent to understand usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_sandbox_specA
Save a reusable sandbox spec to ~/.claude/sandboxes/.json.
Args: name: Name for the sandbox spec (e.g. "web-researcher", "code-reviewer"). spec: JSON object with sandbox fields: model, tools, mcps, system_prompt, claude_md, output_schema, effort, max_budget, mounts, workdir, input_files, network, memory, cpus, timeout, env_vars.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| spec | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the full burden. It discloses the save location and lists spec fields, but does not mention overwrite behavior, validation, permissions, or side effects. The behavioral disclosure is adequate but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: a one-sentence purpose followed by a clear bullet-point list of arguments. Every sentence adds value, and the most important information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with an output schema (assumed to cover return values), the description covers the action and parameters well. It lacks details on file overwriting or error conditions, but the spec field listing is thorough. Overall, it provides sufficient context for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It fully explains both parameters: 'name' with an example, and 'spec' with a list of all expected fields. This adds essential meaning beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Save' and the resource 'sandbox spec', specifying the exact file location. It distinguishes from siblings like 'save_governor_spec' (different spec type) and 'list_sandbox_specs' (different action).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for saving reusable sandbox configurations but provides no explicit guidance on when to use versus alternatives, nor when not to use it. Siblings include many unrelated tools, but no when-to-use or when-not-to-use context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
score_listA
Score and rank a list of existing refs against an evaluator.
This is the missing piece for "generate N candidates, then pick the best"
pipelines where the N candidates already exist as refs from an upstream
combinator (map, par, etc.) — beam is the wrong shape because
it fans out width-N proposers of the same prompt, whereas score_list
takes N different outputs and ranks them.
The key infrastructure point: refs are resolved to their artifact text
server-side, so callers do not need to pipe full artifact text
through tool parameters. This clears the ~4KB param-size wall you would
otherwise hit scoring 6+ medium-length artifacts through map.
Evaluator forms are the same as iterate / beam:
validate:<type>— LLM validator against a registered typescore:<criterion>— ad-hoc haiku rubricexec:<shell-cmd>— ground-truth shell command (exit code scoring)
Each ref is tagged with a search stamp carrying its score and
beam_rank. Refs outside the top-k are marked pruned=True
with a reason pointing at the beam cut. top_k=0 means return all
without pruning.
Args:
refs: JSON array of refs — either ["run_id/agent_id", ...] or
[{"ref": "run_id/agent_id"}, ...]. Both forms are accepted.
evaluator: Scoring directive (validate:<type>, score:<criterion>,
or exec:<cmd>).
top_k: How many top-scoring refs to surface as winners. 0 means
rank-only, no pruning stamp applied.
max_concurrency: Upper bound on parallel evaluator calls (default: 5).
Returns:
JSON with run_id, evaluator, total, top_k,
winners (list of winning ref strings), and ranked (the full
per-ref trace: rank, ref, score, verdict, issues, reason).
| Name | Required | Description | Default |
|---|---|---|---|
| refs | Yes | ||
| evaluator | Yes | ||
| top_k | No | ||
| max_concurrency | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that refs are resolved server-side, each ref gets a 'search' stamp with score and 'beam_rank', and out-of-top-k refs are marked 'pruned=True'. It also describes the return structure including run_id, winners, and ranked trace. All behavioral traits are clearly explained.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loaded: a one-sentence purpose, then context and infrastructure points, evaluator forms, args, and returns. Every sentence adds value, and there is no wasted text. It is appropriately sized for the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that an output schema exists, the description does not need to elaborate on return values, but it still summarizes the return JSON. It covers purpose, usage contrast, behavioral details, parameter semantics, and returns. For a tool with this complexity and many siblings, it is complete and leaves no gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains each parameter in detail: 'refs' can be an array of strings or objects, 'evaluator' supports three forms, 'top_k' controls pruning (0 means rank-only), and 'max_concurrency' has a default of 5. This adds significant meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool scores and ranks a list of existing refs against an evaluator. It distinguishes itself from sibling 'beam' by explaining that 'beam' fans out proposers for the same prompt, while 'score_list' handles different outputs. This provides specific verb+resource and differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells when to use this tool: for pipelines where N candidates already exist as refs, and contrasts it with 'beam' as the wrong shape. It explains evaluator forms, top_k behavior, and server-side ref resolution to overcome parameter size limits. This provides clear context and alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unwrapA
Unwrap an agent result ref — writes the full text to a file and returns the path.
All combinators return refs (metadata without text). Use unwrap to extract the text when you need it. The text is written to a .md file alongside the result, so you can Read() it, Grep it, or pass it to other tools without bloating the MCP protocol.
Args: ref: A ref string like "run_id/agent_id", or a JSON object with a "ref" field.
| Name | Required | Description | Default |
|---|---|---|---|
| ref | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description covers key behaviors: writes text to a .md file, returns the path, and explains why (to avoid bloating MCP protocol). It does not mention error handling or permissions, but the main actions are transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: a one-sentence summary in the first line, followed by context and parameter details. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, output schema exists), the description is complete. It explains the purpose, usage, behavior, and parameter format. The existence of an output schema means return values don't need elaboration.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, yet the description provides detailed semantics for the single parameter 'ref': 'A ref string like "run_id/agent_id", or a JSON object with a "ref" field.' This fully compensates for the schema's lack of description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Unwrap an agent result ref — writes the full text to a file and returns the path.' It distinguishes from sibling tools like 'wrap' and 'run' by explaining that combinators return refs and unwrap extracts the text.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use this tool: after combinators that return refs. It says 'Use unwrap to extract the text when you need it,' implying alternatives like not unwrapping if text isn't needed. It could be more explicit about when not to use it, but the guidance is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validateA
Validate an artifact against a declared type. Runs a type-checker agent that inspects the artifact and reports VALID/PARTIAL/INVALID with per-criterion results.
Use this after a pipeline step to verify the output matches expectations. If validation fails, you know which agent to blame and can retry.
Args: artifact: Description of what to validate — e.g. the agent's output text, a file path, or a ref {"ref": "run_id/agent_id"}. declared_type: The type to validate against — either a type name (e.g. "mcp-server") or inline natural language description. sandbox: Named sandbox spec or inline JSON for the validator agent. model: Model for the validator (default: sonnet — needs to be good at analysis). timeout: Timeout for the validation agent.
| Name | Required | Description | Default |
|---|---|---|---|
| artifact | Yes | ||
| declared_type | Yes | ||
| sandbox | No | ||
| model | No | sonnet | |
| timeout | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It explains the tool runs an agent, returns per-criterion results, and mentions retry. However, it lacks details on side effects, auth requirements, rate limits, or resource usage, which is a gap for a validation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is moderately sized with a clear paragraph and a bulleted Args list. Every part adds value, though it could be slightly more concise by trimming redundant phrases like '— e.g.' examples.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema (though not shown), the description need not repeat return values. It covers the essential context: when to use, what it does, and parameter semantics. It could mention error handling or edge cases for completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% coverage, but the description compensates with a detailed Args section explaining each parameter: artifact (examples like text or file path), declared_type (type name or natural language), sandbox, model (with default), timeout. This adds significant meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: validate an artifact against a declared type, running a type-checker agent and returning VALID/PARTIAL/INVALID results. It includes a specific use case (after a pipeline step) and distinguishes from siblings implicitly by focusing on validation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Use this after a pipeline step to verify the output matches expectations' and advises what to do if validation fails. It does not provide direct comparison with sibling tools, but the usage context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wrapA
Wrap a file or directory into the swarm ref system.
This is how you bring external objects INTO the monadic context. The wrapped file gets a ref that can be passed to any combinator.
Args: path: Absolute path to a file or directory on the host.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full transparency burden. It discloses that the wrapped file gets a ref and can be passed to combinators, but omits details like side effects, required permissions, or whether the original file is modified.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise—two sentences plus an Args line. The first sentence clearly states the purpose, and the second adds context. Every sentence is essential with no waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter) and the presence of an output schema (though not visible), the description covers the core behavior. It could mention what the ref looks like or that the original remains unchanged, but it is sufficient for most agents.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter 'path' has no schema description (0% coverage). The description adds meaning by specifying it must be an absolute path to a file or directory, fully compensating for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the action (wrap a file/directory into the swarm ref system) and the resource (external objects). It implicitly distinguishes from siblings like 'unwrap' and 'wrap_project', but could be more precise about the monadic context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The statement 'This is how you bring external objects INTO the monadic context' provides clear context for when to use the tool. However, it does not explicitly state when not to use it or mention alternative tools, leaving some ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wrap_projectA
Register a project directory's pipelines, sandboxes, and types with the swarm.
Looks for pipelines/, sandboxes/, types/ subdirectories and adds them to the search paths. After wrapping, named resources from the project are discoverable by all swarm tools (pipeline, run, validate, etc.).
Args: project_dir: Absolute path to a project root containing pipelines/, sandboxes/, and/or types/ directories.
| Name | Required | Description | Default |
|---|---|---|---|
| project_dir | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Since no annotations are present, the description carries the full burden. It explicitly describes the side effect of adding subdirectories to search paths. It could mention potential overwrite behavior or authentication needs but is otherwise transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the main purpose. The args section adds clarity without redundancy. It could integrate the args inline but remains efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the single parameter and presence of an output schema, the description covers the key aspects: what it does, what directories it looks for, and the outcome. It could mention validation of directory structure or prerequisites for completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description includes an 'Args' section that fully documents the 'project_dir' parameter, specifying it must be an absolute path to a project root. This adds substantial meaning beyond the input schema which only provides a title and type.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool registers a project directory's pipelines, sandboxes, and types with the swarm, specifying the action, resource, and effect. It distinguishes itself from siblings like 'wrap' by focusing on project directories.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains that after wrapping, resources become discoverable by all swarm tools, providing clear context for when to use it. However, it does not explicitly mention when not to use it or provide alternatives to siblings.
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.
33 tool updates
v0.1.1- First observed
beam - First observed
chain - First observed
classify - First observed
decrypt - First observed
encrypt - First observed
filter - First observed
get_type_definition - First observed
guard - First observed
hunt - First observed
inspect - First observed
iterate - First observed
list_governor_specs - First observed
list_pipelines - First observed
list_sandbox_specs - First observed
list_type_registry - First observed
map - First observed
map_reduce - First observed
par - First observed
pipeline - First observed
pipeline_artifacts - First observed
pipeline_kill - First observed
pipeline_status - First observed
race - First observed
reduce - First observed
retry - First observed
run - First observed
save_governor_spec - First observed
save_sandbox_spec - First observed
score_list - First observed
unwrap - First observed
validate - First observed
wrap - First observed
wrap_project
TDQS
Most tools have distinct purposes, but there are some overlaps that could cause confusion, such as 'chain' vs 'pipeline' and 'map' vs 'map_reduce'. Descriptions help differentiate them, but an agent might struggle to pick the right one in some cases.
Names follow snake_case, but the pattern is inconsistent: some are verbs (run, validate, wrap), some are nouns (beam, chain, map), and some are abbreviations (par). This lack of a unified naming convention reduces predictability.
With 33 tools, the server is on the larger side. While each tool serves a specific purpose in a complex orchestration system, the count exceeds the typical 3-15 range, making it feel heavy but not extreme.
The tool set covers execution, evaluation, state management, type system, pipeline management, and governance comprehensively. Minor gaps exist, such as lack of a general run listing tool, but overall the surface is broad and well-rounded.
Maintenance
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
AI work orchestration for plans, tasks, teams, and coding-agent dispatch.
Your AI Agent's Infrastructure Layer. Connect Claude, Copilot, Codex, or ChatGPT to 200+ managed open source services. Start databases, pipelines, and applications through natural language.
Hosted runtime for persistent agent teams, durable workflows, memory, schedules, and goals.
Related MCP Servers
- AlicenseAqualityDmaintenanceOrchestrates multiple Claude Code agents across iTerm2 sessions with process-level isolation, enabling collaborative AI development workflows on multiple codebases with task-based inter-agent communication and persistent state management.71MIT
- FlicenseBqualityNot gradedmaintenanceBridges Claude Code to a Cloud Orchestrator API, providing access to multi-AI consensus, web search, code execution sandboxes, long-term memory, knowledge graphs, deployment management, and 20+ integrated AI and developer tools.28-
- AlicenseNot gradedqualityCmaintenanceCoordinates up to 64 parallel expert agents for complex multi-agent orchestration and intelligent task routing within Claude Code. It enables users to analyze requests, manage hierarchical execution plans, and monitor active orchestration sessions.MIT
- AlicenseNot gradedqualityCmaintenanceOrchestrates parallel Claude Code worker swarms with protocol-based behavioral governance for multi-hour autonomous coding sessions.11110MIT
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/stiege/swarm-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server