Skip to main content
Glama

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 place

Not 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 build

You'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.js

Cursor

~/.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

capy_delegate

Start an agent on a piece of work. Call it N times for N parallel agents.

capy_wait

Block until threads finish. Takes a list, so you can wait on the whole batch.

capy_status

One-shot check on a thread.

capy_list

See the whole fleet. Filter by status, tag, PR state, or free text.

capy_diff

Read the code an agent wrote.

capy_messages

Read the conversation, including the agent's own summary of what it did.

capy_message

Steer a running agent, or answer a question it asked.

capy_open_pr

Ask an agent to commit and open a PR.

capy_stop

Kill a thread that's going the wrong way.

capy_projects

List projects and their repos.

capy_models

List available models and which can act as Captain.

capy_usage

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_DELEGATIONS caps how many threads one server process will start. Defaults to 25. Set it to 0 if you really want it uncapped.

  • CAPY_FLEET_READONLY=1 registers only the read tools. Handy if you want an agent that can watch the fleet but not spend anything.

  • capy_diff truncates to a byte budget instead of dumping a 40k-line patch into your context. Use stats_only first, then pull specific paths.

Config reference

Variable

Required

Default

CAPY_API_KEY

yes

Token from capy.ai/settings/tokens

CAPY_PROJECT_ID

no

Default project, so you can skip project_id

CAPY_BASE_URL

no

https://capy.ai/api

Override the API host

CAPY_FLEET_MAX_DELEGATIONS

no

25

Per-process delegation cap, 0 for unlimited

CAPY_FLEET_READONLY

no

0

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 registers

The 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 tools
capy_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNoLowercase tags to attach, useful for grouping a batch of parallel delegations so you can find them later with capy_list (e.g. ["refactor-batch"]).
modelNoModel for the Captain (planner) agent. Omit to use the project default. List available models with capy_models.
reposNoOverride which repos and branches the agent starts from.
speedNoCaptain speed setting.
promptYesWhat the agent should do. Be specific about goal and acceptance criteria.
reasoningNoCaptain reasoning effort.
project_idNoCapy project id. Defaults to CAPY_PROJECT_ID. List them with capy_projects.
build_modelNoModel for the build (executor) agent, if it should differ from the Captain.
build_speedNoBuild agent speed setting.
slack_channelNoMirror the thread into this Slack channel, if Slack is connected.
build_reasoningNoBuild agent reasoning effort.

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 wroteA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoWhich diff to read: "uncommitted" for the agent's working changes, "pr" for the pull request diff.
pathsNoOnly include files whose path contains one of these substrings.
task_idYesTask 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_bytesNoApproximate cap on emitted patch text. Defaults to 60000.
stats_onlyNoReturn only the file list and line counts, without patch bodies.

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 threadsA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagNoOnly threads carrying this tag. Useful for finding a batch you delegated.
limitNoHow many threads to return. Defaults to 20.
queryNoFree-text search across thread titles and content.
cursorNoPagination cursor from a previous call.
originNoFilter by where the thread came from. Threads you start here are "api".
statusNoFilter by coarse thread status.
pr_stateNoFilter by the thread's rolled-up pull request state.
project_idNoCapy project id. Defaults to CAPY_PROJECT_ID.

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoHow to deliver the message. "interrupt" stops what the agent is doing now; "queue" waits for the current turn to end.
modelNoSwitch the Captain model for this turn.
messageYesThe instruction to send.
reasoningNoCaptain reasoning effort for this turn.
thread_idYesThread id, e.g. "jam_123".
build_modelNoSwitch the build model for this turn.

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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

Schema coverage is 100%, so baseline is 3. The description adds value by 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.

Purpose5/5

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.

Usage Guidelines4/5

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 conversationA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoHow many messages to return. Defaults to 50.
cursorNoPagination cursor from a previous call.
thread_idYesThread id, e.g. "jam_123".

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 modelsA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
thread_idYesThread id, e.g. "jam_123".
instructionsNoExtra guidance for the PR, such as the title, the base branch, or whether it should be a draft.

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 projectsA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoDefaults to 20.
cursorNoPagination cursor from a previous call.

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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

For a simple list tool with 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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 threadA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
verboseNoInclude tags, Slack links, and timestamps. Defaults to false.
thread_idYesThread id, e.g. "jam_123".

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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

No output schema, but description explains 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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 threadA
DestructiveIdempotent

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
thread_idYesThread id to stop, e.g. "jam_123".

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 spendA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoEnd of the range, ISO 8601 UTC. Defaults to now.
fromNoStart of the range, ISO 8601 UTC (e.g. 2026-07-01T00:00:00Z). Defaults to 7 days ago.
pageNoDefaults to 1.
org_idYesCapy organization id, from the Capy web dashboard.
routedNoWhich spend to count. Defaults to "paid" (what Capy billed you). Use "all" to include work routed through your own Codex/Copilot/BYOK subscriptions.
page_sizeNoDefaults to 20.
agent_typeNoLimit to build, captain, or review activity.
project_idsNoComma-separated project ids to include.

TDQS

A4.6/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 finishA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
wait_forNoReturn when "all" threads finish, or as soon as "any" one of them does. Defaults to "all".
thread_idsYesOne or more thread ids to wait on.
timeout_secondsNoHow 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

A4.5/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

  1. 12 tool updatesv0.1.0
    • First observedcapy_delegate
    • First observedcapy_diff
    • First observedcapy_list
    • First observedcapy_message
    • First observedcapy_messages
    • First observedcapy_models
    • First observedcapy_open_pr
    • First observedcapy_projects
    • First observedcapy_status
    • First observedcapy_stop
    • First observedcapy_usage
    • First observedcapy_wait

TDQS

A4.4/5.0

Scored across 12 tools

Disambiguation5/5

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.

Naming Consistency5/5

All tools follow the consistent pattern 'capy_<noun_or_verb>', all lowercase with underscores. The naming is predictable and well-structured.

Tool Count5/5

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.

Completeness5/5

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

ActivitySlowing
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

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

Related MCP Connectors

Related MCP Servers

  • -
    license
    Not graded
    quality
    Not graded
    maintenance
    An 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.
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    A 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.
    60
    17
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server that enables AI coding agents to communicate, share state, and coordinate work in real time via MCP tools or REST API.
    202
    5
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Takumixbt/capy-fleet'

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