Panda Video
REMOTE · MCP.PANDAVIDEO.COM
Video hosting: upload, organize and configure videos, analytics, AI subtitles and Shorts.
Available components
Last scanned (15 hours ago)
Scores higher than 99% of remote servers
Reachable. Last reached 5 Nov 2026.
Category Design and Media
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security89
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation is enforced on tool calls, advertised via RFC 9728 protected-resource metadata. Discovery is public, which costs nothing: no tool can be invoked without a token. View diagnostics → Pass
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- HSTS check failed: the Strict-Transport-Security header is absent. See how to fix → View diagnostics → Fail
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
- The authorisation server offers only Dynamic Client Registration (RFC 7591), which MCP 2026-07-28 deprecated in favour of Client ID Metadata Documents. View diagnostics → Partial
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability80
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (good).Pass
- Context-footprint check failed: tool/resource definitions use about 27581 tokens (~126/item across 218 items; 216 tools + 2 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management99
- Stability check failed: schema churn in the 30 days we've observed: 0 tool removals, 2 breaking changes, 0 auth/transport breaks, 39 additions. See how to fix → Fail
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- All 29 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
- An AI judge read all 217 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Checks we ran (13)
- TLS certificate
- Authorization
- HTTPS
- HSTS header
- DNSSEC
- Transport
- Schema quality
- Stability
- Tool coverage
- Injection markers
- Destructive annotations
- Judged manipulation
- MCP protocol
Does not apply to this hosted endpoint (2)
- Supply Chain SecurityScored on package channels only. This is a hosted endpoint, so there is nothing to install or inspect.
- Provenance & TransparencyScored on package channels only. This is a hosted endpoint, so there is nothing to install or inspect.
The score does not measure everything. What the score does not measure →
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 5 Nov 26 +1
- Tool “panda_action_dub_folder_videos” rewrote its description, which is the text the model reads security
- Tool “panda_create_ai_dubbing” rewrote its description, which is the text the model reads security
- “panda_action_dub_folder_videos” reworded the description of “mode” cosmetic
- “panda_create_ai_dubbing” reworded the description of “is_lipsync” cosmetic
- 4 Nov 26 0
- Tool “panda_add_videos_to_funnel” rewrote its description, which is the text the model reads security
- Tool “panda_delete_funnel” rewrote its description, which is the text the model reads security
- Tool “panda_get_business_rules” rewrote its description, which is the text the model reads security
- Tool “panda_help_search” rewrote its description, which is the text the model reads security
- Tool “panda_remove_videos_from_funnel” rewrote its description, which is the text the model reads security
- 3 Nov 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 89 to 93.
- 31 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 79 to 83.
- 30 Oct 26 0
- New tool “panda_delete_ai_resource”, which the server declares destructive security
- New tool “panda_regenerate_ai_resource”, which the server declares destructive security
- New tool “panda_update_ai_resource”, which the server declares destructive security
- Tool “panda_action_credit_preflight” rewrote its description, which is the text the model reads security
- Tool “panda_action_enable_ai_package_for_folder” rewrote its description, which is the text the model reads security
- Tool “panda_delete_ai_workflow” rewrote its description, which is the text the model reads security
- Tool “panda_get_ai_workflows” rewrote its description, which is the text the model reads security
- Tool “panda_get_videos_ai_resources” rewrote its description, which is the text the model reads security
- Schema quality: 24596 → 27392 ▼ functional
- New tool “panda_confirm_ai_ebook_pdf” functional
- New tool “panda_create_ai_resource” functional
- New tool “panda_generate_ai_resource” functional
- New tool “panda_get_ai_ebook_images” functional
- New tool “panda_get_ai_ebook_upload_url” functional
- New tool “panda_get_ai_resource_content” functional
- New tool “panda_list_ai_works” functional
- New tool “panda_set_ai_resource_download” functional
- “panda_action_enable_ai_package_for_folder” added an optional parameter “resources” cosmetic
- “panda_action_enable_ai_package_for_folder” added an optional parameter “to_langs” cosmetic
- “panda_action_credit_preflight” reworded the description of “target_langs” cosmetic
- “panda_action_enable_ai_package_for_folder” reworded the description of “dry_run” cosmetic
- “panda_action_enable_ai_package_for_folder” reworded the description of “from_lang” cosmetic
- 29 Oct 26 +1
- New tool “panda_encrypt_videos”, which the server declares destructive security
- New tool “panda_set_exclusive_playback”, which the server declares destructive security
- New tool “panda_set_new_uploads_encryption”, which the server declares destructive security
- New tool “panda_update_library_qualities”, which the server declares destructive security
- Tool “panda_action_reencode_folder_videos” rewrote its description, which is the text the model reads security
- Tool “panda_action_set_allowed_domains” rewrote its description, which is the text the model reads security
- Tool “panda_action_set_anti_download” rewrote its description, which is the text the model reads security
- Tool “panda_reencode_video” rewrote its description, which is the text the model reads security
- Tool “panda_set_block_none_refer” rewrote its description, which is the text the model reads security
- Tool “panda_update_folder_refer” rewrote its description, which is the text the model reads security
- Tool “panda_reencode_video” is now declared destructive security
- New tool “panda_get_exclusive_playback” functional
- New tool “panda_get_hls_encryption_batches” functional
- New tool “panda_get_library_qualities” functional
- New tool “panda_get_new_uploads_encryption” functional
- New tool “panda_list_hls_encrypted_videos” functional
- “panda_action_reencode_folder_videos” reworded the description of “compression_mode” cosmetic
- “panda_action_set_allowed_domains” reworded the description of “block_none_refer” cosmetic
- “panda_reencode_video” reworded the description of “compression_mode” cosmetic
- “panda_set_block_none_refer” reworded the description of “block_none_refer” cosmetic
- Tool “panda_set_block_none_refer” changed its title: Toggle Block-No-Referer Policy → Turn Domain Protection On/Off cosmetic
- 28 Oct 26 0
- New tool “panda_remove_tutor_video”, which the server declares destructive security
- Tool “panda_action_add_folder_videos_to_tutor” rewrote its description, which is the text the model reads security
- Tool “panda_add_tutor_videos” rewrote its description, which is the text the model reads security
- Tool “panda_update_ai_assistant_video_bindings” rewrote its description, which is the text the model reads security
- Tool “panda_update_ai_assistant_video_bindings” no longer declares itself destructive security
- “panda_add_tutor_videos” added an optional parameter “lang” cosmetic
- “panda_update_ai_assistant_video_bindings” reworded the description of “lang” cosmetic
- “panda_update_ai_assistant_video_bindings” reworded the description of “video_ids” cosmetic
- 27 Oct 26 0
- New tool “panda_cancel_partial_deletion”, which the server declares destructive security
- New tool “panda_request_partial_deletion”, which the server declares destructive security
- New tool “panda_update_sign_language_display”, which the server declares destructive security
- Tool “panda_action_apply_profile_to_folder” rewrote its description, which is the text the model reads security
- Tool “panda_action_dub_folder_videos” rewrote its description, which is the text the model reads security
- Tool “panda_action_request_folder_downloads” rewrote its description, which is the text the model reads security
- Tool “panda_check_download_status” rewrote its description, which is the text the model reads security
- Tool “panda_create_ai_dubbing” rewrote its description, which is the text the model reads security
- Tool “panda_get_folder” rewrote its description, which is the text the model reads security
- Tool “panda_request_download” rewrote its description, which is the text the model reads security
- New tool “panda_get_videos_ai_resources” functional
- New tool “panda_get_videos_status” functional
- New tool “panda_list_partial_deletions” functional
- “panda_get_folder” added an optional parameter “limit” cosmetic
- “panda_get_folder” added an optional parameter “page” cosmetic
- “panda_action_dub_folder_videos” reworded the description of “from_lang” cosmetic
- “panda_action_dub_folder_videos” reworded the description of “mode” cosmetic
- “panda_action_request_folder_downloads” reworded the description of “language” cosmetic
- “panda_action_request_folder_downloads” reworded the description of “quality” cosmetic
- “panda_check_download_status” reworded the description of “language” cosmetic
- “panda_check_download_status” reworded the description of “quality” cosmetic
- “panda_create_ai_dubbing” reworded the description of “from_lang” cosmetic
- “panda_create_ai_dubbing” reworded the description of “is_lipsync” cosmetic
- “panda_create_ai_dubbing” reworded the description of “replace_existing_subtitles” cosmetic
- “panda_request_download” reworded the description of “language” cosmetic
- “panda_request_download” reworded the description of “quality” cosmetic
- “panda_create_ai_dubbing” made “from_lang” optional cosmetic
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 5 Nov 2026 · Probed https://mcp.pandavideo.com/mcp
TLS valid
Negotiated TLS 1.2 with TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=*.pandavideo.com | CN=Amazon RSA 2048 M01,O=Amazon,C=US | 22 Oct 2026 | 7 May 2027 | RSA 2048 | SHA256-RSA | a6b4f4ff4ff56832987356f0d55e10a |
| SANs: *.pandavideo.com | ||||||
| CN=Amazon RSA 2048 M01,O=Amazon,C=US (CA) | CN=Amazon Root CA 1,O=Amazon,C=US | 23 Aug 2022 | 23 Aug 2030 | RSA 2048 | SHA256-RSA | 77312380b9d6688a33b1ed9bf9ccda68e0e0f |
| CN=Amazon Root CA 1,O=Amazon,C=US (CA) | CN=Starfield Services Root Certificate Authority - G2,O=Starfield Technologies\, Inc.,L=Scottsdale,ST=Arizona,C=US | 25 May 2015 | 31 Dec 2037 | RSA 2048 | SHA256-RSA | 67f944a2a27cdf3fac2ae2b01f908eeb9c4c6 |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of mcp.pandavideo.com. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | Trust anchor | 20326, 38696 | 8, 8 | Verified |
| com. | DS published | 19718 | 13 | Verified |
| pandavideo.com. | No DS | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication Enforced and verified
The endpoint asked for a token and published valid RFC 9728 metadata describing how to get one.
| Result | Enforced and verified |
|---|---|
| Enforced | On tool calls |
| HTTP status | 200 |
WWW-Authenticate challenge Bearer resource_metadata="https://mcp.pandavideo.com/.well-known/oauth-protected-resource/mcp", scope="videos:read videos:write"
Bearer resource_metadata="https://mcp.pandavideo.com/.well-known/oauth-protected-resource/mcp", scope="videos:read videos:write" Protected resource metadata
| Document | https://mcp.pandavideo.com/.well-known/oauth-protected-resource/mcp |
|---|---|
| Retrieved | Yes |
| Resource | https://mcp.pandavideo.com/mcp |
| Authorisation server | https://mcp.pandavideo.com |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://mcp.pandavideo.com/mcp | Verified | 200 | |
| http (plaintext) | http://mcp.pandavideo.com/mcp | HTTPS enforced | 301 | https://mcp.pandavideo.com:443/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
panda_list_ai_works List AI Works ~238
List the account's AI works (subtitles, translations, dubbing, lipsync, eBook=ABSTRACT, mind map=MINDMAP, quiz=QUESTIONS) page by page, newest first, with status (QUEUE, RUNNING, FINISHED, ERROR, SKIPPED). Only the latest attempt of each video × type × language. Filters: status, updated_since, video_id, folder_id (the API doesn't filter by type). Read-only. Returns {works: [{id, video_id, type, status, from_lang, to_lang, credits_charged, created_at, updated_at}], page, pages, total}.
| Name | Type | Req | Description |
|---|---|---|---|
| folder_id | string | – | Only this folder |
| limit | integer | – | Per page, 1–50 (default 25) |
| page | integer | – | Page (default 1) |
| status | array | – | Only these statuses |
| updated_since | string | – | Only works updated since this ISO date/time, e.g. '2026-10-01T00:00:00Z' |
| video_id | string | – | Only this video |
No output schema declared.
No examples provided.
panda_list_comparisons List Comparisons ~51
List all A/B test comparisons. Status: DRAFT → IN_PROGRESS → COMPLETED. Returns array of {id, name, description, status, videos: [], winner_video_id, created_at}.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
panda_list_folder_refer List Folder Domain Referrers ~88
List the domain referrers set directly on a folder. Returns { refers: [{ id, url, type, status, origin: { type, id } }] }. library_id is resolved automatically when omitted.
| Name | Type | Req | Description |
|---|---|---|---|
| folder_id | string | yes | Folder UUID whose referrers to list |
| library_id | string | – | Library UUID. Resolved from GET /library when omitted. |
No output schema declared.
No examples provided.
panda_list_folder_refer_inherited List Folder Effective Domain Referrers ~130
List the effective referrers that apply to a folder using override-total semantics: the folder's own referrers if it has any, otherwise the library-level referrers. Use this to know which domains actually gate playback for videos in the folder. Returns { refers: [{ id, url, type, status, origin: { type, id } }] }. library_id is resolved automatically when omitted.
| Name | Type | Req | Description |
|---|---|---|---|
| folder_id | string | yes | Folder UUID to resolve effective referrers for |
| library_id | string | – | Library UUID. Resolved from GET /library when omitted. |
No output schema declared.
No examples provided.
panda_list_folders List Folders ~54
List all folders. Returns array of {id, name, parent_folder_id, status, created_at, videos_count}.
| Name | Type | Req | Description |
|---|---|---|---|
| all_status | number | – | 1 to include deleted folders, 0 for active only |
No output schema declared.
No examples provided.
panda_list_funnels List Funnels ~46
List all funnels. Returns {data: [{id, name, videos_count, created_at}]}. A funnel with videos_count=0 has no videos. Funnels are NOT folders.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
panda_list_hls_encrypted_videos List HLS Encrypted Videos ~137
List the account's videos that are already encrypted (HLS). Videos still in an encryption batch only show up when it finishes (see panda_get_hls_encryption_batches). Returns {total, page, limit, pages, videos: [{id, title, status, folder_id, encrypted_at, available_resolutions, ...}]}. Default 25 videos per page, max 50; keep calling with page+1 while page < pages.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Videos per page (default: 25, max: 50) |
| page | integer | – | Page number (default: 1) |
No output schema declared.
No examples provided.
panda_list_invoices List Invoices ~40
List all invoices. Returns array of {id, status, amount_due, amount_paid, created, due_date, invoice_pdf, hosted_invoice_url}.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
panda_list_lives List Lives ~138
List 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, finished_imported (recording became a video), expired (no signal in time; can be regenerated). stream_key is a secret credential: show it only when the user asks for it (e.g. to set up OBS).
| Name | Type | Req | Description |
|---|---|---|---|
| page | number | – | Page number (default 1, 100 per page) |
No output schema declared.
No examples provided.
panda_list_notices List Notices ~143
List the notices the Panda team sent to the account (tips, alerts, news) — the ones shown in the dashboard notice card and Notifications panel. Only the account owner and admins have notices: any other user gets an empty list (not an error). Status: 'sent' = unread, 'read' = dismissed, 'completed' = the user already acted on it (clicked its button). Returns up to 100 [{id, notice_type, title, text, primary_button, secondary_button, status, created_at, read_at, completed_at}].
| Name | Type | Req | Description |
|---|---|---|---|
| status | string | – | Filter by status ('sent' = unread). Omit for all. |
No output schema declared.
No examples provided.
panda_list_partial_deletions List Partial Deletions ~133
List pending removals that can still be undone. type 'partial' = qualities/backup removed with panda_request_partial_deletion (cancel with panda_cancel_partial_deletion); 'video' = whole videos in the trash; 'all' (default) = both. Returns {retention_days, partial_deletions, pagination}.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Results per page (default: 25, max: 100) |
| page | integer | – | Page number (default: 1) |
| type | string | – | Default: all |
| video_id | string | – | Only this video |
No output schema declared.
No examples provided.
panda_list_plans List Plans ~25
List available subscription plans and pricing
| Name | Type | Req | Description |
|---|---|---|---|
| currency | string | – | Currency |
No output schema declared.
No examples provided.
panda_list_playlists List Playlists ~33
List all playlists. Returns array of {id, name, videos_quantity, duration, access_type, updated_at}.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
panda_list_profiles List Profiles ~104
List 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=true. Exclusive profiles (a single video's own customized player) are NOT listed. Use panda_get_profile for a profile's full settings. No pagination.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
panda_list_refer List Domain Referrers (library) ~95
List the library-level domain referrers (Domain Protection / allow-block list for playback). Returns { refers: [{ id, url, type, status }] } where type is ALLOW|BLOCK and status is one of active|inactive|pending|deleting|turning_inactive. library_id is resolved automatically when omitted.
| Name | Type | Req | Description |
|---|---|---|---|
| library_id | string | – | Library UUID. Resolved from GET /library when omitted. |
No output schema declared.
No examples provided.
panda_list_refer_all List All Domain Referrers (consolidated) ~161
List all of the library's domains consolidated by hostname across library and folder scopes. Returns { refers: [{ hostname, type, status, scope, library_refer_id, folders, type_inconsistency, created_at }] }. scope is library|folder|mixed; status may be 'mixed' when rows differ; library_refer_id is the library-level row id (null if folder-only); folders is an array of { folder_id, name, refer_id, status }; type_inconsistency=true when the same hostname has divergent ALLOW/BLOCK rows. Referrers with status=deleting are ignored. library_id is resolved automatically when omitted.
| Name | Type | Req | Description |
|---|---|---|---|
| library_id | string | – | Library UUID. Resolved from GET /library when omitted. |
No output schema declared.
No examples provided.
panda_list_short_segments List Short Segments ~43
List all generated segments (clips) for a Shorts job. Each segment has viralScore, duration, transcription.
| Name | Type | Req | Description |
|---|---|---|---|
| job_id | string | yes | Shorts job ID |
No output schema declared.
No examples provided.
panda_list_shorts List Shorts ~60
List all Shorts jobs. Projects expire after ~30 days. Returns array of {job_id, status, user_context: {video_title, source_type}, completed_segments, created_at}.
| Name | Type | Req | Description |
|---|---|---|---|
| page | number | – | Page number (default 1) |
No output schema declared.
No examples provided.
panda_list_stream_keys List Stream Keys ~115
List 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 expired live holds it until regenerated or deleted. stream_key is a secret credential: show it only when the user asks for it (e.g. to set up OBS).
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
panda_list_subaccounts List Subaccounts ~38
List all subaccounts and their usage limits. Returns array of {organization_id, name, status, credits_balance, storage_used, limits}.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
panda_list_users List Users ~35
List all users in the organization. Returns array of {id, name, email, role_id, role_name, created_at}.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
panda_list_videos List Videos ~192
List 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 first by default. There is NO server-side date filter or sorting — to find videos created on a specific date, fetch videos and check created_at in the response.
| Name | Type | Req | Description |
|---|---|---|---|
| folder_id | string | – | Filter by folder ID |
| limit | integer | – | Results per page (default: 25, max: 100) |
| page | integer | – | Page number (default: 1) |
| status | string | – | Filter by status (e.g. 'CONVERTED') |
| title | string | – | Search by video title (partial match, case-insensitive) |
No output schema declared.
No examples provided.
panda_list_watermark_groups List Watermark Groups ~71
List all watermark groups. Returns array of {id, name, active, video_ids: [], folder_ids: [], created_at}.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Results per page (default: 25, max: 100) |
| page | integer | – | Page number (default: 1) |
No output schema declared.
No examples provided.
panda_manage_drm_group_items Manage DRM Group Items ~83
Add or remove videos and/or folders from a DRM watermark group. Returns the updated group with current video_ids and folder_ids.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | Whether to add or remove items |
| drm_group_id | string | yes | Watermark group ID |
| folder_ids | array | – | Folder IDs |
| video_ids | array | – | Video IDs |
No output schema declared.
No examples provided.
panda_move_videos Move Videos ~61
Move one or more videos to a folder
| Name | Type | Req | Description |
|---|---|---|---|
| folder_id | string | yes | Target folder ID, or "root" to move to the root (no folder) |
| video_ids | array | yes | List of video IDs to move (max 50) |
No output schema declared.
No examples provided.
panda_reencode_video Reencode Video ~127
Re-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. To encrypt videos use panda_encrypt_videos.
| Name | Type | Req | Description |
|---|---|---|---|
| compression_mode | string | yes | size = 'Econômica' (smaller files), balanced = 'Equilibrada', quality = 'Maior qualidade' (dashboard names) |
| video_id | string | yes | Video ID |
No output schema declared.
No examples provided.
panda_regenerate_ai_resource Regenerate AI Resource ~304
Generate AGAIN an existing AI package resource of a video in one language — PAID and cannot be undone: the current one is deleted first, including every edit made to it. Cost: 1 credit per minute of video (minimum 1 min; a partial minute counts only past 1 s); free on an active Gold/Enterprise plan while the daily AI quota lasts (checked before sending). Without new settings it reuses the previous ones. Refused while the resource is still generating, for uploaded PDF eBooks, or when the balance doesn't cover it. Also the way to make a legacy (old package) resource editable. Returns {video_id, resource, lang, gross_cost_credits, cost_credits, free_by_daily_quota, response}; response is the queued request, and while it generates the resource is missing from the video.
| Name | Type | Req | Description |
|---|---|---|---|
| custom_instructions | string | – | Extra instructions for the AI |
| ebook_config | object | – | eBook only: new style |
| image_generation_count | integer | – | eBook only: AI images (0 to 10) |
| lang | string | yes | Language of the resource to regenerate, e.g. 'en' |
| mindmap_config | object | – | Mind map only: orientation, color |
| quiz_config | object | – | Quiz only: questions, options and quiz options |
| resource | string | yes | ebook, mindmap or quiz |
| video_id | string | yes | Video ID |
No output schema declared.
No examples provided.
panda_regenerate_live Regenerate Live ~126
Regenerate 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. Returns {id, status: provisioning, stream_key, stream_key_id, rtmp, region, started_at}. stream_key is a secret credential: show it only when the user asks for it (e.g. to set up OBS).
| Name | Type | Req | Description |
|---|---|---|---|
| live_id | string | yes | Live ID |
No output schema declared.
No examples provided.
panda_remove_tutor_video Remove Tutor Video ~132
Remove ONE video from a Tutor AI assistant: the tutor stops using it and its knowledge is deleted from the tutor. The video stays in the library. Refused when the video isn't bound to the tutor, when it is the tutor's last video (use panda_delete_ai_assistant to delete the tutor), and while the video is still being processed by the tutor (queued/processing — try again when it finishes). Returns {assistant_id, video_id}.
| Name | Type | Req | Description |
|---|---|---|---|
| assistant_id | string | yes | Tutor assistant ID |
| video_id | string | yes | Video ID to remove from the tutor (one per call) |
No output schema declared.
No examples provided.
panda_remove_video_from_playlist Remove Video from Playlist ~46
Remove a video from a playlist. Does NOT delete the video.
| Name | Type | Req | Description |
|---|---|---|---|
| playlist_id | string | yes | Playlist ID |
| video_id | string | yes | Video ID to remove |
No output schema declared.
No examples provided.
panda_remove_videos_from_funnel Remove Videos from Funnel ~78
Remove 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).
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Funnel ID |
| video_ids | array | yes | Video IDs to remove (max 50) |
No output schema declared.
No examples provided.
panda_request_download Request Download ~283
Request an async download for a video. Only works for CONVERTED, non-external, non-Hotmart videos. Returns {status, url?}: when status is 'ready' the response already has `url` (a temporary signed link); otherwise poll panda_check_download_status with the same format/quality/language. Lipsync dubbing is a separate video: to download it, pass the video_external_id of that language's entry in config.lipsync_info[] (panda_get_video) and language = that language.
| Name | Type | Req | Description |
|---|---|---|---|
| format | string | yes | Download format |
| language | string | yes | Audio language: 'default' for the original audio, or the code of a dubbed audio of the video (e.g. 'en', 'es' — see audios[] in panda_get_video). 'original' is read as 'default'. |
| quality | string | yes | Quality: one of 240p, 360p, 480p, 720p, 1080p, 1440p, 2160p, original ('1080' is read as '1080p'). 'original' is the uploaded file; the others must be in the video's available_resolutions. |
| video_external_id | string | yes | Video external ID |
| video_title | string | yes | Video title (for the download file name) |
No output schema declared.
No examples provided.
panda_request_partial_deletion Request Partial Deletion ~185
Remove some qualities and/or the original file (backup) of ONE CONVERTED video to free storage, keeping the video. The removed items disappear right away and are deleted for good after retention_days (30); until then panda_cancel_partial_deletion restores them. Videos from an external source are refused. Refused when it would leave the video with no quality: the API would send the whole video to the trash instead — use panda_delete_videos to delete a video. Returns {retention_days, action, remaining_qualities, ignored, partial_deletion}.
| Name | Type | Req | Description |
|---|---|---|---|
| backup | boolean | – | true = remove the original uploaded file (backup) |
| qualities | array | – | Qualities to remove, as in the video's available_resolutions (e.g. ['1080p', '720p']) |
| video_id | string | yes | Video ID (one video per call) |
No output schema declared.
No examples provided.
panda_restore_profile Restore Profile ~98
Reset 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 settings unless the global has them. Changes every video linked to the profile. Returns the restored profile.
| Name | Type | Req | Description |
|---|---|---|---|
| profile_id | string | yes | Profile ID to restore |
No output schema declared.
No examples provided.
panda_save_segment_to_library Save Segment to Library ~59
Save a Short segment to the video library as an independent video
| Name | Type | Req | Description |
|---|---|---|---|
| folder_id | string | – | Folder ID to save into |
| segment_id | string | yes | Segment ID |
| title | string | – | Title for the saved video |
No output schema declared.
No examples provided.
panda_set_ai_resource_download Set AI Resource Download ~84
Allow or block viewers from downloading a video's eBook, mind map or quiz (the dashboard's "Allow download"). Applies to every language of that resource. Free.
| Name | Type | Req | Description |
|---|---|---|---|
| allow_download | boolean | yes | true = viewers can download; false = blocked |
| resource | string | yes | ebook, mindmap or quiz |
| video_id | string | yes | Video ID |
No output schema declared.
No examples provided.
panda_set_block_none_refer Turn Domain Protection On/Off ~270
Turn the library's domain protection on or off (block_none_refer). false = protection OFF for the whole library: every request plays, with or without a referer, and even BLOCK domains are ignored. true = the ACTIVE domains apply: requests without a referer are blocked (native TV/iOS players excepted), with ALLOW domains only matching referers play, with only BLOCK domains the matching referers are blocked; with no active domain nothing is blocked. WARNING: this also rewrites the status of ALL the library's domains (library and folders): true activates every domain, including ones turned off on purpose (to keep one off, deactivate it afterwards with panda_set_refer_status); false deactivates all of them. Refused (400) while any domain is still pending, deleting or turning inactive. The server recalculates the flag afterwards: it is true while at least one domain is active. On error the API returns { errCode, errMsg }. library_id is resolved automatically when omitted.
| Name | Type | Req | Description |
|---|---|---|---|
| block_none_refer | boolean | yes | true = protection on (active domains apply; all domains are activated); false = protection off (all domains are deactivated) |
| library_id | string | – | Library UUID. Resolved from GET /library when omitted. |
No output schema declared.
No examples provided.
panda_set_default_profile Set Default Profile ~165
Make 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 stay with the current profile. Without it only the default flag changes and no video is touched. Video changes run in the background (videoMigrationQueued). Returns {message, id, videoMigrationQueued}.
| Name | Type | Req | Description |
|---|---|---|---|
| profile_id | string | yes | Profile ID that becomes the default |
| unlinked_videos_strategy | string | – | What happens to the videos of the current default: 'apply-new' (follow the new default) or 'keep-current' (stay as they are) |
No output schema declared.
No examples provided.
panda_set_exclusive_playback Set Exclusive Playback ~256
Turn Exclusive Playback on or off (dashboard: Security > Anti-Download > "Reprodução Exclusiva", Beta). When ON, the on-demand videos of the account are served only to the Panda Player: the Panda Player embedded by iframe keeps working on any site allowed by domain protection (members areas that use the embed included), while custom players, scrapers or extensions that open the HLS (m3u8) link directly get a decoy video. It deters casual capture; it is not DRM. Covers on-demand videos, Libras and the main audio; does not cover live streams, dubbed audio tracks, subtitles or downloads (they keep working). Requires the Simple Anti-Download to be ON (checked before changing; turn it on with panda_action_set_anti_download); turning Simple Anti-Download off turns Exclusive Playback off too. Turning on is only for plans that include Simple Anti-Download (Gold/Enterprise and others; Silver/Bronze need the "Anti-Download Simples" add-on, contracted in the dashboard; not available on Clipador/Clipper and VSL Only plans).
| Name | Type | Req | Description |
|---|---|---|---|
| enabled | boolean | yes | true = only the Panda Player plays the videos; false = stop |
No output schema declared.
No examples provided.
panda_set_new_uploads_encryption Set New Uploads Encryption ~123
Turn automatic encryption (HLS) of NEW uploads on or off. No credit cost. Turning on is only for Gold/Enterprise plans or accounts with the 'Anti-Download Criptografado' add-on (checked before changing; otherwise refused). Existing videos don't change: to encrypt them use panda_encrypt_videos (paid). Turning off only affects future uploads: videos already encrypted stay encrypted, and a paid add-on stays billed until it is removed in the dashboard.
| Name | Type | Req | Description |
|---|---|---|---|
| enabled | boolean | yes | true = encrypt new uploads; false = stop |
No output schema declared.
No examples provided.
panda_set_refer_status Activate/Deactivate Domain Referrer ~152
Activate (active=true) or deactivate (active=false) a single referrer by refer_id. Activation moves inactive→pending; deactivation moves active→turning_inactive (the async worker finalizes the state). If the referrer is already in an intermediate state (pending|deleting|turning_inactive) the API returns 400 ({ errCode, errMsg }: 'Operation in progress, ...'). Works for both library- and folder-level referrers.
| Name | Type | Req | Description |
|---|---|---|---|
| active | boolean | yes | true to activate, false to deactivate |
| library_id | string | – | Library UUID. Resolved from GET /library when omitted. |
| refer_id | string | yes | Referrer UUID to toggle |
No output schema declared.
No examples provided.
panda_set_video_offline Set Video Offline ~100
Configure offline playback for a video (mobile app feature)
| Name | Type | Req | Description |
|---|---|---|---|
| enabled | boolean | yes | Enable or disable offline playback |
| expire_days | number|null | – | Days until offline access expires (null = never) |
| external_link_enabled | boolean | – | Show external link button |
| external_link_text | string | – | External link button text |
| external_link_url | string | – | External link URL |
| video_id | string | yes | Video ID |
No output schema declared.
No examples provided.
panda_start_comparison Start Comparison ~45
Start an A/B test (begin collecting data). Only from DRAFT status. Returns the updated comparison with status IN_PROGRESS.
| Name | Type | Req | Description |
|---|---|---|---|
| comparison_id | string | yes | Comparison ID |
No output schema declared.
No examples provided.
panda_transfer_credits Transfer Credits ~44
Transfer credits to a subaccount
| Name | Type | Req | Description |
|---|---|---|---|
| amount | number | yes | Number of credits to transfer |
| target_organization_id | string | yes | Target subaccount organization ID |
No output schema declared.
No examples provided.
panda_update_ai_assistant Update AI Assistant ~60
Update AI assistant information (name, status, etc.)
| Name | Type | Req | Description |
|---|---|---|---|
| assistant_id | string | yes | AI assistant ID |
| name | string | – | New name |
| status | string | – | New status (e.g. 'ready', 'disabled') |
No output schema declared.
No examples provided.
panda_update_ai_assistant_chat_visibility Update AI Assistant Chat Visibility ~50
Show or hide the AI chat widget on the video player
| Name | Type | Req | Description |
|---|---|---|---|
| assistant_id | string | yes | AI assistant ID |
| visible | boolean | yes | True to show, false to hide |
No output schema declared.
No examples provided.
panda_update_ai_assistant_video_bindings Update AI Assistant Video Bindings ~180
Bind videos to an AI assistant (Tutor). Additive: only videos not yet bound are added; videos already bound stay as they are and nothing is unbound (use panda_remove_tutor_video to remove one). Only CONVERTED videos: if any ID doesn't exist or isn't CONVERTED, the whole request is refused. Billing: each NEW video without a subtitle in the tutor's language gets a transcription, charged at ceil(minutes/5) credits per video (Gold/Enterprise plans outside trial get free transcriptions up to a daily limit); without enough credits the API refuses before binding anything.
| Name | Type | Req | Description |
|---|---|---|---|
| assistant_id | string | yes | AI assistant ID |
| lang | string | – | Language code; only used when the tutor has no language set |
| video_ids | array | yes | Video IDs to add (max 50) |
No output schema declared.
No examples provided.
panda_update_ai_resource Update AI Resource ~369
Edit an existing AI package resource of a video in one language, like the dashboard editor — free. Quiz: send `questions` (the WHOLE new list, 1 to 10 questions, 2 to 5 options each, read it first with panda_get_ai_resource_content) and/or `quiz_settings`. Mind map: `mindmap_edits` (replace an excerpt that exists in one topic only) and/or `mindmap_settings`. eBook: `ebook_edits` (replace an excerpt that exists once in the text), `cover` and/or `ebook_config` (style, logo); the eBook is then recomposed from its text (manual formatting done in the dashboard editor may be lost; images stay) and the new PDF is ready in about 1 minute. Legacy resources (old package) and uploaded PDF eBooks can't be edited. Returns {video_id, resource, lang, saved, changes}; read the result with panda_get_ai_resource_content.
| Name | Type | Req | Description |
|---|---|---|---|
| cover | object | – | eBook: cover texts that change |
| ebook_config | object | – | eBook: style that changes (layout, fonts, colors, format, logo) |
| ebook_edits | array | – | eBook: text replacements |
| lang | string | yes | Language of the resource, e.g. 'en' |
| mindmap_edits | array | – | Mind map: text replacements in topics |
| mindmap_settings | object | – | Mind map: orientation, color |
| questions | array | – | Quiz: the whole new list of questions (replaces the current one) |
| quiz_settings | object | – | Quiz: turn its options on/off |
| resource | string | yes | ebook, mindmap or quiz |
| video_id | string | yes | Video ID |
No output schema declared.
No examples provided.
panda_update_auto_recharge Update Auto Recharge ~39
Update auto-recharge settings
| Name | Type | Req | Description |
|---|---|---|---|
| action_value | number | yes | New recharge amount |
| trigger_value | number | yes | New trigger threshold |
No output schema declared.
No examples provided.
panda_update_cta Update CTA ~319
Update a CTA on a video. Only the fields you pass are changed; everything else keeps its current value. Placement cannot be changed — delete and re-add the CTA instead.
| Name | Type | Req | Description |
|---|---|---|---|
| append_website_query_params | boolean | – | Append the page's URL query params to the button's URL |
| background_color | string | – | Background color, hex (default: #3e50f7) |
| background_hover_color | string | – | Background color on hover, hex |
| cta_id | string | yes | ID of the CTA to update |
| custom_html | string | – | Raw HTML/CSS/JS to render instead of the styled button (advanced) |
| end_time | number | – | Seconds into the video when the button disappears. Omit to show until the end of the video. |
| placement | string | yes | CTA placement |
| position | string | – | Button position on the video overlay. Only applies to placement='inside'. |
| size | string | – | Button size (default: small) |
| start_time | number | – | Seconds into the video when the button appears. Omit (with end_time) for the whole video. |
| text | string | – | Button label text. Required unless custom_html is set. |
| text_color | string | – | Text color, hex (default: #FFFFFF) |
| text_hover_color | string | – | Text color on hover, hex |
| url | string | – | URL opened when the button is clicked. Required unless custom_html is set. |
| video_id | string | yes | Video ID |
No output schema declared.
No examples provided.
How do I install the Panda Video MCP server?
Panda Video is a hosted endpoint at https://mcp.pandavideo.com/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · mcp.pandavideo.com
claude mcp add --transport http com-pandavideo-mcp 'https://mcp.pandavideo.com/mcp'
What is the Panda Video MCP server?
Panda Video is an MCP server listed in the public MCP registry as com.pandavideo/mcp. Video hosting: upload, organize and configure videos, analytics, AI subtitles and Shorts. This page covers its hosted endpoint (https://mcp.pandavideo.com/mcp).
Is the Panda Video MCP server safe to use?
Panda Video scores 92 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the Panda Video MCP server expose?
Panda Video exposes 216 tools: panda_list_videos, panda_get_video, panda_update_video, panda_delete_videos, panda_get_videos_status, and 211 more. Their descriptions and schemas cost roughly 27,542 tokens of context every time the server is loaded.
Does the Panda Video MCP server require authentication?
Yes. Panda Video asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.
Is the Panda Video MCP server still maintained?
Panda Video is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What did VerifyMCP test on the Panda Video MCP server?
VerifyMCP ran 13 checks on Panda Video, covering TLS certificate, Authorization, HTTPS, HSTS header and 9 more. Supply Chain Security and Provenance & Transparency do not apply to a hosted endpoint, so they were not tested. The score does not measure everything, and the scoring documentation lists what it leaves out.