{"serverId":"mcp-registry/io.github.egocen-vivideo/vivideo","tools":[{"name":"check_account","fixed":{"name":"check_account","description":"Get the account plan, premium status, and remaining credit balance. Use this to decide whether the user can generate a video (rendering needs a premium plan and enough credits). Returns plan, premium, credits, free_video_available, and links (upgrade / buy_credits). Cheap and safe to call often.","inputSchema":{"type":"object","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":107,"tokensAfter":107},{"name":"check_configuration","fixed":{"name":"check_configuration","description":"Check whether a Vivideo API key is present on this request. Call this FIRST. Returns { configured: boolean }. If false, ask the user to add an Authorization: Bearer vv_live_... header to the MCP server config (a key from https://app.vivideo.ai/account/api-keys). Never asks for or exposes the key.","inputSchema":{"type":"object","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":109,"tokensAfter":109},{"name":"create_auto_video","fixed":{"name":"create_auto_video","description":"Create a video in AUTO mode: Vivideo writes the script and produces a complete AI-avatar video from your prompt. Returns immediately with a video id and status \"processing\" (paid) or \"preview\" (free accounts — see the preview field and upgrade link). Then call wait_for_video or get_video. An Idempotency-Key is sent automatically so a retry never creates a duplicate. Rendering requires a premium plan and credits.","inputSchema":{"type":"object","required":["prompt"],"properties":{"name":{"type":"string","maxLength":60},"prompt":{"type":"string","maxLength":5000,"minLength":1,"description":"What the video should show or say."},"voice_id":{"type":"string","description":"From list_voices."},"avatar_id":{"type":"string","description":"From list_avatars. Omit for a default presenter."},"folder_id":{"type":"string"},"orientation":{"enum":["landscape","portrait"],"type":"string"},"brand_kit_id":{"type":"string","description":"A brand_ref from list_brand_kits."},"idempotency_key":{"type":"string","maxLength":255,"description":"Optional. Reuse the same key to make a retry safe."},"duration_seconds":{"type":"integer","maximum":300,"minimum":5,"description":"5–300, default 30."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":344,"tokensAfter":344},{"name":"create_manual_video","fixed":{"name":"create_manual_video","description":"Create a video in MANUAL mode: send your prompt straight to a specific model (get ids/options from list_models). The operation is inferred from inputs — add image_url for image-to-video. resolution/duration/aspect_ratio must match the model (an invalid value returns a 400 listing what is allowed). Returns a video id and status; then wait_for_video or get_video. Idempotency handled automatically.","inputSchema":{"type":"object","required":["model","prompt"],"properties":{"name":{"type":"string","maxLength":60},"seed":{"type":"integer"},"model":{"type":"string","description":"A model id from list_models, e.g. \"veo31_fast\"."},"style":{"type":"string"},"prompt":{"type":"string","maxLength":5000,"minLength":1},"folder_id":{"type":"string"},"image_url":{"type":"string","description":"Public https image → image-to-video."},"resolution":{"type":"string"},"aspect_ratio":{"type":"string"},"generate_audio":{"type":"boolean"},"idempotency_key":{"type":"string","maxLength":255},"negative_prompt":{"type":"string"},"duration_seconds":{"type":"integer","minimum":1,"description":"Must be one of the model's durations."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":325,"tokensAfter":325},{"name":"estimate_credits","fixed":{"name":"estimate_credits","description":"Estimate the credits a generation will cost, from the published per-model rates — BEFORE creating it. This is an estimate, not a charge; the exact amount is returned as credits_charged when you create the video. Use it with check_account to confirm the user can afford the request.","inputSchema":{"type":"object","required":["mode"],"properties":{"mode":{"enum":["auto","manual"],"type":"string"},"model":{"type":"string","description":"Required for manual mode — a model id from list_models."},"resolution":{"type":"string","description":"Manual mode — one of the model's resolutions."},"duration_seconds":{"type":"integer","minimum":1}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":190,"tokensAfter":190},{"name":"get_video","fixed":{"name":"get_video","description":"Get a video's current status and result. status is one of queued | processing | completed | failed | preview. When completed, video_url is the MP4. When failed, credits are refunded and error explains why. Cheap; prefer wait_for_video for polling instead of calling this in a tight loop.","inputSchema":{"type":"object","required":["id"],"properties":{"id":{"type":"string","description":"The video id from a create call."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":129,"tokensAfter":129},{"name":"list_avatars","fixed":{"name":"list_avatars","description":"List available avatars for auto-mode videos (the stock catalogue plus the account's own avatars). Stock avatars are grouped by person, each with a `looks` array — pass a looks[].avatar_id (or an owned avatar's id) as `avatar_id` in create_auto_video. Use `search`/`limit` to keep responses small.","inputSchema":{"type":"object","properties":{"limit":{"type":"integer","maximum":100,"minimum":1,"description":"Max avatars to return (default 20)."},"gender":{"enum":["male","female","unspecified"],"type":"string"},"search":{"type":"string","description":"Filter avatars by name."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":173,"tokensAfter":173},{"name":"list_brand_kits","fixed":{"name":"list_brand_kits","description":"List the account's brand kits (logo, colors, fonts, motion style). Returns brand_ref ids to pass as `brand_kit_id` in create_auto_video to produce an on-brand video.","inputSchema":{"type":"object","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":72,"tokensAfter":72},{"name":"list_models","fixed":{"name":"list_models","description":"List the video models available for MANUAL mode plus the auto-generate pipeline (id \"vivideo-auto\"). Each model lists its operations, allowed durations, resolutions, aspect ratios, style presets and per-second credit rate — use these to build a valid create request. Filter with `mode` to keep the response small.","inputSchema":{"type":"object","properties":{"mode":{"enum":["auto","manual"],"type":"string","description":"Only return models for this mode."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":140,"tokensAfter":140},{"name":"list_videos","fixed":{"name":"list_videos","description":"List the account's videos, newest first. Filter by status and limit the count to keep responses small.","inputSchema":{"type":"object","properties":{"limit":{"type":"integer","maximum":100,"minimum":1,"description":"Default 20."},"status":{"enum":["queued","processing","completed","failed","preview"],"type":"string"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":100,"tokensAfter":100},{"name":"list_voices","fixed":{"name":"list_voices","description":"List available voices for auto-mode videos. Returns voice ids to pass as `voice_id` in create_auto_video. Filter by language/gender/search and cap with `limit`. Voice cloning is not available via the API.","inputSchema":{"type":"object","properties":{"limit":{"type":"integer","maximum":100,"minimum":1,"description":"Max voices (default 20)."},"gender":{"type":"string"},"search":{"type":"string"},"language":{"type":"string","description":"e.g. \"English\"."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":140,"tokensAfter":140},{"name":"render_preview","fixed":{"name":"render_preview","description":"For FREE accounts only: after the user upgrades, render a video that was returned as status \"preview\". Charges run on the same project (the first video after upgrading is free). If the video is already rendering/complete, returns its current state. If the account is still free, returns an upgrade_required error with an upgrade link.","inputSchema":{"type":"object","required":["id"],"properties":{"id":{"type":"string","description":"The preview video id."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":140,"tokensAfter":140}],"toolsChanged":12,"tokensSaved":0,"todo":[{"tool":"create_auto_video","params":["name","folder_id","orientation"]},{"tool":"create_manual_video","params":["name","seed","style","prompt","folder_id","resolution","aspect_ratio","generate_audio","idempotency_key","negative_prompt"]},{"tool":"estimate_credits","params":["mode","duration_seconds"]},{"tool":"list_avatars","params":["gender"]},{"tool":"list_videos","params":["status"]},{"tool":"list_voices","params":["gender","search"]},{"tool":"wait_for_video","params":["id"]}],"note":"Deterministic fixes. Changes marked verify need a human look before shipping (renames, inferred annotations, inferred types, removed text). Parameter descriptions in `todo` need to be written by someone who knows the API."}