> ## Documentation Index
> Fetch the complete documentation index at: https://docs.adsmcp.si/llms.txt
> Use this file to discover all available pages before exploring further.

# upload_amazon_asset

> Upload an image (png, jpg or gif, at most 1024 KiB) to the Amazon creative asset library, for example a brand logo for Sponsored Brands.

> [!WARNING]
>
> **Change — approval required.** Calling this tool does not change your ad account. ADSMCP checks the arguments and stages the change as a pending action. It runs only after a person approves it on the dashboard [Approvals](https://adsmcp.si/dashboard/approvals) page. Over MCP or REST you can view (`list_pending_actions`) or reject (`manage_action`) it, never approve it. `execution_mode` and similar arguments do not skip the queue.
>
> A change that fails when it runs is not retried automatically. It shows on the dashboard Execution Queue.

Upload an image (png, jpg or gif, at most 1024 KiB) to the Amazon creative asset library, for example a brand logo for Sponsored Brands. Send the bytes base64-encoded; no URL is fetched by ADSMCP. Amazon registers it after approval. Staged for dashboard approval; nothing changes in Amazon before a person approves it.

**Platform:** Amazon Ads · **Type:** Change

## How to call it

* **MCP:** on `https://mcp.adsmcp.si/mcp`, run it through the `amazon_ads_write` tool with `{"action": "execute", "tool_name": "upload_amazon_asset", "arguments": { ... }}`, or call `upload_amazon_asset` by name. `search_tools` finds it and `get_tool_schema` returns its arguments; `https://mcp.adsmcp.si/mcp/flat` lists every tool by name.
* **REST:** `POST https://mcp.adsmcp.si/api/v1/tools/upload_amazon_asset/execute` with `Authorization: Bearer sk_live_...` and a JSON body `{"platform": "amazon", "arguments": { ... }}`. The arguments are listed below; they are exactly the tool's input schema.


## OpenAPI

````yaml api-reference/openapi.json POST /api/v1/tools/upload_amazon_asset/execute
openapi: 3.1.0
info:
  title: ADSMCP REST API
  version: 0.1.0
  description: >-
    ADSMCP REST API: every public ADSMCP tool as POST
    /api/v1/tools/{name}/execute. Generated from the ADSMCP code (the service
    serves the same document at GET /api/v1/openapi.json). Changes to ad
    accounts are staged for approval by a person on the ADSMCP dashboard;
    nothing in this API can approve them.
servers:
  - url: https://mcp.adsmcp.si
    description: ADSMCP MCP and REST service
security: []
paths:
  /api/v1/tools/upload_amazon_asset/execute:
    post:
      tags:
        - amazon
      summary: >-
        Upload an image (png, jpg or gif, at most 1024 KiB) to the Amazon
        creative asset library, for example a brand logo for Sponsored Brands.
        Send the bytes base64-encoded; no URL is fetched by ADSMCP. Amazon
        registers it after approval. Staged for dashboard approval; nothing
        changes in Amazon before a person approves it.
      description: >-
        Upload an image (png, jpg or gif, at most 1024 KiB) to the Amazon
        creative asset library, for example a brand logo for Sponsored Brands.
        Send the bytes base64-encoded; no URL is fetched by ADSMCP. Amazon
        registers it after approval. Staged for dashboard approval; nothing
        changes in Amazon before a person approves it. Use this when you intend
        that change. Write tools create paused objects or wait for approval, and
        a failed spend-affecting call is not retried automatically.
      operationId: execute_upload_amazon_asset
      parameters:
        - name: Authorization
          in: header
          required: true
          schema:
            type: string
          description: Bearer token
        - name: Idempotency-Key
          in: header
          required: false
          schema:
            type: string
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                platform:
                  type: string
                  default: amazon
                arguments:
                  type: object
                  properties:
                    profile_id:
                      type: string
                      description: Amazon Ads profile id (see get_amazon_profiles).
                      pattern: ^\d{1,20}$
                    name:
                      type: string
                      description: Name.
                      minLength: 1
                      maxLength: 100
                    file_name:
                      type: string
                      description: File name with extension (.png, .jpg, .jpeg, .gif).
                      pattern: ^[A-Za-z0-9_. -]{1,96}\.(png|jpg|jpeg|gif)$
                    content_base64:
                      type: string
                      description: The file, base64-encoded.
                      minLength: 8
                      maxLength: 1398108
                    asset_sub_type:
                      type: string
                      description: What the image is.
                      enum:
                        - LOGO
                        - PRODUCT_IMAGE
                        - LIFESTYLE_IMAGE
                        - OTHER_IMAGE
                    brand_entity_id:
                      type: string
                      description: Brand entity id (sellers; from list_amazon_brands).
                      pattern: ^[A-Za-z0-9]{1,64}$
                    asins:
                      type: array
                      maxItems: 20
                      items:
                        type: string
                        description: ASIN.
                        pattern: ^[A-Z0-9]{10}$
                      description: ASINs to tag the asset with.
                    tags:
                      type: array
                      maxItems: 10
                      items:
                        type: string
                        description: Tag.
                        minLength: 1
                        maxLength: 50
                      description: Search tags.
                    execution_mode:
                      type: string
                      description: >-
                        Ignored: every Amazon write is staged for dashboard
                        approval.
                  required:
                    - profile_id
                    - name
                    - file_name
                    - content_base64
                    - asset_sub_type
                  additionalProperties: false
              additionalProperties: false
      responses:
        '200':
          description: Tool execution result.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExecuteToolResponse'
        '400':
          description: Invalid JSON input.
        '401':
          description: Authentication error.
      security:
        - bearerAuth: []
components:
  schemas:
    ExecuteToolResponse:
      type: object
      properties:
        ok:
          type: boolean
        platform:
          type: string
        tool:
          type: string
        data: {}
        error:
          anyOf:
            - type: 'null'
            - $ref: '#/components/schemas/ErrorResponse'
        mcp_response: {}
      required:
        - ok
        - platform
        - tool
        - error
        - mcp_response
      additionalProperties: false
    ErrorResponse:
      type: object
      properties:
        code: {}
        message:
          type: string
        details: {}
      required:
        - message
      additionalProperties: false
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: API token

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.