Server definition
- Hash
- sha256:b688d2da70db3d9df01954f6cbe39629d94cdb53314d30cb73ca2fad8ab84602
- What it is
- What a remote MCP server returned when asked what it offers: 13 tools
The blob, as servednamed by its sha256
{
"instructions": "Vivideo generates AI videos (auto avatar videos and 30+ manual models). Call check_configuration first, then check_account to confirm plan/credits. Create with create_auto_video or create_manual_video (list_models for ids/options), then wait_for_video until it returns timed_out: false. Estimates via estimate_credits. Docs: https://developers.vivideo.ai",
"tools": [
{
"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": {
"properties": {},
"type": "object"
},
"name": "check_account",
"outputSchema": null
},
{
"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": {
"properties": {},
"type": "object"
},
"name": "check_configuration",
"outputSchema": null
},
{
"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": {
"properties": {
"avatar_id": {
"description": "From list_avatars. Omit for a default presenter.",
"type": "string"
},
"brand_kit_id": {
"description": "A brand_ref from list_brand_kits.",
"type": "string"
},
"duration_seconds": {
"description": "5–300, default 30.",
"maximum": 300,
"minimum": 5,
"type": "integer"
},
"folder_id": {
"type": "string"
},
"idempotency_key": {
"description": "Optional. Reuse the same key to make a retry safe.",
"maxLength": 255,
"type": "string"
},
"name": {
"maxLength": 60,
"type": "string"
},
"orientation": {
"enum": [
"landscape",
"portrait"
],
"type": "string"
},
"prompt": {
"description": "What the video should show or say.",
"maxLength": 5000,
"minLength": 1,
"type": "string"
},
"voice_id": {
"description": "From list_voices.",
"type": "string"
}
},
"required": [
"prompt"
],
"type": "object"
},
"name": "create_auto_video",
"outputSchema": null
},
{
"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": {
"properties": {
"aspect_ratio": {
"type": "string"
},
"duration_seconds": {
"description": "Must be one of the model's durations.",
"minimum": 1,
"type": "integer"
},
"folder_id": {
"type": "string"
},
"generate_audio": {
"type": "boolean"
},
"idempotency_key": {
"maxLength": 255,
"type": "string"
},
"image_url": {
"description": "Public https image → image-to-video.",
"type": "string"
},
"model": {
"description": "A model id from list_models, e.g. \"veo31_fast\".",
"type": "string"
},
"name": {
"maxLength": 60,
"type": "string"
},
"negative_prompt": {
"type": "string"
},
"prompt": {
"maxLength": 5000,
"minLength": 1,
"type": "string"
},
"resolution": {
"type": "string"
},
"seed": {
"type": "integer"
},
"style": {
"type": "string"
}
},
"required": [
"model",
"prompt"
],
"type": "object"
},
"name": "create_manual_video",
"outputSchema": null
},
{
"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": {
"properties": {
"duration_seconds": {
"minimum": 1,
"type": "integer"
},
"mode": {
"enum": [
"auto",
"manual"
],
"type": "string"
},
"model": {
"description": "Required for manual mode — a model id from list_models.",
"type": "string"
},
"resolution": {
"description": "Manual mode — one of the model's resolutions.",
"type": "string"
}
},
"required": [
"mode"
],
"type": "object"
},
"name": "estimate_credits",
"outputSchema": null
},
{
"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": {
"properties": {
"id": {
"description": "The video id from a create call.",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "get_video",
"outputSchema": null
},
{
"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": {
"properties": {
"gender": {
"enum": [
"male",
"female",
"unspecified"
],
"type": "string"
},
"limit": {
"description": "Max avatars to return (default 20).",
"maximum": 100,
"minimum": 1,
"type": "integer"
},
"search": {
"description": "Filter avatars by name.",
"type": "string"
}
},
"type": "object"
},
"name": "list_avatars",
"outputSchema": null
},
{
"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": {
"properties": {},
"type": "object"
},
"name": "list_brand_kits",
"outputSchema": null
},
{
"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": {
"properties": {
"mode": {
"description": "Only return models for this mode.",
"enum": [
"auto",
"manual"
],
"type": "string"
}
},
"type": "object"
},
"name": "list_models",
"outputSchema": null
},
{
"description": "List the account's videos, newest first. Filter by status and limit the count to keep responses small.",
"inputSchema": {
"properties": {
"limit": {
"description": "Default 20.",
"maximum": 100,
"minimum": 1,
"type": "integer"
},
"status": {
"enum": [
"queued",
"processing",
"completed",
"failed",
"preview"
],
"type": "string"
}
},
"type": "object"
},
"name": "list_videos",
"outputSchema": null
},
{
"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": {
"properties": {
"gender": {
"type": "string"
},
"language": {
"description": "e.g. \"English\".",
"type": "string"
},
"limit": {
"description": "Max voices (default 20).",
"maximum": 100,
"minimum": 1,
"type": "integer"
},
"search": {
"type": "string"
}
},
"type": "object"
},
"name": "list_voices",
"outputSchema": null
},
{
"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": {
"properties": {
"id": {
"description": "The preview video id.",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "render_preview",
"outputSchema": null
},
{
"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.",
"inputSchema": {
"properties": {
"id": {
"type": "string"
},
"timeout_seconds": {
"description": "Max wait per call (default 20, cap 20).",
"maximum": 20,
"minimum": 5,
"type": "integer"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "wait_for_video",
"outputSchema": null
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:b688d2da70db3d9df01954f6cbe39629d94cdb53314d30cb73ca2fad8ab84602 | sha256sum