Skip to main content
Glama

Upload Video to YouTube

adsap_google_upload_video

Upload a video FILE (MP4 in the ADSAP creative library) to YouTube for use in Google Ads video slots, and get back a YouTube video asset. Use this when the user has a video file but NO YouTube channel — the video goes to a Google-managed 'ad storage' YouTube channel owned by the ad account, stays UNLISTED, and never appears on any public channel. If the user already has the video on YouTube, skip this tool and pass the YouTube id/asset directly to the campaign tool instead. TWO STEPS, always: (1) action 'upload' with the storage_path of the file — returns upload_resource_name immediately; (2) action 'status' with that upload_resource_name — YouTube processing usually takes a few MINUTES, so poll every ~30s; while it is still processing you get state UPLOADED and still_processing: true, and once it reaches PROCESSED the tool mints the video asset automatically and returns asset_id + video_id. Feed the result into a video slot: adsap_google_create_demand_gen_campaign uses the VIDEO ID (ad.youtube_video_ids), while adsap_google_create_display_campaign (youtube_video_asset_ids) and adsap_google_create_app_campaign (video_asset_ids) use the ASSET ID. The video title CANNOT be changed after upload (Google marks it immutable) — set it correctly on the upload call. Max 256 MB. ad_account_id is the bare 10-digit customer ID. For Meta video uploads use adsap_upload_creative instead.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
actionYes'upload' pushes the file to YouTube; 'status' polls processing and mints the asset once PROCESSED.
job_idNostatus only: alternative handle returned by the upload call.
dry_runNoupload only: validate the file (exists, size, title) without uploading anything to YouTube.
video_titleNoOptional YouTube title (defaults to the file name). IMMUTABLE after upload — there is no rename.
storage_pathNoupload: object path of the MP4 inside the bucket — must be under YOUR user prefix ({user_id}/...), cross-user paths are rejected. status: may be used INSTEAD of upload_resource_name to recover the job if the upload response was lost.
ad_account_idYesBare 10-digit Google Ads customer ID (from adsap_google_list_ad_accounts). No dashes, no act_ prefix.
storage_bucketNoupload only: ADSAP creative-library storage bucket holding the video file.temp-uploads
is_ai_generatedNoupload only: set true ONLY when the user says the video is AI generated — writes Google's advertiser AI attestation (synthetic_content_info) on the minted asset, which cannot be fully unset later. Omitted = no attestation written.
video_descriptionNoOptional YouTube description. Also immutable after upload.
upload_resource_nameNostatus only: the value returned by the upload call (customers/{cid}/youTubeVideoUploads/{id}).

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A5/5.0
Behavior5/5

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

With no annotations provided, the description carries full behavioral disclosure. It reveals that videos land on a Google-managed 'ad storage' channel, stay UNLISTED, never appear publicly, take minutes to process, require polling every ~30s, produce intermediate UPLOADED state with still_processing:true, auto-mint the asset at PROCESSED, and that title/description are immutable after upload.

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?

The description is dense but every sentence earns its place. It front-loads the core purpose, then covers when-to-use, the two-step lifecycle, downstream tool routing, and constraints without filler or repetition of the schema.

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?

Given 10 parameters, no annotations, and no output schema, the description is remarkably complete: it explains the polling cadence, state transitions, max file size, bare 10-digit ad_account_id format, AI-attestation side effects, and how the returned asset IDs feed into specific adjacent campaign tools.

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

Parameters5/5

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

Schema coverage is 100%, but the description adds workflow semantics beyond the field docs: the mandatory two-action sequence (upload then status), how storage_path can recover a lost upload in status mode, which campaign tool uses video_id versus asset_id, and the immutability consequences that make video_title critical on the upload call.

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 opens with a specific verb and resource: uploading an MP4 video FILE from the ADSAP library to YouTube for Google Ads video slots, returning a YouTube video asset. It distinguishes itself from Meta uploads and from passing an existing YouTube ID directly to a campaign 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?

Explicitly states when to use: when the user has a video file but NO YouTube channel. It also gives the alternative path — if the video is already on YouTube, skip this tool and pass the ID/asset directly — and names adsap_upload_creative for Meta video uploads.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources