Manage videos and live streams, inspect captions, players and webhooks, and read play analytics.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
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.
WRITE. Create a new live stream, returning a stream key and RTMP ingest URL to broadcast to. POST /live-streams.
Live stream name. Required.
Whether the stream is public (default true) or private.
Id of a custom player theme to attach.
The server marks this tool as destructive. Running it may delete or overwrite data on the server or in any account you connected with your headers.
WRITE. Create a new live stream, returning a stream key and RTMP ingest URL to broadcast to. POST /live-streams.
| Argument | Type | Description |
|---|---|---|
| name* | string | Live stream name. Required. |
| public | boolean | Whether the stream is public (default true) or private. |
| playerId | string | Id of a custom player theme to attach. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"description": "Live stream name. Required."
},
"public": {
"type": "boolean",
"description": "Whether the stream is public (default true) or private."
},
"playerId": {
"type": "string",
"description": "Id of a custom player theme to attach."
}
}
}WRITE. Create a new video object. If `source` (a public video URL) is provided, api.video ingests the video from that URL — recommended for hosted use, since raw file bytes cannot stream through MCP. POST /videos.
| Argument | Type | Description |
|---|---|---|
| tags | array | Tags for the video. |
| title* | string | Video title. Required. |
| public | boolean | Whether the video is public (default true) or private. |
| source | string | Public URL of a video file to ingest from. Recommended over uploading bytes. |
| metadata | object | Key/value metadata pairs (sent as [{key,value}]). |
| playerId | string | Id of a custom player theme to attach. |
| panoramic | boolean | Whether the video is a 360/panoramic video. |
| mp4Support | boolean | Whether to also generate a downloadable MP4. |
| description | string | Video description. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"title"
],
"properties": {
"tags": {
"type": "array",
"items": {
"type": "string"
},
"description": "Tags for the video."
},
"title": {
"type": "string",
"description": "Video title. Required."
},
"public": {
"type": "boolean",
"description": "Whether the video is public (default true) or private."
},
"source": {
"type": "string",
"description": "Public URL of a video file to ingest from. Recommended over uploading bytes."
},
"metadata": {
"type": "object",
"description": "Key/value metadata pairs (sent as [{key,value}]).",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string"
}
},
"playerId": {
"type": "string",
"description": "Id of a custom player theme to attach."
},
"panoramic": {
"type": "boolean",
"description": "Whether the video is a 360/panoramic video."
},
"mp4Support": {
"type": "boolean",
"description": "Whether to also generate a downloadable MP4."
},
"description": {
"type": "string",
"description": "Video description."
}
}
}WRITE. Permanently DELETE a video and all its assets. This cannot be undone. DELETE /videos/{videoId}.
| Argument | Type | Description |
|---|---|---|
| videoId* | string | The video id to permanently delete. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"videoId"
],
"properties": {
"videoId": {
"type": "string",
"description": "The video id to permanently delete."
}
}
}Get a single live stream object by id (stream key, RTMP ingest, player URL). Read-only. GET /live-streams/{liveStreamId}.
| Argument | Type | Description |
|---|---|---|
| liveStreamId* | string | The live stream id, e.g. li400mYKSgQ6xs7taUeSaEup. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"liveStreamId"
],
"properties": {
"liveStreamId": {
"type": "string",
"description": "The live stream id, e.g. li400mYKSgQ6xs7taUeSaEup."
}
}
}Aggregated play analytics for live streams over a date range, grouped by a dimension. Read-only. GET /analytics/live-streams/plays.
| Argument | Type | Description |
|---|---|---|
| to | string | End date yyyy-mm-dd (inclusive). |
| from* | string | Start date yyyy-mm-dd (inclusive). Required. |
| filter | string | Filter expression, e.g. "liveStreamId:li123". |
| pageSize | integer | Results per page (max 100). Default 25. |
| dimension* | string | Dimension to group plays by. |
| currentPage | integer | Page number (1-based). Default 1. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"from",
"dimension"
],
"properties": {
"to": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "End date yyyy-mm-dd (inclusive)."
},
"from": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Start date yyyy-mm-dd (inclusive). Required."
},
"filter": {
"type": "string",
"description": "Filter expression, e.g. \"liveStreamId:li123\"."
},
"pageSize": {
"type": "integer",
"maximum": 100,
"description": "Results per page (max 100). Default 25.",
"exclusiveMinimum": 0
},
"dimension": {
"enum": [
"liveStreamId",
"emittedAt",
"country",
"deviceType",
"operatingSystem",
"browser"
],
"type": "string",
"description": "Dimension to group plays by."
},
"currentPage": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Page number (1-based). Default 1.",
"exclusiveMinimum": 0
}
}
}Get a single video object by id (title, assets, player URL, status flags). Read-only. GET /videos/{videoId}.
| Argument | Type | Description |
|---|---|---|
| videoId* | string | The video id, e.g. vi4k0jvEUuaTdRAEjQ4Jfrgz. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"videoId"
],
"properties": {
"videoId": {
"type": "string",
"description": "The video id, e.g. vi4k0jvEUuaTdRAEjQ4Jfrgz."
}
}
}Aggregated play analytics for videos over a date range, grouped by a dimension. Read-only. GET /analytics/videos/plays.
| Argument | Type | Description |
|---|---|---|
| to | string | End date yyyy-mm-dd (inclusive). |
| from* | string | Start date yyyy-mm-dd (inclusive). Required. |
| filter | string | Filter expression, e.g. "videoId:vi123". |
| pageSize | integer | Results per page (max 100). Default 25. |
| dimension* | string | Dimension to group plays by. |
| currentPage | integer | Page number (1-based). Default 1. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"from",
"dimension"
],
"properties": {
"to": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "End date yyyy-mm-dd (inclusive)."
},
"from": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Start date yyyy-mm-dd (inclusive). Required."
},
"filter": {
"type": "string",
"description": "Filter expression, e.g. \"videoId:vi123\"."
},
"pageSize": {
"type": "integer",
"maximum": 100,
"description": "Results per page (max 100). Default 25.",
"exclusiveMinimum": 0
},
"dimension": {
"enum": [
"videoId",
"emittedAt",
"country",
"deviceType",
"operatingSystem",
"browser"
],
"type": "string",
"description": "Dimension to group plays by."
},
"currentPage": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Page number (1-based). Default 1.",
"exclusiveMinimum": 0
}
}
}Get encoding and ingest status for a video (upload progress, encoding qualities, playability). Read-only. GET /videos/{videoId}/status.
| Argument | Type | Description |
|---|---|---|
| videoId* | string | The video id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"videoId"
],
"properties": {
"videoId": {
"type": "string",
"description": "The video id."
}
}
}List caption tracks for a video (language, source URL, default flag). Read-only. GET /videos/{videoId}/captions.
| Argument | Type | Description |
|---|---|---|
| videoId* | string | The video id. |
| pageSize | integer | Results per page (max 100). Default 25. |
| currentPage | integer | Page number (1-based). Default 1. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"videoId"
],
"properties": {
"videoId": {
"type": "string",
"description": "The video id."
},
"pageSize": {
"type": "integer",
"maximum": 100,
"description": "Results per page (max 100). Default 25.",
"exclusiveMinimum": 0
},
"currentPage": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Page number (1-based). Default 1.",
"exclusiveMinimum": 0
}
}
}List chapter tracks for a video. Read-only. GET /videos/{videoId}/chapters.
| Argument | Type | Description |
|---|---|---|
| videoId* | string | The video id. |
| pageSize | integer | Results per page (max 100). Default 25. |
| currentPage | integer | Page number (1-based). Default 1. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"videoId"
],
"properties": {
"videoId": {
"type": "string",
"description": "The video id."
},
"pageSize": {
"type": "integer",
"maximum": 100,
"description": "Results per page (max 100). Default 25.",
"exclusiveMinimum": 0
},
"currentPage": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Page number (1-based). Default 1.",
"exclusiveMinimum": 0
}
}
}List live streams in the account, with optional filters (streamKey, name) and sorting. Read-only. GET /live-streams.
| Argument | Type | Description |
|---|---|---|
| name | string | Filter by live stream name (substring). |
| sortBy | string | Field to sort by. |
| pageSize | integer | Results per page (max 100). Default 25. |
| sortOrder | string | Sort direction. |
| streamKey | string | Filter by exact stream key. |
| currentPage | integer | Page number (1-based). Default 1. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"name": {
"type": "string",
"description": "Filter by live stream name (substring)."
},
"sortBy": {
"enum": [
"createdAt",
"updatedAt"
],
"type": "string",
"description": "Field to sort by."
},
"pageSize": {
"type": "integer",
"maximum": 100,
"description": "Results per page (max 100). Default 25.",
"exclusiveMinimum": 0
},
"sortOrder": {
"enum": [
"asc",
"desc"
],
"type": "string",
"description": "Sort direction."
},
"streamKey": {
"type": "string",
"description": "Filter by exact stream key."
},
"currentPage": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Page number (1-based). Default 1.",
"exclusiveMinimum": 0
}
}
}List customized player themes in the account. Read-only. GET /players.
| Argument | Type | Description |
|---|---|---|
| sortBy | string | Field to sort by. |
| pageSize | integer | Results per page (max 100). Default 25. |
| sortOrder | string | Sort direction. |
| currentPage | integer | Page number (1-based). Default 1. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"sortBy": {
"enum": [
"createdAt",
"updatedAt"
],
"type": "string",
"description": "Field to sort by."
},
"pageSize": {
"type": "integer",
"maximum": 100,
"description": "Results per page (max 100). Default 25.",
"exclusiveMinimum": 0
},
"sortOrder": {
"enum": [
"asc",
"desc"
],
"type": "string",
"description": "Sort direction."
},
"currentPage": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Page number (1-based). Default 1.",
"exclusiveMinimum": 0
}
}
}List videos in the account, with optional filters (title, tags, metadata, description, liveStreamId) and sorting. Read-only. GET /videos.
| Argument | Type | Description |
|---|---|---|
| tags | array | Filter by tags (all must match). Sent as tags[]. |
| title | string | Filter by video title (substring). |
| sortBy | string | Field to sort by. |
| metadata | object | Filter by metadata key/value pairs. Sent as metadata[key]=value. |
| pageSize | integer | Results per page (max 100). Default 25. |
| sortOrder | string | Sort direction. |
| currentPage | integer | Page number (1-based). Default 1. |
| description | string | Filter by description (substring). |
| liveStreamId | string | Return only videos recorded from this live stream id. |
List webhooks configured in the account, optionally filtered by event name. Read-only. GET /webhooks.
| Argument | Type | Description |
|---|---|---|
| events | string | Filter by event name, e.g. "video.encoding.quality.completed". |
| pageSize | integer | Results per page (max 100). Default 25. |
| currentPage | integer | Page number (1-based). Default 1. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"events": {
"type": "string",
"description": "Filter by event name, e.g. \"video.encoding.quality.completed\"."
},
"pageSize": {
"type": "integer",
"maximum": 100,
"description": "Results per page (max 100). Default 25.",
"exclusiveMinimum": 0
},
"currentPage": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Page number (1-based). Default 1.",
"exclusiveMinimum": 0
}
}
}WRITE. Update fields on an existing video. Only the provided fields are changed. PATCH /videos/{videoId}.
| Argument | Type | Description |
|---|---|---|
| tags | array | Replacement tag list. |
| title | string | New title. |
| public | boolean | New public/private flag. |
| videoId* | string | The video id to update. |
| metadata | object | Replacement metadata (sent as [{key,value}]). |
| playerId | string | Player theme id to attach. |
| panoramic | boolean | New panoramic flag. |
| description | string | New description. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"videoId"
],
"properties": {
"tags": {
"type": "array",
"items": {
"type": "string"
},
"description": "Replacement tag list."
},
"title": {
"type": "string",
"description": "New title."
},
"public": {
"type": "boolean",
"description": "New public/private flag."
},
"videoId": {
"type": "string",
"description": "The video id to update."
},
"metadata": {
"type": "object",
"description": "Replacement metadata (sent as [{key,value}]).",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string"
}
},
"playerId": {
"type": "string",
"description": "Player theme id to attach."
},
"panoramic": {
"type": "boolean",
"description": "New panoramic flag."
},
"description": {
"type": "string",
"description": "New description."
}
}
}{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"tags": {
"type": "array",
"items": {
"type": "string"
},
"description": "Filter by tags (all must match). Sent as tags[]."
},
"title": {
"type": "string",
"description": "Filter by video title (substring)."
},
"sortBy": {
"enum": [
"title",
"createdAt",
"publishedAt",
"updatedAt"
],
"type": "string",
"description": "Field to sort by."
},
"metadata": {
"type": "object",
"description": "Filter by metadata key/value pairs. Sent as metadata[key]=value.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string"
}
},
"pageSize": {
"type": "integer",
"maximum": 100,
"description": "Results per page (max 100). Default 25.",
"exclusiveMinimum": 0
},
"sortOrder": {
"enum": [
"asc",
"desc"
],
"type": "string",
"description": "Sort direction."
},
"currentPage": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Page number (1-based). Default 1.",
"exclusiveMinimum": 0
},
"description": {
"type": "string",
"description": "Filter by description (substring)."
},
"liveStreamId": {
"type": "string",
"description": "Return only videos recorded from this live stream id."
}
}
}