Skip to main content
Glama
paramount-engineering

Roku Dev Studio MCP Server

App Connector: Call Channel Function

app_function
Destructive

Trigger a single function exposed by a sideloaded Roku channel through the App Connector. Call list_app_connector_functions first to discover the function name and parameters.

Instructions

Invoke a single function on the sideloaded channel through the App Connector. Use this for any one-off function call exposed by the channel; only wrap it in an appFunction Action Script step when the call is part of a multi-step flow. The set of available functions is channel-specific — every sideloaded app exports its own. Always call list_app_connector_functions first to discover the exact name and the declared parameter list (params: [{ name, type }, …]) for the running channel before calling this tool. functionParams is a positional array with one entry per declared parameter, in declaration order. Each entry's value matches the declared type: String/Integer/Boolean/number types are primitives; roAssociativeArray is a JSON object (still wrapped in the outer array slot); roArray / roList is a JSON array (also wrapped). For a zero-arg function pass []. A named object ({ <paramName>: value }, keyed by names from list_app_connector_functions) is accepted for backward compatibility and rewritten to a positional array before the call is sent. Authors should still emit positional form: a typo in a key silently passes undefined for that slot. Auto-connects the App Connector session if needed; surfaces the call as a toast in Dev Studio. Invokes channel code, so it is not read-only and not assumed idempotent — a function may mutate app state.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
deviceNoOptional target device (IP or serial). Omit to use the focused tab.
functionNameYesThe channel function name from list_app_connector_functions.
functionParamsNoPositional array of values, one per RALE-declared parameter. Use `[]` for zero-arg functions. A named object keyed by RALE param names is also accepted and will be normalized to positional before the call.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv1.0.2

TDQS

A5/5.0
Behavior5/5

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

Matches annotations by stating 'not read-only and not assumed idempotent' and 'may mutate app state'. Adds extra context: auto-connects the App Connector session and surfaces a toast in Dev Studio, which are not in annotations. No contradictions.

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?

Every sentence serves a purpose – covering invocation, parameter format, backward compatibility, auto-connect, and side effects. Dense but not redundant; structure flows logically from usage to parameter details to behavior.

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?

Covers all aspects needed to use the tool correctly: when to use, parameter format, defaults, prerequisites, side effects, and auto-connect behavior. No output schema exists, so no return explanation required. Fully complete for the tool's complexity.

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?

Schema description coverage is 100% and the description greatly enriches meaning: explains positional array format, zero-arg usage, named-object backward compatibility, normalization to positional, and the pitfall of key typos silently passing undefined. This goes far beyond the basic schema.

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 'Invoke a single function on the sideloaded channel through the App Connector' – a specific verb and resource. Distinguishes from siblings like list_app_connector_functions (lists) and app_connector_connect (connects).

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 says 'Use this for any one-off function call' and contrasts with wrapping in an appFunction Action Script step for multi-step flows. Also instructs to always call list_app_connector_functions first, giving clear when-to-use guidance.

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