Roku · Capability

Roku External Control Protocol (ECP) — Query

Roku External Control Protocol (ECP) — Query. 8 operations. Lead operation: Roku Query Active App. Self-contained Naftiko capability covering one Roku business surface.

Run with Naftiko RokuQuery

What You Can Do

GET
Queryactiveapp — Roku Query Active App
/v1/query/active-app
GET
Queryappstate — Roku Query App State
/v1/query/app-state/{appid}
GET
Queryapps — Roku Query Installed Apps
/v1/query/apps
GET
Querydeviceinfo — Roku Query Device Info
/v1/query/device-info
GET
Queryappicon — Roku Query App Icon
/v1/query/icon/{appid}
GET
Querymediaplayer — Roku Query Media Player
/v1/query/media-player
GET
Querytvactivechannel — Roku Query Active TV Channel
/v1/query/tv-active-channel
GET
Querytvchannels — Roku Query TV Channels
/v1/query/tv-channels

MCP Tools

roku-query-active-app

Roku Query Active App

read-only idempotent
roku-query-app-state

Roku Query App State

read-only idempotent
roku-query-installed-apps

Roku Query Installed Apps

read-only idempotent
roku-query-device-info

Roku Query Device Info

read-only idempotent
roku-query-app-icon

Roku Query App Icon

read-only idempotent
roku-query-media-player

Roku Query Media Player

read-only idempotent
roku-query-active-tv-channel

Roku Query Active TV Channel

read-only idempotent
roku-query-tv-channels

Roku Query TV Channels

read-only idempotent

Capability Spec

external-control-protocol-query.yaml Raw ↑
naftiko: 1.0.0-alpha2
info:
  label: Roku External Control Protocol (ECP) — Query
  description: 'Roku External Control Protocol (ECP) — Query. 8 operations. Lead operation: Roku Query Active App. Self-contained
    Naftiko capability covering one Roku business surface.'
  tags:
  - Roku
  - Query
  created: '2026-05-19'
  modified: '2026-05-19'
binds:
- namespace: env
  keys:
    ROKU_API_KEY: ROKU_API_KEY
capability:
  consumes:
  - type: http
    namespace: external-control-protocol-query
    baseUri: http://{rokuDeviceIp}:8060
    description: Roku External Control Protocol (ECP) — Query business capability. Self-contained, no shared references.
    resources:
    - name: query-active-app
      path: /query/active-app
      operations:
      - name: queryactiveapp
        method: GET
        description: Roku Query Active App
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: query-app-state-appId
      path: /query/app-state/{appId}
      operations:
      - name: queryappstate
        method: GET
        description: Roku Query App State
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: appId
          in: path
          type: string
          description: The Roku channel identifier
          required: true
    - name: query-apps
      path: /query/apps
      operations:
      - name: queryapps
        method: GET
        description: Roku Query Installed Apps
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: query-device-info
      path: /query/device-info
      operations:
      - name: querydeviceinfo
        method: GET
        description: Roku Query Device Info
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: query-icon-appId
      path: /query/icon/{appId}
      operations:
      - name: queryappicon
        method: GET
        description: Roku Query App Icon
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: appId
          in: path
          type: string
          description: The Roku channel/app identifier
          required: true
    - name: query-media-player
      path: /query/media-player
      operations:
      - name: querymediaplayer
        method: GET
        description: Roku Query Media Player
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: query-tv-active-channel
      path: /query/tv-active-channel
      operations:
      - name: querytvactivechannel
        method: GET
        description: Roku Query Active TV Channel
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: query-tv-channels
      path: /query/tv-channels
      operations:
      - name: querytvchannels
        method: GET
        description: Roku Query TV Channels
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
  exposes:
  - type: rest
    namespace: external-control-protocol-query-rest
    port: 8080
    description: REST adapter for Roku External Control Protocol (ECP) — Query. One Spectral-compliant resource per consumed
      operation, prefixed with /v1.
    resources:
    - path: /v1/query/active-app
      name: query-active-app
      description: REST surface for query-active-app.
      operations:
      - method: GET
        name: queryactiveapp
        description: Roku Query Active App
        call: external-control-protocol-query.queryactiveapp
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/query/app-state/{appid}
      name: query-app-state-appid
      description: REST surface for query-app-state-appId.
      operations:
      - method: GET
        name: queryappstate
        description: Roku Query App State
        call: external-control-protocol-query.queryappstate
        with:
          appId: rest.appId
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/query/apps
      name: query-apps
      description: REST surface for query-apps.
      operations:
      - method: GET
        name: queryapps
        description: Roku Query Installed Apps
        call: external-control-protocol-query.queryapps
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/query/device-info
      name: query-device-info
      description: REST surface for query-device-info.
      operations:
      - method: GET
        name: querydeviceinfo
        description: Roku Query Device Info
        call: external-control-protocol-query.querydeviceinfo
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/query/icon/{appid}
      name: query-icon-appid
      description: REST surface for query-icon-appId.
      operations:
      - method: GET
        name: queryappicon
        description: Roku Query App Icon
        call: external-control-protocol-query.queryappicon
        with:
          appId: rest.appId
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/query/media-player
      name: query-media-player
      description: REST surface for query-media-player.
      operations:
      - method: GET
        name: querymediaplayer
        description: Roku Query Media Player
        call: external-control-protocol-query.querymediaplayer
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/query/tv-active-channel
      name: query-tv-active-channel
      description: REST surface for query-tv-active-channel.
      operations:
      - method: GET
        name: querytvactivechannel
        description: Roku Query Active TV Channel
        call: external-control-protocol-query.querytvactivechannel
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/query/tv-channels
      name: query-tv-channels
      description: REST surface for query-tv-channels.
      operations:
      - method: GET
        name: querytvchannels
        description: Roku Query TV Channels
        call: external-control-protocol-query.querytvchannels
        outputParameters:
        - type: object
          mapping: $.
  - type: mcp
    namespace: external-control-protocol-query-mcp
    port: 9090
    transport: http
    description: MCP adapter for Roku External Control Protocol (ECP) — Query. One tool per consumed operation, routed inline
      through this capability's consumes block.
    tools:
    - name: roku-query-active-app
      description: Roku Query Active App
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: external-control-protocol-query.queryactiveapp
      outputParameters:
      - type: object
        mapping: $.
    - name: roku-query-app-state
      description: Roku Query App State
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: external-control-protocol-query.queryappstate
      with:
        appId: tools.appId
      outputParameters:
      - type: object
        mapping: $.
    - name: roku-query-installed-apps
      description: Roku Query Installed Apps
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: external-control-protocol-query.queryapps
      outputParameters:
      - type: object
        mapping: $.
    - name: roku-query-device-info
      description: Roku Query Device Info
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: external-control-protocol-query.querydeviceinfo
      outputParameters:
      - type: object
        mapping: $.
    - name: roku-query-app-icon
      description: Roku Query App Icon
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: external-control-protocol-query.queryappicon
      with:
        appId: tools.appId
      outputParameters:
      - type: object
        mapping: $.
    - name: roku-query-media-player
      description: Roku Query Media Player
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: external-control-protocol-query.querymediaplayer
      outputParameters:
      - type: object
        mapping: $.
    - name: roku-query-active-tv-channel
      description: Roku Query Active TV Channel
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: external-control-protocol-query.querytvactivechannel
      outputParameters:
      - type: object
        mapping: $.
    - name: roku-query-tv-channels
      description: Roku Query TV Channels
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: external-control-protocol-query.querytvchannels
      outputParameters:
      - type: object
        mapping: $.