Skip to main content
Glama
google-ads-mcp

google-ads-mcp

Official
by googleads

Assets Upload Video Asset

assets_upload_video_asset

Upload a video to YouTube via the Google Ads API after validating the request and obtaining checksum approval, especially for large files.

Instructions

Uploads a video to YouTube natively via the Google Ads API.

Once a video has been uploaded, it can be used to create a video asset. This operation executes via a FastMCP background task to gracefully handle large file uploads (supported in local stdio mode only). Once the upload finishes successfully, using the search tool and querying the you_tube_video_upload resource matching the returned ID allows you to retrieve the YouTube Video ID and processing status.

Propose & Confirm Workflow (validate_only and checksum):

  1. Call upload_video_asset with validate_only=True (the default). After validation passes, the tool returns structured change_items and a checksum without uploading the video.

  2. Present the change_items to the user and wait for explicit user approval.

  3. Only after user confirmation, call upload_video_asset with validate_only=False along with the exact same parameters and the checksum returned by the previous validate_only=True call.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "customer_id": "<customer_id>",
      "video_title": "<video_title>",
      "video_description": "<video_description>",
      "video_path": "<video_path>"
    },
    "name": "assets_upload_video_asset"
  }
}

Input Schema

NameRequiredDescriptionDefault
checksumNoChecksum of the validated operation returned by a prior `validate_only=True` call. Required when `validate_only=False`.
video_pathYesThe absolute path on the local filesystem to the video file to be uploaded (local stdio mode only).
customer_idYesGoogle Ads Customer ID (digits or hyphenated, e.g. '1234567890').
video_titleYesThe title you wish your video to have on YouTube.
validate_onlyNoIf True (default), validates the request and returns proposed `change_items` and a `checksum` without uploading the video. If False, requires `checksum` from a prior `validate_only=True` call to execute the video upload.
video_privacyNoThe privacy setting of the video on YouTube. Default is UNLISTED. Valid values are: PUBLIC, UNLISTED, PRIVATE. Note: PUBLIC is only allowed for brand channels.UNLISTED
login_customer_idNoOptional manager customer ID to use as the login-customer-id header.
video_descriptionYesThe description text attached to your YouTube video.
youtube_channel_idNoOptional. The ID of the YouTube channel the video will be uploaded to. If not provided, it will be uploaded to a Google-managed YouTube channel linked to your ads account.

Output Schema

NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv0.0.6

TDQS

A4.6/5.0
Behavior5/5

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

Beyond the annotations, the description discloses that the operation runs as a FastMCP background task, is supported only in local stdio mode, and requires a two-step validated execution flow. It also explains how to retrieve the YouTube Video ID and processing status after upload via the search tool.

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?

The description is front-loaded with the purpose and then the workflow, and every part is relevant. It is somewhat long and repeats some schema-level checksum details, but the procedural guidance earns most of its space.

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

Completeness5/5

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

For a nine-parameter mutation tool with an output schema, the description covers the key behavioral requirements: local-only execution, background task handling, the validation/execution sequence, and post-upload retrieval. Nothing an agent needs in order to invoke it correctly appears to be missing.

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 baseline is 3. The description reinforces the validate_only/checksum workflow, but most parameter-level details are already supplied by the schema itself.

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

Purpose5/5

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

The description states a specific verb and resource: uploading a video to YouTube via the Google Ads API. It also clarifies the downstream relationship to video assets, distinguishing this upload operation from the sibling asset-creation tool.

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

Usage Guidelines5/5

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

It gives an explicit propose-and-confirm workflow, including when to use validate_only=True by default, when to wait for user approval, and when to execute with validate_only=False plus checksum. It also states the local stdio mode constraint for the background upload.

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