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).

                            META UPLOAD READINESS: a video library id means ingestion,
                            not completion of Facebook/Instagram's asynchronous upload.
                            The entire ad batch is refused before writes unless every
                            requested Meta video channel reports READY. Read
                            fetch_creative_details later; do not build campaigns from a
                            refused call, busy-poll or claim an unfinished ad is ready.
                            Existing ads saved without a Meta video id must be rebuilt
                            or updated after upload completion and refreshed in the campaign.

                            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 only supply the generic write/openWorld/destructive profile, but the description adds much richer behavior: the batch is refused before any writes unless all Meta video channels report READY, DRAFT ads persist locally without round-tripping upstream, single-source URLs/body text fan out across targeted channels, and busy-polling is prohibited. This is well beyond what annotations or schema convey.

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?

Strongly front-loaded and organized into scannable sections (workflow, validation, readiness, see-also). It is long, and the 'ALSO KNOWN AS' plus 'KEYWORDS' blocks restate largely the same terms, which is mild bloat, but the rest of the prose is dense with operational detail rather than filler.

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?

For a 1-parameter nested-array tool with no output schema, the description covers everything an agent needs to call it correctly: required vs optional per channel, validation/refusal rules, async Meta upload readiness, and where to fetch results afterward (fetch_creative_details). Nothing material is missing.

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

Parameters4/5

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

Schema description coverage is already 100%, so the baseline is 3. The description exceeds that by adding cross-field operational semantics absent from the schema: the per-channel URL fan-out, FB+IG single-body-text copying capped at the receiving channel's limit, and the rule that linkedinDescription is rejected on video ads though the schema still lists it.

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?

Opens with a precise verb+resource+scope: 'Create OR update a VIDEO ad on Facebook, Instagram, LinkedIn, and/or Reddit.' It explicitly distinguishes itself from the image ad, carousel, convo, document, CTV, and Google/Microsoft ad siblings by naming them at the end, so an agent can route correctly without opening any 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 explicit create-vs-update selection ('TO UPDATE: include id; to CREATE: omit it'), a numbered prerequisite workflow via upload_video_creative/upload_image_creative, and hard exclusions ('For LinkedIn CTV ads use create_update_ctv_ad'; 'See create_update_image_ad for image/GIF ads'). When-not and alternative-tool guidance is fully present.

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