Python wrapper for the Gemini Omni Flash any-to-any video generation API exposed as MCP tools.
Server exposes 6 tools with complete input schemas and descriptions. All tools have verb-noun naming (text_to_video, image_to_video, video_edit, create_audio_profile, create_character_profile, get_task_status). Schemas are well-formed with types and defaults. However, descriptions are terse (10-80 chars), lack context on WHEN to use each tool, and omit error recovery guidance. Parameter descriptions are minimal, e.g., 'Descriptive text prompt' lacks constraints on length or content. No output schema documentation. No error handling patterns visible. Tools lack idempotency hints or confirmation steps for destructive operations (video_edit, create_*). Composition is reasonable but video_edit's optional video_url and image_urls lack clarity on mutual exclusivity.
Create a reusable Gemini Omni voice profile from a preset voice.
Create a reusable Gemini Omni character profile from a reference image.
Get the status and outputs for a Gemini Omni generation job.
Animate 1-7 reference image URLs into a Gemini Omni video with synchronized audio.
Generate a Gemini Omni video with synchronized audio from a descriptive text prompt.
Restyle, relight, or rewrite a source video clip from a text edit prompt.
Descriptions are too brief (10-80 chars) and lack context. 'Generate a Gemini Omni video with synchronized audio from a descriptive text prompt' does not explain WHEN to use text_to_video vs image_to_video, what 'synchronized audio' means, or what the tool returns. LLMs cannot reliably select the right tool without richer context.
Parameter descriptions are minimal and lack constraints. 'Descriptive text prompt' does not specify length limits, content restrictions, or examples. 'Video duration in seconds' lacks min/max bounds (is 1 second valid? 3600?). 'Preset voice to use' does not enumerate valid preset voices. LLMs will hallucinate invalid values.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 55 | 2026-07-28+ | v2 |
No output schema documentation. Tools return JSON strings (via json.dumps) but the structure of that JSON is not documented. LLMs cannot plan downstream calls or extract fields without knowing what fields exist in the response. E.g., does text_to_video return {request_id, status, video_url} or something else?
video_edit has optional video_url and image_urls but does not document mutual exclusivity or which combinations are valid. Description says 'Provide video_url and/or image_urls' but does not clarify if both are required, one is required, or both are optional. LLMs will guess and pass invalid combinations.
No error handling guidance. Tools return raw API responses (json.dumps of _api() calls) with no recovery hints. If an API call fails, the LLM sees a raw error and has no guidance on whether to retry, call a different tool, or ask the user. No actionable error messages.