Skip to content

Meta Ads

Facebook and Instagram campaigns, ad sets, ads, audiences, pixels and leads. 48 tools: 18 read, 30 write.

Tool Access What it does
nc_meta_create_campaign write Create a Meta Ads campaign.
nc_meta_create_ad_set write Create a Meta ad set under an existing campaign.
nc_meta_create_ad write Create a Meta ad under an existing ad set with a single-image link creative.
nc_meta_upload_image write Upload an image to a Meta ad account.
nc_meta_update_campaign_budget write Update the daily or lifetime budget on an existing Meta campaign.
nc_meta_pause_campaign write Pause a running Meta campaign.
nc_meta_get_campaign_performance read Read-only — fetch insights (impressions, clicks, spend, CTR, etc) for one Meta campaign.
nc_meta_create_custom_audience write Create a Meta custom audience from a list of contacts (email/phone).
nc_meta_create_lookalike_audience write Create a Meta lookalike audience from an existing custom audience.
nc_meta_upload_video write Upload a video to a Meta ad account via URL-based ingestion. v0 supports file_url only (chunked upload deferred).
nc_meta_create_video_ad write Create a single-video Meta ad under an existing ad set.
nc_meta_create_carousel_ad write Create a Meta carousel ad with 2-10 cards under an existing ad set.
nc_meta_generate_ad_previews read Render a preview of a Meta ad in a given ad format.
nc_meta_search_targeting read Search Meta targeting options (interests, geos, employers, positions, schools, locales).
nc_meta_list_lead_forms read List Meta Instant Forms for ONE ad account.
nc_meta_retrieve_leads read Pull leads from an existing Meta lead form.
nc_meta_pixel_health read Composite pixel diagnostic: pixel details + event stats + server-side (CAPI) traffic.
nc_meta_ads_library_search read Search Meta’s public Ads Library for active competitor ads.
nc_meta_duplicate_campaign write Copy a Meta campaign (and optionally its ad sets and ads).
nc_meta_rename_campaign write Rename a Meta campaign.
nc_meta_update_campaign_bidding_strategy write Update the bid strategy (and optional bid cap or ROAS floor) on a Meta campaign.
nc_meta_list_campaigns read List Meta campaigns on an ad account.
nc_meta_get_campaign_settings read Fetch all settings for a single Meta campaign (objective, budgets, bid strategy, schedule, special_ad_categories, etc).
nc_meta_duplicate_ad_set write Copy a Meta ad set.
nc_meta_update_adset_bid_value write Update the bid cap (bid_amount) or ROAS floor (min_roas) on a Meta ad set.
nc_meta_update_adset_schedule write Update the start_time or end_time on a Meta ad set.
nc_meta_update_adset_placements write Set placement targeting on an ad set. mode=automatic restores all placements. mode=manual + placements[] specifies exact positions (format: platform.position, e.g. “facebook.feed”, “instagram.stream”, “audience_network.classic”).
nc_meta_update_adset_locations write Replace geo targeting (include) or excluded locations (exclude) on an ad set. location items: { type: “country”|“city”|“region”|“zip”, key: string }.
nc_meta_update_adset_language write Update language targeting (locales) on a Meta ad set. locale_ids: Meta integer locale ids (e.g. 6=English, 28=Hebrew).
nc_meta_update_adset_audiences write Replace audience targeting (custom audiences, interests, behaviors, demographics) on a Meta ad set.
nc_meta_update_adset write Low-level escape hatch: POST /{ad_set_id} with arbitrary Graph API params.
nc_meta_rename_adset write Rename a Meta ad set.
nc_meta_list_ad_sets read List Meta ad sets on an ad account.
nc_meta_get_adset_settings read Fetch all settings for a single Meta ad set (targeting, budget, schedule, bid, etc).
nc_meta_duplicate_ad write Copy a Meta ad.
nc_meta_create_catalog_ad write Create a Dynamic Product Ads (DPA / Catalog) ad using a product set.
nc_meta_create_flexible_ad write Create a flexible (multi-asset / Advantage+ creative) Meta ad with multiple image/video/text variations.
nc_meta_create_ad_from_post write Turn an existing organic Facebook post or Instagram media into a Meta ad.
nc_meta_create_ad_from_creative write Create a Meta ad referencing an existing saved ad creative by creative_id.
nc_meta_list_ads read List Meta ads on an ad account.
nc_meta_rename_ad write Rename a Meta ad.
nc_meta_get_ad_creative read Fetch the creative spec for a Meta ad or standalone creative.
nc_meta_replace_ad_creative write Swap the creative on a Meta ad for an existing creative by creative_id.
nc_meta_list_account_pixels read List all Meta pixels on an ad account.
nc_meta_get_pixel_details read Get detailed info for a single Meta pixel (code snippet, last_fired_time, owner, automatic_matching settings).
nc_meta_get_pixel_stats read Get event statistics for a Meta pixel.
nc_meta_check_capi_health read Check Conversions API (CAPI / server-side) health for a pixel.
nc_meta_list_custom_conversions read List custom conversion definitions on a Meta ad account (rule-based conversions, pixel event filters, etc).

write Needs mcp:write on an OAuth or MCP-server token.

Create a Meta Ads campaign. Always created in PAUSED state — caller must approve before unpausing. Requires marketing.edit. Use dry_run: true to preview without calling Graph.

Argument Type Required Description
connection_id string yes NexaCloser connections.id for the Meta (facebook) connection.
ad_account_id string yes Meta ad account numeric id, no act_ prefix.
name string yes Max length 400
objective string yes One of: OUTCOME_TRAFFIC, OUTCOME_LEADS, OUTCOME_SALES, OUTCOME_AWARENESS, OUTCOME_ENGAGEMENT, OUTCOME_APP_PROMOTION
daily_budget number Daily budget in account-currency minor units (e.g. ₪50 = 5000).
lifetime_budget number Mutually exclusive with daily_budget.
bid_strategy string Defaults to LOWEST_COST_WITHOUT_CAP. Do not use WITH_BID_CAP unless you will send bid_amount on every ad set. · One of: LOWEST_COST_WITHOUT_CAP, LOWEST_COST_WITH_BID_CAP, COST_CAP, MINIMUM_ROAS
special_ad_categories string[]
dry_run boolean

write Needs mcp:write on an OAuth or MCP-server token.

Create a Meta ad set under an existing campaign. Always PAUSED on create. Omit daily_budget when the parent campaign uses CBO (campaign-level budget). Defaults bid_strategy to LOWEST_COST_WITHOUT_CAP. Requires marketing.edit.

Argument Type Required Description
connection_id string yes
ad_account_id string yes
campaign_id string yes Parent campaign id from nc_meta_create_campaign.
name string yes Max length 400
daily_budget integer Account-currency minor units. Min 500. Omit when parent campaign already has daily_budget/lifetime_budget (CBO) — dual budget fails with Meta Invalid parameter. · Min 500
optimization_goal string yes One of: REACH, LINK_CLICKS, LANDING_PAGE_VIEWS, OFFSITE_CONVERSIONS, LEAD_GENERATION, IMPRESSIONS, POST_ENGAGEMENT, VIDEO_VIEWS, THRUPLAY
billing_event string yes One of: IMPRESSIONS, LINK_CLICKS, THRUPLAY
bid_strategy string Defaults to LOWEST_COST_WITHOUT_CAP (no bid_amount). WITH_BID_CAP requires bid_amount. · One of: LOWEST_COST_WITHOUT_CAP, LOWEST_COST_WITH_BID_CAP, COST_CAP, MINIMUM_ROAS
bid_amount integer Required only for WITH_BID_CAP / COST_CAP. Minor units. · Min 1
targeting object yes
targeting.geo_locations object yes
targeting.geo_locations.countries string[] yes Min items 1
dry_run boolean

write Needs mcp:write on an OAuth or MCP-server token.

Create a Meta ad under an existing ad set with a single-image link creative. Always PAUSED on create. Requires marketing.edit.

Argument Type Required Description
connection_id string yes
ad_account_id string yes
ad_set_id string yes
name string yes Max length 400
creative object yes
creative.image_hash string yes Returned by nc_meta_upload_image. 32-64 char hex.
creative.page_id string yes Facebook Page id that owns the post.
creative.link string yes Destination URL, must start with https://
creative.message string yes Primary text. · Max length 125
creative.headline string Max length 40
creative.description string Max length 27
creative.call_to_action_type string One of: LEARN_MORE, SHOP_NOW, SIGN_UP, BOOK_TRAVEL, DOWNLOAD, GET_QUOTE, CONTACT_US, APPLY_NOW
dry_run boolean

write Needs mcp:write on an OAuth or MCP-server token.

Upload an image to a Meta ad account. Returns { image_hash } usable in nc_meta_create_ad. Provide image_url (https) OR image_data (base64, ≤30 MB). Requires marketing.edit.

Argument Type Required Description
connection_id string yes
ad_account_id string yes
image_url string Public https URL — Meta fetches it.
image_data string Base64-encoded bytes, no data: prefix. Max 30 MB decoded.
filename string Default: "image.jpg"
dry_run boolean

write Needs mcp:write on an OAuth or MCP-server token.

Update the daily or lifetime budget on an existing Meta campaign. Status untouched. Provide exactly one of daily_budget or lifetime_budget. Requires marketing.edit.

Argument Type Required Description
connection_id string yes
campaign_id string yes
daily_budget number Min 1
lifetime_budget number Min 1
dry_run boolean

write Needs mcp:write on an OAuth or MCP-server token.

Pause a running Meta campaign. Idempotent. There is no resume tool — bringing a campaign back to ACTIVE is intentionally not exposed to the agent. Requires marketing.edit.

Argument Type Required Description
connection_id string yes
campaign_id string yes
dry_run boolean

read Works with mcp:read.

Read-only — fetch insights (impressions, clicks, spend, CTR, etc) for one Meta campaign. Defaults to last_30d.

Argument Type Required Description
connection_id string yes
campaign_id string yes
date_preset string One of: today, yesterday, this_week_mon_today, last_7d, last_14d, last_28d, last_30d, last_90d, this_month, last_month, this_quarter, maximum, lifetime
time_range object
time_range.since string YYYY-MM-DD
time_range.until string YYYY-MM-DD
fields string[]

write Needs mcp:write on an OAuth or MCP-server token.

Create a Meta custom audience from a list of contacts (email/phone). Contacts are hashed client-side (SHA-256 of normalized lowercase email or E.164 phone) before upload — never send unhashed PII. Two quota ops (create + add users). Requires marketing.edit.

Argument Type Required Description
connection_id string yes
ad_account_id string yes
name string yes
description string
contacts object[] yes Min items 1
contacts[].email string
contacts[].phone string Any format; we normalize to E.164 (Israeli numbers auto-prefixed with 972).
customer_file_source string One of: USER_PROVIDED_ONLY, PARTNER_PROVIDED_ONLY, BOTH_USER_AND_PARTNER_PROVIDED · Default: "USER_PROVIDED_ONLY"
dry_run boolean

write Needs mcp:write on an OAuth or MCP-server token.

Create a Meta lookalike audience from an existing custom audience. Default country IL, default ratio 0.05 (5% of country pop). One quota op. Requires marketing.edit.

Argument Type Required Description
connection_id string yes
ad_account_id string yes
name string yes
source_audience_id string yes Existing custom audience id from nc_meta_create_custom_audience.
country string ISO-2 country code. Default ‘IL’.
ratio number Default: 0.05 · Min 0.01 · Max 0.2
description string
dry_run boolean

write Needs mcp:write on an OAuth or MCP-server token.

Upload a video to a Meta ad account via URL-based ingestion. v0 supports file_url only (chunked upload deferred). Returns { video_id } usable in nc_meta_create_video_ad. Requires marketing.edit.

Argument Type Required Description
connection_id string yes
ad_account_id string yes
file_url string yes Public https URL to the video file (≤4 GB, MP4/MOV, ≤240s).
title string
description string
dry_run boolean

write Needs mcp:write on an OAuth or MCP-server token.

Create a single-video Meta ad under an existing ad set. Forced PAUSED. Same shape as nc_meta_create_ad but with video_data instead of link_data. Requires marketing.edit.

Argument Type Required Description
connection_id string yes
ad_account_id string yes
ad_set_id string yes
name string yes Max length 400
creative object yes
creative.video_id string yes From nc_meta_upload_video.
creative.page_id string yes
creative.message string Max length 125
creative.link string https Destination URL.
creative.image_url string Optional video thumbnail.
creative.headline string Max length 40
creative.call_to_action_type string One of: LEARN_MORE, SHOP_NOW, SIGN_UP, BOOK_TRAVEL, DOWNLOAD, GET_QUOTE, CONTACT_US, APPLY_NOW, WATCH_MORE
dry_run boolean

write Needs mcp:write on an OAuth or MCP-server token.

Create a Meta carousel ad with 2-10 cards under an existing ad set. Each card has its own image/video, link, headline, description, and CTA. Forced PAUSED. Requires marketing.edit.

Argument Type Required Description
connection_id string yes
ad_account_id string yes
ad_set_id string yes
name string yes Max length 400
creative object yes
creative.page_id string yes
creative.message string Primary text shown above the carousel. · Max length 125
creative.child_attachments object[] yes Min items 2 · Max items 10
creative.child_attachments[].image_hash string From nc_meta_upload_image.
creative.child_attachments[].video_id string From nc_meta_upload_video. Mutually exclusive with image_hash.
creative.child_attachments[].link string yes https destination for this card.
creative.child_attachments[].name string Card headline.
creative.child_attachments[].description string Card sub-text.
creative.child_attachments[].call_to_action_type string One of: LEARN_MORE, SHOP_NOW, SIGN_UP, BOOK_TRAVEL, DOWNLOAD, GET_QUOTE, CONTACT_US, APPLY_NOW
dry_run boolean

read Works with mcp:read.

Render a preview of a Meta ad in a given ad format. Pass creative object OR creative_id (one required). Returns iframe HTML body strings. Read-only.

Argument Type Required Description
connection_id string yes
ad_account_id string yes
creative object Inline creative object (object_story_spec etc).
creative_id string Existing creative id (mutually exclusive with creative).
ad_format string One of: DESKTOP_FEED_STANDARD, MOBILE_FEED_STANDARD, INSTAGRAM_STANDARD, INSTAGRAM_STORY, INSTAGRAM_REELS, AUDIENCE_NETWORK_OUTSTREAM_VIDEO, MESSENGER_MOBILE_INBOX_MEDIA · Default: "MOBILE_FEED_STANDARD"

read Works with mcp:read.

Search Meta targeting options (interests, geos, employers, positions, schools, locales). Audience-research tool for the agent before creating ad sets.

Argument Type Required Description
connection_id string yes
ad_account_id string yes
q string yes Search query, e.g. “Israeli tech entrepreneurs” or “yoga”.
type string One of: adinterest, adgeolocation, adworkemployer, adworkposition, adeducationschool, adeducationmajor, adlocale · Default: "adinterest"
limit integer Default: 25 · Min 1 · Max 100

read Works with mcp:read.

List Meta Instant Forms for ONE ad account. Resolves that account’s promote_pages, then GET /{page_id}/leadgen_forms — never dumps every Page on the personal OAuth login. Pass ad_account_id (or rely on the single active marketing_ad_accounts row). Optional page_id filters within those promote pages.

Argument Type Required Description
connection_id string yes
ad_account_id string Meta ad account numeric id (no act_ prefix). Scopes forms to that account’s promote_pages. Required when the connection has multiple active ad accounts.
page_id string Optional Facebook Page id — must be in the ad account’s promote_pages.
limit integer Default: 50 · Min 1 · Max 200

read Works with mcp:read.

Pull leads from an existing Meta lead form. Complements the push-based meta-leadgen-webhook for backfills and for accounts that cannot configure webhooks.

Argument Type Required Description
connection_id string yes
form_id string yes Meta lead form id (from nc_meta_list_lead_forms).
limit integer Default: 100 · Min 1 · Max 500
since string Unix timestamp or ISO8601.
until string Unix timestamp or ISO8601.

read Works with mcp:read.

Composite pixel diagnostic: pixel details + event stats + server-side (CAPI) traffic. Returns aggregated event_count, events_by_type, and recommendations[] (e.g. “capi_not_configured_enable_server_side_tracking”).

Argument Type Required Description
connection_id string yes
pixel_id string yes
days integer Default: 7 · Min 1 · Max 90

read Works with mcp:read.

Search Meta’s public Ads Library for active competitor ads. Default country: Israel. Returns ad creative bodies, page names, delivery dates, publisher platforms.

Argument Type Required Description
connection_id string yes
search_terms string yes
countries string[] ISO-2 codes. Default [“IL”].
ad_active_status string One of: ALL, ACTIVE, INACTIVE · Default: "ACTIVE"
limit integer Default: 25 · Min 1 · Max 100

write Needs mcp:write on an OAuth or MCP-server token.

Copy a Meta campaign (and optionally its ad sets and ads). The copy is always created in PAUSED state. Returns new_campaign_id. Requires marketing.edit.

Argument Type Required Description
connection_id string yes
campaign_id string yes Meta campaign id to copy.
name_suffix string Suffix appended to the new campaign name. · Default: " (copy)"
include_ad_sets boolean When true, copies all child ad sets (deep_copy). · Default: false
include_ads boolean When true, copies all child ads (deep_copy). Implies include_ad_sets. · Default: false
dry_run boolean

write Needs mcp:write on an OAuth or MCP-server token.

Rename a Meta campaign. Requires marketing.edit.

Argument Type Required Description
connection_id string yes
campaign_id string yes
new_name string yes Max length 400
dry_run boolean

write Needs mcp:write on an OAuth or MCP-server token.

Update the bid strategy (and optional bid cap or ROAS floor) on a Meta campaign. Requires marketing.edit.

Argument Type Required Description
connection_id string yes
campaign_id string yes
bid_strategy string yes One of: LOWEST_COST_WITHOUT_CAP, LOWEST_COST_WITH_BID_CAP, COST_CAP, MINIMUM_ROAS
bid_amount number Bid cap in account-currency minor units. Required for LOWEST_COST_WITH_BID_CAP / COST_CAP. · Min 1
roas_average_floor number Target ROAS floor (e.g. 1.5 = 150%). Required for MINIMUM_ROAS. · Min 0.01
dry_run boolean

read Works with mcp:read.

List Meta campaigns on an ad account. Filters: status, date range, limit. Read-only.

Argument Type Required Description
connection_id string yes
ad_account_id string yes Meta ad account numeric id, no act_ prefix.
status string Filter by campaign status. · One of: ACTIVE, PAUSED, DELETED, ARCHIVED
since string YYYY-MM-DD start of date range filter.
until string YYYY-MM-DD end of date range filter.
limit integer Default: 50 · Min 1 · Max 200

read Works with mcp:read.

Fetch all settings for a single Meta campaign (objective, budgets, bid strategy, schedule, special_ad_categories, etc). Read-only.

Argument Type Required Description
connection_id string yes
campaign_id string yes

write Needs mcp:write on an OAuth or MCP-server token.

Copy a Meta ad set. The copy is always created in PAUSED state. Returns new_ad_set_id. Requires marketing.edit.

Argument Type Required Description
connection_id string yes
ad_set_id string yes
name_suffix string Default: " (copy)"
dry_run boolean

write Needs mcp:write on an OAuth or MCP-server token.

Update the bid cap (bid_amount) or ROAS floor (min_roas) on a Meta ad set. Pass exactly one. Requires marketing.edit.

Argument Type Required Description
connection_id string yes
ad_set_id string yes
bid_amount number Bid cap in account-currency minor units. · Min 1
min_roas number ROAS floor (roas_average_floor), e.g. 1.5. · Min 0.01
dry_run boolean

write Needs mcp:write on an OAuth or MCP-server token.

Update the start_time or end_time on a Meta ad set. Provide at least one. ISO 8601 or Unix timestamp accepted. Requires marketing.edit.

Argument Type Required Description
connection_id string yes
ad_set_id string yes
start_time string ISO 8601 or Unix timestamp.
end_time string ISO 8601 or Unix timestamp.
dry_run boolean

write Needs mcp:write on an OAuth or MCP-server token.

Set placement targeting on an ad set. mode=automatic restores all placements. mode=manual + placements[] specifies exact positions (format: platform.position, e.g. “facebook.feed”, “instagram.stream”, “audience_network.classic”). Requires marketing.edit.

Argument Type Required Description
connection_id string yes
ad_set_id string yes
mode string One of: automatic, manual · Default: "automatic"
placements string[] Required when mode=manual. e.g. [“facebook.feed”,“instagram.stream”]
dry_run boolean

write Needs mcp:write on an OAuth or MCP-server token.

Replace geo targeting (include) or excluded locations (exclude) on an ad set. location items: { type: “country”|“city”|“region”|“zip”, key: string }. Requires marketing.edit.

Argument Type Required Description
connection_id string yes
ad_set_id string yes
locations object[] yes Min items 1
locations[].type string One of: country, city, region, zip · Default: "country"
locations[].key string yes Meta targeting key, e.g. “IL” for Israel.
action string One of: include, exclude · Default: "include"
dry_run boolean

write Needs mcp:write on an OAuth or MCP-server token.

Update language targeting (locales) on a Meta ad set. locale_ids: Meta integer locale ids (e.g. 6=English, 28=Hebrew). Requires marketing.edit.

Argument Type Required Description
connection_id string yes
ad_set_id string yes
locale_ids integer[] yes Meta locale integer ids. 6=English, 28=Hebrew. · Min items 1
dry_run boolean

write Needs mcp:write on an OAuth or MCP-server token.

Replace audience targeting (custom audiences, interests, behaviors, demographics) on a Meta ad set. Each field provided replaces the current value. Requires marketing.edit.

Argument Type Required Description
connection_id string yes
ad_set_id string yes
custom_audiences object[]
custom_audiences[].id string yes
interests object[]
interests[].id string yes
behaviors object[]
behaviors[].id string yes
demographics object
demographics.age_min integer Min 13 · Max 65
demographics.age_max integer Min 13 · Max 65
demographics.genders integer[] 1=male, 2=female · Items: 1, 2
demographics.relationship_statuses integer[]
demographics.life_events object[]
demographics.life_events[].id string yes
dry_run boolean

write Needs mcp:write on an OAuth or MCP-server token.

Low-level escape hatch: POST /{ad_set_id} with arbitrary Graph API params. Use only for fields not covered by dedicated tools. Status changes are blocked — use nc_meta_pause_campaign instead. Requires marketing.edit.

Argument Type Required Description
connection_id string yes
ad_set_id string yes
params object yes Raw Graph API params to POST. status field is rejected.
dry_run boolean

write Needs mcp:write on an OAuth or MCP-server token.

Rename a Meta ad set. Requires marketing.edit.

Argument Type Required Description
connection_id string yes
ad_set_id string yes
new_name string yes Max length 400
dry_run boolean

read Works with mcp:read.

List Meta ad sets on an ad account. Optionally filter by campaign_id and status. Read-only.

Argument Type Required Description
connection_id string yes
ad_account_id string yes
campaign_id string Optional — limit to ad sets under one campaign.
status string One of: ACTIVE, PAUSED, DELETED, ARCHIVED
limit integer Default: 50 · Min 1 · Max 200

read Works with mcp:read.

Fetch all settings for a single Meta ad set (targeting, budget, schedule, bid, etc). Read-only.

Argument Type Required Description
connection_id string yes
ad_set_id string yes

write Needs mcp:write on an OAuth or MCP-server token.

Copy a Meta ad. The copy is always created in PAUSED state. Returns new_ad_id. Requires marketing.edit.

Argument Type Required Description
connection_id string yes
ad_id string yes
name_suffix string Default: " (copy)"
dry_run boolean

write Needs mcp:write on an OAuth or MCP-server token.

Create a Dynamic Product Ads (DPA / Catalog) ad using a product set. Always PAUSED on create. Requires marketing.edit.

Argument Type Required Description
connection_id string yes
ad_account_id string yes
ad_set_id string yes
name string yes Max length 400
product_set_id string yes Meta product set id from a catalog.
page_id string yes Facebook Page id for the ad.
message string Primary text shown above the catalog. · Max length 125
link string Destination URL template (https).
dry_run boolean

write Needs mcp:write on an OAuth or MCP-server token.

Create a flexible (multi-asset / Advantage+ creative) Meta ad with multiple image/video/text variations. Meta picks the best combination per impression. Always PAUSED on create. Requires marketing.edit.

Argument Type Required Description
connection_id string yes
ad_account_id string yes
ad_set_id string yes
name string yes Max length 400
page_id string yes
image_hashes string[] Image hashes from nc_meta_upload_image.
video_ids string[] Video ids from nc_meta_upload_video.
bodies string[] Primary text variations.
titles string[] Headline variations.
descriptions string[] Description variations.
link string Destination URL (https).
cta_types string[] CTA type variations, e.g. [“LEARN_MORE”,“SIGN_UP”].
dry_run boolean

write Needs mcp:write on an OAuth or MCP-server token.

Turn an existing organic Facebook post or Instagram media into a Meta ad. Provide either fb_post_id (format: {page_id}_{post_id}) or ig_media_id. Always PAUSED on create. Requires marketing.edit.

Argument Type Required Description
connection_id string yes
ad_account_id string yes
ad_set_id string yes
name string yes Max length 400
fb_post_id string Facebook Page post id: {page_id}_{post_id}. Mutually exclusive with ig_media_id.
ig_media_id string Instagram media id. Mutually exclusive with fb_post_id.
dry_run boolean

write Needs mcp:write on an OAuth or MCP-server token.

Create a Meta ad referencing an existing saved ad creative by creative_id. Always PAUSED on create. Requires marketing.edit.

Argument Type Required Description
connection_id string yes
ad_account_id string yes
ad_set_id string yes
name string yes Max length 400
creative_id string yes Existing Meta ad creative id.
dry_run boolean

read Works with mcp:read.

List Meta ads on an ad account. Optionally filter by ad_set_id, campaign_id, or status. Read-only.

Argument Type Required Description
connection_id string yes
ad_account_id string yes
ad_set_id string Optional — restrict to one ad set.
campaign_id string Optional — restrict to one campaign.
status string One of: ACTIVE, PAUSED, DELETED, ARCHIVED
limit integer Default: 50 · Min 1 · Max 200

write Needs mcp:write on an OAuth or MCP-server token.

Rename a Meta ad. Requires marketing.edit.

Argument Type Required Description
connection_id string yes
ad_id string yes
new_name string yes Max length 400
dry_run boolean

read Works with mcp:read.

Fetch the creative spec for a Meta ad or standalone creative. Pass ad_id (resolves attached creative) OR creative_id. Read-only.

Argument Type Required Description
connection_id string yes
ad_id string Meta ad id — resolves its attached creative. Mutually exclusive with creative_id.
creative_id string Existing creative id. Mutually exclusive with ad_id.

write Needs mcp:write on an OAuth or MCP-server token.

Swap the creative on a Meta ad for an existing creative by creative_id. Requires marketing.edit.

Argument Type Required Description
connection_id string yes
ad_id string yes
new_creative_id string yes Creative id to attach to the ad.
dry_run boolean

read Works with mcp:read.

List all Meta pixels on an ad account. Returns id, name, code, last_fired_time, is_unavailable. Read-only.

Argument Type Required Description
connection_id string yes
ad_account_id string yes
limit integer Default: 25 · Min 1 · Max 100

read Works with mcp:read.

Get detailed info for a single Meta pixel (code snippet, last_fired_time, owner, automatic_matching settings). Read-only.

Argument Type Required Description
connection_id string yes
pixel_id string yes

read Works with mcp:read.

Get event statistics for a Meta pixel. Returns total event counts grouped by event type or other aggregation. Read-only.

Argument Type Required Description
connection_id string yes
pixel_id string yes
aggregation string Meta stats aggregation: event | device_type | browser_type | hour. · Default: "event"
days integer Default: 7 · Min 1 · Max 90

read Works with mcp:read.

Check Conversions API (CAPI / server-side) health for a pixel. Returns health status, event counts, and a recommendations[] list. Use this before and after configuring CAPI to confirm events are flowing. Read-only.

Argument Type Required Description
connection_id string yes
pixel_id string yes
days integer Default: 7 · Min 1 · Max 90

read Works with mcp:read.

List custom conversion definitions on a Meta ad account (rule-based conversions, pixel event filters, etc). Read-only.

Argument Type Required Description
connection_id string yes
ad_account_id string yes
limit integer Default: 50 · Min 1 · Max 200