capy-fleet
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., "@capy-fleetdelegate fixing login bug to an agent"
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.
capy-fleet
An MCP server for Capy. Lets Claude Code, Cursor, Codex, or any other MCP client delegate work to Capy's cloud agents and wait for the results without you leaving the editor.
Your local agent is smart, but there's only one of it. This gives it a workforce.
you: here are 8 bugs, farm them out
-> capy_delegate x8
-> capy_wait (all 8)
-> capy_diff on each
8 diffs come back, you review them in one placeNot affiliated with Capy. I built it because I wanted it.
Install
Not on npm yet. For now, clone and build:
git clone https://github.com/Takumixbt/capy-fleet.git
cd capy-fleet
npm install
npm run buildYou'll need an API token from capy.ai/settings/tokens. It starts with capy_.
Claude Code
claude mcp add capy-fleet --env CAPY_API_KEY=capy_xxx -- node /absolute/path/to/capy-fleet/dist/index.jsCursor
~/.cursor/mcp.json:
{
"mcpServers": {
"capy-fleet": {
"command": "node",
"args": ["/absolute/path/to/capy-fleet/dist/index.js"],
"env": {
"CAPY_API_KEY": "capy_xxx",
"CAPY_PROJECT_ID": "proj_xxx"
}
}
}
}Windsurf uses the same shape in ~/.codeium/windsurf/mcp_config.json.
Codex
~/.codex/config.toml:
[mcp_servers.capy-fleet]
command = "node"
args = ["/absolute/path/to/capy-fleet/dist/index.js"]
env = { CAPY_API_KEY = "capy_xxx", CAPY_PROJECT_ID = "proj_xxx" }Setting CAPY_PROJECT_ID is optional but saves you passing a project id on every call. Run capy_projects once to find yours.
Related MCP server: agent-bus-mcp
Tools
Tool | What it does |
| Start an agent on a piece of work. Call it N times for N parallel agents. |
| Block until threads finish. Takes a list, so you can wait on the whole batch. |
| One-shot check on a thread. |
| See the whole fleet. Filter by status, tag, PR state, or free text. |
| Read the code an agent wrote. |
| Read the conversation, including the agent's own summary of what it did. |
| Steer a running agent, or answer a question it asked. |
| Ask an agent to commit and open a PR. |
| Kill a thread that's going the wrong way. |
| List projects and their repos. |
| List available models and which can act as Captain. |
| What your agents cost, split by LLM and VM, broken down by user and thread. |
Things that will confuse you if nobody tells you
Threads spawn tasks, and diffs belong to tasks. You delegate to a thread and get back a thread id, but capy_diff wants a task id. Task ids show up in the thread's task list, which capy_status and capy_wait both print. This mirrors how Capy's API actually works rather than papering over it.
There is no PR endpoint. Capy's API can't open a pull request directly. capy_open_pr sends the agent a message asking it to do it, which means the PR shows up a bit after the call returns, not during it. Run capy_wait after and read the URL off the result.
No streaming, no webhooks. The API is poll-only, so capy_wait polls with backoff (3s, growing to 15s). It returns early if a thread gets blocked on an auth or permission gate, because sitting there waiting on something that needs a human is useless. If it times out, nothing is lost. The agents keep running on Capy's side and you just call capy_wait again with the same ids.
Tasks are read-only over the API. Older unofficial Capy wrappers used POST /tasks endpoints that no longer work. Everything here goes through threads, which is the supported path.
Not burning your credits by accident
Delegating spends real money, and an LLM in a loop can delegate a lot.
CAPY_FLEET_MAX_DELEGATIONScaps how many threads one server process will start. Defaults to 25. Set it to 0 if you really want it uncapped.CAPY_FLEET_READONLY=1registers only the read tools. Handy if you want an agent that can watch the fleet but not spend anything.capy_difftruncates to a byte budget instead of dumping a 40k-line patch into your context. Usestats_onlyfirst, then pull specific paths.
Config reference
Variable | Required | Default | |
| yes | Token from capy.ai/settings/tokens | |
| no | Default project, so you can skip | |
| no |
| Override the API host |
| no |
| Per-process delegation cap, 0 for unlimited |
| no |
| Set to 1 to hide the write tools |
Development
npm run build # compile
npm run watch # compile on change
npm run smoke # start the server over stdio, check every tool registersThe smoke test uses a deliberately invalid token, so the only network call it makes is one that's supposed to come back 401. It's checking that the tools register and that errors come back readable, not that your account works.
Types in src/types.ts are transcribed from Capy's published OpenAPI document. If Capy ships changes, that's the file to update first.
License
MIT
Available Tools
12 toolscapy_delegateDelegate work to a Capy agentA
Start a new Capy agent thread in the cloud to do a piece of engineering work. The agent runs in its own isolated VM with the project's repos checked out, and works independently of this conversation. Call this once per independent piece of work: calling it several times gives you several agents running genuinely in parallel.
Write the prompt the way you would brief a competent engineer who cannot ask you follow-up questions: state the goal, the acceptance criteria, and any constraint that is not obvious from the code.
Returns a thread id. Use capy_wait to block until the work is done, or capy_status to poll. Note that starting a thread consumes Capy credits.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | Lowercase tags to attach, useful for grouping a batch of parallel delegations so you can find them later with capy_list (e.g. ["refactor-batch"]). | |
| model | No | Model for the Captain (planner) agent. Omit to use the project default. List available models with capy_models. | |
| repos | No | Override which repos and branches the agent starts from. | |
| speed | No | Captain speed setting. | |
| prompt | Yes | What the agent should do. Be specific about goal and acceptance criteria. | |
| reasoning | No | Captain reasoning effort. | |
| project_id | No | Capy project id. Defaults to CAPY_PROJECT_ID. List them with capy_projects. | |
| build_model | No | Model for the build (executor) agent, if it should differ from the Captain. | |
| build_speed | No | Build agent speed setting. | |
| slack_channel | No | Mirror the thread into this Slack channel, if Slack is connected. | |
| build_reasoning | No | Build agent reasoning effort. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=false, openWorldHint=true, etc. Description adds valuable context: consumes credits, runs independently, isolated VM. No contradictions. Together, they give a clear behavioral picture.
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 key information front-loaded. A couple of sentences could be trimmed, but overall efficient and organized. Earns its length.
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 points: purpose, parallelism, follow-up tools, cost, prompt advice. No output schema, but mentions return of thread id. Adequate for a delegation tool with many optional parameters.
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 100%, so baseline 3. Description adds some value by emphasizing prompt quality and noting default model behavior, but doesn't significantly expand on schema descriptions.
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 starts a new Capy agent thread to perform engineering work in an isolated VM. It distinguishes from siblings by mentioning capy_wait and capy_status for follow-up, and explains that multiple calls yield genuine parallelism.
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 explicit guidance: 'Call this once per independent piece of work' and indicates alternative tools (capy_wait, capy_status) for monitoring. Also covers cost and prompt crafting advice. Could be stronger on when-not-to-use, but sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
capy_diffRead the code a Capy agent wroteARead-only
Get the diff a Capy task produced, so you can review the work without leaving this conversation. Task ids come from capy_status, capy_wait, or capy_list, which list the tasks belonging to each thread.
Large diffs are truncated to stay within a token budget. Use stats_only to see just the file list and line counts first, then request specific paths.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Which diff to read: "uncommitted" for the agent's working changes, "pr" for the pull request diff. | |
| paths | No | Only include files whose path contains one of these substrings. | |
| task_id | Yes | Task id, taken from a thread's task list. This is not the thread id. Accepts either the UUID or the short identifier form like "SCO-123". | |
| max_bytes | No | Approximate cap on emitted patch text. Defaults to 60000. | |
| stats_only | No | Return only the file list and line counts, without patch bodies. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds behavioral context beyond annotations: large diffs are truncated, use stats_only to preview. Annotations already declare readOnlyHint and openWorldHint, so description supplements without contradiction.
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 focused paragraphs. First sentence immediately states purpose. No wasted words; each 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?
No output schema, but description hints at return (diff, file list) and covers truncation. Missing details on exact format, but acceptable for a diff tool with sibling 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?
Schema coverage is 100%, so baseline is 3. Description adds context for task_id source and stats_only usage but does not significantly enhance parameter 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?
Clearly states it gets the diff a Capy task produced for reviewing work. Distinguishes from siblings like capy_status and capy_list by focusing on code diffs.
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 mentions task ids come from capy_status, capy_wait, or capy_list, and suggests using stats_only for large diffs. Provides clear context but no 'when not to use' exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
capy_listList Capy threadsARead-only
List agent threads in a project, newest first. Use this to see the whole fleet at once: what is still running, what is finished and waiting for review, and what has opened pull requests. Filter by status, tag, PR state, or a free-text query.
| Name | Required | Description | Default |
|---|---|---|---|
| tag | No | Only threads carrying this tag. Useful for finding a batch you delegated. | |
| limit | No | How many threads to return. Defaults to 20. | |
| query | No | Free-text search across thread titles and content. | |
| cursor | No | Pagination cursor from a previous call. | |
| origin | No | Filter by where the thread came from. Threads you start here are "api". | |
| status | No | Filter by coarse thread status. | |
| pr_state | No | Filter by the thread's rolled-up pull request state. | |
| project_id | No | Capy project id. Defaults to CAPY_PROJECT_ID. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description is consistent with annotations (readOnlyHint=true, openWorldHint=true) and adds behavior like ordering (newest first) and observable states. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core purpose, no filler. Every sentence is informative.
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 read-only list tool with 8 optional parameters and no output schema, the description covers key aspects: purpose, usage, ordering, and filters. Lacks mention of pagination via cursor, 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 100% with well-described parameters. The description adds value by grouping filters (status, tag, PR state, query) and hinting at their use, going 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 it lists agent threads in a project, newest first. It distinguishes itself from siblings like capy_status (single thread) and capy_projects (list projects) by specifying the resource and scope.
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 usage context: 'Use this to see the whole fleet at once' and lists observable states. However, it does not mention alternatives or when not to use it, missing some guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
capy_messageSend a message to a running Capy threadA
Send a follow-up instruction into an existing Capy thread: steer it, answer a question it asked, correct its approach, or ask it to do more work. This is also how you get the agent to open a pull request, since the Capy API has no PR endpoint of its own.
Use mode "interrupt" to cut into work in progress, or "queue" to have the message picked up when the current turn finishes.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | How to deliver the message. "interrupt" stops what the agent is doing now; "queue" waits for the current turn to end. | |
| model | No | Switch the Captain model for this turn. | |
| message | Yes | The instruction to send. | |
| reasoning | No | Captain reasoning effort for this turn. | |
| thread_id | Yes | Thread id, e.g. "jam_123". | |
| build_model | No | Switch the build model for this turn. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate the tool is not read-only (readOnlyHint=false) and not destructive (destructiveHint=false). The description adds that it sends a follow-up and explains modes, but does not disclose return behavior, whether it blocks, or how to monitor progress. It mentions opening a PR as a side effect, which adds behavioral context. No contradictions with annotations.
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 two paragraphs: first defines purpose and key use case (open PR), second explains the two modes. It is concise and front-loads the most important information. Could be slightly more structured (e.g., bullet points), but no unnecessary sentences.
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?
With 6 parameters and no output schema, the description covers the main purpose and delivery modes. However, it lacks explanation of return behavior, asynchronous nature, or how to combine with sibling tools like capy_wait for completion. The PR opening mention adds context but leaves details unspecified.
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 100%, so baseline is 3. The description adds value by explaining the 'mode' parameter's effect (interrupt vs queue) and the workaround for opening PRs. It does not elaborate on other parameters like model, reasoning, or build_model beyond what the schema provides, but the schema already describes them well.
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 sends a follow-up instruction to an existing Capy thread and enumerates specific use cases (steer, answer questions, correct approach, request more work, open PR). This distinguishes it from sibling tools like capy_open_pr (which has no endpoint, so this tool is the workaround) and capy_status or capy_list.
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 (sending follow-up instructions, including opening PRs) and explains the two delivery modes ('interrupt' vs 'queue') with their appropriate contexts. It does not explicitly compare to siblings like capy_stop or capy_delegate, but the context is clear enough for an agent to infer usage boundaries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
capy_messagesRead a Capy thread's conversationARead-only
Read the message history of a Capy thread: what you asked, and what the agent said back. Use this to get the agent's own summary of what it did, its reasoning, or the question it is waiting on you to answer.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | How many messages to return. Defaults to 50. | |
| cursor | No | Pagination cursor from a previous call. | |
| thread_id | Yes | Thread id, e.g. "jam_123". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and openWorldHint=true. The description adds value by specifying that the tool returns conversation history including user questions and agent responses, which aligns with annotations without contradiction.
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, no wasted words. The purpose is stated upfront, and the description is efficiently structured.
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 read-only nature and schema coverage, the description adequately explains what the tool returns. No missing critical details, though pagination behavior is implied via the cursor parameter.
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 100%, so the description does not need to explain parameters. It adds no extra meaning beyond what the schema provides, meeting the baseline expectation.
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 'Read' and the resource 'Capy thread's conversation', specifying it returns what the user asked and agent responses. It distinguishes from siblings like capy_message (sending messages) and capy_list (listing threads).
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: to get the agent's summary, reasoning, or pending question. It does not explicitly exclude other scenarios or mention alternatives, but the context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
capy_modelsList available Capy modelsARead-only
List the models available for delegation, with their provider and whether each can act as the Captain (planner) agent. Useful when you want to deliberately spread a batch of parallel work across different models, or pick a cheaper one for simple tasks.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint; description adds context about output content (provider and captain info) but no additional behavioral traits.
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 sentences with no wasted words; purpose 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 zero-parameter read-only tool, the description adequately covers what the tool returns and why it's useful.
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 doesn't need to explain any parameters.
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 available models with their provider and captain capability, which distinguishes it from sibling tools like capy_status or capy_projects.
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 explicit usage scenarios (spreading parallel work, picking cheaper models) but doesn't mention when not to use it or compare to alternatives directly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
capy_open_prAsk a Capy thread to open a pull requestA
Ask the agent in a thread to commit its work and open a pull request, then report any PRs on the thread.
This is a convenience wrapper around capy_message: the Capy API has no endpoint that creates a PR directly, so the agent is instructed to do it. The PR will not exist the instant this returns. Call capy_wait or capy_status afterwards to pick up the PR URL.
| Name | Required | Description | Default |
|---|---|---|---|
| thread_id | Yes | Thread id, e.g. "jam_123". | |
| instructions | No | Extra guidance for the PR, such as the title, the base branch, or whether it should be a draft. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are present and the description adds context about asynchronous behavior (PR not existing on return) and the need to poll. No contradictions with annotations; useful behavioral disclosure beyond read/safety hints.
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: first states the action, second explains mechanism, third gives post-call guidance. Front-loaded and 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?
No output schema, so description should cover return value. It mentions 'report any PRs on the thread' and polling, but does not specify what the immediate response contains (e.g., thread id or status). Adequate but has a gap.
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 100% with parameter descriptions. The description adds example values and clarifies that instructions can include title, base branch, or draft status, providing additional meaning beyond 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 asks an agent in a thread to commit work and open a pull request, using specific verbs and resource. It distinguishes from siblings like capy_message and capy_wait.
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 it is a convenience wrapper around capy_message and that the PR is not created immediately, advising to call capy_wait or capy_status afterwards. It lacks explicit when-not-to-use scenarios but provides clear usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
capy_projectsList Capy projectsARead-only
List the Capy projects this API token can reach, with their ids and connected repos. Call this first if you do not know which project to delegate into.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Defaults to 20. | |
| cursor | No | Pagination cursor from a previous call. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true and openWorldHint=true. The description adds value by specifying the output (ids and connected repos) and clarifying that the list is limited to reachable projects. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: first states purpose and output, second provides usage guidance. No wasted words, front-loaded with key information.
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 tool with well-documented parameters and annotations indicating read-only and open-world, the description covers the essential context. Could mention pagination behavior, 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 covers 100% of parameters with descriptions (limit with defaults, cursor for pagination). The description does not add any extra meaning beyond the schema, so baseline 3 is appropriate.
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 ('List'), resource ('Capy projects'), and scope ('this API token can reach'). It also specifies return fields ('ids and connected repos') and provides a usage hint that distinguishes it from sibling tools like capy_delegate.
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 'Call this first if you do not know which project to delegate into,' giving a clear when-to-use directive and implying an alternative (delegate).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
capy_statusCheck a Capy threadARead-only
Get the current state of one Capy agent thread: whether it is running, what it is waiting on, whether it is blocked on a human, its tasks, and any pull requests it has opened. This is a one-shot check that returns immediately. To block until the work is finished, use capy_wait instead.
| Name | Required | Description | Default |
|---|---|---|---|
| verbose | No | Include tags, Slack links, and timestamps. Defaults to false. | |
| thread_id | Yes | Thread id, e.g. "jam_123". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true. Description adds what is included (tasks, PRs) and confirms immediate return, aligning with annotations.
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, front-loaded with purpose, no wasted words. 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?
No output schema, but description explains what is returned (state, waiting, tasks, PRs). Mentions alternative tool. Complete for a one-shot 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 coverage is 100%, so baseline is 3. Description adds minor value by mentioning verbose includes 'tags, Slack links, and timestamps', but does not significantly expand on 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 verb (get), resource (thread state), and specifics (running, waiting, tasks, PRs). Distinguishes from sibling capy_wait by noting one-shot nature.
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 when to use (one-shot check) and when not (use capy_wait to block). Provides clear context for choosing between tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
capy_stopStop a running Capy threadADestructiveIdempotent
Stop a Capy agent thread that is currently running. Use this to cancel work that is going the wrong way, or to stop a thread that is burning credits on the wrong problem. Work already committed by the agent is not undone.
| Name | Required | Description | Default |
|---|---|---|---|
| thread_id | Yes | Thread id to stop, e.g. "jam_123". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveness and idempotency. Description adds that committed work remains, clarifying the scope of stopping. No contradictions or additional details on permissions or side effects.
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 sentences, each adding value: the first states the action, the second provides usage context and a behavioral caveat.
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 1-param tool with good annotations, the description covers purpose, when to use, and key limitation. Could mention post-stop state or error handling, but sufficiently 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?
Schema coverage is 100% for the single parameter, so baseline 3 applies. The description does not add meaning beyond the schema's own description of thread_id.
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 uses a specific verb 'Stop' and resource 'Capy agent thread', distinguishing it from sibling tools like capy_list or capy_status.
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 guidance on when to use ('cancel work going wrong', 'stop burning credits') and what it does not do ('work committed not undone'), but does not mention alternatives like checking status first.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
capy_usageCheck Capy spendARead-only
Report what your Capy agents have cost over a date range, split into LLM and VM dollars, broken down by user and by thread. Use this to answer 'what did that fleet cost me'.
Requires your organization id, which the Capy API does not expose a listing endpoint for: take it from the Capy web dashboard.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | End of the range, ISO 8601 UTC. Defaults to now. | |
| from | No | Start of the range, ISO 8601 UTC (e.g. 2026-07-01T00:00:00Z). Defaults to 7 days ago. | |
| page | No | Defaults to 1. | |
| org_id | Yes | Capy organization id, from the Capy web dashboard. | |
| routed | No | Which spend to count. Defaults to "paid" (what Capy billed you). Use "all" to include work routed through your own Codex/Copilot/BYOK subscriptions. | |
| page_size | No | Defaults to 20. | |
| agent_type | No | Limit to build, captain, or review activity. | |
| project_ids | No | Comma-separated project ids to include. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds valuable behavioral details beyond the annotations (readOnlyHint, openWorldHint): it explains the output structure (split by LLM/VM, user/thread), mentions the org_id limitation, and states default values for parameters. No contradiction with annotations.
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 two short paragraphs: the first states the core purpose, the second adds a necessary instruction about org_id. Every sentence contributes value with no redundancy, and the key 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?
The tool has 8 parameters (1 required) and no output schema. The description explains the purpose well, mentions default behaviors, and covers the most important parameter (org_id). It lacks explicit output structure details but describes the breakdown sufficiently for a reporting 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?
Although schema coverage is 100%, the description adds critical pragmatic information: default values for to ('now'), from ('7 days ago'), page (1), page_size (20), and routed ('paid'), plus context for org_id. This aids correct invocation beyond what the schema alone 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 uses a specific verb ('Report') and resource ('what your Capy agents have cost'), clearly distinguishing this from sibling tools like capy_status or capy_projects. It explicitly states the tool's function of reporting cost breakdowns by user and thread.
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 a concrete use case ('answer what did that fleet cost me') and explains where to obtain the required org_id (from the Capy web dashboard). While it doesn't explicitly mention when not to use it or alternatives, the context from sibling tools makes it clear this is the only cost-related tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
capy_waitWait for Capy agents to finishARead-onlyIdempotent
Block until one or more Capy threads finish, then report what happened. This is what turns a fleet of background agents into something you can use inside a single conversation: delegate several pieces of work, then wait for all of them here.
The Capy API has no streaming or push notifications, so this polls with backoff. It returns early, without an error, if a thread becomes blocked on a human (an auth or permission gate), so you never sit waiting on something that cannot progress.
If the timeout is reached the result says so and the threads keep running on Capy's side: just call this tool again with the same ids to keep waiting.
| Name | Required | Description | Default |
|---|---|---|---|
| wait_for | No | Return when "all" threads finish, or as soon as "any" one of them does. Defaults to "all". | |
| thread_ids | Yes | One or more thread ids to wait on. | |
| timeout_seconds | No | How long to wait before giving up and reporting progress so far. Defaults to 240. Keep this below your MCP client's own tool timeout. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations include readOnlyHint, openWorldHint, idempotentHint. The description adds significant behavioral details: polling with backoff due to no streaming, early return on human blocking without error, and timeout behavior that allows retries. No contradiction with annotations.
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, well-structured in three paragraphs, each sentence adding value. No redundant or vague statements. Front-loaded with the core 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?
The description covers all necessary aspects: blocking behavior, polling mechanism, edge cases (human block, timeout), retry advice. Despite no output schema, the description's claim to 'report what happened' is sufficient for the tool's simplicity.
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 three parameters have schema descriptions (100% coverage). The description reinforces purpose but does not add new meaning beyond what the schema provides. Baseline 3 is appropriate.
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 blocks until Capy threads finish and reports results. It specifies the action (block/wait), resource (Capy threads), and distinguishes it from siblings like capy_delegate (which starts agents) and capy_status (non-blocking check).
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: after delegating work via capy_delegate, and that it transforms background agents into a synchronous flow. It notes early return on human block and timeout retry, but does not explicitly compare to alternatives like capy_status for non-blocking checks.
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.
12 tool updates
v0.1.0- First observed
capy_delegate - First observed
capy_diff - First observed
capy_list - First observed
capy_message - First observed
capy_messages - First observed
capy_models - First observed
capy_open_pr - First observed
capy_projects - First observed
capy_status - First observed
capy_stop - First observed
capy_usage - First observed
capy_wait
TDQS
Scored across 12 tools
Each tool has a distinct purpose with clear boundaries. For example, capy_status checks state one-shot while capy_wait blocks until completion, and capy_messages reads history while capy_message sends a message. No overlapping functionalities.
All tools follow the consistent pattern 'capy_<noun_or_verb>', all lowercase with underscores. The naming is predictable and well-structured.
12 tools cover the full range of operations for managing Capy fleet agents: delegation, monitoring, messaging, PR handling, cost tracking, and listing. The count feels well-scoped without being excessive or too thin.
The tool set covers the complete lifecycle: delegate (create), status/list/diff/messages (read), message (update), stop (delete), plus blocking wait and PR creation. No obvious gaps for the domain.
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
MCP server for building and testing AI agents with multi-model experimentation and insights.
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
Official MCP server for Agentwork — delegate tasks to AI agents with human-in-the-loop
The OpenRouter MCP server plugs OpenRouter into the AI tools you already use. Once connected, your assistant can pull live OpenRouter data (models, prices, your credits, rankings, and docs) and send quick test messages, all without leaving your editor.
Related MCP Servers
- -licenseNot gradedqualityNot gradedmaintenanceAn MCP server that enables developers to summon AI development team agents directly from their IDE to help with tasks like PR reviews, security evaluation, and CI/CD deployment setup.-
- AlicenseNot gradedqualityDmaintenanceA local MCP server that connects AI coding agents (Claude Code, Codex, Cursor, etc.) on the same machine via a shared message bus, enabling them to chat, delegate tasks, and collaborate privately without cloud or internet.6017MIT
- AlicenseNot gradedqualityDmaintenanceMCP server that enables AI coding agents to communicate, share state, and coordinate work in real time via MCP tools or REST API.2025MIT
- AlicenseNot gradedqualityCmaintenanceAn MCP server that gives AI coding assistants persistent memory across sessions with chain-based project tracking, tickets, and structured handoffs.GPL 3.0
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/Takumixbt/capy-fleet'
If you have feedback or need assistance with the MCP directory API, please join our Discord server