MMetadata /docs
Docs/Tools/upload_image_creative

upload_image_creative

Upload images directly to Metadata platform library to create image creatives.

Writes creative

Creates or changes something in the account. Put it behind whatever review your agent uses.

What it does

Upload images directly to Metadata platform library to create image creatives.
                Downloads images from provided URLs and uploads them to the platform.
                ⚠️ REQUIRED STEP IN AD CREATION WORKFLOW:
                This tool MUST be called between generate_brand_creative and create_update_image_ad.
                **WORKFLOW INTEGRATION:**
                This tool is part of the ad creation workflow and should be used:
                1. BEFORE creating ads with create_update_image_ad (which requires imageLibraryId/creativeID)
                2. IN COMBINATION with generate_brand_creative to create AI-generated images first, then upload them
                3. When you need to upload existing images from external sources

                **COMMON WORKFLOWS:**
                - Upload existing images → Get imageLibraryId → Use in create_update_image_ad
                - Generate image with generate_brand_creative → Download generated image → Upload with this tool → Use in create_update_image_ad
                - Batch upload multiple creative assets for campaign preparation

                **IMPORTANT:** The returned image ID (imageLibraryId/creativeID) is REQUIRED when creating ads.
                Every ad needs a creative asset, so you must upload images first before calling create_update_image_ad.

                REQUIRED PARAMETERS:
                - images: Array of image URLs to upload

                IMAGE REQUIREMENTS:
                - URLs must be valid and publicly accessible
                - Supported formats: PNG, JPG, JPEG, GIF, WebP, and others
                - Images will be downloaded and then uploaded to platform
                - Filenames with spaces will have spaces replaced with underscores

                EXAMPLES:

                Single Image:
                upload_image([
                    "https://my-bucket.s3.amazonaws.com/images/sample-image.png"
                ])

                Multiple Images:
                upload_image([
                    "https://my-bucket.s3.amazonaws.com/images/logo.png",
                    "https://example-assets.s3.us-west-2.amazonaws.com/photos/banner.jpg",
                    "https://content-bucket.s3.eu-west-1.amazonaws.com/uploads/hero image.webp"
                ])

                RESPONSE FORMAT:
                Returns array of objects for each image:
                [
                    {
                        "url": "https://original-url.com/image.png",
                        "name": "image.png",
                        "id": 12345,
                        "success": true
                    },
                    {
                        "url": "https://failed-url.com/bad.png",
                        "name": "bad.png",
                        "id": null,
                        "success": false,
                        "error": "Download failed: Connection timeout"
                    }
                ]

                ERROR HANDLING:
                - If one upload fails, others will continue
                - Each result includes success status
                - Failed uploads include error message
                - Successful uploads include platform image ID

                USE CASES:
                - Upload creative assets before creating ads
                - Import images from external sources
                - Batch upload multiple campaign images
                - Migrate images from other platforms

Arguments

ArgumentTypeNotes
images array required Array of image URLs to upload to platform
names array Optional library name per image, positional against `images`. Pass one whenever you know what the creative is: without it the name is taken from the URL, which for a generated creative is an opaque key like `brand_creative_20260814_211126_66d8a83e.png` and leaves the user unable to tell their creati

Request

curl
curl -s -X POST https://mcp-server.metadata.io/mcp \
  -H "Authorization: $METADATA_PAT" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -H "MCP-Protocol-Version: 2025-11-25" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"upload_image_creative","arguments":{"images":[]}}}'

Response

No recorded response. This tool writes to the account, so it is never executed to build these docs. The request above is still the exact shape to send. Nothing on this page is invented.

Other creative tools:

All 160 tools · machine-readable index