MCP server for PlayVideo API - enables AI assistants to manage videos
PlayVideo MCP has 14 well-named tools with consistent verb_noun patterns (list_, create_, delete_, get_, update_). All tools have descriptions (avg ~80 chars, within baseline 34-392). Input schemas are present and properly typed with enums for constrained fields (status, events). However, output schemas are completely undocumented, LLMs cannot predict response structure for chaining. Parameter descriptions are minimal (often 1-2 sentences). Error handling is absent from visible code. No tool annotations (readOnlyHint, destructiveHint) despite clear risk levels. Destructive operations (delete_collection, delete_video, delete_webhook) lack confirmation patterns. Security: API key properly injected via env var, not exposed as parameter.
Create a new video collection to organize your videos
Create a new webhook to receive event notifications. IMPORTANT: The secret is only returned once - save it securely!
Delete a collection and all its videos
Delete a video
Delete a webhook
Get current embed player settings (colors, controls, behavior)
No output schemas documented. LLMs cannot predict response structure (fields, types, nested objects) for any tool. Breaks tool chaining, agent cannot know if get_video returns playlistUrl or playlist_url, forcing guesswork.
Destructive operations (delete_collection, delete_video, delete_webhook) lack confirmation or dry-run patterns. No guard against accidental deletion. Agents can permanently destroy data without user confirmation.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk levels. Agents cannot distinguish safe reads from destructive writes without parsing descriptions.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 68 | 2026-07-28+ | v2 |
Get instructions for uploading a video (file uploads require external tools like curl or SDK)
Get details for a specific video including playback URLs
Get webhook details including recent delivery history
List all video collections in your PlayVideo account
List videos, optionally filtered by collection or status
List all webhooks configured for your account (requires PRO or BUSINESS plan)
Send a test event to a webhook to verify it's working
Update a webhook's URL, events, or active status
Error handling completely absent from visible code. No recovery guidance, no error classification (retryable vs fatal), no actionable error messages. apiRequest() throws generic 'API error' without context.
Parameter descriptions lack format/constraint details. E.g., 'name' in create_collection says '1-100 characters' but no validation shown. 'limit' in list_videos says 'max 100' but no minimum stated. LLMs cannot self-correct invalid input.