Video hosting: upload, organize and configure videos, analytics, AI subtitles and Shorts.
Connect Remote server
claude mcp add --transport http mcp https://mcp.pandavideo.com/mcp --header "Authorization: Bearer <YOUR_API_KEY>"
{
"mcpServers": {
"mcp": {
"url": "https://mcp.pandavideo.com/mcp",
"headers": {
"Authorization": "Bearer <YOUR_API_KEY>"
}
}
}
}
{
"servers": {
"mcp": {
"type": "http",
"url": "https://mcp.pandavideo.com/mcp",
"headers": {
"Authorization": "Bearer <YOUR_API_KEY>"
}
}
}
}
Settings > Connectors > Add custom connector
URL: https://mcp.pandavideo.com/mcp
Replace the values in angle brackets with your own. Keys stay on your machine; we never see them.
Tools 80 found in our last check
panda_list_videosList videos. Each video has: id, video_external_id, title, status, created_at, length (seconds), folder_id, config. `id` is what most tools take as video_id; video_external_id is what panda_get_best_times_by_videos / panda_get_viewers_by_videos take. Results are returned newest…
panda_get_videoGet full properties of a video by its ID, including video_external_id, config (config.ctas holds the pause/end thumbnail CTAs), profile, status, duration, folder, subtitles, etc.
panda_update_videoUpdate basic metadata of a video: title, description text, or move to a different folder. Do NOT use this for player settings, chapters, subtitles, thumbnails, or any playback configuration — use the specific tools for those.
panda_delete_videosDelete one or more videos by ID. Sends to trash for 30 days.
panda_get_videos_statusProcessing status of up to 100 videos in one call. Each item: {id, status, available_resolutions, pending_resolutions, encoding_resolutions, playable, conversion_percentage, estimated_time, ...}. No titles (use panda_get_video or panda_list_videos). IDs that don't exist or aren'…
panda_get_videos_ai_resourcesWhich AI Package resources (e.g. eBook, quiz, mind map; one entry per type and language) up to 100 videos already have, in one call. Subtitles and dubbing are not included. Each item: {id, ai_resources: [{type, srclang}]} (type: abstract = eBook, mindmap, questions = quiz). A vi…
panda_move_videosMove one or more videos to a folder
panda_duplicate_videoCreate a copy of a video. Only works for CONVERTED, non-external, non-funnel videos.
panda_reencode_videoRe-encode a video with a compression mode (no credit cost). The video is processed again from its original file (backup): without the backup the API refuses. Its current qualities are replaced by the re-encoded ones and it stays in processing until done. Encryption (HLS) is kept…
panda_upload_video_from_urlImport a video from an external URL (YouTube, Vimeo, S3, generic HTTPS)
panda_list_foldersList all folders. Returns array of {id, name, parent_folder_id, status, created_at, videos_count}.
panda_create_folderCreate a new folder. Returns the created {id, name, parent_folder_id}.
panda_get_folderGet a folder's details and one page of its videos. Returns {id, name, parent_folder_id, status, videos: [...], pagination: {page, limit, total_count, total_pages, has_next, has_prev}}. Only videos directly in this folder; subfolders are not included (use panda_list_folders). To…
panda_update_folderUpdate folder properties (name, parent). Also used to recover deleted folders with status=true.
panda_delete_folderDelete a folder by ID. WARNING: All videos and subfolders inside are also deleted (cascade). Goes to trash for 30 days.
panda_list_playlistsList all playlists. Returns array of {id, name, videos_quantity, duration, access_type, updated_at}.
panda_create_playlistCreate a new playlist. Videos are REFERENCES — removing from playlist does NOT delete the video. Returns the created {id, name, description, access_type}.
panda_get_playlistGet details of a specific playlist. Returns {id, name, description, videos_quantity, access_type, creator_name, duration, updated_at}.
panda_update_playlistUpdate a playlist's properties
panda_delete_playlistDelete a playlist. Videos are NOT deleted — only the collection is removed.
panda_get_playlist_videosList all videos in a playlist. Returns array of {id, video_id, order, video: {id, title, duration}}.
panda_add_videos_to_playlistAdd videos to a playlist with order. Returns the updated playlist video entries [{video_id, playlist_id, order}].
panda_remove_video_from_playlistRemove a video from a playlist. Does NOT delete the video.
panda_list_profilesList the account's player profiles (GET /profile). 'Profiles' are player UI configs, not user accounts. Returns an array of {id, name, pullzone_name, is_default, updated_at, videos_count, feature_tags, colors, availableQualities}. The default profile ('Padrão') has is_default=tr…
panda_create_profileCreate a player profile (POST /profile) already configured — colors, controls, caption appearance (colors.captionsColor / captionsBackgroundColor + captionsSize), VSL, save progress, general (speed, theme, gear menu, offline) and availableQualities, all in one call. Send only wh…
panda_get_profileGet one player profile with all its settings: controls, colors (incl. caption colors and captionsFontSize), vsl, saveProgress, hideControlsOnStart, general (speed, theme, gear menu, offline, caption size), availableQualities, is_default and feature_tags.
panda_update_profileUpdate a player profile's settings. Changes EVERY video linked to the profile. Covers: player colors (colors.primaryColor / controlsColor), enabled controls list, smart autoplay (vsl.smartAutoplay), VSL mode (vsl.disablePause / disableForward / alternativeProgress), playback spe…
panda_delete_profileDelete a player profile. The default profile ('Padrão') cannot be deleted. A profile with no videos is deleted directly. A profile WITH videos needs `strategy` — ask the user which one: 'keep' = each video keeps its current look (gets its own copy of the profile's settings); 'mi…
panda_apply_profile_to_videosLink a player profile to videos — pass video_ids OR folder_id (every video in that folder, any status; subfolders are not included). A video that had its own customized player (exclusive profile) loses that customization. Up to 5 video_ids are applied immediately; more videos, o…
panda_duplicate_profileCopy a player profile's settings into a new profile named '<name> (2)', '(3)'… The copy has no videos and is never the default. Exclusive profiles (a single video's own player) cannot be duplicated. Returns {id, name}.
panda_restore_profileReset a player profile to the account's global player settings (panda_get_player_config): controls, colors, VSL, general, save progress, hideControlsOnStart and availableQualities are all replaced — this also drops the profile's theme, gear menu, caption size and offline setting…
panda_set_default_profileMake a profile the account's default player profile ('Padrão'). Exclusive profiles cannot be default. If the current default profile has videos, ASK the user what happens to them and pass unlinked_videos_strategy: 'apply-new' = they follow the new default; 'keep-current' = they…
panda_list_livesList all live streams. Returns array of {id, title, status, scheduled_at, region, quality_package, save_vod, stream_key_id, stream_key, rtmp, live_player, created_at}. Status: provisioning (channel starting), offline (waiting for signal or scheduled), online, finishing, finished…
panda_create_liveCreate a new live stream event. Trial accounts cannot create lives. A quality_package above the plan's maximum is silently lowered to the plan's maximum. Without stream_key_id the account's default stream key is used; a key held by another live (online, provisioning, expired, wa…
panda_get_liveGet details of a specific live stream. Returns {id, title, status, scheduled_at, stream_key, rtmp, live_hls, created_at}. Status: provisioning (channel starting), offline (waiting for signal or scheduled), online, finishing, finished, finished_imported (recording became a video)…
panda_regenerate_liveRegenerate an expired live so it can be broadcast again. Only works when status is expired (otherwise 400 with the current status). Keeps the same stream key, but the RTMP server may change: update it in OBS. Start broadcasting within 15 minutes or the live expires again. Return…
panda_finish_liveEnd a live broadcast
panda_delete_livesDelete one or more live streams
panda_list_stream_keysList all stream keys for live broadcasting. Returns array of {id, title, region, default, stream_key, in_use, in_use_by: {live_id, title, status}, created_at}. A key is held (in_use) by a live that is online, provisioning, expired, waiting to start or scheduled within 24h; an ex…
panda_create_stream_keyCreate a new stream key for OBS or other streaming software. The account's first key becomes the default.
panda_get_live_viewersGet viewer history for a live stream. Returns time-series array of viewer counts.
panda_get_account_analyticsGet general analytics metrics for the whole account. Returns {views, unique_viewers, watch_time_seconds, avg_watch_percentage, plays}.
panda_get_video_analyticsGet analytics metrics for a specific video. Returns {views, unique_viewers, watch_time_seconds, avg_watch_percentage, plays}.
panda_get_retention_analyticsGet audience retention analytics (account-wide or per video). Returns array of {percentage, viewers} showing drop-off at each point.
panda_get_ranking_analyticsGet ranking analytics for the account. Returns {most_watched: [{video_id, title, watch_time}], most_played: [{video_id, title, plays}]}.
panda_get_realtime_analyticsGet the real-time snapshot of the account: how many viewers are watching now and on which devices. Returns {total_users, devices: {mobile, desktop, others}, geojson} — geojson (the dashboard map clusters) comes empty in this account-wide snapshot; no per-viewer data (IP, browser…
panda_get_bandwidth_analyticsGet bandwidth/traffic usage by folder, by video, or DRM by video. Returns array of {name, bandwidth_bytes, video_id?} entries.
panda_get_unwatched_videosList the account's videos that had NO access at all in a period (the inverse of the ranking). Whole account only. Only videos that already existed on start_date are considered. Returns {start_date, end_date, data: [{id, video_external_id, title, created_at}], pagination: {limit,…
panda_get_best_timesWhich weekday and 2-hour slot the audience of the WHOLE account plays the most (or sees the player the most) in a period — "best time to publish". Weekday × 2-hour slot grid, summed over the period — the same grid as the dashboard heatmap (Analytics → Best times), with the hours…
panda_get_best_times_by_videosWhich weekday and 2-hour slot the audience of specific videos (or of every video in a folder) plays the most in a period. Weekday × 2-hour slot grid, summed over the period — the same grid as the dashboard heatmap (Analytics → Best times), with the hours exactly as Panda analyti…
panda_get_viewers_by_videosWho watched specific videos (or any video of a folder) in a period: distinct viewers, identified by IP. The IP is returned MASKED (a.b.x.x) — the full list is in the dashboard (Analytics → Users). The selection only chooses WHICH viewers appear: each viewer's metrics (play, view…
panda_list_funnelsList all funnels. Returns {data: [{id, name, videos_count, created_at}]}. A funnel with videos_count=0 has no videos. Funnels are NOT folders.
panda_create_funnelCreate a new video funnel
panda_get_funnelGet a funnel's details and its videos. Returns {data: {id, name, videos: [{id, title, status, is_first}]}}. Funnels are NOT folders.
panda_update_funnelUpdate a funnel's properties (rename)
panda_delete_funnelDelete a funnel by ID. WARNING: this is destructive. The funnel is removed and the videos inside it go to the trash for 30 days (restoring the funnel's folder brings them back; the funnel does not come back).
panda_add_videos_to_funnelAdd one or more videos to a funnel with optional coordinates. Every call must mark exactly one video with is_first: true — it becomes the entry video. To add a video without changing the entry, also send the current entry video (from panda_get_funnel) with is_first: true.
panda_remove_videos_from_funnelRemove one or more videos from a funnel. The videos leave the funnel and go to the library root — they are not deleted (the dashboard deletes them in a second call; this tool does not).
panda_get_watermark_statusCheck whether watermark/DRM is currently active on the account. Returns {active: boolean}.
panda_enable_watermarkEnable watermark protection for the account
panda_disable_watermarkDisable watermark protection for the account
panda_list_watermark_groupsList all watermark groups. Returns array of {id, name, active, video_ids: [], folder_ids: [], created_at}.
panda_create_watermark_groupCreate a new watermark group
panda_get_watermark_groupGet a watermark group's details. Returns {id, name, video_ids: [], folder_ids: [], created_at}.
panda_update_watermark_groupUpdate a watermark group
panda_delete_watermark_groupDelete a watermark group
panda_manage_drm_group_itemsAdd or remove videos and/or folders from a DRM watermark group. Returns the updated group with current video_ids and folder_ids.
panda_get_thumbnailsGet the cover (start thumbnail) of a video. Returns {response: {active, default}}: active = the uploaded cover in use (absent when none was uploaded), default = the automatic thumbnails generated from the video. Pause and end thumbnails are NOT listed here — they are CTAs in the…
panda_add_thumbnailUpload the video cover (start thumbnail) — the image shown before the user presses play. Provide `image_url` pointing to a publicly reachable image (PNG/JPG/GIF); the tool downloads it and uploads as multipart to the Panda API. Replaces any existing start thumbnail. After this r…
panda_add_pause_thumbnailUpload a pause thumbnail — an image shown when the viewer pauses the video. Provide `image_url` pointing to a publicly reachable JPG, PNG or GIF up to 5 MB. The upload also creates the pause CTA, so the image shows in the player right away, for the whole video. A video can have…
panda_add_end_thumbnailUpload an end thumbnail — an image shown after the video finishes. Provide `image_url` pointing to a publicly reachable JPG, PNG or GIF up to 5 MB. The upload also creates the end CTA, so the image shows in the player right away. A video has one end thumbnail: a new upload repla…
panda_delete_thumbnailDelete a thumbnail from a video (image and its player CTA). Type: 'start' (default, the cover), 'pause', 'end'. For 'pause', thumb_name is required and must be the exact file name — returned by panda_add_pause_thumbnail, or metadata.thumbId of the 'pause' CTA in panda_get_video_…
panda_get_subtitlesGet all subtitle information for a video
panda_get_subtitle_by_languageGet a subtitle file for a specific language
panda_delete_subtitleRemove a subtitle from a video by language
panda_generate_ai_subtitlesGenerate subtitles for a video using Panda AI. Creates a transcription in the specified language. Costs credits based on video duration and tier.
panda_update_subtitle_visibilityShow or hide a subtitle language (hidden subtitles are not visible but still indexable for search)
panda_download_subtitleDownload a subtitle file for a specific language
panda_get_videos_countGet total video count by status (CONVERTED, CONVERTING, DRAFT, etc.)
panda_get_custom_fieldsGet all custom fields for a video. Returns array of {id, key, value} metadata pairs.
Headers
| Name | Description |
|---|---|
AuthorizationOptional, secret | Panda Video API key (panda-...). Optional: clients that support OAuth 2.1 sign in instead. |
Details
| Endpoint | https://mcp.pandavideo.com/mcp (Streamable HTTP) |
| First published | 5 Oct 2026 |
| Last updated | 5 Oct 2026 |
| Registry name | com.pandavideo/mcp |
More ai and media servers See all
Listing data from the official MCP registry. Status and tools from NestDaddy's daily check. Browse all MCP servers.
