naftiko: 1.0.0-alpha2 info: label: 100ms Server-Side API — Live Streams (HLS) description: 'Start/stop HLS live streams from a 100ms room, pause/resume HLS recording, send timed metadata (ID3) into the playlist, and inspect live stream state. Self-contained Naftiko capability.' tags: - 100ms - HLS - Live Streaming created: '2026-05-25' modified: '2026-05-25' binds: - namespace: env keys: HMS_MANAGEMENT_TOKEN: HMS_MANAGEMENT_TOKEN capability: consumes: - type: http namespace: live-streams baseUri: https://api.100ms.live/v2 resources: - name: live-streams path: /live-streams operations: - { name: listlivestreams, method: GET, description: List All Live Streams, outputRawFormat: json, outputParameters: [{ name: result, type: object, value: $. }] } - name: live-stream path: /live-streams/{stream_id} operations: - name: getlivestream method: GET description: Get Live Stream outputRawFormat: json outputParameters: [{ name: result, type: object, value: $. }] inputParameters: - { name: stream_id, in: path, type: string, required: true } - name: live-stream-room-start path: /live-streams/room/{room_id}/start operations: - name: startlivestreamforroom method: POST description: Start Live Stream For Room outputRawFormat: json outputParameters: [{ name: result, type: object, value: $. }] inputParameters: - { name: room_id, in: path, type: string, required: true } - { name: body, in: body, type: object, required: true } - name: live-stream-room-stop path: /live-streams/room/{room_id}/stop operations: - name: stoplivestreamforroom method: POST description: Stop Live Stream For Room outputRawFormat: json outputParameters: [{ name: result, type: object, value: $. }] inputParameters: - { name: room_id, in: path, type: string, required: true } - name: live-stream-timed-metadata path: /live-streams/{stream_id}/timed-metadata operations: - name: sendtimedmetadata method: POST description: Send Timed Metadata outputRawFormat: json outputParameters: [{ name: result, type: object, value: $. }] inputParameters: - { name: stream_id, in: path, type: string, required: true } - { name: body, in: body, type: object, required: true } authentication: type: bearer value: '{{env.HMS_MANAGEMENT_TOKEN}}' placement: header exposes: - type: mcp namespace: live-streams-mcp port: 9090 transport: http description: MCP adapter for 100ms HLS live streams. tools: - name: hms-start-live-stream description: Start HLS live streaming for a room. hints: { readOnly: false, destructive: false, idempotent: false } call: live-streams.startlivestreamforroom with: { room_id: tools.room_id, body: tools.body } outputParameters: [{ type: object, mapping: $. }] - name: hms-stop-live-stream description: Stop HLS live streaming for a room. hints: { readOnly: false, destructive: false, idempotent: true } call: live-streams.stoplivestreamforroom with: { room_id: tools.room_id } outputParameters: [{ type: object, mapping: $. }] - name: hms-send-timed-metadata description: Inject timed (ID3) metadata into the HLS playlist. hints: { readOnly: false, destructive: false, idempotent: false } call: live-streams.sendtimedmetadata with: { stream_id: tools.stream_id, body: tools.body } outputParameters: [{ type: object, mapping: $. }] - name: hms-list-live-streams description: List HLS live streams. hints: { readOnly: true, destructive: false, idempotent: true } call: live-streams.listlivestreams outputParameters: [{ type: object, mapping: $. }]