Skip to Content
Tool referenceUpload creative

Upload creative (adsap_upload_creative)

Platform: Meta · Read or write: Write · Plan: All plans · Consumes a task: No · Preview supported: No

What it does

Uploads an image or video from Google Drive or Dropbox into a Meta ad account’s creative library. You point at one file per call, from one source. The upload can group files named as a square and vertical pair. Video uploads run in the background, so check their status afterwards.

When to use it

  • Use it to bring one image or video from Google Drive or Dropbox into a Meta ad account before you create an ad.
  • Get the file first: drive_file_id comes from adsap_list_drive_files, dropbox_path from adsap_list_dropbox_files. Send exactly one of the two.
  • Accepted files are JPG, PNG and WebP images up to 30 MB, and MP4, MOV, MKV and AVI videos up to 4,096 MB.
  • Images are ready when the call returns. Videos come back with status encoding and a job_id to check with adsap_get_upload_status.
  • Set pair to true on each file of a square and vertical set with matching filename suffixes. Adsap groups them once both files have landed.

Worked example

You ask

“Upload the Spring sale video from my Drive to act_1234567890 and tag it spring-sale.”

The assistant calls adsap_upload_creative

{ "ad_account_id": "act_1234567890", "drive_file_id": "1AbCdEfGhIjKlMnOpQrStUvWxYz012345", "name": "Spring sale video", "labels": ["spring-sale"] }

Adsap returns

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

{ "job_id": "3f2b8c1e-5a4d-4e6f-9b7a-2c1d0e9f8a7b", "creative_asset_id": "120210000000004", "ad_account_id": "act_1234567890", "name": "Spring sale video", "type": "VIDEO", "format": "1080x1920", "file_size_mb": 24.81, "status": "encoding", "source": "mcp_drive_upload", "drive_file_id": "1AbCdEfGhIjKlMnOpQrStUvWxYz012345", "dropbox_path": null, "drive_file_name": "spring-sale-video.mp4", "labels": ["spring-sale"], "estimated_completion_seconds": 60, "message": "Video is being uploaded and encoded by Meta. This typically takes 30-120 seconds. Check status with get_upload_status(job_id='3f2b8c1e-5a4d-4e6f-9b7a-2c1d0e9f8a7b'), or find the creative in list_creative_assets once ready." }

How to read it

type is VIDEO and status is encoding: the file reached Meta, and Meta is still processing it. creative_asset_id is the Meta video ID. format is the width and height read from Drive. labels are Adsap tags and are not sent to Meta.

Keep the job_id. The assistant passes it to adsap_get_upload_status until the video is ready. An image upload returns status ready and upload_completed_at instead of the last two fields, so there is nothing to wait for.

Parameters

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

NameTypeRequiredDescription
ad_account_idstringYes
drive_file_idstringNoFrom adsap_list_drive_files. Provide exactly one of drive_file_id / dropbox_path.
dropbox_pathstringNoFrom adsap_list_dropbox_files (its dropbox_path field, e.g. ‘/creatives/ad.jpg’). Provide exactly one of drive_file_id / dropbox_path.
namestringNoDefaults to the source filename.
typeone of IMAGE, VIDEONoAuto-detected if omitted.
labelsarray of stringNoAdsap-only tags, not in Meta.
pairbooleanNoSet true on EACH file of a square/vertical (+optional landscape) set whose filenames share a base name with matching suffixes (e.g… Pairing happens server-side when the partner file lands, in any order.
idempotency_keystringNo

Example prompts

  • “Upload the file summer-hero.mp4 from my Drive to the UK ad account.”
  • “Upload both files of the blue-sneaker pair from Dropbox and group them as one creative.”
  • “Push the three product images in the Q3 Drive folder into the creative library and tag them Q3.”

Notes

Give exactly one source per upload: a Drive file id or a Dropbox path, never both.

  • adsap_create_ad_from_ig_post: Turn an existing Instagram post, video, or reel into an ad inside an EXISTING ad set: Meta Ads Manager’s “Use existing post”.
  • adsap_get_ad_library_snapshot: SHOW what Ad Library ads ACTUALLY LOOK LIKE (creative, copy, page name), in a SELF-CONTAINED card.
  • adsap_get_ad_preview: Render a pixel-accurate visual preview of an existing Meta ad (real Meta render; video ads also get an animated clip in the interactive…
  • adsap_get_creative_performance: Ranked creative performance analysis with fatigue detection.
  • adsap_get_import_status: Check progress of a Meta historical-asset import started with adsap_import_account_creatives: status, phase (images then videos)…
  • adsap_get_preview_clip: Fetch the animated placement-preview clip (recorded video of the real Meta preview) for an ad+placement previously rendered with…
  • adsap_get_upload_status: Check status of an async video upload.
  • adsap_import_account_creatives: Import ALL historical creative assets (images + videos) that already exist in a Meta ad account into the Adsap Creative Library.
  • adsap_list_creative_assets: List uploaded Meta creative images and videos in the ad account asset library.
  • adsap_list_drive_files: Browse Google Drive for creative image/video files to upload to Meta.
  • adsap_list_dropbox_files: Browse Dropbox for creative image/video files to upload to Meta.
  • adsap_list_ig_media: List an Instagram account’s recent media/posts (live from Meta): the posts, reels, and stories that can be promoted.
  • adsap_replace_ad_creative: DESTRUCTIVE.
  • adsap_search_ad_library: Search Meta’s public Ad Library for ads (competitor research / ad transparency).

Guide

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

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

Last updated on