Skip to main content
Glama
paramount-engineering

Roku Dev Studio MCP Server

List All Known Devices

list_devices
Read-onlyIdempotent

Retrieves every Roku device Dev Studio already knows—connected, discovered, remote, or cloud emulator—without a network scan. Use it as the first step to resolve an IP or serial for other tools.

Instructions

Return every device Dev Studio already knows about — connected, discovered, remembered, remote, or RCE — without running a network scan. Read-only. Each entry: ip, serial, modelName, friendlyDeviceName, softwareVersion, source, isTabOpen, isTabFocused, isReachable. isTabOpen only means a Dev Studio tab/session exists for this device — it does NOT mean the device will respond right now (it could be powered off or off-network). Check isReachable before relying on a device to answer a live command; other tools that need to reach the device (keypress, ecp_query, rale_command, …) will themselves fail with a clear "not responding" error if it's unreachable — treat isReachable: false as a signal to tell the user to check the device rather than retrying blindly. source is local (physical, this LAN), remote (physical, via an RDS Relay location), or rce (Roku Cloud Emulator — no real IP, ip is a serial stand-in; most main-direct ops work against it directly, but sideload/delete_sideload don't — use connect_device + Dev Studio's Sideload Relay/Dev App tab for those). Use this as the first step to resolve a device argument (IP or serial) for other tools. Related tools: get_selected_device returns only the one focused device; scan_devices actively probes the network for NEW devices not yet known; connect_device opens/focuses a tab for one of these entries.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv1.0.2

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds substantial behavioral context beyond annotations: the meaning of isTabOpen vs isReachable, the source field semantics (local/remote/rce), the fact that rce devices have no real IP, and the caveat that sideload/delete_sideload don't work against rce devices. It also discloses that other tools will fail with a clear 'not responding' error, which sets expectations for downstream behavior. It doesn't describe pagination or ordering, but for a zero-parameter list tool this is minor.

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 description is long but every sentence earns its place: it covers scope, field semantics, source types, usage guidance, and sibling differentiation. It is front-loaded with the core purpose and read-only nature, then expands into necessary caveats. It could be slightly tightened, but the density of useful information justifies the length.

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?

For a zero-parameter, read-only list tool with no output schema, the description is remarkably complete. It explains the return fields, the meaning of each source type, the isReachable caveat, how to use it as a first step, and how it relates to siblings. An agent has everything it needs to call this tool correctly and interpret its results.

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?

The tool has zero parameters and schema coverage is 100% (empty object), so there are no parameter semantics to document. The description compensates by thoroughly explaining the return fields and their meanings, which is the closest equivalent to parameter semantics for a no-input tool. Baseline 4 is appropriate for a zero-parameter tool.

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 every device Dev Studio already knows about') and immediately distinguishes itself from scanning by stating 'without running a network scan.' It enumerates the exact fields returned and explicitly contrasts itself with related tools (get_selected_device, scan_devices, connect_device), so an agent can tell it apart from siblings without opening schemas.

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 description explicitly says to use this as the first step to resolve a `device` argument for other tools, and names the alternatives with their conditions: get_selected_device for the one focused device, scan_devices for actively probing new devices, connect_device for opening/focusing a tab. It also gives behavioral guidance on how to interpret isReachable and when to tell the user to check the device rather than retrying.

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