Skip to main content
Glama

Opus Growth, Ad Platforms MCP Connector

Create Meta Link Ad

create_meta_link_ad

Creates a Meta link ad (creative + ad in one step). page_id is REQUIRED — every Meta ad runs on behalf of a Facebook Page (find it with list_meta_pages). For the image give ONE of: image_hash (already uploaded via upload_meta_image — reusable, no re-upload), image_base64 (the file itself, e.g. one the user dropped into the chat) or image_url (public link). JPEG/PNG/GIF/WebP, ≤8MB. cta_type = the button: LEARN_MORE | SHOP_NOW | SIGN_UP | BUY_NOW | GET_OFFER | GET_QUOTE | CONTACT_US | APPLY_NOW | ORDER_NOW | SEND_MESSAGE | WHATSAPP_MESSAGE | INSTAGRAM_MESSAGE | VIEW_INSTAGRAM_PROFILE | CALL_NOW | BOOK_TRAVEL | DOWNLOAD | SUBSCRIBE | NO_BUTTON — leave EMPTY to auto-pick from the campaign objective (SALES→SHOP_NOW, LEADS→SIGN_UP, else LEARN_MORE). WHATSAPP_MESSAGE / SEND_MESSAGE / INSTAGRAM_MESSAGE make the button OPEN A CHAT (WhatsApp / Messenger / Instagram Direct) instead of a website — pair with a messaging ad set (optimization_goal CONVERSATIONS, destination_type WHATSAPP / MESSENGER / INSTAGRAM_DIRECT). THE BUTTON MUST MATCH THE AD SET'S destination_type: INSTAGRAM_DIRECT needs INSTAGRAM_MESSAGE (a link button such as LEARN_MORE is accepted at creation but the ad then NEVER delivers, error 1487891; MESSAGE_PAGE/SEND_MESSAGE is rejected on Instagram, subcode 2875003). Leave cta_type empty and it is derived from destination_type automatically. For those messaging ads you can PRE-FILL the chat: welcome_message = the text that auto-populates the user's WhatsApp/Messenger compose box (the ready-written message they'll tap 'send' on, e.g. 'Merhaba, indirimli fiyatlarınızdan yararlanmak istiyorum'); greeting = an optional greeting shown in the thread; ice_breakers = up to 4 tappable quick-reply options (each ≤80 chars) shown when the chat first opens (if given, these replace the auto-fill — Meta allows one or the other). These only apply when cta_type is WHATSAPP_MESSAGE / SEND_MESSAGE / INSTAGRAM_MESSAGE. BACKGROUND MUSIC / AUDIO / SOUNDTRACK: music=true is Ads Manager's "Add music" (Advantage+ audio enrollment) — Meta turns the still image into a short video with an auto-picked track; enhancements=['animate_image','image_enhancement',...] enrolls the other Advantage+ creative features. The response reports enhancements_applied vs enhancements_not_applied, so a request Meta ignores is never reported as success. 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. For a SPECIFIC song, embed it in a video and use create_meta_video_ad (or upload_meta_video + update_meta_ad_creative(video_id=...)) — the Marketing API has no field to pick a Sound Collection track. The ad is created PAUSED and goes through Meta review. 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
linkYes
nameYes
musicNo
statusNoPAUSED
confirmNo
messageYes
page_idYes
adset_idYes
cta_typeNo
greetingNo
headlineNo
image_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.7/5.0
Behavior5/5

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

Adds substantial behavior beyond annotations: ad is created PAUSED and goes through Meta review, confirm=false returns a preview, specific error codes surfaced (1487891, 2875003, #200 requiring reconnect), and the response reports enhancements_applied vs enhancements_not_applied so ignored requests are not falsely reported as success. These disclosures go well past the annotation set.

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?

It is front-loaded with purpose and cta/behavior, and every sentence is information-dense, but it is a single run-on paragraph heavy with ALL-CAPS and parenthetical asides that make it hard to scan. The length is partly justified by tool complexity, but the lack of structure costs it.

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?

An output schema exists, so return values need not be documented, and annotations cover the safety profile. For a 20-parameter, high-complexity creation tool the description supplies the pairing rules, defaults, and failure modes an agent needs to call it correctly.

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?

With 0% schema description coverage across 20 params, the description carries the burden and covers the tricky ones thoroughly: page_id required rationale, the three mutually exclusive image sources, the full cta_type enum and auto-derivation, plus welcome_message/greeting/ice_breakers/music/enhancements/instagram_user_id. However generic params (account_id, adset_id, name, message, link, headline, status) are left to inference, so it does not fully compensate for 0% coverage.

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+resource and scope: 'Creates a Meta link ad (creative + ad in one step).' It directly distinguishes itself from siblings like create_meta_video_ad (named explicitly for specific songs) and implies the link-ad role versus post/carousel/video ads. An agent can identify it without opening the 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?

Explicit when/when-not/alternatives: it names list_meta_pages for the required page_id, upload_meta_image for reusing image_hash, and redirects to create_meta_video_ad / upload_meta_video + update_meta_ad_creative for specific songs. It gives conditional pairing rules for messaging ad sets (CONVERSATIONS, destination_type) and lead ads (LEAD_GENERATION ad set).

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.