Skip to main content
Glama

sandbox-as-a-service-mcp

에이전트가 마음껏 부술 수 있는 실제 Linux 가상 머신을 제공하는 MCP 서버입니다.

11가지 도구: 샌드박스 생성, 샌드박스에서 셸 명령 실행, 파일 쓰기 및 읽기, 실행 결과 목록 확인, 공개 미리보기 URL로 포트 노출, 수명 연장, 파괴, 그리고 비용 확인이 가능합니다.

각 샌드박스는 자체 커널을 가진 전용 VM입니다. 다른 사람의 코드와 호스트를 공유하는 컨테이너가 아닙니다. 계정 간에 재사용되지 않으며, 만료되면 누군가 요청했는지 여부와 관계없이 파괴됩니다.

사용 방법

AAS_API_KEY=aas_sk_... npx -y https://sandbox-as-a-service.com/mcp.tgz

sandbox-as-a-service.com에서 키를 받으세요. 새 계정은 무료 크레딧으로 시작하며 카드가 필요 없습니다.

Claude Desktop / Claude Code

{
  "mcpServers": {
    "sandbox": {
      "command": "npx",
      "args": ["-y", "https://sandbox-as-a-service.com/mcp.tgz"],
      "env": { "AAS_API_KEY": "aas_sk_..." }
    }
  }
}

Related MCP server: agent-env-mcp

도구

도구

기능

create_sandbox

VM을 생성하고 준비되면 ID를 반환합니다.

run_command

권한이 없는 사용자로 셸 명령을 실행합니다. stdout, stderr, 종료 코드를 반환합니다.

write_file

파일을 씁니다. 콘텐츠는 대역 외로 전송되므로 따옴표와 바이너리가 보존됩니다.

read_file

파일을 다시 읽습니다. 에이전트가 코드가 생성한 결과에 접근하는 방법입니다.

list_files

디렉터리 트리를 나열하여 에이전트가 실행 결과를 찾을 수 있게 합니다.

expose_port

샌드박스 내부의 서버에 공유할 수 있는 공개 https URL을 제공합니다.

get_sandbox

상태, 크기 및 만료 시간.

list_sandboxes

계정의 모든 샌드박스를 최신순으로 나열합니다. 방치된 샌드박스를 찾는 데 유용합니다.

extend_sandbox

작업이 제한 시간을 초과할 때 만료 시간을 연장합니다.

destroy_sandbox

파괴하고 과금을 중지합니다.

get_usage

남은 크레딧과 최근 사용량.

에이전트를 위한 참고 사항

  • 코드는 권한이 없는 사용자로 실행됩니다. sudo가 없으므로 apt-get은 작동하지 않습니다. 대신 pip install --user --break-system-packages 또는 npm install을 사용하세요. 둘 다 작동합니다.

  • run_command는 명령이 끝날 때까지 기다립니다. 서버를 시작할 때는 &를 사용하세요. 그렇지 않으면 제한 시간까지 호출이 열린 상태로 유지됩니다.

  • 샌드박스는 destroy_sandbox가 호출되었는지 여부와 관계없이 제한 시간이 만료되면 파괴됩니다. 따라서 잊어버린 샌드박스는 영원히 돈을 소모하는 것이 아니라 몇 분만 소모합니다. 그래도 호출하면 사용하지 않을 분을 돌려받습니다.

환경

변수

AAS_API_KEY

필수. API 키.

AAS_BASE_URL

선택 사항. 기본값은 https://sandbox-as-a-service.com/v1입니다.

MIT 라이선스. 이 서버가 통신하는 서비스는 sandbox-as-a-service.com에 있으며, 문서는 여기에서 확인할 수 있습니다.

Available Tools

11 tools
create_sandboxA

Create an isolated cloud sandbox — a dedicated virtual machine you can run commands in. Returns once the sandbox is ready. Python 3, Node.js 22, git and a build toolchain are pre-installed. The sandbox is destroyed automatically after timeout_minutes; nothing inside it survives that. Use this before running any code you would not want to run on the local machine.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoOptional label to identify this sandbox later.
sizeNosmall = 2 vCPU/4 GB, medium = 4 vCPU/8 GB, large = 8 vCPU/16 GB. Default: small.
timeout_minutesNoDestroy the sandbox automatically after this many minutes (default 15, max 1440 — 24 hours).

TDQS

A4.4/5.0
Behavior5/5

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

With no annotations, the description carries the full burden of behavioral disclosure and does so strongly: the sandbox is isolated, dedicated, returns only when ready, and is destroyed automatically after timeout_minutes with nothing surviving. It also calls out the pre-installed runtimes, giving the agent a clear model of the environment.

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 three sentences with no filler; the core purpose is front-loaded, followed by return behavior, environment details, destruction semantics, and usage guidance. Every sentence contributes distinct 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?

The description is complete for the creation act and the environment, but with no output schema it only says 'Returns once the sandbox is ready' without stating what the return value contains (e.g., an ID/handle needed to target subsequent commands). This is a minor gap because sandbox-identification is mostly covered by the name parameter and sibling tools.

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%, and each parameter is already documented with defaults, ranges, and size mappings. The description mostly re-emphasizes the timeout destruction behavior that the schema already states, so it adds little parameter-level meaning beyond the baseline.

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 and resource ('Create an isolated cloud sandbox — a dedicated virtual machine you can run commands in') and makes the tool's role obvious relative to siblings like run_command and list_sandboxes. It goes beyond a bare restatement by also describing the preinstalled environment.

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 a clear selection criterion: 'Use this before running any code you would not want to run on the local machine.' This tells the agent when to create a sandbox, but it does not explicitly contrast with alternatives or state when not to use it, so it falls one point short of full guidance.

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

destroy_sandboxA

Destroy a sandbox and stop billing for it. Everything inside is lost. Call this as soon as you are finished — do not leave sandboxes running.

ParametersJSON Schema
NameRequiredDescriptionDefault
sandbox_idYes

TDQS

A4.5/5.0
Behavior5/5

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

With no annotations, the description fully carries the burden of behavioral disclosure. It clearly states irreversible data loss ('Everything inside is lost') and the financial effect ('stop billing'). This is exactly the critical behavioral context an agent needs for a destructive operation.

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

Conciseness5/5

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

The description is compact and front-loaded: first sentence states the action and billing effect, second warns about data loss, third gives timing guidance. Every sentence adds essential information without redundancy or fluff.

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

Completeness5/5

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

For a single-parameter destructive operation with no output schema and no annotations, the description covers the essential context: what is destroyed, that billing stops, that data is irrecoverable, and when to call it. Nothing critical is missing for safe and correct invocation.

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 0%, so the description must compensate. The description refers to 'a sandbox' but does not explicitly explain that sandbox_id identifies which sandbox to destroy or where to obtain it (e.g., from create_sandbox or list_sandboxes). The parameter name is self-explanatory, but the description adds minimal semantic detail 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 states a specific verb ('Destroy') and resource ('a sandbox'), and immediately adds the billing consequence, which distinguishes it from siblings like get_sandbox or extend_sandbox. It is clear and direct about the operation performed.

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 gives explicit timing guidance: 'Call this as soon as you are finished — do not leave sandboxes running.' This clearly tells the agent when to use the tool. It does not explicitly name alternatives like extend_sandbox, but the 'do not leave sandboxes running' phrase implicitly tells the agent not to call it while work is still in progress.

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

expose_portA

Give a server running inside the sandbox a public https URL, so a person can open it in a browser. Use this after starting a web server or dev server in the background. The server only needs to listen on localhost. Returns a URL that works until the sandbox is destroyed.

ParametersJSON Schema
NameRequiredDescriptionDefault
portYesThe port the server listens on, e.g. 3000.
sandbox_idYesThe id returned by create_sandbox.

TDQS

A4.5/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 disclosure burden and does a good job by stating that the tool returns a public https URL and that the URL works until the sandbox is destroyed. It does not mention failure behavior or security implications of exposing a port, but the core behavioral contract is clear.

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 three sentences with no filler: purpose, usage timing, and URL lifetime are each covered concisely. The most important information is front-loaded.

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

Completeness5/5

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

For a two-parameter tool with no output schema, this description is complete enough. It explains the outcome, the prerequisite, and the duration of the returned URL, so an agent can select and invoke the tool correctly without additional documentation.

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 both sandbox_id and port are already documented in the schema. The description adds useful context about the server listening on localhost, but it does not substantially expand on the parameter meanings 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?

The description opens with a specific action: 'Give a server running inside the sandbox a public https URL,' and clearly states the purpose is to let a person open the server in a browser. This distinguishes it from sibling tools like run_command and get_sandbox, which serve different purposes.

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?

It explicitly says when to use the tool: 'Use this after starting a web server or dev server in the background.' It also provides the prerequisite that the server only needs to listen on localhost, so the agent knows exactly when and how to invoke it.

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

extend_sandboxA

Push a sandbox’s expiry further out so long-running work is not cut off. Total lifetime is still capped at 24 hours from creation.

ParametersJSON Schema
NameRequiredDescriptionDefault
sandbox_idYes
additional_minutesNoDefault 15.

TDQS

A3.9/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 behavioral burden. It discloses the key mutation (extending expiry) and an important constraint (24-hour cap from creation). However, it is ambiguous what happens if the requested additional_minutes would exceed the cap—whether the sandbox is clamped to 24 hours or the call fails—and no response behavior is described.

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 with no wasted words: the primary action is front-loaded, followed by the critical limitation. The use case 'long-running work is not cut off' earns its place by motivating the tool.

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 two-parameter tool, the description covers the core purpose and the most important bound. But with no output schema and no annotations, it should specify edge-case behavior when the requested extension would exceed the cap and whether the response contains the new expiry time, leaving an agent uncertain about handled limits.

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 description adds context beyond the schema by explaining why a caller would use additional_minutes and that extension is bounded by the 24-hour lifetime cap. However, it does not clarify how sandbox_id is obtained or precisely how additional_minutes is applied, leaving the undocumented sandbox_id parameter uncovered.

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 action and resource: 'Push a sandbox's expiry further out'. This directly distinguishes it from sibling tools like create_sandbox and destroy_sandbox, and the phrase 'so long-running work is not cut off' clarifies its exact purpose.

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 clearly indicates when to use the tool: when long-running work risks being cut off. It also provides an important exclusion: the total lifetime is capped at 24 hours from creation, so the tool cannot be used to extend beyond that bound. It does not explicitly name alternative tools, but the purpose is clear enough.

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

get_sandboxA

Get the current status and details of one sandbox, including when it expires.

ParametersJSON Schema
NameRequiredDescriptionDefault
sandbox_idYes

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description carries the behavioral burden. It conveys a read-only status/details operation and calls out expiry, but it does not discuss failure behavior, prerequisites, or response format. The verb 'Get' implies safety, but richer behavioral disclosure would help.

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

Conciseness5/5

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

The description is a single sentence with no filler. It front-loads the operation and includes the most useful detail (expiry) without 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 one-parameter read tool, the description covers purpose, target scope, and a key return detail. It is complete enough for an agent to invoke correctly, though an explicit read-only note and not-found behavior would make it fully complete given there is no output schema.

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 0%, so the description must compensate. The phrase 'one sandbox' implies sandbox_id identifies the target, but the description does not explain where the ID comes from or its format. For a single self-evident parameter, this is adequate but not detailed.

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 ('Get'), a resource ('one sandbox'), and concrete output content ('current status and details', 'when it expires'). This clearly differentiates it from list_sandboxes, create_sandbox, extend_sandbox, and destroy_sandbox.

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 clearly scopes the tool to a single sandbox rather than a collection, so an agent can infer when to use it versus list_sandboxes. It does not explicitly name the alternative or state when not to use it, so it stops short of a 5.

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

get_usageA

Show the account’s remaining credit balance and recent sandbox usage.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations, the description must carry the behavioral safety burden. 'Show' clearly signals a read-only, non-destructive operation, but the description does not disclose any additional behavioral details such as authentication requirements, data freshness, or rate limits. For a simple getter, this is acceptable but not rich.

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?

A single, front-loaded sentence states the verb and the resource with no wasted words. It is concise without sacrificing clarity.

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 parameterless read-only tool with no output schema, the description covers the main return values at a useful level. The only notable ambiguity is 'recent' usage, which does not specify a time window, but the low complexity and clear scope keep the tool interpretable.

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?

The tool has zero parameters and schema description coverage is 100%, so there is no parameter-semantics gap. The description adds no parameter detail, and none is needed. This matches the baseline for parameterless tools.

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 clear verb ('Show') and a specific resource ('account's remaining credit balance and recent sandbox usage'). It unambiguously identifies what the tool does and is easily distinguishable from all sibling sandbox-operation tools.

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?

There is no explicit when-to-use versus alternatives, but the description provides clear context: this is the account-level billing/usage query tool. Since all siblings are sandbox lifecycle/action tools, no alternative tool competes for this purpose.

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

list_filesA

List the contents of a directory in a sandbox, with the type and size of each entry. Defaults to /workspace. Use this to find what your code produced before reading it.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNoDirectory to list. Default /workspace.
sandbox_idYes

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description carries the behavioral burden. It usefully discloses the default path and that entries include type and size, and 'List' implies a non-destructive read. However, it does not explain edge behaviors such as hidden files, path traversal limits, or errors for nonexistent directories.

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 tight sentences front-load the core action and output, then add the default path and a practical usage tip. Every word earns its place with no redundancy.

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

Completeness4/5

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

For a simple listing tool, the description covers purpose, scope, default path, and output fields, which is sufficient for most calls. It lacks detail on error cases and path resolution behavior, but those are minor for this tool's complexity.

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

Parameters3/5

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

Schema coverage is 50%: path is documented with a default, but sandbox_id has no description. The tool description adds context by defining the scope as a sandbox directory, which implies sandbox_id identifies the sandbox, but it does not fully compensate for the missing sandbox_id semantics.

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 names a specific action ('List the contents of a directory'), the resource ('in a sandbox'), and the output details ('type and size of each entry'). This clearly distinguishes it from siblings like read_file, write_file, and run_command.

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?

'Use this to find what your code produced before reading it' gives clear practical context for when to call this tool. It does not explicitly name alternatives or exclusions, but the usage intent is unambiguous enough.

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

list_sandboxesA

List the sandboxes on this account, newest first. Use it to find sandboxes you created earlier.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoHow many to return (default 20, max 100).
include_deletedNoInclude sandboxes that have already been destroyed. Useful for auditing what a run created.

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations present, the description carries the disclosure burden. It reveals ordering behavior ('newest first') and account scoping, and the verb 'list' implies a non-mutating operation. However, it does not explicitly state that deleted sandboxes are excluded unless include_deleted is set, though the schema covers that.

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 short sentences, front-loaded with the core purpose and ordering. The second sentence adds practical guidance without 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?

For a simple two-parameter list tool with no output schema, the description is mostly sufficient: it gives purpose, ordering, and a use case. The only minor gap is not clarifying that destroyed sandboxes are excluded by default, which could affect the 'find sandboxes you created earlier' use case; however, the schema's include_deleted description partially compensates.

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 both parameters are already fully documented. The tool description does not add any extra meaning to the parameters, so the baseline of 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 states the exact operation ('List the sandboxes on this account') and specifies ordering ('newest first'), making the tool's purpose immediately clear. This clearly distinguishes it from siblings like create_sandbox, destroy_sandbox, or get_sandbox, which either mutate or target a single sandbox.

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 ('Use it to find sandboxes you created earlier'), indicating this tool is for discovery and recall. It does not explicitly name alternatives or exclusions, so an agent might not know when to prefer get_sandbox instead, but the context is clear enough for most list scenarios.

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

read_fileA

Read a file back out of a sandbox — an artifact your code produced, a log, a generated report. Use encoding "base64" for binary files such as images.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
encodingNo
sandbox_idYes

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description must carry the behavioral burden. It conveys that the operation is a read and gives an encoding hint for binary files, but it does not disclose what happens on missing files, whether the path is relative to the sandbox root, or how the file content is returned (text vs base64 string).

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 concise sentences. The purpose is front-loaded in the first sentence, and the useful encoding guidance follows immediately. There is no filler, repetition, or unnecessary detail.

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

Completeness2/5

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

There is no output schema and no annotations, so the description should explain return values and usage context more fully. It does not state what the response contains, what encoding default applies, or how the path should be specified, leaving an agent to guess important operational details.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. It only explains the encoding parameter usage explicitly; sandbox_id and path are left to inference from the tool name and general context. The path format and identifier semantics are not addressed.

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 a specific verb and resource: 'Read a file back out of a sandbox.' It also clarifies the types of files intended ('an artifact your code produced, a log, a generated report'), which differentiates it from siblings like write_file and list_files without needing to name them.

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 this tool: to retrieve artifacts your code produced while running in a sandbox. It also provides a concrete parameter-level instruction ('Use encoding "base64" for binary files such as images'), but it does not explicitly state exclusions or compare against alternatives like list_files for discovering files.

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

run_commandA

Run a shell command inside a sandbox and wait for it to finish. Returns stdout, stderr and the exit code. The command runs as an unprivileged user in /workspace. A non-zero exit code is returned normally, not as an error. Use this to execute code, install packages, clone repositories or inspect the filesystem.

ParametersJSON Schema
NameRequiredDescriptionDefault
cwdNoWorking directory. Default /workspace.
envNoEnvironment variables for this command. They are exported, so they survive chaining with && or ;.
commandYesShell command, e.g. `python3 script.py` or `pip install requests`.
sandbox_idYesThe id returned by create_sandbox.
timeout_msNoHow long to wait before killing the command (default 60000, max 600000).

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral disclosure burden and does it well: it states the command runs as an unprivileged user in /workspace, exits normally on non-zero exit codes, and waits for completion. It does not mention persistence or network side effects, but the sandbox context and schema mitigate the omission.

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

Conciseness5/5

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

Five short, distinct sentences each convey essential information: purpose, return values, execution environment, exit code behavior, and suggested uses. There is no fluff or repetition, and key facts are 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 description is complete enough for an agent to correctly select and call the tool, covering inputs, outputs, and error behavior. It does not mention what persists after the command (e.g., installed packages, file changes) or network access, but for a generic shell tool with fully described schema parameters, this is a minor gap.

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 baseline is 3. The description adds little parameter-specific detail beyond the schema, but it does reinforce the /workspace default and gives example commands (e.g., python3 script.py, pip install requests).

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 and resource: 'Run a shell command inside a sandbox and wait for it to finish.' It also clarifies the returned data (stdout, stderr, exit code), which distinguishes it from sibling file and sandbox management tools.

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 concrete use cases ('execute code, install packages, clone repositories or inspect the filesystem'), which helps an agent recognize when to invoke it. However, it does not explicitly mention alternatives or cases where a sibling tool like read_file or list_files would be preferable, so there are no exclusion rules.

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

write_fileA

Write a file inside a sandbox. Use this to place a script or input data before running it. Paths are relative to /workspace unless absolute. Content of any kind is safe — it is transferred verbatim, not interpreted by a shell.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYese.g. `analysis.py` or `/workspace/data/input.json`.
contentYesFile contents.
encodingNoUse 'base64' to write binary content. Default 'utf8'.
sandbox_idYes

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden and does it well: it discloses path resolution relative to /workspace unless absolute, and guarantees content is transferred verbatim and not interpreted by a shell. It omits overwrite behavior and directory creation, but the key safety behavior is covered.

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 short sentences, each contributing a distinct piece of information: what it does, when to use it, and path/safety semantics. 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?

The description is nearly complete for a simple write tool: it covers purpose, usage context, path semantics, and content safety. It does not specify whether existing files are overwritten, whether parent directories are created, or what the success response is, which are the main remaining gaps given there is no output schema.

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

Parameters4/5

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

Schema coverage is 75%, so the schema already documents most parameters. The description adds meaningful semantics beyond the schema by explaining path resolution (relative to /workspace unless absolute) and by clarifying that content is written verbatim, which is not stated in 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 states a specific verb and resource ('Write a file inside a sandbox') and immediately clarifies the intended use: placing a script or input data before running it. This clearly separates it from siblings like read_file, list_files, and run_command.

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?

'Use this to place a script or input data before running it' gives explicit context for when the tool is appropriate. It implies the workflow with run_command and does not provide explicit exclusions or when-not-to-use guidance.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 11 tool updatesv1.1.0
    • First observedcreate_sandbox
    • First observeddestroy_sandbox
    • First observedexpose_port
    • First observedextend_sandbox
    • First observedget_sandbox
    • First observedget_usage
    • First observedlist_files
    • First observedlist_sandboxes
    • First observedread_file
    • First observedrun_command
    • First observedwrite_file

TDQS

A4.3/5.0

Scored across 11 tools

Disambiguation5/5

Each tool targets a distinct action and resource: sandbox lifecycle, file operations, command execution, port exposure, and usage lookup are clearly separated. Even similar pairs like list_files and list_sandboxes are disambiguated by both name and description.

Naming Consistency5/5

All tool names follow a consistent snake_case verb_noun pattern, e.g. create_sandbox, run_command, write_file, destroy_sandbox. There are no mixed conventions, vague verbs, or stylistic deviations.

Tool Count5/5

Eleven tools is a well-scoped size for a sandbox-as-a-service server. Each tool covers a meaningful capability without redundancy or bloat.

Completeness5/5

The surface covers the full sandbox lifecycle—create, read, list, extend, destroy—plus file operations, command execution, port exposure, and usage tracking. There are no obvious dead ends or missing operations needed for the intended workflow.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers