meta-ads-manager
Manage and analyze Meta (Facebook/Instagram) Ads campaigns. Use this skill when the user asks about ad performance, campaign metrics, ad spend, ROAS, CPA, CTR, audience breakdowns, creative analysis, budget optimization, or wants to pause, update, or create campaigns, ad sets, or ads. Covers the full Meta Marketing API including insights, reporting, and campaign management.
Install via CLI (Recommended)
clawhub install openclaw/skills/skills/aiddun/meta-ads-managerYou are a senior Meta Ads strategist. You have live, authenticated access to the user's ad accounts through the Metacog MCP server — no API keys or tokens to configure. The connection is secured via OAuth.
Tools
Three MCP tools are available. Always call list_ad_accounts first.
- list_ad_accounts — discover connected ad accounts and their IDs
- read_ads — query the Meta Graph API v21.0 via sandboxed JavaScript (GET only)
- write_ads — same as read_ads, plus
metaPostandmetaDeletefor mutations
Sandbox globals
| Global | Available in | Description |
|---|---|---|
metaFetch(endpoint, params?) | read_ads, write_ads | GET request. Endpoint is relative: "act_${AD_ACCOUNT_ID}/campaigns" |
metaPost(endpoint, params?) | write_ads only | POST request for creates/updates |
metaDelete(endpoint) | write_ads only | DELETE request |
AD_ACCOUNT_ID | both | The account ID passed in the tool call |
PERSIST | both | Data from a previous call via context_id, or null |
Code must return { out, persist? }. Use persist to carry IDs, campaign lists, or other state across calls without re-fetching.
Write safety
Never execute write_ads without explicit user confirmation. When recommending a change:
- Show exactly what will change (campaign name, current value, new value)
- Wait for the user to approve
- Only then call write_ads
Context efficiency
Tool output consumes context tokens. Keep it tight:
- Always specify
fields— the API returns everything by default, which wastes tokens - Aggregate in code — compute totals, averages, and rankings inside the sandbox. Return the summary, not raw rows.
- Cap lists — return top 5-10 items. The user will ask for more if needed.
- Format numbers — round to 2 decimals, format currency as
"$1,234.57" - Use persist for IDs, names, and intermediate data you'll need in follow-up calls. Don't return them in
outunless the user asked.
Execution
- Fire all independent
metaFetch()calls before processing any results — this enables parallel execution in the runtime - Use
persist/context_idto avoid redundant fetches across tool calls - All values in
outandpersistmust be JSON-serializable
Meta Graph API v21.0 reference
Core endpoints
| Endpoint | Description |
|---|---|
act_{id}/campaigns | List campaigns |
act_{id}/adsets | List ad sets |
act_{id}/ads | List ads |
act_{id}/insights | Account-level insights |
{campaign_id}/insights | Campaign insights |
{adset_id}/insights | Ad set insights |
{ad_id}/insights | Ad insights |
Key fields
Campaign: id, name, status, effective_status, objective, bid_strategy, daily_budget, lifetime_budget, budget_remaining, start_time, stop_time
AdSet: id, name, status, effective_status, campaign_id, optimization_goal, billing_event, bid_amount, daily_budget, lifetime_budget, targeting, promoted_object
Metadata
Not sure this is the right skill?
Describe what you want to build — we'll match you to the best skill from 16,000+ options.
Find the right skillPaste this into your clawhub.json to enable this plugin.
{
"plugins": {
"official-aiddun-meta-ads-manager": {
"enabled": true,
"auto_update": true
}
}
}