Local stdio MCP server for the Volcengine ARK Seedance 2.0 video generation API.
Three well-defined tools with complete schemas, clear descriptions, and proper annotations. seedance_create_task has comprehensive parameter documentation with enums, ranges, and role-based object structures. seedance_check_task and seedance_usage_guide are simpler but well-described. Tool names follow verb_noun convention. Error handling includes validation logic and API error formatting. Main gaps: descriptions could be more concise (seedance_create_task description is 234 chars, above the 200-char sweet spot); output schemas are documented in descriptions but not formally in JSON Schema; no pagination or batch operations (though not applicable here); error messages could be more actionable for LLM recovery.
Query the status of a Seedance 2.0 task by task_id. Returns running / succeeded / failed / other. On success returns video_url (and last_frame_url if return_last_frame was true). Generated URLs expire within ~24h - download promptly.
Submit a Seedance 2.0 video generation task to the Volcengine ARK API and return the task_id immediately. Does NOT wait for the video to render - poll seedance_check_task afterwards. Reference media URLs must be publicly reachable.
Returns the canonical usage guide for the Seedance 2.0 MCP: standard create -> wait -> check workflow, model choices, parameter reference, and important caveats. Call this before your first seedance_create_task.
Output schemas not formally documented in JSON Schema format. seedance_create_task and seedance_check_task return structuredContent with fields like task_id, status, video_url, but these are not declared in an outputSchema property. LLMs cannot reliably parse undocumented output structures.
seedance_create_task description is 234 characters, above the 200-char sweet spot. Verbose descriptions waste tokens and bury key details. Recommend: 'Submit a Seedance 2.0 video generation task and return task_id immediately. Does NOT wait for rendering, poll seedance_check_task afterwards. Reference media URLs must be publicly reachable.' (~140 chars).
Error messages in formatApiError() are generic. When validation fails (e.g., audio without images), the error 'Seedance 2.0 does not support pure-text + audio generation' is clear, but API errors may not guide LLM recovery. Add: 'Try adjusting parameters or check Seedance API status.' for non-validation errors.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 61 | 2025-06-18+ | v2 |
No idempotency guarantee documented for seedance_create_task. The tool is marked idempotentHint=false, which is correct (submitting twice creates two tasks), but no guidance on how to safely retry or deduplicate. Consider: 'Submitting the same prompt twice creates separate tasks. Store task_id to avoid duplicates.'
seedance_check_task returns raw API response in structuredContent.raw field. This may include verbose metadata, timestamps, or internal fields that dilute signal. Consider stripping to only: task_id, status, video_url, last_frame_url, fail_reason.