The Luma MCP server demonstrates solid foundational quality with 8 well-named tools covering video generation, task management, and informational operations. Tool names follow clear verb_noun conventions (generate_video, get_task, list_actions). Descriptions are generally comprehensive and contextual, explaining WHEN to use each tool and what it returns. However, there are notable gaps: several tools lack explicit input schema validation visible in the provided code, parameter descriptions for optional fields are sometimes vague or missing default behavior clarification, and output schemas are not formally documented. The server shows good composition (tools chain well together) and security awareness (no credentials exposed). Per-tool analysis reveals inconsistency, tools like luma_generate_video have rich parameter documentation, while others like luma_get_task have minimal per-parameter detail in the visible source.
Extend an existing video with additional content. This allows you to continue a previously generated video, adding more motion and content after the original video ends. Use this when: - A generated video is too short and you want to add more - You want to continue the story or motion from a previous video - You're building a longer video piece by piece Returns: Task ID and the extended video information.
Extend an existing video using its URL. Similar to luma_extend_video, but uses the video URL instead of video ID. This is useful when you have the video URL but not the original video ID. Use this when: - You have the video URL from a previous generation - You want to extend a video but don't have the video_id Returns: Task ID and the extended video information.
Generate AI video from a text prompt using Luma Dream Machine. This is the simplest way to create video - just describe what you want and Luma will generate a high-quality AI video. Use this when: - You want to create a video from a text description - You don't have reference images - You want quick video generation For using reference images (start/end frames), use luma_generate_video_from_image instead. Returns: Task ID and generated video information including URLs, dimensions, and thumbnail.
Generate AI video using reference images as start and/or end frames. This allows you to control the video by specifying what the first frame and/or last frame should look like. Luma will generate smooth motion between them. Use this when: - You have a specific image you want to animate - You want to create a video transition between two images - You need precise control over the video's visual content At least one of start_image_url or end_image_url must be provided. Returns: Task ID and generated video information including URLs, dimensions, and thumbnail.
Output schemas not formally documented. Tools return string or untyped results without declaring expected field structure, making it difficult for LLMs to parse responses and plan downstream operations. E.g., luma_get_task returns a string representation, not a structured object with fields like video_id, status, url, etc.
Parameter validation constraints not visible in schema. timeout, callback_url, and optional boolean fields (loop, enhancement) lack explicit validation rules in the visible Pydantic definitions. E.g., timeout defaults to 300 but no min/max bounds are documented; callback_url format is not validated.
Inferred effective spec: 2026-07-28+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | A | 80 | 2026-07-28+ | v2 |
Query the status and result of a video generation task. Use this to check if a generation is complete and retrieve the resulting video URLs, thumbnails, and other metadata. Use this when: - You want to check if a generation has completed - You need to retrieve video URLs from a previous generation - You want to get the full details of a generated video Task states: - 'pending': Generation is still in progress - 'completed': Generation finished successfully - 'failed': Generation failed (check error message) Returns: Task status and generated video information including URLs, dimensions, and thumbnail.
Query multiple video generation tasks at once. Efficiently check the status of multiple tasks in a single request. More efficient than calling luma_get_task multiple times. Use this when: - You have multiple pending generations to check - You want to get status of several videos at once - You're tracking a batch of generations Returns: Status and video information for all queried tasks.
List all available Luma API actions and corresponding tools. Reference guide for what each action does and which tool to use. Helpful for understanding the full capabilities of the Luma MCP. Returns: Categorized list of all actions and their corresponding tools.
List all available aspect ratios for Luma video generation. Shows all available aspect ratio options with their use cases. Use this to understand which aspect ratio to choose for your video. Returns: Table of all aspect ratios with their descriptions and use cases.
Inconsistent parameter documentation. luma_generate_video_from_image's 'aspect_ratio' parameter says 'Usually should match your input image ratio' but provides no guidance on what to do if it doesn't. luma_extend_video_from_url's 'video_url' parameter claims it must be 'valid video URL from previous Luma generation' but no format validation or error recovery guidance provided.
No error handling guidance in tool descriptions. When a video generation fails, times out, or returns invalid JSON, the descriptions do not explain what the LLM should do next (retry, call a different tool, ask user). This violates recovery-guide and error-classification patterns.
Missing batch operation limits. luma_get_tasks_batch accepts task_ids array with description 'Maximum recommended batch size is 50 tasks' but this is advisory, not enforced. No explicit schema constraint (maxItems: 50) visible; no error message if exceeded.
No idempotency declarations. Tools like luma_generate_video and luma_extend_video perform write operations but lack idempotentHint annotation or documentation stating whether re-running with identical parameters will generate duplicate videos or return cached results.