Meta ads MCP prompts: 20 copy-paste templates
Twenty production-ready MCP prompts organized by risk class — read-only, draft, status-changing, and financial.

Sections
Meta ads MCP prompts are the fastest way to turn a connected Claude session into a working ad ops tool — but only if the prompts are built around what the tools actually call. Most people type loosely and get loosely back. This library gives you 20 structured meta ads MCP prompts organized by risk class: read-only, draft-creating, status-changing, and financial. Each one specifies the tools called, the expected output shape, the most common failure mode, and the guardrail that stops it.
TL;DR: A good meta ads MCP prompt is half a function call and half a guardrail. These 20 templates are sorted by risk class — read-only through financial — so you know what each one will do before you run it. Load your adlibrary competitive context first, then copy-paste.
Why meta ads MCP prompts beat tool memorization
The Meta Ads MCP server exposes 29 discrete tools — everything from ads_get_insights to ads_update_adset_budget. Nobody memorizes 29 function signatures. What you memorize is intent, and a good prompt translates intent into the right sequence of tool calls automatically.
This is the core premise behind agentic AI in paid media: the agent resolves the sequence, you define the guard rails. A prompt that says "pause any ad set with CPA > 2× target for the last 7 days" isn't vague — it's a precise instruction that Claude can map to ads_get_insights, filter logic, and ads_update_adset_status. The prompt is the smart part only if you write it precisely.
The MCP specification defines how Claude discovers and invokes tools at runtime. Because tool selection is dynamic, the quality of your prompt determines whether Claude calls the right tool, calls the right tool with the right parameters, or drifts into something plausible-sounding but wrong.
Browse the meta ads MCP setup guide first if you haven't wired MCP to Claude yet. This meta ads MCP prompts library assumes a live connection.
Step 0: load adlibrary context before every session
The prompt isn't the smart part. The signal you feed it is.
Before running any prompt in this library, spend two minutes pulling competitive signal from adlibrary's unified ad search. Search your category, filter to the last 30 days, open the ad timeline analysis on your top three competitors. Note which creative formats are running longest — that's in-market proof of what's working.
Save those ads to a saved ads collection and paste the relevant detail into your Claude context window before you start prompting. That context changes what Claude infers when you say "mirror a competitor creative" or "find whitespace in our angle coverage."
This workflow is documented in the adlibrary media buyer workflow. For a deeper walk-through of how adlibrary data plugs into MCP sessions, see meta ads MCP adlibrary workflows.
With context loaded, each prompt below runs in seconds. Without it, you get generic output.
The risk-class framework for meta ads MCP prompts
Every meta ads MCP prompt in this library carries a risk class. Read it before you run.
- Read — calls only read tools. No mutations. Safe to run at any time.
- Draft — creates objects in a paused or draft state. Nothing goes live. Reversible by deletion.
- Status — changes the live state of an existing object (pause, enable, archive). Affects delivery immediately.
- Financial — modifies budget or billing fields. Affects spend immediately. Treat like a wire transfer.
The framework matters because Claude's tool selection is probabilistic. A prompt that blends read intent with status language can accidentally trigger a mutation. The guardrails in each prompt below are designed to prevent that, but they work best when you've read the risk class first.
For a broader comparison of what MCP can do vs. the standard Ads Manager UI, see meta ads MCP vs Ads Manager. For around-the-clock automation patterns, see meta ads MCP 24/7 agent.
The Anthropic Claude Code MCP docs explain how tool call authorization works in the Claude Code runtime — worth reading before you give any prompt financial-class permissions.
Read-only intelligence prompts (1–5)
These five prompts call only read tools. Run them freely — they produce no mutations.
Prompt 1: Account audit
Intent: Get a full account health snapshot across all active campaigns.
Risk class: read
Tools called: ads_get_campaigns, ads_get_adsets, ads_get_insights
Copy-paste prompt:
Using my Meta Ads account [ACCOUNT_ID], pull all active campaigns and their ad sets. For each, fetch 7-day impressions, clicks, spend, CPA, and ROAS. Flag any campaign where CPA is more than 30% above the account average. Flag any ad set in the <a href="/glossary/learning-phase">learning phase</a> that has been running > 7 days. Flag any <a href="/glossary/advantage-plus">Advantage+</a> campaign with delivery below 80% of daily budget. Return a ranked list: worst performers first. Do not change any settings.
Expected output shape: Markdown table with campaign/ad set name, 7-day KPIs, and a flag column (OVER_CPA / LEARNING / UNDER-DELIVERY). Common failure mode: Claude fetches campaign-level data only and misses ad-set anomalies buried under a healthy campaign average. Guardrail: Explicitly request ad-set-level data in the prompt. The phrase "for each, fetch" forces Claude to recurse into ad sets.
Prompt 2: Weekly performance brief
Intent: Generate a ready-to-share performance summary for weekly review.
Risk class: read
Tools called: ads_get_insights, ads_get_campaigns
Copy-paste prompt:
Pull 7-day performance for account [ACCOUNT_ID]. Compare to the prior 7-day period. Summarize: total spend, total conversions, blended CPA, top 3 ad sets by ROAS, bottom 3 by CPA. Add a one-paragraph narrative in plain English — no jargon, written for a non-technical stakeholder. Do not make any changes.
Expected output shape: KPI table (current vs. prior period, delta %) + one plain-language paragraph. Common failure mode: Claude omits the period-over-period delta and returns only current numbers. Guardrail: Explicitly request "compare to prior 7-day period" and "delta %" in the prompt.
Prompt 3: Anomaly scan
Intent: Surface sudden CPA spikes or spend drops before the daily check-in.
Risk class: read
Tools called: ads_get_insights
Copy-paste prompt:
For account [ACCOUNT_ID], pull yesterday's hourly spend and conversion data. Flag any hour where CPA exceeded 3× the prior 7-day hourly average. Flag any 4-hour window where spend dropped to zero (possible delivery issue). List anomalies in reverse chronological order with the raw numbers. Do not make any changes.
Expected output shape: Timestamped anomaly list with actual CPA vs. baseline. Common failure mode: The API does not always support hourly breakdowns for all account tiers — Claude returns daily data and doesn't surface the limitation. Guardrail: Add "if hourly data is unavailable, say so explicitly and fall back to 4-hour windows."
Prompt 4: Learning-phase status report
Intent: Identify which ad sets are still in the learning phase and estimate exit.
Risk class: read
Tools called: ads_get_adsets, ads_get_insights
Copy-paste prompt:
For account [ACCOUNT_ID], list every ad set currently in the learning phase. For each: show current event count toward 50-conversion threshold, daily conversion rate, and estimated days to exit learning based on the last 3-day average. Flag any ad set that has been in learning > 14 days — these are learning-limited. Use the <a href="/tools/learning-phase-calculator">learning phase calculator</a> benchmark if available. Do not change any settings.
Expected output shape: Table: ad set name | conversions so far | daily rate | est. exit date | LEARNING_LIMITED flag. Common failure mode: Claude reports "in learning" status but doesn't compute the exit estimate, making the output less actionable. Guardrail: Add "compute estimated days to exit based on the last 3-day conversion rate" explicitly.
Prompt 5: Opportunity-score sweep
Intent: Find ad sets with strong signal but throttled budget — the whitespace the algorithm found before you did.
Risk class: read
Tools called: ads_get_adsets, ads_get_insights
Copy-paste prompt:
For account [ACCOUNT_ID], pull all ad sets with CPM < [TARGET_CPM] and ROAS > [TARGET_ROAS] over the last 14 days. For each, calculate the gap between current daily spend and the campaign daily budget cap. Rank by ROAS descending. Show impression share if available. Do not change any settings. This is a read-only analysis.
Expected output shape: Ranked table of under-budgeted winners with ROAS, current spend, and headroom to cap. Common failure mode: Claude conflates campaign-level budget with ad-set-level delivery and reports misleading headroom numbers. Guardrail: Specify "calculate headroom as [campaign daily budget] minus [sum of all ad set spend in that campaign]."
Draft-creating prompts (6–10)
These prompts create objects in paused or draft state. Nothing goes live automatically. Check the draft before enabling.
Prompt 6: Mirror a competitor adlibrary creative
Intent: Turn a competitor ad observed in adlibrary into a structured creative brief for a new ad draft.
Risk class: draft
Tools called: ads_create_ad, ads_create_adcreative
Copy-paste prompt:
I'm looking at a competitor ad from [COMPETITOR_NAME] running in the [CATEGORY] space. The hook is: [PASTE HOOK TEXT]. The format is: [IMAGE/VIDEO/CAROUSEL]. Their apparent angle is: [DESCRIBE ANGLE]. They appear to be using <a href="/glossary/advantage-plus">Advantage+</a> audience targeting based on the broad creative set. Draft a new ad creative using our brand voice (attached) that mirrors the structural pattern but leads with our ICP differentiator: [YOUR ICP DIFFERENTIATOR]. Also note if <a href="/glossary/dynamic-creative">dynamic creative</a> formatting applies. Create the draft in paused state under campaign [CAMPAIGN_ID]. Do not enable.
Expected output shape: Draft ad object ID + preview of headline, primary text, and CTA. Status: PAUSED. Common failure mode: Claude creates the ad in ACTIVE state because the campaign inherits active status. Guardrail: Explicitly add "set status: PAUSED at the ad level regardless of campaign status."
Prompt 7: Build a launch from a swipe-file entry
Intent: Convert a swipe-file entry into a ready-to-launch ad set with targeting and creative.
Risk class: draft
Tools called: ads_create_adset, ads_create_ad, ads_create_adcreative
Copy-paste prompt:
I have a swipe-file entry: [PASTE AD COPY, FORMAT, AND TARGETING NOTES]. Build a new ad set under campaign [CAMPAIGN_ID] targeting [AUDIENCE DESCRIPTION]. Set daily budget: [BUDGET]. Optimization event: [CONVERSION EVENT]. Create one ad matching the swipe-file format with our copy substituted. Set everything to PAUSED. Return the ad set ID and ad ID.
Expected output shape: Ad set ID + ad ID, both in PAUSED state, with a summary of targeting parameters used. Common failure mode: Audience targeting is too narrow, triggering an immediate learning-phase warning. Guardrail: Add "flag if estimated audience size is < 500k and suggest a broader targeting alternative."
Prompt 8: Scaffold an A/B test
Intent: Create two parallel ad sets with one variable changed — copy, creative, or audience — for a clean split.
Risk class: draft
Tools called: ads_create_adset, ads_create_ad
Copy-paste prompt:
Create two ad sets under campaign [CAMPAIGN_ID], identical except for [VARIABLE: copy/creative/audience]. Ad set A: [DESCRIBE VARIANT A]. Ad set B: [DESCRIBE VARIANT B]. Equal budgets: [BUDGET] each. Same optimization event: [EVENT]. Same schedule: [START DATE]. Set both to PAUSED. Label them [TEST_NAME]_A and [TEST_NAME]_B in the naming. Return both ad set IDs.
Expected output shape: Two ad set IDs with a confirmation that naming, budget, and status match spec. Common failure mode: Claude creates one ad set and clones it but doesn't update the variable in the clone correctly. Guardrail: After creation, run Prompt 1 filtered to the two new ad set IDs to verify the variable is actually different.
Prompt 9: Draft a budget-shift proposal
Intent: Produce a written budget reallocation proposal for human approval — not execute it.
Risk class: draft
Tools called: ads_get_campaigns, ads_get_insights
Copy-paste prompt:
Pull 14-day performance for account [ACCOUNT_ID]. Identify the top 3 campaigns by ROAS and the bottom 3 by CPA efficiency. Propose a budget shift: move [SHIFT_AMOUNT]% from the bottom 3 to the top 3, proportional to ROAS rank. Show the before/after budget table. Do NOT execute any budget changes. Write a 2-sentence rationale for each shift.
Expected output shape: Before/after budget table + rationale sentences. No mutations. Common failure mode: Claude presents the proposal then immediately asks "shall I apply these changes?" — and if you say yes, it executes. Guardrail: End the prompt with "present the proposal only. Do not ask to apply. Wait for a separate explicit instruction."
Prompt 10: Generate a retargeting ad set draft
Intent: Build a retargeting ad set targeting recent website visitors or video viewers in paused state.
Risk class: draft
Tools called: ads_create_adset, ads_get_custom_audiences
Copy-paste prompt:
List all custom audiences for account [ACCOUNT_ID] with source: [WEBSITE/VIDEO/LEAD_FORM]. From that list, select the audience matching [AUDIENCE_DESCRIPTION]. Create a new ad set under campaign [CAMPAIGN_ID] targeting that audience. Exclude: [EXCLUSION_AUDIENCE] if available. Budget: [BUDGET]. Optimization: [EVENT]. Status: PAUSED. Return audience ID used and ad set ID.
Expected output shape: Audience ID, ad set ID, confirmation of exclusion applied (or note if exclusion audience not found). Common failure mode: Exclusion audience lookup fails silently and the ad set is created without the exclusion. Guardrail: Add "if exclusion audience is not found, stop and report — do not create the ad set without it."
Status-changing prompts (11–15)
These prompts mutate the live state of existing objects. Run in off-peak hours when possible. Each pauses, enables, archives, or restructures real campaigns.
Prompt 11: Pause an underperformer
Intent: Pause all ad sets where CPA exceeded the account threshold for 3 consecutive days.
Risk class: status
Tools called: ads_get_insights, ads_update_adset_status
Copy-paste prompt:
For account [ACCOUNT_ID], pull daily CPA for all active ad sets over the last 7 days. Identify ad sets where CPA exceeded [CPA_THRESHOLD] for 3 or more consecutive days. Pause each one. Return the list of paused ad set IDs with their 7-day CPA. Do not pause ad sets currently in the learning phase — flag those for review instead.
Expected output shape: List of paused ad set IDs + 7-day CPA. Separate list of learning-phase ad sets flagged but not touched. Common failure mode: Claude pauses ad sets that were temporarily above threshold due to a single bad day, not a sustained trend. Guardrail: Specify "3 or more consecutive days" explicitly — not "average over 7 days."
Prompt 12: Scale a winner
Intent: Increase budget on the top-performing ad set in a controlled 20% step.
Risk class: status
Tools called: ads_get_insights, ads_update_adset_budget
Copy-paste prompt:
For account [ACCOUNT_ID], identify the single ad set with the highest ROAS over the last 14 days. It must have: spend > [MIN_SPEND], impressions > [MIN_IMPRESSIONS], and not be in the learning phase. Increase its daily budget by exactly 20%. Show the old and new budget. Do not touch any other ad sets.
Expected output shape: Ad set name, old budget, new budget, 14-day ROAS that triggered the scale.
Common failure mode: Claude selects an ad set with high ROAS but very low spend, making the 20% increase meaningless.
Guardrail: The spend > [MIN_SPEND] condition in the prompt enforces minimum statistical significance. Set it to at least 3× your average CPA.
Prompt 13: Restructure naming conventions
Intent: Rename all ad sets in a campaign to match a standard naming template.
Risk class: status
Tools called: ads_get_adsets, ads_update_adset
Copy-paste prompt:
For campaign [CAMPAIGN_ID], list all ad set names. Rename each to match this template: [CAMPAIGN_CODE]_[AUDIENCE_TYPE]_[FORMAT]_[DATE_YYYYMM]. Map current names to the template as follows: [PASTE MAPPING TABLE]. Show the old and new name for each. Do not change budgets, targeting, or status.
Expected output shape: Before/after name table. Confirmation that no other fields were mutated. Common failure mode: Claude applies its own interpretation of the naming template instead of the explicit mapping. Guardrail: Paste an explicit mapping table (old name → new name) rather than asking Claude to infer the mapping.
Prompt 14: Archive paused-stale ad sets
Intent: Archive all ad sets that have been paused for > 60 days with zero spend in that window.
Risk class: status
Tools called: ads_get_adsets, ads_get_insights, ads_update_adset_status
Copy-paste prompt:
For account [ACCOUNT_ID], find all ad sets with status PAUSED and zero spend in the last 60 days. List them with their last active date and original campaign. Archive each one. Return the list of archived IDs. Do not archive anything with spend in the last 60 days — even if paused.
Expected output shape: List of archived ad set IDs with last-active date. Confirmation that no ad set with recent spend was archived. Common failure mode: The API treats "archived" as irreversible. Claude may not warn you. Guardrail: Add "before archiving, show me the full list and ask for confirmation." This introduces a human checkpoint.
Prompt 15: Restart a paused draft
Intent: Enable a previously paused ad set that has been reviewed and approved for launch.
Risk class: status
Tools called: ads_update_adset_status, ads_update_ad_status
Copy-paste prompt:
Enable ad set [ADSET_ID] and all ads within it. Confirm: the campaign [CAMPAIGN_ID] is also active. Return the enabled ad set ID, status, and daily budget after enabling. Do not touch any other ad sets in the campaign.
Expected output shape: Ad set ID, new status (ACTIVE), budget confirmation, parent campaign status. Common failure mode: The ad set enables but individual ads remain paused, resulting in zero delivery with no error. Guardrail: Explicitly include "enable all ads within it" — ad-level status is independent of ad-set status.
Financial prompts (16–20)
These prompts touch budget and billing fields. Treat them like financial transactions — verify the output before you confirm.
Prompt 16: Budget reallocation across ad sets
Intent: Shift budget from low-ROAS ad sets to high-ROAS ones within a fixed total envelope.
Risk class: financial
Tools called: ads_get_adsets, ads_get_insights, ads_update_adset_budget
Copy-paste prompt:
For campaign [CAMPAIGN_ID], pull 14-day ROAS and current daily budget for each ad set. Total budget across all ad sets is [TOTAL_DAILY_BUDGET]. Keep that total unchanged. Reallocate: weight each ad set's budget proportional to its ROAS rank. Show the old and new budget for each ad set. Sum must equal [TOTAL_DAILY_BUDGET]. Note any ad set using <a href="/glossary/conversion-api-capi">Conversion API / CAPI</a> signals — these may show inflated ROAS due to <a href="/glossary/attribution-window">attribution window</a> differences. Show me the table first. Apply only after I confirm.
Expected output shape: Before/after budget table with ROAS rank. Total row confirming the sum is unchanged. Awaiting confirmation. Common failure mode: Rounding errors cause the total to drift by $1-5. Claude may not flag this. Guardrail: Explicitly include "sum must equal [TOTAL_DAILY_BUDGET]" and add "flag any rounding discrepancy."
For manual budget planning before running this prompt, the ad budget planner gives you the allocation framework to paste in.
Prompt 17: Daily-budget cap raise
Intent: Increase the daily budget cap on a specific campaign by a defined amount.
Risk class: financial
Tools called: ads_update_campaign_budget
Copy-paste prompt:
Increase the daily budget of campaign [CAMPAIGN_ID] from its current value to [NEW_BUDGET]. Confirm the current budget before making the change. Return: old budget, new budget, campaign name, and timestamp of the change. Do not touch any other campaigns or ad sets.
Expected output shape: Campaign name, old budget, new budget, confirmation timestamp. Common failure mode: Claude updates the wrong campaign if the ID is mistyped — and the API accepts the mutation silently. Guardrail: The "confirm the current budget before making the change" instruction forces Claude to read before writing. If the current budget doesn't match your expectation, abort.
Prompt 18: Lifetime-budget conversion
Intent: Switch an ad set from daily budget to lifetime budget without changing the effective daily rate.
Risk class: financial
Tools called: ads_get_adsets, ads_update_adset_budget
Copy-paste prompt:
For ad set [ADSET_ID], the current daily budget is [CURRENT_DAILY_BUDGET]. The campaign end date is [END_DATE]. Calculate the equivalent lifetime budget: daily × remaining days, rounded up to the nearest dollar. Show the calculation. Switch to lifetime budget only after I confirm the number. Do not change targeting, creative, or status.
Expected output shape: Calculation showing daily × days = lifetime total. Awaiting confirmation before applying. Common failure mode: Claude calculates from today's date but doesn't account for days already spent, over-budgeting the remainder. Guardrail: Specify "calculate from today [DATE] to end date, not from campaign start."
Prompt 19: Currency-conversion sanity check
Intent: Verify that reported spend in account currency matches expected USD equivalent before a budget decision.
Risk class: financial
Tools called: ads_get_insights, ads_get_account
Copy-paste prompt:
For account [ACCOUNT_ID], what is the account currency? Pull yesterday's total spend in account currency. Convert to USD using today's approximate rate: [RATE]. Compare to the expected USD spend of [EXPECTED_SPEND]. Flag if the variance is > 5%. Do not make any changes.
Expected output shape: Account currency, yesterday's spend in local currency, USD equivalent, variance vs. expected. Common failure mode: Claude uses a hardcoded or stale exchange rate instead of the one you provided. Guardrail: Always provide the rate explicitly in the prompt. The MCP server has no live FX feed.
Prompt 20: Billing diagnostic
Intent: Surface any billing issues — failed charges, credit line limits, or payment method problems — before they cause delivery drops.
Risk class: financial
Tools called: ads_get_account, ads_get_billing_info
Copy-paste prompt:
For account [ACCOUNT_ID], retrieve the current billing status. Report: payment method on file, current account balance or credit line remaining, any failed transactions in the last 30 days, and account spending limit if set. Flag if credit line remaining is < 20% of the monthly average spend. Use the <a href="https://developers.facebook.com/docs/marketing-api/reference/" target="_blank" rel="noopener noreferrer">Meta Marketing API reference</a> billing fields. Do not make any changes.
Expected output shape: Billing status table with payment method, balance/credit line, failed transaction count, and spending limit flag.
Common failure mode: The billing tools require elevated API permissions. Claude returns a permission error without a clear explanation.
Guardrail: Verify your app has ads_management and business_management scopes before running billing prompts. See the Meta Ads MCP setup guide for scope configuration.
Where meta ads MCP prompts go wrong — and how to harden them
The most common failure pattern across all 20 meta ads MCP prompts is scope creep at the boundary between read and status. Claude infers that after analyzing data you probably want to act on it. A prompt that ends with a question — "shall I apply these changes?" — is a soft mutation waiting for a yes.
The fix is terminal instruction discipline. End every read-class prompt with "Do not make any changes." End every draft-class prompt with "Set status: PAUSED. Do not enable." End every financial prompt with "Show me the table first. Apply only after I confirm."
The second failure pattern is silent partial execution. Claude completes 4 out of 5 intended actions, doesn't surface the 5th, and returns a success message. For status-changing prompts, always request a confirmation list: "return the IDs of every object you modified."
For deeper debugging patterns, the meta ads MCP debugging post covers how to read Claude's tool call logs and trace where a meta ads MCP prompt went off-script.
For agencies managing multiple accounts, the prompt library in meta ads MCP for agencies extends these templates with account-switching logic. The competitor ad to Meta campaign MCP workflow shows how to chain Prompts 6 and 7 into a single competitive response pipeline.
The ad data for AI agents use case documents how adlibrary's API access integrates as the data layer feeding these agentic prompts. That combination — adlibrary signal + MCP execution — is where the compounding effect lives. The signal side is detailed in the automated social media advertising guide.
For teams wanting to build custom prompt chains on top of this library, build your own adlibrary MCP server walks through the server-side implementation, and the creative testing automation post shows how to wire Prompts 8 and 12 into a continuous test-and-scale loop.
For CPA calculation benchmarking while writing your threshold values, the CPA calculator gives you the per-campaign numbers to plug into Prompts 11 and 12.
Frequently asked questions
Do these meta ads MCP prompts work with any Claude model?
Yes, but Claude Sonnet and Opus produce more reliable tool call sequences than Haiku for multi-step prompts. Haiku occasionally skips intermediate tool calls when the sequence has more than three steps. For financial-class prompts, use Sonnet minimum.
What happens if a prompt triggers a tool I haven't authorized?
The Claude Code MCP authorization model requires explicit tool approval before Claude can call any MCP tool. If you haven't approved ads_update_adset_budget, Claude will surface a permission error rather than silently skipping the call. Approve only the tool classes you intend to use in a given session.
Can I chain these prompts in sequence?
Yes. The most reliable chain is: Prompt 1 (audit) → Prompt 9 (budget proposal) → Prompt 16 (reallocation) with human confirmation at each financial step. Running Prompt 5 before Prompt 12 ensures you're scaling a statistically significant winner, not an outlier. See the meta ads MCP adlibrary workflows post for chain examples.
Why does the prompt say to load adlibrary context first?
The MCP tools tell Claude what your account is doing. adlibrary tells Claude what the market is doing. Without competitive context, Claude can only optimize relative to your own historical performance — which may be consistently below market. Loading a few competitor ads from adlibrary's unified ad search before running draft-class prompts changes the creative frame of reference.
Are there risk classes beyond the four here?
The four-class framework maps to the Meta Marketing API reference permission model: read, write (draft/inactive objects), write (live objects), and write (financial fields). Some teams add a fifth class — structural — for actions that modify campaign hierarchy (moving ad sets between campaigns) rather than fields within an object. The MCP specification doesn't define risk classes; this taxonomy is editorial.
Bottom line
A prompt library is only as good as the guardrails inside each prompt. Copy-paste these 20 meta ads MCP prompts, fill the bracket variables, and read the risk class before you run. The signal that makes them sharp comes from loading adlibrary competitive context first — that's the step most people skip.
For a deeper look at how teams approach 10 powerful advertising copy examples to boost your meta ads, see our guide on 10 powerful advertising copy examples to boost your meta ads.
Originally inspired by mcp.facebook.com. Independently researched and rewritten.
Further Reading
Related Articles

Meta Ads MCP setup: connect Claude Code to Meta in 2026
Connect Claude Code to Meta's MCP server in four commands. OAuth scopes, read queries, paused campaign drafting, and Pipeboard vs official server compared.

Meta Ads MCP workflows: 10 recipes for agency teams
Ten trigger-driven Meta Ads MCP workflows combining adlibrary signals with Claude's MCP actions — fatigue, geo expansion, competitor hooks, and more.

Competitor ad to Meta campaign in 30 minutes: the MCP pipeline
Compress a 4-day cycle into 30 minutes. The Meta Ads MCP pipeline: angle validation, brief generation, 6 ad variants, paused campaign launch.

Meta Ads MCP vs Ads Manager: when to automate, when to click
Meta Ads MCP vs Ads Manager: a framework by operation type — where MCP wins on speed, where Ads Manager wins on judgment, and how to run both tools.

Meta ads automation agent: build a 24/7 ad ops loop
Build a 24/7 meta ads automation agent with Claude Code and MCP: fatigue pause, competitor hook draft, and Monday brief, all driven by adlibrary signals.

Claude Code Prompts for Marketing Workflows: A Copy-Paste Library
25+ Claude Code prompts for marketing — competitor research, ad analysis, SEO audits, report generation, and creative batch ops. Copy-paste with setup notes and expected outputs.

Claude Code for Marketers: A Beginner's Intro to Agentic Command-Line Workflows
Claude Code gives marketers a direct line from data to output — ad variants, audits, teardowns, reports, all from the terminal. Here's how to start.