io.github.egocen-vivideo/vivideo
Measured conclusion: Deep-tested. L2 outcome: tools_ok.
AI video generation via the Vivideo API: auto or manual mode, avatars, voices, brand kits.
| Author | io.github.egocen-vivideo |
|---|---|
| Access | mixed |
| Publisher key required | No |
| Measured state | Deep-tested |
| L1 liveness | alive |
| L1 latency | 355 ms |
| Last measured | 2026-10-24 |
Add to your agent
Copy this into your MCP client config:
{
"mcpServers": {
"vivideo": {
"url": "https://api.vivideo.ai/mcp",
"transport": "streamable-http"
}
}
}
Measured tools (13)
check_configurationCheck 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.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
check_accountGet 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.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
list_modelsList 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.
Parameters:
mode— string — Only return models for this mode.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
list_avatarsList 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.
Parameters:
limit— integer — Max avatars to return (default 20).gender— stringsearch— string — Filter avatars by name.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
list_voicesList 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.
Parameters:
limit— integer — Max voices (default 20).gender— stringsearch— stringlanguage— string — e.g. "English".
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
list_brand_kitsList 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.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
estimate_creditsEstimate 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.
Parameters:
mode(required) — stringmodel— string — Required for manual mode — a model id from list_models.resolution— string — Manual mode — one of the model's resolutions.duration_seconds— integer
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
create_auto_videoCreate 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.
Parameters:
prompt(required) — string — What the video should show or say.name— stringvoice_id— string — From list_voices.avatar_id— string — From list_avatars. Omit for a default presenter.folder_id— stringorientation— stringbrand_kit_id— string — A brand_ref from list_brand_kits.idempotency_key— string — Optional. Reuse the same key to make a retry safe.duration_seconds— integer — 5–300, default 30.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
create_manual_videoCreate 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.
Parameters:
model(required) — string — A model id from list_models, e.g. "veo31_fast".prompt(required) — stringname— stringseed— integerstyle— stringfolder_id— stringimage_url— string — Public https image → image-to-video.resolution— stringaspect_ratio— stringgenerate_audio— booleanidempotency_key— stringnegative_prompt— stringduration_seconds— integer — Must be one of the model's durations.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
get_videoGet 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.
Parameters:
id(required) — string — The video id from a create call.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
wait_for_videoWait 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.
Parameters:
id(required) — stringtimeout_seconds— integer — Max wait per call (default 20, cap 20).
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
list_videosList the account's videos, newest first. Filter by status and limit the count to keep responses small.
Parameters:
limit— integer — Default 20.status— string
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
render_previewFor 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.
Parameters:
id(required) — string — The preview video id.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
Measured by MCPYP probing. Untested fields are omitted, never estimated. Listing is always free; MCPYP never proxies calls or stores user tokens.