Skip to main content
Glama
thenavidm
by thenavidm

Transfer Asset

transfer_asset
Destructive

Fetch a file from any public URL and send it to one or more Serve API destinations, such as S3, Google Drive, or Vimeo. Explicit confirmation is required before transfer.

Instructions

Transfer a file from any publicly available URL to one or more Serve API destinations.

Base URL: https://api.shotstack.io/serve/{version} Explicit confirmation is required for this exact action; provider charges, hosting, sharing or deletion may apply. Never automatically resubmit unknown outcomes.

Input Schema

NameRequiredDescriptionDefault
idNoAn identifier for the asset which must be provided by the client. The identifier does not need to be unique.
urlNoThe file URL to fetch and transfer.
accountNoNamed private Shotstack account; selects private credentials and stage/v1 environment.
confirmNoSet true only when the user asked for exactly this action.
payloadNoComplete JSON request body instead of body flags. Preserves current endpoint fields and values.
destinationsNoSpecify the storage locations and hosting services to send the file to.
payload_fileNoRegular local JSON body file, at most 5 MB. Cannot be mixed with body flags or payload.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed71 schema fields changedv3.0.0
    • changedInput schema / $defs / Destinations / anyOf
      Previous value: -[
      -  {
      -    "$ref": "#/$defs/ShotstackDestination"
      -  },
      -  {
      -    "$ref": "#/$defs/MuxDestination"
      -  },
      -  {
      -    "$ref": "#/$defs/S3Destination"
      -  },
      -  {
      -    "$ref": "#/$defs/GoogleCloudStorageDestination"
      -  },
      -  {
      -    "$ref": "#/$defs/GoogleDriveDestination"
      -  },
      -  {
      -    "$ref": "#/$defs/VimeoDestination"
      -  },
      -  {
      -    "deprecated": true,
      -    "description": "**Notice: The TikTok destination is deprecated.** It continues to work, with no behaviour change for existing integrations.\nSend videos to TikTok. TikTok credentials are required and added via the [dashboard](https://dashboard.shotstack.io/integrations/tiktok), not in the request.",
      -    "properties": {
      -      "options": {
      -        "deprecated": true,
      -        "description": "Additional TikTok configuration options.",
      -        "properties": {
      -          "disableComment": {
      -            "default": false,
      -            "description": "Disable comments on this video.",
      -            "type": "boolean"
      -          },
      -          "disableDuet": {
      -            "default": false,
      -            "description": "Disable the Duet feature for this video.",
      -            "type": "boolean"
      -          },
      -          "disableStitch": {
      -            "default": false,
      -            "description": "Disable the Stitch feature for this video.",
      -            "type": "boolean"
      -          },
      -          "privacyLevel": {
      -            "default": "private",
      -            "description": "The privacy level for the video. Options are: <ul>\n  <li>`public` - video is visible to everyone</li>\n  <li>`friends` - video is visible to friends only</li>\n  <li>`private` - video is only visible to you</li>\n</ul>",
      -            "enum": [
      -              "public",
      -              "friends",
      -              "private"
      -            ],
      -            "type": "string"
      -          },
      -          "title": {
      -            "description": "A title for the video that will be displayed on TikTok.",
      -            "maxLength": 150,
      -            "type": "string"
      -          }
      -        },
      -        "type": "object"
      -      },
      -      "provider": {
      -        "default": "tiktok",
      -        "description": "The destination to send video to - set to `tiktok` for TikTok.",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "provider"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "description": "Send videos and assets to [Akamai NetStorage](https://techdocs.akamai.com/netstorage/docs). Send files to your NetStorage upload directory with a custom path and filename. Akamai credentials are required and added via the [dashboard](https://dashboard.shotstack.io/integrations/akamai-netstorage), not in the request.",
      -    "properties": {
      -      "options": {
      -        "description": "Additional Akamai NetStorage configuration options.",
      -        "properties": {
      -          "cpCode": {
      -            "description": "The Content Provider code (CP code) for the NetStorage upload directory.",
      -            "type": "string"
      -          },
      -          "filename": {
      -            "description": "Use your own filename instead of the default filenames generated by Shotstack. Note: omit the file extension as this will be appended depending on the output format. Also `-poster.jpg` and `-thumb.jpg` will be appended for poster and thumbnail images.",
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "host": {
      -            "description": "The Akamai NetStorage hostname, i.e. `example-nsu.akamaihd.net`.",
      -            "type": "string"
      -          },
      -          "path": {
      -            "description": "A remote directory path/prefix for the file being sent, i.e. `videos` or `customerId/videos`.",
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          }
      -        },
      -        "required": [
      -          "host",
      -          "cpCode"
      -        ]
      -      },
      -      "provider": {
      -        "default": "akamai-netstorage",
      -        "description": "The destination to send assets to - set to `akamai-netstorage` for Akamai NetStorage.",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "provider"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "description": "Send videos and assets to [Azure Blob Storage](https://learn.microsoft.com/en-us/azure/storage/blobs/). Send files to any container with a custom prefix and filename. Azure credentials are required and added via the [dashboard](https://dashboard.shotstack.io/integrations/azure-blob-storage), not in the request.",
      -    "properties": {
      -      "options": {
      -        "description": "Additional Azure Blob Storage configuration options.",
      -        "properties": {
      -          "accountName": {
      -            "description": "The Azure Storage account name.",
      -            "type": "string"
      -          },
      -          "container": {
      -            "description": "The Blob container name. The container must exist in the Azure Storage account before files can be sent.",
      -            "type": "string"
      -          },
      -          "filename": {
      -            "description": "Use your own filename instead of the default filenames generated by Shotstack. Note: omit the file extension as this will be appended depending on the output format. Also `-poster.jpg` and `-thumb.jpg` will be appended for poster and thumbnail images.",
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "prefix": {
      -            "description": "A virtual directory prefix for the blob being sent, i.e. `videos` or `customerId/videos`.",
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          }
      -        },
      -        "required": [
      -          "accountName",
      -          "container"
      -        ]
      -      },
      -      "provider": {
      -        "default": "azure-blob-storage",
      -        "description": "The destination to send assets to - set to `azure-blob-storage` for Azure Blob Storage.",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "provider"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "$ref": "#/$defs/ShotstackDestination"
      +  },
      +  {
      +    "$ref": "#/$defs/MuxDestination"
      +  },
      +  {
      +    "$ref": "#/$defs/S3Destination"
      +  },
      +  {
      +    "$ref": "#/$defs/GoogleCloudStorageDestination"
      +  },
      +  {
      +    "$ref": "#/$defs/GoogleDriveDestination"
      +  },
      +  {
      +    "$ref": "#/$defs/VimeoDestination"
      +  },
      +  {
      +    "deprecated": true,
      +    "description": "**Notice: The TikTok destination is deprecated.** It continues to work, with no behaviour change for existing integrations.\nSend videos to TikTok. TikTok credentials are required and added via the [dashboard](https://dashboard.shotstack.io/integrations/tiktok), not in the request.",
      +    "properties": {
      +      "options": {
      +        "deprecated": true,
      +        "description": "Additional TikTok configuration options.",
      +        "properties": {
      +          "disableComment": {
      +            "default": false,
      +            "description": "Disable comments on this video.",
      +            "type": "boolean"
      +          },
      +          "disableDuet": {
      +            "default": false,
      +            "description": "Disable the Duet feature for this video.",
      +            "type": "boolean"
      +          },
      +          "disableStitch": {
      +            "default": false,
      +            "description": "Disable the Stitch feature for this video.",
      +            "type": "boolean"
      +          },
      +          "privacyLevel": {
      +            "default": "private",
      +            "description": "The privacy level for the video. Options are: <ul>\n  <li>`public` - video is visible to everyone</li>\n  <li>`friends` - video is visible to friends only</li>\n  <li>`private` - video is only visible to you</li>\n</ul>",
      +            "enum": [
      +              "public",
      +              "friends",
      +              "private"
      +            ],
      +            "type": "string"
      +          },
      +          "title": {
      +            "description": "A title for the video that will be displayed on TikTok.",
      +            "maxLength": 150,
      +            "type": "string"
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "provider": {
      +        "default": "tiktok",
      +        "description": "The destination to send video to - set to `tiktok` for TikTok.",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "provider"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "description": "Send videos and assets to [Akamai NetStorage](https://techdocs.akamai.com/netstorage/docs). Send files to your NetStorage upload directory with a custom path and filename. Akamai credentials are required and added via the [dashboard](https://dashboard.shotstack.io/integrations/akamai-netstorage), not in the request.",
      +    "properties": {
      +      "options": {
      +        "description": "Additional Akamai NetStorage configuration options.",
      +        "properties": {
      +          "cpCode": {
      +            "description": "The Content Provider code (CP code) for the NetStorage upload directory.",
      +            "type": "string"
      +          },
      +          "filename": {
      +            "$ref": "#/$defs/filename"
      +          },
      +          "host": {
      +            "description": "The Akamai NetStorage hostname, i.e. `example-nsu.akamaihd.net`.",
      +            "type": "string"
      +          },
      +          "path": {
      +            "description": "A remote directory path/prefix for the file being sent, i.e. `videos` or `customerId/videos`.",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          }
      +        },
      +        "required": [
      +          "host",
      +          "cpCode"
      +        ]
      +      },
      +      "provider": {
      +        "default": "akamai-netstorage",
      +        "description": "The destination to send assets to - set to `akamai-netstorage` for Akamai NetStorage.",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "provider"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "description": "Send videos and assets to [Azure Blob Storage](https://learn.microsoft.com/en-us/azure/storage/blobs/). Send files to any container with a custom prefix and filename. Azure credentials are required and added via the [dashboard](https://dashboard.shotstack.io/integrations/azure-blob-storage), not in the request.",
      +    "properties": {
      +      "options": {
      +        "description": "Additional Azure Blob Storage configuration options.",
      +        "properties": {
      +          "accountName": {
      +            "description": "The Azure Storage account name.",
      +            "type": "string"
      +          },
      +          "container": {
      +            "description": "The Blob container name. The container must exist in the Azure Storage account before files can be sent.",
      +            "type": "string"
      +          },
      +          "filename": {
      +            "$ref": "#/$defs/filename"
      +          },
      +          "prefix": {
      +            "description": "A virtual directory prefix for the blob being sent, i.e. `videos` or `customerId/videos`.",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          }
      +        },
      +        "required": [
      +          "accountName",
      +          "container"
      +        ]
      +      },
      +      "provider": {
      +        "default": "azure-blob-storage",
      +        "description": "The destination to send assets to - set to `azure-blob-storage` for Azure Blob Storage.",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "provider"
      +    ],
      +    "type": "object"
      +  }
      +]
    • addedInput schema / $defs / GoogleCloudStorageDestinationOptions / properties / filename / $ref
      Added value: +"#/$defs/filename_2"
    • removedInput schema / $defs / GoogleCloudStorageDestinationOptions / properties / filename / description
      Removed value: -"Use your own filename instead of the default filenames generated by Shotstack. Note: omit the file extension as this will be appended depending on the output format. Also `-poster.jpg` and `-thumb.jpg` will be appended for poster and thumbnail images."
    • removedInput schema / $defs / GoogleCloudStorageDestinationOptions / properties / filename / type
      Removed value: -"string"
    • addedInput schema / $defs / GoogleDriveDestinationOptions / properties / filename / $ref
      Added value: +"#/$defs/filename_2"
    • removedInput schema / $defs / GoogleDriveDestinationOptions / properties / filename / description
      Removed value: -"Use your own filename instead of the default filenames generated by Shotstack. Note: omit the file extension as this will be appended depending on the output format. Also `-poster.jpg` and `-thumb.jpg` will be appended for poster and thumbnail images."
    • removedInput schema / $defs / GoogleDriveDestinationOptions / properties / filename / type
      Removed value: -"string"
    • addedInput schema / $defs / S3DestinationOptions / properties / filename / $ref
      Added value: +"#/$defs/filename_2"
    • removedInput schema / $defs / S3DestinationOptions / properties / filename / description
      Removed value: -"Use your own filename instead of the default filenames generated by Shotstack. Note: omit the file extension as this will be appended depending on the output format. Also `-poster.jpg` and `-thumb.jpg` will be appended for poster and thumbnail images."
    • removedInput schema / $defs / S3DestinationOptions / properties / filename / type
      Removed value: -"string"
    • addedInput schema / $defs / filename
      Added value: +{
      +  "description": "Use your own filename instead of the default filenames generated by Shotstack. Note: omit the file extension as this will be appended depending on the output format. Also `-poster.jpg` and `-thumb.jpg` will be appended for poster and thumbnail images.",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedInput schema / $defs / filename_2
      Added value: +{
      +  "description": "Use your own filename instead of the default filenames generated by Shotstack. Note: omit the file extension as this will be appended depending on the output format. Also `-poster.jpg` and `-thumb.jpg` will be appended for poster and thumbnail images.",
      +  "type": "string"
      +}
    • changedInput schema / properties / confirm / description
      Previous value: -"Must be true for this exact requested render, generation, mutation, upload URL or deletion."New value: +"Set true only when the user asked for exactly this action."
    • addedInput schema / properties / payload / $defs / Destinations / $ref
      Added value: +"#/$defs/Destinations"
    • removedInput schema / properties / payload / $defs / Destinations / additionalProperties
      Removed value: -false
    • removedInput schema / properties / payload / $defs / Destinations / anyOf
      Removed value: -[
      -  {
      -    "$ref": "#/$defs/ShotstackDestination"
      -  },
      -  {
      -    "$ref": "#/$defs/MuxDestination"
      -  },
      -  {
      -    "$ref": "#/$defs/S3Destination"
      -  },
      -  {
      -    "$ref": "#/$defs/GoogleCloudStorageDestination"
      -  },
      -  {
      -    "$ref": "#/$defs/GoogleDriveDestination"
      -  },
      -  {
      -    "$ref": "#/$defs/VimeoDestination"
      -  },
      -  {
      -    "deprecated": true,
      -    "description": "**Notice: The TikTok destination is deprecated.** It continues to work, with no behaviour change for existing integrations.\nSend videos to TikTok. TikTok credentials are required and added via the [dashboard](https://dashboard.shotstack.io/integrations/tiktok), not in the request.",
      -    "properties": {
      -      "options": {
      -        "deprecated": true,
      -        "description": "Additional TikTok configuration options.",
      -        "properties": {
      -          "disableComment": {
      -            "default": false,
      -            "description": "Disable comments on this video.",
      -            "type": "boolean"
      -          },
      -          "disableDuet": {
      -            "default": false,
      -            "description": "Disable the Duet feature for this video.",
      -            "type": "boolean"
      -          },
      -          "disableStitch": {
      -            "default": false,
      -            "description": "Disable the Stitch feature for this video.",
      -            "type": "boolean"
      -          },
      -          "privacyLevel": {
      -            "default": "private",
      -            "description": "The privacy level for the video. Options are: <ul>\n  <li>`public` - video is visible to everyone</li>\n  <li>`friends` - video is visible to friends only</li>\n  <li>`private` - video is only visible to you</li>\n</ul>",
      -            "enum": [
      -              "public",
      -              "friends",
      -              "private"
      -            ],
      -            "type": "string"
      -          },
      -          "title": {
      -            "description": "A title for the video that will be displayed on TikTok.",
      -            "maxLength": 150,
      -            "type": "string"
      -          }
      -        },
      -        "type": "object"
      -      },
      -      "provider": {
      -        "default": "tiktok",
      -        "description": "The destination to send video to - set to `tiktok` for TikTok.",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "provider"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "description": "Send videos and assets to [Akamai NetStorage](https://techdocs.akamai.com/netstorage/docs). Send files to your NetStorage upload directory with a custom path and filename. Akamai credentials are required and added via the [dashboard](https://dashboard.shotstack.io/integrations/akamai-netstorage), not in the request.",
      -    "properties": {
      -      "options": {
      -        "description": "Additional Akamai NetStorage configuration options.",
      -        "properties": {
      -          "cpCode": {
      -            "description": "The Content Provider code (CP code) for the NetStorage upload directory.",
      -            "type": "string"
      -          },
      -          "filename": {
      -            "description": "Use your own filename instead of the default filenames generated by Shotstack. Note: omit the file extension as this will be appended depending on the output format. Also `-poster.jpg` and `-thumb.jpg` will be appended for poster and thumbnail images.",
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "host": {
      -            "description": "The Akamai NetStorage hostname, i.e. `example-nsu.akamaihd.net`.",
      -            "type": "string"
      -          },
      -          "path": {
      -            "description": "A remote directory path/prefix for the file being sent, i.e. `videos` or `customerId/videos`.",
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          }
      -        },
      -        "required": [
      -          "host",
      -          "cpCode"
      -        ]
      -      },
      -      "provider": {
      -        "default": "akamai-netstorage",
      -        "description": "The destination to send assets to - set to `akamai-netstorage` for Akamai NetStorage.",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "provider"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "description": "Send videos and assets to [Azure Blob Storage](https://learn.microsoft.com/en-us/azure/storage/blobs/). Send files to any container with a custom prefix and filename. Azure credentials are required and added via the [dashboard](https://dashboard.shotstack.io/integrations/azure-blob-storage), not in the request.",
      -    "properties": {
      -      "options": {
      -        "description": "Additional Azure Blob Storage configuration options.",
      -        "properties": {
      -          "accountName": {
      -            "description": "The Azure Storage account name.",
      -            "type": "string"
      -          },
      -          "container": {
      -            "description": "The Blob container name. The container must exist in the Azure Storage account before files can be sent.",
      -            "type": "string"
      -          },
      -          "filename": {
      -            "description": "Use your own filename instead of the default filenames generated by Shotstack. Note: omit the file extension as this will be appended depending on the output format. Also `-poster.jpg` and `-thumb.jpg` will be appended for poster and thumbnail images.",
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "prefix": {
      -            "description": "A virtual directory prefix for the blob being sent, i.e. `videos` or `customerId/videos`.",
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          }
      -        },
      -        "required": [
      -          "accountName",
      -          "container"
      -        ]
      -      },
      -      "provider": {
      -        "default": "azure-blob-storage",
      -        "description": "The destination to send assets to - set to `azure-blob-storage` for Azure Blob Storage.",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "provider"
      -    ],
      -    "type": "object"
      -  }
      -]
    • removedInput schema / properties / payload / $defs / Destinations / description
      Removed value: -"A destination is a location where assets can be sent to for serving or hosting. Videos, images and audio files that are rendered by the [Edit API](#shotstack-edit) and [source](#tocs_source) and [rendition](#tocs_rendition) files generated by the [Ingest API](#shotstack-ingest) can be sent to destinations. You can also fetch a file from any public URL and [transfer](#transfer-asset) it to a destination. A file can be sent to one or more destinations including 3rd party destinations.\n\nBy default all ingested and generated assets are automatically sent to the [Shotstack hosting destination](https://shotstack.io/docs/guide/serving-assets/hosting/). You can [opt-out](https://shotstack.io/docs/guide/serving-assets/self-host/) from by setting the Shotstack destination **exclude** property to **true**."
    • removedInput schema / properties / payload / $defs / Destinations / type
      Removed value: -"object"
    • addedInput schema / properties / payload / $defs / GoogleCloudStorageDestination / $ref
      Added value: +"#/$defs/GoogleCloudStorageDestination"
    • removedInput schema / properties / payload / $defs / GoogleCloudStorageDestination / description
      Removed value: -"Send videos and assets to a [Google Cloud Storage](https://cloud.google.com/storage) bucket. Send files with your own prefix and filename. Google Cloud credentials are required and added via the [dashboard](https://dashboard.shotstack.io/integrations/google-cloud-storage), not in the request."
    • removedInput schema / properties / payload / $defs / GoogleCloudStorageDestination / properties
      Removed value: -{
      -  "options": {
      -    "$ref": "#/$defs/GoogleCloudStorageDestinationOptions",
      -    "description": "Additional Google Cloud Storage configuration options."
      -  },
      -  "provider": {
      -    "default": "google-cloud-storage",
      -    "description": "The destination to send assets to - set to `google-cloud-storage` for Google Cloud Storage.",
      -    "type": "string"
      -  }
      -}
    • removedInput schema / properties / payload / $defs / GoogleCloudStorageDestination / required
      Removed value: -[
      -  "provider"
      -]
    • removedInput schema / properties / payload / $defs / GoogleCloudStorageDestination / type
      Removed value: -"object"
    • addedInput schema / properties / payload / $defs / GoogleCloudStorageDestinationOptions / $ref
      Added value: +"#/$defs/GoogleCloudStorageDestinationOptions"
    • removedInput schema / properties / payload / $defs / GoogleCloudStorageDestinationOptions / description
      Removed value: -"Pass additional options to control how files are stored in Google Cloud Storage."
    • removedInput schema / properties / payload / $defs / GoogleCloudStorageDestinationOptions / properties
      Removed value: -{
      -  "bucket": {
      -    "description": "The bucket name to send files to. The bucket must exist in the Google Cloud Storage account before files can be sent.",
      -    "type": "string"
      -  },
      -  "filename": {
      -    "description": "Use your own filename instead of the default filenames generated by Shotstack. Note: omit the file extension as this will be appended depending on the output format. Also `-poster.jpg` and `-thumb.jpg` will be appended for poster and thumbnail images.",
      -    "type": "string"
      -  },
      -  "prefix": {
      -    "description": "A prefix for the file being sent. This is typically a folder name, i.e. `videos` or `customerId/videos`.",
      -    "type": "string"
      -  }
      -}
    • removedInput schema / properties / payload / $defs / GoogleCloudStorageDestinationOptions / required
      Removed value: -[
      -  "bucket"
      -]
    • addedInput schema / properties / payload / $defs / GoogleDriveDestination / $ref
      Added value: +"#/$defs/GoogleDriveDestination"
    • removedInput schema / properties / payload / $defs / GoogleDriveDestination / description
      Removed value: -"Send rendered videos and assets to the [Google Drive](https://shotstack.io/docs/guide/serving-assets/destinations/google-drive/) cloud storage service. Google Drive uses OAuth and you must authenticate and link your Google account via  [dashboard](https://dashboard.shotstack.io/integrations/google-drive), not in the request."
    • removedInput schema / properties / payload / $defs / GoogleDriveDestination / properties
      Removed value: -{
      -  "options": {
      -    "$ref": "#/$defs/GoogleDriveDestinationOptions",
      -    "description": "Additional Google Drive configuration and features. If omitted, files are saved to the root of My Drive using the default Shotstack filename."
      -  },
      -  "provider": {
      -    "default": "google-drive",
      -    "description": "The destination to send assets to - set to `google-drive` for Google Drive.",
      -    "type": "string"
      -  }
      -}
    • removedInput schema / properties / payload / $defs / GoogleDriveDestination / required
      Removed value: -[
      -  "provider"
      -]
    • removedInput schema / properties / payload / $defs / GoogleDriveDestination / type
      Removed value: -"object"
    • addedInput schema / properties / payload / $defs / GoogleDriveDestinationOptions / $ref
      Added value: +"#/$defs/GoogleDriveDestinationOptions"
    • removedInput schema / properties / payload / $defs / GoogleDriveDestinationOptions / description
      Removed value: -"Pass the folder ID and options to configure how assets are stored in Google Drive."
    • removedInput schema / properties / payload / $defs / GoogleDriveDestinationOptions / properties
      Removed value: -{
      -  "filename": {
      -    "description": "Use your own filename instead of the default filenames generated by Shotstack. Note: omit the file extension as this will be appended depending on the output format. Also `-poster.jpg` and `-thumb.jpg` will be appended for poster and thumbnail images.",
      -    "type": "string"
      -  },
      -  "folderId": {
      -    "description": "The Google Drive folder ID where the asset will be stored. If omitted, the asset is saved to the root of My Drive. The folder ID can be retrieved from the URL when logged in to Google Drive, e.g. <a href=\"#\">https://drive.google.com/drive/u/0/folders/1r-eTY6OLO8tzQRKwMyq-fIrQ_7AJEI6A</a>.",
      -    "type": "string"
      -  }
      -}
    • addedInput schema / properties / payload / $defs / MuxDestination / $ref
      Added value: +"#/$defs/MuxDestination"
    • removedInput schema / properties / payload / $defs / MuxDestination / deprecated
      Removed value: -true
    • removedInput schema / properties / payload / $defs / MuxDestination / description
      Removed value: -"**Notice: The Mux destination is deprecated.** It continues to work, with no behaviour change for existing integrations.\nSend videos to the [Mux](https://www.mux.com/docs) video hosting and streaming service. Mux credentials are required and added via the [dashboard](https://dashboard.shotstack.io/integrations/mux), not in the request."
    • removedInput schema / properties / payload / $defs / MuxDestination / properties
      Removed value: -{
      -  "options": {
      -    "$ref": "#/$defs/MuxDestinationOptions",
      -    "description": "Additional Mux configuration and features."
      -  },
      -  "provider": {
      -    "default": "mux",
      -    "description": "The destination to send video to - set to `mux` for Mux.",
      -    "type": "string"
      -  }
      -}
    • removedInput schema / properties / payload / $defs / MuxDestination / required
      Removed value: -[
      -  "provider"
      -]
    • removedInput schema / properties / payload / $defs / MuxDestination / type
      Removed value: -"object"
    • addedInput schema / properties / payload / $defs / MuxDestinationOptions / $ref
      Added value: +"#/$defs/MuxDestinationOptions"
    • removedInput schema / properties / payload / $defs / MuxDestinationOptions / deprecated
      Removed value: -true
    • removedInput schema / properties / payload / $defs / MuxDestinationOptions / description
      Removed value: -"**Notice: MuxDestinationOptions, like the Mux destination, is deprecated.** It continues to work, with no behaviour change for existing integrations.\nPass additional options to control how Mux processes video. Currently supports playback_policy and passthrough options."
    • removedInput schema / properties / payload / $defs / MuxDestinationOptions / properties
      Removed value: -{
      -  "passthrough": {
      -    "description": "Sets the Mux `passthrough` option. Max 255 characters.",
      -    "maxLength": 255,
      -    "type": "string"
      -  },
      -  "playbackPolicy": {
      -    "description": "Sets the Mux `playback_policy` option. Value is an array of strings - use `public`, `signed`, or both.",
      -    "items": {
      -      "enum": [
      -        "public",
      -        "signed"
      -      ],
      -      "type": "string"
      -    },
      -    "type": "array"
      -  }
      -}
    • addedInput schema / properties / payload / $defs / S3Destination / $ref
      Added value: +"#/$defs/S3Destination"
    • removedInput schema / properties / payload / $defs / S3Destination / description
      Removed value: -"Send videos and assets to an [Amazon S3](https://shotstack.io/docs/guide/serving-assets/destinations/s3/) bucket. Send files to any region with your own prefix and filename. AWS credentials are required and added via the [dashboard](https://dashboard.shotstack.io/integrations/s3), not in the request."
    • removedInput schema / properties / payload / $defs / S3Destination / properties
      Removed value: -{
      -  "options": {
      -    "$ref": "#/$defs/S3DestinationOptions",
      -    "description": "Additional S3 configuration options."
      -  },
      -  "provider": {
      -    "default": "s3",
      -    "description": "The destination to send assets to - set to `s3` for S3.",
      -    "type": "string"
      -  }
      -}
    • removedInput schema / properties / payload / $defs / S3Destination / required
      Removed value: -[
      -  "provider"
      -]
    • removedInput schema / properties / payload / $defs / S3Destination / type
      Removed value: -"object"
    • addedInput schema / properties / payload / $defs / S3DestinationOptions / $ref
      Added value: +"#/$defs/S3DestinationOptions"
    • removedInput schema / properties / payload / $defs / S3DestinationOptions / description
      Removed value: -"Pass additional options to control how files are stored in S3."
    • removedInput schema / properties / payload / $defs / S3DestinationOptions / properties
      Removed value: -{
      -  "acl": {
      -    "description": "Sets the S3 Access Control List (acl) permissions. Default is `private`. Must use a valid  S3 [Canned ACL](https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl-overview.html#canned-acl).",
      -    "type": "string"
      -  },
      -  "bucket": {
      -    "description": "The bucket name to send files to. The bucket must exist in the AWS account before files can be sent.",
      -    "type": "string"
      -  },
      -  "filename": {
      -    "description": "Use your own filename instead of the default filenames generated by Shotstack. Note: omit the file extension as this will be appended depending on the output format. Also `-poster.jpg` and `-thumb.jpg` will be appended for poster and thumbnail images.",
      -    "type": "string"
      -  },
      -  "prefix": {
      -    "description": "A prefix for the file being sent. This is typically a folder name, i.e. `videos` or `customerId/videos`.",
      -    "type": "string"
      -  },
      -  "region": {
      -    "description": "Choose the region to send the file to. Must be a valid  [AWS region](https://docs.aws.amazon.com/general/latest/gr/s3.html#s3_region) string like `us-east-1` or `ap-southeast-2`.",
      -    "type": "string"
      -  }
      -}
    • removedInput schema / properties / payload / $defs / S3DestinationOptions / required
      Removed value: -[
      -  "region",
      -  "bucket"
      -]
    • addedInput schema / properties / payload / $defs / ShotstackDestination / $ref
      Added value: +"#/$defs/ShotstackDestination"
    • removedInput schema / properties / payload / $defs / ShotstackDestination / description
      Removed value: -"Send videos and assets to the  [Shotstack hosting and CDN](https://shotstack.io/docs/guide/serving-assets/destinations/shotstack/) service.  This destination is enabled by default."
    • removedInput schema / properties / payload / $defs / ShotstackDestination / properties
      Removed value: -{
      -  "exclude": {
      -    "description": "Set to `true` to [opt-out](https://shotstack.io/docs/guide/serving-assets/self-host/) from the Shotstack hosting and CDN service. All files must be downloaded within 24 hours of rendering.",
      -    "type": "boolean"
      -  },
      -  "provider": {
      -    "default": "shotstack",
      -    "description": "The destination to send assets to - set to `shotstack` for Shotstack hosting and CDN.",
      -    "type": "string"
      -  }
      -}
    • removedInput schema / properties / payload / $defs / ShotstackDestination / required
      Removed value: -[
      -  "provider"
      -]
    • removedInput schema / properties / payload / $defs / ShotstackDestination / type
      Removed value: -"object"
    • addedInput schema / properties / payload / $defs / VimeoDestination / $ref
      Added value: +"#/$defs/VimeoDestination"
    • removedInput schema / properties / payload / $defs / VimeoDestination / description
      Removed value: -"Send videos to [Vimeo](https://shotstack.io/docs/guide/serving-assets/destinations/vimeo/) video hosting and streaming service. Vimeo credentials are required and added via the [dashboard](https://dashboard.shotstack.io/integrations/vimeo), not in the request."
    • removedInput schema / properties / payload / $defs / VimeoDestination / properties
      Removed value: -{
      -  "options": {
      -    "$ref": "#/$defs/VimeoDestinationOptions",
      -    "description": "Additional Vimeo configuration and features."
      -  },
      -  "provider": {
      -    "default": "vimeo",
      -    "description": "The destination to send video to - set to `vimeo` for Vimeo.",
      -    "type": "string"
      -  }
      -}
    • removedInput schema / properties / payload / $defs / VimeoDestination / required
      Removed value: -[
      -  "provider"
      -]
    • removedInput schema / properties / payload / $defs / VimeoDestination / type
      Removed value: -"object"
    • addedInput schema / properties / payload / $defs / VimeoDestinationOptions / $ref
      Added value: +"#/$defs/VimeoDestinationOptions"
    • removedInput schema / properties / payload / $defs / VimeoDestinationOptions / description
      Removed value: -"Pass additional options to control how Vimeo publishes video, including name, description and privacy settings."
    • removedInput schema / properties / payload / $defs / VimeoDestinationOptions / properties
      Removed value: -{
      -  "description": {
      -    "description": "A description of the video that will be displayed on the Vimeo website.",
      -    "type": "string"
      -  },
      -  "folderUri": {
      -    "description": "The Vimeo folder URI to upload the video to. The folder must already exist in your Vimeo account.",
      -    "type": "string"
      -  },
      -  "name": {
      -    "description": "A name or title for the video that will be displayed on the Vimeo website.",
      -    "type": "string"
      -  },
      -  "privacy": {
      -    "$ref": "#/$defs/VimeoDestinationPrivacyOptions",
      -    "description": "Options to control the visibility of videos and privacy features."
      -  }
      -}
    • addedInput schema / properties / payload / $defs / VimeoDestinationPrivacyOptions / $ref
      Added value: +"#/$defs/VimeoDestinationPrivacyOptions"
    • removedInput schema / properties / payload / $defs / VimeoDestinationPrivacyOptions / description
      Removed value: -"Options to control the visibility of videos and privacy features."
    • removedInput schema / properties / payload / $defs / VimeoDestinationPrivacyOptions / properties
      Removed value: -{
      -  "add": {
      -    "description": "Set whether other users can add the video to their collections.",
      -    "type": "boolean"
      -  },
      -  "comments": {
      -    "description": "Set who can comment on the video. Available options are: <ul>\n  <li>`anybody` - Anyone can comment on the video.</li>\n  <li>`nobody` - Only the video owner can comment on the video.</li>\n  <li>`contacts` - Only contacts can comment on the video.</li>\n</ul>",
      -    "enum": [
      -      "anybody",
      -      "nobody",
      -      "contacts"
      -    ],
      -    "type": "string"
      -  },
      -  "download": {
      -    "description": "Set whether the video can be downloaded.",
      -    "type": "boolean"
      -  },
      -  "embed": {
      -    "description": "Set who can embed the video. Available options are: <ul>\n  <li>`public` - Anyone can embed the video.</li>\n  <li>`private` - Only the video owner can embed the video.</li>\n  <li>`whitelist` - Only whitelisted domains can embed the video.</li>\n</ul>",
      -    "enum": [
      -      "public",
      -      "private",
      -      "whitelist"
      -    ],
      -    "type": "string"
      -  },
      -  "view": {
      -    "description": "Set who can view the videos. Available options are: <ul>\n  <li>`anybody` - Anyone can view the video.</li>\n  <li>`nobody` - Only the video owner can view the video.</li>\n  <li>`contacts` - Only contacts can view the video.</li>\n  <li>`password` - A password is required to view the video.</li>\n  <li>`unlisted` - The video is not listed on Vimeo.</li>\n</ul>",
      -    "enum": [
      -      "anybody",
      -      "nobody",
      -      "contacts",
      -      "password",
      -      "unlisted"
      -    ],
      -    "type": "string"
      -  }
      -}
    • removedInput schema / properties / payload / $defs / VimeoDestinationPrivacyOptions / type
      Removed value: -"object"
  2. First observedv2.0.0

TDQS

A3.6/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, but the description adds genuinely new context beyond them: confirmation is mandatory, provider charges/hosting/sharing/deletion may apply, and unknown outcomes must not be resubmitted. That last point is exactly the right warning for a non-idempotent write. It still omits whether the transfer is asynchronous/queued or how completion is observed.

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 action and scope in one sentence, then adds the confirmation and no-resubmit rules compactly. The 'Base URL' line is mostly boilerplate that does not help an agent decide anything, but it costs little.

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

Completeness3/5

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

There is no output schema, so the description ideally would say what comes back (job/asset ID, status, async completion), and it does not. It does cover the two riskiest things an agent needs – confirmation and non-resubmit on unknown state – but for a 7-parameter nested-payload transfer tool with a rich destination union, that leaves a real gap.

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 100%, so the schema fully documents url, id, destinations, confirm, account, payload and payload_file. The description mentions none of them and adds no syntax or format detail, so the baseline 3 for high-coverage schemas applies.

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 (transfer) and resource (a file fetched from any publicly available URL) and the destination scope (one or more Serve API destinations). That distinguishes it well from read-side siblings like get_asset or probe_media, though it never names ingest_source or generate_asset, the nearest alternatives.

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?

Gives one real precondition – explicit user confirmation is required for exactly this action – plus a 'never automatically resubmit unknown outcomes' rule for retries. It does not say when to choose transfer_asset over ingest_source or generate_asset, so routing between siblings remains implicit.

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