Skip to main content
Glama

Metadata MCP Connector

Create or Update Video Ad

create_update_video_ad
Destructive

Create OR update a VIDEO ad on Facebook, Instagram, LinkedIn, and/or Reddit. TO UPDATE: include id; to CREATE: omit it.

                            CREATIVE WORKFLOW:
                              1. Upload the video via `upload_video_creative` → response gives `id` (the videoLibraryId).
                              2. Pass that integer as `creativeID` here.
                              - For Reddit, ALSO upload a still thumbnail via `upload_image_creative` and pass
                                its imageLibraryId as `redditThumbnailLibraryId` (required; the video cannot
                                be its own thumbnail).

                            ALSO KNOWN AS: create video ad, update video ad, edit video ad,
                            modify video ad, video creative, post video, video post, motion ad.

                            KEYWORDS: video, create, update, edit, modify, ad, ads, video ad, video ads, mp4, motion,
                            video creative, video campaign, video upload, video post, video promo,
                            LinkedIn video, Facebook video, Instagram video, Reddit video, IG reel.

                            CLIENT-SIDE VALIDATION (refuses what the platform UI would also reject):
                              - adName: required, max 50 chars, pattern `[a-zA-Z0-9 _.?,:'/+\-=&;%$#\[\]|()]`.
                              - creativeID: required integer (videoLibraryId from `upload_video_creative`).
                              - Landing-page URL is per channel (`facebookDisplayURL`,
                                `instagramDisplayURL`, `linkedinDisplayURL`, `redditDisplayURL`).
                                Required for FB/IG/LinkedIn, optional for Reddit. Per-channel
                                caps: LinkedIn max 2000, Reddit max 100, FB/IG no length rule.
                                For VIDEO the URL MUST be ABSOLUTE (http:// or https:// is
                                required); inputs like `metadata.io` or `www.foo.com` are
                                rejected the same way the UI rejects them. If only one channel's
                                URL is set the server fans it across the other targeted channels.
                              - LinkedIn: linkedinText (max 3000, OPTIONAL for VIDEO unlike IMAGE),
                                linkedinHeadline (required, max 200), linkedinCTA (required, valid enum).
                                linkedinDescription is NOT accepted on VIDEO ads (the platform DTO
                                does not declare it).
                              - Facebook: metaCTA (required), facebookText (required, no length rule on
                                Facebook), facebookHeadline (required, max 250), facebookDescription
                                (optional, max 300).
                              - Instagram: metaCTA (required), instagramText (required, max 125),
                                instagramHeadline (required, max 40), instagramDescription (optional, max 30).
                              - FB+IG ad with one body text: set just one of facebookText / instagramText
                                and the server copies it across (capped at the receiving channel's limit).
                                Set both explicitly only when you want per-channel copy.
                              - Reddit: redditHeadline (required, max 300), redditCTA (required, valid enum),
                                redditThumbnailLibraryId (REQUIRED — separate IMAGE library id).

                            COMMON CTA VALUES: same as `create_update_image_ad` (see that tool for the lists).

                            See `create_update_image_ad` for image/GIF ads (the URL rule is looser there).
                            For LinkedIn CTV (Connected TV) ads use `create_update_ctv_ad`; the video
                            must be uploaded with `upload_video_creative(usage_type="CTV")`.
                            

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
ads_dataYesArray of VIDEO ads to create or update. Each item targets one or more of FB/IG/LinkedIn/Reddit; the platform creates one ad row per (ad, channel).

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=false and destructiveHint=true, but the description adds substantial behavioral context beyond that: 'Each channel produces one ad row', 'DRAFT persists locally without round-tripping', and 'If only one channel's URL is set the server fans it across the other targeted channels.' This gives the agent a clear model of side effects without contradicting the annotations.

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?

The description is long (approximately 40 lines) but highly organized with clear sections (CREATIVE WORKFLOW, CLIENT-SIDE VALIDATION, etc.) and front-loaded purpose. The KEYWORDS section is somewhat redundant with the description text itself, slightly reducing conciseness, but every other section earns its place given the complexity of the tool.

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

Completeness4/5

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

Given the complexity (multiple channels, per-channel constraints, DRAFT/COMPLETED behavior) and no output schema, the description covers all necessary invocation details: required fields, URL rules, limits, and workflow. It does not mention the return value or response format, which an agent might need to know, but this is a minor omission for a create/update tool.

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

Parameters5/5

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

Schema coverage is 100% with rich per-field descriptions, yet the description still adds significant meaning: it explains that creativeID is a libraryId from upload_video_creative, that redditThumbnailLibraryId must be a separate image library id, and details cross-field behavior like URL fan-out and per-channel copy capping. This adds value well beyond the schema's structured fields.

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?

The description opens with a precise verb-resource pair: 'Create OR update a VIDEO ad on Facebook, Instagram, LinkedIn, and/or Reddit.' It explicitly distinguishes this tool from siblings like create_update_image_ad and create_update_ctv_ad by naming them and the conditions for their use. The ALSO KNOWN AS and KEYWORDS sections further disambiguate the tool's scope.

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?

Provides explicit when-to-use and when-not-to-use guidance: 'See create_update_image_ad for image/GIF ads', 'For LinkedIn CTV ads use create_update_ctv_ad'. It also gives a creative workflow (upload via upload_video_creative, pass id) and per-channel validation rules that effectively tell the agent how to invoke the tool correctly and which alternatives to choose.

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