Skip to main content
Glama

Upload a Meta ad video

soclo_ads_upload_ad_video
Destructive

Upload a video to the connected Meta ad account; returns its video ID and status. No ad is created or paid for. To promote an X video post use soclo_ads_boost_post; older X postId calls run as that tool, with its preview and approval. Fields: soclo://tools/soclo_ads_upload_ad_video.

Input Schema

NameRequiredDescriptionDefault
confirmNoTrue only after owner approval of spending/deletion preview.
payloadYes
platformNo
accountIdYes
requestIdNoReuse this request ID for confirmation and outcome recovery.
parametersNo
adAccountIdNoAdvertiser/ad account selected from your Soclo connection.
expectedCurrencyNoApproved preview currency, e.g. GBP.
expectedBudgetTypeNoApproved preview budget type: daily or lifetime.
expectedBudgetAmountNoApproved preview amount; changes require a new preview.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • removedInput schema / properties / accountId / description
      Removed value: -"The connected ad account in Soclo."
    • removedInput schema / properties / platform / description
      Removed value: -"The campaign platform."
  2. Changed3 schema fields changed
    • removedInput schema / properties / payload / anyOf
      Removed value: -[
      -  {
      -    "properties": {
      -      "async": {
      -        "type": "boolean"
      -      },
      -      "filename": {
      -        "type": "string"
      -      },
      -      "videoBase64": {
      -        "type": "string"
      -      },
      -      "videoUrl": {
      -        "type": "string"
      -      }
      -    },
      -    "type": "object"
      -  },
      -  {
      -    "properties": {
      -      "adSetName": {
      -        "maxLength": 255,
      -        "type": "string"
      -      },
      -      "adSetStatus": {
      -        "enum": [
      -          "ACTIVE",
      -          "PAUSED"
      -        ],
      -        "type": "string"
      -      },
      -      "budget": {
      -        "properties": {
      -          "amount": {
      -            "type": "number"
      -          },
      -          "type": {
      -            "enum": [
      -              "daily",
      -              "lifetime"
      -            ],
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "amount",
      -          "type"
      -        ],
      -        "type": "object"
      -      },
      -      "budgetAmount": {
      -        "type": "number"
      -      },
      -      "budgetType": {
      -        "enum": [
      -          "daily",
      -          "lifetime"
      -        ],
      -        "type": "string"
      -      },
      -      "callToAction": {
      -        "type": "string"
      -      },
      -      "campaignName": {
      -        "maxLength": 255,
      -        "type": "string"
      -      },
      -      "campaignStatus": {
      -        "enum": [
      -          "ACTIVE",
      -          "PAUSED"
      -        ],
      -        "type": "string"
      -      },
      -      "endDate": {
      -        "type": "string"
      -      },
      -      "goal": {
      -        "enum": [
      -          "engagement",
      -          "traffic",
      -          "awareness",
      -          "video_views",
      -          "lead_generation",
      -          "conversions",
      -          "app_promotion"
      -        ],
      -        "type": "string"
      -      },
      -      "linkUrl": {
      -        "type": "string"
      -      },
      -      "name": {
      -        "maxLength": 255,
      -        "type": "string"
      -      },
      -      "platformPostId": {
      -        "description": "Existing X video post ID; provide this or postId.",
      -        "type": "string"
      -      },
      -      "postId": {
      -        "description": "Existing Soclo post ID; provide this or platformPostId.",
      -        "type": "string"
      -      },
      -      "schedule": {
      -        "properties": {
      -          "endDate": {
      -            "type": "string"
      -          },
      -          "startDate": {
      -            "type": "string"
      -          }
      -        },
      -        "type": "object"
      -      },
      -      "startDate": {
      -        "type": "string"
      -      },
      -      "status": {
      -        "enum": [
      -          "ACTIVE",
      -          "PAUSED"
      -        ],
      -        "type": "string"
      -      },
      -      "targeting": {
      -        "properties": {
      -          "advantage_audience": {
      -            "enum": [
      -              0,
      -              1
      -            ],
      -            "type": "number"
      -          },
      -          "ageMax": {
      -            "maximum": 65,
      -            "minimum": 13,
      -            "type": "integer"
      -          },
      -          "ageMin": {
      -            "maximum": 65,
      -            "minimum": 13,
      -            "type": "integer"
      -          },
      -          "cities": {
      -            "items": {
      -              "properties": {
      -                "distanceUnit": {
      -                  "enum": [
      -                    "mile",
      -                    "kilometer"
      -                  ],
      -                  "type": "string"
      -                },
      -                "key": {
      -                  "type": "string"
      -                },
      -                "name": {
      -                  "type": "string"
      -                },
      -                "radius": {
      -                  "type": "number"
      -                }
      -              },
      -              "required": [
      -                "key"
      -              ],
      -              "type": "object"
      -            },
      -            "type": "array"
      -          },
      -          "countries": {
      -            "items": {
      -              "type": "string"
      -            },
      -            "type": "array"
      -          },
      -          "customLocations": {
      -            "items": {
      -              "properties": {
      -                "address": {
      -                  "type": "string"
      -                },
      -                "distanceUnit": {
      -                  "enum": [
      -                    "mile",
      -                    "kilometer"
      -                  ],
      -                  "type": "string"
      -                },
      -                "latitude": {
      -                  "maximum": 90,
      -                  "minimum": -90,
      -                  "type": "number"
      -                },
      -                "longitude": {
      -                  "maximum": 180,
      -                  "minimum": -180,
      -                  "type": "number"
      -                },
      -                "name": {
      -                  "type": "string"
      -                },
      -                "radius": {
      -                  "type": "number"
      -                }
      -              },
      -              "required": [
      -                "latitude",
      -                "longitude",
      -                "radius",
      -                "distanceUnit"
      -              ],
      -              "type": "object"
      -            },
      -            "type": "array"
      -          },
      -          "gender": {
      -            "enum": [
      -              "all",
      -              "male",
      -              "female"
      -            ],
      -            "type": "string"
      -          },
      -          "interests": {
      -            "items": {
      -              "properties": {
      -                "id": {
      -                  "type": "string"
      -                },
      -                "name": {
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "id",
      -                "name"
      -              ],
      -              "type": "object"
      -            },
      -            "type": "array"
      -          },
      -          "languages": {
      -            "items": {
      -              "type": "string"
      -            },
      -            "type": "array"
      -          },
      -          "metros": {
      -            "items": {
      -              "properties": {
      -                "key": {
      -                  "type": "string"
      -                },
      -                "name": {
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "key"
      -              ],
      -              "type": "object"
      -            },
      -            "type": "array"
      -          },
      -          "regions": {
      -            "items": {
      -              "properties": {
      -                "key": {
      -                  "type": "string"
      -                },
      -                "name": {
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "key"
      -              ],
      -              "type": "object"
      -            },
      -            "type": "array"
      -          },
      -          "zips": {
      -            "items": {
      -              "properties": {
      -                "key": {
      -                  "type": "string"
      -                },
      -                "name": {
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "key"
      -              ],
      -              "type": "object"
      -            },
      -            "type": "array"
      -          }
      -        },
      -        "type": "object"
      -      }
      -    },
      -    "required": [
      -      "name",
      -      "goal"
      -    ],
      -    "type": "object"
      -  }
      -]
    • addedInput schema / properties / payload / properties
      Added value: +{
      +  "async": {
      +    "type": "boolean"
      +  },
      +  "filename": {
      +    "type": "string"
      +  },
      +  "videoBase64": {
      +    "type": "string"
      +  },
      +  "videoUrl": {
      +    "type": "string"
      +  }
      +}
    • addedInput schema / properties / payload / type
      Added value: +"object"
  3. First observed

TDQS

A4.2/5.0
Behavior4/5

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

Adds value beyond the annotations by disclosing return content (video ID and status) and by carving out that no ad is created or paid for, which responsibly narrows what destructiveHint=true implies. It does not cover the async upload path or any polling/rate-limit behavior before the status is final.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences with the capability stated first, the non-effect second, and the routing alternative third — nothing is buried. The trailing 'Fields: soclo://...' URI is cryptic and slightly under-explained, keeping it from a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

It covers return values and side-effect scope, which matters since there is no output schema. But for a 10-parameter tool with a nested object, it says nothing about how the video is supplied (URL vs base64), the async flag, or the requestId/expectedBudget* confirmation flow implied by the schema — leaving an agent to reverse-engineer the upload contract.

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

Parameters3/5

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

Schema coverage is 60% but the description adds no inline meaning for any parameter — the nested payload (videoUrl, videoBase64, async, filename) and platform/parameters are undocumented in both places, and the confirm/expected* approval fields go unmentioned. The pointer to soclo://tools/soclo_ads_upload_ad_video is the only compensation, so this lands at the mid baseline.

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?

States a specific verb plus resource ('Upload a video to the connected Meta ad account') and immediately bounds it ('No ad is created or paid for'). It is distinguishable from soclo_ads_upload_ad_image and soclo_ads_create_ad_creative, and explicitly names the sibling that handles the adjacent case.

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?

Gives an explicit routing rule: for promoting an X video post use soclo_ads_boost_post, including the note that legacy X postId calls resolve to that tool with its preview and approval. It also excludes a false expectation (uploading does not create or bill an ad), so the agent knows this is an asset step, not a campaign step.

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