Skip to main content
Glama
paramount-engineering

Roku Dev Studio MCP Server

Debugger: Get Variables

debugger_get_variables
Read-onlyIdempotent

Inspect variables in scope at any stack frame while the Roku debugger is halted, including drilling into containers to view nested values.

Instructions

Return variables in scope at a stack frame while HALTED. With no variablePath, returns the frame's locals (incl. m); each entry has name, type, value, and for containers a childCount. To drill into a container, pass its variablePath (e.g. ["m","top"]; a quoted "key" segment forces a case-sensitive AA lookup, a bare number indexes an array) — the response is [container] whose .children is the next level. Optional stackFrameIndex (default 0 = top) and threadIndex.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
deviceNoOptional. Roku IP or serial; must match a connected Dev Studio tab. Omit to use the focused tab.
threadIndexNoOptional thread index (default the stopped/primary thread).
variablePathNoOptional path segments to drill into a container (e.g. ["m","top","count"]). Omit for the frame's locals.
stackFrameIndexNoStack frame to read (default 0 = top frame).

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv1.0.2

TDQS

A4.8/5.0
Behavior5/5

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

Beyond the readOnly/idempotent annotations, the description discloses the response shape (name, type, value, childCount), the locals default when variablePath is omitted, case-sensitive AA lookup behavior, array indexing rules, and the [container].children drill-down result.

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 dense but efficient: purpose and precondition first, then default behavior and return fields, then drill-down syntax and optional parameters. No filler or repetition.

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?

With no output schema, the description supplies the essential return contract, including locals entries and container children. It covers defaults, path semantics, and the halted precondition; remaining details are either in the schema or not necessary to invoke the tool correctly.

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

Parameters5/5

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

Although schema coverage is already 100%, the description adds meaning: variablePath semantics (omitted default, quoted key vs bare number), stackFrameIndex default, and the shape of each returned variable. This materially enriches what the parameter schema alone 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 verb and resource: 'Return variables in scope at a stack frame while HALTED.' It clearly focuses on variable inspection and drilling, which distinguishes it from sibling debugger tools like debugger_get_callstack or debugger_continue.

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 states the precondition (HALTED) and explains how to use variablePath, stackFrameIndex, and threadIndex to choose a frame or drill into containers. It does not explicitly name alternatives such as debugger_evaluate, so it stops short of full 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.