On this page
Meta Ads
Last updated
Connect a Meta (Facebook/Instagram) Ads account to a vTilt project, then read insights and manage campaigns, ad sets, ads, product catalogs, and datasets through the vTilt MCP server — no separate Meta Ads MCP server required.
vTilt can manage your Meta Ads account (Facebook and Instagram advertising) through the same MCP endpoint your AI client already uses for analytics. There is no second server to run: the meta_ads_* tools live in the meta-ads toolset (plus optional catalog and dataset toolsets). Calls succeed only after you connect an account in project settings (otherwise the server returns feature_disabled).
#Connect Meta Ads (required first)
The Meta Ads tools stay hidden until a project has a connected account; once connected, the core tools are auto-listed for that project.
- Open Project → Settings → Meta Ads.
- Click Connect Meta Ads and complete the Meta consent screen. vTilt requests the
ads_read,ads_management,business_management, andcatalog_managementscopes. - After the redirect, vTilt discovers the ad accounts you can access and lists them. Pick the default ad account the tools should use when a call doesn't name one.
vTilt stores the long-lived access token encrypted at rest and holds the platform app secret server-side. Your AI client never sees or sends credentials — tool inputs accept neither an access token nor a user id.
To stop access, click Disconnect on the same page — vTilt deletes the stored token and linked accounts. Enabled tools stay in tools/list; calls return feature_disabled until you connect again.
After switch_project, check features.meta_ads in the tool response (or call get_context). Call meta_ads_* tools as soon as that flag is true — re-run tools/list only if your MCP client caches the catalog.
#Permissions
Meta Ads access is gated by a dedicated meta_ads permission resource:
| Action | Who has it | What it allows |
|---|---|---|
meta_ads:read | members and above | List accounts, read campaigns/ad sets/ads, insights, catalogs, datasets |
meta_ads:write | owners and admins | Create / update / activate campaigns, ad sets, ads, and catalog products |
Write tools additionally require a write-scoped credential (an mcp:write OAuth scope or a personal API key with write access), and every write is recorded in the project audit log.
Every tool takes an optional ad_account_id (act_1234567890 or the bare 1234567890 — both work). Omit it to use the project's default account. The account must be one of those linked to the project — call meta_ads_get_ad_accounts to see them.
#Reading account data
meta_ads_get_ad_accounts— see which ad accounts are linked to the project and which is the default.meta_ads_get_ad_entities— list campaigns, ad sets, or ads (level: campaign | adset | ad) with optionalfields,effective_status, andlimit.meta_ads_get_insights— performance metrics (impressions, clicks, spend, reach, CTR, CPC, CPM, actions) for the account or a specific object, over adate_presetor explicittime_range.
#More read tools
| Tool | Does |
|---|---|
meta_ads_insights_performance_trend | Insights split by time_increment to show a metric trend over time. |
meta_ads_insights_demographic_breakdown | Insights broken down by age and gender. |
meta_ads_insights_placement_breakdown | Insights broken down by publisher platform and placement. |
meta_ads_get_pages_for_business | The Facebook Pages you manage (a page_id is needed when creating Page-linked ads). |
#Managing the account (writes)
New campaigns, ad sets, and ads are created PAUSED by default so nothing starts spending before you review it. Activate them explicitly with meta_ads_activate_entity.
| Tool | Does |
|---|---|
meta_ads_create_campaign | Create a campaign (name, objective, special_ad_categories, optional budgets/bid strategy). |
meta_ads_create_ad_set | Create an ad set under a campaign (optimization_goal, billing_event, targeting, budgets). |
meta_ads_create_ad | Create an ad under an ad set (creative — a { creative_id } or a full object_story_spec). |
meta_ads_update_entity | Change fields on an existing campaign / ad set / ad (rename, budget, bid, targeting, status). |
meta_ads_activate_entity | Set a campaign / ad set / ad to ACTIVE (start spending). |
#Product catalogs and datasets (opt-in toolsets)
The meta-ads-catalog toolset (add ?toolsets=meta-ads-catalog) covers product catalog management: create catalogs, add/list/update/delete products, create product sets, and read catalog diagnostics. The meta-ads-datasets toolset (add ?toolsets=meta-ads-datasets) covers dataset (pixel / Conversions API) quality: details, diagnostics, stats, and event coverage. Both require the same meta_ads:read / meta_ads:write permissions.
#Troubleshooting
| Message | Meaning | Fix |
|---|---|---|
feature_disabled (feature: meta_ads) | No Meta Ads account is connected, or the token expired | Connect / reconnect in Project → Settings → Meta Ads |
invalid_arguments with next: meta_ads_get_ad_accounts | The ad_account_id you passed isn't linked to this project | Call meta_ads_get_ad_accounts and use a listed account, or set a default |
{ "available": false } envelope | The tool wraps a Meta surface with no public Marketing API endpoint | Use meta_ads_get_insights / Ads Manager as the reason field suggests |
| The core tools don't appear at all | Not connected, no project pinned, or key lacks meta_ads:read | Connect the account / pin a project / check your permissions |
| The catalog or dataset tools don't appear | Those toolsets are opt-in and not pinned | Add ?toolsets=meta-ads-catalog / ?toolsets=meta-ads-datasets to your MCP URL |
| Reconnect prompt in settings | The long-lived token expired or was revoked | Click Connect Meta Ads again |