Skip to main content
Glama
wave-av

WAVE MCP Server

Official
by wave-av

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
WAVE_API_KEYYesYour WAVE API key
WAVE_BASE_URLNoAPI base URLhttps://wave.online

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}
resources
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
wave_list_streamsA

List streams in your WAVE account (GET /v1/streams), with pagination and status filtering

wave_create_streamC

Create a new stream (POST /v1/streams) with a Cloudflare Stream live input

wave_start_streamA

Start a stream by its ID (POST /v1/streams/{id}/start)

wave_stop_streamB

Stop an active stream by its ID (POST /v1/streams/{id}/stop)

wave_get_stream_healthA

Get the current status document for a stream (GET /v1/streams/{id}/status): connection state, viewer count, and quality indicators

wave_get_stream_metricsA

Get analytics for a single stream (GET /v1/streams/{id}/analytics): views, watch time, and geographic/device breakdown over an optional date range

wave_mark_highlightA

Mark a moment in a stream as a highlight for later clipping (POST /v1/streams/{id}/highlights)

wave_list_productionsB

List multi-camera productions in your WAVE account (GET /v1/productions)

wave_create_productionB

Create a new multi-camera production (POST /v1/productions)

wave_get_viewersA

Get account-wide viewer engagement analytics (GET /v1/analytics/engagement) over an optional date range

wave_get_subscriptionA

Get the current billing account (GET /v1/billing): plan, Stripe customer status, and subscription state

wave_get_usageA

Get billed usage for a date range (GET /v1/billing/usage), defaulting to the current month

wave_switch_cameraC

Switch the program or preview bus to a different camera index in a multi-camera production (POST /v1/productions/{id}/camera)

wave_create_clipA

Create a clip from a recording (POST /v1/clips). source is a recording ID; in and, optionally, out/duration are time strings like "5s" or "2m"

wave_show_graphicA

Show or hide a graphics overlay in a production (POST /v1/productions/{id}/overlay)

wave_control_cameraA

Send a control command to a managed camera (POST /v1/cameras/{id}/control). command selects the variant; supply only the fields that variant needs: set_iris/set_focus/set_zoom/set_gain use value; set_white_balance uses temperature+tint; set_shutter uses angle; set_audio_level uses channel+level; recall_preset uses preset_id; save_preset uses name+slot; start_recording/stop_recording/start_prerecord/autofocus_trigger take no extra fields

wave_moderate_chatA

Moderate a chat message in a live stream (POST /v1/moderate): block, flag, or allow it

wave_start_captionsA

Transcribe an audio clip and optionally run a fast-LLM step over the transcript (POST /v1/live/pipeline, multipart). This processes ONE provided audio chunk through WAVE's live pipeline — it does not attach a persistent caption feed to a live stream. Requires the account's live pipeline feature to be enabled; a 404 means it is not armed for this account

wave_voice_converseA

Drive a full headless conversation with the WAVE voice agent: bind the agent to a room, send a WAV of the caller's speech (16-bit LE 48 kHz PCM, mono or stereo), and receive the agent's spoken reply as raw 16-bit LE 48 kHz stereo PCM written to outPath. No browser, no WebRTC.

wave_design_extractB

Run @wave-av/pen-extract's all extraction pipeline on a .pen board (plates/tokens/geometry/copy/components/receipts/frames/manifest). Returns the manifest.json (files, sha256s, owed).

wave_design_contractA

Compose a design-contract.json from an already-extracted pen-extract dir, then validate it against the schema + acceptance-tests catalogue. Returns the validator line, key counts, and the written path.

wave_design_measureA

Run @wave-av/loc-study's measure on an image (masked by geometry.json when given) or a rasterized plate SVG, optionally cropped to a region. Returns the measurement JSON (bokashi/keyblock/palette/composition).

wave_design_contract_checkA

Validate an existing design-contract.json against the schema + acceptance-tests catalogue, no compose.

wave.askA

Propose a WAVE flow (product + MCP tool + price shape) for a media-processing goal stated in plain language (captions/clips/dub/realtime/identity/x402/...). Reads only: checks a bundled, measured snapshot of the product/skill/tool manifests (knowledge/*.json) — never the live network. Never executes: calls no other tool, signs no payment, and makes no side-effecting or network request. Returns a proposal object for you to call yourself; always carries the literal executes: false and never a model field (no sourced Dispatch model catalog exists). See skills/wave-ask/SKILL.md for the full contract.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription
streamA WAVE stream with its configuration and status
productionA WAVE studio production session

TDQS

A3.5/5.0

Scored across 24 tools

Disambiguation5/5

Each tool maps to a distinct resource/action pair: design extraction, contract validation, stream lifecycle, camera control, billing reads, and analytics. Even similar-sounding tools like wave_design_contract vs wave_design_contract_check are clearly separated by compose-vs-validate semantics, and wave_get_viewers vs wave_get_stream_metrics are distinguished by account-wide vs single-stream scope.

Naming Consistency4/5

Most tools follow a consistent wave_<verb>_<noun> pattern across streams, productions, billing, and camera actions. Minor deviations like wave_design_contract (noun as operation), wave_voice_converse (noun-verb order), and wave.ask (dot separator instead of underscore) keep it from a 5.

Tool Count3/5

With 24 tools spanning design, productions, streams, billing, camera control, captions, voice, and a meta-planning tool, the server feels like an API grab-bag rather than a tightly scoped set. Most tools have a concrete purpose, but the count is on the heavy side for an MCP server.

Completeness3/5

Core workflows are present for stream lifecycle, production switching, design extraction/validation, analytics, and camera commands. However, there are notable gaps: wave_create_clip and wave_control_camera depend on recording/camera IDs with no discovery tool, and most resources lack update/delete operations.

Maintenance

ActivityActive
ResponsivenessUnresponsive