vivideo

AI video generation via the Vivideo API: auto or manual mode, avatars, voices, brand kits.

¿Debería usar esto?

Calidad y seguridad

A
Calidad de la descripción
100%
Integridad del esquema
75%
Calidad de los nombres
98%
Riesgo de envenenamiento
80%
Coincidencia de permisos
100%
Cumplimiento del protocolo
100%

Hallazgos (2)

  • HIGHTool poisoning patterns detected
  • MEDIUMTool description contains URL to non-standard domainen check_configuration

Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.

Costo de contexto

~1,785Tokens (definiciones de herramientas)
~733 BTamaño de respuesta típico
Impacto moderado en la atención (1.39% del contexto de 128k)

Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.

Instalar

Instalación con un clic

Agrega esto a tu archivo `claude_desktop_config.json`:

{
  "mcpServers": {
    "vivideo": {
      "command": "npx",
      "args": [
        "@vivideo/mcp"
      ]
    }
  }
}

Paquetes ejecutables

npm@vivideo/mcp1.0.2stdio

Puntos de conexión remotos

https://api.vivideo.ai/mcpstreamable-http

Qué puede hacer

Inventario de herramientas

Herramientas (13)

🟢 Solo lectura🟡 Escritura🔴 Eliminación⚪ Desconocido
🟡check_configuration

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.

Esquema de entrada

{
  "type": "object",
  "properties": {}
}
🟢check_account

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.

Esquema de entrada

{
  "type": "object",
  "properties": {}
}
🟡list_models(mode)

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.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "mode": {
      "type": "string",
      "enum": [
        "auto",
        "manual"
      ],
      "description": "Only return models for this mode."
    }
  }
}
🟡list_avatars(search, gender, limit)

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.

Esquema de entrada

{
  "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)."
    }
  }
}
🟡list_voices(language, gender, search, limit)

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.

Esquema de entrada

{
  "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)."
    }
  }
}
🟡list_brand_kits

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.

Esquema de entrada

{
  "type": "object",
  "properties": {}
}
🟡estimate_credits(mode, model, duration_seconds, resolution)

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.

Esquema de entrada

{
  "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"
  ]
}
🟡create_auto_video(prompt, duration_seconds, avatar_id, voice_id, brand_kit_id, ...)

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.

Esquema de entrada

{
  "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"
  ]
}
🟡create_manual_video(model, prompt, duration_seconds, resolution, aspect_ratio, ...)

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.

Esquema de entrada

{
  "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"
  ]
}
🟢get_video(id)

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.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "The video id from a create call."
    }
  },
  "required": [
    "id"
  ]
}
⚪wait_for_video(id, timeout_seconds)

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.

Esquema de entrada

{
  "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"
  ]
}
🟢list_videos(status, limit)

List the account's videos, newest first. Filter by status and limit the count to keep responses small.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "status": {
      "type": "string",
      "enum": [
        "queued",
        "processing",
        "completed",
        "failed",
        "preview"
      ]
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "description": "Default 20."
    }
  }
}
⚪render_preview(id)

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.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "The preview video id."
    }
  },
  "required": [
    "id"
  ]
}

Comunidad

Califica este servidor

Evidencia

Observaciones recientes

verificadoversión no registrada13 herramientas
verificadoversión no registrada13 herramientas
verificadoversión no registrada13 herramientas