Skip to main content
Glama
630,679 tools. Updated 2026-10-02 20:38

"Information about using Meta Ads" matching MCP tools:

  • Lists the user's connected Google Ads account(s). Returns only the account(s) the user selected at connect time; the response carries default_account_id. all_accessible=true returns every account the credential can reach, which also expands client accounts under MCC (manager) accounts. platform is optional and defaults to Google Ads; naming another connected platform (meta | tiktok | linkedin | microsoft | ga4 | search_console | youtube | business_profile) returns the name of that platform's own account-listing tool instead.
    ConnectorOAuth
  • Read one retained AI response using an executionId from devtune_list_visibility_responses, with structured sponsored ads labelled separately from the organic answer. Returns null if the execution is outside this project. retained=false means the raw response has expired, not that no ads were displayed. Use visibility summary for rollup-backed advertising rates.
    ConnectorAPI key
  • After the user confirms authorization is finished, check once using channel=meta|google_ads|tiktok and the exact connect_id from setup_begin_channel_connect. Do not poll automatically while the link remains valid; use setup_get_status for workspace readiness
    ConnectorOAuth
  • Browse individual decoded ads from Heista's corpus of real winning Meta/TikTok creative. Takes optional filters: vertical, creative_format, marketing_angle, hook_type, algo_intent, brand (partial name match), and limit (1-10, default 5). Each result returns beat timeline, classification, psychology, runtime performance signals (active days on Meta when available), and a decode id you can pass into generate_adscript with source_type="decode" to write a fresh script on that exact structure. Free, read-only, idempotent — no credits consumed. Use this when the user wants a specific ad as a script template (not an averaged formula), asks "show me winning ads in [vertical]", "what are [brand]'s top ads", or wants to see examples before committing to a generation. Source discovery surface — the response is the spine; for the full bundle with transcripts and director's read, call get_decode by id afterwards. Do NOT use to decode a NEW ad from a URL — use decode_ad (paid). Do NOT use for category-level patterns abstracted across multiple ads — use adformula_intelligence. Do NOT use to write the script itself — use generate_adscript or write directly from the bundle.
    ConnectorNo auth
  • Reads and tool lookup for Meta Ads; nothing called here changes anything. The 16 Meta Ads tools that change something run through meta_ads_write. meta_ads(action="execute", tool_name="…", arguments={...}). action="list_tools" (the write half included) and action="get_tool_schema" are free; never guess a tool_name. accounts=["…","…"] or accounts="all_active": one read across up to 20 Meta Ads accounts, free like every read. Not in this router, called by name: meta_get_campaign_performance (meta campaign performance). Tools by category: **analysis** meta_analyze_audiences, meta_analyze_wasted_spend, meta_detect_creative_fatigue, meta_get_audience_insights, meta_optimize_budget, meta_optimize_placements **targeting** meta_browse_targeting, meta_get_ad_set_delivery_estimate, meta_get_ad_set_targeting, meta_search_targeting **diagnostics** meta_explain_anomaly, meta_validate_creative_url **assets** meta_get_ad_creatives, meta_list_instagram_accounts, meta_list_media, meta_list_pages, meta_list_promotable_apps **performance** meta_get_ad_performance, meta_get_adset_performance **structure** meta_get_lead_form_submissions, meta_list_ad_sets, meta_list_ads, meta_list_campaigns, meta_list_lead_forms **audiences** meta_list_custom_audiences, meta_list_saved_audiences **conversions** meta_list_pixels
    ConnectorOAuth
  • Gets a video into the user's Meta ad account and returns its video_id, WITHOUT leaving the chat. Three ways, pick by what the user has: (1) THE FILE IS ON THEIR COMPUTER and they have no link: call this with no arguments. You get a one time drop link to give them; they open it, drag the file in, and that is all they do. Then call this again with ticket=<the token you were given> to read the result and carry on building the ad. The upload completes here; it does not require Ads Manager and does not need base64. (2) THEY HAVE A LINK (their own site, Drive, Dropbox, WeTransfer): pass video_url and the file is fetched server side and pushed to Meta, so share links that Meta itself cannot read still work. (3) A video already in the account: reuse its video_id, no upload needed. The video_id is reusable across ads. mp4, mov, m4v or webm, up to 300 MB.
    ConnectorOAuth

Matching MCP Servers

  • F
    license
    A
    quality
    B
    maintenance
    A read-only MCP server that pulls Meta Ads campaign, ad-set, and ad performance data to help users spot problems and adjust them in Ads Manager.
    6
    -
  • A
    license
    A
    quality
    D
    maintenance
    Meta Ads MCP by ScaleForge — a Model Context Protocol server that exposes Meta (Facebook/Instagram) Ads management directly through the Graph API v24.0
    32
    111 npm
    MIT

Matching MCP Connectors

  • Meta Ads MCP server for Facebook and Instagram ads in Claude, ChatGPT, Codex, Cursor and any MCP client: reports with breakdowns, campaigns, ad sets, ads, creatives, audiences and catalogs, with approval on every write. Hosted by Markifact, OAuth login, nothing to install locally.

  • Meta Ads MCP: Facebook and Instagram reports, campaigns, creatives, audiences. Approval on writes.

  • Discover the AdKit MCP contract with progressive drill-down. Top-level paths: "manage" (campaigns, accounts, and reporting across Meta, Google, TikTok, Reddit, X, and LinkedIn, plus Microsoft and ChatGPT Ads raw access and drafts), "integrations" (read-only GA4 data), "library" (browse ads, advertisers, and inspiration boards), and "studio" (AI static ad generation). Start with adkit_help() for the root overview, or drill down like adkit_help({ path: "manage google campaigns create" }). A keyword search with q, e.g. adkit_help({ q: "keyword planner" }) → "manage google research keywords", covers the full command catalog: a capability missing from one drill-down path may still exist under another.
    ConnectorAPI key
  • Changes for Meta Ads: the 16 Meta Ads tools that create, update, pause or remove something. Reading, listing or checking anything is not here — that is meta_ads, and calling this router to look something up is always wrong. meta_ads_write(action="execute", tool_name="…", arguments={...}); execute is the only action, and meta_ads(action="get_tool_schema") looks a tool up for free. Each call creates a proposal the user approves before anything changes; creates are PAUSED. One account per call, no fan-out. Tools by category: **creation** meta_add_ad, meta_add_ad_set, meta_create_app_install_campaign, meta_create_carousel_campaign, meta_create_flexible_ad, meta_create_image_campaign, meta_create_video_campaign **management** meta_duplicate_campaign, meta_pause_entity, meta_resume_entity, meta_set_frequency_cap, meta_update_ad, meta_update_ad_set, meta_update_adset_budget, meta_update_campaign, meta_update_campaign_budget
    Connector
    Destructive
    OAuth
  • 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.
    ConnectorOAuth
  • Lists the Facebook Pages managed by the connected Meta user (id, name, category). The page_id required when creating ads is selected from here. ALWAYS pass account_id when you are building ads for a specific ad account: only then can this tool tell you which Pages that ad account is actually allowed to advertise for (Meta's own `promote_pages`), returned as `ad_account_pages` with `assigned_to_ad_account` on every entry. A Page appearing in the flat list does NOT mean the ad account can use it — the user's personal Page role and the ad account's asset assignment are two different things, and Ads Manager shows the former. An empty `ad_account_pages` means Meta could not DISCOVER an assigned Page — it does NOT mean ads cannot be built, and it is NOT a connector fault. Verified live on 2026-09-22: with promote_pages empty, passing page_id explicitly created a WhatsApp messaging ad set without any error. So when `ad_account_pages` is empty, pick the Page from the `pages` list and pass page_id directly to create_meta_adset / create_meta_link_ad FIRST. Do not send the user to Meta Business Settings on the strength of this empty list; only treat it as a real asset-assignment problem if Meta itself rejects the explicit page_id. A Page missing here is not an access loss on our side. If the list comes back empty this tool also reports WHY: a missing `pages_show_list` permission looks identical to "no pages" otherwise.
    ConnectorOAuth
  • Search the CATALOG of ADS channels you can ADD — advertising channels (Google Shopping, Meta, Microsoft, Pinterest, …) you can create an ads integration for (to list the ads that ALREADY exist, use list_ads). Ads are ads-based channels (advertising / price-comparison / classifieds), not marketplaces: they publish products to the ad platform and have no order sync. SEARCHABLE + PAGED: pass query to match a channelCode/label, page with limit/offset (response carries hasMore + nextOffset). Response = {channels, returned, total, kind, hasMore, nextOffset}; each channel = {channelCode, label, kind, available, availabilityReason, authType, orderSyncSupported, multichannel, multichannelCode, primaryChannelCode, devOnly, upgradeUrl, appstoreUrl, feedManagerUrl}. available=false → availabilityReason says why: 'plan_limit' (not included in the current plan) or 'appstore' (unavailable through this connection). orderSyncSupported is always false for ads. Use channelCode with get_ad_channel (definition types + capabilities) then create_ad. project_id is OPTIONAL (inferred for a single-project customer; project_id_required otherwise — then call list_projects).
    ConnectorOAuth
  • Discard a product-family pause draft using the exact pd_confirm_* token from products_delivery_pause_prepare. No Meta write. Use overview_update_deny for individual status/budget/bid drafts and launch_deny for creation/copy drafts
    Connector
    Destructive
    OAuth
  • Discard a prepared QuickCreate, recreate, ad-copy or structural-clone draft using its exact confirm_token. No Meta write. For a lost token, use operations_get_approval then operations_deny_approval with approval_ref and expected_plan_digest
    Connector
    Destructive
    OAuth
  • Render a pixel-accurate visual preview of an existing Meta ad (real Meta render; video ads also get an animated clip in the interactive card). The card is SELF-CONTAINED: Facebook Feed + Instagram Reels tabs and an 'All placements on Meta' button are built in. AFTER THE CARD RENDERS, reply with ONE short confirmation sentence and stop. NEVER mention, list, or offer any other placement (no 'Desktop Feed', 'Stories', 'right column', etc.) and never describe the card's tabs or buttons — the user can see them. Only if the user themselves asks about another placement: answer that the card's 'All placements on Meta' button opens every placement in Ads Manager, and only pass a non-default ad_format when the user explicitly names one.
    ConnectorAPI key
  • Pause or reactivate one or more Google Ads campaigns, ad groups, ads, or keywords (max 20 per call). Use dry_run: true to preview the change (current vs new status, validated by Google) without applying anything. Only set action to 'activate' when the user has explicitly requested to resume or enable. Keyword ids are composite "<ad_group_id>:<criterion_id>" (as returned by adsap_google_get_insights level keyword). ad_account_id is the bare 10-digit Google Ads customer ID. For Meta entities use adsap_set_entity_status instead.
    ConnectorAPI key
  • GOOGLE ADS ONLY — reads the full content of Google Ads ads (RSA headlines/descriptions, URL, status) together with each ad's AD STRENGTH and Google's own action items for improving it. Filtered by ad_group_id or ad_id. `ad_strength` is the value Google shows in the interface: PENDING, NO_ADS, POOR, AVERAGE, GOOD or EXCELLENT. It answers "is this ad done or is one step left", which a weak-ads list cannot — a list of weak ads tells you what is bad, not whether the rest reached EXCELLENT. `action_items` is what Google itself says is missing on that specific ad ("try including more keywords in your headlines"), so the remaining gap is read rather than guessed; an ad can have all 15 headlines filled and still score low because they repeat each other. customer_id is a 10-digit Google Ads id; for Meta/TikTok/LinkedIn ads use list_meta_ads / list_tiktok_ads / list_linkedin_creatives instead.
    ConnectorOAuth
  • Lists Meta ads; if adset_id is provided, limits to that ad set. Each ad carries effective_status AND, when Meta is blocking or limiting delivery, an `issues_info` array with the exact reason (error_code + message) — USE THIS to answer "why isn't my ad running / not delivering / rejected" instead of sending the user to Ads Manager. Common case: error 2490279 = the creative's messaging call-to-action does not match the ad set's messaging destination (WhatsApp ad set needs a WHATSAPP_MESSAGE button, Instagram-Direct needs INSTAGRAM_MESSAGE, Messenger needs MESSAGE_PAGE); fix by aligning the ad's button to the ad set destination, or pause the mismatched duplicate.
    ConnectorOAuth
  • Meta ACTIVITY / CHANGE HISTORY (audit trail) — WHO changed WHAT and WHEN in a Meta ad account, the equivalent of Ads Manager's "Activity history" and of get_change_history on Google Ads. Returns, per event: time (converted to the ACCOUNT's own timezone — Meta serves this endpoint in UTC, and time_utc keeps the raw value), actor (the person's name), the event in plain language, level (campaign | adset | ad | account), the object id/name, and field-level old→new values where Meta provides them (status, budget, bid, targeting, schedule, creative updates). since/until are YYYY-MM-DD — pass the same day in both for an hour-by-hour report of that day. level filters to one entity type. NOTE: Meta keeps roughly 90 days of history and its events are coarser than Google's — a creative edit shows up as an event, but the before/after text of a headline or primary text is not always included.
    ConnectorOAuth
  • Report feedback about the META COUNCIL PLATFORM itself — a noticeable performance failure, a lacking/missing capability, a bug, or a UX/docs gap in Meta Council's tools, councils, workflows, or MCP surface. Platform feedback only: do NOT use this for anything about your own business, customers, deals, invoices, or other data Meta Council manages on your behalf — use the relevant business tool for that instead (e.g. create_deal, create_invoice). Use it the moment a tool result, council run, or workflow falls short. Stored per-user and visible only to platform admins — the response returns an id + acknowledgement and submissions cannot be read back. Include machine context (tool name, session id, model) in the context object.
    ConnectorNo auth
  • Browse 1M+ ads from thousands of advertisers across Meta, Google, and LinkedIn. Keep a per-project watchlist of advertisers and save ads to shareable inspiration boards. For advertiser list/search, params.scope is library (default, all advertisers) or watchlist (the selected project's My Watchlist). Create and fill boards before setting shareEnabled: true through boards update, and only enable sharing when the user explicitly asks. The user's own campaigns live in adkit_manage.
    ConnectorAPI key
  • Get Dynamic/Advantage+ catalog-ads readiness health checks for a Meta pixel (live from Meta) — whether the pixel is set up correctly to power dynamic/catalog ads: event-source match rate against catalogs, missing DPA parameters, iOS 14.5+ (AEM) setup, and more. Each check returns pass/fail. Use to diagnose why catalog/Advantage+ ads under-deliver or why events aren't matching products, before launching. Get the pixel_id from adsap_list_meta_assets (asset_type:"pixels"). Complements adsap_get_pixel_stats (event volume).
    ConnectorAPI key