Viddler
Official Viddler MCP: list videos, manage access control, pull proof-of-viewing analytics.
Should I use this
Quality & Safety
Findings (1)
- LOWin viddler_analytics_account_usage
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"viddler-mcp": {
"url": "https://mcp.viddler.com/mcp"
}
}
}Remote endpoints
https://mcp.viddler.com/mcpstreamable-httpWhat it can do
Tool inventory
Tools (12)
🟡viddler_feedback_submit(category, message, page_url)
File a feature request, bug report, or general feedback to the Viddler team from inside your MCP client. Goes into the same triage queue as the in-app feedback widget. Use category 'feature' for feature requests (the default intent), 'bug' for problems, 'general' otherwise.
Input Schema
{
"type": "object",
"properties": {
"category": {
"type": "string",
"enum": [
"feature",
"bug",
"general"
],
"description": "Type of feedback. Use 'feature' for feature requests."
},
"message": {
"type": "string",
"minLength": 1,
"maxLength": 2000,
"description": "The feedback text (1-2000 characters)."
},
"page_url": {
"type": "string",
"maxLength": 500,
"description": "Optional: the video or page URL this feedback is about."
}
},
"required": [
"category",
"message"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡viddler_access_set_password(video_id, password)
Gate a video behind a secret password. While protected, playback (including embeds) requires the password and Viddler swaps to a Mux signed-playback id. Returns the updated protection state.
Input Schema
{
"type": "object",
"properties": {
"video_id": {
"type": "string",
"description": "Video id or uniqueId."
},
"password": {
"type": "string",
"minLength": 1,
"description": "The secret password viewers must enter."
}
},
"required": [
"video_id",
"password"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🔴viddler_access_remove_password(video_id)
Turn off password protection for a video. Reverts to the public playback id so the video plays without a password again.
Input Schema
{
"type": "object",
"properties": {
"video_id": {
"type": "string",
"description": "Video id or uniqueId."
}
},
"required": [
"video_id"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡viddler_access_set_custom_url(video_id, custom_url)
Give a video a branded, human-friendly custom URL slug for sharing. Returns the updated video.
Input Schema
{
"type": "object",
"properties": {
"video_id": {
"type": "string",
"description": "Video id or uniqueId."
},
"custom_url": {
"type": "string",
"minLength": 1,
"description": "The desired URL slug (must be unique)."
}
},
"required": [
"video_id",
"custom_url"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢viddler_analytics_get_views(video_id)
Return view counts and per-view records for a video: total views, remaining/available views, and the viewer log. The core 'who watched' proof-of-viewing data.
Input Schema
{
"type": "object",
"properties": {
"video_id": {
"type": "string",
"description": "Video id or uniqueId."
}
},
"required": [
"video_id"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪viddler_analytics_account_usage
Return the authenticated account's plan, quota used/remaining, and video count.
Input Schema
{
"type": "object",
"properties": {},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢viddler_videos_list
List videos owned by the authenticated account.
Input Schema
{
"type": "object",
"properties": {},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡viddler_videos_get(video_id)
Fetch the full record for one video: status, playback id, duration, moderation, storage state, protection. Poll this after create_upload until muxPlaybackId is no longer 'pending'.
Input Schema
{
"type": "object",
"properties": {
"video_id": {
"type": "string",
"description": "Video id or uniqueId."
}
},
"required": [
"video_id"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡viddler_videos_set_title(video_id, title)
Update a video's title.
Input Schema
{
"type": "object",
"properties": {
"video_id": {
"type": "string",
"description": "Video id or uniqueId."
},
"title": {
"type": "string",
"minLength": 1,
"description": "New title."
}
},
"required": [
"video_id",
"title"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡viddler_videos_set_description(video_id, description)
Update a video's description.
Input Schema
{
"type": "object",
"properties": {
"video_id": {
"type": "string",
"description": "Video id or uniqueId."
},
"description": {
"type": "string",
"description": "New description."
}
},
"required": [
"video_id",
"description"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡viddler_videos_create_upload(title, file_size_bytes)
Step 1 of uploading a video. Returns { uploadId, uploadUrl }. PUT the raw video file bytes to uploadUrl (e.g. `curl -X PUT --upload-file video.mp4 '<uploadUrl>'` — no auth header needed, the URL is pre-signed). Then call viddler_videos_register with the uploadId to create the video record. Files must be at most 1 GB (1073741824 bytes). Free videos must be at most 10 minutes. Requires a videos:write token.
Input Schema
{
"type": "object",
"properties": {
"title": {
"type": "string",
"maxLength": 200,
"description": "Optional title to attach to the upload."
},
"file_size_bytes": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 1073741824,
"description": "Source file byte count for preflight validation. Send when known; omission supports older clients."
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡viddler_videos_register(upload_id, title, description, custom_url)
Step 2 of uploading a video: after the file has been PUT to the uploadUrl, call this with the uploadId to create the video record. Returns the video (muxPlaybackId will be 'pending'). Poll viddler_videos_get until muxPlaybackId resolves — processing usually takes under a minute. If title/description are omitted, AI generates them from the video content.
Input Schema
{
"type": "object",
"properties": {
"upload_id": {
"type": "string",
"description": "The uploadId returned by viddler_videos_create_upload."
},
"title": {
"type": "string",
"maxLength": 200,
"description": "Optional explicit title."
},
"description": {
"type": "string",
"maxLength": 5000,
"description": "Optional explicit description."
},
"custom_url": {
"type": "string",
"maxLength": 100,
"description": "Optional custom URL slug."
}
},
"required": [
"upload_id"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Community
Evidence