naftiko: 1.0.0-alpha2 info: label: Roku External Control Protocol (ECP) — Diagnostics description: 'Roku External Control Protocol (ECP) — Diagnostics. 5 operations. Lead operation: Roku Query App State. Self-contained Naftiko capability covering one Roku business surface.' tags: - Roku - Diagnostics 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-diagnostics baseUri: http://{rokuDeviceIp}:8060 description: Roku External Control Protocol (ECP) — Diagnostics business capability. Self-contained, no shared references. resources: - 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-chanperf path: /query/chanperf operations: - name: querychanperf method: GET description: Roku Query Channel Performance outputRawFormat: json outputParameters: - name: result type: object value: $. - name: query-r2d2-bitmaps path: /query/r2d2-bitmaps operations: - name: queryr2d2bitmaps method: GET description: Roku Query R2D2 Bitmaps outputRawFormat: json outputParameters: - name: result type: object value: $. - name: query-registry-appId path: /query/registry/{appId} operations: - name: queryregistry method: GET description: Roku Query Registry outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: appId in: path type: string description: The Roku channel identifier required: true - name: query-sgnodes-all path: /query/sgnodes/all operations: - name: querysgnodesall method: GET description: Roku Query SceneGraph Nodes outputRawFormat: json outputParameters: - name: result type: object value: $. exposes: - type: rest namespace: external-control-protocol-diagnostics-rest port: 8080 description: REST adapter for Roku External Control Protocol (ECP) — Diagnostics. One Spectral-compliant resource per consumed operation, prefixed with /v1. resources: - 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-diagnostics.queryappstate with: appId: rest.appId outputParameters: - type: object mapping: $. - path: /v1/query/chanperf name: query-chanperf description: REST surface for query-chanperf. operations: - method: GET name: querychanperf description: Roku Query Channel Performance call: external-control-protocol-diagnostics.querychanperf outputParameters: - type: object mapping: $. - path: /v1/query/r2d2-bitmaps name: query-r2d2-bitmaps description: REST surface for query-r2d2-bitmaps. operations: - method: GET name: queryr2d2bitmaps description: Roku Query R2D2 Bitmaps call: external-control-protocol-diagnostics.queryr2d2bitmaps outputParameters: - type: object mapping: $. - path: /v1/query/registry/{appid} name: query-registry-appid description: REST surface for query-registry-appId. operations: - method: GET name: queryregistry description: Roku Query Registry call: external-control-protocol-diagnostics.queryregistry with: appId: rest.appId outputParameters: - type: object mapping: $. - path: /v1/query/sgnodes/all name: query-sgnodes-all description: REST surface for query-sgnodes-all. operations: - method: GET name: querysgnodesall description: Roku Query SceneGraph Nodes call: external-control-protocol-diagnostics.querysgnodesall outputParameters: - type: object mapping: $. - type: mcp namespace: external-control-protocol-diagnostics-mcp port: 9090 transport: http description: MCP adapter for Roku External Control Protocol (ECP) — Diagnostics. One tool per consumed operation, routed inline through this capability's consumes block. tools: - name: roku-query-app-state description: Roku Query App State hints: readOnly: true destructive: false idempotent: true call: external-control-protocol-diagnostics.queryappstate with: appId: tools.appId outputParameters: - type: object mapping: $. - name: roku-query-channel-performance description: Roku Query Channel Performance hints: readOnly: true destructive: false idempotent: true call: external-control-protocol-diagnostics.querychanperf outputParameters: - type: object mapping: $. - name: roku-query-r2d2-bitmaps description: Roku Query R2D2 Bitmaps hints: readOnly: true destructive: false idempotent: true call: external-control-protocol-diagnostics.queryr2d2bitmaps outputParameters: - type: object mapping: $. - name: roku-query-registry description: Roku Query Registry hints: readOnly: true destructive: false idempotent: true call: external-control-protocol-diagnostics.queryregistry with: appId: tools.appId outputParameters: - type: object mapping: $. - name: roku-query-scenegraph-nodes description: Roku Query SceneGraph Nodes hints: readOnly: true destructive: false idempotent: true call: external-control-protocol-diagnostics.querysgnodesall outputParameters: - type: object mapping: $.