> ## Documentation Index
> Fetch the complete documentation index at: https://docs.xtarify.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Herramientas

> Las 8 herramientas del servidor MCP de Xtarify, con sus parámetros y lo que devuelven.

| Herramienta | Qué hace | Créditos |
| - | - | - |
| [`create_video`](#create_video) | Empieza un video sobre un tema | Se cobran al empezar la producción |
| [`get_video`](#get_video) | Estado de un video; espera en el servidor hasta 55 s | No gasta |
| [`estimate_video`](#estimate_video) | Precio de una duración y tu saldo | No gasta |
| [`list_inspirations`](#list_inspirations) | Los estilos visuales | No gasta |
| [`revise_video`](#revise_video) | Versión nueva de un video terminado | Se cobran al empezar la producción |
| [`list_videos`](#list_videos) | Tus videos recientes | No gasta |
| [`get_credits`](#get_credits) | Tu saldo y el precio de cada duración | No gasta |
| [`cancel_video`](#cancel_video) | Cancela un video en proceso | Devuelve lo cobrado |

Cada herramienta devuelve un texto para el modelo y los mismos datos en JSON en `structuredContent`. Los errores vuelven con `isError: true` y un mensaje que dice qué hacer.

## El flujo

```text theme={null}
estimate_video  →  el usuario acepta el precio
create_video    →  video_id
get_video(video_id, wait_seconds=50)   ← se repite hasta status "done" (8–15 min)
               →  video_url, download_url, descripciones
```

El servidor le manda estas instrucciones al cliente al conectarse, así que Claude sigue este flujo sin que se lo pidas, y nunca anuncia un video como listo antes de que `get_video` devuelva `done`.

## create\_video

Empieza un reel explicativo vertical (9:16) sobre un tema: investiga, escribe el guion, graba la voz, anima y renderiza.

**topic** `string` *required*

De qué es el video, con las palabras del usuario: una pregunta, una curiosidad o un mito. Máximo 2000 caracteres.

**length\_seconds** `integer` (default: 45)

Duración objetivo, de 15 a 120 segundos en pasos de 5. Un valor fuera de rango se lleva al más cercano.

**inspiration\_id** `string`

Estilo visual (ver `list_inspirations`). Si no lo pasas, el guionista elige el que mejor le va al tema.

**voice\_id** `string` (default: narrador)

Voz del narrador: `narrador`, `nandez`, `conversacional`, `calmado`, `mexicano`, `energica`, `calida` o `clara`. Ver [Voces](https://docs.xtarify.com/fabrica/voces-y-duracion.md).

**language** `string`

`es`, `en` o `pt`. Si no lo pasas, el video sale en el idioma del tema.

**reference\_url** `string`

Enlace `https://` a un video de TikTok o Instagram cuyo formato quieres como referencia. El guionista no ve el video: solo usa lo que puede leer de esa página.

**video\_id** `string`

Id del video, para `get_video`, `revise_video` y `cancel_video`.

**project\_id** `string`

Id de la conversación del video en Xtarify.

**status** `string`

`queued` al empezar.

**credits** `integer`

Créditos que se cobrarán al empezar la producción.

**web\_url** `string`

Página del video en xtarify.com, con el progreso en vivo.

## get\_video

Estado de un video. Con `wait_seconds`, el servidor espera a que el video avance antes de responder, así el cliente no tiene que preguntar a cada rato.

**video\_id** `string` *required*

El `video_id` que devolvió `create_video`, `revise_video` o `list_videos`.

**wait\_seconds** `integer` (default: 0)

Segundos de espera en el servidor (0 a 55). Mientras se hace, usa 50: la respuesta vuelve apenas el video cambia de paso, o al cumplirse el tiempo.

**status** `string`

`queued` (en cola), `running` (trabajando), `done` (listo), `answered` (el guionista respondió con un mensaje en vez de hacer el video; no se cobró), `failed` (no terminó; créditos devueltos) o `cancelled`.

**stage** `string`

Paso actual: `script`, `voice`, `timing`, `animation`, `render` o `review`.

**progress** `integer`

Avance aproximado, de 0 a 100.

**steps** `object[]`

Cada paso con `step`, `label` y `state` (`pending`, `live`, `done`, `skipped` o `error`).

**script** `object`

Cuando ya existe: `title`, `hook`, `inspirationId`, `blocks` (el texto de cada parte) y `sources` (las fuentes de cada dato).

**video\_url** `string`

Solo con `done`: el MP4 para ver.

**download\_url** `string`

Solo con `done`: el mismo MP4 como descarga, con el título como nombre de archivo.

**poster\_url** `string`

Solo con `done`: la portada en JPG.

**duration\_seconds** `number`

Solo con `done`: duración real del video.

**description\_instagram** `string`

Solo con `done`: descripción lista para pegar.

**description\_tiktok** `string`

Solo con `done`: descripción lista para pegar.

**hashtags** `string[]`

Solo con `done`: sin el `#`.

**links\_expire\_in\_days** `integer`

Los enlaces vencen a los 7 días; vuelve a llamar a `get_video` para recibir enlaces nuevos.

**reply** `string`

Solo con `answered`: lo que respondió el guionista.

**error** `string`

Solo con `failed` o `cancelled`.

**credits\_refunded** `integer`

Solo con `failed` o `cancelled`.

Con `done`, la respuesta también trae una imagen con 12 fotogramas del video, para que el modelo vea cómo quedó.

## estimate\_video

**length\_seconds** `integer` (default: 45)

Duración de 15 a 120 segundos.

**credits** `integer`

Precio de un video nuevo de esa duración.

**balance** `integer`

Tu saldo.

**enough** `boolean`

Si te alcanza.

## list\_inspirations

Sin parámetros. Devuelve `inspirations`: cada estilo con `id`, `name`, `tagline`, `bestFor`, `beta`, `previewUrl` (video de muestra) y `posterUrl`. Ver [Estilos](https://docs.xtarify.com/fabrica/estilos.md).

## revise\_video

Hace una versión nueva de un video terminado a partir de lo que quieres cambiar. Si el cambio es solo visual, reusa la voz y el guion y cuesta menos (ver [Créditos](https://docs.xtarify.com/fabrica/creditos.md)).

**video\_id** `string` *required*

El video que quieres cambiar.

**feedback** `string` *required*

Qué cambiar, con las palabras del usuario.

**inspiration\_id** `string`

Otro estilo visual. Sigue siendo un cambio solo de animación.

**voice\_id** `string`

Otra voz. Graba la voz de nuevo, así que cuesta como un video nuevo.

**length\_seconds** `integer`

Otra duración. Reescribe el guion y graba la voz de nuevo: cuesta como un video nuevo.

Devuelve el `video_id` de la versión nueva: síguelo con `get_video`.

## list\_videos

**limit** `integer` (default: 10)

Cuántos videos, de 1 a 30. Los más recientes primero.

Devuelve `videos`: cada uno con `video_id`, `project_id`, `title`, `status`, `video_url` (si está listo), `web_url` y `created_at`.

## get\_credits

Sin parámetros. Devuelve `credits` (tu saldo) y `prices` (créditos por duración: 15, 30, 45, 60, 90 y 120 segundos).

## cancel\_video

**video\_id** `string` *required*

Un video que todavía se está haciendo.

Pide la cancelación y devuelve los créditos cobrados. El video se detiene en el siguiente punto seguro, normalmente en segundos.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.