Skip to content

Connectors · Developer & infrastructure

Wistia MCP server for AI agents.

actionlake is an MCP gateway: one remote MCP server that connects Claude and other MCP clients to Wistia and the rest of your systems. It gives your agent 167 Wistia actions (85 reads, 63 writes and 19 that wait for a confirmation) and holds the Wistia credential itself, so the agent never does. It paces Wistia's limits and records every call.

100,000 free calls a month. No card, no email, no password: press Start a free sandbox on the next screen and keep the key it shows you.

claude mcp add --transport http actionlake https://connect.actionlake.com/mcp
the first call
do {  action: "wistia.medias.list",  intent: "check which Wistia account is connected"}# List Media · read · 1 upstream call
  • 167actionsin one signed file
  • 85readlook, never change
  • 63writecreate and update
  • 19wait for a yesdestructive, confirmed first

Set up

Connect Wistia in three steps.

  1. 01

    Add actionlake to Claude.

    Run the command once in Claude Code; its consent page can create a free sandbox: 100,000 calls a month, no card. In the Claude app, add a custom connector with the URL below and paste your key on the consent page. Creating a new sandbox from the Claude app is not yet tested by us.

    https://connect.actionlake.com/mcp
  2. 02

    Connect Wistia.

    API key. No consent screen: your agent can connect it for you, but the key then passes through your chat. To keep it out of the model's context, paste it in the console instead. actionlake stores what you paste write-only, sealed under your tenant's key.

    • api_tokenWistia API access token (Account > Settings > API Access; grant the permissions the actions need)
    account { op: "connections.requirements", service: "wistia" }
    # free: exactly what to paste, and what is found for you
  3. 03

    Make the first call. Check before a write.

    Ask in plain words; Claude picks the action. Before anything changes, check validates the call and prices it, for free.

    do    { action: "wistia.medias.list" }# list media · read · 1 upstream callcheck { action: "wistia.bulk.create", input: { … } }# free: inputs, permissions, cost and confirmations, nothing sent

Wistia at a glance

Sign-in
API key. No consent screen: your agent can connect it for you, but the key then passes through your chat. To keep it out of the model's context, paste it in the console instead.
You provide
api_token
Limits we pace to
600 calls a minute, per connection
API covered
Wistia Data API 2026-09 (api.wistia.com/modern)api.wistia.com
Built from
Wistia's documentation, read 23 October 2026docs.wistia.com
Service file
Version 1.0.0, signed (Ed25519)
Cached reads
84 of 85 reads, for up to an hour; a write clears what it affects
Shared entities
2, so ask can line Wistia up with your other systems
Data
Processed and stored in Sydney, Australia. No US region yet

Capabilities

What an AI agent can do in Wistia.

167 actions in 31 areas. Every one carries its effect, so a key can allow the reads and hold the rest.

  • 85readlook, never change
  • 63writecreate and update
  • 19destructivewait for a confirmation
  1. Medias

    53

    19 read · 29 write · 5 destructive

    List Media · Bulk Copy Media · Copy Media · Import Media from URL

  2. Analytics

    17

    17 read · 0 write · 0 destructive

    Show Account Embed Locations · Show Account Analytics Timeseries · Show Account Top Content · Show Media Form Conversions

  3. Folders

    17

    6 read · 7 write · 4 destructive

    List Folders · Copy Folder · Create Folder · Create Folder Sharing

  4. Channels

    11

    5 read · 4 write · 2 destructive

    Create Channel · List Channels · Create Channel Episode · List Channel Episodes by Channel

  5. Stats

    10

    10 read · 0 write · 0 destructive

    List Events · List Visitors · Show Account Stats by Date · Show Media Stats by Date

  6. Webinars

    10

    4 read · 4 write · 2 destructive

    Create Webinar · List Webinars · Create Webinar Collaborator · List Webinar Collaborators

  7. Brands

    6

    2 read · 3 write · 1 destructive

    Create Brand · List Brands · Apply Brand · Show Brand

  8. Channel episodes

    5

    1 read · 3 write · 1 destructive

    List Channel Episodes · Publish Channel Episode · Un-publish Channel Episode · Update Channel Episode

23 more areas · 38 actions
  • Media extended audio descriptions 5
  • Allowed domains 4
  • Review bundles 3
  • Tags 3
  • Account 2
  • Brand preload 2
  • Bulk 2
  • Deleted media 2
  • Account usage 1
  • Background job status 1
  • Brand kit colors 1
  • Caption matches 1
  • Captions 1
  • Contact 1
  • Contacts 1
  • Credits 1
  • Expiring token 1
  • Resource urls 1
  • Search 1
  • Share links 1
  • Speakers 1
  • Taggings 1
  • Token 1

Top actions

The Wistia API, shaped for agents.

The ids your agent types, what each does, and the one name it shares with other systems. 3 of Wistia's 3 action names are shared with at least one other connector, so an agent learns them once.

ActionWhat it doesEffectSame name in
wistia.medias.listList MediaLists 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…readcontent.file.list77 connectors
wistia.folders.listList FoldersLists folders (previously called projects) belonging to the account. My Library folders are not included. For tokens scoped to a specific user…readcontent.folder.list62 connectors
wistia.tags.listList TagsLists tags belonging to the account. ## Requires api token with one of the following permissions Tokens with the "Act with a team member's permissions"…readcrm.tag.list65 connectors
wistia.searchSearchSearches across folders, subfolders, medias, channels, channel episodes, and webinars. Also searches through video transcripts, so media results may include…readthis connector
wistia.bulk.createCreate Bulk ActionsSubmits a batch of up to 1000 create, update, delete, and move actions to be processed asynchronously. Returns a background job status whose Show endpoint…writethis connector
wistia.medias.copyCopy MediaThis endpoint copies a media and its assets to a destination folder (defaults to source media). ## Requires api token with one of the following permissions…writethis connector
wistia.tags.createCreate TagsCreates a new tag. ## Requires api token with one of the following permissions Tokens with the "Act with a team member's permissions" permission…writethis connector
wistia.folders.copyCopy FolderThis 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…writethis connector
wistia.medias.trimsCreate Media from TrimsCreates a new media that trims off parts of an existing media. By default, the `trims` parameter specifies time ranges to **remove** from the media. When…writethis connector
wistia.brands.createCreate BrandCreates 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.…writethis connector
wistia.bulk.purchaseCreate Bulk PurchaseSubmits either an `actions` array of up to 1000 orders or one `job` that can resolve to up to 5000 media. Orders are placed asynchronously. Returns a…writethis connector
wistia.tags.deleteDelete TagDeletes a tag ## Requires api token with one of the following permissions Tokens with the "Act with a team member's permissions" permission…destructivethis connector

Try it

Prompts to paste into Claude.

Each one names the Wistia actions it will call, so you know what it reads and what it changes before you send it.

  1. Readread

    Which Wistia files changed this week, and who changed them?

    callswistia.medias.list

  2. Writewrite

    Create Bulk Actions in Wistia. Show me exactly what you will send before you save it.

    callswistia.bulk.create

Governance for Wistia

Destructive actions wait for a yes.

19 Wistia actions are destructive. These are all of them:

  • Delete Tagwistia.tags.delete
  • Delete Brandwistia.brands.delete
  • Delete Mediawistia.medias.delete
  • Delete Folderwistia.folders.delete
  • Delete Channelwistia.channels.delete
  • Delete Webinarwistia.webinars.delete
  • Delete Review Bundlewistia.review_bundles.delete
  • Delete Allowed Domainwistia.allowed_domains.delete
  • Delete Channel Episodewistia.channel_episodes.delete
  • Delete Media Extended Audio Descriptionwistia.media_extended_audio_descriptions.delete
  • Delete Captionswistia.medias.captions.delete
  • Delete Folder Sharingwistia.folders.sharings.delete
  • Delete share linkwistia.medias.share_link.delete
  • Delete Subfolderwistia.folders.subfolders.delete
  • Delete Localizationwistia.medias.localizations.delete
  • Delete Customizationswistia.medias.customizations.delete
  • Delete Channel Collaboratorwistia.channels.collaborators.delete
  • Delete Webinar Collaboratorwistia.webinars.collaborators.delete
  • Bulk Delete Subfolderswistia.folders.subfolders.bulk_delete

A destructive action runs only with confirm: true. Under the human policy the agent cannot confirm for itself: the run stops until a named person approves, in the console or from a signed link in an email. The cap on a key is refused before the call is sent, never after.

dowistia.tags.deleteconfirm_policy: human

Delete Tag?

intent: the user asked me to delete Tag

run suspended · waiting for a named person · key wistia-agent cannot confirm itself
In the console, or from an emailed signed link.
a key for this connector
account {  op: "keys.create", name: "wistia-agent",  allowed_actions: ["wistia.*"], cap_calls: 2000,  confirm_policy: "human_for_writes",  approval_rules: [    { match: "wistia.tags.delete", approver: "[email protected]" },    { match: "wistia.brands.delete", approver: "[email protected]" },    { match: "wistia.medias.delete", approver: "[email protected]" }  ]}
Illustrative. Scoped to Wistia only, capped at 2,000 upstream calls, every write confirmed, and the destructive ones approved by a named person.

Cost

What Wistia costs on actionlake.

Every Wistia action is one upstream call, the only thing actionlake bills. Searching, check, cost, account and any call Wistia refused with 401, 403, 429 or a 5xx are free. Paid plans start at US$49 a month for 250,000 calls, with overage from US$0.30 down to US$0.18 per 1,000.

  • 1upstream call per actionall 167 Wistia actions
  • 167actions pageeach page of a long list is one call
  • 84reads can be cacheda cache hit costs nothing
  • 100,000calls a month, freepaid plans from US$49 a month for 250,000

See pricing

Action index

Every Wistia action.

167 actions by area: the id your agent calls, what it does, and its effect.

Medias53
  • wistia.medias.archiveArchive Mediawrite
  • wistia.medias.bulk_copyBulk Copy Mediawrite
  • wistia.medias.captions.createCreate Captionswrite
  • wistia.medias.captions.deleteDelete Captionsdestructive
  • wistia.medias.captions.edit_textEdit Captions Textwrite
  • wistia.medias.captions.getShow Captionsread
  • wistia.medias.captions.listList Captions by Mediaread
  • wistia.medias.captions.purchasePurchase Captionswrite
  • wistia.medias.captions.updateUpdate Captionswrite
  • wistia.medias.copyCopy Mediawrite
  • wistia.medias.customizations.access.getShow Access Customizationsread
  • wistia.medias.customizations.access.updateUpdate Access Customizationswrite
  • wistia.medias.customizations.accessibility.getShow Accessibility Customizationsread
  • wistia.medias.customizations.accessibility.updateUpdate Accessibility Customizationswrite
  • wistia.medias.customizations.appearance.getShow Appearance Customizationsread
  • wistia.medias.customizations.appearance.updateUpdate Appearance Customizationswrite
  • wistia.medias.customizations.chapters.getShow Chapters Customizationsread
  • wistia.medias.customizations.chapters.updateUpdate Chapters Customizationswrite
  • wistia.medias.customizations.createCreate Customizationswrite
  • wistia.medias.customizations.deleteDelete Customizationsdestructive
  • wistia.medias.customizations.engagement.getShow Engagement Customizationsread
  • wistia.medias.customizations.engagement.updateUpdate Engagement Customizationswrite
  • wistia.medias.customizations.getShow Customizationsread
  • wistia.medias.customizations.lead_capture.getShow Lead Capture Customizationsread
  • wistia.medias.customizations.lead_capture.updateUpdate Lead Capture Customizationswrite
  • wistia.medias.customizations.playback.getShow Playback Customizationsread
  • wistia.medias.customizations.playback.updateUpdate Playback Customizationswrite
  • wistia.medias.customizations.related_media.getShow Related Media Customizationsread
  • wistia.medias.customizations.related_media.updateUpdate Related Media Customizationswrite
  • wistia.medias.customizations.sharing.getShow Sharing Customizationsread
  • wistia.medias.customizations.sharing.updateUpdate Sharing Customizationswrite
  • wistia.medias.customizations.thumbnail.getShow Thumbnail Customizationsread
  • wistia.medias.customizations.thumbnail.updateUpdate Thumbnail Customizationswrite
  • wistia.medias.customizations.updateUpdate Customizationswrite
  • wistia.medias.deleteDelete Mediadestructive
  • wistia.medias.getShow Mediaread
  • wistia.medias.import_urlImport Media from URLwrite
  • wistia.medias.listList Mediaread
  • wistia.medias.localizations.createCreate Localizationwrite
  • wistia.medias.localizations.deleteDelete Localizationdestructive
  • wistia.medias.localizations.getShow Localizationread
  • wistia.medias.localizations.listList Localizationsread
  • wistia.medias.moveMove Mediawrite
  • wistia.medias.restoreRestore Mediawrite
  • wistia.medias.share_link.deleteDelete share linkdestructive
  • wistia.medias.share_link.getShow share linkread
  • wistia.medias.share_link.updateUpdate share linkwrite
  • wistia.medias.stats.getShow Media Aggregated Statsread
  • wistia.medias.swapSwap Mediawrite
  • wistia.medias.translateTranslate Mediawrite
  • wistia.medias.trimsCreate Media from Trimswrite
  • wistia.medias.updateUpdate Mediawrite
  • wistia.medias.uploadUpload or Import Mediawrite
Analytics17
  • wistia.analytics.account.embed_locations.listShow Account Embed Locationsread
  • wistia.analytics.account.getShow Account Analyticsread
  • wistia.analytics.account.media_by_embed_location.getFind Media By Embed Locationread
  • wistia.analytics.account.timeseries.listShow Account Analytics Timeseriesread
  • wistia.analytics.account.top_content.listShow Account Top Contentread
  • wistia.analytics.medias.conversions.listShow Media Form Conversionsread
  • wistia.analytics.medias.embed_locations.listShow Media Embed Locationsread
  • wistia.analytics.medias.embed_locations_timeseries.listShow Media Embed Locations Timeseriesread
  • wistia.analytics.medias.getShow Media Analyticsread
  • wistia.analytics.medias.languages.listShow Media Languagesread
  • wistia.analytics.medias.timeseries.listShow Media Analytics Timeseriesread
  • wistia.analytics.medias.traffic.listShow Media Traffic Breakdownread
  • wistia.analytics.webinars.audience.listShow Webinar Audienceread
  • wistia.analytics.webinars.getShow Webinar Analyticsread
  • wistia.analytics.webinars.histograms.getShow Webinar Histogramsread
  • wistia.analytics.webinars.registration.listShow Webinar Registration Timeseriesread
  • wistia.analytics.webinars.traffic.listShow Webinar Traffic Breakdownread
Folders17
  • wistia.folders.copyCopy Folderwrite
  • wistia.folders.createCreate Folderwrite
  • wistia.folders.deleteDelete Folderdestructive
  • wistia.folders.getShow Folderread
  • wistia.folders.listList Foldersread
  • wistia.folders.sharings.createCreate Folder Sharingwrite
  • wistia.folders.sharings.deleteDelete Folder Sharingdestructive
  • wistia.folders.sharings.getShow Folder Sharingread
  • wistia.folders.sharings.listList Folder Sharingsread
  • wistia.folders.sharings.updateUpdate Folder Sharingwrite
  • wistia.folders.subfolders.bulk_deleteBulk Delete Subfoldersdestructive
  • wistia.folders.subfolders.createCreate Subfolderwrite
  • wistia.folders.subfolders.deleteDelete Subfolderdestructive
  • wistia.folders.subfolders.getShow Subfolderread
  • wistia.folders.subfolders.listList Subfoldersread
  • wistia.folders.subfolders.updateUpdate Subfolderwrite
  • wistia.folders.updateUpdate Folderwrite
Channels11
  • wistia.channels.channel_episodes.createCreate Channel Episodewrite
  • wistia.channels.channel_episodes.getShow Channel Episoderead
  • wistia.channels.channel_episodes.listList Channel Episodes by Channelread
  • wistia.channels.collaborators.createCreate Channel Collaboratorwrite
  • wistia.channels.collaborators.deleteDelete Channel Collaboratordestructive
  • wistia.channels.collaborators.listList Channel Collaboratorsread
  • wistia.channels.createCreate Channelwrite
  • wistia.channels.deleteDelete Channeldestructive
  • wistia.channels.getShow Channelread
  • wistia.channels.listList Channelsread
  • wistia.channels.updateUpdate Channelwrite
Stats10
  • wistia.stats.account.by_date.listShow Account Stats by Dateread
  • wistia.stats.account.getShow Current Account Statsread
  • wistia.stats.events.getShow Eventread
  • wistia.stats.events.listList Eventsread
  • wistia.stats.medias.by_date.listShow Media Stats by Dateread
  • wistia.stats.medias.engagement.getShow Media Engagementread
  • wistia.stats.medias.getShow Media Statsread
  • wistia.stats.projects.getShow Project Statsread
  • wistia.stats.visitors.getShow Visitorread
  • wistia.stats.visitors.listList Visitorsread
Webinars10
  • wistia.webinars.collaborators.createCreate Webinar Collaboratorwrite
  • wistia.webinars.collaborators.deleteDelete Webinar Collaboratordestructive
  • wistia.webinars.collaborators.listList Webinar Collaboratorsread
  • wistia.webinars.createCreate Webinarwrite
  • wistia.webinars.deleteDelete Webinardestructive
  • wistia.webinars.getShow Webinarread
  • wistia.webinars.listList Webinarsread
  • wistia.webinars.registrations.createCreate Webinar Registrationwrite
  • wistia.webinars.registrations.listList Webinar Registrationsread
  • wistia.webinars.updateUpdate Webinarwrite
Brands6
  • wistia.brands.applyApply Brandwrite
  • wistia.brands.createCreate Brandwrite
  • wistia.brands.deleteDelete Branddestructive
  • wistia.brands.getShow Brandread
  • wistia.brands.listList Brandsread
  • wistia.brands.updateUpdate Brandwrite
Channel episodes5
  • wistia.channel_episodes.deleteDelete Channel Episodedestructive
  • wistia.channel_episodes.listList Channel Episodesread
  • wistia.channel_episodes.publishPublish Channel Episodewrite
  • wistia.channel_episodes.unpublishUn-publish Channel Episodewrite
  • wistia.channel_episodes.updateUpdate Channel Episodewrite
Media extended audio descriptions5
  • wistia.media_extended_audio_descriptions.deleteDelete Media Extended Audio Descriptiondestructive
  • wistia.media_extended_audio_descriptions.getShow Media Extended Audio Descriptionread
  • wistia.media_extended_audio_descriptions.listList Media Extended Audio Descriptionsread
  • wistia.media_extended_audio_descriptions.orderOrder Extended Audio Descriptionwrite
  • wistia.media_extended_audio_descriptions.order_statusGet Order Statusread
Allowed domains4
  • wistia.allowed_domains.createCreate Allowed Domainwrite
  • wistia.allowed_domains.deleteDelete Allowed Domaindestructive
  • wistia.allowed_domains.getShow Allowed Domainread
  • wistia.allowed_domains.listList Allowed Domainsread
Review bundles3
  • wistia.review_bundles.createCreate Review Bundlewrite
  • wistia.review_bundles.deleteDelete Review Bundledestructive
  • wistia.review_bundles.listList Review Bundlesread
Tags3
  • wistia.tags.createCreate Tagswrite
  • wistia.tags.deleteDelete Tagdestructive
  • wistia.tags.listList Tagsread
Account2
  • wistia.account.getGet Current Accountread
  • wistia.account.start_trialStart Account Trialwrite
Brand preload2
  • wistia.brand_preload.getGet Brand Preloadread
  • wistia.brand_preload.updateUpdate Brand Preloadwrite
Bulk2
  • wistia.bulk.createCreate Bulk Actionswrite
  • wistia.bulk.purchaseCreate Bulk Purchasewrite
Deleted media2
  • wistia.deleted_media.listList Deleted Mediaread
  • wistia.deleted_media.restoreRestore Deleted Mediawrite
Account usage1
  • wistia.account_usage.getGet Account Usageread
Background job status1
  • wistia.background_job_status.getShow Background Job Statusread
Brand kit colors1
  • wistia.brand_kit_colors.getGet Brand Kit Colorsread
Caption matches1
  • wistia.caption_matches.findFind Caption Matchesread
Captions1
  • wistia.captions.listList Captionsread
Contact1
  • wistia.contact.dismiss_desktop_install_promptDismiss Desktop Install Promptwrite
Contacts1
  • wistia.contacts.inviteInvite Contactswrite
Credits1
  • wistia.credits.balance.getGet Credit Balanceread
Expiring token1
  • wistia.expiring_token.createCreate Expiring Access Tokenwrite
Resource urls1
  • wistia.resource_urls.resolveResolve Resource URLsread
Search1
  • wistia.searchSearchread
Share links1
  • wistia.share_links.resolveResolve share linkread
Speakers1
  • wistia.speakers.listList Speakersread
Taggings1
  • wistia.taggings.bulk_createBulk Tag Mediawrite
Token1
  • wistia.token.getGet Current Tokenread

Questions

The Wistia MCP server, answered.

Is there a Wistia MCP server for Claude?

Yes. actionlake is an MCP gateway: a remote MCP server that gives Claude, or another MCP client, 167 Wistia actions across medias, analytics, folders and channels, through the same eight tools it uses for every other connector. actionlake is independent; it is not made or endorsed by Wistia.

What do I need to connect Wistia?

Wistia API access token (Account > Settings > API Access; grant the permissions the actions need). The free call account { op: "connections.requirements", service: "wistia" } lists exactly what to paste.

Can an AI agent delete or change things in Wistia?

Only if its key allows it, and only with an explicit confirmation. 19 Wistia actions are destructive, including delete Tag, delete Brand and delete Media. Each runs only with confirm: true. Under the human confirm policy, or an approval rule on the key, the run waits until a named person approves it.

Will an AI agent use up my Wistia API limit?

actionlake paces every call to the limits in the Wistia service file: 600 calls a minute per connection. Repeated reads are answered from cache (84 Wistia actions can be), which never reaches Wistia.

What does a Wistia action cost?

One upstream call, the only unit actionlake bills. A list that pages bills one call per page (167 Wistia actions page). Cache hits, searches, dry runs and calls Wistia refused with 401, 403, 429 or a 5xx are free. The Free plan includes 100,000 calls a month with no card. Paid plans start at US$49 a month for 250,000 calls, with overage from US$0.30 down to US$0.18 per 1,000.

Which Wistia API does it cover?

The Wistia Data API 2026-09 (api.wistia.com/modern) at api.wistia.com. It is built from Wistia's documentation as read on 23 October 2026. 167 actions in 31 areas, each one in the signed service file (version 1.0.0).

Does actionlake keep my Wistia data, and where?

actionlake processes and stores data in Sydney, Australia; there is no US region yet. Reads may be cached for up to an hour, and a write clears the reads it affects. Each run's request and response is kept, sealed, for your plan's trace window: 1 day on Free, 3 days on Starter, 7 days on Pro, 14 days on Team, 30 days on Business and 30 days on Enterprise. Your Wistia credential is sealed under your tenant's key, never logged and never returned. Your traffic is not used to train models.

Which AI clients can use it?

Claude Code, tested by us end to end, and the Claude app as a custom connector, tested by us with an existing key. Other MCP clients that support remote servers over Streamable HTTP (MCP revisions 2025-06-18 and 2025-11-25) and OAuth dynamic client registration, or a bearer header, should connect the same way; we have not tested them. Or plain REST, under the same action names.

Give your agent Wistia today.

Start free - 100,000 calls/month, no card. No signup. Hard caps on every key. Cached answers are free.