Skip to main content
Glama

playcal_observe

Runs a brief game session, diffs editor scene state before and during play, and collects console errors; captures a screenshot only when the run fails.

Instructions

press Play, run the game a few seconds, diff the scene and collect console errors; screenshot only on red

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "playcal_observe"
  }
}

Input Schema

NameRequiredDescriptionDefault
nameNoscreenshot file name without .png (default observe)observe
readNoEditor read to diff before and during play (default "scene get_hierarchy")scene get_hierarchy
limitNomost diff entries to list (default 50)
sceneNogodot only: scene to run instead of the main scene (res://...)
shotsNowhere the red-run screenshot goes, relative to the Unity project (default .playcal/observe).playcal/observe
engineNounity talks to the open Editor; godot runs the main scene headless (default unity)unity
expectNocheck on the read during play, same syntax as playcal loop --expect. Repeatable
ignoreNofield to leave out of the diff, repeatable (default: instanceId, isDirty)
repeatNorun N times; some red and some green is inconclusive (exit 7), see playcal playtest
no_playNodon't touch Play Mode; diff two reads --seconds apart
no_shotNonever take a screenshot
secondsNohow long to let the game run before the second read (default 3)
timeoutNoseconds to wait for a ready Editor (default 120)
project_pathNoUnity project folder (needed when several Editors are open), or the Godot project folder

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.2.1

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the full burden, and it does disclose meaningful behavior: it drives Play Mode, waits a few seconds, diffs hierarchy reads, gathers console errors, and only captures a screenshot on a red/failing run. However, it omits side effects (does it exit Play Mode afterwards, does it leave the Editor in a changed state?), permission/connection prerequisites, and the pass/fail reporting shape beyond the terse 'red' shorthand.

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

Conciseness4/5

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

One dense, front-loaded sentence fragment that wastes no words and puts the primary action ('press Play') first. It is telegraphic to the point of being slightly cryptic ('screenshot only on red'), but nothing is padded or redundant.

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 14-parameter, no-annotation, no-output-schema tool, the description covers the core workflow adequately but leaves gaps: no return-value shape, no mention of how expect/ignore/repeat interact with the result, and no engine-specific caveats (Unity talks to an open Editor versus Godot running headless). Given how rich the schema is, this is workable but not complete.

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

Parameters3/5

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

Schema description coverage is 100%, so every one of the 14 parameters is already documented in the schema, including defaults for name, read, limit, seconds, timeout, and the engine enum. The description adds no parameter-level meaning beyond that, which is the baseline 3 case when the schema does the heavy lifting.

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 states a concrete sequence of verbs and resources: enter Play Mode, run for a few seconds, diff the scene, collect console errors, and screenshot only on failures. That is far more specific than the name alone, though it never explicitly contrasts itself with close siblings like playcal_playtest or playcal_loop.

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

Usage Guidelines3/5

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

Usage is only implied by the described flow; the agent can infer this is the 'run and see what breaks' tool, but the description gives no explicit when-to-use versus playcal_playtest, playcal_loop, or playcal_visual. The only routing hints live in parameter descriptions ('see playcal playtest', 'same syntax as playcal loop --expect'), not in the main description.

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