meta_ads_ get_ ad_ accountRead the connected ad account node (status, currency, spend, capabilities).
Break spend down by campaign, pause the ad sets missing their target, build a lookalike audience, and preview a creative before it exists — without opening Ads Manager.
PopMCPMeta Ads
Every read and write call PopMCP exposes on Meta's Marketing API, plus the webhook and change-detection triggers it can watch on your account.
meta_ads_ get_ ad_ accountRead the connected ad account node (status, currency, spend, capabilities).
meta_ads_ add_ custom_ audience_ usersAdd hashed customer records to a customer-list audience.
meta_ads_ create_ custom_ audienceCreate a custom audience (customer list, website/engagement rule, or lookalike).
meta_ads_ get_ custom_ audienceRead a custom audience node by id.
meta_ads_ list_ custom_ audiencesList custom audiences (customer lists, website, engagement, lookalikes) in the account.
meta_ads_ list_ saved_ audiencesSaved (reusable targeting) audiences in the account.
meta_ads_ create_ campaignCreate a campaign.
meta_ads_ get_ campaignRead a campaign node by id.
meta_ads_ list_ campaignsList campaigns in the connected account.
meta_ads_ update_ campaignUpdate a campaign (rename, pause/resume, budgets, bid strategy).
meta_ads_ create_ adsetCreate an ad set (targeting, budget, schedule, optimization).
meta_ads_ get_ adsetRead an ad set node by id.
meta_ads_ get_ adset_ delivery_ estimateEstimated audience size + daily results for this ad set's current setup.
meta_ads_ list_ adsetsList ad sets in the connected account.
meta_ads_ update_ adsetUpdate an ad set (pause/resume, budget, bid, targeting, schedule).
meta_ads_ create_ adCreate an ad from an existing creative inside an ad set.
meta_ads_ get_ adRead an ad node by id.
meta_ads_ get_ ad_ previewsGenerate preview iframes for an existing ad.
meta_ads_ list_ ad_ leadsLeads submitted through a lead ad.
meta_ads_ list_ adsList ads in the connected account.
meta_ads_ list_ pixelsList Meta Pixels (datasets) on the connected account.
meta_ads_ send_ pixel_ eventsConversions API: send server-side events (web, offline/in-store, CRM) to a pixel/dataset.
meta_ads_ update_ adUpdate an ad (pause/resume, rename, swap creative).
meta_ads_ create_ ad_ creativeCreate an ad creative (link/image/video/carousel or dynamic asset feed).
meta_ads_ generate_ previewsPreview a creative SPEC before creating anything.
meta_ads_ get_ ad_ creativeRead an ad creative node by id.
meta_ads_ get_ delivery_ estimateEstimated audience size + daily outcomes for a prospective targeting spec.
meta_ads_ list_ ad_ creativesList ad creatives in the connected account.
meta_ads_ list_ ad_ imagesImages in the account's media library.
meta_ads_ search_ targetingSearch targeting options: interests, behaviors, locations, schools, employers, locales.
meta_ads_ upload_ ad_ imageUpload an image.
meta_ads_ validate_ targetingValidate targeting ids/keywords before using them in an ad set.
meta_ads_ create_ insights_ reportStart an ASYNC insights report run (for big queries that time out synchronously).
meta_ads_ get_ account_ insightsPerformance metrics for the account (roll up or break down via level/breakdowns).
meta_ads_ get_ ad_ insightsPerformance metrics for one ad.
meta_ads_ get_ adset_ insightsPerformance metrics for one ad set.
meta_ads_ get_ campaign_ insightsPerformance metrics for one campaign.
meta_ads_ get_ insights_ report_ resultsFetch the rows of a completed async report run.
meta_ads_ get_ insights_ report_ statusPoll an async report run.
meta_ads_ list_ form_ leadsLeads submitted to one form (across all ads using it).
meta_ads_ list_ page_ leadgen_ formsLead forms on a Page.
meta_ads_ attach_ external_ event_ sourcesConnect pixels/apps to this catalog (enables dynamic-ads retargeting).
meta_ads_ check_ batch_ request_ statusStatus + per-item errors of an items_batch upload.
meta_ads_ create_ catalog_ productAdd a single product to a catalog.
meta_ads_ create_ product_ catalogCreate a product catalog under a business.
meta_ads_ create_ product_ groupCreate a product group (set of variants of one product).
meta_ads_ create_ product_ setCreate a product set from a filter rule.
meta_ads_ delete_ product_ catalogDelete a product catalog.
meta_ads_ delete_ product_ groupDelete a product group.
meta_ads_ delete_ product_ itemDelete one catalog product.
meta_ads_ delete_ product_ setDelete a product set (must not be used by live dynamic ads).
meta_ads_ get_ catalog_ diagnosticsCatalog issue diagnostics (data quality problems and affected items).
meta_ads_ get_ catalog_ event_ statsPixel/app event-to-catalog match statistics (how well events match products).
meta_ads_ get_ product_ catalogRead a product catalog node by id.
meta_ads_ get_ product_ groupRead a product group node by id.
meta_ads_ get_ product_ itemRead one catalog product by its product item id.
meta_ads_ get_ product_ setRead a product set node by id.
meta_ads_ list_ catalog_ productsProducts in a catalog.
meta_ads_ list_ client_ product_ catalogsCatalogs shared with this business by clients.
meta_ads_ list_ external_ event_ sourcesPixels/apps connected to this catalog as event sources.
meta_ads_ list_ owned_ product_ catalogsProduct catalogs owned by a business.
meta_ads_ list_ product_ group_ productsProducts (variants) inside a product group.
meta_ads_ list_ product_ groupsProduct groups (variant clusters) in a catalog.
meta_ads_ list_ product_ setsProduct sets (filtered slices of a catalog used by dynamic ads).
meta_ads_ send_ items_ batchBulk create/update/delete catalog items (up to 5000 requests per call).
meta_ads_ send_ localized_ items_ batchBulk upsert language/country overrides for catalog items.
meta_ads_ update_ product_ catalogUpdate a product catalog (rename, default image).
meta_ads_ update_ product_ groupUpdate a product group's variant definition.
meta_ads_ update_ product_ itemUpdate one catalog product.
meta_ads_ update_ product_ setUpdate a product set (rename, change filter).
meta_ads_ get_ ads_ volumeRunning/total ad volume against the account's ad limits.
meta_ads_ get_ max_ bidMaximum bid amount allowed on this account.
meta_ads_ get_ trackingAccount-level tracking specs applied to ads by default.
meta_ads_ list_ account_ activitiesChange-history log for the account (who changed what, when).
meta_ads_ list_ account_ ad_ studiesLift/split studies that touch this ad account.
meta_ads_ list_ account_ instagram_ accountsInstagram accounts usable by this ad account.
meta_ads_ list_ account_ recommendationsDelivery/setup recommendations Meta surfaces for this account.
meta_ads_ list_ advertisable_ applicationsApps this account can promote (for app-install/app-event campaigns).
meta_ads_ list_ agenciesAgencies (partner businesses) with access to this ad account.
meta_ads_ list_ applicationsApps connected to this ad account.
meta_ads_ list_ assigned_ usersUsers assigned to this ad account with their tasks (roles).
meta_ads_ list_ connected_ instagram_ accountsInstagram accounts connected to this ad account (via linked Pages/business).
meta_ads_ list_ minimum_ budgetsMinimum daily budget thresholds per bid strategy/currency for this account.
meta_ads_ list_ promote_ pagesFacebook Pages this ad account can promote.
meta_ads_ list_ subscribed_ appsApps subscribed to this ad account's updates.
meta_ads_ search_ app_ storeSearch app stores for promotable apps (app ads).
meta_ads_ update_ ad_ accountUpdate ad account settings (name, spend cap, notification settings).
meta_ads_ create_ business_ ad_ accountCreate a NEW ad account under a business.
meta_ads_ create_ business_ datasetCreate a dataset for CRM/offline events.
meta_ads_ create_ event_ source_ groupCreate an event source group.
meta_ads_ create_ product_ audienceCreate a dynamic-ads product audience (viewed/added-to-cart retargeting).
meta_ads_ delete_ custom_ audienceDelete a custom audience (must not be in use by active ad sets).
meta_ads_ get_ businessRead a business node by id.
meta_ads_ get_ custom_ audience_ healthMatch-rate / health metrics for a customer-list audience.
meta_ads_ get_ saved_ audienceRead a saved audience node by id.
meta_ads_ get_ token_ identityIdentity of the connected token (which system user / user it is).
meta_ads_ list_ audience_ adsAds currently using this audience.
meta_ads_ list_ audience_ sessionsUpload sessions for a customer-list audience (progress + match results).
meta_ads_ list_ audience_ shared_ accountsAd accounts this audience is shared with.
meta_ads_ list_ business_ datasetsDatasets (modern pixel/offline/CRM event containers) owned by a business.
meta_ads_ list_ business_ instagram_ accountsInstagram accounts connected to a business.
meta_ads_ list_ business_ invoicesInvoices for businesses on invoiced billing.
meta_ads_ list_ business_ pixelsPixels owned by a business.
meta_ads_ list_ business_ usersPeople in the business with their roles.
meta_ads_ list_ client_ ad_ accountsClient ad accounts shared with this business (agency view).
meta_ads_ list_ client_ pagesClient pages shared with this business (agency view).
meta_ads_ list_ event_ source_ groupsEvent source groups (bundled pixels/apps) in a business.
meta_ads_ list_ my_ businessesBusiness portfolios the token can access (source of {businessId} for catalog/business ops).
meta_ads_ list_ owned_ ad_ accountsAd accounts owned by a business.
meta_ads_ list_ owned_ pagesPages owned by a business.
meta_ads_ list_ system_ usersSystem users in the business.
meta_ads_ remove_ custom_ audience_ usersRemove hashed customer records from a customer-list audience.
meta_ads_ replace_ custom_ audience_ usersAtomically replace ALL members of a customer-list audience with a new upload.
meta_ads_ share_ custom_ audienceShare this audience with other ad accounts (within the business relationship).
meta_ads_ unshare_ custom_ audienceRevoke this audience from ad accounts it was shared with.
meta_ads_ update_ custom_ audienceUpdate a custom audience (name, description, rule).
meta_ads_ bulk_ delete_ campaignsBulk-delete campaigns by strategy (oldest / archived-before-date).
meta_ads_ copy_ campaignDuplicate a campaign (optionally deep-copying its ad sets and ads).
meta_ads_ create_ budget_ scheduleSchedule a temporary budget increase for a high-demand period.
meta_ads_ delete_ campaignDelete a campaign (and its ad sets/ads).
meta_ads_ list_ budget_ schedulesHigh-demand budget schedule periods on a campaign or ad set.
meta_ads_ list_ campaign_ adsAds under a campaign.
meta_ads_ list_ campaign_ adsetsAd sets under a campaign.
meta_ads_ list_ campaign_ copiesCopies made of this campaign.
meta_ads_ copy_ adsetDuplicate an ad set (optionally into another campaign, with its ads).
meta_ads_ delete_ adsetDelete an ad set (and its ads).
meta_ads_ get_ adset_ targeting_ sentence_ linesHuman-readable summary of the ad set's targeting.
meta_ads_ list_ adset_ activitiesChange-history log for one ad set.
meta_ads_ list_ adset_ adsAds under an ad set.
meta_ads_ list_ adset_ copiesCopies made of this ad set.
meta_ads_ copy_ adDuplicate an ad (optionally into another ad set).
meta_ads_ create_ feed_ ruleAdd a transform rule to a feed (remap/normalize columns at ingestion).
meta_ads_ create_ feed_ uploadTrigger an immediate fetch of the feed file from a URL.
meta_ads_ create_ pixelCreate a Meta Pixel on the connected account.
meta_ads_ create_ product_ feedCreate a product feed (scheduled fetch of a CSV/TSV/XML file).
meta_ads_ delete_ adDelete an ad.
meta_ads_ delete_ product_ feedDelete a product feed.
meta_ads_ get_ ad_ targeting_ sentence_ linesHuman-readable summary of the targeting reaching this ad.
meta_ads_ get_ pixelRead a pixel node by id.
meta_ads_ get_ pixel_ da_ checksDynamic-ads setup checks for a pixel (event coverage, catalog match).
meta_ads_ get_ pixel_ statsPixel fire statistics (events received over time).
meta_ads_ get_ product_ feedRead a product feed node by id.
meta_ads_ list_ ad_ copiesCopies made of this ad.
meta_ads_ list_ feed_ rulesTransform rules applied to a feed during ingestion.
meta_ads_ list_ feed_ upload_ errorsErrors/warnings from one feed upload.
meta_ads_ list_ feed_ uploadsUpload history for a feed.
meta_ads_ list_ pixel_ shared_ accountsAd accounts this pixel is shared with.
meta_ads_ list_ pixel_ shared_ agenciesAgencies (partner businesses) this pixel is shared with.
meta_ads_ list_ product_ feedsScheduled product feeds of a catalog.
meta_ads_ share_ pixel_ with_ accountShare this pixel with another ad account in the business.
meta_ads_ update_ pixelUpdate a pixel (rename, data use setting).
meta_ads_ update_ product_ feedUpdate a product feed (name, schedule).
meta_ads_ browse_ targetingBrowse the targeting category tree (demographics/interests/behaviors hierarchy).
meta_ads_ create_ ad_ ruleCreate an automated rule (pause/notify/adjust budget when conditions hit).
meta_ads_ delete_ ad_ creativeDelete an ad creative (must not be in use by an active ad).
meta_ads_ delete_ ad_ imageDelete an image from the library by hash.
meta_ads_ delete_ ad_ ruleDelete an automated rule.
meta_ads_ delete_ videoDelete a video.
meta_ads_ execute_ ad_ ruleRun a rule immediately (instead of waiting for its schedule).
meta_ads_ get_ ad_ ruleRead an automated rule by id.
meta_ads_ get_ creative_ previewsGenerate preview iframes for a creative.
meta_ads_ get_ reach_ estimateQuick audience-size bounds for a targeting spec.
meta_ads_ get_ targeting_ suggestionsSuggest related targeting options from a seed list.
meta_ads_ get_ videoRead a video node (processing status, thumbnails).
meta_ads_ list_ ad_ rule_ historyPast executions of a rule and what they changed.
meta_ads_ list_ ad_ rulesAutomated rules in the account.
meta_ads_ list_ ad_ videosVideos in the account's media library.
meta_ads_ list_ adrules_ governedRules governing one campaign/ad set/ad.
meta_ads_ list_ creatives_ by_ labelsCreatives carrying the given ad labels.
meta_ads_ list_ video_ thumbnailsThumbnails of a video.
meta_ads_ preview_ targeting_ sentence_ linesHuman-readable description of an arbitrary targeting spec (before saving it).
meta_ads_ search_ account_ targetingAccount-context targeting search.
meta_ads_ update_ ad_ creativeUpdate a creative's mutable fields.
meta_ads_ update_ ad_ ruleUpdate an automated rule.
meta_ads_ upload_ ad_ videoUpload a video from a URL.
meta_ads_ create_ ad_ labelCreate an ad label.
meta_ads_ create_ async_ ad_ creativeCreate an ad creative asynchronously.
meta_ads_ create_ async_ ad_ request_ setCreate many ads asynchronously in one batch.
meta_ads_ create_ async_ batch_ requestRun a batch of ad-object writes asynchronously.
meta_ads_ create_ leadgen_ formCreate a lead form on a Page.
meta_ads_ delete_ ad_ labelDelete an ad label.
meta_ads_ delete_ leadDelete one lead (e.g.
meta_ads_ get_ async_ ad_ request_ setStatus of one async ad-creation batch.
meta_ads_ get_ leadRead one lead by id.
meta_ads_ get_ leadgen_ formRead a lead form node by id.
meta_ads_ get_ pageRead a Page node by id.
meta_ads_ get_ page_ backed_ instagram_ accountsPage-backed Instagram account (used when no real IG account is connected).
meta_ads_ list_ ad_ labelsAd labels in the account (organize campaigns/ad sets/ads/creatives).
meta_ads_ list_ ads_ by_ labelsAds carrying the given labels.
meta_ads_ list_ adsets_ by_ labelsAd sets carrying the given labels.
meta_ads_ list_ async_ ad_ request_ setsAsync ad-creation batches on the account.
meta_ads_ list_ async_ ad_ requestsIndividual requests inside an async batch (per-ad status + errors).
meta_ads_ list_ async_ requestsStatus of the account's async requests.
meta_ads_ list_ campaigns_ by_ labelsCampaigns carrying the given labels.
meta_ads_ list_ my_ pagesPages the token can act on.
meta_ads_ list_ page_ ads_ postsAd posts of a Page (posts created for/by ads).
meta_ads_ list_ page_ postsPosts on a Page.
meta_ads_ list_ page_ subscribed_ appsApps subscribed to this Page's webhooks (e.g.
meta_ads_ subscribe_ page_ appSubscribe the app to Page webhook fields.
meta_ads_ update_ ad_ labelRename an ad label.
meta_ads_ update_ leadgen_ formUpdate a lead form's status.
meta_ads_ create_ ad_ studyCreate an A/B (split) test or conversion-lift study.
meta_ads_ create_ custom_ conversionCreate a custom conversion from pixel events + URL/parameter rules.
meta_ads_ delete_ ad_ studyDelete an ad study.
meta_ads_ delete_ custom_ conversionDelete a custom conversion.
meta_ads_ get_ ad_ studyRead an ad study by id.
meta_ads_ get_ custom_ conversionRead a custom conversion node by id.
meta_ads_ get_ custom_ conversion_ statsFire statistics for a custom conversion.
meta_ads_ list_ ad_ studiesA/B tests + lift studies in a business.
meta_ads_ list_ ad_ study_ cellsCells (test arms) of an ad study.
meta_ads_ list_ custom_ conversionsList custom conversions on the connected account.
meta_ads_ update_ ad_ studyUpdate an ad study.
meta_ads_ update_ custom_ conversionUpdate a custom conversion (name, default value, description).
meta_ads_ create_ publisher_ block_ listCreate a publisher block list (add URLs via its append edge).
meta_ads_ create_ reach_ frequency_ predictionCreate a reach & frequency prediction (quote), or reserve/cancel an existing one.
meta_ads_ get_ instagram_ userRead an Instagram user node.
meta_ads_ get_ reach_ frequency_ predictionRead a reach & frequency prediction by id.
meta_ads_ list_ ig_ authorized_ ad_ accountsAd accounts authorized to advertise with this Instagram account.
meta_ads_ list_ instagram_ mediaMedia on an Instagram account.
meta_ads_ list_ publisher_ block_ listsPublisher block lists on the account (Audience Network / in-stream exclusions).
meta_ads_ list_ reach_ frequency_ predictionsReach & frequency predictions on the account (reserved-buying campaigns).
meta_ads_ set_ brand_ safety_ filterSet the account's inventory filter level (brand safety).
meta_ads_ batch_ requestRun up to 50 Graph API calls in one round trip.
meta_ads_ search_ ads_ archiveSearch the public Ad Library (competitors' running ads).
Credentials off one Meta Ads screen, then an endpoint your client signs into. Nothing to deploy, and nothing to install.
Paste a System User access token generated in your own Business portfolio, plus an App Secret if you want to supply one. Then pick which ad accounts the connection covers and which workspace each one belongs in.
••••••••••••3f7a••••••••••••3f7aRead-only keeps it to reporting. Full access with approval required holds the writes that spend money — budget edits, resuming a paused ad set, publishing a new ad. The full-catalog toggle exposes the rest.
Drop the PopMCP URL into Claude, ChatGPT, Codex or any other supported client. It signs in through PopMCP with OAuth, so your Meta Ads credential never leaves the server.
app.popmcp.com/mcp/…Ask for something harmless before you turn writes on. Once it comes back clean, widen the tool set or switch the connection to full access.
Which campaigns spent over $500 last week and what did each cost per result
meta_ads_get_ad_accountok
Then just ask for the work
“Which campaigns spent over $500 last week and what did each cost per result”
“Pause every ad set in the Q4 Prospecting campaign with cost per result over $40”
“Create a 1% lookalike from our existing customer list audience and target a new ad set at it”
“How many leads did each lead form bring in and what did those ads cost us”
One hosted endpoint, registered once per client. The same tools and the same permissions, whichever window the request comes from.
Add the PopMCP URL under Settings → Connectors and the tools appear in every chat.
The same endpoint, registered in the browser. Nothing to install on the machine you are working from.
Register PopMCP as a custom connector, then let ChatGPT read and update the account.
Wire the endpoint into Codex or the Codex CLI when a task needs live business context, not a fixture.
Register the remote MCP server in OpenCode's config for terminal-first and scripted agent runs.
Add PopMCP as an MCP server in Z.ai's desktop app and work the account from the same window.
FAQ
What teams ask before putting Meta Ads behind an AI client.
Two fields, one of them optional. Paste a System User access token generated in your own Business portfolio, and an App Secret if you want to supply one — the connect form marks that second field optional. Once the token is accepted you choose which ad accounts the connection covers and which workspace each one belongs in.
224 operations across 25 API modules, split 142 read and 82 write. Only 41 load by default so your client's tool list stays workable; the rest are searchable and get pulled in when a request actually needs them. There are also 22 triggers PopMCP can watch on the account.
Both, depending on the access mode you pick. Full access covers create_campaign, create_adset, create_ad_creative and create_ad, plus update_campaign, update_adset and update_ad for renames, pause and resume, budget and bid strategy changes, targeting edits and creative swaps. Before anything goes live it can check ids with validate_targeting and size the audience with get_delivery_estimate. Read-only drops all of that and leaves reporting.
That is what the async report path is for. create_insights_report starts a run, get_insights_report_status polls it, and get_insights_report_results fetches the rows once it finishes — which is how long date ranges and heavy breakdowns get through. Smaller pulls resolve synchronously with get_account_insights, get_campaign_insights, get_adset_insights or get_ad_insights.
Yes. New lead is a webhook trigger that fires the moment someone submits a lead form on a Facebook or Instagram ad, and Lead recorded on a form and Lead form added are change-detection triggers on the same surface. For history rather than live events, list_ad_leads returns the leads from one lead ad and list_form_leads returns everything submitted to a form across every ad using it.
Yes. list_pixels reads the datasets on the account and send_pixel_events posts server-side web, offline and in-store, and CRM events through the Conversions API. Catalogs and Feeds are two of the larger modules here, and there are triggers for a catalog picking up a new diagnostic warning and for a scheduled product feed upload coming back with errors.
No. PopMCP hosts it and gives you a Streamable HTTP MCP URL. There is nothing to deploy, no callback URL to register, and no infrastructure to keep running or patch.
Any client that supports a remote Streamable HTTP MCP server — Claude Desktop, Claude Web, ChatGPT custom connectors, Codex and the Codex CLI, OpenCode and Z.ai's ZCode, as well as editors such as Cursor, Windsurf and Zed. Your client signs in to PopMCP with OAuth; the provider credential never leaves the server.
Loading 224 tool definitions into every conversation burns context before the work starts. PopMCP loads a curated 41-tool set covering the everyday workflows and keeps the rest searchable, so your AI pulls a specialist tool only when a task needs it. You can switch a connection to the full catalog at any time.
A tool is something your AI calls — there are 224 here. A trigger is something PopMCP watches for you: 22 Meta Ads events that can start work on the PopMCP side. Triggers never enter your AI client's context, and none of them ask you to paste a callback URL into Meta Ads.
Launch a hosted MCP endpoint for Meta Ads, keep tool access under control, and start testing real workflow prompts right away.