Scaleforge MCP Meta Ads
Meta Ads MCP by ScaleForge — control Facebook & Instagram Ads via Graph API v24.0.
Connector by Mike25app · GitHub account verified by the MCP Registry
Chalk Labs
Need help deploying Scaleforge MCP Meta Ads?
Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.
Install
Works with Claude Code, Codex, VS Code, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.
npx agentmarket install connector/mike25app-scaleforge-mcp-meta-ads
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this server can do and what it asks for, from its tool list and install config. Checked Oct 25, 2026.
- Tools
- 17 read · 12 write · 3 delete
- Secrets
- 1 (API keys, tokens or passwords)
- Install scripts
- Not scanned yet
- Runs as
- Node.js package
Tools by what they do 32
Read from the source code; the running server may list different tools.
Read 17 · Look things up without changing anything.
get_adget_ad_accountget_ad_insightsget_ads_volumeget_adsetget_adset_insightsget_campaignget_campaign_insightsget_creativeget_pbialist_ad_accountslist_ads
Show 5 more tools
list_adsetslist_campaignslist_creativeslist_pagessearch_ads_library
Write 12 · Create, change, send or run things.
activate_campaigns_batchcreate_ad_creativecreate_ad_creative_with_asset_feedcreate_adsetcreate_campaignpause_campaigns_batchupdate_adupdate_adsetupdate_bids_batchupdate_campaignupload_imageupload_video
Delete 3 · Delete, drop, revoke or wipe things.
delete_addelete_adsetdelete_campaign
Secrets and settings it asks for
Secrets: values you paste in that let it act as you.
META_ACCESS_TOKEN
Files it touches
- Any path the agent passes to its tools
Tools (32)
Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].
activate_campaigns_batchWRITE (BULK): Activate many campaigns in one Batch API call. BEFORE activation we run a per-Page ads_volume pre-flight for every distinct ad account — warnings are returned in the response so the agent / user can abort if a Page is over capacity. Agents MUST confirm with the user before calling this (activation starts spend immediately).
create_ad_creativeWRITE: Create a single-text ad creative from an `object_story_spec`. Pass page_id plus ONE of: video_data (for video ads — needs video_id from upload_video), link_data (for image / link ads — needs image_hash from upload_image + link + message). If the Page is not linked to Instagram, pass `instagram_user_id` from get_pbia() to enable IG placements. Note: image hashes are per-ad-account in Meta — a hash uploaded on account A is NOT valid on account B. Re-upload to each target account.
create_ad_creative_with_asset_feedWRITE: Create a DYNAMIC (multi-text) creative using `asset_feed_spec`. Meta will auto-combine the bodies/titles/descriptions and optimize the best mix. The parent ad set MUST have is_dynamic_creative=true. Pass arrays of texts plus either video_id(s) or image_hash(es).
create_adsetWRITE: Create an ad set under a campaign. Default status is PAUSED. `targeting` is a Meta targeting spec object (geo_locations, age_min, age_max, interests, etc.). `bid_amount` is in account currency minor units (cents). For multi-text / dynamic creative ads you MUST set is_dynamic_creative=true — otherwise asset_feed_spec ads will be rejected.
create_campaignWRITE: Create a new campaign. Default status is PAUSED (recommended — set ACTIVE only after creating ad sets and ads). For CBO, pass daily_budget or lifetime_budget at this level; for ABO leave budget off and set it on the ad set. `special_ad_categories` is required (empty array [] is fine for normal advertising).
delete_adWRITE: Hard-delete an ad. Prefer update_ad status=ARCHIVED to keep history.
delete_adsetWRITE: Hard-delete an ad set (and its ads). Prefer update_adset status=ARCHIVED to keep history.
delete_campaignWRITE: Hard-delete a campaign (and its ad sets / ads). Prefer update_campaign with status=ARCHIVED if you want to keep historical data.
get_adGet a single ad by ID. Returns full creative + issues + preview link.
get_ad_accountGet detailed info for a single Ad Account: status, spend cap, balance, funding source, business, timezone, disable_reason. Returns the full configuration record — use this for deep inspection of one account.
get_ad_insightsPull performance metrics for ONE ad. Same fields/breakdowns as get_campaign_insights. Use this to compare creative performance at the individual-ad level.
get_ads_volumePRE-FLIGHT CHECK: Get per-Page ads-running-or-in-review counts and limits for an ad account. Meta caps active ads per Page (default 250) and this limit is SHARED across every account using the same Page. Always call this before a bulk activation to avoid silent review failures. Returns one row per Page actor.
get_adsetGet a single ad set by ID. Returns default fields plus anything in `fields`.
get_adset_insightsPull performance metrics for ONE ad set. Same fields/breakdowns as get_campaign_insights.
get_campaignGet a single campaign by ID. Returns all default fields plus anything in `fields`. Use this for deep inspection of one campaign.
Show 17 more tools
get_campaign_insightsPull performance metrics for ONE campaign. Default fields: spend, impressions, clicks, cpc, cpm, ctr, reach, frequency, actions, conversions, purchase_roas. Default range: last_7d. Use `breakdowns` for cuts (age, gender, country, placement). Use `time_increment=1` for day-by-day rows.
get_creativeGet a single ad creative by ID.
get_pbiaGet (or auto-create) a Page-Backed Instagram Account for a Facebook Page. Use this when the Page has no linked Instagram account but you want to run ads with IG placements — Meta lets a Page act as its own IG presence via PBIA (same option as 'Use Facebook Page for Instagram' in Ads Manager). Flow: GET the Page's access_token, list existing PBIAs, create one if none exists. Returns {page_backed_instagram_account_id, created (bool)}.
list_ad_accountsList Meta Ad Accounts accessible to the current access token. Returns id (act_XXX), name, account_status, currency, business_name, spend_cap, timezone_name. Use this first to discover what you can work with.
list_adsList ads. Pass either `ad_account_id` (all ads in account), `adset_id` (ads in one ad set), or `campaign_id` (ads in a campaign). Returns id, name, adset_id, creative, status.
list_adsetsList ad sets. Pass either `ad_account_id` (lists all adsets in account) OR `campaign_id` (lists adsets of one campaign). Returns id, name, campaign_id, status, daily_budget, bid_amount, billing_event, optimization_goal, targeting, is_dynamic_creative.
list_campaignsList campaigns in an ad account. Returns id, name, status, objective, daily_budget, lifetime_budget, bid_strategy, created_time. Paginated via `limit` + `after` cursor.
list_creativesList ad creatives in an account. Returns id, name, object_story_spec, asset_feed_spec, thumbnail_url, video_id, image_hash, body/title.
list_pagesList Facebook Pages the current user/System User manages. Each row has id, name, access_token (Page Access Token — needed for PBIA provisioning), category, tasks (what this token can do on the Page, e.g. 'MANAGE', 'CREATE_CONTENT', 'ADVERTISE').
pause_campaigns_batchWRITE (BULK): Pause many campaigns in a single Meta Batch API call (up to 50/request; arrays bigger than 50 are chunked automatically with a 2s delay between chunks to sidestep rate-limit code 17). Returns {results: Array<{code, body}>} — one entry per campaign. `code: 200` = success.
search_ads_librarySearch Meta's public Ad Library for competitive research. Returns active and inactive ads matching `search_terms` OR `search_page_ids` in the selected countries. Default country = ['US']. Returns ad_snapshot_url (preview), creative bodies/titles, page_id, delivery times, publisher_platforms. Note: only ads in categories subject to public transparency (political / housing / employment / credit) return full metadata; other categories return lighter data.
update_adWRITE: Update an ad's name, status, or swap its creative. To replace the creative pass `creative: {creative_id: 'XXX'}`.
update_adsetWRITE: Update any mutable field on an ad set (status, bid_amount, daily_budget, targeting, name, etc.). Pass only the fields you want to change.
update_bids_batchWRITE (BULK): Update `bid_amount` on many ad sets in one Batch API call. Input is an array of {adset_id, bid_amount_cents} pairs. Bid values are in minor currency units (cents). Chunks of 50 automatically.
update_campaignWRITE: Update any mutable field on a campaign (name, status, daily_budget, lifetime_budget, bid_strategy). Pass only the fields you want to change.
upload_imageWRITE: Upload an image to an ad account. Returns {images: {filename: {hash}}}. The `hash` is what you pass to create_ad_creative as image_hash. IMPORTANT: Meta image hashes are SCOPED TO THE AD ACCOUNT — a hash uploaded on account A cannot be used on account B. If you need the same image across multiple accounts, call this once per account. (ScaleForge's backend caches hashes per account to avoid re-uploads within the same account.)
upload_videoWRITE: Upload a video to an ad account. Returns {id, title}. Prefer `file_url` (remote URL Meta fetches server-side) — streaming a local file over MCP stdio is awkward and rarely needed when videos live in S3 / Dropbox / a CDN. Local `file_path` is accepted for completeness but may be blocked on Windows / sandboxed MCP hosts.
Signals
- Stars
- 0
- Forks
- 0
- Open issues
- 0
- Weekly downloads
- 64
- Last commit
- Apr 25, 2026 (6 months ago)
- Last release
- Apr 17, 2026 (6 months ago)
- Last package publish
- Apr 17, 2026 (6 months ago)
From GitHub (fetched Oct 24, 2026) and the package registry.
Details
- Registry name
io.github.Mike25app/scaleforge-mcp-meta-ads- Version
- 0.2.3
- Auth
- API key
- Packages
- npm @getscaleforge/mcp-meta-ads
- License
- MIT
- Website
- getscaleforge.com
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
Done for you
Rather not set it up yourself?
Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.
See how we build AI agents →Read the case studies
Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.
- launches shipped
- 50+
- launches shipped
- media placements
- 500+
- media placements
- founders on every account
- 2
- founders on every account
Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block
Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.
Get Scaleforge MCP Meta Ads running in your business
Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.
Cite this page
Scaleforge MCP Meta Ads. Agent Mart. https://agentmart.dev/connectors/mike25app-scaleforge-mcp-meta-ads (last updated 2026-10-24)