Skip to main content
Glama

Update Playback Customizations

update_playback_customizations
Destructive

Update a Wistia video's playback customizations by changing only specified fields; set fields to null to remove them and restore defaults.

Instructions

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 permissions

Read, update & delete anything

Tokens with the "Act with a team member's permissions" permission (all:delegate_to_contact_permissions scope) can also be used. Requests made with such a token are authorized using the permissions of the contact assigned to the token. Requires confirm=true for the requested mutation. May share access, notify people or incur provider charges.

Input Schema

NameRequiredDescriptionDefault
hlsNoIf set to true, HLS adaptive bitrate streaming is enabled.
seoNoIf set to true, the video’s metadata will be injected into the page’s markup for SEO.
timeNoSets the starting time of the video.
emailNoAssociate a specific email address with this video’s viewing sessions.
mutedNoIf set to true, the video will start in a muted state.
wmodeNoIf set to transparent, the background behind the player will be transparent instead of black.
volumeNoSets the volume of the video.
accountNoNamed private Wistia account; selects credentials, not a remote account ID.
bpbTimeNoControls when the big play button appears, expressed as a string.
confirmNoSet true only when the user asked for exactly this action.
payloadNoComplete JSON request body instead of body flags. Supports current nested customization, caption and nullable values.
playbarNoIf set to true, the playbar will be available. If set to false, it will be hidden.
preloadNoSets the video’s preload property. Possible values are metadata, auto, none, true, and false.
autoPlayNoIf set to true, the video will play as soon as it’s ready. Note that autoplay might not work on some devices and browsers.
media_idYesThe hashed ID of the video to be customized.
resumableNoDetermines if the video should resume from where the viewer left off. Options are "true", "false", and "auto".
sphericalNoIf set to true, the video is rendered as a spherical (360-degree) video.
videoFoamNo
doNotTrackNoIf set to true, data for each viewing session will not be tracked.
keyMomentsNoIf set to false, the key moments feature will be disabled.
playButtonNoIndicates if the play button is visible.
qualityMaxNoSpecifies the maximum quality the video will play at.
qualityMinNoSpecifies the minimum quality the video will play at.
playsinlineNoIf set to false, videos will play within the native mobile player.
payload_fileNoRegular local JSON body file, at most 5 MB. Cannot be mixed with body flags or payload.
playlistLoopNoIf set to true and this video has a playlist, it will loop back to the first video after the last one has finished.
videoQualityNoSets the default video quality the video will play at.
clickForSoundNoIf set to true, viewers can click to enable sound on a muted video.
playlistLinksNoEnables the use of specially crafted links on the page to associate with a video, turning them into a playlist.
volumeControlNoWhen set to true, a volume control is available over the video.
fakeFullScreenNoIf set to true, the video will try to play in a pseudo-fullscreen mode on certain mobile devices.
qualityControlNoIf set to false, the video quality selector in the settings menu will be hidden.
silentAutoPlayNoDetermines how videos handle autoplay in contexts where normal autoplay might be blocked. Options are "true", "allow", and "false".
googleAnalyticsNoGoogle Analytics tracking configuration to associate with this video’s viewing sessions.
settingsControlNoIf set to true, the settings control will be available.
smallPlayButtonNoIf set to true, the small play button control is shown.
endVideoBehaviorNo
fullscreenButtonNoIf set to true, the fullscreen button will be available as a video control.
playPauseNotifierNoIf set to false, animations for the Pause and Play symbols will be removed.
playbackRateControlNoIf set to false, the playback speed controls in the settings menu will be hidden.
controlsVisibleOnLoadNoIf set to true, controls like the big play button, playbar, volume, etc. will be visible as soon as the video is embedded.
playSuspendedOffScreenNoIf set to false for a muted autoplay video, the video won’t pause when out of view.
copyLinkAndThumbnailEnabledNoIf set to false, the option to “Copy Link and Thumbnail” will be removed when right-clicking on the video.
fullscreenOnRotateToLandscapeNoIf set to false, the video will not automatically go to fullscreen mode on mobile when rotated to landscape.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed16 schema fields changedv3.0.0
    • addedInput schema / $defs
      Added value: +{
      +  "endVideoBehavior": {
      +    "description": "Determines what happens when the video ends. Options are \"default\" (stays on the last frame), \"reset\" (shows thumbnail and controls), and \"loop\" (plays again from the start).",
      +    "type": "string"
      +  },
      +  "videoFoam": {
      +    "anyOf": [
      +      {
      +        "type": "boolean"
      +      },
      +      {
      +        "description": "Examples:\n```json\n{\n  \"minWidth\": 400,\n  \"maxWidth\": 960\n}\n```\n```json\n{\n  \"minHeight\": 300,\n  \"maxHeight\": 450\n}\n```\n",
      +        "properties": {
      +          "maxHeight": {
      +            "description": "Maximum height the video can be resized to.",
      +            "type": "integer"
      +          },
      +          "maxWidth": {
      +            "description": "Maximum width the video can be resized to.",
      +            "type": "integer"
      +          },
      +          "minHeight": {
      +            "description": "Minimum height the video can be resized to.",
      +            "type": "integer"
      +          },
      +          "minWidth": {
      +            "description": "Minimum width the video can be resized to.",
      +            "type": "integer"
      +          }
      +        },
      +        "type": "object",
      +        "unevaluatedProperties": false
      +      }
      +    ],
      +    "description": "When set to true, the video will adjust its size according to its parent element. It can also be an object specifying min/max width or height.",
      +    "unevaluatedProperties": false
      +  }
      +}
    • changedInput schema / properties / confirm / description
      Previous value: -"Must be true for the specific user-requested write."New value: +"Set true only when the user asked for exactly this action."
    • addedInput schema / properties / endVideoBehavior / $ref
      Added value: +"#/$defs/endVideoBehavior"
    • removedInput schema / properties / endVideoBehavior / description
      Removed value: -"Determines what happens when the video ends. Options are \"default\" (stays on the last frame), \"reset\" (shows thumbnail and controls), and \"loop\" (plays again from the start)."
    • removedInput schema / properties / endVideoBehavior / type
      Removed value: -"string"
    • addedInput schema / properties / payload / properties / endVideoBehavior / $ref
      Added value: +"#/$defs/endVideoBehavior"
    • removedInput schema / properties / payload / properties / endVideoBehavior / description
      Removed value: -"Determines what happens when the video ends. Options are \"default\" (stays on the last frame), \"reset\" (shows thumbnail and controls), and \"loop\" (plays again from the start)."
    • removedInput schema / properties / payload / properties / endVideoBehavior / type
      Removed value: -"string"
    • addedInput schema / properties / payload / properties / videoFoam / $ref
      Added value: +"#/$defs/videoFoam"
    • removedInput schema / properties / payload / properties / videoFoam / anyOf
      Removed value: -[
      -  {
      -    "type": "boolean"
      -  },
      -  {
      -    "description": "Examples:\n```json\n{\n  \"minWidth\": 400,\n  \"maxWidth\": 960\n}\n```\n```json\n{\n  \"minHeight\": 300,\n  \"maxHeight\": 450\n}\n```\n",
      -    "properties": {
      -      "maxHeight": {
      -        "description": "Maximum height the video can be resized to.",
      -        "type": "integer"
      -      },
      -      "maxWidth": {
      -        "description": "Maximum width the video can be resized to.",
      -        "type": "integer"
      -      },
      -      "minHeight": {
      -        "description": "Minimum height the video can be resized to.",
      -        "type": "integer"
      -      },
      -      "minWidth": {
      -        "description": "Minimum width the video can be resized to.",
      -        "type": "integer"
      -      }
      -    },
      -    "type": "object",
      -    "unevaluatedProperties": false
      -  }
      -]
    • removedInput schema / properties / payload / properties / videoFoam / description
      Removed value: -"When set to true, the video will adjust its size according to its parent element. It can also be an object specifying min/max width or height."
    • removedInput schema / properties / payload / properties / videoFoam / unevaluatedProperties
      Removed value: -false
    • addedInput schema / properties / videoFoam / $ref
      Added value: +"#/$defs/videoFoam"
    • removedInput schema / properties / videoFoam / anyOf
      Removed value: -[
      -  {
      -    "type": "boolean"
      -  },
      -  {
      -    "description": "Examples:\n```json\n{\n  \"minWidth\": 400,\n  \"maxWidth\": 960\n}\n```\n```json\n{\n  \"minHeight\": 300,\n  \"maxHeight\": 450\n}\n```\n",
      -    "properties": {
      -      "maxHeight": {
      -        "description": "Maximum height the video can be resized to.",
      -        "type": "integer"
      -      },
      -      "maxWidth": {
      -        "description": "Maximum width the video can be resized to.",
      -        "type": "integer"
      -      },
      -      "minHeight": {
      -        "description": "Minimum height the video can be resized to.",
      -        "type": "integer"
      -      },
      -      "minWidth": {
      -        "description": "Minimum width the video can be resized to.",
      -        "type": "integer"
      -      }
      -    },
      -    "type": "object",
      -    "unevaluatedProperties": false
      -  }
      -]
    • removedInput schema / properties / videoFoam / description
      Removed value: -"When set to true, the video will adjust its size according to its parent element. It can also be an object specifying min/max width or height."
    • removedInput schema / properties / videoFoam / unevaluatedProperties
      Removed value: -false
  2. First observedv2.0.0

TDQS

A3.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations: it explains that this is a partial update, that only supplied fields change, and that a null deletes a field and reverts it to default, plus the required permission scopes, delegate-token authorization semantics, the confirm=true requirement, and possible side effects (sharing access, notifications, provider charges). Annotations already flag destructive/non-idempotent, but the description adds the concrete mechanics of what is destroyed and under whose authority.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core action in the first sentence, then layers mutation semantics and permissions. The permission block is somewhat heavy but organized under a heading, and no sentence is pure filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 44-parameter nested mutation with no output schema, the description covers the essentials an agent needs: partial-update behavior, deletion semantics, authorization, and confirmation. It omits only how to read existing customizations first (get_playback_customizations) and what the call returns, which is minor.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 95%, so the schema already documents the 44 parameters richly, including the null-to-delete implication and the payload/payload_file mutual exclusion. The description adds the null-deletion rule but nothing about the payload vs body-flags vs payload_file tradeoff, so it stays at the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Applies a partial update to a video's playback customizations') and the resource noun narrows it against the cluster of sibling update_*_customizations tools. It never explicitly routes to a sibling, so an agent must infer that this tool covers only playback settings versus appearance/thumbnail/sharing customizations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Supplies preconditions (required permission scope, confirm=true, delegate-token behavior) but no when-to-use/when-not guidance relative to update_customizations or its read counterpart get_playback_customizations. Context is implied by the resource name rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Deploy Server

Other Tools