Skip to main content
Glama
AstralVoidZ
by AstralVoidZ

ppsspp_frame_snapshot

Pause a PPSSPP session, capture PC, CPU registers, and optional state probes, then resume automatically in one call.

Instructions

PURPOSE: One-call paused scene snapshot — pause (unless already paused), capture pc + registers + optional named probes, then resume.

USAGE: session_id; probes = optional comma-separated state_observer registry names; want_registers default true. Prefer this over a manual pause + query(registers) + resume sequence.

ROUTING: pause+capture+resume in one call -> here; cheap PC-only check -> ppsspp_query(action='register', name='pc', safe=true); recurring sampled probes -> ppsspp_state_observer. BEHAVIOR: STATE-CHANGE. The session lock is held for the whole call (pause→capture→resume is short). A CPU we paused is resumed before returning; an already-paused CPU stays paused. A failing capture never leaves the game frozen.

RETURNS: {was_stepping, resumed, pc, trust_level, registers, probes} — registers/probes keys are ALWAYS present; they carry null when opted out (want_registers=false / probes omitted) — nullable-key contract, 2026-09-08.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
probesNoOptional comma-separated state_observer registry probe names to capture alongside the CPU state (empty = none).
session_idYesActive session ID.
want_registersNoInclude the full CPU register dump (GPR/FPU/VFPU).

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
pcNoProgram counter, hex string (high trust).
probesNostate_observer capture block (when requested).
resumedNoTrue when the tool resumed a CPU it had paused (an already-paused CPU is left paused).
registersNoFull GPR/FPU/VFPU register dump (when requested).
trust_levelNosafe_get_pc trust level.
was_steppingNoTrue when the CPU was already paused at entry.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only declare readOnlyHint=false, idempotentHint=false, destructiveHint=false. The description goes well beyond them: it discloses the session-lock scope, that a CPU it paused is resumed before returning while an already-paused CPU stays paused, and that a failing capture never leaves the game frozen — exactly the safety contract an agent needs for a state-mutating call.

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

Conciseness4/5

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

The PURPOSE/USAGE/ROUTING/BEHAVIOR/RETURNS layout is front-loaded and scannable, with the routing decision placed early. It is slightly verbose, and the RETURNS block partially duplicates the existing output schema, but each section still earns its place.

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

Completeness5/5

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

Given an output schema already exists, the description needn't restate return fields, yet its nullable-key contract note and behavior guarantees are relevant extras. Routing, preconditions, failure behavior, and pause/resume semantics are all covered for a short state-mutating snapshot tool.

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

Parameters3/5

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

Schema description coverage is 100% and every parameter already carries a description and default, so the baseline is 3. The description's USAGE line largely restates the schema (probes = comma-separated registry names, want_registers default true) rather than adding syntax or format detail beyond it.

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 PURPOSE line gives a specific verb+resource ('paused scene snapshot') and spells out the full sequence (pause, capture pc + registers + optional probes, resume). Siblings like ppsspp_query and ppsspp_state_observer are explicitly named as alternatives, so the agent can distinguish this tool without opening a schema.

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?

The ROUTING line states exactly when to use this tool ('pause+capture+resume in one call') and names two alternatives with their triggering conditions ('cheap PC-only check -> ppsspp_query', 'recurring sampled probes -> ppsspp_state_observer'). Nothing is left to inference.

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