Skip to main content
Glama
paramount-engineering

Roku Dev Studio MCP Server

Deep-Link into an App

deep_link

Launch a Roku app directly into a specific movie, episode, or series by providing contentId and mediaType. Uses ECP deep-link to foreground the app on the requested content, including extra channel parameters.

Instructions

Launch an app straight into a specific piece of content via ECP Deep-Link (contentId + mediaType, plus any extra params the channel expects). Equivalent to /launch/?contentId=...&mediaType=...&. Changes device state (foregrounds the app on the requested content). Use this when you have a content id to open; to just open an app to its home screen use launch_app instead.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
appIdYesChannel id to launch (e.g. "837" for YouTube, "dev" for the sideloaded Dev App). Discover ids with ecp_query "/query/apps".
deviceNoTarget device — IP (e.g. "192.168.1.154") or serial (e.g. "X00046N6S6F"). Omit to use the focused device.
paramsNoExtra key/value query params beyond contentId/mediaType, for channels that expect additional launch args (e.g. { "season": "2" }).
contentIdNoApp-specific content identifier to deep-link to (the value the channel expects for this title/episode). Omit for a plain launch.
mediaTypeNoContent kind, e.g. "movie", "episode", "series", "season", "short-form".

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changedv1.0.2
    • addedInput schema / properties / appId / description
      Added value: +"Channel id to launch (e.g. \"837\" for YouTube, \"dev\" for the sideloaded Dev App). Discover ids with ecp_query \"/query/apps\"."
    • addedInput schema / properties / contentId / description
      Added value: +"App-specific content identifier to deep-link to (the value the channel expects for this title/episode). Omit for a plain launch."
    • changedInput schema / properties / mediaType / description
      Previous value: -"e.g. \"movie\", \"episode\", \"series\"."New value: +"Content kind, e.g. \"movie\", \"episode\", \"series\", \"season\", \"short-form\"."
    • addedInput schema / properties / params
      Added value: +{
      +  "additionalProperties": {
      +    "type": "string"
      +  },
      +  "description": "Extra key/value query params beyond contentId/mediaType, for channels that expect additional launch args (e.g. { \"season\": \"2\" }).",
      +  "type": "object"
      +}
  2. First observedv1.0.1

TDQS

A4.3/5.0
Behavior4/5

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

States the side effect ('Changes device state (foregrounds the app)'), which is valuable context beyond the annotations. Does not contradict the annotations.

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?

Two sentences containing essential information without fluff, though the first sentence is dense and could be split for readability.

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?

Provides enough context for an agent to call correctly, including the URL equivalent and explicit distinction from sibling. No output schema is present, but the action's return value is not critical for invocation.

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 covers all 5 parameters with detailed descriptions. The tool description repeats the contentId/mediaType/params pattern but adds little beyond the schema, so baseline 3 is appropriate.

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?

Clearly states it launches an app into specific content via ECP deep-link, and explicitly differentiates from launch_app by contrasting deep-link vs. home-screen launch.

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?

Explicitly provides when-to-use ('when you have a content id to open') and when-not-to-use ('to just open an app to its home screen use launch_app instead'), plus a concrete URL pattern.

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