# Vixdeo MCP connector

Vixdeo is an AI editorial video production platform; it is not ViX (TelevisaUnivision's streaming service) nor Videx. Vixdeo is the AI video producer: it turns an idea or a script into a finished piece - fact-checked script, voice, music and visuals directed scene by scene - operable by people and by agents.

- Server: `https://vixdeo.com/v1/mcp` (MCP Streamable HTTP, JSON-RPC 2.0, protocol 2025-06-18; server version `rc.426`)
- Auth: OAuth 2.1 with dynamic client registration (RFC 7591), PKCE S256, scopes `read` `write` — or an API key `Authorization: Bearer vbp_live_…` created at `https://vixdeo.com/settings`
- Discovery: `https://vixdeo.com/.well-known/oauth-protected-resource/v1/mcp` · `https://vixdeo.com/.well-known/oauth-authorization-server` · `https://vixdeo.com/.well-known/mcp.json` · registry `https://vixdeo.com/server.json` (`com.vixdeo/vixdeo`)
- Human guide (how to add it to Claude): `https://vixdeo.com/en/docs/claude` (English) · `https://vixdeo.com/docs/claude` (Spanish)

## Tools (22; 10 read-only)

The same catalogue `tools/list` returns, with `annotations` and input schemas, is served without credentials at `https://vixdeo.com/v1/mcp/tools`.

| tool | title | kind | cost |
|---|---|---|---|
| `list_ops` | List edit ops | read | $0 |
| `list_referents` | List formats | read | $0 |
| `estimate` | Estimate cost | read | $0 |
| `list_cast` | List voices and presenters | read | $0 |
| `list_projects` | List projects | read | $0 |
| `get_project_vbp` | Read Video Blueprint | read | $0 |
| `run_op` | Stage an edit op | write | $0 · charged: `rewrite_scene`, `tighten_hook` (LLM, like a chat turn) |
| `direct` | Direct the piece | write | spends |
| `commit` | Commit a version | write | $0 |
| `generate_script` | Create a project | write | spends |
| `get_project_status` | Get project status | read | $0 |
| `judge_script` | Judge the script | write | spends |
| `rewrite_script` | Rewrite the script | write | spends |
| `produce` | Produce the video | write | spends |
| `cancel` | Stop the production line | write · destructive | $0 |
| `list_versions` | List versions | read | $0 |
| `set_head` | Make a version the cut | write | $0 |
| `whoami` | Who am I | read | $0 |
| `request_upload` | Request upload ticket | write | $0 |
| `complete_upload` | Register uploaded material | write | $0 |
| `list_material` | List own material | read | $0 |
| `assign_material` | Assign material to a scene | write · destructive | $0 |

`$0` = no provider is called. `spends` = the organization's wallet pays what the provider charges (the script is charged before any wallet check; the studio build and the final render stop the line at `waitingForFunds` when the wallet does not cover them).

## Canonical flow

1. `whoami` — who you are, scopes, wallet and whether you operate the platform
2. `list_referents` — the formats, the duration and writing profiles, the defaults
3. `estimate` — the price band and whether the request is complete, BEFORE spending ($0)
4. `generate_script` — creates the piece; with auto_produce=true the line runs on its own to the video
5. `get_project_status` — the status; polled every 60-120 s because the server never pushes

To edit before producing: `generate_script` with `production.auto_produce=false`, then `get_project_vbp` → `run_op` (deterministic ops are $0) → `commit` → `produce`. `list_versions` / `set_head` navigate the cut (`sequence` is the unambiguous position; `number` repeats between a script and its studio copy by design). Own material: `request_upload` → PUT the bytes → `complete_upload` → `assign_material` → `produce`.

## Limits, declared

- No notifications are pushed: progress is visible only by calling `get_project_status` again (every 60-120 s; a piece usually takes 20-60 min).
- Write tools (`run_op`, `direct`, `commit`, `generate_script`, `judge_script`, `rewrite_script`, `produce`, `cancel`, `set_head`, `request_upload`, `complete_upload`, `assign_material`) may require the user's approval on every call — that is the host's policy (per-tool trust is set in the host), not a server error.
- `tools/list` is cached by hosts; `serverInfo.version` is the release tag and changes when schemas change — reconnect to refresh.
- Publishing to a channel is a human decision in the app; no tool publishes.
- The voice or the presenter of a piece is never inferred: name one from `list_cast` (`id` is the key, `@handle` the label) or describe one with `cast.describe_face`.
- `list_referents` and `list_ops` accept `locale` (`en` default, `es` adds Spanish mirrors) and `compact=true` to keep answers small.

## Example prompts

**Quote without launching anything ($0)** (whoami · list_referents · estimate)

> Using Vixdeo: tell me who I am and my wallet balance, list the available formats and quote a 3-minute educational explainer in Spanish about “how an mRNA vaccine works”. Do not launch anything: I want the price band, whether the request is complete, and at which station the line would stop if the wallet did not cover it.

**Launch the script without producing, then edit a scene** (list_cast · generate_script (auto_produce=false) · get_project_status · get_project_vbp · run_op · commit)

> Using Vixdeo: find a male Spanish voice in list_cast and use its id. Create a short critical essay in Spanish about “silence in Bresson’s cinema” with production.auto_produce=false and that voice in cast.voice. When the script is ready (check the status every minute), read the blueprint, halve the narration of scene 0 with run_op set_scene_fields, commit, and tell me the id and sequence of the new version. Do not produce the video.

**Review versions, move the cut and report publication** (list_projects · list_versions · set_head · get_project_status)

> Using Vixdeo: find my most recent project in FINAL_REVIEW or STUDIO_READY, list its versions with sequence, origin and isHead, and if an earlier version has the same number of scenes make it the cut with set_head. Then report the publication state (publication) and the final video URL if it exists. Publishing to a channel is not available from the connector: it is a human decision in the app.

## Links

- Privacy: `https://vixdeo.com/legal/privacy` · Terms: `https://vixdeo.com/legal/terms` · Third parties that receive prompts and media: `https://vixdeo.com/legal/subprocessors`
- Errors (RFC 7807 problem types): `https://vixdeo.com/errors` · OpenAPI: `https://vixdeo.com/v1/openapi.json` · llms.txt: `https://vixdeo.com/llms.txt`
- Legal and privacy contact: legal@vixdeo.com. TODO: confirmar el buzón de soporte (soporte@vixdeo.com) antes de publicarlo como canal verificado.
