Skip to main content
Glama

meta_ads_videos_upload_file

Uploads a local video file to the Meta Ads account library, returns a video_id for creative construction, and requires polling until processing is ready before use.

Instructions

Uploads a video from a local file path to the Meta Ads account library. Returns the video_id to reference in creative-construction tools. Mutating. Meta processes the video asynchronously after upload — poll meta_ads_videos_get until status.video_status reports ready (typically a few minutes) before attaching it to a creative. Supported formats: MP4, MOV, AVI, WMV, MKV, up to 1 GB via this tool; larger files need resumable upload (not yet supported). For uploads from public URLs use meta_ads_videos_upload.

Input Schema

NameRequiredDescriptionDefault
titleNoOptional title stored with the uploaded video. Used for library organization; not shown in ads.
reasonNoWhy this change is being made: one or two sentences naming the evidence and the expected effect. Stored in the journal and on the action_log entry this call produces, for the operator and the next session.
approvalNoExternal approval this change carries out (recorded and shown, never verified)
expectedNoExpected effects [{metric, direction, target?, horizon_days?, primary?}], exactly one primary:true when several; metric cpa/cpc/cpl/cpm/conversions/cvr/ctr/roas/cost/spend/clicks/impressions; direction up/down/hold.
file_pathYesPath to the video file on the agent's filesystem. Supported formats: MP4, MOV, AVI, WMV, MKV, up to 1 GB; larger files need resumable upload (not yet supported).
account_idNoMeta Ads account ID in the format 'act_XXXXXXXXXX' (e.g. 'act_1234567890'). Optional — falls back to META_ADS_ACCOUNT_ID from the configured credentials. The leading 'act_' prefix is required.
decision_idNoA proposed decision this change carries out.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv0.33.0
    • changedInput schema / properties / expected / description
      Previous value: -"Expected effects [{metric, direction, target?, horizon_days?}]; metric cpa/cpc/cpl/cpm/conversions/cvr/ctr/roas/cost/spend/clicks/impressions; direction up/down/hold."New value: +"Expected effects [{metric, direction, target?, horizon_days?, primary?}], exactly one primary:true when several; metric cpa/cpc/cpl/cpm/conversions/cvr/ctr/roas/cost/spend/clicks/impressions; direction up/down/hold."
  2. Changed1 schema field changedv0.28.0
    • addedInput schema / properties / approval
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "External approval this change carries out (recorded and shown, never verified)",
      +  "properties": {
      +    "approved_at": {
      +      "maxLength": 64,
      +      "type": "string"
      +    },
      +    "approved_by": {
      +      "maxLength": 80,
      +      "type": "string"
      +    },
      +    "reference": {
      +      "maxLength": 128,
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "reference",
      +    "approved_by",
      +    "approved_at"
      +  ],
      +  "type": "object"
      +}
  3. Changed2 schema fields changedv0.26.0
    • addedInput schema / properties / decision_id
      Added value: +{
      +  "description": "A proposed decision this change carries out.",
      +  "maxLength": 128,
      +  "minLength": 1,
      +  "type": "string"
      +}
    • addedInput schema / properties / expected
      Added value: +{
      +  "description": "Expected effects [{metric, direction, target?, horizon_days?}]; metric cpa/cpc/cpl/cpm/conversions/cvr/ctr/roas/cost/spend/clicks/impressions; direction up/down/hold.",
      +  "maxItems": 12,
      +  "type": "array"
      +}
  4. Changed1 schema field changedv0.20.0
    • addedInput schema / properties / reason
      Added value: +{
      +  "description": "Why this change is being made: one or two sentences naming the evidence and the expected effect. Stored in the journal and on the action_log entry this call produces, for the operator and the next session.",
      +  "maxLength": 500,
      +  "type": "string"
      +}
  5. Changed2 schema fields changedv0.10.37
    • addedInput schema / additionalProperties
      Added value: +false
    • changedInput schema / properties / file_path / description
      Previous value: -"Path to the video file on the agent's filesystem. Supported formats: MP4, MOV. Recommended max 4 GB."New value: +"Path to the video file on the agent's filesystem. Supported formats: MP4, MOV, AVI, WMV, MKV, up to 1 GB; larger files need resumable upload (not yet supported)."
  6. Addedv0.9.12
  7. Removedv0.9.6
  8. Addedv0.9.2
  9. Removedv0.9.1
  10. Addedv1.0.5

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries the burden well: it flags the call as 'Mutating', discloses asynchronous server-side processing with a polling requirement, states the 1 GB ceiling and supported formats, names the unsupported resumable path, and reports the return value (video_id). Gaps remain around auth/permission requirements and failure behavior, so it falls short of a 5.

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

Conciseness5/5

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

Front-loaded with the action, then return value, mutation flag, async follow-up, and limits in descending order of importance. Dense but every sentence (including the URL-alternative routing) carries operational information; the only redundancy is repeating format limits already in the schema.

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

Completeness5/5

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

No output schema exists, yet the description names the returned video_id. It covers the full lifecycle an agent needs: upload, async wait, polling tool, then creative attachment, plus the size/format boundary and the sibling for URL sources. Nothing essential to correct invocation is missing for a 7-param, 1-required tool.

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 description coverage is 100%, so every parameter (file_path, title, account_id, reason, approval, expected, decision_id) is already documented in structured data. The description only restates the file_path format/size constraint, adding no meaning beyond the schema — baseline 3 applies.

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 and resource with scope: 'Uploads a video from a local file path to the Meta Ads account library.' It explicitly contrasts with the sibling meta_ads_videos_upload for public URLs, so an agent can pick the right tool without opening either schema.

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 both a when-not ('For uploads from public URLs use meta_ads_videos_upload') and a required follow-up ('poll meta_ads_videos_get until status.video_status reports ready') before attaching to a creative. The alternative and the sequencing are explicit rather than inferred.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Deploy Server

Other Tools