{"name":"io.github.egocen-vivideo/vivideo","slug":"egocen-vivideo-vivideo","title":null,"description":"AI video generation via the Vivideo API: auto or manual mode, avatars, voices, brand kits.","url":"https://mcp.market/server/egocen-vivideo-vivideo","rating":null,"grade":"A","score":86,"certified":false,"status":"active","category":"media","tags":["media"],"presence":{"score":22,"stars":0,"forks":0,"downloads_week":19,"last_push_at":"2026-07-28T13:42:44.000Z","license":"MIT"},"uptime":{"percent":100,"checks":28,"ok":28,"last_checked_at":"2026-11-04T05:50:42.426Z","last_ok_at":"2026-11-04T05:50:42.426Z","latency_ms":151},"claimed":false,"transport":"mixed","callable_via_gateway":true,"default_price_micros":0,"repository":"https://github.com/egocen-vivideo/vivideo-toolchain","website":null,"version":"1.0.2","remotes":[{"type":"streamable-http","url":"https://api.vivideo.ai/mcp","headers":[{"description":"Bearer vv_live_... — your Vivideo API key, created in the app under Settings > More > API Keys.","isRequired":true,"isSecret":true,"name":"Authorization"}]}],"packages":[{"registryType":"npm","identifier":"@vivideo/mcp","version":"1.0.2","transport":{"type":"stdio"},"environmentVariables":[{"description":"Your Vivideo API key (vv_live_...), created in the app under Settings > More > API Keys.","isRequired":true,"format":"string","isSecret":true,"name":"VIVIDEO_API_KEY"}]}],"tools":[{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{}}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{}}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"prompt":{"type":"string","minLength":1,"maxLength":5000,"description":"What the video should show or say."},"duration_seconds":{"type":"integer","minimum":5,"maximum":300,"description":"5–300, default 30."},"avatar_id":{"type":"string","description":"From list_avatars. Omit for a default presenter."},"voice_id":{"type":"string","description":"From list_voices."},"brand_kit_id":{"type":"string","description":"A brand_ref from list_brand_kits."},"orientation":{"type":"string","enum":["landscape","portrait"]},"folder_id":{"type":"string"},"name":{"type":"string","maxLength":60},"idempotency_key":{"type":"string","maxLength":255,"description":"Optional. Reuse the same key to make a retry safe."}},"required":["prompt"]}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"model":{"type":"string","description":"A model id from list_models, e.g. \"veo31_fast\"."},"prompt":{"type":"string","minLength":1,"maxLength":5000},"duration_seconds":{"type":"integer","minimum":1,"description":"Must be one of the model's durations."},"resolution":{"type":"string"},"aspect_ratio":{"type":"string"},"image_url":{"type":"string","description":"Public https image → image-to-video."},"negative_prompt":{"type":"string"},"seed":{"type":"integer"},"generate_audio":{"type":"boolean"},"style":{"type":"string"},"folder_id":{"type":"string"},"name":{"type":"string","maxLength":60},"idempotency_key":{"type":"string","maxLength":255}},"required":["model","prompt"]}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"mode":{"type":"string","enum":["auto","manual"]},"model":{"type":"string","description":"Required for manual mode — a model id from list_models."},"duration_seconds":{"type":"integer","minimum":1},"resolution":{"type":"string","description":"Manual mode — one of the model's resolutions."}},"required":["mode"]}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"id":{"type":"string","description":"The video id from a create call."}},"required":["id"]}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"search":{"type":"string","description":"Filter avatars by name."},"gender":{"type":"string","enum":["male","female","unspecified"]},"limit":{"type":"integer","minimum":1,"maximum":100,"description":"Max avatars to return (default 20)."}}}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{}}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"mode":{"type":"string","enum":["auto","manual"],"description":"Only return models for this mode."}}}},{"name":"list_videos","description":"List the account's videos, newest first. Filter by status and limit the count to keep responses small.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"status":{"type":"string","enum":["queued","processing","completed","failed","preview"]},"limit":{"type":"integer","minimum":1,"maximum":100,"description":"Default 20."}}}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"language":{"type":"string","description":"e.g. \"English\"."},"gender":{"type":"string"},"search":{"type":"string"},"limit":{"type":"integer","minimum":1,"maximum":100,"description":"Max voices (default 20)."}}}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"id":{"type":"string","description":"The preview video id."}},"required":["id"]}},{"name":"wait_for_video","description":"Wait for a video to reach a terminal state (completed / failed / preview), then return it. Polls safely at the API-suggested interval for up to ~20 seconds per call (HTTP requests are time-capped). If it does not finish in time it returns { timed_out: true } with the latest status — simply call it again with the same id to keep waiting. It never blocks indefinitely or over-polls.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"id":{"type":"string"},"timeout_seconds":{"type":"integer","minimum":5,"maximum":20,"description":"Max wait per call (default 20, cap 20)."}},"required":["id"]}}],"scan":{"score":86,"grade":"A","scanned_at":"2026-09-24T17:27:21.938Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-24T17:27:21.842Z","components":{"code":{"score":25,"max":25,"notes":["7 source files scanned"]},"reliability":{"score":20,"max":20,"notes":["remote reachable in 1560ms"]},"poisoning":{"score":15,"max":15,"notes":["13 tool descriptions checked"]},"auth":{"score":8,"max":15,"notes":["API key sent as a header"]},"maintenance":{"score":12,"max":15,"notes":["last push 58 days ago"]},"identity":{"score":6,"max":10,"notes":["registry namespace matches repository owner"]}},"findings":[],"inputs":{"probes":[{"url":"https://api.vivideo.ai/mcp","reachable":true,"authRequired":false,"latencyMs":1560,"serverInfo":{"name":"vivideo","version":"1.0.1"}}],"packages":[{"registryType":"npm","identifier":"@vivideo/mcp","version":"1.0.2","found":true,"license":"MIT","hasInstallScripts":false,"dependencyCount":3,"publishedAt":"2026-07-28T13:43:51.238Z","weeklyDownloads":19}],"repo":{"found":true,"owner":"egocen-vivideo","repo":"vivideo-toolchain","archived":false,"pushedAt":"2026-07-28T13:42:44Z","stars":0,"forks":0,"openIssues":0,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/289472595?v=4","ownerCreatedAt":"2026-05-31T18:20:29Z","license":"MIT"},"icon":{"url":null,"source":"none"},"presence":{"stars":0,"forks":0,"downloadsWeek":19,"license":"MIT","lastPushAt":"2026-07-28T13:42:44.000Z","score":22}}}},"grade_history":[],"reviews":[]}