The WAVE MCP server gives an agent — Claude, Cursor, or anything else that speaks MCP — 18 tools for running live video: creating and starting streams, switching cameras, cutting clips, reading viewer numbers and usage. This catalogue is generated by asking the published server for its own tool list, so it always matches the version you install.
See the MCP server page for connecting a client and issuing a key.
Install
npx -y @wave-av/mcp-server
Current release 0.2.0.
Streams
wave_list_streams
List all streams in your WAVE account with pagination support
| Parameter | Type | Required | Description |
|---|---|---|---|
limit | integer | no | Maximum number of streams to return (1-100, default 25) |
offset | integer | no | Number of streams to skip for pagination (default 0) |
status | "active" · "idle" · "error" · "all" | no | Filter by stream status |
wave_create_stream
Create a new stream in your WAVE account
| Parameter | Type | Required | Description |
|---|---|---|---|
title | string | yes | Stream title |
description | string | no | Stream description |
protocol | "webrtc" · "srt" · "rtmp" · "hls" | no | Streaming protocol (default: webrtc) |
record | boolean | no | Enable recording for this stream (default: false) |
region | string | no | Preferred ingest region (e.g., us-east-1, eu-west-1) |
wave_start_stream
Start a stream by its ID, transitioning it to the active state
| Parameter | Type | Required | Description |
|---|---|---|---|
stream_id | string | yes | The UUID of the stream to start |
wave_stop_stream
Stop an active stream by its ID
| Parameter | Type | Required | Description |
|---|---|---|---|
stream_id | string | yes | The UUID of the stream to stop |
wave_get_stream_health
Get real-time health metrics for a stream including bitrate, frame rate, and latency
| Parameter | Type | Required | Description |
|---|---|---|---|
stream_id | string | yes | The UUID of the stream to check |
wave_get_stream_metrics
Get detailed performance metrics for a stream including bitrate, latency, quality scores, and error rates
| Parameter | Type | Required | Description |
|---|---|---|---|
stream_id | string | yes | The UUID of the stream |
period | "1h" · "6h" · "24h" · "7d" · "30d" | no | Time period for metrics aggregation (default: 24h) |
granularity | "1m" · "5m" · "1h" · "1d" | no | Data point granularity (default: 5m) |
Productions and live control
wave_list_productions
List all studio productions in your WAVE account
| Parameter | Type | Required | Description |
|---|---|---|---|
limit | integer | no | Maximum number of productions to return (1-100, default 25) |
offset | integer | no | Number of productions to skip for pagination (default 0) |
status | "draft" · "live" · "ended" · "all" | no | Filter by production status |
wave_create_production
Create a new studio production with multi-camera support
| Parameter | Type | Required | Description |
|---|---|---|---|
title | string | yes | Production title |
description | string | no | Production description |
layout | "single" · "split" · "pip" · "grid" · "custom" | no | Initial layout mode (default: single) |
stream_ids | string[] | no | Stream IDs to include as sources in the production |
record | boolean | no | Enable recording for this production (default: false) |
wave_switch_camera
Switch the live program output to a different camera/source in a Cloud Switcher session
| Parameter | Type | Required | Description |
|---|---|---|---|
switcher_id | string | yes | The Cloud Switcher session ID |
source_id | string | yes | The source to switch to (e.g., cam_1, screen_share) |
transition | "cut" · "mix" · "wipe" · "dve" | no | Transition type (default: cut) |
duration_ms | integer | no | Transition duration in ms (default: 0 for cut) |
wave_create_clip
Create a clip from a recorded stream, optionally exporting to social platforms
| Parameter | Type | Required | Description |
|---|---|---|---|
stream_id | string | yes | The stream ID to clip from |
start_time | number | yes | Clip start time in seconds |
end_time | number | yes | Clip end time in seconds |
title | string | no | Clip title |
export_to | "tiktok" · "youtube_shorts" · "instagram_reels" · "twitter"[] | no | Social platforms to auto-export to |
wave_show_graphic
Show or hide an HTML5 graphics overlay on a production
| Parameter | Type | Required | Description |
|---|---|---|---|
production_id | string | yes | The production ID |
graphic_id | string | yes | The graphic template ID |
action | "show" · "hide" · "update" | yes | Action to perform |
data | object | no | Data bindings for the graphic template |
wave_control_camera
Control a PTZ camera (pan, tilt, zoom, focus, recall preset)
| Parameter | Type | Required | Description |
|---|---|---|---|
camera_id | string | yes | The camera ID |
action | "move" · "zoom" · "focus" · "recall_preset" · "store_preset" | yes | Camera control action |
pan | number | no | Pan speed (-1 to 1) |
tilt | number | no | Tilt speed (-1 to 1) |
zoom | number | no | Zoom speed (-1 to 1) |
preset_id | string | no | Preset ID for recall/store |
wave_mark_highlight
Mark a moment in a stream as a highlight for later clipping
| Parameter | Type | Required | Description |
|---|---|---|---|
stream_id | string | yes | The stream ID |
label | string | no | Label for the highlight |
confidence | number | no | Confidence score (0-1, for AI-detected highlights) |
Audience and performance
wave_get_viewers
Get current viewer count and viewer demographics for a stream or across all streams
| Parameter | Type | Required | Description |
|---|---|---|---|
stream_id | string | no | Stream ID to get viewers for. Omit for account-wide totals. |
include_demographics | boolean | no | Include geographic and device breakdown (default: false) |
Captions and moderation
wave_moderate_chat
Moderate a chat message in a live stream (block, flag, or allow)
| Parameter | Type | Required | Description |
|---|---|---|---|
stream_id | string | yes | The stream ID |
message_id | string | yes | The chat message ID to moderate |
action | "block" · "flag" · "allow" | yes | Moderation action |
reason | string | no | Reason for moderation action |
wave_start_captions
Start real-time captions/transcription on a stream
| Parameter | Type | Required | Description |
|---|---|---|---|
stream_id | string | yes | The stream ID |
language | string | no | ISO 639-1 language code (default: en) |
provider | "deepgram" · "assemblyai" · "cohere" | no | Transcription provider (default: deepgram) |
Account
wave_get_subscription
Get current subscription details including plan, billing cycle, and feature entitlements
Takes no parameters.
wave_get_usage
Get current billing period usage including streaming minutes, storage, and bandwidth consumption
| Parameter | Type | Required | Description |
|---|---|---|---|
period | "current" · "previous" | no | Billing period to query (default: current) |
breakdown | "summary" · "daily" · "by_stream" | no | Level of usage detail (default: summary) |