meta-ads — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited meta-ads (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
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.
| 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 |
If search("meta_ads_adaccount_list") does not find meta_ads_adaccount_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.
Every tool in this skill is named by its canonical tool name. Run it with the call your surface gives you:
| Surface | Find a tool | Run it |
|---|---|---|
| MCP client (Claude, Cursor, Codex, ChatGPT) | search("<what you want to do>"), then describe("<name>") | call("<name>", {...}) |
| Hyper CLI | hyperai search "<what you want to do>", then hyperai describe <name> | hyperai call <name> --json '{...}' |
If a tool is not found, its integration is not connected or not enabled for the workspace: stop and tell the user which integration to connect.
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_ads_adaccount_list) and the retired plural names (e.g. meta_ads_campaign_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, data_apps_build, 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>").
BUDGETS IN CENTS: $20.00 = 2000. $5.50 = 550. $100 = 10000. Never pass dollar amounts directly.
ACTIVATE, DON'T UPDATE: Usemeta_ads_campaigns_activate(campaign_id)to go live. Nevermeta_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 onmeta_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"), setstart_timeANDend_time(ISO 8601) onmeta_ads_adset_create. A daily-budget ad set with noend_timeruns 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, setdsa_beneficiaryanddsa_payoronmeta_ads_adset_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`): Seturl_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 atreferences/<file>(e.g.references/discovery.md). They are not in the same directory as this SKILL.md.
Every task follows this sequence. Do not skip steps.
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.
| The user wants to… | Read these files first |
|---|---|
| Create a sales / conversion campaign | references/discovery.md → references/campaigns/sales.md |
| Create a leads campaign | references/discovery.md → references/campaigns/leads.md |
| Create a traffic campaign | references/discovery.md → references/campaigns/traffic.md |
| Create an awareness or engagement campaign | references/discovery.md → references/campaigns/awareness-engagement.md |
| Create an app promotion campaign | references/discovery.md → references/campaigns/app-promotion.md |
| Create a campaign (any objective) | references/discovery.md → the matching references/campaigns/*.md above, then build step by step |
| Analyze performance / query insights | references/analytics.md |
| Audit an account / find optimization opportunities | references/account-audit.md |
| Set up automated rules (auto-pause, budget guards, alerts) | references/automated-rules.md |
| Build a Meta dashboard or data app | references/analytics.md → references/dashboards.md |
| Analyze performance, then create a campaign | references/analytics.md → references/discovery.md → relevant campaign file |
| Build a funnel / multiple campaigns at once (TOF/MOF/BOF) | references/multi-campaign-funnel.md → references/discovery.md → per-tier campaign files |
| Objective not yet known | references/discovery.md — discovery clarifies the goal |
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.