Turn a video link into vertical short clips with subtitles: create jobs, poll, get downloads.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Bearer <API key>. Get a free key at https://vyexa.net/content/dashboard/api-keys (free account, no card).
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Start a job that cuts a video link (YouTube, TikTok, Instagram, Vimeo, Twitch, or a direct file URL) into vertical 9:16 short clips with burned-in subtitles. Returns a job_id immediately; the job runs for a few minutes — poll get_job until status is "completed" or "partial". num_clips is a maximum, not a guarantee. Uses the account's normal clip balance (free plan included).
Public https link to the source video.
Font: montserrat, rubik, russo.
Paid plans only: {url|base64, position, size, margin, opacity}. See https://vyexa.net/api-docs#logo.
Fixed title instead of an AI one. Max 32 characters (70 when constructor.title_style is "newsline"); longer is cut.
Framing: auto, full, frame_70, frame_50, frame_40, dual, streaming, lesson. See get_options.
Spoken language code (en, ru, uk, pl, …) or "auto" (default).
Maximum number of clips to produce (default 1).
Title style: clean, box, chip, box_accent, newsline, outline, off.
Generate an AI title for each clip (default true).
Subtitle style, e.g. karaoke, highlighter, glow, punch, none. See get_options.
Accent colour as #RRGGBB (or "#RRGGBB+#RRGGBB" for two alternating).
Mask and bleep swear words.
Target clip length in seconds. 50 needs Creator, 90 needs Pro; default 30.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Start a job that cuts a video link (YouTube, TikTok, Instagram, Vimeo, Twitch, or a direct file URL) into vertical 9:16 short clips with burned-in subtitles. Returns a job_id immediately; the job runs for a few minutes — poll get_job until status is "completed" or "partial". num_clips is a maximum, not a guarantee. Uses the account's normal clip balance (free plan included).
| Argument | Type | Description |
|---|---|---|
| url* | string | Public https link to the source video. |
| font | string | Font: montserrat, rubik, russo. |
| logo | object | Paid plans only: {url|base64, position, size, margin, opacity}. See https://vyexa.net/api-docs#logo. |
| title | string | Fixed title instead of an AI one. Max 32 characters (70 when constructor.title_style is "newsline"); longer is cut. |
| layout | string | Framing: auto, full, frame_70, frame_50, frame_40, dual, streaming, lesson. See get_options. |
| language | string | Spoken language code (en, ru, uk, pl, …) or "auto" (default). |
| num_clips | integer | Maximum number of clips to produce (default 1). |
| title_style | string | Title style: clean, box, chip, box_accent, newsline, outline, off. |
| generate_title | boolean | Generate an AI title for each clip (default true). |
| subtitle_style | string | Subtitle style, e.g. karaoke, highlighter, glow, punch, none. See get_options. |
| highlight_color | string | Accent colour as #RRGGBB (or "#RRGGBB+#RRGGBB" for two alternating). |
| profanity_censor | boolean | Mask and bleep swear words. |
| segment_duration | integer | Target clip length in seconds. 50 needs Creator, 90 needs Pro; default 30. |
| subtitle_position | string |
{
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"description": "Public https link to the source video."
},
"font": {
"type": "string",
"description": "Font: montserrat, rubik, russo."
},
"logo": {
"type": "object",
"description": "Paid plans only: {url|base64, position, size, margin, opacity}. See https://vyexa.net/api-docs#logo."
},
"title": {
"type": "string",
"maxLength": 70,
"description": "Fixed title instead of an AI one. Max 32 characters (70 when constructor.title_style is \"newsline\"); longer is cut."
},
"layout": {
"type": "string",
"description": "Framing: auto, full, frame_70, frame_50, frame_40, dual, streaming, lesson. See get_options."
},
"language": {
"type": "string",
"description": "Spoken language code (en, ru, uk, pl, …) or \"auto\" (default)."
},
"num_clips": {
"type": "integer",
"minimum": 1,
"description": "Maximum number of clips to produce (default 1)."
},
"title_style": {
"type": "string",
"description": "Title style: clean, box, chip, box_accent, newsline, outline, off."
},
"generate_title": {
"type": "boolean",
"description": "Generate an AI title for each clip (default true)."
},
"subtitle_style": {
"type": "string",
"description": "Subtitle style, e.g. karaoke, highlighter, glow, punch, none. See get_options."
},
"highlight_color": {
"type": "string",
"description": "Accent colour as #RRGGBB (or \"#RRGGBB+#RRGGBB\" for two alternating)."
},
"profanity_censor": {
"type": "boolean",
"description": "Mask and bleep swear words."
},
"segment_duration": {
"enum": [
30,
50,
90
],
"type": "integer",
"description": "Target clip length in seconds. 50 needs Creator, 90 needs Pro; default 30."
},
"subtitle_position": {
"enum": [
"auto",
"bottom",
"middle",
"top"
],
"type": "string"
}
}
}Status of a job created with create_clips: status (pending, processing, completed, partial, failed), progress counters, source info and the list of finished clips with download_url. Poll every 10–15 seconds. "partial" means some clips are usable.
| Argument | Type | Description |
|---|---|---|
| job_id* | integer | job_id returned by create_clips. |
| include_subtitles | boolean | Include per-clip subtitle text. |
{
"type": "object",
"required": [
"job_id"
],
"properties": {
"job_id": {
"type": "integer",
"description": "job_id returned by create_clips."
},
"include_subtitles": {
"type": "boolean",
"description": "Include per-clip subtitle text."
}
}
}All accepted values for layout, subtitle_style, title_style, font, subtitle_position with "when to choose" hints and recommendations by content type (podcast, gaming, humor…). Call once before create_clips to pick styling.
No arguments.
{
"type": "object",
"properties": {}
}Only the finished clips of a job (id, title, duration, download_url). Each download_url requires the same Bearer key.
| Argument | Type | Description |
|---|---|---|
| job_id* | integer | job_id returned by create_clips. |
| include_subtitles | boolean | Include per-clip subtitle text. |
{
"type": "object",
"required": [
"job_id"
],
"properties": {
"job_id": {
"type": "integer",
"description": "job_id returned by create_clips."
},
"include_subtitles": {
"type": "boolean",
"description": "Include per-clip subtitle text."
}
}
}