Skip to main content
Glama

Opus Growth, Ad Platforms MCP Connector

Create Meta Video Ad

create_meta_video_ad

Creates a Meta video ad. Give EITHER video_id (already uploaded via upload_meta_video — reusable) OR video_url (Meta fetches and processes it asynchronously). Thumbnail: image_hash, image_base64 or image_url — Meta REQUIRES a cover image; if you omit it, one is auto-generated from the video's own frame. To reuse a video already published on the Page (including Reels), take video_url from list_meta_page_posts and pass it here. page_id REQUIRED. cta_type = the button (LEARN_MORE | SHOP_NOW | SIGN_UP | BUY_NOW | WHATSAPP_MESSAGE | SEND_MESSAGE | INSTAGRAM_MESSAGE | ...) — leave EMPTY to auto-pick from the ad set's messaging destination, else the campaign objective. INSTAGRAM DM ADS: an ad set with destination_type=INSTAGRAM_DIRECT only delivers with cta_type INSTAGRAM_MESSAGE; LEARN_MORE creates the ad but Meta kills delivery with 1487891, and MESSAGE_PAGE/SEND_MESSAGE is rejected on Instagram (2875003). For Click-to-WhatsApp/Messenger/Instagram-DM video ads (cta_type WHATSAPP_MESSAGE / SEND_MESSAGE / INSTAGRAM_MESSAGE) you can pre-fill the chat: welcome_message = the ready-written text that auto-populates the user's compose box, greeting = optional in-thread greeting, ice_breakers = up to 4 tappable quick replies (≤80 chars each; if given they replace the auto-fill). MUSIC / AUDIO / SOUNDTRACK: a video ad already carries the audio embedded in the video file — that is how you ship a SPECIFIC song. enhancements=['ai_music','subtitles','video_auto_crop',...] (or music=true) enrol the video in Meta's Advantage+ creative features; the response reports enhancements_applied vs enhancements_not_applied. INSTAGRAM IDENTITY: by default Meta derives the Instagram account from page_id, which silently picks one when the Page has several — pass instagram_user_id (from list_meta_instagram_accounts) to choose it explicitly. Either way the response returns the instagram_user_id the ad ACTUALLY runs from, so you can confirm the identity without opening Ads Manager. LEAD ADS (Instant Form): pass lead_gen_form_id and the button opens Meta's instant form instead of a website — pair it with a LEAD_GENERATION ad set (promoted_object page_id) and cta_type SIGN_UP / APPLY_NOW / GET_QUOTE. You can build the form itself here too (create_meta_lead_form) or reuse one made in Meta Ads Manager (Page > Instant Forms) by passing its ID. If Meta answers (#200) the account was connected before this permission was granted — reconnect Meta from the panel once. confirm=false = preview.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
linkNo
nameYes
musicNo
statusNoPAUSED
confirmNo
messageNo
page_idYes
adset_idYes
cta_typeNo
greetingNo
headlineNo
video_idNo
image_urlNo
video_urlNo
account_idYes
image_hashNo
enhancementsNo
ice_breakersNo
image_base64No
welcome_messageNo
lead_gen_form_idNo
instagram_user_idNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added
  2. Removed
  3. Added
  4. Removed
  5. Added
  6. Removed
  7. Added
  8. Removed
  9. Added
  10. Removed
  11. Added
  12. Removed
  13. Added
  14. Removed
  15. Added
  16. Removed
  17. Added
  18. Removed
  19. Added
  20. Removed
  21. Added
  22. Removed
  23. Added
  24. Removed
  25. Added
  26. Removed
  27. Added
  28. Removed
  29. Added
  30. Removed
  31. Added
  32. Removed
  33. Added
  34. Removed
  35. Added
  36. Removed
  37. Added
  38. Removed
  39. Added

TDQS

A4.4/5.0
Behavior5/5

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

Annotations only cover the safety profile (readOnly=false, destructive=false, openWorld=true, idempotent=false), and the description goes well beyond them: async fetch/processing for video_url, auto-generated cover images, specific Meta error codes (1487891, 2875003, #200) with remediation, enhancements_applied vs enhancements_not_applied in the response, silent Instagram-account derivation from page_id, and confirm=false as preview.

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

Conciseness3/5

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

Core purpose is front-loaded, but the body is sprawling multi-paragraph prose dense with ALL-CAPS fragments and parenthetical error codes. The complexity partially justifies the length, yet it is not concise and hides key rules (e.g., cta_type selection) inside long run-on sentences.

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 22-param, 0%-schema-coverage, high-complexity ad-creation tool, the description is remarkably complete, and an output schema exists so return values need not be explained. It covers the edge cases (Instagram DM delivery, lead forms, identity derivation, preview mode) an agent would otherwise fail on.

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 0%, so the description carries the full burden and it explains most of the non-obvious params (video_id, video_url, image_hash/base64/url, cta_type enum values, welcome_message, greeting, ice_breakers, enhancements, music, instagram_user_id, lead_gen_form_id, confirm). It leaves link, message, headline, status, name, account_id and adset_id undocumented, so coverage is strong but incomplete across 22 params.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb+resource ('Creates a Meta video ad') that an agent immediately distinguishes from the other Meta ad creators in the sibling list. However, it never explicitly contrasts itself against create_meta_link_ad, create_meta_post_ad, create_meta_carousel_ad, etc., so routing among Meta ad types still leans on the tool name rather than the text.

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?

Extremely explicit about alternatives and conditions: video_id vs video_url, taking video_url from list_meta_page_posts to reuse Page/Reels videos, pairing lead_gen_form_id with a LEAD_GENERATION ad set, instagram_user_id to disambiguate identity, and the Click-to-WhatsApp/Messenger/Instagram-DM branches. Each path names the sibling tool or the ad-set condition that selects it.

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.