Skip to main content
Glama

Read the sandbox state

get_sandbox_state
Read-onlyIdempotent

The game’s sandbox — a public page anyone with the link can play: site (link, status, live revision), or null if never published — a sandbox Playgama blocked is shown with status BLOCKED even then; what is live now is always site.revision, and how a publish request went is get_publications. With archiveId it adds publish: allowed, reason, message and the refusal’s own fields (failedAt, details, emptySlots, limit/used/resetsAt) — the refusal publish_sandbox would give, in the same words — changeStatus (CHANGED: this archive or the form differs from the live revision; UNCHANGED: they match, and a publish still builds and publishes them again as a new revision; UNKNOWN: cannot tell; none of them refuses) and archiveChanged.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "applicationId": "<applicationId>"
    },
    "name": "get_sandbox_state"
  }
}

Input Schema

NameRequiredDescriptionDefault
archiveIdNoOptional. When given, the answer also says whether publishing this archive would be refused and whether it differs from the live revision
applicationIdYesGame id from list_applications

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / applicationId / description
      Previous value: -"Application (game) id, as returned by list_applications"New value: +"Game id from list_applications"
  2. Changed1 schema field changed
    • changedInput schema / properties / archiveId / description
      Previous value: -"Optional. When given, the answer also says whether publishing this archive would be refused and whether it would create a new revision"New value: +"Optional. When given, the answer also says whether publishing this archive would be refused and whether it differs from the live revision"
  3. First observed

TDQS

A4.1/5.0
Behavior5/5

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

Beyond the read-only/idempotent annotations, the description discloses important behavior: `site` is null if never published, blocked sandboxes still show `BLOCKED`, and live revision is always `site.revision`. With `archiveId` it adds detailed refusal fields and explains `changeStatus` values (CHANGED, UNCHANGED, UNKNOWN) and `archiveChanged`, which is substantial behavioral context not available from annotations or schema.

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

Conciseness3/5

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

The content is information-dense and nearly every clause is relevant, but it is delivered as one long, heavily punctuated sentence with nested em dashes and parentheticals. It is front-loaded around `site` and then `archiveId`, yet readability and scanability suffer. It is appropriately sized for the complexity but structurally weak.

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 no output schema, the description carries the burden of explaining return values, and it does so for the main fields: `site`, `publish`, `changeStatus`, and `archiveChanged`. It does not exhaustively enumerate every possible `site.status` value or error condition, but it covers what an agent needs to interpret the core response.

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, but the description adds real meaning for `archiveId`: it triggers a publish-refusal preview, adds `changeStatus`, and returns the refusal fields that `publish_sandbox` would produce. It adds less for `applicationId`, but the schema already documents that parameter.

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 clearly identifies the resource: the game's sandbox public page, including `site` link/status/live revision and optional `publish`/`changeStatus` data when `archiveId` is supplied. It distinguishes itself from `get_publications` for publish history and from `publish_sandbox` for refusal behavior. The purpose is specific, though the run-on prose makes it less immediately clear than a concise verb-first statement would.

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 implicitly defines when to use the tool: to read current sandbox state, and with `archiveId` to preview whether a publish would be refused. It routes publish-history questions to `get_publications` and describes the refusal as the one `publish_sandbox` would give. It does not explicitly address when not to use it or how it differs from siblings like `get_sandbox_share` and `get_sandbox_traffic`.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources