Wistia MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| WISTIA_ACCOUNTS | No | Private named Bearer credentials; replaces single-account settings | |
| WISTIA_API_TOKEN | No | Private scoped Bearer token | |
| WISTIA_AUDIT_LOG | No | Private guard-decision log path | |
| WISTIA_READ_ONLY | No | Hide/refuse all 83 writes, leaving 86 reads | 0 |
| WISTIA_TOKEN_FILE | No | Regular owner-only token-only file, max 64 KB; precedence over env token | |
| WISTIA_API_VERSION | No | Reviewed YYYY-MM Data API release header | 2026-09 |
| WISTIA_MAX_RETRIES | No | GET 429 retries, 0 to 5 | 2 |
| WISTIA_DEFAULT_ACCOUNT | No | Default local credential label | |
| WISTIA_ALLOW_DESTRUCTIVE | No | 0 blocks writes even when confirmed | 1 |
| WISTIA_REQUEST_TIMEOUT_MS | No | Integer request deadline, 100 to 300000 ms | 30000 |
| WISTIA_MIN_REQUEST_INTERVAL_MS | No | Account/process pacing, 0 to 10000 ms | 150 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| upload_mediaA | Endpoint to upload media files from a local system or import from a web URL.
|
| upload_media_fileA | Endpoint to upload media files from a local system or import from a web URL.
|
| list_review_bundlesA | Lists review bundles belonging to an account. This endpoint can also be used to do a batch fetch based off of the hashed id, or to find the bundles that include a given media or any media from a folder. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| create_review_bundleA | Creates a review bundle from a set of existing media, producing a single link that can be shared for review. The media to include are specified by their hashed IDs and must already belong to the account. The media can come from any folder. Review Bundles are limited to 25 media. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| delete_review_bundleA | Permanently deletes a review bundle, identified by its hashed id. This removes the bundle and its shared review link; the media it contained are not deleted. This action cannot be undone. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| list_deleted_mediaA | Lists media that has been soft-deleted and is still inside the account's restore window. Media is listed only while it can still be restored : 30 days on most plans, 14 on free plans. After which it is permanently purged. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| restore_deleted_mediaA | Restores one or more soft-deleted media. By default each media returns to the folder it was deleted from; pass folder_id to restore them into a specific folder instead. Only media still inside the restore window can be recovered. The restore runs asynchronously and the response includes a background job status. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| list_mediaA | Lists the media belonging to the account. This endpoint can also be used to do a batch fetch based off of the hashed id. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| get_mediaA | Fetches a single media by its hashed id. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( An expiring access token
created with the |
| update_mediaA | Updates the attributes on a media. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( An expiring access token
created with the |
| delete_mediaA | Deletes a media. Deleted media moves to the account's Recently Deleted area, where it can be restored until the account's restore window ends, after which it is permanently purged. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( An expiring access token
created with the |
| copy_mediaA | This endpoint copies a media and its assets to a destination folder (defaults to source media). Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| swap_mediaA | Swap one media with another media. This operation queues a background job to replace the original media with the replacement media while preserving the original media's hashed ID and URLs. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( An expiring access token
created with the |
| get_media_statsB | Aggregated tracking statistics for a video embedded on your site. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| translate_mediaA | Translates the transcript for a media. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| import_media_from_urlA | This endpoint imports a media file from a given URL. The import is processed asynchronously and will return a background_job_status object rather than the typical Media response object. You can poll the background job status endpoint to check on the progress of the import. If no folder_id is provided, a new folder called "Untitled Folder" will be created and the imported media will be placed there. The URL must be publicly accessible : Wistia's servers need to be able to fetch the file directly. Note: imports from certain domains (e.g. vimeo.com, wistia.com) are not permitted. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| archive_mediaA | This method accepts a list of up to 100 medias to archive per request. It processes requests asynchronously and will return a background_job_status object rather than the typical Media response object. Note that webinar medias and Soapbox videos imported to Wistia before September 1, 2023 cannot be archived. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| move_mediaA | Moves up to 100 media to a folder and optional subfolder. The subfolder must belong to the specified folder. This endpoint allows 10 requests per 5 minutes, separate from the general API rate limit. Returns a Background Job because the move is asynchronous. For more than 100 media, multiple destinations, or mixed actions, use the
Create Bulk Actions endpoint with Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( An expiring access token
created with the |
| restore_mediaA | Restores archived medias to your account. This method accepts a list of up to 100 medias to restore per request. It processes requests asynchronously and will return a background_job_status object rather than the typical Media response object. Your account must have access to the Archiving feature to use this method. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| bulk_copy_mediaA | This method accepts a list of medias to copy to a destination folder. It processes requests asynchronously and will return a background_job_status object rather than the typical Media response object. Each media will be duplicated and the copy will be placed in the specified destination folder. The original media files will not be affected. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( An expiring access token
created with the |
| get_customizationsB | Fetches explicitly defined customizations for the video. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| create_customizationsA | Set customizations for a video. Replaces the customizations explicitly set for this video. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| update_customizationsA | Allows for partial updates on a video’s customizations. If a value is null, then that key will be deleted from the saved customizations. If it is not null, that value will be set. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| delete_customizationsA | Deletes all explicit customizations for a video, making it act as if it has never been customized. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| get_appearance_customizationsA | Fetches the explicitly-set appearance customizations (player color, gradient, rounded corners, control contrast, and customer logo) for the video. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| update_appearance_customizationsA | Applies a partial update to a video's appearance customizations. Only the fields supplied are changed; sending a field as null deletes it (reverting to the default). Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| get_playback_customizationsA | Fetches the explicitly-set playback customizations (autoplay, mute, controls visibility, player control buttons, end behavior, looping, quality bounds, and embed/runtime flags) for the video. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| update_playback_customizationsA | Applies a partial update to a video's playback customizations. Only the fields supplied are changed; sending a field as null deletes it (reverting to the default). Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| get_thumbnail_customizationsA | Fetches the explicitly-set thumbnail customizations (still image URL, alt text, fit strategy, and the looping video thumbnail / text-overlay plugins) for the video. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| update_thumbnail_customizationsA | Applies a partial update to a video's thumbnail customizations. Only the fields supplied are changed; sending a field as null deletes it (reverting to the default). Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| get_accessibility_customizationsB | Fetches the explicitly-set accessibility customizations (caption display and styling, transcript display, and audio description) for the video. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| update_accessibility_customizationsA | Applies a partial update to a video's accessibility customizations. Only the fields supplied are changed; sending a field as null deletes it (reverting to the default). Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| get_chapters_customizationsA | Fetches the explicitly-set chapter customizations (the chapter list and its visibility) for the media. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| update_chapters_customizationsA | Applies a partial update to a media's chapter customizations. Only the fields supplied are changed; sending a field as null deletes it. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| get_engagement_customizationsA | Fetches the explicitly-set engagement customizations (the end/pause Call To Action and timed annotation links) for the video. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| update_engagement_customizationsA | Applies a partial update to a video's engagement customizations. Only the fields supplied are changed; sending a field as null deletes it (reverting to the default). Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| get_related_media_customizationsA | Fetches the explicitly-set related-media ("discover more") customizations (which videos to recommend, when to show them, label and button text) for the video. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| update_related_media_customizationsA | Applies a partial update to a video's related-media customizations. Only the fields supplied are changed; sending a field as null deletes it (reverting to the default). Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| get_sharing_customizationsA | Fetches the explicitly-set sharing customizations (the social/embed/download share bar: enabled channels, tweet text, download type, and page URL/title) for the video. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| update_sharing_customizationsA | Applies a partial update to a video's sharing customizations. Only the fields supplied are changed; sending a field as null deletes it (reverting to the default). Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| get_lead_capture_customizationsB | Fetches the explicitly-set lead-capture plugins (Turnstile, Wistia Form, and HubSpot/Marketo/Pardot form embeds) for the video. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| update_lead_capture_customizationsA | Configures a single lead-capture provider for the video, mapping it to the appropriate underlying plugin. Only the selected provider is changed. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| get_access_customizationsA | Fetches the explicitly-set password-protection settings for the video, including the stored password. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| update_access_customizationsA | Applies a partial update to a video's password-protection settings. Only the fields supplied are changed; sending a field as null deletes it. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| resolve_share_linkA | Resolves a share link URL segment : the part after The identifier may be the share link's hashed ID or its custom slug. Historical slugs that were later changed still resolve to the link. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| get_share_linkA | Fetches the share link for a single media. If the media does not have a share link yet, one is created on first request with a default visibility derived from the parent folder. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| update_share_linkA | Updates the share link for a single media. If the media does not have a share link yet, one is created with the supplied visibility. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| delete_share_linkA | Deletes the share link for a media, revoking the URL. A new share link can be created later with a fresh URL by calling the show or update endpoint again. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| list_captionsB | Lists captions belonging to a specific media. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| create_captionsA | Adds captions to a specified media by providing an SRT file or its contents directly. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| list_all_captionsA | Lists captions belonging to the account. Results can be narrowed to a specific media
with Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| find_caption_matchesA | Finds exact text in caption tracks without modifying them. Matching uses the same normalization, composite-media boundaries, and time coordinates as the targeted caption edit endpoint. Fuzzy alternatives are returned separately as suggestions and are never reported as exact matches. A resolved match means the wording was located; a later write can still fail authorization, version, or edit-boundary checks. When more than 10 exact matches exist, use the one-based Authentication and request validation failures apply to the whole request. Missing, inaccessible, or otherwise unreadable media are reported as per-media statuses without exposing whether an inaccessible ID exists. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| purchase_captionsA | This method is for purchasing English captions for a media. The request will charge the credit card on the account if successful. A saved credit card is required to use this endpoint. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| get_captionsA | Returns a media's captions in the specified language. Supports multiple formats: JSON (default), SRT, VTT, and TXT. Use file extensions (.srt, .vtt, .txt) or Accept headers to specify format. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| update_captionsA | This method is for replacing the captions on a video or audio media for the specified language. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| delete_captionsA | Removes the captions file from a media for the specified language. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| edit_captions_textA | Applies targeted find-and-replace corrections to a media's transcript for the specified language, preserving the timings of unchanged words. The whole batch is applied atomically against a specific caption version, or nothing is. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| list_localizationsA | Lists all the localizations for a media. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| create_localizationA | Creates a new localization. Creating a localization can incur a charge on your account. Accounts get a free-dub allowance; once it is used up, dubs bill per minute at the account's configured rate. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| get_localizationB | Obtain detailed information about a localization. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| delete_localizationB | Deletes a localization. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| create_media_from_trimsA | Creates a new media that trims off parts of an existing media. By default, the NOTE: currently this endpoint only supports trimming video files. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| list_media_extended_audio_descriptionsC | Lists all extended audio descriptions belonging to the account. Supports pagination and sorting. Read-only account operation. |
| get_media_extended_audio_descriptionA | Retrieves a single extended audio description by its hashed id, including download links. Read-only account operation. |
| delete_media_extended_audio_descriptionA | Deletes an extended audio description by its hashed id. Requires confirm=true for the requested mutation. May share access, notify people or incur provider charges. |
| order_extended_audio_descriptionA | Orders an extended audio description for a media. The request will charge the credit card on the account when the order is ready.
Only accounts on paid plans with the |
| get_order_statusA | Returns the current status of an extended audio description order. Use the order id returned from the order endpoint to poll for status updates. Read-only account operation. |
| list_brandsA | Lists the brands belonging to the account. A brand is a saved set of
branding options (colors, fonts, logos, and layout) that can be applied to
media, folders, and channels. The account-level default brand is flagged
with Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| create_brandA | Creates a brand. A brand is a saved set of branding options (colors, fonts,
logos, and layout) that can then be applied to media, folders, and
channels. A new brand isn't applied to anything : it has no effect until you apply
it to a resource with Accounts whose plan doesn't include multiple brands can only hold one brand. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| get_brandB | Returns the brand with the given id. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| update_brandA | Updates a brand. Only the fields you send are changed; send an explicit
Changes propagate to everything the brand is applied to. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| delete_brandA | Deletes a brand. Anything the brand was applied to falls back to the
account-level default brand, unless The account-level default brand ( Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| apply_brandA | Applies a brand to a media, folder, or channel, so that resource is styled by the brand's colors, fonts, logos, and layout. A brand has no effect until it is applied to something. Media inherit from their folder, and folders from the account's default brand, so applying a brand to a folder styles everything inside it that has no brand of its own. Applying the account-level default brand ( By default this also clears any brand-mapped appearance settings the
resource had set directly, so the brand is what shows. Pass
Responds with the brand now in effect on the resource, which is not always the one you applied : detaching a media returns the brand it falls back to. Webinars can't be branded through this endpoint yet. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| list_speakersA | Lists reusable speaker profiles belonging to the account. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| list_tagsB | Lists tags belonging to the account. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| create_tagsA | Creates a new tag. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| delete_tagB | Deletes a tag Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| create_bulk_actionsA | Submits a batch of up to 1000 create, update, delete, and move actions to be processed asynchronously. Returns a background job status whose Show endpoint reports aggregate progress and per-action results, including the hashed IDs of created records. Supported resource types are Because caption actions carry SRT contents inline, they are the resource type most likely to reach the request body limit before the action cap. Purchasing captions is not available here -- it has its own endpoint. A Player customizations are addressed one concern at a time
( A Deleting a folder or subfolder also soft-deletes its media. An account owner or manager can restore that media from the trash until it purges. To keep the media when deleting a subfolder, use the Delete Subfolder endpoint; it moves the media to the folder's root level instead. Each action in the batch is authorized and processed independently: failures (including authorization failures) are reported per action and do not prevent other actions from completing. Media creation is not supported -- uploads and URL imports have their own endpoints. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| create_bulk_purchaseA | Submits either an Orders in the batch can incur charges, so a saved credit card is required.
Supported resource types are What an order costs depends on the account, not on this endpoint. Automated captions are included at no cost on plans that provide them and billed at the account's configured per-minute rate otherwise; human-reviewed captions bill per minute at the account's standard or rush rate; localizations bill per minute once the account's free-dub allowance is used up; text translations bill as an overage once the account's included translation minutes are used up. Check the account's plan and billing settings for its actual rates. Orders are priced and placed individually: failures -- an ineligible media, a language that already has a localization, an account not entitled to buy -- are reported per order and do not stop the rest of the batch. Pricing and eligibility match the equivalent single-media endpoints exactly. Use the Create Bulk Actions endpoint for create, update, and delete work; it
does not accept Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| bulk_tagA | This method accepts a list of medias to tag. It processes requests asynchronously and will return a background_job_status object rather than the typical Media response object. The tags will be added to the existing tags on each media file, not replaced. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| list_foldersA | Lists folders (previously called projects) belonging to the account. My Library folders are not included. For tokens scoped to a specific user ( Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( An expiring access token
created with the |
| create_folderA | Creates a new folder (previously called project). If the folder is created successfully the Location HTTP header will point to the new folder. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( An expiring access token
created with the |
| get_folderB | Retrieves a single folder (previously called project). Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( An expiring access token
created with the |
| update_folderB | Updates a folder (previously called project) Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( An expiring access token
created with the |
| delete_folderA | Deletes a folder (previously called project) and the media inside it. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( An expiring access token
created with the |
| copy_folderA | This copies a folder (previously called project) and all its media and subfolders asynchronously in a background job. This method does not copy the folder’s sharing information (i.e. users that could see the old folder will not automatically be able to see the new one). For the request you can specify the owner of a new folder by passing an optional parameter. The person you specify must be a Manager in the account. The body of the response will contain an object representing the background job that was created. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| list_folder_sharingsB | Lists the sharings of contacts and contact groups on a folder. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| create_folder_sharingA | Creates a new sharing object for a folder by specifying the email of the person to share with and other optional parameters. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| get_folder_sharingA | Retrieves the details of a specific sharing object for a given folder. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| update_folder_sharingC | Updates a sharing on a folder. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| delete_folder_sharingB | Deletes a sharing on a folder. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| list_subfoldersB | Lists subfolders in a specific folder. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( An expiring access token
created with the |
| create_subfolderA | Creates a new subfolder within a folder. The subfolder will be created with the next available position. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( An expiring access token
created with the |
| get_subfolderA | Retrieves detailed information about a specific subfolder, including all media contained within it. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( An expiring access token
created with the |
| update_subfolderA | Updates a subfolder's name and/or description. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( An expiring access token
created with the |
| delete_subfolderA | Deletes one subfolder and moves its media to the folder's root level. The subfolder is soft-deleted and is no longer accessible via the API. To delete multiple subfolders and their media, use the Bulk Delete Subfolders endpoint. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( An expiring access token
created with the |
| bulk_delete_subfoldersA | Deletes multiple subfolders asynchronously. Their media is also soft-deleted and can be restored from the trash by an account owner or manager until it is purged. To keep the media, use the Delete Subfolder endpoint, which moves it to the folder's root level. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( An expiring access token
created with the An expiring access token
created with the |
| list_channelsA | Lists all Channels belonging to an account. This endpoint can also be used to do a batch fetch based off of the hashed id. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| create_channelB | Creates a channel. Requires confirm=true for the requested mutation. May share access, notify people or incur provider charges. |
| get_channelA | Returns the Channel associated with the hashedId. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| update_channelB | Updates a channel. Requires confirm=true for the requested mutation. May share access, notify people or incur provider charges. |
| delete_channelA | Deletes a channel. Requires confirm=true for the requested mutation. May share access, notify people or incur provider charges. |
| get_channel_episodeA | Returns the Channel Episode associated with a channel hashed id and channel episode hashed id. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| list_channel_episodes_by_channelB | Lists Channel Episodes belonging to the channel passed in the path. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| create_channel_episodeA | Creates a new channel episode in a channel. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| list_channel_episodesA | Lists Channel Episodes belonging to an account. This endpoint can also be used to do a batch fetch based off of the hashed id. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| update_channel_episodeA | Updates an existing channel episode in a channel. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| delete_channel_episodeA | Deletes an existing channel episode in a channel. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| publish_channel_episodeA | Publishes an existing channel episode in a channel. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| un_publish_channel_episodeA | Un-publishes an existing channel episode in a channel. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| list_channel_collaboratorsA | Lists the collaborators (contacts and contact groups) that have been granted access to a channel. Results are scoped to what the authenticated user is allowed to see: account owners and managers see all collaborators, channel admins see all collaborators on their channels, and everyone else sees only the roles that grant them access. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| create_channel_collaboratorA | Invites a collaborator to a channel by specifying their email address and role. Creates a new contact if one doesn't exist with that email. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| delete_channel_collaboratorA | Removes a collaborator's access to a channel. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| list_webinarsA | Lists webinars belonging to the account. This endpoint can also be used to do a batch fetch based off of the hashed id. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| create_webinarA | Creates a new webinar. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| get_webinarB | Returns the webinar associated with the hashed id. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| update_webinarA | Updates an existing webinar. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| delete_webinarA | Deletes an existing webinar. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| list_webinar_registrationsA | Retrieve a paginated list of registrations for a webinar. Returns contact information, attendance status, engagement metrics, and attribution data for each registrant. Pagination uses cursor-based pagination with a Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| create_webinar_registrationA | Register a person for a webinar by providing their email, first name, and last name. This endpoint generates a unique visitor key and returns a personalized webinar URL for the registrant. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| list_webinar_collaboratorsA | Lists the collaborators (contacts and contact groups) that have been granted producer access to a webinar. Results are scoped to what the authenticated user is allowed to see: account owners, managers, and the webinar's producers see all collaborators; everyone else sees an empty list. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| create_webinar_collaboratorA | Invites a collaborator (producer) to a webinar by specifying their email address. Creates a new contact if one doesn't exist with that email. Note that viewers cannot be webinar collaborators. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| delete_webinar_collaboratorB | Removes a collaborator's producer access to a webinar. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| get_accountA | Retrieves a summary of the Wistia account including account name, description, URL and counts of records. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| get_account_usageA | Retrieves plan, usage, and limit information for the current account. The response includes plan tier, upload eligibility, and links to billing pages.
Usage and limit details (media counts, storage, seats, bandwidth) are only visible
to account owners and managers : other contacts receive Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| get_credit_balanceA | Retrieves the current account's available credit balance and expected next recurring credit grant time. The balance is a near-real-time hint and can lag one in-flight metered operation. A
Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| get_brand_preloadA | Retrieves Brandfetch-derived brand info for the current account's contact domain, plus a boolean indicating whether the account already has any brand kits configured. Used by Glass onboarding to preload the brand kit for new signups on business-email domains. Returns Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| update_brand_preloadA | Persists the account's default page logo (by Bakery hashed_id) and
default player color. Both fields are optional independently : omit a
field to leave that account setting untouched. Passing an empty string
for Requires the OAuth contact to be an owner or manager of the account
(or a Wistia admin) : mirrors the auth check on the underlying
Deliberately narrower than the mutation: this endpoint does not create/update BrandKits or set body font family. Glass's onboarding customize step writes only these two fields; broader brand-kit editing continues to happen through the WTW web UI + GraphQL. Requires api token with one of the following permissionsRequires confirm=true for the requested mutation. May share access, notify people or incur provider charges. |
| get_brand_kit_colorsA | Retrieves the current account's brand colors for the Wistia desktop app's background picker.
Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| invite_contactsA | Invites one or more people to the account by email. Accepts a comma/whitespace/newline-separated list; each entry becomes a new contact if one does not already exist for that email. Requires api token with one of the following permissionsRequires confirm=true for the requested mutation. May share access, notify people or incur provider charges. |
| dismiss_desktop_install_promptB | Marks the current contact's macOS install-prompt modal as dismissed. Called by the SPA when a teammate invited via the Wistia desktop app closes the "Wistia is even better on your Mac" modal : the modal never shows again for that contact. Idempotent: a repeat call returns the timestamp of the first dismissal. Requires api token with one of the following permissionsRequires confirm=true for the requested mutation. May share access, notify people or incur provider charges. |
| start_account_trialA | Starts a business-tier trial on the current account. The plan tier is hardcoded : the only caller is the Wistia desktop app's "Invite and start trial" onboarding CTA. Requires the current contact to be authorized to start the trial via the account's AccountPolicy : otherwise returns 403. Requires api token with one of the following permissionsRequires confirm=true for the requested mutation. May share access, notify people or incur provider charges. |
| get_current_tokenA | Retrieves a summary of the token used to make the API request. This endpoint can primarily be used to debug permission issues with the API. Read-only account operation. |
| searchA | Searches across folders, subfolders, medias, channels, channel episodes, and webinars. Also searches through video transcripts, so media results may include transcript matches with timestamps when the query matches spoken content. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| resolve_resource_urlsA | Resolves a resource's hashed ID and type to its canonical app URL(s) : deep links an authorized user can open in the Wistia UI. The URL is only returned when the authenticated user is allowed to view the resource. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| create_expiring_access_tokenA | This endpoint is for creating expiring access tokens which can be used for some iframe embeds
and, when granted the Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| get_job_statusA | Retrieves the status of a background job. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| list_allowed_domainsA | Lists allowed domains belonging to the account. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| create_allowed_domainA | Creates an allowed domain for the account. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| get_allowed_domainB | Returns the details of an allowed domain. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| delete_allowed_domainA | Deletes an allowed domain from the account. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| get_account_statsA | Retrieve account-wide video stats. Get statistics like the number of video loads, plays, and hours watched for the entire account. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| get_account_stats_by_dateA | Retrieve account-wide stats organized by day, between a start and end date parameter (inclusive). If start and end date are not provided, defaults to yesterday and today. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| get_project_statsB | Retrieve stats for a project. This endpoint provides statistics for a specific project identified by its project-id. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| get_media_stats_stats_mediaB | Retrieve stats for a video. This endpoint provides statistics for a specific video identified by its media-id. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| get_media_stats_by_dateA | Retrieve stats for a media organized by day, between a start and end date paramater (inclusive). If start and end date are not provided, defaults to yesterday and today. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| get_media_engagementB | Retrieve engagement data for a video. This endpoint provides engagement data for a specific video identified by its media-id. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| list_visitorsB | This endpoint provides a list of visitors that have watched videos in your account. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| get_visitorA | This endpoint provides detailed information about a specific visitor. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| list_eventsB | Retrieve a list of events. Please note that due to our data retention policy, only events from the last 2 years are available. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| get_eventA | Retrieve information for a single event. Please note that due to our data retention policy, only events from the last 2 years are available. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| get_account_analyticsA | Retrieve aggregate analytics for the entire account over a date range. This endpoint provides Bottler-powered analytics across all of the account's media including plays, loads, engagement rate, play rate, and conversion metrics. The date range between Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| get_account_analytics_timeseriesA | Retrieve analytics timeseries data for the entire account over a date range with configurable granularity. Returns an array of timestamped metric buckets aggregated across all of the account's media. The date range between Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| get_account_top_contentA | Rank the account's content by a chosen metric over a date range. Returns the top
media, channels, or folders (controlled by Optionally pass The date range between Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| get_account_embed_locationsA | Retrieve embed location analytics for the entire account. Returns a list of domains where the account's media are embedded, ranked by the chosen metric. The date range between Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| find_media_by_embed_locationA | Find the media embedded at a given URL. Returns the hashed IDs of the
account's media that recorded activity at that embed location during the
date range, ranked by plays. The resulting hashed IDs can be passed to
other endpoints, such as Show Account Top Content's The domain of Embed location data is retained for 6 months; a Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| get_media_analyticsA | Retrieve aggregate analytics for a video over a date range. This endpoint provides Bottler-powered analytics including plays, loads, engagement rate, play rate, and conversion metrics. The date range between Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| get_media_analytics_timeseriesB | Retrieve analytics timeseries data for a video over a date range with configurable granularity. Returns an array of timestamped metric buckets. The date range between Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| get_media_embed_locationsA | Retrieve embed location analytics for a video. Returns a list of pages where the video is embedded, ranked by the chosen metric. The date range between Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| get_media_embed_locations_timeseriesA | Retrieve timeseries analytics for a video broken down by embed location. Returns an array of timestamped buckets, each containing metrics for the top embed locations (ranked by the chosen metric) plus an "All other" entry aggregating the remaining locations. The date range between Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| get_media_traffic_breakdownA | Retrieve traffic breakdown analytics for a video, grouped by a specified dimension such as UTM campaign, UTM source, UTM medium, referrer domain, or viewer screen size. The date range between Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| get_media_form_conversionsA | Retrieve form conversion data for a video. Returns a paginated list of form submissions with visitor details and timestamps. The date range between Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| get_media_languagesA | Retrieve language analytics for a video. Returns a breakdown of plays by viewer browser language, sorted by number of plays in descending order. The date range between Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| get_webinar_analyticsA | Retrieve aggregate analytics for a webinar. This endpoint provides Bottler-powered analytics including registrations, attendance, engagement, chat activity, and poll results. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| get_webinar_registration_timeseriesA | Retrieve registration timeseries data for a webinar with configurable granularity. Returns an array of timestamped registration metric buckets including impressions, registrations, and completion rates. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| get_webinar_traffic_breakdownA | Retrieve traffic breakdown analytics for a webinar, grouped by a specified dimension such as UTM campaign, UTM source, UTM medium, or referrer domain. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| get_webinar_audienceA | Retrieve audience data for a webinar. Returns a paginated list of registrants with their attendance status, engagement metrics, attribution data, and per-attendee histograms. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| get_webinar_histogramsA | Retrieve engagement histogram data for a webinar. Returns arrays of per-time-bucket counts for attendees, chat activity, and visual focus, useful for rendering engagement visualizations. Requires api token with one of the following permissionsTokens with the "Act with a team member's permissions" permission
( |
| list_accountsA | List private account labels, default selection and configured token method. No credentials, token paths or account content; no network request. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 169 tools
There are clear duplicates and near-duplicates: upload_media and upload_media_file have identical descriptions, get_media_stats and get_media_stats_stats_media appear to do the same thing, and get_media_analytics/get_media_stats/get_media_stats_by_date/get_media_engagement overlap heavily. With 169 tools across media stats, analytics, and customization concerns, an agent faces many ambiguous choices between similarly-purposed endpoints.
Most tools follow a snake_case verb_noun pattern (list_media, create_folder, update_channel), but there are deviations like 'bulk_tag' (verb omitted), 'un_publish_channel_episode' (underscore variant), 'get_media_stats_stats_media' (garbled), and inconsistent list_captions vs list_all_captions vs list_all_captions/list_channel_episodes vs list_channel_episodes_by_channel. Readable but not fully predictable.
169 tools is far beyond any reasonable scope for effective tool selection, and the surface is bloated with redundant variants (multiple stats endpoints, duplicated customizations get/update pairs, upload_media vs upload_media_file). The count creates selection burden that defeats the purpose of a coherent toolset.
Coverage is extensive: full CRUD across media, folders, subfolders, channels, episodes, webinars, captions, localizations, brands, shares, tags, and collaborators, plus rich analytics. Minor gaps exist (e.g., no media creation via bulk actions, some resources lack full lifecycle), but the domain surface is essentially complete.