Skip to Content
Tool referenceUpload Google Ads assets

Upload Google Ads assets (adsap_google_upload_asset)

Platform: Google Ads · Read or write: Write · Plan: Early Access · Consumes a task: No · Preview supported: Yes

What it does

Creates Google Ads assets from images in your Adsap creative library, text, or YouTube videos, up to 20 per request. Image assets come back with their size and the slots they can fill, such as landscape, square, portrait or logo. The returned asset IDs feed the Performance Max, Demand Gen, Display and App create tools. A preview validates the batch without creating anything.

When to use it

  • Use it before the Performance Max, Demand Gen, Display or App create tools. Those tools take image asset IDs, and this tool creates them.
  • Images are read from your Adsap creative library by storage_bucket and storage_path. The path must sit under your own user prefix, or the call is rejected.
  • Set field_type_hint when you know the slot. If the image does not fit that slot, the call fails with the exact reason.
  • Images must be GIF, JPG or PNG files of 5120 KB at most. Text assets are capped at 90 characters.
  • It supports a preview call. With dry_run set to true, the batch is checked and nothing is created. This tool uses no tasks.

Worked example

You ask

“Check my two summer images for Google Ads account 1234567890 before I build a Performance Max campaign. Do not create anything yet.”

The assistant calls adsap_google_upload_asset

{ "ad_account_id": "1234567890", "assets": [ { "type": "image", "storage_bucket": "temp-uploads", "storage_path": "00000000-0000-4000-8000-000000000000/summer-landscape.jpg", "field_type_hint": "MARKETING_IMAGE" }, { "type": "image", "storage_bucket": "temp-uploads", "storage_path": "00000000-0000-4000-8000-000000000000/summer-square.png" } ], "dry_run": true }

Adsap returns

The field names are the ones Adsap returns. The values are examples.

{ "ok": true, "dry_run": true, "platform": "google", "action": "upload_asset", "assets": [ { "index": 0, "type": "image", "name": "summer-landscape.jpg - 1789689600000-0", "source": "temp-uploads/00000000-0000-4000-8000-000000000000/summer-landscape.jpg", "width": 1200, "height": 628, "mime": "image/jpeg", "file_kb": 412, "eligible_field_types": ["MARKETING_IMAGE"] }, { "index": 1, "type": "image", "name": "summer-square.png - 1789689600000-1", "source": "temp-uploads/00000000-0000-4000-8000-000000000000/summer-square.png", "width": 1200, "height": 1200, "mime": "image/png", "file_kb": 655, "eligible_field_types": ["SQUARE_MARKETING_IMAGE", "LOGO"] } ], "google_validation": "passed", "warnings": [] }

How to read it

Each entry in assets matches one input, by index. width and height are read from the file itself. eligible_field_types lists the slots the image can fill. MARKETING_IMAGE is landscape and SQUARE_MARKETING_IMAGE is square. A square image of 128 pixels or more also fits LOGO. An empty list means the image fits no slot, and warnings says so. name was filled in from the file name, because the call sent none.

google_validation is passed when Google accepts the batch. Otherwise it holds Google’s error message. To create the assets, the assistant repeats the call without dry_run. Each entry then also carries an asset_id. Pass those IDs to a create tool such as adsap_google_create_pmax_campaign.

Parameters

Descriptions are shortened from the tool schema. Your assistant sees the full text.

NameTypeRequiredDescription
ad_account_idstringYesBare 10-digit Google Ads customer ID (from adsap_google_list_ad_accounts). No dashes, no act_ prefix.
assetsarray of objectYesUp to 20 assets per request, all-or-nothing.
dry_runbooleanNoPreview only: the request is validated and the resolved payload returned, nothing is created or changed.

Example prompts

  • “Upload the five product images from my creative library to Google Ads as assets.”
  • “Create Google Ads assets from these three YouTube videos.”
  • “Preview uploading my logo and banner images as Google assets.”

Notes

The batch is all-or-nothing: if one asset fails, none are created.

  • adsap_google_list_creative_assets: List the creative assets already in a Google Ads account’s library: IMAGE (with dimensions + which PMax/Demand Gen image slots each fits)…
  • 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.

Guide

Read Google Ads for the workflow around this tool, and the Tool reference for every tool.

The Google Ads MCP server  page shows how to connect Google Ads to Claude, ChatGPT or Perplexity.

Last updated on