Agent development kit for WAVE, media infrastructure for the agentic internet: 5 agent templates, 10 MCP tools, an agent runtime, and framework adapters
WAVE ADK defines 13 tools with explicit Zod schemas and basic descriptions. However, critical gaps limit production readiness: (1) Descriptions are minimal (10-50 chars), well below the 194-char baseline for A+ tools. (2) Parameter descriptions lack actionable constraints, no ranges, formats, or dependency hints. (3) No output schemas documented; LLMs cannot plan downstream calls. (4) Error handling is absent; no recovery guidance or categorization. (5) Tools like wave_create_stream and wave_switch_camera combine multiple concerns (protocol selection, transition type) without clear composition. (6) No idempotency guarantees stated. (7) Kernel.sh adapter tools (browse_url, take_screenshot, run_playwright) lack input validation and error recovery patterns. Schemas are present but descriptions and error handling are production gaps.
Navigate a cloud browser to a URL and return the page content/snapshot. Uses Kernel.sh managed browsers — no local browser needed.
Execute Playwright code in a Kernel.sh cloud browser. For complex browser automation like testing embed players or monitoring dashboards.
Take a screenshot of a URL using a cloud browser. Returns base64-encoded PNG. Useful for visual QA of live stream players.
Get detailed quality analytics for a stream
Control a PTZ camera (pan, tilt, zoom, focus)
Extract a clip from a stream at specified timestamps
Descriptions are 10 - 50 characters; baseline is 194 chars. LLMs cannot determine when to select tools or distinguish similar ones (e.g., wave_monitor_stream vs wave_analyze_quality both return metrics but serve different purposes).
No output schemas documented. LLMs cannot infer what fields are returned, breaking tool chaining. E.g., wave_create_stream likely returns a stream_id, but this is not documented, agents cannot pass it to wave_monitor_stream without guessing.
Parameter descriptions lack actionable constraints. E.g., 'Protocol: webrtc, srt, rtmp, ndi' is listed in description but not enforced as enum in schema. 'Transition type: cut, mix, wipe' similarly lacks formal constraint. LLMs cannot validate inputs before calling.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 54 | <=2025-11-25 | v2 |
Create a new live stream with specified protocol and settings
Mark a point of interest for replay/highlights
Moderate a chat message (approve, flag, or block)
Get real-time quality metrics for a stream
Display a graphics overlay on the live production
Start real-time captioning on a stream
Switch the live production to a different camera source
No error handling or recovery guidance. Tools return success/failure but do not tell LLMs what to do on failure. E.g., if wave_create_stream fails due to invalid protocol, there is no guidance to retry with a different protocol or call a discovery tool.
Kernel.sh adapter tools (browse_url, take_screenshot, run_playwright) lack input validation and timeout handling. run_playwright accepts arbitrary JavaScript code with no sandbox or injection protection documented.