# io.github.egocen-vivideo/vivideo (remote · api.vivideo.ai)

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

- Trust score: 63/100 (medium)
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- remote · `api.vivideo.ai`: 63/100 (this document), [markdown](https://verifymcp.io/servers/egocen-vivideo-vivideo/api.md), [page](https://verifymcp.io/servers/egocen-vivideo-vivideo/api)
- npm · `@vivideo/mcp`: 35/100, [markdown](https://verifymcp.io/servers/egocen-vivideo-vivideo/vivideo-mcp.md), [page](https://verifymcp.io/servers/egocen-vivideo-vivideo/vivideo-mcp)

## Channel facts

- Endpoint: `https://api.vivideo.ai/mcp`
- Transports: `streamable-http`
- Auth: `required`
- Version: `1.0.2`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Endpoint Security**: 57/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation not fully verified: no authorisation is required to call this server, and 13 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe.
  - HTTPS is enforced; there's no plaintext access path.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 80/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 1458 tokens (~112/item across 13 items; 13 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 20/100
  - Stability observed for 6 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 83/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 50% of tool parameters carry a description.
- **Capabilities**: 60/100
  - Spec-recency check failed: implements MCP spec 2025-06-18; the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add --transport http egocen-vivideo-vivideo https://api.vivideo.ai/mcp
```

### Codex

```toml
[mcp_servers.egocen-vivideo-vivideo]
url = "https://api.vivideo.ai/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "egocen-vivideo-vivideo": {
      "type": "remote",
      "url": "https://api.vivideo.ai/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add egocen-vivideo-vivideo --url https://api.vivideo.ai/mcp --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  egocen-vivideo-vivideo:
    url: "https://api.vivideo.ai/mcp"
```

### Other

```json
{
  "mcpServers": {
    "egocen-vivideo-vivideo": {
      "type": "http",
      "url": "https://api.vivideo.ai/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-02 (score 63, +1)

No change was recorded against any check on this day. Stability & Change Management went from 13 to 17. That category is still filling its 30-day observation window: 4 days of observed history at the previous scan, 5 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-31 (score 62, −1)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 63, +1)

No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-29 (score 62, 0)

- [functional improvement] Stability: unverified → 0.03

### 2026-07-28 (score 62)

First indexed and scored.

## MCP tools (13)

### `check_configuration` (~78 tokens)

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.

### `check_account` (~70 tokens)

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.

### `list_models` (~85 tokens)

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.

Input parameters:

- `mode` (string): Only return models for this mode.

### `list_avatars` (~112 tokens)

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.

Input parameters:

- `gender` (string)
- `limit` (integer): Max avatars to return (default 20).
- `search` (string): Filter avatars by name.

### `list_voices` (~92 tokens)

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.

Input parameters:

- `gender` (string)
- `language` (string): e.g. "English".
- `limit` (integer): Max voices (default 20).
- `search` (string)

### `list_brand_kits` (~50 tokens)

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.

### `estimate_credits` (~116 tokens)

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.

Input parameters:

- `duration_seconds` (integer)
- `mode` (string, required)
- `model` (string): Required for manual mode — a model id from list_models.
- `resolution` (string): Manual mode — one of the model's resolutions.

### `create_auto_video` (~218 tokens)

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.

Input parameters:

- `avatar_id` (string): From list_avatars. Omit for a default presenter.
- `brand_kit_id` (string): A brand_ref from list_brand_kits.
- `duration_seconds` (integer): 5–300, default 30.
- `folder_id` (string)
- `idempotency_key` (string): Optional. Reuse the same key to make a retry safe.
- `name` (string)
- `orientation` (string)
- `prompt` (string, required): What the video should show or say.
- `voice_id` (string): From list_voices.

### `create_manual_video` (~222 tokens)

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.

Input parameters:

- `aspect_ratio` (string)
- `duration_seconds` (integer): Must be one of the model's durations.
- `folder_id` (string)
- `generate_audio` (boolean)
- `idempotency_key` (string)
- `image_url` (string): Public https image → image-to-video.
- `model` (string, required): A model id from list_models, e.g. "veo31_fast".
- `name` (string)
- `negative_prompt` (string)
- `prompt` (string, required)
- `resolution` (string)
- `seed` (integer)
- `style` (string)

### `get_video` (~82 tokens)

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.

Input parameters:

- `id` (string, required): The video id from a create call.

### `wait_for_video` (~123 tokens)

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.

Input parameters:

- `id` (string, required)
- `timeout_seconds` (integer): Max wait per call (default 20, cap 20).

### `list_videos` (~47 tokens)

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

Input parameters:

- `limit` (integer): Default 20.
- `status` (string)

### `render_preview` (~86 tokens)

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.

Input parameters:

- `id` (string, required): The preview video id.

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/egocen-vivideo-vivideo/api#diagnostics

## Score history

- 2026-08-03: 63
- 2026-08-02: 63
- 2026-08-01: 62
- 2026-07-31: 62
- 2026-07-30: 63
- 2026-07-29: 62
- 2026-07-28: 62

## Links

- Remote endpoint: https://api.vivideo.ai/mcp
- Authorisation metadata: https://api.vivideo.ai/.well-known/oauth-protected-resource/mcp
- Repository: https://github.com/egocen-vivideo/vivideo-toolchain
- Changelog RSS feed: https://verifymcp.io/servers/egocen-vivideo-vivideo/api/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/egocen-vivideo-vivideo/api/changelog.json
- HTML version of this page: https://verifymcp.io/servers/egocen-vivideo-vivideo/api
