| name | meta-ads |
| description | Plan and create Meta (Facebook + Instagram) advertising campaigns end-to-end via the Hyper MCP, defaulting to Advantage+ automation. Use when the user wants to launch Meta ads, Facebook ads, Instagram ads, Advantage+ campaigns, carousel ads, dynamic creative ads, set up Meta conversion tracking, analyze performance, audit a Meta ads account, or build Meta performance dashboards. Also triggers on phrases like meta campaign, facebook campaign, advantage+, or meta account audit. |
| requires_toolkits | ["meta_ads","meta_business"] |
| icon | meta_ads |
| short_description | Plan and create Meta ad campaigns with Advantage+ defaults, audits, and dashboards. |
Meta Ads
Strategic guide for creating and managing Meta advertising campaigns, analyzing performance, and building dashboards from cached data. Default to Advantage+ unless the user explicitly requests manual control.
Out of scope — defer to other skills
| Request | Send them to |
|---|
| Competitor or public ad research (Meta Ads Library) | meta-ads-library |
| Ad creative generation (images, copy variants) | ad-creative-generation |
| Google Ads campaigns | google-ads |
| Pinterest / TikTok / Amazon paid campaigns | pinterest-ads, tiktok-ads, amazon-ads |
Requirements
- Hyper MCP installed and connected. https://app.hyperfx.ai/mcp
- Meta Business integration connected (Facebook + Instagram, with at least one ad account and one Page) at https://app.hyperfx.ai/apps.
- Firecrawl integration connected for site research and screenshot grounding (discovery phase).
If meta_ads_adaccount_list is not in the tool list, stop and tell the user to enable Hyper MCP and connect Meta Business.
If you suspect a connection issue (missing ad accounts, page publishing failures, or permission errors), call meta_ads_health_check() and report the diagnostics before proceeding.
Tool names
Use the exact tool name from your connected tool list. Canonical names are meta_ads_* (listed below). On Hyper platform chat, legacy meta_business_* names (e.g. meta_business_list_ad_accounts) and the retired plural names (e.g. meta_ads_campaigns_create) resolve to the same tools via aliases — if a call fails with "tool not found", search the live catalog for the canonical name.
| Group | Tools |
|---|
| Discovery | meta_ads_adaccount_list, meta_ads_owned_pages_list, meta_ads_pages_search, meta_accounts_list, meta_ads_instagram_accounts_list |
| Health & sync | meta_ads_health_check, meta_ads_health_get |
| Tracking assets | meta_ads_ad_pixels_list, meta_ads_ad_pixels_get, meta_ads_custom_audiences_list, meta_ads_lookalike_audiences_list, meta_ads_targeting_search |
| Step-by-step creation (preferred) | meta_ads_campaign_create, meta_ads_adset_create, meta_ads_ad_create, meta_ads_ad_images_upload, meta_ads_creative_create |
| Read & preview | meta_ads_campaign_get, meta_ads_campaigns_search, meta_ads_adset_list, meta_ads_ad_list, meta_ads_ad_get, meta_ads_ad_previews_get |
| Insights & dashboards | meta_ads_insights_get, hyper_data_build_dashboard, database_query |
| Launch & edits | meta_ads_campaigns_activate, meta_ads_campaign_update, meta_ads_adset_update, meta_ads_ad_update |
| Automated rules | meta_ads_adrule_create, meta_ads_adrule_list, meta_ads_adrule_get, meta_ads_adrule_update, meta_ads_adrule_delete, meta_ads_adrule_history_list |
| Site research | firecrawl_branding_extract, firecrawl_screenshots_create |
CLI users: translate tool names with the hyper-cli skill (hyperai search "<tool name>").
Rules that must never be forgotten
BUDGETS IN CENTS: $20.00 = 2000. $5.50 = 550. $100 = 10000. Never pass dollar amounts directly.
ACTIVATE, DON'T UPDATE: Use meta_ads_campaigns_activate(campaign_id) to go live. Never meta_ads_campaign_update(status="ACTIVE") — that silently leaves ad sets and ads PAUSED so nothing serves.
ALWAYS START PAUSED: Create campaigns with status="PAUSED". Never launch live without user review.
BUILD STEP BY STEP: Create campaigns with the individual tools — meta_ads_campaign_create → meta_ads_adset_create → meta_ads_creative_create → meta_ads_ad_create, capturing each id from the previous response. (The old blueprint tools were removed.) The tools validate requests before sending — campaign objective rules, bid-strategy/bid-amount pairing, billing-event/optimization-goal compatibility, budget coherence — but objective-specific ad-set fields (optimization_goal, promoted_object) are YOUR responsibility: match them to the campaign objective using the reference file for the campaign type.
REGULATED ADVERTISERS NEED special_ad_categories: For gambling, financial, housing, employment, credit, or political advertisers, declare the category on meta_ads_campaign_create (e.g. special_ad_categories=["ONLINE_GAMBLING_AND_GAMING"]).
FIXED RUN WINDOWS GO ON THE AD SET: When the user gives a run duration or dates ("run it for 7 days", "through end of month"), set start_time AND end_time (ISO 8601) on meta_ads_ad_sets_create. A daily-budget ad set with no end_time runs continuously until manually paused — the requested window is silently lost.
GROUND COPY IN THE DESTINATION PAGE (RESEARCH FIRST): When the brief centers on a URL ("build a campaign for https://..."), fetch that page FIRST (web_pages_fetch) — before discovery and before writing any copy — and ground ad copy in what the page actually says (product name, value props, offer). Never invent copy for a page you have not read; even when the user supplies exact copy or headlines, fetch the page to verify the destination matches the offer.
EU-TARGETED AD SETS NEED DSA FIELDS: If an ad set targets the EU, set dsa_beneficiary and dsa_payor on meta_ads_ad_sets_create (who benefits from / pays for the ad) — required under the EU Digital Services Act, or delivery is restricted.
UTMs ON EVERY DESTINATION AD (url_tags): Set url_tags (UTM params, e.g. utm_source=meta&utm_medium=paid&utm_campaign=...) on every creative that drives to a destination — downstream measurement (e.g. AppsFlyer + a data warehouse) stitches on these, so an ad without UTMs is effectively unmeasurable. Use the advertiser's canonical template; if you don't have one, ask rather than ship untracked.
See references/constraints.md for the full constraint set.
All reference files live in references/. Read them at references/<file> (e.g. references/discovery.md). They are not in the same directory as this SKILL.md.
Core process
Every task follows this sequence. Do not skip steps.
- Identify the goal — creation, analysis, or both?
- Check the routing table and read the referenced files before calling any tools
- Make a written plan — state campaign type, budget in cents, optimization goal, and sequence of steps; show it before acting
- Execute step by step, re-checking references/constraints.md at each creation step
- Show ad previews before activation
- Activate only when the user approves using
meta_ads_campaigns_activate()
Automated / scheduled runs: If there is no user present to interact with (e.g. a scheduled task), skip steps 3 and 6. Do not write a plan and wait for confirmation — proceed directly. Do not activate unless activation was explicitly included in the task instructions.
Routing table
Worked examples