An AI agent for Meta Ads reads your account, finds what to fix and makes the change for you. PaidSync.ai is one: it connects Facebook and Instagram ad accounts on Meta's own sign-in screen, with no API key and nothing to host, so Claude or ChatGPT can read performance and change campaigns, ad sets, ads and audiences in plain language. In the PaidSync.ai workspace, ready-made Ads Agents such as Wasted Spend Hunter run on a schedule and send each change as an approval card. Meta creates run as a dry run by default, and a new campaign starts paused unless you ask for it live. One connection also covers Google Ads, TikTok, LinkedIn and 10 more platforms. PaidSync.ai is free for 15 tasks a month, with no card needed.
An MCP server turns an ad platform's API into typed tools an AI assistant can call. Connect one to Claude or ChatGPT and "pause every ad set with a cost per purchase above $60 this week" becomes something the assistant can check, propose, and, once you approve, run. This page covers PaidSync's Meta surface in full. What the tools do, how writes are checked, what the server deliberately does not do, how it compares with Meta's own ads MCP, and how to connect it to each AI client.
It is written for both halves of that audience. Marketers who want to run Meta Ads from a chat window, and agent builders who want to know exactly what the protocol surface looks like before wiring it into a workflow. Each section is labeled.
Every control, and what is not built yet, is on the security page.
Three things, in practice. It reads, so the assistant can pull spend, results, cost per result, and breakdowns by placement, device, age, gender, country, and time without you exporting from Ads Manager. It writes, so campaigns, ad sets, ads, creatives, audiences, pixels, lead forms, budget schedules, and automated rules can be created or changed from conversation. And it gates, so writes preview as a dry run by default and destructive changes need an explicit confirm.
Reading is table stakes across every Meta Ads MCP available in 2026, including Meta's own. The depth of the write surface, whether the server works on your account today, whether it also sees the rest of your stack, and how honest the gating is are where they differ. Those four points are the spine of this page.
Meta's Marketing API is object-heavy. A single ad is a campaign, an ad set, a creative, and an ad object, each with its own status, budget, and targeting fields. A useful Meta MCP has to model all four layers as tools, not just the campaign layer, or the assistant ends up able to read a problem it cannot fix. PaidSync's set covers all four, plus the objects around them.
Meta runs its own ads MCP server. Meta's developer documentation, checked on 16 October 2026, describes it as "a Meta-hosted Model Context Protocol server that lets you manage Meta ads directly from an AI agent", gives the address https://mcp.facebook.com/ads, and says it "works with any MCP-compatible AI agent". If you only advertise on Meta, start there.
PaidSync.ai fits when Meta is one of several channels. What you can check:
Using Meta's Muse agent? You can connect Google Ads, LinkedIn and TikTok to Meta Muse through PaidSync.ai. Full head-to-head: PaidSync.ai vs Meta's ads MCP.
Using Claude? See how to connect Meta Ads to Claude, step by step.
PaidSync.ai's live server exposes the Meta tools below, by category (server total 630+ across 14 platforms). 46 of them read, 34 write, and 3 handle the connection itself. Five of the writes build from scratch. The table below names every tool by category, so the count is checkable. The same catalog is discoverable live from any session via paidsync_context with the Meta group selected, described in the agent-builder section.
| Category | Tools | Writes | Named tools |
|---|---|---|---|
| Account, Pages, and Instagram | 11 | 1 | connect_facebook_ads, facebook_auth_status, disconnect_facebook_ads, list_fb_ad_accounts, set_fb_ad_account, get_fb_account_info, get_fb_account_controls, update_fb_account_controls, list_fb_pages, list_fb_instagram_accounts, get_fb_billing_transactions |
| Campaigns | 7 | 6 | list_fb_campaigns, create_fb_campaign, update_fb_campaign, pause_fb_campaign, enable_fb_campaign, duplicate_fb_campaign, delete_fb_campaign |
| Ad sets and schedules | 9 | 7 | list_fb_adsets, create_fb_adset, update_fb_adset, pause_fb_adset, enable_fb_adset, duplicate_fb_adset, delete_fb_adset, set_fb_adset_schedule, validate_fb_eu_targeting |
| Ads and creatives | 17 | 10 | list_fb_ads, create_fb_ad, update_fb_ad, pause_fb_ad, enable_fb_ad, duplicate_fb_ad, delete_fb_ad, create_fb_dco_ad, list_fb_creatives, create_fb_creative, upload_fb_ad_image, upload_fb_ad_video, validate_fb_ad_assets, get_fb_ad_preview, get_ad_preview, get_fb_ad_image_permalink, get_fb_creative_hd_thumbnail |
| Audiences and targeting research | 13 | 6 | list_fb_audiences, create_fb_custom_audience, create_fb_lookalike_audience, create_fb_engagement_audience, update_fb_audience, delete_fb_audience, upload_customer_list_to_fb_audience, get_fb_audience_insights, search_fb_interests, search_fb_locations, search_fb_behaviors, search_fb_demographics, get_fb_locale_codes |
| Pixels, conversions, and catalogs | 6 | 1 | list_fb_pixels, configure_fb_pixel, get_fb_pixel_events, list_fb_custom_conversions, list_fb_catalogs, get_fb_catalog |
| Lead forms | 3 | 1 | list_fb_lead_forms, create_fb_lead_form, get_fb_leads |
| Budgets and pacing | 3 | 1 | get_fb_budget_pacing, create_fb_budget_schedule, list_fb_budget_schedules |
| Automated rules | 2 | 1 | create_fb_automated_rule, list_fb_automated_rules |
| Reporting and diagnostics | 12 | 0 | get_fb_performance, get_fb_adset_performance, get_fb_ad_performance, get_fb_performance_by_placement, get_fb_performance_by_device, get_fb_performance_by_age_gender, get_fb_performance_by_country, get_fb_performance_by_time, get_performance_trend, get_delivery_issues, get_fb_account_activity, search_ad_library |
Four groups carry most of the operational weight. Creative production is the one Meta advertisers ask about first. upload_fb_ad_image and upload_fb_ad_video put media into the account, validate_fb_ad_assets checks image accessibility, Page access, the Instagram link, and placement compatibility before anything is published, create_fb_creative assembles single-image, single-video, and carousel creatives, and create_fb_dco_ad builds a dynamic creative ad set where Meta tests every combination of bodies, titles, and images. Audiences go the full distance, from a customer list upload through upload_customer_list_to_fb_audience to a lookalike built on top of it, and the four search tools let the assistant find interest, behaviour, location, and demographic IDs instead of guessing. Pixels and lead forms mean the measurement and the lead capture live in the same session as the campaigns. configure_fb_pixel sets up the pixel, get_fb_pixel_events shows what it is receiving, and create_fb_lead_form builds an instant form that attaches to an ad. Reporting has eight breakdowns and a trend tool, and get_delivery_issues lists every ad and ad set with a delivery problem, with Meta's error code and message, before you go looking.
The five build tools are create_fb_campaign, create_fb_adset, create_fb_ad, create_fb_creative, and create_fb_dco_ad. That is the full campaign object chain, so an assistant can go from "nothing" to a live ad without a single Ads Manager click. It still cannot switch that ad on without you, which is the next section.
One detail worth knowing. create_fb_campaign discloses Meta's own bid strategy default when you set a campaign budget and leave the strategy blank, and it sends that default explicitly so the applied value is visible in the result. Small, but it is the kind of thing a hosted server should do for you and a raw API call does not.
The practical shape of a week on PaidSync's Meta stack looks like three kinds of prompt. A report prompt, a build prompt, and a cleanup prompt. Here is one of each, with the tools that run underneath.
"Show me the last 7 days by campaign, then by placement, and tell me which ad sets are pacing under budget." The assistant calls get_fb_performance for the campaign view, get_fb_performance_by_placement to split Instagram Reels from Facebook Feed, and get_fb_budget_pacing for the ad sets that are behind. Three reads, no confirmation needed, one answer in plain numbers.
"Duplicate the Spring Sale campaign for the UK, point the ad set at a 1% lookalike of last quarter's buyers, and keep everything paused." The assistant proposes duplicate_fb_campaign, then create_fb_lookalike_audience from your existing purchasers audience, then update_fb_adset with the new audience and UK geography. Each write shows up as a preview first, because the Meta create, update, and pause tools default to dry_run true. You approve each one. The campaign lands paused because create_fb_campaign creates campaigns paused unless the request asks for them live.
"Find every ad whose CTR fell by half since launch and pause it." get_fb_ad_performance and get_performance_trend find the candidates, the assistant lists them with the numbers, and pause_fb_ad runs once per ad after you confirm the list. If you want this to run every Monday without asking, create_fb_automated_rule hands the schedule to Meta and the rule shows up in Ads Manager like any other.
Because the same server carries Google Ads (158 tools), LinkedIn (34), TikTok (24), GA4 (26), GTM (39), Search Console (6, read only), and Merchant Center (16), the follow-up "did the Meta budget shift move GA4 purchases, and is Google Shopping now overspending on the same products" is answered in the same session, not in another tab. That cross-platform session is the practical difference between a Meta connector and a paid-media server. For prompt ideas, 15 Meta Ads prompts for Claude is a working list, and the Meta Ads audit guide shows the deeper account-review workflow.
Trust is the honest concern with write access, and the answer is procedural, not promissory. Previews show the exact planned change first. Destructive operations need a second, explicit step. Over MCP, PaidSync writes no card, so the human check is your assistant's own confirmation prompt. In the PaidSync workspace every write is an approval card by default, and an applied card offers Undo when the change has a safe inverse, so a change you regret on Thursday can often be undone. On both paths an applied change is logged, on a best-effort basis, with a 7-day before and after. If you would rather have a specialist watch the account for you, the workspace ships a Creative Fatigue Watcher, a Budget Pacer, a ROAS Guardian, and a Wasted Spend Hunter that run on the same gated tools.
Connect a Meta ad account to Claude, ChatGPT, or Gemini CLI and run the first report in minutes.
Start free, 15 tasks, no card Read the category guidePaidSync is one MCP endpoint covering 14 platforms, https://mcp.paidsync.ai/mcp, over Streamable HTTP. Details on the MCP server page. Authentication is OAuth 2.0 with dynamic client registration and PKCE, so a client that speaks the current MCP authorization flow signs in with the PaidSync login and never sees a long-lived token. An API key also works, sent in an Authorization: Bearer or x-api-key header. Never put the key in a URL; query strings end up in logs. Applying a change to Google Ads still requires the OAuth sign-in. On Meta Ads and the other platforms a key can apply changes too, so treat it like a password and prefer OAuth.
To keep client context small, tools/list returns a lean starter set. The full catalog is discovered at runtime through paidsync_context, which returns the active ad account, connected platforms, and the grouped tool catalog, and executed through paidsync_exec. That two-call pattern means an agent can enumerate and invoke every Meta tool without a 630+-tool schema payload sitting in every conversation. Account context is explicit. list_fb_ad_accounts walks the accounts the Meta login can see, set_fb_ad_account binds one, and every Meta call after that carries the bound account, so an agent working across a Business Manager with several ad accounts never guesses which one it is writing to.
The server-side checks run whatever the client. The Meta create, update, and pause tools carry a dry_run argument that defaults to true, so a naive agent that forgets to preview still gets a preview. Destructive operations require confirm_destructive. The approval step itself sits in the client: over MCP, PaidSync writes no card. Sessions can be revoked at any time, and platform tokens are encrypted at rest with AES-256-GCM. Repeatable work can be saved as a workflow with paidsync_workflows_save and run with paidsync_workflows_run; workflows are TypeScript compositions of the same tools, so they carry the same dry-run and confirm checks.
For discovery and verification, the domain publishes OAuth authorization-server and protected-resource metadata (RFC 8414 and RFC 9728), an MCP server card, agent-auth.json, security.txt, and a Content-Signal directive, so an agent can establish what this server is and how to authenticate against it before the first task. The Meta bulk operations reference documents the argument shapes for the write tools.
Stated plainly, because scoping a tool accurately beats overselling it.
create_fb_automated_rule that Meta runs on a schedule. Spreadsheet-style bulk import is not the shape of this tool set.create_fb_creative.list_fb_catalogs and get_fb_catalog show what is there. Catalog sales campaigns and collection creatives are not created by this tool set. Product and feed writes live on the Merchant Center side of the server, for Google.The server URL is the same everywhere, https://mcp.paidsync.ai/mcp, and the transport is Streamable HTTP everywhere. What differs is where each client hides the "add a server" screen. The summaries below are taken from PaidSync's client setup registry, verified in September 2026. Each Meta guide walks the full flow with screenshots.
| Client | Where to add PaidSync | Meta guide |
|---|---|---|
| Claude | In claude.ai or the Claude Desktop app, open Settings, then Connectors, search PaidSync, click Connect, and sign in with your PaidSync login. Connectors work on every Claude plan, including Free, which allows one custom connector. | Meta Ads to Claude |
| Claude Code | In your terminal, run claude mcp add --transport http paidsync https://mcp.paidsync.ai/mcp. Start a session, type /mcp, pick paidsync, and sign in in the browser window that opens. For a team, commit a .mcp.json at the repo root with the same http server entry. Full guide: Meta Ads in Claude Code. | Same steps as Claude |
| ChatGPT | Open Settings, then Security and login, and turn on Developer mode. Go to chatgpt.com/plugins, click the plus button, name the app PaidSync, paste the server URL, choose OAuth, and sign in with your PaidSync login on first use. Developer mode is available on Plus, Pro, Business, Enterprise, and Education plans on the web. | Meta Ads to ChatGPT |
| Gemini CLI | Run gemini mcp add --transport http paidsync https://mcp.paidsync.ai/mcp, then type /mcp auth paidsync and sign in. Gemini Code Assist and Antigravity read an httpUrl entry in ~/.gemini/settings.json. On a personal Google account the Gemini app accepts custom MCP servers under Custom apps for Spark. | Meta Ads to Gemini |
| Copilot Studio | Open your agent, then Tools, Add a tool, New tool, Model Context Protocol. Paste the server URL, choose OAuth 2.0 with Dynamic discovery, transport Streamable HTTP, click Create, then Add to agent, and publish to the Microsoft 365 Copilot channel. Copilot Studio needs a work or school account. The consumer Copilot app does not accept custom MCP servers. | Meta Ads to Microsoft Copilot Studio |
| Perplexity | Open your profile menu, then All settings, then Connectors, then Custom connector. Name it PaidSync, paste the server URL, choose OAuth and Streamable HTTP, save, and sign in when prompted. Custom connectors need a Perplexity Pro, Max, or Enterprise plan. | Meta Ads to Perplexity |
| Cursor | Add a paidsync entry with url set to the server URL in .cursor/mcp.json (or ~/.cursor/mcp.json for every project). Open Cursor Settings, then MCP, and sign in when Cursor prompts for OAuth. Windsurf uses the same shape with serverUrl. | Same steps as Cursor |
Prefer an API key? A client that lets you set a header, such as Claude Code, can send it to the same URL as Authorization: Bearer ps_... or x-api-key. Never put the key in a URL; query strings end up in logs. Applying a change to Google Ads still requires the OAuth sign-in. On Meta Ads and the other platforms a key can apply changes too, so treat it like a password and prefer OAuth. GitHub Copilot in VS Code is a different product from Microsoft 365 Copilot; there, run MCP: Add Server, choose HTTP, paste the same URL, and sign in when prompted.
Every plan includes all 14 platforms and every ad account you connect; there is no per-account or per-platform charge. Every tool call counts as one task, whether it reads a report or drafts a change. A dry-run preview and the live write are two tasks. Full detail at paidsync.ai/pricing.
| Plan | Price | Included |
|---|---|---|
| Free | $0/mo | 15 tasks a month, no card required |
| Pro | From $99/mo | 600 tasks ($99), 1,200 tasks ($149), or 4,000 tasks ($199) |
| Team | From $249/mo | 5 seats, 6,000 shared tasks |
| Done For You | Custom | Fully managed paid media |
Put every Meta Ads tool above and 13 more platforms in front of your AI assistant today.
One setup per client, same endpoint and sign-in everywhere.
An AI agent for Meta Ads is software that reads your ad account, decides what needs fixing and carries the change out, instead of only advising. PaidSync.ai does this through Claude, ChatGPT and Gemini CLI, which can read performance, build campaigns and ad sets, upload creatives, manage audiences and pixels, and change budgets on Facebook and Instagram. Its Ads Agents in the PaidSync.ai workspace read Meta on a schedule, and by default every change waits as an approval card. Full write access runs at https://mcp.paidsync.ai/mcp.
Enough to run Facebook and Instagram end to end: campaigns, ad sets, ads, creatives and audiences, read and changed, inside a server of 630+ tools across 14 platforms. 46 read, 34 write, and 3 handle the connection itself. The set covers campaigns, ad sets and schedules, ads and creatives (image and video upload, carousel and dynamic creative, pre-publish asset validation, previews), custom, lookalike, and engagement audiences with customer list upload, interest, behaviour, location, and demographic search, pixels and custom conversions, catalogs, lead forms, budget schedules and pacing, automated rules, billing transactions, and performance reporting by placement, device, age and gender, country, and time.
It can create, not only advise. Five tools build from scratch: create_fb_campaign, create_fb_adset, create_fb_ad, create_fb_creative, and create_fb_dco_ad. The rest of the 34 write tools act on existing objects, so the assistant can update, pause, enable, duplicate, and delete campaigns, ad sets, and ads, upload media, create audiences, configure a pixel, create lead forms and budget schedules, and create automated rules. The create, update, and pause tools preview by default with dry_run set to true, and over MCP your assistant's own confirmation prompt is the human check before a live write.
Yes. Meta runs its own official ads MCP server, in open beta since 29 April 2026, that reads reports and creates and changes campaigns, ad sets and ads, starting them paused, for Meta only (checked 29 Sep 2026). PaidSync runs Meta next to Google, LinkedIn and 11 other platforms in one chat.
Meta's official ads MCP at mcp.facebook.com/ads went into open beta on April 29, 2026. It is first party, Meta only, and reads and writes. Access is gated per ad account with an is_ads_mcp_enabled flag, and US and higher-spend accounts were enabled first. On July 16, 2026 Meta added developer-app connections and server rules. PaidSync.ai is a third-party Meta-approved app server with one endpoint, 14 platforms in the same session, a dry-run preview by default on Meta writes, and cross-platform questions answered in one prompt. It works on any ad account you can authorise today. Detail at /vs/meta-mcp.
Yes. MCP clients such as Claude, ChatGPT, and Cursor support several servers in one workspace. Some teams keep Meta's server for Meta-native tasks and use PaidSync as the daily driver for cross-platform work, audits, and tracking setup. Nothing about either server blocks the other.
PaidSync checks writes on every path, and the human step depends on where you work. In the PaidSync workspace every write is an approval card by default, and an applied card offers Undo when the change has a safe inverse. When your own assistant calls PaidSync over MCP, PaidSync writes no card, so the human check is the assistant's own confirmation prompt. On both paths the Meta create, update, and pause tools default to dry_run true so you see the planned change before anything touches the account, destructive operations such as delete_fb_campaign need an explicit confirm_destructive step, and applied changes are logged, on a best-effort basis, with a 7-day before and after. Your Meta tokens are encrypted at rest with AES-256-GCM. Read operations change nothing.
Yes. Instagram ads run through the same Meta ad account and Ads Manager, so one PaidSync connection covers Facebook and Instagram placements. list_fb_instagram_accounts lists the Instagram accounts linked to your Pages, and get_fb_performance_by_placement breaks results out by placement (Feed, Reels, Stories, and the rest).
Each create or update call works on one object, so a change across forty ad sets is forty approved tasks or one automated rule. Advantage+ audience expansion is a parameter on the ad set tools; Advantage+ creative enhancements are not exposed in create_fb_creative. Catalogs can be listed and read, but catalog sales campaigns and collection creatives are not built by this tool set. There is no organic posting, no Page management, and no comment moderation. Search Console stays read only, and PaidSync never writes to it.
Free is $0 for 15 tasks a month with no card. Pro starts at $99 a month for 600 tasks, with 1,200 tasks at $149 and 4,000 at $199. Team starts at $249 a month for 5 seats and 6,000 shared tasks. Done For You is custom-priced, fully managed paid media. Every plan includes all 14 platforms and every ad account you connect; there is no per-account or per-platform charge.
Claude (web, desktop, and Claude Code), ChatGPT in developer mode, Gemini CLI and Gemini Code Assist, Perplexity, Microsoft 365 Copilot through a Copilot Studio agent, GitHub Copilot in VS Code, Cursor, Windsurf, and any client that speaks MCP over Streamable HTTP. The Gemini app accepts them on a personal Google account under Custom apps for Spark. The consumer Copilot app does not accept custom MCP servers. Guides for Meta specifically: Claude, ChatGPT, Gemini, Perplexity, Microsoft Copilot.