MCP server exposing the Wan 3.0 Python client as agent tools for AI video generation.
Server has 4 tools with complete input schemas and descriptions present, but quality is uneven. All tools have actionable descriptions (avg ~120 chars) and properly typed parameters with defaults. However, there are critical gaps in output schema documentation, error handling guidance, and composition patterns. Tool naming follows verb_noun convention but descriptions could better explain WHEN to use each tool vs alternatives. No parameter validation constraints (enums, ranges) are enforced. Output is serialized to JSON strings rather than structured objects. The API is async (returns request_id) but lacks guidance on polling strategy or timeout behavior.
Get the status and outputs for a Wan generation job.
Animate a source image URL into a Wan video with synchronized audio.
Generate a Wan video conditioned on up to 10 reference images, 5 reference videos, and 5 reference audios.
Generate a Wan video with synchronized audio from a descriptive text prompt.
Output schemas not documented. Tools return JSON strings via json.dumps(), but LLM has no visibility into response structure (fields, types, nested objects). This forces the LLM to parse unstructured text and guess at field names for downstream operations.
No error handling or recovery guidance. Tools can fail (invalid API key, network errors, malformed requests) but provide no actionable error messages. An LLM receiving a failure has no guidance on whether to retry, ask the user, or try an alternative tool.
Parameter constraints missing. resolution, aspect_ratio, and duration parameters accept any string/int but have implicit constraints (e.g. resolution must be '720p', '1080p', etc.; duration bounded 1-60 seconds). No enums or validation. LLMs will hallucinate invalid values.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 56 | 2026-07-28+ | v2 |
Async job pattern not documented. text_to_video, image_to_video, and reference_to_video submit async jobs and return request_id. LLM has no guidance on polling interval, timeout, or how to use get_task_status. Missing dependency hint: 'After calling text_to_video, poll get_task_status until status is completed.'
No tool composition guidance. It is unclear whether an LLM should call reference_to_video or image_to_video for a given task. Tool descriptions do not explain when to prefer one over the other. reference_to_video supports multiple reference types; image_to_video only animates a single image. This distinction is not made explicit.
Optional array parameters lack cardinality constraints. images_list, videos_list, audios_list are documented as 'up to 10', 'up to 5', etc., but these constraints are in the description only. No schema validation. LLMs may pass oversized arrays.