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