{"name":"com.pandavideo/mcp","slug":"pandavideo-mcp","title":"Panda Video","description":"Video hosting: upload, organize and configure videos, analytics, AI subtitles and Shorts.","url":"https://mcp.market/server/pandavideo-mcp","rating":null,"grade":"A","score":91,"certified":false,"status":"active","category":"media","tags":["media"],"presence":{"score":23,"stars":0,"forks":0,"downloads_week":null,"last_push_at":"2026-10-05T20:13:43.000Z","license":"MIT"},"uptime":{"percent":100,"checks":28,"ok":28,"last_checked_at":"2026-11-04T06:20:53.711Z","last_ok_at":"2026-11-04T06:20:53.711Z","latency_ms":225},"claimed":false,"transport":"remote","callable_via_gateway":true,"default_price_micros":0,"repository":"https://github.com/pandavideo/panda-video-mcp","website":"https://www.pandavideo.com","version":"2.1.0","remotes":[{"type":"streamable-http","url":"https://mcp.pandavideo.com/mcp","headers":[{"description":"Panda Video API key (panda-...). Optional: clients that support OAuth 2.1 sign in instead.","isSecret":true,"name":"Authorization"}]}],"packages":[],"tools":[{"name":"panda_action_add_folder_videos_to_funnel","description":"Deterministically resolve a funnel (by name or ID) and a folder, then add every CONVERTED folder video to the funnel (POST /funnels/add_videos). dry_run=true (default) previews the additions.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"funnel_ref":{"type":"string","description":"Funnel name or ID"},"folder_ref":{"type":"string","description":"Folder name, ID, or dashboard URL"},"dry_run":{"type":"boolean","default":true,"description":"true = preview only; false = add"},"idempotency_key":{"type":"string","description":"Reserved client-supplied retry key"}},"required":["funnel_ref","folder_ref"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_action_add_folder_videos_to_playlist","description":"Deterministically resolve a folder and an existing playlist (by name or ID), then append every CONVERTED folder video to the playlist after its current items. dry_run=true (default) previews the additions.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"folder_ref":{"type":"string","description":"Folder name, ID, or dashboard URL"},"playlist_ref":{"type":"string","description":"Playlist name or ID"},"dry_run":{"type":"boolean","default":true,"description":"true = preview only; false = add"},"idempotency_key":{"type":"string","description":"Reserved client-supplied retry key"}},"required":["folder_ref","playlist_ref"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_action_add_folder_videos_to_tutor","description":"Deterministically resolve an existing AI Tutor (by name or ID) and a folder, then bind every CONVERTED folder video to the tutor (POST /assist_ai/update_assistant_videos). dry_run=true (default) previews the additions.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"tutor_ref":{"type":"string","description":"Tutor name or ID"},"folder_ref":{"type":"string","description":"Folder name, ID, or dashboard URL"},"dry_run":{"type":"boolean","default":true,"description":"true = preview only; false = bind"},"idempotency_key":{"type":"string","description":"Reserved client-supplied retry key"}},"required":["tutor_ref","folder_ref"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_action_apply_profile_to_folder","description":"Deterministically resolve a player profile and a folder, list eligible (CONVERTED) videos, and apply the profile to all of them in one call. Free action (no credits). dry_run=true (default) returns a preview of which videos would be updated.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"profile_ref":{"type":"string","description":"Player profile name or ID"},"folder_ref":{"type":"string","description":"Folder name, ID, or dashboard URL"},"dry_run":{"type":"boolean","default":true,"description":"true = preview only; false = apply"},"idempotency_key":{"type":"string","description":"Reserved client-supplied key to make retries safe (not yet enforced server-side)"}},"required":["profile_ref","folder_ref"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_action_apply_video_config_to_folder","description":"Deterministically resolve a folder and apply per-video player config to every CONVERTED video (POST /player?type=video). Supports: panda_branding, default_subtitle (lang code or 'false'), on_funnel, and the AI toggles questions/mindmap/abstract. Send only the fields you want to change. dry_run=true (default) previews the affected videos.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"folder_ref":{"type":"string","description":"Folder name, ID, or dashboard URL"},"panda_branding":{"type":"boolean","description":"Show/hide Panda logo branding"},"default_subtitle":{"type":"string","description":"Default subtitle language code (e.g. 'pt-BR') or 'false' to disable"},"on_funnel":{"type":"boolean","description":"Enable/disable funnel integration"},"questions":{"type":"boolean","description":"Enable/disable AI Quiz"},"mindmap":{"type":"boolean","description":"Enable/disable AI MindMap"},"abstract":{"type":"boolean","description":"Enable/disable AI eBook/Abstract"},"dry_run":{"type":"boolean","default":true,"description":"true = preview only; false = apply"},"idempotency_key":{"type":"string","description":"Reserved client-supplied retry key"}},"required":["folder_ref"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_action_apply_watermark_group_to_folder","description":"Deterministically resolve a watermark/DRM group (by name or ID) and a folder, then add the folder to the group so all its videos (current and future) inherit the forensic watermark (PUT /drm/videos/{id} folders.increment). dry_run=true (default) previews.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"group_ref":{"type":"string","description":"Watermark group name or ID"},"folder_ref":{"type":"string","description":"Folder name, ID, or dashboard URL"},"dry_run":{"type":"boolean","default":true,"description":"true = preview only; false = apply"},"idempotency_key":{"type":"string","description":"Reserved client-supplied retry key"}},"required":["group_ref","folder_ref"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_action_configure_folder_profile","description":"Deterministically apply player-profile settings to every CONVERTED video in a folder, taking the correct create-or-update route per video. Covers everything a profile holds: colors (Cores), controls incl. the big play button 'play-large' (Controles / Botão de Play Grande), caption appearance (Legendas), VSL, save-progress, and general settings — pass any subset. Per video: if it already has a profile, that profile is updated (PUT /profile/{id}); if it has none, a new profile is created (POST /profile, name=video id), configured, and assigned (set-videos). dry_run=true (default) first VALIDATES each video (has-profile vs not) and previews the plan without changing anything.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"folder_ref":{"type":"string","description":"Folder name, ID, or dashboard URL"},"controls":{"type":"array","items":{"type":"string"},"description":"Array of enabled player controls (incl. \"play-large\" = Botão de Play Grande). Values: \"play-large\", \"rewind\", \"play\", \"fast-forward\", \"progress\", \"current-time\", \"volume\", \"captions\", \"settings\", \"pip\", \"fullscreen\", \"airplay\", \"cast\""},"hideControlsOnStart":{"type":"boolean","description":"Hide controls until user interacts"},"colors":{"type":"object","properties":{"primaryColor":{"type":"string","description":"Primary accent color (hex)"},"controlsColor":{"type":"string","description":"Controls color (hex)"},"background":{"type":"string","description":"Player background color (hex)"},"captionsColor":{"type":"string","description":"(Legacy) Subtitle text color (hex). Prefer `captions.foreground` on the modern subtitle editor."},"captionsBackgroundColor":{"type":"string","description":"(Legacy) Subtitle background color (hex). Prefer `captions.background`."}},"additionalProperties":false,"description":"Player color settings"},"captions":{"type":"object","properties":{"foreground":{"type":"string","description":"Subtitle text color as 8-char hex with alpha — `RRGGBBAA`, e.g. 'FFFFFFFF' = opaque white."},"background":{"type":"string","description":"Subtitle background color as 8-char hex with alpha — `RRGGBBAA`, e.g. '000000B3' = 70% opaque black."}},"additionalProperties":false,"description":"Per-video subtitle (caption) appearance — text and background colors (v2 dashboard)."},"vsl":{"type":"object","properties":{"autoplay":{"type":"boolean","description":"Auto-play video"},"smartAutoplay":{"type":"boolean","description":"Smart Autoplay — auto-plays muted, unmutes on interaction"},"disablePause":{"type":"boolean","description":"Disable pause button (VSL mode)"},"disableForward":{"type":"boolean","description":"Disable forward/seek (VSL mode)"},"restartAfterEnd":{"type":"boolean","description":"Restart video after it ends"},"alternativeProgress":{"type":"boolean","description":"Fake progress bar (VSL mode)"},"alternativeProgressHeight":{"type":"number","description":"Fake progress bar height in px"},"alternativeProgressVelocity":{"type":"number","description":"Fake progress bar speed (1-10)"},"alternativeProgress2xLimit":{"type":"number","description":"Percentage at which fake progress accelerates"},"alternativeProgressDefaultVelocity":{"type":"boolean","description":"Use recommended fake progress speed"},"timeDisplayType":{"type":"string","enum":["CURRENT_TIME","REMAINING_TIME"],"description":"Time display format"},"defaultLanguage":{"type":"string","description":"Default subtitle language"},"mutedIndicatorIcon":{"type":"boolean","description":"Show muted indicator overlay"},"mutedIndicatorSize":{"type":"string","enum":["none","small","medium","large"],"description":"Muted indicator size"},"mutedIndicatorFontSize":{"type":"number","description":"Muted indicator font size (12-32)"},"mutedIndicatorTextTop":{"type":"string","description":"Muted indicator top text (max 40 chars)"},"mutedIndicatorTextBottom":{"type":"string","description":"Muted indicator bottom text (max 40 chars)"},"mutedIndicatorBackgroundColor":{"type":"string","description":"Muted indicator background color"},"mutedIndicatorTextColor":{"type":"string","description":"Muted indicator text color"},"mutedIndicatorAnimation":{"type":"string","description":"Muted indicator animation style"},"pandaBranding":{"type":"boolean","description":"Show Panda branding in player"},"refCode":{"type":"string","description":"Affiliate referral code"}},"additionalProperties":false,"description":"VSL (Video Sales Letter) settings — controls autoplay, smart autoplay, fake progress bar, muted indicator"},"saveProgress":{"type":"object","properties":{"saveProgress":{"type":"boolean","description":"Enable resume from last position"},"initQuality":{"type":"number","description":"Initial video quality (e.g. 720)"},"saveProgressScreen":{"type":"boolean","description":"Show resume screen"},"saveProgressTitle":{"type":"string","description":"Resume screen title"}},"additionalProperties":false,"description":"Save progress / resume settings"},"general":{"type":"object","properties":{"default_speed":{"type":"number","description":"Default playback speed (1, 1.1, 1.2, 1.3, 1.4, 1.5)"},"smartSearch":{"type":"boolean","description":"(Legacy) Enable smart search in video. v2 sends `searchInsideVideo` — both accepted."},"fontSize":{"type":"string","enum":["extraSmall","small","normal","large","extraLarge"],"description":"Subtitle font size keyword: extraSmall=10px, small=12px, normal=14px(default), large=16px, extraLarge=18px. Send fontSizePx alongside."},"fontSizePx":{"type":"number","description":"Subtitle font size in px — must match fontSize: 10/12/14/16/18."},"startsWithSubtitle":{"type":"boolean","description":"Whether the video starts with the subtitle track visible by default."},"searchInsideVideo":{"type":"boolean","description":"Enable smart search inside the video (same semantic as legacy smartSearch)."}},"additionalProperties":false,"description":"General player + subtitle settings (speed, font size, search-in-video, defaults)."},"dry_run":{"type":"boolean","default":true,"description":"true = validate + preview only; false = apply"},"idempotency_key":{"type":"string","description":"Reserved client-supplied retry key"}},"required":["folder_ref"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_action_create_ab_test","description":"Create an A/B comparison from 2+ videos (POST /comparison) and optionally start it immediately (PUT /comparison/{id}?type=start). dry_run=true (default) previews.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"description":"Comparison name"},"description":{"type":"string","default":"","description":"Optional description"},"video_ids":{"type":"array","items":{"type":"string"},"minItems":2,"description":"Video IDs to compare (at least 2)"},"start":{"type":"boolean","default":false,"description":"Start the test immediately after creating"},"dry_run":{"type":"boolean","default":true,"description":"true = preview only; false = create"},"idempotency_key":{"type":"string","description":"Reserved client-supplied retry key"}},"required":["name","video_ids"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_action_create_folder_path","description":"Deterministically ensure a nested folder path exists (e.g. 'Courses/2026/Module 1'), creating only the missing segments and returning the leaf folder ID. Idempotent: existing segments are reused. dry_run=true (default) previews which segments would be created.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"path":{"type":"string","minLength":1,"description":"Slash-separated folder path by name, e.g. 'Courses/2026/Module 1'"},"dry_run":{"type":"boolean","default":true,"description":"true = preview only; false = create"},"idempotency_key":{"type":"string","description":"Reserved client-supplied retry key"}},"required":["path"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_action_create_playlist_from_folder","description":"Deterministically resolve a folder, create a new playlist, and add every CONVERTED video to it in folder order. dry_run=true (default) previews the playlist and its videos without creating anything.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"folder_ref":{"type":"string","description":"Folder name, ID, or dashboard URL"},"playlist_name":{"type":"string","minLength":1,"description":"Name for the new playlist"},"access_type":{"type":"string","enum":["anyone_with_link","anyone_with_password"],"default":"anyone_with_link","description":"Playlist access type (the Panda API requires it; defaults to anyone_with_link)"},"creator_name":{"type":"string","description":"Creator name shown in the player (the Panda API requires it; defaults to the playlist name)"},"password":{"type":"string","description":"Password (for password-protected playlists)"},"dry_run":{"type":"boolean","default":true,"description":"true = preview only; false = create"},"idempotency_key":{"type":"string","description":"Reserved client-supplied retry key"}},"required":["folder_ref","playlist_name"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_action_create_review_link_for_folder","description":"Deterministically resolve a folder and create a review link for every CONVERTED video (POST /video-review/{id}?action=link). dry_run=true (default) previews the links that would be created.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"folder_ref":{"type":"string","description":"Folder name, ID, or dashboard URL"},"link_name":{"type":"string","minLength":1,"description":"Name applied to each review link"},"allow_comment":{"type":"boolean","default":true,"description":"Allow reviewers to comment"},"allow_status_edit":{"type":"boolean","default":false,"description":"Allow reviewers to change status"},"show_resolved":{"type":"boolean","default":true,"description":"Show resolved comments"},"expires_at":{"type":"integer","default":0,"description":"Expiry as a Unix timestamp (0 = never)"},"dry_run":{"type":"boolean","default":true,"description":"true = preview only; false = create"},"idempotency_key":{"type":"string","description":"Reserved client-supplied retry key"}},"required":["folder_ref","link_name"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_action_create_tutor_from_folder","description":"Deterministically resolve a folder, estimate the credit cost via purchase_overview, and create an AI Tutor bound to every CONVERTED video in the folder. dry_run=true (default) returns the cost preview without creating anything.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"folder_ref":{"type":"string","description":"Folder name, ID, or dashboard URL"},"name":{"type":"string","minLength":1,"description":"Name for the new tutor"},"lang":{"type":"string","default":"pt-BR","description":"Tutor language code (default 'pt-BR')"},"initial_question":{"type":"string","default":"","description":"Optional initial question shown in chat"},"question_suggestions":{"type":"boolean","default":false,"description":"Show suggested questions"},"open_new_tab":{"type":"boolean","default":false,"description":"Open links in a new tab"},"dry_run":{"type":"boolean","default":true,"description":"true = preview only; false = create"},"idempotency_key":{"type":"string","description":"Reserved client-supplied retry key"}},"required":["folder_ref","name"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_action_create_watermark_group_for_folder","description":"Deterministically resolve a folder and create a new watermark/DRM group seeded with all its videos (POST /drm/videos). dry_run=true (default) previews the group and its videos.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"folder_ref":{"type":"string","description":"Folder name, ID, or dashboard URL"},"group_name":{"type":"string","minLength":1,"description":"Name for the new watermark group"},"dry_run":{"type":"boolean","default":true,"description":"true = preview only; false = create"},"idempotency_key":{"type":"string","description":"Reserved client-supplied retry key"}},"required":["folder_ref","group_name"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_action_credit_preflight","description":"Estimate the credit cost of running a paid operation (dub / subtitles / ai_package) across every CONVERTED video in a folder and compare it to the current balance — WITHOUT executing anything. Read-only; use before the real action to decide whether to proceed.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"folder_ref":{"type":"string","description":"Folder name, ID, or dashboard URL"},"operation":{"type":"string","enum":["dub","subtitles","ai_package"],"description":"Which paid operation to price"},"target_langs":{"type":"array","items":{"type":"string"},"default":[],"description":"Target languages (for dub/subtitles); count drives the cost"},"mode":{"type":"string","enum":["standard","lipsync"],"default":"standard","description":"Dubbing mode"},"tier":{"type":"string","enum":["essential","advanced","pro"],"default":"essential","description":"Subtitle tier"}},"required":["folder_ref","operation"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_action_delete_folder_videos","description":"Deterministically resolve a folder and send every video inside it to the trash (30-day recovery). DESTRUCTIVE. dry_run=true (default) returns a preview of what would be deleted; set dry_run=false AND confirm=true to actually delete.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"folder_ref":{"type":"string","description":"Folder name, ID, or dashboard URL"},"dry_run":{"type":"boolean","default":true,"description":"true = preview only; false = delete"},"confirm":{"type":"boolean","default":false,"description":"Required safety flag — must be true (with dry_run=false) to delete"},"idempotency_key":{"type":"string","description":"Reserved client-supplied retry key"}},"required":["folder_ref"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_action_dub_folder_videos","description":"Deterministically resolve a folder, list eligible (CONVERTED) videos, estimate the dubbing cost in credits, and optionally create AI dubbing jobs for one or more target languages. dry_run=true (default) returns a preview without creating any job. standard mode = 2 credits/min, lipsync = 10 credits/min (lipsync rejects videos over 60 minutes).","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"folder_ref":{"type":"string","description":"Folder name, ID, or dashboard URL"},"target_langs":{"type":"array","items":{"type":"string"},"minItems":1,"description":"Target language codes to dub into, e.g. ['en','es']"},"from_lang":{"type":"string","default":"auto","description":"Source language code (default 'auto')"},"mode":{"type":"string","enum":["standard","lipsync"],"default":"standard","description":"standard = 2 credits/min, lipsync = 10 credits/min"},"dry_run":{"type":"boolean","default":true,"description":"true = preview only; false = create jobs"},"idempotency_key":{"type":"string","description":"Reserved client-supplied key to make retries safe (not yet enforced server-side)"}},"required":["folder_ref","target_langs"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_action_duplicate_folder_videos","description":"Deterministically resolve a folder and create a copy of every CONVERTED video inside it. Duplication only works for non-external, non-funnel videos (the API rejects others, surfaced per-video). dry_run=true (default) previews the affected videos.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"folder_ref":{"type":"string","description":"Folder name, ID, or dashboard URL"},"dry_run":{"type":"boolean","default":true,"description":"true = preview only; false = duplicate"},"idempotency_key":{"type":"string","description":"Reserved client-supplied retry key"}},"required":["folder_ref"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_action_enable_ai_package_for_folder","description":"Deterministically resolve a folder and activate the AI package (mindmap + abstract/eBook + quiz) for every CONVERTED video (POST /aiworkflow type=ALL_TEXT_ITEMS). Estimates credits (1/started minute; Gold/Enterprise may have a free daily quota that reduces real cost). dry_run=true (default) returns the cost preview.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"folder_ref":{"type":"string","description":"Folder name, ID, or dashboard URL"},"from_lang":{"type":"string","default":"auto","description":"Source language code (default 'auto')"},"dry_run":{"type":"boolean","default":true,"description":"true = preview only; false = activate"},"idempotency_key":{"type":"string","description":"Reserved client-supplied retry key"}},"required":["folder_ref"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_action_export_folder_analytics","description":"Deterministically resolve a folder and aggregate per-video play analytics over a date range (GET /general/{videoId} on the analytics host). Read-only — returns a per-video breakdown and folder total. No dry_run.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"folder_ref":{"type":"string","description":"Folder name, ID, or dashboard URL"},"start_date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Start date (YYYY-MM-DD)"},"end_date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"End date (YYYY-MM-DD)"}},"required":["folder_ref","start_date","end_date"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_action_folder_ai_status","description":"Deterministically resolve a folder and report the aggregate status of all its AI workflow jobs (subtitles, dubbing, AI package) via GET /aiworkflow?folder_id. Read-only — returns counts by status and by type. No dry_run (nothing is mutated).","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"folder_ref":{"type":"string","description":"Folder name, ID, or dashboard URL"}},"required":["folder_ref"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_action_generate_shorts_from_folder","description":"Deterministically resolve a folder and submit each eligible video (CONVERTED, 5min–5h) for AI Shorts generation (POST /shorts/import-video). Each job consumes Shorts processing. dry_run=true (default) previews eligible videos. DRM-protected videos are rejected by the API and surfaced per-video.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"folder_ref":{"type":"string","description":"Folder name, ID, or dashboard URL"},"aspect_ratio":{"type":"string","enum":["vertical","horizontal","square"],"default":"vertical","description":"Output aspect ratio"},"duration_preset":{"type":"string","enum":["30-60","60-90","90-180"],"default":"30-60","description":"Clip duration range in seconds"},"contexts":{"type":"array","items":{"type":"string"},"default":["engajamento"],"description":"AI context hints (e.g. 'engajamento','educacional','humor')"},"dry_run":{"type":"boolean","default":true,"description":"true = preview only; false = submit"},"idempotency_key":{"type":"string","description":"Reserved client-supplied retry key"}},"required":["folder_ref"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_action_generate_subtitles_for_folder","description":"Deterministically resolve a folder, list eligible (CONVERTED) videos, estimate the AI subtitle cost in credits, and optionally generate subtitles in one or more languages. Tiers: essential (only en/pt-BR/es, 1 credit/30min), advanced (34 langs, 1 credit/5min), pro (34 langs, 1 credit/min). dry_run=true (default) returns a preview.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"folder_ref":{"type":"string","description":"Folder name, ID, or dashboard URL"},"target_langs":{"type":"array","items":{"type":"string"},"minItems":1,"description":"Subtitle language codes to generate, e.g. ['en','es']"},"from_lang":{"type":"string","default":"auto","description":"Source language code (default 'auto')"},"tier":{"type":"string","enum":["essential","advanced","pro"],"default":"essential","description":"Quality tier (essential restricts languages to en/pt-BR/es)"},"dry_run":{"type":"boolean","default":true,"description":"true = preview only; false = generate"},"idempotency_key":{"type":"string","description":"Reserved client-supplied key to make retries safe (not yet enforced server-side)"}},"required":["folder_ref","target_langs"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_action_move_videos_by_folder","description":"Deterministically resolve a source and target folder and move every video from the source into the target in one call. Pass target_folder_ref='root' to move to the root (no folder). Skips videos already being deleted. Free action (no credits). dry_run=true (default) returns a preview of which videos would move.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"source_folder_ref":{"type":"string","description":"Source folder name, ID, or dashboard URL"},"target_folder_ref":{"type":"string","description":"Target folder name, ID, or dashboard URL — or 'root' to move to the root (no folder)"},"dry_run":{"type":"boolean","default":true,"description":"true = preview only; false = move"},"idempotency_key":{"type":"string","description":"Reserved client-supplied key to make retries safe (not yet enforced server-side)"}},"required":["source_folder_ref","target_folder_ref"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_action_provision_user","description":"Create a team user, resolving the role by name (or original_name/ID) to its role_id (POST /users). dry_run=true (default) previews. Validates the email format up front.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"description":"User's display name"},"email":{"type":"string","description":"User email"},"role_ref":{"type":"string","description":"Role name or ID (e.g. 'viewer', 'editor')"},"phone":{"type":"string","description":"Optional phone number"},"dry_run":{"type":"boolean","default":true,"description":"true = preview only; false = create"},"idempotency_key":{"type":"string","description":"Reserved client-supplied retry key"}},"required":["name","email","role_ref"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_action_reencode_folder_videos","description":"Deterministically resolve a folder and re-encode every CONVERTED video with a given compression mode. Reprocessing consumes processing resources. dry_run=true (default) previews the affected videos.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"folder_ref":{"type":"string","description":"Folder name, ID, or dashboard URL"},"compression_mode":{"type":"string","enum":["lossless","balanced","aggressive"],"description":"Compression mode applied to every video"},"dry_run":{"type":"boolean","default":true,"description":"true = preview only; false = reencode"},"idempotency_key":{"type":"string","description":"Reserved client-supplied retry key"}},"required":["folder_ref","compression_mode"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_action_remove_subtitle_language_from_folder","description":"Deterministically resolve a folder and delete a subtitle language from every CONVERTED video that has it (DELETE /subtitles/{id}). DESTRUCTIVE. dry_run=true (default) previews; set dry_run=false AND confirm=true to delete. Videos without that language are simply skipped by the API.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"folder_ref":{"type":"string","description":"Folder name, ID, or dashboard URL"},"language":{"type":"string","description":"Subtitle language code to remove (e.g. 'en')"},"dry_run":{"type":"boolean","default":true,"description":"true = preview only; false = delete"},"confirm":{"type":"boolean","default":false,"description":"Required safety flag to delete"},"idempotency_key":{"type":"string","description":"Reserved client-supplied retry key"}},"required":["folder_ref","language"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_action_rename_folder","description":"Deterministically resolve a folder by name/ID/URL and rename it (PUT /folders/{id}). dry_run=true (default) previews the rename.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"folder_ref":{"type":"string","description":"Folder name, ID, or dashboard URL"},"new_name":{"type":"string","minLength":1,"description":"New folder name"},"dry_run":{"type":"boolean","default":true,"description":"true = preview only; false = rename"},"idempotency_key":{"type":"string","description":"Reserved client-supplied retry key"}},"required":["folder_ref","new_name"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_action_request_folder_downloads","description":"Deterministically resolve a folder and request an async download for every CONVERTED video at a given quality/format/language (POST /download-async/{externalId}). Poll status later with panda_check_download_status. dry_run=true (default) previews the requests.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"folder_ref":{"type":"string","description":"Folder name, ID, or dashboard URL"},"quality":{"type":"string","default":"1080","description":"Quality (e.g. '1080', '720', '480')"},"format":{"type":"string","enum":["video","audio"],"default":"video","description":"Download format"},"language":{"type":"string","default":"original","description":"Language code (e.g. 'original', 'en')"},"dry_run":{"type":"boolean","default":true,"description":"true = preview only; false = request"},"idempotency_key":{"type":"string","description":"Reserved client-supplied retry key"}},"required":["folder_ref"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_action_schedule_lives","description":"Create one or more scheduled live streams in a single call (POST /lives), optionally recording into a resolved folder. dry_run=true (default) previews the lives that would be created.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"lives":{"type":"array","items":{"type":"object","properties":{"title":{"type":"string","minLength":1,"description":"Live title"},"scheduled_at":{"type":"string","description":"Scheduled start (ISO 8601)"}},"required":["title"],"additionalProperties":false},"minItems":1,"description":"Lives to create"},"folder_ref":{"type":"string","description":"Optional folder (name/ID/URL) to store recordings in"},"dry_run":{"type":"boolean","default":true,"description":"true = preview only; false = create"},"idempotency_key":{"type":"string","description":"Reserved client-supplied retry key"}},"required":["lives"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_action_set_allowed_domains","description":"Add referer domains to the account's allow/block list for playback (POST /library/{id}?action=refer) and optionally toggle 'block requests with no referer'. Resolves the library ID automatically. dry_run=true (default) previews.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"allow":{"type":"array","items":{"type":"string"},"default":[],"description":"Hostnames to allow (e.g. 'example.com')"},"block":{"type":"array","items":{"type":"string"},"default":[],"description":"Hostnames to block"},"block_none_refer":{"type":"boolean","description":"If set, block playback requests that carry no referer"},"dry_run":{"type":"boolean","default":true,"description":"true = preview only; false = apply"},"idempotency_key":{"type":"string","description":"Reserved client-supplied retry key"}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_action_set_anti_download","description":"Enable or disable account-wide anti-download protection (GET/PUT /block_download). Reads the current state first and only changes it if needed. dry_run=true (default) previews the change.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"enabled":{"type":"boolean","description":"true = enable anti-download, false = disable"},"dry_run":{"type":"boolean","default":true,"description":"true = preview only; false = apply"},"idempotency_key":{"type":"string","description":"Reserved client-supplied retry key"}},"required":["enabled"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_action_set_custom_field_for_folder","description":"Deterministically resolve a folder and set a custom metadata field (key/value) on every CONVERTED video (POST /videos/{id}?custom_fields). dry_run=true (default) previews the affected videos.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"folder_ref":{"type":"string","description":"Folder name, ID, or dashboard URL"},"key":{"type":"string","minLength":1,"maxLength":200,"description":"Custom field key (max 200 chars)"},"value":{"type":"string","maxLength":500,"description":"Custom field value (max 500 chars)"},"dry_run":{"type":"boolean","default":true,"description":"true = preview only; false = apply"},"idempotency_key":{"type":"string","description":"Reserved client-supplied retry key"}},"required":["folder_ref","key","value"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_action_set_default_subtitle_for_folder","description":"Deterministically resolve a folder and set the default subtitle language on every CONVERTED video (POST /player?type=video). Pass language 'false' to clear the default. dry_run=true (default) previews the affected videos. Note: videos lacking that subtitle simply won't show it.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"folder_ref":{"type":"string","description":"Folder name, ID, or dashboard URL"},"language":{"type":"string","description":"Subtitle language code to set as default (e.g. 'pt-BR'), or 'false' to clear"},"dry_run":{"type":"boolean","default":true,"description":"true = preview only; false = apply"},"idempotency_key":{"type":"string","description":"Reserved client-supplied retry key"}},"required":["folder_ref","language"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_action_set_folder_player_control","description":"Enable or disable a single player control on every CONVERTED video in a folder, via player profiles, PRESERVING all other controls. The big play button (dashboard 'Botão de Play Grande') is the 'play-large' control — disable it with control='play-large', enabled=false. Each video's profile controls are read-modify-written; when a profile has no explicit control list it inherits the global player controls, so the action materializes that global list minus/plus the control. Videos without a profile get one created and assigned. dry_run=true (default) validates + previews per-video changes.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"folder_ref":{"type":"string","description":"Folder name, ID, or dashboard URL"},"control":{"type":"string","enum":["play-large","rewind","play","fast-forward","progress","current-time","volume","captions","settings","pip","fullscreen","airplay","cast"],"description":"Player control to toggle. 'play-large' = the big center play button."},"enabled":{"type":"boolean","description":"true = show the control, false = hide/disable it"},"dry_run":{"type":"boolean","default":true,"description":"true = validate + preview only; false = apply"},"idempotency_key":{"type":"string","description":"Reserved client-supplied retry key"}},"required":["folder_ref","control","enabled"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_action_set_folder_videos_offline","description":"Deterministically resolve a folder and enable or disable offline (mobile app) playback for every CONVERTED video inside it, in one batch call (POST /app). dry_run=true (default) previews the affected videos.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"folder_ref":{"type":"string","description":"Folder name, ID, or dashboard URL"},"enabled":{"type":"boolean","description":"true = allow offline playback, false = disable"},"expire_days":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Days until offline access expires (null = never)"},"dry_run":{"type":"boolean","default":true,"description":"true = preview only; false = apply"},"idempotency_key":{"type":"string","description":"Reserved client-supplied retry key"}},"required":["folder_ref","enabled"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_action_set_forms_integration","description":"Create or update a forms/CRM integration by service name. Reads existing integrations (GET /forms-integration/get); updates in place if the service already exists (PUT /forms-integration/update), otherwise creates it (POST /forms-integration/save). dry_run=true (default) previews.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"service":{"type":"string","minLength":1,"description":"Integration service identifier (e.g. 'rd_station')"},"name":{"type":"string","description":"Display name"},"api_url":{"type":"string","description":"API URL (if the service uses one)"},"api_key":{"type":"string","description":"API key/token"},"webhook_url":{"type":"string","description":"Webhook URL (if applicable)"},"dry_run":{"type":"boolean","default":true,"description":"true = preview only; false = save"},"idempotency_key":{"type":"string","description":"Reserved client-supplied retry key"}},"required":["service"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_action_set_webhook","description":"Idempotently set the account webhook URL. Reads the current webhook (GET /user/webhook); if a different one exists it is removed (DELETE /user/webhook/{id}) before creating the new one (POST /user/webhook). dry_run=true (default) previews the change.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"url":{"type":"string","format":"uri","description":"Webhook URL to receive Panda events"},"dry_run":{"type":"boolean","default":true,"description":"true = preview only; false = apply"},"idempotency_key":{"type":"string","description":"Reserved client-supplied retry key"}},"required":["url"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_action_transfer_credits_to_subaccount","description":"Resolve a subaccount by name or ID and transfer credits to it (POST /user/limit/transfer_credits). Checks the parent balance first. dry_run=true (default) previews the transfer.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"subaccount_ref":{"type":"string","description":"Subaccount name or ID"},"credits":{"type":"integer","exclusiveMinimum":0,"description":"Number of credits to transfer"},"dry_run":{"type":"boolean","default":true,"description":"true = preview only; false = transfer"},"idempotency_key":{"type":"string","description":"Reserved client-supplied retry key"}},"required":["subaccount_ref","credits"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_add_cta","description":"Add a CTA (Call-to-Action) button to a video. Placement 'inside' = overlay on the video, 'outside' = below the video. Builds the same payload the dashboard's button editor sends.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"video_id":{"type":"string","description":"Video ID"},"placement":{"type":"string","enum":["inside","outside"],"description":"Where to place the CTA"},"text":{"type":"string","description":"Button label text. Required unless custom_html is set."},"url":{"type":"string","description":"URL opened when the button is clicked. Required unless custom_html is set."},"start_time":{"type":"number","description":"Seconds into the video when the button appears. Omit (with end_time) for the whole video."},"end_time":{"type":"number","description":"Seconds into the video when the button disappears. Omit to show until the end of the video."},"size":{"type":"string","enum":["small","medium","large"],"description":"Button size (default: small)"},"position":{"type":"string","enum":["topLeft","topCenter","topRight","midLeft","midCenter","midRight","bottomLeft","bottomCenter","bottomRight"],"description":"Button position on the video overlay. Only applies to placement='inside'."},"text_color":{"type":"string","description":"Text color, hex (default: #FFFFFF)"},"text_hover_color":{"type":"string","description":"Text color on hover, hex"},"background_color":{"type":"string","description":"Background color, hex (default: #3e50f7)"},"background_hover_color":{"type":"string","description":"Background color on hover, hex"},"append_website_query_params":{"type":"boolean","description":"Append the page's URL query params to the button's URL"},"custom_html":{"type":"string","description":"Raw HTML/CSS/JS to render instead of the styled button (advanced)"}},"required":["video_id","placement"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_add_end_thumbnail","description":"Upload an end thumbnail — an image shown after the video finishes. Provide `image_url` pointing to a publicly reachable image. Returns the uploaded filename. NOTE: the upload alone is NOT visible in the player — the viewer-facing display requires an `end` CTA on the player config that references this thumbnail. Use this MCP tool to upload the asset; for full setup (CTA wiring), redirect the user to the dashboard end-thumbnail editor.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"video_id":{"type":"string","description":"Video ID"},"image_url":{"type":"string","format":"uri","description":"Public URL of the image to upload"}},"required":["video_id","image_url"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_add_pause_thumbnail","description":"Upload a pause thumbnail — an image shown when the viewer pauses the video. Provide `image_url` pointing to a publicly reachable image. Returns the uploaded thumbnail's filename. NOTE: the upload alone is NOT visible in the player — the viewer-facing display requires a pause CTA wiring (with time window and optional button overlay) which is configured separately via the dashboard. Use this MCP tool only to upload the asset; for full setup, redirect the user to the dashboard pause-thumbnail editor.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"video_id":{"type":"string","description":"Video ID"},"image_url":{"type":"string","format":"uri","description":"Public URL of the image to upload"}},"required":["video_id","image_url"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_add_thumbnail","description":"Upload the video cover (start thumbnail) — the image shown before the user presses play. Provide `image_url` pointing to a publicly reachable image (PNG/JPG/WEBP); the tool downloads it and uploads as multipart to the Panda API. Replaces any existing start thumbnail. After this returns, the cover is active immediately for the player.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"video_id":{"type":"string","description":"Video ID"},"image_url":{"type":"string","format":"uri","description":"Public URL of the image to use as the cover"}},"required":["video_id","image_url"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_add_tutor_videos","description":"Add videos to a Tutor AI assistant","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"assistant_id":{"type":"string","description":"Tutor assistant ID"},"video_ids":{"type":"array","items":{"type":"string"},"minItems":1,"maxItems":50,"description":"Video IDs to add (max 50)"}},"required":["assistant_id","video_ids"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_add_videos_to_funnel","description":"Add one or more videos to a funnel with optional coordinates","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"id":{"type":"string","description":"Funnel ID"},"videos":{"type":"array","items":{"type":"object","properties":{"video_id":{"type":"string","description":"Video ID"},"x":{"type":"number","description":"X coordinate in funnel layout"},"y":{"type":"number","description":"Y coordinate in funnel layout"},"is_first":{"type":"boolean","description":"Mark as the initial video"}},"required":["video_id"],"additionalProperties":false},"minItems":1,"maxItems":50,"description":"Videos to add with optional positions"}},"required":["id","videos"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_add_videos_to_playlist","description":"Add videos to a playlist with order. Returns the updated playlist video entries [{video_id, playlist_id, order}].","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"playlist_id":{"type":"string","description":"Playlist ID"},"videos":{"type":"array","items":{"type":"object","properties":{"video_id":{"type":"string","description":"Video ID"},"order":{"type":"number","description":"Position order (0-based)"}},"required":["video_id","order"],"additionalProperties":false},"minItems":1,"description":"Videos to add with order"}},"required":["playlist_id","videos"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_apply_profile_to_videos","description":"Apply a player profile to one or more videos. Returns confirmation with the list of updated video_ids.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"profile_id":{"type":"string","description":"Profile ID to apply"},"video_ids":{"type":"array","items":{"type":"string"},"minItems":1,"maxItems":50,"description":"List of video IDs to apply the profile to (max 50)"}},"required":["profile_id","video_ids"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_check_download_status","description":"Check the status of an async download request. Returns {status, download_url} — url is present when status is 'ready'.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"video_external_id":{"type":"string","description":"Video external ID"},"format":{"type":"string","enum":["video","audio"],"description":"Requested format"},"quality":{"type":"string","description":"Requested quality"},"language":{"type":"string","description":"Requested language"}},"required":["video_external_id","format","quality","language"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_confirm_tutor_file_upload","description":"Confirm that a file was successfully uploaded to a Tutor AI assistant (call after uploading to the presigned URL)","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"file_id":{"type":"string","description":"File ID returned from generate_file_upload_url"},"upload_success":{"type":"boolean","description":"true if upload succeeded"}},"required":["file_id","upload_success"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_create_ai_assistant","description":"Purchase credits and create a new AI assistant for a video. Returns the created {id, name, status, video_id}.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"video_id":{"type":"string","description":"Video ID to bind the assistant to"},"name":{"type":"string","description":"Assistant name"}},"required":["video_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_create_ai_dubbing","description":"Create an AI dubbing job for a video. Costs 2 credits/min (standard) or 10 credits/min (lipsync). Returns {id, status, video_id, from_lang, to_lang}.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"video_id":{"type":"string","description":"Video ID"},"from_lang":{"type":"string","description":"Source language code (e.g. 'pt-BR', 'en')"},"to_lang":{"type":"string","description":"Target language code (e.g. 'en', 'es')"},"is_lipsync":{"type":"boolean","default":false,"description":"Use LipSync (lip sync, 10 credits/min). Default: standard dubbing (2 credits/min)"},"num_speakers":{"type":"number","default":1,"description":"Number of speakers in the video"},"clone_original_voice":{"type":"boolean","default":false,"description":"Clone original voice"},"replace_existing_subtitles":{"type":"boolean","default":false,"description":"Replace existing subtitles with synced ones"}},"required":["video_id","from_lang","to_lang"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_create_comparison","description":"Create a new A/B test. Needs at least 2 videos to start. Returns the created {id, name, status, video_ids}.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"name":{"type":"string","description":"Test name"},"video_ids":{"type":"array","items":{"type":"string"},"minItems":2,"description":"Video IDs to compare (min 2)"}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_create_custom_field","description":"Create a custom metadata key-value field for a video (for tagging/categorization). Do NOT use this for chapters, subtitles, CTAs, or player settings — use the specific tools for those. Max 50 fields per video.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"video_id":{"type":"string","description":"Video ID"},"key":{"type":"string","maxLength":200,"description":"Field key/name"},"value":{"type":"string","maxLength":500,"description":"Field value"}},"required":["video_id","key","value"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_create_folder","description":"Create a new folder. Returns the created {id, name, parent_folder_id}.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"name":{"type":"string","description":"Folder name"},"parent_folder_id":{"type":"string","description":"Parent folder ID for nesting"}},"required":["name"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_create_folder_refer","description":"Add a domain referrer scoped to a single folder. type is ALLOW|BLOCK. The new row starts in 'pending'. A folder cannot have the same hostname twice. library_id is resolved automatically when omitted. On error the API returns { errCode, errMsg }.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"folder_id":{"type":"string","description":"Folder UUID where the referrer applies"},"hostname":{"type":"string","description":"Domain hostname without protocol, e.g. 'example.com' or wildcard '*.cliente.com'"},"type":{"type":"string","enum":["ALLOW","BLOCK"],"description":"ALLOW = whitelist (only listed domains play); BLOCK = blacklist (listed domains are denied)"},"library_id":{"type":"string","description":"Library UUID. Resolved from GET /library when omitted."}},"required":["folder_id","hostname","type"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_create_funnel","description":"Create a new video funnel","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"name":{"type":"string","description":"Funnel name"},"description":{"type":"string","description":"Funnel description"}},"required":["name"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_create_live","description":"Create a new live stream event","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"title":{"type":"string","description":"Live title"},"folder_id":{"type":"string","description":"Folder ID for recording"},"scheduled_at":{"type":"string","description":"Scheduled time (ISO 8601)"}},"required":["title"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_create_playlist","description":"Create a new playlist. Videos are REFERENCES — removing from playlist does NOT delete the video. Returns the created {id, name, description, access_type}.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"name":{"type":"string","description":"Playlist name"},"description":{"type":"string","description":"Playlist description"},"creator_name":{"type":"string","description":"Creator name displayed in player — REQUIRED by the API; defaults to the playlist name"},"access_type":{"type":"string","enum":["anyone_with_link","anyone_with_password"],"default":"anyone_with_link","description":"Access type — REQUIRED by the Panda API; defaults to anyone_with_link"},"password":{"type":"string","description":"Password (for password-protected playlists)"}},"required":["name"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_create_profile","description":"Create a new player profile (POST /profile). IMPORTANT: per the Panda API, `name` MUST be the ID of an existing video — if it is not a real video ID the API returns 500 and nothing is created. Create only accepts `name` and `exclusive`; it does NOT accept colors/controls/vsl. To set those, call panda_update_profile with the returned profile id afterward. Returns {data: {id, name}}.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"name":{"type":"string","minLength":3,"maxLength":100,"description":"MUST be the ID of an existing video (the profile is created for that video)"},"exclusive":{"type":"boolean","description":"Optional. True = dedicated/restricted to a single video"}},"required":["name"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_create_refer","description":"Add one or more library-level domain referrers. Each entry has a hostname and a type (ALLOW|BLOCK, default ALLOW). The same hostname cannot coexist as both ALLOW and BLOCK at the library scope (duplicate check is type-agnostic). New rows start in 'pending' (when domain protection is active) or 'inactive'. library_id is resolved automatically when omitted. On error the API returns { errCode, errMsg }.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"refers":{"type":"array","items":{"type":"object","properties":{"hostname":{"type":"string","description":"Domain hostname without protocol, e.g. 'example.com' or wildcard '*.cliente.com'"},"type":{"type":"string","enum":["ALLOW","BLOCK"],"description":"ALLOW = whitelist (only listed domains play); BLOCK = blacklist (listed domains are denied)","default":"ALLOW"}},"required":["hostname"],"additionalProperties":false},"minItems":1,"description":"Referrers to create (1 or more)"},"library_id":{"type":"string","description":"Library UUID. Resolved from GET /library when omitted."}},"required":["refers"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_create_stream_key","description":"Create a new named stream key for OBS or other streaming software","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"name":{"type":"string","description":"Stream key name"}},"required":["name"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_create_user","description":"Create a new user in the organization. Returns the created {id, name, email, role_id}.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"email":{"type":"string","format":"email","description":"User email"},"name":{"type":"string","description":"User full name"},"role_id":{"type":"string","description":"Role ID to assign"}},"required":["email","name"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_create_watermark_group","description":"Create a new watermark group","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"name":{"type":"string","description":"Group name"},"video_ids":{"type":"array","items":{"type":"string"},"minItems":1,"maxItems":50,"description":"Videos to include in this group (max 50)"}},"required":["name"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_delete_ai_assistant","description":"Delete an AI assistant","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"assistant_id":{"type":"string","description":"AI assistant ID"}},"required":["assistant_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_delete_ai_workflow","description":"Delete an AI workflow (transcription, dubbing, etc.)","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"workflow_id":{"type":"string","description":"Workflow ID"}},"required":["workflow_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_delete_comparisons","description":"Delete one or more A/B tests","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"comparison_ids":{"type":"array","items":{"type":"string"},"minItems":1,"maxItems":50,"description":"Comparison IDs to delete (max 50)"}},"required":["comparison_ids"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_delete_cta","description":"Delete a CTA from a video","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"video_id":{"type":"string","description":"Video ID"},"placement":{"type":"string","enum":["inside","outside"],"description":"CTA placement"},"cta_id":{"type":"string","description":"CTA ID to delete"}},"required":["video_id","placement","cta_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_delete_dubbing_audio","description":"Delete a dubbed audio track from a video","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"video_id":{"type":"string","description":"Video ID"},"audio_id":{"type":"string","description":"Audio track ID to delete"}},"required":["video_id","audio_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_delete_folder","description":"Delete a folder by ID. WARNING: All videos and subfolders inside are also deleted (cascade). Goes to trash for 30 days.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"folder_id":{"type":"string","description":"Folder ID"}},"required":["folder_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_delete_folder_refer","description":"Delete one or more folder-level referrers by id (batch). Duplicate ids are de-duplicated; if any id is missing the API returns 404, and if any referrer is library-level it returns 400 ({ errCode, errMsg }). Rows transition to 'deleting' and are removed asynchronously.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"refer_ids":{"type":"array","items":{"type":"string"},"minItems":1,"maxItems":50,"description":"Folder referrer UUIDs to delete (max 50)"},"library_id":{"type":"string","description":"Library UUID. Resolved from GET /library when omitted."}},"required":["refer_ids"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_delete_funnel","description":"Delete a funnel by ID. WARNING: this is destructive. Videos inside the funnel may become inaccessible.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"funnel_id":{"type":"string","description":"Funnel ID"}},"required":["funnel_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_delete_lives","description":"Delete one or more live streams","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"live_ids":{"type":"array","items":{"type":"string"},"minItems":1,"maxItems":50,"description":"List of live IDs to delete (max 50)"}},"required":["live_ids"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_delete_playlist","description":"Delete a playlist. Videos are NOT deleted — only the collection is removed.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"playlist_id":{"type":"string","description":"Playlist ID"}},"required":["playlist_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_delete_profile","description":"Delete a player profile by ID","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"profile_id":{"type":"string","description":"Profile ID"}},"required":["profile_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_delete_refer","description":"Delete one or more library-level referrers by id (batch). Each referrer must be library-level (folder_id=null) and belong to the library; otherwise the API returns 400 ({ errCode, errMsg }). Rows transition to 'deleting' and are removed asynchronously.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"refer_ids":{"type":"array","items":{"type":"string"},"minItems":1,"maxItems":50,"description":"Referrer UUIDs to delete (max 50)"},"library_id":{"type":"string","description":"Library UUID. Resolved from GET /library when omitted."}},"required":["refer_ids"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_delete_short","description":"Delete a Shorts job/project","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"job_id":{"type":"string","description":"Shorts job ID"}},"required":["job_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_delete_subaccount","description":"Delete a subaccount","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"organization_id":{"type":"string","description":"Subaccount organization ID"}},"required":["organization_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_delete_subtitle","description":"Remove a subtitle from a video by language","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"video_id":{"type":"string","description":"Video ID"},"srclang":{"type":"string","description":"Language code to delete (e.g. pt-BR, en, es)"}},"required":["video_id","srclang"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_delete_thumbnail","description":"Delete a thumbnail from a video. Type: 'start' (default), 'pause' (requires thumb_name), 'end'.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"video_id":{"type":"string","description":"Video ID"},"type":{"type":"string","enum":["start","pause","end"],"default":"start","description":"Thumbnail type to delete"},"thumb_name":{"type":"string","description":"Thumbnail name (required for pause type)"}},"required":["video_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_delete_tutor_file","description":"Delete a file from a Tutor AI assistant","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"file_id":{"type":"string","description":"File ID"}},"required":["file_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_delete_user","description":"Remove a user from the organization","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"user_id":{"type":"string","description":"User ID"}},"required":["user_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_delete_videos","description":"Delete one or more videos by ID. Sends to trash for 30 days.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"video_ids":{"type":"array","items":{"type":"string"},"minItems":1,"maxItems":50,"description":"List of video IDs to delete (max 50)"}},"required":["video_ids"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_delete_watermark_group","description":"Delete a watermark group","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"drm_group_id":{"type":"string","description":"Watermark group ID"}},"required":["drm_group_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_disable_auto_recharge","description":"Disable auto-recharge for credits","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_disable_watermark","description":"Disable watermark protection for the account","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_download_subtitle","description":"Download a subtitle file for a specific language","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"video_id":{"type":"string","description":"Video ID"},"srclang":{"type":"string","description":"Language code (e.g. 'pt-BR', 'en')"}},"required":["video_id","srclang"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_duplicate_video","description":"Create a copy of a video. Only works for CONVERTED, non-external, non-funnel videos.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"video_id":{"type":"string","description":"Video ID to duplicate"}},"required":["video_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_enable_auto_recharge","description":"Enable auto-recharge for credits. When balance drops below trigger, recharges action_value.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"trigger_value":{"type":"number","minimum":100,"description":"Balance threshold to trigger recharge (min 100)"},"action_value":{"type":"number","minimum":5,"description":"Amount to recharge (min 5 credits)"}},"required":["trigger_value","action_value"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_enable_watermark","description":"Enable watermark protection for the account","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_finish_comparison","description":"Finish an A/B test and declare a winner. PERMANENT — cannot be reversed.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"comparison_id":{"type":"string","description":"Comparison ID"},"winner_video_id":{"type":"string","description":"ID of the winning video"}},"required":["comparison_id","winner_video_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_finish_live","description":"End a live broadcast","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"live_id":{"type":"string","description":"Live ID"}},"required":["live_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_generate_ai_subtitles","description":"Generate subtitles for a video using Panda AI. Creates a transcription in the specified language. Costs credits based on video duration and tier.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"video_id":{"type":"string","description":"Video ID"},"from_lang":{"type":"string","description":"Source language code (e.g. 'pt-BR', 'en', 'es')"},"tier":{"type":"string","enum":["essential","advanced","pro"],"default":"essential","description":"Quality tier: 'essential' (clean audio, 3 langs, 1 credit/30min), 'advanced' (multi-speaker, 34 langs, 1 credit/5min), 'pro' (complex, 34 langs, 1 credit/min)"},"additional_langs":{"type":"array","items":{"type":"string"},"description":"Additional languages to translate into (e.g. ['en', 'es'])"}},"required":["video_id","from_lang"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_generate_tutor_file_upload_url","description":"Generate a presigned URL to upload a PDF/file to a Tutor AI assistant. Returns upload_url and file_id. After uploading, call panda_confirm_tutor_file_upload.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"assistant_id":{"type":"string","description":"Tutor assistant ID"},"file_name":{"type":"string","description":"File name (e.g. 'guide.pdf')"},"file_type":{"type":"string","description":"MIME type (e.g. 'application/pdf')"},"file_size":{"type":"number","description":"File size in bytes"}},"required":["assistant_id","file_name","file_type","file_size"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_get_account_analytics","description":"Get general analytics metrics for the whole account. Returns {views, unique_viewers, watch_time_seconds, avg_watch_percentage, plays}.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"start_date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Start date (YYYY-MM-DD)"},"end_date":{"$ref":"#/properties/start_date","description":"End date (YYYY-MM-DD)"}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_get_ai_assistant","description":"Get an AI assistant's details. Returns {id, name, status, videos: [{id, title}], files: [{id, file_name}], answers_count}.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"assistant_id":{"type":"string","description":"AI assistant ID"}},"required":["assistant_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_get_ai_assistant_purchase_overview","description":"Get credit cost overview before creating an AI assistant. Returns {credit_cost, current_balance, sufficient_credits}.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"video_id":{"type":"string","description":"Video ID"}},"required":["video_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_get_ai_workflows","description":"Get AI workflow status for a video (transcription, dubbing, translation progress)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"video_id":{"type":"string","description":"Video ID"}},"required":["video_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_get_auto_recharge_settings","description":"Get auto-recharge configuration for credits. Returns {enabled, trigger_value, action_value}.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_get_bandwidth_analytics","description":"Get bandwidth/traffic usage by folder, by video, or DRM by video. Returns array of {name, bandwidth_bytes, video_id?} entries.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"video_id":{"type":"string","description":"Video ID (omit for folder-level)"},"type":{"type":"string","enum":["all","drm"],"default":"all","description":"Traffic type — 'all' (regular, required by the API) or 'drm'"},"start_date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Start date (YYYY-MM-DD)"},"end_date":{"$ref":"#/properties/start_date","description":"End date (YYYY-MM-DD)"}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_get_business_rules","description":"Returns the platform business rules: the real consequences of actions that modify, delete or move resources (e.g., removing a video from a funnel deletes it permanently, it does not just unlink it).\nUseful before planning such actions, so the advice given to the user matches how the platform actually behaves.\nDomains: funnels, videos_and_folders, playlists, drm_watermark, comparisons_ab_tests, lives, shorts, player_profiles, anti_download_and_domains, credits, thumbnails_and_subtitles.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"domain":{"type":"string","description":"Filter by domain (e.g. 'funnels', 'playlists', 'drm_watermark'). Omit to get ALL rules."}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_get_credits_balance","description":"Get the current credits balance for the account. 1 credit = R$1.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_get_credits_history","description":"Get credits transaction history for a date range. Returns {balance, history: [{id, type, amount, status, description, created_at}]}.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"start_date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Start date (YYYY-MM-DD)"},"end_date":{"$ref":"#/properties/start_date","description":"End date (YYYY-MM-DD)"}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_get_custom_fields","description":"Get all custom fields for a video. Returns array of {id, key, value} metadata pairs.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"video_id":{"type":"string","description":"Video ID"}},"required":["video_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_get_folder","description":"Get a folder's details and contents. Returns {id, name, parent_folder_id, status, videos: [{id, title, status}], folders: [{id, name}]}.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"folder_id":{"type":"string","description":"Folder ID"}},"required":["folder_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_get_funnel","description":"Get a funnel's details and its videos. Returns {data: {id, name, videos: [{id, title, status, is_first}]}}. Funnels are NOT folders.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"funnel_id":{"type":"string","description":"Funnel ID"}},"required":["funnel_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_get_live","description":"Get details of a specific live stream. Returns {id, title, status, scheduled_at, stream_key, rtmp, live_hls, created_at}.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"live_id":{"type":"string","description":"Live ID"}},"required":["live_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_get_live_viewers","description":"Get viewer history for a live stream. Returns time-series array of viewer counts.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"live_id":{"type":"string","description":"Live ID"}},"required":["live_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_get_player_config","description":"Get global player configuration (applies to all videos without a custom profile)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_get_playlist","description":"Get details of a specific playlist. Returns {id, name, description, videos_quantity, access_type, creator_name, duration, updated_at}.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"playlist_id":{"type":"string","description":"Playlist ID"}},"required":["playlist_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_get_playlist_videos","description":"List all videos in a playlist. Returns array of {id, video_id, order, video: {id, title, duration}}.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"playlist_id":{"type":"string","description":"Playlist ID"}},"required":["playlist_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_get_profile","description":"Get details of a specific player profile including all settings (controls, colors, vsl, saveProgress)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"profile_id":{"type":"string","description":"Profile ID"}},"required":["profile_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_get_ranking_analytics","description":"Get ranking analytics for the account. Returns {most_watched: [{video_id, title, watch_time}], most_played: [{video_id, title, plays}]}.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"start_date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Start date (YYYY-MM-DD)"},"end_date":{"$ref":"#/properties/start_date","description":"End date (YYYY-MM-DD)"}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_get_realtime_analytics","description":"Get real-time viewer count and activity for the account. Returns {current_viewers, active_videos: [{video_id, title, viewers}]}.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_get_referrals_summary","description":"Get referral program summary (balance, estimated value)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_get_retention_analytics","description":"Get audience retention analytics (account-wide or per video). Returns array of {percentage, viewers} showing drop-off at each point.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"video_id":{"type":"string","description":"Video ID (omit for account-wide)"},"start_date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Start date (YYYY-MM-DD)"},"end_date":{"$ref":"#/properties/start_date","description":"End date (YYYY-MM-DD)"}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_get_subscription","description":"Get current subscription/plan details. Returns {subscription_id, subscriptions: {name, status, active}, currency, addons}.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_get_subtitle_by_language","description":"Get a subtitle file for a specific language","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"video_id":{"type":"string","description":"Video ID"},"srclang":{"type":"string","description":"Language code (e.g. pt-BR, en, es)"}},"required":["video_id","srclang"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_get_subtitles","description":"Get all subtitle information for a video","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"video_id":{"type":"string","description":"Video ID"}},"required":["video_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_get_thumbnails","description":"Get all thumbnails for a video. Returns {start: {url, name}, pause: [{url, name}], end: {url, name}} — each type may be null if not set.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"video_id":{"type":"string","description":"Video ID"}},"required":["video_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_get_video","description":"Get full properties of a video by its ID, including config, profile, status, duration, folder, subtitles, etc.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"video_id":{"type":"string","description":"Video ID"}},"required":["video_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_get_video_analytics","description":"Get analytics metrics for a specific video. Returns {views, unique_viewers, watch_time_seconds, avg_watch_percentage, plays}.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"video_id":{"type":"string","description":"Video ID"},"start_date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Start date (YYYY-MM-DD)"},"end_date":{"$ref":"#/properties/start_date","description":"End date (YYYY-MM-DD)"}},"required":["video_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_get_video_player_config","description":"Get per-video player configuration (chapters, CTAs, pixels, redirect, AI features, retention markers, subtitle default, offline config)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"video_id":{"type":"string","description":"Video ID"}},"required":["video_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_get_videos_count","description":"Get total video count by status (CONVERTED, CONVERTING, DRAFT, etc.)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_get_watermark_group","description":"Get a watermark group's details. Returns {id, name, video_ids: [], folder_ids: [], created_at}.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"drm_group_id":{"type":"string","description":"Watermark group ID"}},"required":["drm_group_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_get_watermark_status","description":"Check whether watermark/DRM is currently active on the account. Returns {active: boolean}.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_help_get_article","description":"Get the full content of a specific Panda Video help center article by slug.\nUse this after searching to read the complete content of an article.\nThe response is the full official documentation.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"slug":{"type":"string","description":"Article slug (e.g. 'como-publicar-seu-video-na-panda-video')"}},"required":["slug"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_help_search","description":"Search Panda Video help center articles to answer user questions.\nSearches through ALL 136 pre-indexed articles from the official help center (https://help.pandavideo.com/pt-br/).\nUse this tool whenever the user has a QUESTION about how Panda Video works, pricing, features, integrations, configuration, etc.\nDO NOT use this for API execution commands — only for knowledge/support questions.\nIMPORTANT: Base your answer EXCLUSIVELY on the article content returned. Do NOT infer, assume, or use external knowledge.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"query":{"type":"string","description":"The user's question or search keywords about Panda Video"},"limit":{"type":"number","minimum":1,"maximum":20,"default":5,"description":"Max articles to return (default 5, max 20)"}},"required":["query"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_import_video_for_shorts","description":"Import a video for AI shorts generation. Sources: library (video_id), youtube (source_url). Default config: vertical aspect, 30-60s duration, no captions. Video must be CONVERTED, 5min-5hrs, <50GB, no DRM.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"source_type":{"type":"string","enum":["library","youtube"],"description":"Source: 'library' for Panda video, 'youtube' for YouTube URL"},"video_id":{"type":"string","description":"Video ID from Panda library (required when source_type=library)"},"source_url":{"type":"string","description":"YouTube URL (required when source_type=youtube)"},"video_title":{"type":"string","description":"Title for the project (defaults to 'Shorts Project')"},"aspect_ratio":{"type":"string","enum":["vertical","horizontal","square"],"description":"Output format (default: vertical)"},"duration_preset":{"type":"string","enum":["30-60","60-90","90-180"],"description":"Clip duration range in seconds (default: 30-60)"},"start_time":{"type":"number","description":"Start time in seconds to clip from (default: 0)"},"end_time":{"type":"number","description":"End time in seconds to clip to (default: full video)"},"contexts":{"type":"array","items":{"type":"string"},"description":"AI context hints: 'engajamento','educacional','humor','motivacional','personalizado'"}},"required":["source_type"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_list_ai_assistants","description":"List all AI video assistants. Returns array of {id, name, status, videos: [{id, title}], created_at}.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"page":{"type":"integer","minimum":1,"description":"Page number (default: 1)"},"limit":{"type":"integer","minimum":1,"maximum":100,"description":"Results per page (default: 25, max: 100)"}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_list_comparisons","description":"List all A/B test comparisons. Status: DRAFT → IN_PROGRESS → COMPLETED. Returns array of {id, name, description, status, videos: [], winner_video_id, created_at}.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_list_folder_refer","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"folder_id":{"type":"string","description":"Folder UUID whose referrers to list"},"library_id":{"type":"string","description":"Library UUID. Resolved from GET /library when omitted."}},"required":["folder_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_list_folder_refer_inherited","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"folder_id":{"type":"string","description":"Folder UUID to resolve effective referrers for"},"library_id":{"type":"string","description":"Library UUID. Resolved from GET /library when omitted."}},"required":["folder_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_list_folders","description":"List all folders. Returns array of {id, name, parent_folder_id, status, created_at, videos_count}.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"all_status":{"type":"number","description":"1 to include deleted folders, 0 for active only"}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_list_funnels","description":"List all funnels. Returns {data: [{id, name, videos_count, created_at}]}. A funnel with videos_count=0 has no videos. Funnels are NOT folders.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_list_invoices","description":"List all invoices. Returns array of {id, status, amount_due, amount_paid, created, due_date, invoice_pdf, hosted_invoice_url}.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_list_lives","description":"List all live streams. Returns array of {id, title, status, scheduled_at, created_at}.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"page":{"type":"number","description":"Page number (default 1, 100 per page)"}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_list_plans","description":"List available subscription plans and pricing","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"currency":{"type":"string","enum":["BRL","USD"],"default":"BRL","description":"Currency"}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_list_playlists","description":"List all playlists. Returns array of {id, name, videos_quantity, duration, access_type, updated_at}.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_list_profiles","description":"List all player profiles (GET /profile). 'Profiles' are player UI configs, not user accounts. Returns {data: [{id, name, pullzone_name}]} — a profile's `name` is the ID of the video it was created for. Use panda_get_profile for a profile's full settings. No pagination.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_list_refer","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"library_id":{"type":"string","description":"Library UUID. Resolved from GET /library when omitted."}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_list_refer_all","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"library_id":{"type":"string","description":"Library UUID. Resolved from GET /library when omitted."}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_list_short_segments","description":"List all generated segments (clips) for a Shorts job. Each segment has viralScore, duration, transcription.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"job_id":{"type":"string","description":"Shorts job ID"}},"required":["job_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_list_shorts","description":"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}.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"page":{"type":"number","description":"Page number (default 1)"}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_list_stream_keys","description":"List all stream keys for live broadcasting. Returns array of {id, name, stream_key, rtmp, created_at}.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_list_subaccounts","description":"List all subaccounts and their usage limits. Returns array of {organization_id, name, status, credits_balance, storage_used, limits}.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_list_users","description":"List all users in the organization. Returns array of {id, name, email, role_id, role_name, created_at}.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_list_videos","description":"List videos. Each video has: id, title, status, created_at, length (seconds), folder_id, config. 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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"page":{"type":"integer","minimum":1,"description":"Page number (default: 1)"},"limit":{"type":"integer","minimum":1,"maximum":100,"description":"Results per page (default: 25, max: 100)"},"title":{"type":"string","description":"Search by video title (partial match, case-insensitive)"},"folder_id":{"type":"string","description":"Filter by folder ID"},"status":{"type":"string","description":"Filter by status (e.g. 'CONVERTED')"}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_list_watermark_groups","description":"List all watermark groups. Returns array of {id, name, active, video_ids: [], folder_ids: [], created_at}.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"page":{"type":"integer","minimum":1,"description":"Page number (default: 1)"},"limit":{"type":"integer","minimum":1,"maximum":100,"description":"Results per page (default: 25, max: 100)"}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_manage_drm_group_items","description":"Add or remove videos and/or folders from a DRM watermark group. Returns the updated group with current video_ids and folder_ids.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"drm_group_id":{"type":"string","description":"Watermark group ID"},"action":{"type":"string","enum":["add","remove"],"description":"Whether to add or remove items"},"video_ids":{"type":"array","items":{"type":"string"},"description":"Video IDs"},"folder_ids":{"type":"array","items":{"type":"string"},"description":"Folder IDs"}},"required":["drm_group_id","action"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_move_videos","description":"Move one or more videos to a folder","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"video_ids":{"type":"array","items":{"type":"string"},"minItems":1,"maxItems":50,"description":"List of video IDs to move (max 50)"},"folder_id":{"type":"string","description":"Target folder ID, or \"root\" to move to the root (no folder)"}},"required":["video_ids","folder_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_reencode_video","description":"Re-encode a video with a specific compression mode","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"video_id":{"type":"string","description":"Video ID"},"compression_mode":{"type":"string","enum":["lossless","balanced","aggressive"],"description":"Compression mode"}},"required":["video_id","compression_mode"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_remove_video_from_playlist","description":"Remove a video from a playlist. Does NOT delete the video.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"playlist_id":{"type":"string","description":"Playlist ID"},"video_id":{"type":"string","description":"Video ID to remove"}},"required":["playlist_id","video_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_remove_videos_from_funnel","description":"Remove one or more videos from a funnel","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"id":{"type":"string","description":"Funnel ID"},"video_ids":{"type":"array","items":{"type":"string"},"minItems":1,"maxItems":50,"description":"Video IDs to remove (max 50)"}},"required":["id","video_ids"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_request_download","description":"Request an async download for a video. Only works for CONVERTED, non-external, non-Hotmart videos. Returns {status, message}.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"video_external_id":{"type":"string","description":"Video external ID"},"quality":{"type":"string","description":"Quality (e.g. '1080', '720', '480')"},"format":{"type":"string","enum":["video","audio"],"description":"Download format"},"language":{"type":"string","description":"Language code (e.g. 'original', 'en', 'pt-BR')"},"video_title":{"type":"string","description":"Video title (for the download file name)"}},"required":["video_external_id","quality","format","language","video_title"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_save_segment_to_library","description":"Save a Short segment to the video library as an independent video","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"segment_id":{"type":"string","description":"Segment ID"},"title":{"type":"string","description":"Title for the saved video"},"folder_id":{"type":"string","description":"Folder ID to save into"}},"required":["segment_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_set_block_none_refer","description":"Set the global 'block_none_refer' policy for the library. When true, playback requests that carry NO referer are blocked; when false, they are allowed. This is the master switch that activates/deactivates domain protection for requests without a referer. On error the API returns { errCode, errMsg }. library_id is resolved automatically when omitted.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"block_none_refer":{"type":"boolean","description":"true = block playback requests with no referer; false = allow them"},"library_id":{"type":"string","description":"Library UUID. Resolved from GET /library when omitted."}},"required":["block_none_refer"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_set_refer_status","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"refer_id":{"type":"string","description":"Referrer UUID to toggle"},"active":{"type":"boolean","description":"true to activate, false to deactivate"},"library_id":{"type":"string","description":"Library UUID. Resolved from GET /library when omitted."}},"required":["refer_id","active"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_set_video_offline","description":"Configure offline playback for a video (mobile app feature)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"video_id":{"type":"string","description":"Video ID"},"enabled":{"type":"boolean","description":"Enable or disable offline playback"},"expire_days":{"type":["number","null"],"description":"Days until offline access expires (null = never)"},"external_link_enabled":{"type":"boolean","description":"Show external link button"},"external_link_url":{"type":"string","description":"External link URL"},"external_link_text":{"type":"string","description":"External link button text"}},"required":["video_id","enabled"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_start_comparison","description":"Start an A/B test (begin collecting data). Only from DRAFT status. Returns the updated comparison with status IN_PROGRESS.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"comparison_id":{"type":"string","description":"Comparison ID"}},"required":["comparison_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_transfer_credits","description":"Transfer credits to a subaccount","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"target_organization_id":{"type":"string","description":"Target subaccount organization ID"},"amount":{"type":"number","description":"Number of credits to transfer"}},"required":["target_organization_id","amount"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_update_ai_assistant","description":"Update AI assistant information (name, status, etc.)","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"assistant_id":{"type":"string","description":"AI assistant ID"},"name":{"type":"string","description":"New name"},"status":{"type":"string","description":"New status (e.g. 'ready', 'disabled')"}},"required":["assistant_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_update_ai_assistant_chat_visibility","description":"Show or hide the AI chat widget on the video player","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"assistant_id":{"type":"string","description":"AI assistant ID"},"visible":{"type":"boolean","description":"True to show, false to hide"}},"required":["assistant_id","visible"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_update_ai_assistant_video_bindings","description":"Replace the videos bound to an AI assistant. Sends the FULL list of video_ids — existing bindings not in the list will be removed.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"assistant_id":{"type":"string","description":"AI assistant ID"},"video_ids":{"type":"array","items":{"type":"string"},"minItems":1,"maxItems":50,"description":"New list of video IDs to bind (max 50)"},"lang":{"type":"string","description":"Language code"}},"required":["assistant_id","video_ids"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_update_auto_recharge","description":"Update auto-recharge settings","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"trigger_value":{"type":"number","minimum":100,"description":"New trigger threshold"},"action_value":{"type":"number","minimum":5,"description":"New recharge amount"}},"required":["trigger_value","action_value"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_update_cta","description":"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"video_id":{"type":"string","description":"Video ID"},"placement":{"type":"string","enum":["inside","outside"],"description":"CTA placement"},"cta_id":{"type":"string","description":"ID of the CTA to update"},"text":{"type":"string","description":"Button label text. Required unless custom_html is set."},"url":{"type":"string","description":"URL opened when the button is clicked. Required unless custom_html is set."},"start_time":{"type":"number","description":"Seconds into the video when the button appears. Omit (with end_time) for the whole video."},"end_time":{"type":"number","description":"Seconds into the video when the button disappears. Omit to show until the end of the video."},"size":{"type":"string","enum":["small","medium","large"],"description":"Button size (default: small)"},"position":{"type":"string","enum":["topLeft","topCenter","topRight","midLeft","midCenter","midRight","bottomLeft","bottomCenter","bottomRight"],"description":"Button position on the video overlay. Only applies to placement='inside'."},"text_color":{"type":"string","description":"Text color, hex (default: #FFFFFF)"},"text_hover_color":{"type":"string","description":"Text color on hover, hex"},"background_color":{"type":"string","description":"Background color, hex (default: #3e50f7)"},"background_hover_color":{"type":"string","description":"Background color on hover, hex"},"append_website_query_params":{"type":"boolean","description":"Append the page's URL query params to the button's URL"},"custom_html":{"type":"string","description":"Raw HTML/CSS/JS to render instead of the styled button (advanced)"}},"required":["video_id","placement","cta_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_update_folder","description":"Update folder properties (name, parent). Also used to recover deleted folders with status=true.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"folder_id":{"type":"string","description":"Folder ID"},"name":{"type":"string","description":"New folder name"},"parent_folder_id":{"type":"string","description":"New parent folder ID"},"status":{"type":"boolean","description":"Set true to recover a deleted folder"}},"required":["folder_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_update_folder_refer","description":"Edit one or more existing referrers (refer_ids) in a single call: rename the hostname, change the type (ALLOW|BLOCK), and/or move them between scopes. scope='library' makes the domain apply to the whole library (omit folder_ids). scope='folder' makes it apply to the listed folder_ids (required and non-empty, the backend computes the add/remove diff). All refer_ids must belong to the same hostname. Returns { message, hostname, type, scope, renamed, folders_added, folders_removed, refers }. On error the API returns { errCode, errMsg }. library_id is resolved automatically when omitted.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"refer_ids":{"type":"array","items":{"type":"string"},"minItems":1,"maxItems":50,"description":"Referrer UUIDs to edit (all must be the same hostname) (max 50)"},"hostname":{"type":"string","description":"Domain hostname without protocol, e.g. 'example.com' or wildcard '*.cliente.com'"},"type":{"type":"string","enum":["ALLOW","BLOCK"],"description":"ALLOW = whitelist (only listed domains play); BLOCK = blacklist (listed domains are denied)"},"scope":{"type":"string","enum":["library","folder"],"description":"Target scope: 'library' (whole library) or 'folder' (specific folder_ids)"},"folder_ids":{"type":"array","items":{"type":"string"},"minItems":1,"maxItems":50,"description":"Target folder UUIDs — required when scope='folder' (max 50)"},"library_id":{"type":"string","description":"Library UUID. Resolved from GET /library when omitted."}},"required":["refer_ids","hostname","type","scope"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_update_funnel","description":"Update a funnel's properties (rename)","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"funnel_id":{"type":"string","description":"Funnel ID"},"id":{"type":"string","description":"Funnel ID (required in body too)"},"name":{"type":"string","description":"New name"},"description":{"type":"string","description":"New description"}},"required":["funnel_id","id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_update_player_config","description":"Update global player configuration (applies to all videos without a custom profile). Returns the updated config object.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"config":{"type":"object","additionalProperties":{},"description":"Global player config object (controls, colors, vsl, saveProgress, general)"}},"required":["config"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_update_playlist","description":"Update a playlist's properties","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"playlist_id":{"type":"string","description":"Playlist ID"},"name":{"type":"string","description":"New name"},"description":{"type":"string","description":"New description"},"creator_name":{"type":"string","description":"Creator name"},"access_type":{"type":"string","enum":["anyone_with_link","anyone_with_password"],"description":"Access type"},"password":{"type":"string","description":"Password"},"image_id":{"type":"string","description":"Logo image ID"}},"required":["playlist_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_update_profile","description":"Update a player profile's settings. Covers: player colors (colors.primaryColor / controlsColor), enabled controls list, smart autoplay (vsl.smartAutoplay), VSL mode (vsl.disablePause / disableForward / alternativeProgress), playback speed (general.default_speed), save progress, big play button (use panda_update_video_config — that lives elsewhere), and SUBTITLE APPEARANCE: caption text/background colors (captions.foreground / captions.background — 8-char hex with alpha) and caption font size (general.fontSize as keyword 'extraSmall'|'small'|'normal'|'large'|'extraLarge', plus general.fontSizePx as the matching pixel number). When the user names a UI label like \"extra pequeno\" / \"extra small\", map it to the corresponding fontSize keyword and send both fontSize + fontSizePx. Do NOT use this tool for: chapters (use panda_update_video_config), subtitle generation (use panda_generate_ai_subtitles), thumbnails, or title/description (use panda_update_video). Each nested object REPLACES the existing one — send the COMPLETE object you want to keep.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"profile_id":{"type":"string","description":"Profile ID"},"name":{"type":"string","minLength":3,"maxLength":100,"description":"Rename the profile (usually a video ID; 3–100 chars)"},"exclusive":{"type":"boolean","description":"Dedicate/restrict the profile to a single video"},"controls":{"type":"array","items":{"type":"string"},"description":"Array of enabled player controls (incl. \"play-large\" = Botão de Play Grande). Values: \"play-large\", \"rewind\", \"play\", \"fast-forward\", \"progress\", \"current-time\", \"volume\", \"captions\", \"settings\", \"pip\", \"fullscreen\", \"airplay\", \"cast\""},"hideControlsOnStart":{"type":"boolean","description":"Hide controls until user interacts"},"colors":{"type":"object","properties":{"primaryColor":{"type":"string","description":"Primary accent color (hex)"},"controlsColor":{"type":"string","description":"Controls color (hex)"},"background":{"type":"string","description":"Player background color (hex)"},"captionsColor":{"type":"string","description":"(Legacy) Subtitle text color (hex). Prefer `captions.foreground` on the modern subtitle editor."},"captionsBackgroundColor":{"type":"string","description":"(Legacy) Subtitle background color (hex). Prefer `captions.background`."}},"additionalProperties":false,"description":"Player color settings"},"captions":{"type":"object","properties":{"foreground":{"type":"string","description":"Subtitle text color as 8-char hex with alpha — `RRGGBBAA`, e.g. 'FFFFFFFF' = opaque white."},"background":{"type":"string","description":"Subtitle background color as 8-char hex with alpha — `RRGGBBAA`, e.g. '000000B3' = 70% opaque black."}},"additionalProperties":false,"description":"Per-video subtitle (caption) appearance — text and background colors (v2 dashboard)."},"vsl":{"type":"object","properties":{"autoplay":{"type":"boolean","description":"Auto-play video"},"smartAutoplay":{"type":"boolean","description":"Smart Autoplay — auto-plays muted, unmutes on interaction"},"disablePause":{"type":"boolean","description":"Disable pause button (VSL mode)"},"disableForward":{"type":"boolean","description":"Disable forward/seek (VSL mode)"},"restartAfterEnd":{"type":"boolean","description":"Restart video after it ends"},"alternativeProgress":{"type":"boolean","description":"Fake progress bar (VSL mode)"},"alternativeProgressHeight":{"type":"number","description":"Fake progress bar height in px"},"alternativeProgressVelocity":{"type":"number","description":"Fake progress bar speed (1-10)"},"alternativeProgress2xLimit":{"type":"number","description":"Percentage at which fake progress accelerates"},"alternativeProgressDefaultVelocity":{"type":"boolean","description":"Use recommended fake progress speed"},"timeDisplayType":{"type":"string","enum":["CURRENT_TIME","REMAINING_TIME"],"description":"Time display format"},"defaultLanguage":{"type":"string","description":"Default subtitle language"},"mutedIndicatorIcon":{"type":"boolean","description":"Show muted indicator overlay"},"mutedIndicatorSize":{"type":"string","enum":["none","small","medium","large"],"description":"Muted indicator size"},"mutedIndicatorFontSize":{"type":"number","description":"Muted indicator font size (12-32)"},"mutedIndicatorTextTop":{"type":"string","description":"Muted indicator top text (max 40 chars)"},"mutedIndicatorTextBottom":{"type":"string","description":"Muted indicator bottom text (max 40 chars)"},"mutedIndicatorBackgroundColor":{"type":"string","description":"Muted indicator background color"},"mutedIndicatorTextColor":{"type":"string","description":"Muted indicator text color"},"mutedIndicatorAnimation":{"type":"string","description":"Muted indicator animation style"},"pandaBranding":{"type":"boolean","description":"Show Panda branding in player"},"refCode":{"type":"string","description":"Affiliate referral code"}},"additionalProperties":false,"description":"VSL (Video Sales Letter) settings — controls autoplay, smart autoplay, fake progress bar, muted indicator"},"saveProgress":{"type":"object","properties":{"saveProgress":{"type":"boolean","description":"Enable resume from last position"},"initQuality":{"type":"number","description":"Initial video quality (e.g. 720)"},"saveProgressScreen":{"type":"boolean","description":"Show resume screen"},"saveProgressTitle":{"type":"string","description":"Resume screen title"}},"additionalProperties":false,"description":"Save progress / resume settings"},"general":{"type":"object","properties":{"default_speed":{"type":"number","description":"Default playback speed (1, 1.1, 1.2, 1.3, 1.4, 1.5)"},"smartSearch":{"type":"boolean","description":"(Legacy) Enable smart search in video. v2 sends `searchInsideVideo` — both accepted."},"fontSize":{"type":"string","enum":["extraSmall","small","normal","large","extraLarge"],"description":"Subtitle font size keyword: extraSmall=10px, small=12px, normal=14px(default), large=16px, extraLarge=18px. Send fontSizePx alongside."},"fontSizePx":{"type":"number","description":"Subtitle font size in px — must match fontSize: 10/12/14/16/18."},"startsWithSubtitle":{"type":"boolean","description":"Whether the video starts with the subtitle track visible by default."},"searchInsideVideo":{"type":"boolean","description":"Enable smart search inside the video (same semantic as legacy smartSearch)."}},"additionalProperties":false,"description":"General player + subtitle settings (speed, font size, search-in-video, defaults)."}},"required":["profile_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_update_subaccount","description":"Update a subaccount's settings (name, limits, status)","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"subaccount":{"type":"object","additionalProperties":{},"description":"Subaccount update payload"}},"required":["subaccount"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_update_subtitle_visibility","description":"Show or hide a subtitle language (hidden subtitles are not visible but still indexable for search)","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"video_id":{"type":"string","description":"Video ID"},"srclang":{"type":"string","description":"Language code (e.g. 'pt-BR', 'en')"},"hidden":{"type":"boolean","description":"true = hide subtitle, false = show"}},"required":["video_id","srclang","hidden"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_update_user","description":"Update a user's information or role","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"user_id":{"type":"string","description":"User ID"},"name":{"type":"string","description":"New name"},"role_id":{"type":"string","description":"New role ID"}},"required":["user_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_update_video","description":"Update 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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"video_id":{"type":"string","description":"Video ID"},"title":{"type":"string","description":"New video title"},"description":{"type":"string","description":"New video description"},"folder_id":{"type":"string","description":"Folder ID to move the video into"}},"required":["video_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_update_video_config","description":"Update per-video config (POST /player?type=video). Send only fields you want to change.\nFields: chapters, default_subtitle, redirect_video_id, custom_pixels, on_funnel, panda_branding, questions (AI quiz), mindmap (AI), abstract (AI ebook), retention_markers, ai.\nNOT for: controls, autoplay, Smart Autoplay, colors, speed, big play button, save progress — use panda_update_profile for those.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"video_id":{"type":"string","description":"Video ID"},"chapters":{"type":"array","items":{"type":"object","properties":{"title":{"type":"string","description":"Chapter title"},"time":{"type":"number","description":"Position in seconds (e.g. 0 for beginning, 60 for 1min)"}},"required":["title","time"],"additionalProperties":false},"description":"Chapters/bookmarks. Send [] to remove all."},"default_subtitle":{"type":"string","description":"Default subtitle language code (e.g. 'pt-BR', 'en') or 'false' to disable"},"redirect_video_id":{"type":["string","null"],"description":"Video ID to redirect to at end, or null to remove redirect"},"custom_pixels":{"type":"array","items":{"type":"object","additionalProperties":{}},"description":"Array of custom pixel objects (fbPixel, gtagIds, custom script)"},"on_funnel":{"type":"boolean","description":"Enable/disable funnel integration"},"panda_branding":{"type":"boolean","description":"Show/hide Panda logo branding on player"},"questions":{"type":"boolean","description":"Enable/disable AI Quiz feature"},"mindmap":{"type":"boolean","description":"Enable/disable AI MindMap feature"},"abstract":{"type":"boolean","description":"Enable/disable AI eBook/Abstract feature"},"retention_markers":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["pitch","custom"],"description":"Marker type"},"time":{"type":"number","description":"Position in seconds"},"title":{"type":"string","description":"Marker label"}},"required":["type","time"],"additionalProperties":false},"description":"Retention markers (pitch points) for analytics"},"ai":{"type":"object","additionalProperties":{},"description":"AI configuration object (search, tutor settings)"}},"required":["video_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_update_watermark_group","description":"Update a watermark group","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"drm_group_id":{"type":"string","description":"Watermark group ID"},"name":{"type":"string","description":"New group name"},"video_ids":{"type":"array","items":{"type":"string"},"minItems":1,"maxItems":50,"description":"Updated video list (max 50)"}},"required":["drm_group_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"panda_upload_video_from_url","description":"Import a video from an external URL (YouTube, Vimeo, S3, generic HTTPS)","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"url":{"type":"string","description":"URL of the video to import"},"source":{"type":"string","description":"Source type (e.g. 'youtube', 'vimeo', 's3', or domain)"},"title":{"type":"string","description":"Title for the imported video"},"folder_id":{"type":"string","description":"Folder to place the video in"},"access_key":{"type":"string","description":"S3 access key (for S3 imports only)"},"secret_key":{"type":"string","description":"S3 secret key (for S3 imports only)"}},"required":["url"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}}],"scan":{"score":91,"grade":"A","scanned_at":"2026-10-14T05:27:02.093Z","report":{"scannerVersion":"0.1.10","scannedAt":"2026-10-14T05:27:02.063Z","components":{"code":{"score":-1,"max":25,"notes":["remote-only server, no package to scan"]},"reliability":{"score":20,"max":20,"notes":["remote reachable in 1135ms"]},"poisoning":{"score":15,"max":15,"notes":["177 tool descriptions checked"]},"auth":{"score":8,"max":15,"notes":["API key sent as a header"]},"maintenance":{"score":15,"max":15,"notes":["last push 8 days ago"]},"identity":{"score":10,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year","website matches verified namespace"]}},"findings":[],"inputs":{"probes":[{"url":"https://mcp.pandavideo.com/mcp","reachable":true,"authRequired":false,"latencyMs":1135,"serverInfo":{"name":"panda-video-mcp","version":"2.0.0"}}],"packages":[],"repo":{"found":true,"owner":"pandavideo","repo":"panda-video-mcp","archived":false,"pushedAt":"2026-10-05T20:13:43Z","stars":0,"forks":0,"openIssues":0,"ownerType":"Organization","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/89841353?v=4","ownerCreatedAt":"2021-08-31T09:51:13Z","license":"MIT"},"icon":{"url":"https://framerusercontent.com/images/voj47bJ0Y3jRaxSDRBt3xxZkrWY.png","source":"site","width":1080,"height":1080},"presence":{"stars":0,"forks":0,"downloadsWeek":null,"license":"MIT","lastPushAt":"2026-10-05T20:13:43.000Z","score":23}}}},"grade_history":[],"reviews":[]}