Skip to main content
Glama

runloop-mcp

An MCP server for running and testing code in disposable Runloop sandboxes. It remains focused on testing rather than vibe coding: active Devboxes last at most one hour and local files should be treated as temporary. Snapshots, blueprints and suspend/resume are available for repeatable test environments; interactive PTYs, tunnels, account secrets and MCP Hub administration are not.

Tools

Tool

Purpose

run_code

Reuse a compatible running sandbox, or create one, then run a command

create_sandbox

Start a sandbox for a multi-step test, capped at 1 hour

list_sandbox

List sandboxes while excluding shutdown entries

get_sandbox

Check sandbox status

suspend_sandbox / resume_sandbox

Preserve and restore sandbox disk state

execute_in_sandbox

Run a blocking, non-interactive command

upload_test_file

Upload Base64 test input or source files

download_artifact

Export a result before the sandbox disappears

get_sandbox_usage

Inspect CPU, memory, disk, and usage

shutdown_sandbox

Destroy a sandbox and its remaining data

create_snapshot / list_snapshot

Save and discover reusable disk states

build_blueprint / list_blueprint

Build and discover reusable test images

Prefer run_code. It searches running code-testing sandboxes first and retains the selected sandbox after a successful run for later reuse. Use shutdown_sandbox when reuse is no longer needed.

Related MCP server: GPT Commander

Installation

Requires Python 3.10+ and a Runloop API key.

pip install -e .

Start

HTTP (default):

runloop-mcp --host 127.0.0.1 --port 8000

stdio:

RUNLOOP_API_KEY=... runloop-mcp --transport stdio

The HTTP MCP endpoint is /mcp. Supply the API key when connecting:

http://127.0.0.1:8000/mcp?api_key=YOUR_RUNLOOP_API_KEY

Do not log or share URLs containing the key. Query-key behavior remains for compatibility, but a secret-aware proxy is recommended for public deployment.

Examples

One-shot Python test:

run_code(
    files={
        "/home/user/test_app.py": "assert 2 + 2 == 4\nprint('passed')\n"
    },
    command="python3 /home/user/test_app.py",
)

Multi-step test with an exported report:

sandbox = create_sandbox(files={"/home/user/package.json": "{...}"})
execute_in_sandbox(sandbox_id=sandbox["id"], command="cd /home/user && npm test")
download_artifact(sandbox_id=sandbox["id"], file_path="/home/user/report.xml")
shutdown_sandbox(sandbox_id=sandbox["id"])

download_artifact returns standard Base64. Decode and save it outside Runloop before shutdown or expiry. Package large source trees into an archive, upload it, and extract it with execute_in_sandbox.

Reuse behavior

  • run_code only reuses running sandboxes tagged with purpose=code-testing.

  • It prefers a sandbox matching the requested blueprint.

  • Files passed to run_code overwrite paths in a reused sandbox.

  • Environment variables are creation-time settings and cannot be replaced when reusing a sandbox; put per-run values in the command when appropriate.

  • A newly created sandbox is destroyed if execution raises an error, but is retained after success.

Design constraints

  • Sandbox lifetime is restricted to 60–3600 seconds.

  • run_code attempts forced cleanup of a newly created sandbox on execution failure.

  • No background-process, PTY, or tunnel workflow is exposed.

  • Sandbox storage must not be treated as a source of truth.

  • Avoid passing credentials in ordinary environment variables or command text.

Deployment

main.py exposes MCP at /mcp and health checks at /health:

uvicorn main:app --host 0.0.0.0 --port 8000

The included Dockerfile uses the same ASGI application.

License

MIT

Available Tools

16 tools
create_devboxB

Create a new Runloop Devbox.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoHuman-friendly name for the devbox.
metadataNoArbitrary key/value metadata for organizing devboxes.
after_idleNoDict with ``idle_time_seconds`` (int) and ``on_idle`` (``"shutdown"`` or ``"suspend"``). Mutually exclusive with ``keep_alive_time_seconds``.
file_mountsNoMapping of ``{"/path/in/devbox": "inline file contents"}`` written at creation time.
snapshot_idNoCreate the devbox from an existing disk snapshot.
architectureNo``x86_64`` or ``arm64``.
blueprint_idNoID of a custom blueprint (alternative to ``blueprint_name``).
resource_sizeNoInstance size, one of ``X_SMALL``, ``SMALL``, ``MEDIUM``, ``LARGE``, ``X_LARGE``, ``XX_LARGE``.
blueprint_nameNoPrebuilt image / blueprint name, e.g. ``runloop/universal-ubuntu-24.04-x86_64`` or ``runloop/starter-x86_64``.
launch_commandsNoCommands run during initialization (must not block; redirect background processes to a log file).
environment_variablesNoEnvironment variables injected into the devbox.
keep_alive_time_secondsNoMaximum lifetime of the devbox in seconds.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior2/5

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

Annotations are absent, and the description provides no behavioral details beyond the action itself. There is no disclosure of side effects, required setup (e.g., blueprint_id or blueprint_name), or potential delays, leaving the agent under-informed about the tool's runtime behavior.

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 a single, front-loaded sentence with no redundant information. It is concise and to the point, effectively stating the tool's purpose without unnecessary words.

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?

Despite the short description, the rich input schema (100% parameter coverage) and presence of an output schema compensate for the lack of detail. The description is adequate for an agent to understand the core action, though it could mention the resulting devbox object or setup requirements.

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?

The input schema provides 100% description coverage for all 12 parameters, so the description adds no parameter-level meaning. The baseline of 3 is appropriate because the schema carries the full burden of explaining parameters and their constraints.

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 'Create a new Runloop Devbox' uses a specific verb and resource, clearly distinguishing it from siblings like update_devbox, shutdown_devbox, and suspend_devbox. It is unambiguous about the tool's primary function.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives. It does not mention any prerequisites, exclusions, or alternative tools. The usage context is only implied by the verb 'create'.

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

create_snapshotA

Create a disk snapshot of a devbox's current state.

Snapshots persist and accrue storage charges until explicitly deleted. A new devbox can later be created from the snapshot via snapshot_id.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoOptional name for the snapshot.
metadataNoOptional key/value metadata for the snapshot.
devbox_idYesThe id of the devbox to snapshot.
commit_messageNoOptional commit-style message describing the snapshot.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. It discloses two key behaviors: persistence (until explicitly deleted) and ongoing storage charges, which is important for cost-aware decision-making. It also mentions future usability via snapshot_id. However, it omits any operational constraints, such as whether the devbox must be running or stopped, whether the operation is synchronous, or any side effects on the devbox itself. This leaves uncertainty about when it is safe to invoke.

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 stating the action and second providing persistence/cost context and future use. Every sentence contributes valuable information with no redundancy or fluff.

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

Completeness4/5

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

The description covers the purpose, the lasting consequences (charges, persistence), and the downstream use case. It benefits from an output schema and fully described parameters, so the main gaps are operational prerequisites and error conditions. Given the tool's moderate complexity and cost implications, the description is largely complete but would benefit from a note about devbox state requirements.

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 four parameters are already described in the input schema with clear descriptions (e.g., devbox_id as 'The id of the devbox to snapshot'). The description adds no additional meaning for these parameters; it only references snapshot_id for later creation, which is an output or another tool's parameter. Given the schema coverage is 100%, a baseline score of 3 is appropriate.

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

Purpose5/5

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

The description opens with 'Create a disk snapshot of a devbox's current state,' providing a specific verb, resource, and scope. It clearly distinguishes itself from sibling tools like list_snapshots and create_devbox by explicitly focusing on snapshot creation and noting the snapshot can later seed a new devbox via snapshot_id.

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 warning that snapshots persist and accrue storage charges until explicitly deleted gives clear context for when to use this tool (e.g., for long-term state preservation) and implicitly advises against excessive use. It also notes that a new devbox can be created from the snapshot, suggesting a specific workflow. However, it does not explicitly name alternatives like list_snapshots or conditions where other tools should be preferred.

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

execute_commandA

Execute a command on a devbox and block until it completes.

Each call spawns an isolated shell by default - env vars and CWD do not persist between calls. Pass the same shell_name to reuse a stateful named shell session.

ParametersJSON Schema
NameRequiredDescriptionDefault
commandYesThe shell command to run.
devbox_idYesThe id of the devbox.
shell_nameNoOptional named shell for stateful sessions (same name reconnects to the same live session).
timeout_secondsNoMaximum time to wait for completion (HTTP timeout).

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden. It discloses key behavioral traits: blocking execution, isolated shell by default, env var/CWD non-persistence, and reuse of stateful named sessions. It doesn't mention permissions or potentially destructive effects, but for a command executor this is adequate.

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

Conciseness5/5

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

The description is brief and front-loaded with the main purpose. Every sentence adds essential information about behavior and stateful sessions, with no wasted words.

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 description covers the key nuances of the tool (blocking, shell isolation, stateful reuse) and is sufficient for an agent to select and invoke it. An output schema exists, so omitting return format details is acceptable. It could mention the timeout parameter, but that is already in the schema.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds value by explaining that the default is an isolated shell and that using the same shell_name reuses a stateful session, enriching the schema's parameter descriptions. This goes 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 ('Execute') and resource ('a devbox'), and clearly states the blocking behavior ('block until it completes'), which differentiates it from the async sibling. It also explains the isolated shell default, adding scope clarity.

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 gives clear context on when to use the default isolated shell vs. a named stateful shell, which is helpful for invocation. However, it does not explicitly name alternatives like 'execute_command_async' or 'pty_connect', though the blocking distinction implies when to choose this tool.

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

execute_command_asyncA

Start a command on a devbox and return immediately.

Use this for long-running or background processes (servers, watchers). The returned execution_id can be polled later.

ParametersJSON Schema
NameRequiredDescriptionDefault
commandYesThe shell command to run.
devbox_idYesThe id of the devbox.
shell_nameNoOptional named shell for stateful sessions.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It discloses the significant behavioral trait of returning immediately and the polling mechanism via execution_id. While it doesn't mention output handling or error behavior, the core async semantics are transparent and go beyond what the tool name alone conveys.

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, focused sentences. The first immediately states the core action, and the second provides usage context. Every sentence earns its place; there is no redundancy, fluff, or over-explanation.

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

Completeness4/5

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

Given the tool's moderate complexity and the presence of an output schema, the description provides sufficient context: it explains what the tool does, when to use it, and the key return behavior. It does not need to explain return values in depth because the output schema exists. Minor missing context includes lifecycle or cancellation, but overall it is complete for an async runner.

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

Parameters3/5

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

Schema description coverage is 100%, so a baseline of 3 is appropriate. The description does not add parameter-level semantics beyond the schema, but it does mention the returned execution_id, which enriches understanding of the command and devbox_id purposes. No gaps in parameter documentation exist.

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 opens with 'Start a command on a devbox and return immediately', which is a specific verb+resource pair. It clearly distinguishes from the sibling tool execute_command by emphasizing the asynchronous return and provides the key execution_id concept, making the tool's purpose obvious.

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 explicitly states when to use this tool: 'Use this for long-running or background processes (servers, watchers).' This is clear contextual guidance. It doesn't explicitly name alternatives like execute_command for synchronous commands, but the contrasting asynchronous behavior is implied.

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

get_devboxA

Retrieve details for a single devbox by id.

ParametersJSON Schema
NameRequiredDescriptionDefault
devbox_idYesThe id of the devbox.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

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

The description indicates a read-only operation via 'retrieve', but with no annotations provided, it carries the full burden of behavioral disclosure. It does not mention error handling, authentication requirements, or what happens if the id is invalid or not found, leaving the agent with limited guidance beyond the basic read intent.

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 a single, front-loaded sentence with no filler. Every word contributes to conveying the tool's purpose.

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?

This is a simple get-by-id tool with one parameter and an output schema, so the description is functionally adequate. However, with no annotations, a bit more context about usage or behavior would improve completeness; still, given the tool's simplicity, it earns a 4.

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

Parameters3/5

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

Schema description coverage is 100%, so the parameter devbox_id is fully documented in the schema. The description's 'by id' adds no extra semantic nuance beyond what is already stated, 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 uses a specific verb 'Retrieve' and identifies the resource 'devbox' with a clear scope 'single devbox by id'. This distinguishes it from siblings like list_devboxes (plural) and create_devbox/update_devbox.

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

Usage Guidelines3/5

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

Usage is implied: you need a devbox_id to get details. However, there is no explicit mention of when to use this tool versus alternatives such as list_devboxes, nor any exclusion criteria or prerequisites.

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

list_devboxesB

List devboxes on the account.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of devboxes to return.
statusNoFilter by status: ``scheduled``, ``queued``, ``provisioning``, ``initializing``, ``running``, ``suspending``, ``suspended``, ``resuming``, ``failure``, ``shutdown``.
starting_afterNoCursor for pagination (a devbox id).

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description bears full responsibility for disclosing behavioral traits. It only says 'List devboxes on the account' and does not mention that this is a read-only operation, whether pagination is required, how results are ordered, or any rate limits. The agent is left to infer safety and side effects from the tool name alone.

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 a single sentence with no fluff, making it concise and front-loaded. However, it is very spartan and lacks additional context, which prevents a perfect score. It is appropriately sized for a simple list tool, but could include one clause about usage or alternatives.

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

Completeness3/5

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

The presence of an output schema and fully described parameters makes the description minimally sufficient for a straightforward list operation. However, it does not address nuances like pagination flow, the meaning of 'account' scope, or how this relates to sibling tools. It is complete enough for simple invocation but not comprehensive.

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?

The schema has 100% description coverage for all three parameters (limit, status, starting_after), so the description adds no parameter-level detail beyond what is already structured. Baseline of 3 applies, and no additional semantic nuance is provided.

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') and the resource ('devboxes') with scope 'on the account.' It is easily distinguishable from sibling tools like get_devbox, which fetches a single devbox, and list_snapshots, which lists a different resource.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It does not mention that this is the tool for listing all devboxes, nor does it exclude cases like fetching a single devbox via get_devbox. No prconditions or exclusions are given.

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

list_snapshotsA

List disk snapshots, optionally filtered to a devbox.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of snapshots to return.
devbox_idNoOnly return snapshots created from this devbox.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description must convey behavior. It states the listing action and optional filter but does not explicitly disclose read-only nature, ordering, or any side effects. The verb 'list' implies non-mutating behavior, but this is not made explicit.

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 a single, front-loaded sentence that conveys the core purpose and optional filter without unnecessary words. It is efficiently structured and easy to parse.

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 low complexity (two optional parameters, output schema present), the description is adequate. It covers the main functionality and filter option, though it omits minor behavioral details like default ordering or authentication requirements, which are not critical for this simple list operation.

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?

The input schema provides full descriptions for both parameters (100% coverage), so the description adds little beyond the schema. It mentions the devbox filter, but this is already documented in the schema, resulting in no additional semantic value.

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 disk snapshots') and the optional devbox filter, providing a specific verb and resource. This distinguishes it from creation tools like create_snapshot and aligns with its name.

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

Usage Guidelines3/5

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

The description implies usage through the optional devbox filter but does not explicitly mention when to use this tool versus alternatives, such as list_devboxes. No exclusions or alternative tool references are provided, leaving usage context implicit.

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

pty_connectA

Create or reconnect to an interactive PTY session on a devbox.

Reusing the same session_name reconnects to the same logical PTY session while it is still alive. The returned connect_url is the WebSocket endpoint used by pty_send_command.

ParametersJSON Schema
NameRequiredDescriptionDefault
colsNoInitial terminal width in character cells (1..1000).
rowsNoInitial terminal height in character cells (1..1000).
session_nameYesClient-chosen PTY session name (``[A-Za-z0-9_-]``, 1..256).

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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

Without annotations, the description discloses key behaviors: create-or-reconnect semantics, session liveness, and the returned connect_url as the WebSocket endpoint. It does not cover lifecycle details like session limits or error behavior, but adds meaningful context beyond the tool name.

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, and each sentence adds value (reconnect behavior and connect_url output). No fluff.

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

Completeness4/5

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

With a 3-parameter schema fully described and an output schema present, the description covers the essential purpose, reconnect behavior, and return value. Minor omissions (e.g., session lifecycle, error handling) are acceptable given the sibling tools that handle sending/control.

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 already documents all 3 parameters with descriptions (100% coverage). The description does not add additional parameter-level semantics beyond mentioning session_name reuse, so baseline 3 applies.

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 explicitly states 'Create or reconnect to an interactive PTY session on a devbox,' clearly identifying the verb, resource, and scope. It also differentiates from siblings by mentioning reconnection and the connection URL for pty_send_command.

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

Usage Guidelines3/5

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

Usage is implied: the tool is for establishing interactive PTY sessions and reusing session names reconnects. No explicit comparison to alternatives (e.g., execute_command) is provided, and no when-not-to-use guidance is given.

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

pty_controlA

Control an existing PTY session: resize, signal, or close.

ParametersJSON Schema
NameRequiredDescriptionDefault
colsNoNew terminal width (required for ``resize``).
rowsNoNew terminal height (required for ``resize``).
actionYesOne of ``resize``, ``signal``, ``close``.
signalNoPOSIX signal name for ``signal`` (e.g. ``SIGINT``, ``SIGTERM``, ``SIGWINCH``, ``SIGUSR1``).
session_nameYesThe PTY session name.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It lists the three control actions, which is transparent about the core operations, but it doesn't disclose side effects (e.g., close terminates the session, signals may kill processes) or prerequisites (e.g., session must already exist). It is not misleading but minimal.

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 a single sentence, front-loaded with the action and resource scope, and every word adds value. It is concise without unnecessary detail.

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?

Given the comprehensive schema and presence of an output schema, the description is adequate for basic understanding. However, it lacks important context about session lifecycle, side effects, and usage prerequisites, which would be valuable for a control tool.

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

Parameters3/5

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

The schema provides 100% coverage with descriptions for all parameters, including the action enum and requirements for cols/rows. The description adds no parameter-specific semantics beyond the schema, so the baseline score of 3 is appropriate.

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

Purpose5/5

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

The description uses a specific verb ('Control'), identifies the resource ('existing PTY session'), and explicitly lists the supported actions (resize, signal, close). This clearly differentiates it from sibling tools like pty_send_command and pty_connect.

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

Usage Guidelines3/5

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

The description implies when to use the tool (for resizing, signaling, or closing an existing PTY session) but does not explicitly state when not to use it or offer alternatives. It lacks guidance such as 'use pty_send_command for sending input' or 'create a session first with pty_connect'.

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

pty_send_commandA

Send a command to an interactive PTY session and capture its output.

Creates the session if it does not exist (or reconnects if it does), opens the WebSocket data plane, writes the command, and reads output until the terminal is quiet for idle_timeout seconds (or max_wait elapses).

Prefer execute_command for non-interactive commands; use this for TTY-aware programs (REPLs, TUIs, interactive shells).

ParametersJSON Schema
NameRequiredDescriptionDefault
colsNoInitial terminal width in character cells (1..1000).
rowsNoInitial terminal height in character cells (1..1000).
commandYesThe shell command to run inside the PTY.
max_waitNoHard cap on total time spent collecting output.
idle_timeoutNoStop reading after this many seconds of silence.
session_nameYesClient-chosen PTY session name (``[A-Za-z0-9_-]``, 1..256).

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

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

No annotations exist, so the description carries full burden. It discloses session creation/reconnection, WebSocket data plane usage, and the idle_timeout/max_wait completion logic. It does not cover error handling or edge cases, but the output schema likely addresses return structure.

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: purpose, process, guidance. Each sentence earns its place, with the most important information front-loaded. No filler or redundancy.

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

Completeness4/5

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

For a 6-parameter tool with an output schema, the description covers purpose, lifecycle, timing behavior, and alternatives. It leaves some edge-case behavior (e.g., errors, exit codes) unspecified, but the existence of an output schema mitigates the need to describe return values.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description adds semantic depth by explaining that session_name triggers creation/reconnection and how idle_timeout and max_wait control read termination, going beyond the parameters' own 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?

Opening sentence states 'Send a command to an interactive PTY session and capture its output' – a specific verb and resource. It further distinguishes itself from siblings by explicitly contrasting with execute_command in the final sentence.

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

Usage Guidelines5/5

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

Provides explicit when-to-use guidance: 'Prefer execute_command for non-interactive commands; use this for TTY-aware programs (REPLs, TUIs, interactive shells).' This names the alternative and gives concrete usage context.

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

read_fileB

Read the contents of a file on a devbox.

ParametersJSON Schema
NameRequiredDescriptionDefault
devbox_idYesThe id of the devbox.
file_pathYesAbsolute path of the file inside the devbox.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations, the description must disclose behavioral traits. It states 'Read' which implies a non-destructive operation, but it does not add details about error handling, permissions, file size limits, or encoding. While the basic behavior is clear, it lacks depth beyond the name.

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 a single, concise sentence that front-loads the essential information. Every word earns its place, and there is no redundancy or filler.

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

Completeness3/5

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

The tool is simple with two well-documented parameters and an output schema, so the description does not need to explain return values. However, the lack of usage guidelines and explicit differentiation from sibling tools leaves some contextual gaps, making it minimally 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 description coverage is 100%, with both parameters (devbox_id and file_path) already having meaningful descriptions. The tool description adds no extra parameter information, so the baseline score of 3 is appropriate.

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

Purpose4/5

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

The description uses a specific verb ('Read') and resource ('file on a devbox'), clearly identifying the tool's function. It is distinct from the obvious sibling write_file, though it does not explicitly contrast with execute_command which could also read files via shell commands.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. There are no mentions of alternatives, prerequisites, or scenarios where this tool is preferred, leaving the agent to infer usage from the name and description alone.

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

resume_devboxA

Resume a suspended devbox.

ParametersJSON Schema
NameRequiredDescriptionDefault
devbox_idYesThe id of the devbox to resume.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior2/5

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

No annotations are provided, so the description bears full responsibility for behavioral disclosure. It only states the action without explaining side effects, prerequisites (e.g., devbox must exist and be suspended), or potential errors. This leaves the agent guessing about the operation's 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?

The description is a single, front-loaded sentence that conveys the essential action. Every word earns its place, and there is no fluff or redundancy.

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

Completeness4/5

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

The tool is simple with one parameter and has an output schema, so the description need not explain return values. However, it could mention the required state (suspended) or idempotency, but overall it is adequate for a straightforward resume operation.

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?

The input schema already provides 100% coverage of the single parameter, including a clear description for devbox_id. The tool description adds no additional semantic meaning beyond what the schema says, so the baseline score of 3 is appropriate.

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

Purpose5/5

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

The description 'Resume a suspended devbox' uses a specific verb and resource, clearly distinguishing this tool from siblings like suspend_devbox and shutdown_devbox. It states exactly what the tool does without ambiguity.

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 implies the use case: resume a devbox that is currently suspended. It clearly differentiates from shutdown and suspend, though it does not explicitly state when not to use it or mention alternatives.

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

shutdown_devboxA

Shut down (delete) a devbox and release its resources.

ParametersJSON Schema
NameRequiredDescriptionDefault
forceNoForce shutdown even if the devbox is busy.
devbox_idYesThe id of the devbox to shut down.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It does disclose the destructive nature by saying 'delete' and 'release its resources,' which implies irreversible resource release. However, it does not explicitly warn about data loss, irreversibility, or consequences if the devbox is busy (though the force parameter is documented in the schema). The description offers basic transparency but lacks additional behavioral context like side effects or permissions.

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 a single sentence, front-loaded with the action, and contains no redundant information. It efficiently conveys the primary purpose and the fact that resources are released.

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

Completeness3/5

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

The tool is simple with two well-documented parameters and an output schema, so the description doesn't need to explain return values. However, the description is minimal and lacks usage context or warnings about irreversibility. It is adequate for basic understanding but not fully complete for a destructive operation without annotations.

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?

The input schema provides 100% coverage for both parameters (devbox_id and force), each with clear descriptions. The tool description adds no additional meaning about parameters, such as when to set force or the effects of the default value. Schema coverage is high, so the baseline of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool's function: 'Shut down (delete) a devbox and release its resources.' It specifies the verb (shut down/delete) and resource (devbox), and the parenthetical 'delete' distinguishes it from sibling suspend_devbox, which likely pauses rather than removes the devbox.

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

Usage Guidelines2/5

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

The description provides no explicit guidance on when to use this tool versus alternatives like suspend_devbox or resume_devbox. While 'delete' implies permanent removal, it does not directly state that this is for final decommissioning or that suspend should be used for temporary pauses. There is no context or exclusion criteria.

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

suspend_devboxA

Suspend a devbox, preserving its disk state.

In-memory state (running processes, env vars) is lost; restart background processes after resuming.

ParametersJSON Schema
NameRequiredDescriptionDefault
devbox_idYesThe id of the devbox to suspend.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior5/5

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

With no annotations provided, the description carries full burden and excels. It clearly discloses that disk state is preserved while in-memory state is lost, and advises restarting background processes. This is non-obvious, valuable behavioral context.

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

Conciseness5/5

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

The description is concise and well-structured: a front-loaded purpose statement followed by a crucial caveat. It is two short sentences with no wasted words.

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

Completeness5/5

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

Given the tool's simplicity (one parameter, no annotations, and an output schema), the description covers all key aspects: purpose, behavioral effects, and a practical follow-up instruction. No significant gaps remain.

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?

The single parameter devbox_id is fully described in the schema with 100% coverage. The description adds no extra semantic detail about the parameter itself, so the baseline score of 3 is appropriate.

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

Purpose5/5

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

The description states a specific verb ('Suspend') and resource ('devbox'), and adds the crucial distinction 'preserving its disk state', which differentiates it from sibling tools like shutdown_devbox and resume_devbox. Purpose is unambiguous.

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 implies when to use the tool by highlighting disk-state preservation, and provides a practical caveat about restarting background processes after resuming. However, it does not explicitly name alternative tools or state 'when not to use', leaving a slight gap in explicit guidance.

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

update_devboxA

Update a devbox's name and/or metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoNew human-friendly name.
metadataNoReplacement key/value metadata (merging is not supported by the API; pass the full desired set).
devbox_idYesThe id of the devbox to update.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavioral traits itself. It only says 'Update', with no mention of idempotency, side effects, permissions, or the replacement semantics of metadata. Important behavior like 'merging is not supported' is only in the schema, not the description.

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 a single, front-loaded sentence that directly states the tool's purpose without any filler. It is concise and easy to parse.

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?

For a simple update tool with a rich schema and output schema, the description is adequate but minimal. It lacks usage guidance and behavioral context, but given the tool's low complexity and the schema's fullness, it is acceptable. Missing exclusions or alternative tool references lowers the score.

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

Parameters3/5

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

Schema description coverage is 100%, so the base score is 3. The description itself adds no parameter-level information beyond the schema, which already documents each parameter, including the critical metadata replacement note. No extra value from the description.

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

Purpose5/5

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

The description clearly states a specific action ('Update') on a specific resource ('devbox') and names the fields it modifies ('name and/or metadata'). This unambiguously distinguishes it from sibling tools like get_devbox, create_devbox, or suspend_devbox.

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

Usage Guidelines3/5

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

The description implies usage: when you need to modify a devbox's name or metadata. However, it provides no explicit guidance on when to choose this tool over alternatives (e.g., create_devbox for new resources) or any exclusion criteria. The context is clear but not detailed.

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

write_fileA

Create or overwrite a file on a devbox.

Use this to write new files or edit existing ones (the full contents are written atomically).

ParametersJSON Schema
NameRequiredDescriptionDefault
contentsYesFull file contents to write.
devbox_idYesThe id of the devbox.
file_pathYesAbsolute path of the file inside the devbox.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

The description discloses an important behavioral trait: the write is atomic ('the full contents are written atomically'). It also notes the overwrite capability, implying destructiveness. However, without annotations it does not mention error conditions or permission requirements, so it is not fully exhaustive.

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

Conciseness5/5

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

The description is two sentences and front-loads the primary action. The second sentence adds usage nuance without redundancy. Every word earns its place.

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

Completeness4/5

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

For a simple file-write tool, the description covers creation, overwriting, and atomicity. The presence of an output schema and fully documented parameters means return values and parameter details are covered. It could mention what happens on invalid paths, but the core context is adequate.

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

Parameters3/5

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

Schema coverage is 100%, with each parameter described (contents, devbox_id, file_path). The description adds the semantic that 'contents' are the full file contents, but this mostly mirrors the schema. No additional parameter-level detail is necessary.

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 ('Create or overwrite') and identifies the resource ('a file on a devbox'), making the primary action unambiguous. It clearly distinguishes from sibling tools like read_file and execute_command by focusing on file content writing.

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 states explicit usage cases: 'write new files or edit existing ones', which helps the agent choose the tool over alternatives. It does not explicitly mention exclusions or alternatives, but with no other file-writing sibling this context is sufficient.

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. 16 tool updatesv0.1.0
    • First observedcreate_devbox
    • First observedcreate_snapshot
    • First observedexecute_command
    • First observedexecute_command_async
    • First observedget_devbox
    • First observedlist_devboxes
    • First observedlist_snapshots
    • First observedpty_connect
    • First observedpty_control
    • First observedpty_send_command
    • First observedread_file
    • First observedresume_devbox
    • First observedshutdown_devbox
    • First observedsuspend_devbox
    • First observedupdate_devbox
    • First observedwrite_file

TDQS

A3.9/5.0
Disambiguation5/5

Each tool maps to a distinct resource and action. The three command execution tools are clearly differentiated by blocking vs async vs interactive PTY, and the PTY tools have separate connect/send/control roles. No two tools appear to do the same thing.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern (e.g., create_devbox, list_devboxes, write_file, pty_connect). The PTY tools use a common pty_ prefix, and the async variant uses a clear _async suffix.

Tool Count5/5

16 tools cover the devbox lifecycle, file operations, snapshots, and PTY interactivity without redundancy. Even though slightly above the typical range, each tool serves a distinct purpose and the set feels well-scoped.

Completeness3/5

Core devbox lifecycle is fully covered (create/get/list/update/suspend/resume/delete). However, there are notable gaps: no way to retrieve results from execute_command_async (no polling/status tool), and no delete operation for snapshots. These are workable but missing.

Maintenance

ActivityMaintained
ResponsivenessSyncing

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

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/contributory/runloop-mcp'

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