MCP server for managing Dacast video streaming platform resources including channels, playlists, simulcast destinations, and media assets
The server has 13 well-defined tools with proper JSON Schema, good naming conventions (verb_noun pattern), and detailed descriptions. However, there are systematic gaps in parameter descriptions, missing error handling guidance, and incomplete output documentation. Most tools include required parameters with proper types and enums, but some descriptions are generic or lack actionable context. The server demonstrates solid foundational quality but falls short of production-grade polish in discovery and error scenarios.
Add content to playlist. Content may be added to playlist with some delay. Response schema: {"id":"","title":"","description":null,"asset_id":"","autoplay":false,"company_url":"","content":{"list":[]},"countdown_date":null,"creation_date":"","enable_payperview":false,"enable_subscription":false,"online":null,"password":null,"save_date":"","share_code":null,"share_link":""}
Create channel (stream). If you create an ABR channel, you are required to notify users of an additional fee for channels with fewer than 5 viewers. Response schema: {"id":"","title":"","description":null,"asset_id":"","autoplay":false,"company_url":"","config":{"publishing_point_primary":null,"publishing_point_backup":null,"stream_name":null},"countdown_date":null,"creation_date":"","enable_coupon":false,"enable_payperview":false,"enable_subscription":false,"hls":"","live_recording_enabled":false,"live_dvr_enabled":false,"online":null,"online_since":null,"online_since_date":null,"password":null,"save_date":"","share_code":null,"share_link":""}
Create playlist. Response schema: {"id":"","title":"","description":null,"asset_id":"","autoplay":false,"company_url":"","content":{"list":[]},"countdown_date":null,"creation_date":"","enable_payperview":false,"enable_subscription":false,"online":null,"password":null,"save_date":"","share_code":null,"share_link":""}
Add a simulcast destination to a channel (stream) Response schema: {}
No error handling guidance in tool descriptions. Tools do not document what happens on invalid input, missing resources, or API failures. LLMs cannot recover from errors without explicit recovery instructions.
Undocumented response schemas and missing output field descriptions. create_simulcast_destination_v1 returns empty object '{}' with zero documentation. Other tools show schema structure but do not describe what each field means, making it hard for LLMs to extract needed data for follow-up calls.
Parameter descriptions lack specificity on valid ranges, formats, and error cases. Examples: no validation range for 'per_page' beyond enum constraint (should have min=1, max=100); date format examples given but pattern not enforced; image URL validation rules buried in prose instead of formal constraints.
Inferred effective spec: 2025-06-18+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 68 | 2025-06-18+ | v2 |
| 2026-03-09 | F | 0 | - | v1 |
Get channel (stream) by ID. Response schema: {"id":"","title":"","description":null,"asset_id":"","autoplay":false,"company_url":"","config":{"publishing_point_primary":null,"publishing_point_backup":null,"stream_name":null},"countdown_date":null,"creation_date":"","enable_coupon":false,"enable_payperview":false,"enable_subscription":false,"hls":"","live_recording_enabled":false,"live_dvr_enabled":false,"online":null,"online_since":null,"online_since_date":null,"password":null,"save_date":"","share_code":null,"share_link":""}
Get playlist by ID. Response schema: {"id":"","title":"","description":null,"asset_id":"","autoplay":false,"company_url":"","content":{"list":[]},"countdown_date":null,"creation_date":"","enable_payperview":false,"enable_subscription":false,"online":null,"password":null,"save_date":"","share_code":null,"share_link":""}
Returns a paginated list of all channels (streams). Response schema: {"data":[],"page_number":0,"page_size":0,"total_items":0}
Returns a paginated list of all playlists. Response schema: {"data":[],"page_number":0,"page_size":0,"total_items":0}
Set playlist content position. Response schema: {"id":"","title":"","description":null,"asset_id":"","autoplay":false,"company_url":"","content":{"list":[]},"countdown_date":null,"creation_date":"","enable_payperview":false,"enable_subscription":false,"online":null,"password":null,"save_date":"","share_code":null,"share_link":""}
Update channel (stream). You MUST obtain information about the stream and find out the values of the online, live_recording_enabled, and live_dvr_enabled fields before calling this function using get channel or list_channels if you do not intend to change them. Some fields, such as recording and dvr, are not updated instantly, so the resulting object may contain incorrect information about this state immediately after the update. Response schema: {"id":"","title":"","description":null,"asset_id":"","autoplay":false,"company_url":"","config":{"publishing_point_primary":null,"publishing_point_backup":null,"stream_name":null},"countdown_date":null,"creation_date":"","enable_coupon":false,"enable_payperview":false,"enable_subscription":false,"hls":"","live_recording_enabled":false,"live_dvr_enabled":false,"online":null,"online_since":null,"online_since_date":null,"password":null,"save_date":"","share_code":null,"share_link":""}
Update playlist. You MUST obtain information about playlist and find out the values of the online field before calling this function using get_playlist or list_playlists if you do not intend to change them. Response schema: {"id":"","title":"","description":null,"asset_id":"","autoplay":false,"company_url":"","content":{"list":[]},"countdown_date":null,"creation_date":"","enable_payperview":false,"enable_subscription":false,"online":null,"password":null,"save_date":"","share_code":null,"share_link":""}
Upload splashscreen image for a given resource (playlist, channel). You must submit either the images as http(s) public URL to the image. File size limit is 10MB, maximum size 5000x5000px. If you cannot send a public link to what the user is attached, do not attempt to find a replacement.
Upload thumbnail image for a given resource (playlist, channel). You must submit either the images as http(s) public URL to the image. File size limit is 10MB, maximum size 5000x5000px. If you cannot send a public link to what the user is attached, do not attempt to find a replacement.
No documentation of whether tools are idempotent, retryable, or have side effects. Agents need to know which tools are safe to retry. For example: is calling create_channel twice with the same title a duplicate or an error? Is add_content_to_playlist idempotent?
ID vs. name ambiguity. Tools accept 'id' parameters (e.g., get_channel, update_channel) but descriptions do not clarify: can users pass human-readable names, or only opaque IDs? If only IDs, agents must call list_channels first to discover IDs, adding latency.
Parameter naming inconsistency: image upload tools use 'image_url' but description calls it 'URL of the image'. Response schema fields like 'publishing_point_primary' vs 'stream_name' are inconsistently named.
Two nearly identical tools (upload_thumbnail_v1, upload_splashscreen_v1) could be merged into a single parameterized tool, reducing cognitive load for LLM tool selection.