sandbox-as-a-service-mcp
sandbox-as-a-service-mcp
Сервер MCP, который даёт агенту настоящую виртуальную машину Linux, которую можно сломать.
Одиннадцать инструментов: создать песочницу, выполнить команды оболочки в ней, записать и прочитать файлы, перечислить результаты запуска, открыть порт на публичном preview URL, продлить время жизни, уничтожить её и проверить, сколько всё это стоило.
Каждая песочница — это выделенная виртуальная машина с собственным ядром, а не контейнер, разделяющий хост с чужим кодом. Она никогда не используется повторно между аккаунтами и уничтожается по истечении срока действия, даже если никто не вспомнил об этом.
Использование
AAS_API_KEY=aas_sk_... npx -y https://sandbox-as-a-service.com/mcp.tgzClaude 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
Инструменты
Инструмент | Что делает |
| Создаёт виртуальную машину и возвращает её id после готовности. |
| Выполняет команду оболочки от имени непривилегированного пользователя. Возвращает stdout, stderr, код выхода. |
| Записывает файл. Содержимое передаётся вне полосы, поэтому кавычки и бинарные данные сохраняются. |
| Читает файл обратно — так агент получает доступ к тому, что создал его код. |
| Выводит дерево каталогов, чтобы агент мог найти результаты выполнения. |
| Даёт серверу внутри песочницы публичный https-URL для обмена. |
| Статус, размер и срок действия. |
| Все песочницы на аккаунте, сначала новые — удобно для поиска потерянных. |
| Отодвигает срок действия, когда задача превысила тайм-аут. |
| Уничтожает её и останавливает биллинг. |
| Оставшийся кредит и недавнее использование. |
Need to keep alignment? Markdown tables don't need fixed width, but we should preserve the pipe structure. We'll use exactly the same number of columns and rows.
Now we need to output the whole translation.
Also note the heading "## The tools" -> "## Инструменты". "## Notes for agents" -> "## Примечания для агентов". "## Environment" -> "## Окружение" or "## Переменные окружения"? Since it's a table of environment variables, "## Окружение" is fine.
Also "### Claude Desktop / Claude Code" - we keep as is, because it's product names. But the heading structure is preserved.
We'll output the full translation.
Let's write the final answer.# sandbox-as-a-service-mcp
MCP сервер, который предоставляет агенту настоящую виртуальную машину Linux, которую можно сломать.
Одиннадцать инструментов: создать песочницу, выполнять в ней команды оболочки, записывать и читать файлы, просматривать результаты запуска, публиковать порт на публичном превью URL, продлевать время жизни, уничтожать её и проверять, сколько она стоила.
Каждая песочница — это отдельная виртуальная машина со своим ядром, а не контейнер, соседствующий с чужим кодом на одном хосте. Она никогда не переиспользуется между учётными записями и уничтожается по истечении срока действия, независимо от того, кто-нибудь её удалил или нет.
Использование
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_..." }
}
}
}Инструменты
Инструмент | Что делает |
| Создаёт виртуальную машину и возвращает её id после готовности. |
| Выполняет команду оболочки от имени непривилегированного пользователя. Возвращает stdout, stderr и код выхода. |
| Записывает файл. Содержимое передаётся вне канала, поэтому кавычки и бинарные данные сохраняются. |
| Читает файл обратно — так агент получает доступ к результатам. |
| Выводит дерево каталогов, чтобы агент мог найти созданные файлы. |
| Предоставляет серверу внутри песочницы публичный https-URL для доступа. |
| Статус, размер и срок действия. |
| Все песочницы аккаунта, сначала новые — удобно для поиска потерянных. |
| Откладывает срок действия, когда задача превышает лимит времени. |
| Уничтожает песочницу и прекращает начисление платы. |
| Оставшийся кредит и недавнее использование. |
Примечания для агентов
Код выполняется от имени непривилегированного пользователя.
sudoнедоступен, поэтомуapt-getне сработает; используйтеpip install --user --break-system-packagesилиnpm install— оба способа работают.run_commandожидает завершения команды. Запускайте сервер с&, иначе вызов будет держать соединение открытым до тайм-аута.Песочница уничтожается при истечении срока действия, даже если
destroy_sandboxне вызывался, так что она стоит только минуты, а не деньги. Вызовdestroy_sandboxвозвращает неиспользованные минуты.
Переменные окружения
Переменная | Описание |
| Обязательный. Ваш API-ключ. |
| Необязательный. По умолчанию |
Лицензия MIT. Сервис, с которым работает этот инструмент, находится на sandbox-as-a-service.com; документация.
Available Tools
11 toolscreate_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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Optional label to identify this sandbox later. | |
| size | No | small = 2 vCPU/4 GB, medium = 4 vCPU/8 GB, large = 8 vCPU/16 GB. Default: small. | |
| timeout_minutes | No | Destroy the sandbox automatically after this many minutes (default 15, max 1440 — 24 hours). |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| sandbox_id | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| port | Yes | The port the server listens on, e.g. 3000. | |
| sandbox_id | Yes | The id returned by create_sandbox. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| sandbox_id | Yes | ||
| additional_minutes | No | Default 15. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| sandbox_id | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Directory to list. Default /workspace. | |
| sandbox_id | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | How many to return (default 20, max 100). | |
| include_deleted | No | Include sandboxes that have already been destroyed. Useful for auditing what a run created. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| encoding | No | ||
| sandbox_id | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| cwd | No | Working directory. Default /workspace. | |
| env | No | Environment variables for this command. They are exported, so they survive chaining with && or ;. | |
| command | Yes | Shell command, e.g. `python3 script.py` or `pip install requests`. | |
| sandbox_id | Yes | The id returned by create_sandbox. | |
| timeout_ms | No | How long to wait before killing the command (default 60000, max 600000). |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | e.g. `analysis.py` or `/workspace/data/input.json`. | |
| content | Yes | File contents. | |
| encoding | No | Use 'base64' to write binary content. Default 'utf8'. | |
| sandbox_id | Yes |
TDQS
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.
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.
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.
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.
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.
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.
11 tool updates
v1.1.0- First observed
create_sandbox - First observed
destroy_sandbox - First observed
expose_port - First observed
extend_sandbox - First observed
get_sandbox - First observed
get_usage - First observed
list_files - First observed
list_sandboxes - First observed
read_file - First observed
run_command - First observed
write_file
TDQS
Scored across 11 tools
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.
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.
Eleven tools is a well-scoped size for a sandbox-as-a-service server. Each tool covers a meaningful capability without redundancy or bloat.
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
Related MCP Connectors
Linux microVM sandboxes for AI agents: run commands, files, processes, pause and wake.
Real Linux labs your AI agent deploys, routes and runs, with domains, TLS, DBs and an audit log.
- briqOAuthcloud.briq
Give your agent its own cloud: run Postgres, Redis or any Docker image on a microVM in one call.
1 Persistent Linux computers for AI agents: desktop, signed-in browser, vault, apps and shell.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to run compute tasks in secure sandboxes with optional interactive UIs, brokering between agents and isolated execution environments.Apache 2.0
- AlicenseNot gradedqualityBmaintenanceProvides a restricted Docker-based sandbox for LLM agents, enabling file operations, command execution, and local Git within an isolated runtime.20 npmMIT
- FlicenseNot gradedqualityCmaintenanceEnables AI agents to operate a persistent Linux sandbox in the cloud, running commands, managing files, using Git, and publishing artifacts through a Streamable HTTP MCP endpoint.-
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to safely run bounded, sandboxed tasks on remote machines with persistent state and reviewable artifacts.Apache 2.0