Skip to main content
Glama

Update Thumbnail Customizations

update_thumbnail_customizations
Destructive

Apply a partial update to a Wistia video's thumbnail customizations: only supplied fields change, and setting a field to null reverts it to default.

Instructions

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 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
pluginNo
accountNoNamed private Wistia account; selects credentials, not a remote account ID.
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.
media_idYesThe hashed ID of the video to be customized.
stillUrlNoOverrides the thumbnail image that appears before the video plays.
fitStrategyNoResizes the thumbnail when there's a discrepancy between its aspect ratio and that of its parent container. Options are contain, cover, fill, and none.
payload_fileNoRegular local JSON body file, at most 5 MB. Cannot be mixed with body flags or payload.
thumbnailAltTextNoAlt text for the thumbnail image, used for accessibility.
unalteredStillImageAssetNoReference to the original, unaltered still image asset.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed12 schema fields changedv3.0.0
    • addedInput schema / $defs
      Added value: +{
      +  "plugin": {
      +    "description": "Container for thumbnail-related player plugin configurations.",
      +    "properties": {
      +      "thumbnailTextOverlay-v2": {
      +        "description": "Text overlay rendered on top of the thumbnail.",
      +        "properties": {
      +          "on": {
      +            "description": "If set to true, the text overlay is enabled.",
      +            "type": "boolean"
      +          },
      +          "text": {
      +            "description": "The text displayed in the overlay.",
      +            "type": "string"
      +          }
      +        },
      +        "type": "object",
      +        "unevaluatedProperties": false
      +      },
      +      "videoThumbnail": {
      +        "description": "Looping video thumbnail (a short clip used as the poster).",
      +        "properties": {
      +          "clickForSound": {
      +            "description": "If set to true, shows a click-for-sound affordance on the video thumbnail.",
      +            "type": "boolean"
      +          },
      +          "clickToPlayButton": {
      +            "description": "If set to false, removes the “Click to Play” button on video thumbnails.",
      +            "type": "boolean"
      +          },
      +          "hashedId": {
      +            "description": "The hashed ID of the media used as the looping video thumbnail.",
      +            "type": "string"
      +          },
      +          "priorityMode": {
      +            "description": "Priority mode controlling how the video thumbnail is loaded.",
      +            "type": "string"
      +          },
      +          "trimEnd": {
      +            "description": "End time of the trimmed clip used as the video thumbnail.",
      +            "type": "string"
      +          },
      +          "trimStart": {
      +            "description": "Start time of the trimmed clip used as the video thumbnail.",
      +            "type": "string"
      +          }
      +        },
      +        "type": "object",
      +        "unevaluatedProperties": false
      +      }
      +    },
      +    "type": "object",
      +    "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 / payload / properties / plugin / $ref
      Added value: +"#/$defs/plugin"
    • removedInput schema / properties / payload / properties / plugin / description
      Removed value: -"Container for thumbnail-related player plugin configurations."
    • removedInput schema / properties / payload / properties / plugin / properties
      Removed value: -{
      -  "thumbnailTextOverlay-v2": {
      -    "description": "Text overlay rendered on top of the thumbnail.",
      -    "properties": {
      -      "on": {
      -        "description": "If set to true, the text overlay is enabled.",
      -        "type": "boolean"
      -      },
      -      "text": {
      -        "description": "The text displayed in the overlay.",
      -        "type": "string"
      -      }
      -    },
      -    "type": "object",
      -    "unevaluatedProperties": false
      -  },
      -  "videoThumbnail": {
      -    "description": "Looping video thumbnail (a short clip used as the poster).",
      -    "properties": {
      -      "clickForSound": {
      -        "description": "If set to true, shows a click-for-sound affordance on the video thumbnail.",
      -        "type": "boolean"
      -      },
      -      "clickToPlayButton": {
      -        "description": "If set to false, removes the “Click to Play” button on video thumbnails.",
      -        "type": "boolean"
      -      },
      -      "hashedId": {
      -        "description": "The hashed ID of the media used as the looping video thumbnail.",
      -        "type": "string"
      -      },
      -      "priorityMode": {
      -        "description": "Priority mode controlling how the video thumbnail is loaded.",
      -        "type": "string"
      -      },
      -      "trimEnd": {
      -        "description": "End time of the trimmed clip used as the video thumbnail.",
      -        "type": "string"
      -      },
      -      "trimStart": {
      -        "description": "Start time of the trimmed clip used as the video thumbnail.",
      -        "type": "string"
      -      }
      -    },
      -    "type": "object",
      -    "unevaluatedProperties": false
      -  }
      -}
    • removedInput schema / properties / payload / properties / plugin / type
      Removed value: -"object"
    • removedInput schema / properties / payload / properties / plugin / unevaluatedProperties
      Removed value: -false
    • addedInput schema / properties / plugin / $ref
      Added value: +"#/$defs/plugin"
    • removedInput schema / properties / plugin / description
      Removed value: -"Container for thumbnail-related player plugin configurations."
    • removedInput schema / properties / plugin / properties
      Removed value: -{
      -  "thumbnailTextOverlay-v2": {
      -    "description": "Text overlay rendered on top of the thumbnail.",
      -    "properties": {
      -      "on": {
      -        "description": "If set to true, the text overlay is enabled.",
      -        "type": "boolean"
      -      },
      -      "text": {
      -        "description": "The text displayed in the overlay.",
      -        "type": "string"
      -      }
      -    },
      -    "type": "object",
      -    "unevaluatedProperties": false
      -  },
      -  "videoThumbnail": {
      -    "description": "Looping video thumbnail (a short clip used as the poster).",
      -    "properties": {
      -      "clickForSound": {
      -        "description": "If set to true, shows a click-for-sound affordance on the video thumbnail.",
      -        "type": "boolean"
      -      },
      -      "clickToPlayButton": {
      -        "description": "If set to false, removes the “Click to Play” button on video thumbnails.",
      -        "type": "boolean"
      -      },
      -      "hashedId": {
      -        "description": "The hashed ID of the media used as the looping video thumbnail.",
      -        "type": "string"
      -      },
      -      "priorityMode": {
      -        "description": "Priority mode controlling how the video thumbnail is loaded.",
      -        "type": "string"
      -      },
      -      "trimEnd": {
      -        "description": "End time of the trimmed clip used as the video thumbnail.",
      -        "type": "string"
      -      },
      -      "trimStart": {
      -        "description": "Start time of the trimmed clip used as the video thumbnail.",
      -        "type": "string"
      -      }
      -    },
      -    "type": "object",
      -    "unevaluatedProperties": false
      -  }
      -}
    • removedInput schema / properties / plugin / type
      Removed value: -"object"
    • removedInput schema / properties / plugin / unevaluatedProperties
      Removed value: -false
  2. First observedv2.0.0

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=false and openWorldHint=true, so the safety profile is partly covered. The description adds real value beyond that: the null-deletes-field behavior, the required permission scopes, the delegate-to-contact authorization mode, and the note that the mutation may share access, notify people, or incur provider charges. Return behavior is still unstated, but the added context is substantive.

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

Conciseness5/5

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

Front-loaded with the core behavior in the first sentence, then the permission requirements in a clearly delimited block. Every sentence carries operational weight and nothing is redundant.

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 10-parameter, nested-object mutation with no output schema, the description covers behavior, authorization, the confirm requirement, and side-effect risk. It omits the mutual-exclusivity rule among payload, payload_file, and body flags (only found in the schema), which is a minor gap given the schema's 90% coverage.

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

Parameters4/5

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

Schema description coverage is already 90%, so the baseline is 3. The description goes beyond the schema by explaining the partial-update contract and the null-means-delete convention, which is essential for correct invocation and is not captured in the field-level descriptions.

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 thumbnail customizations.' An agent can identify the target (thumbnail customizations) precisely. It does not, however, explicitly differentiate itself from near-neighbors like update_customizations or the several other update_*_customizations siblings.

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?

The description explains the semantics of a partial update ('only the fields supplied are changed; sending a field as null deletes it'), which implies when the tool is appropriate, and it states confirm=true is required for the mutation. But it never says when to choose this over update_customizations or the other customization updaters, and gives no explicit exclusions.

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