tools/call over
POST /meta-ads/mcp. The connector is connected through OAuth (Facebook Login; see
Forbind Meta Ads).
Endpoint:
https://mcp.consile.ai/meta-ads/mcp. Meta Ads is its own named
connector with only its own tools.Write safety: guardrail model
The five write tools (create_campaign, create_ad_set, create_ad,
update_status, update_budget) share a connector-local guardrail:
- New objects are always created
PAUSED. Nothing spends until you explicitly activate. Passstatus: "ACTIVE"only when you are ready to launch, and always withconfirm: true. - Spend, budget, and archival actions require
confirm: true. These are: setting status toACTIVE(spend starts), setting status toARCHIVED(permanent disable), and any budget change. Withoutconfirm: true, the tool returns aWritePreviewdry-run and calls no Meta API. - Pausing is always safe. Setting
status: "PAUSED"does not require confirmation. - There is no hard-delete. Removal is archival (
status: "ARCHIVED").
WritePreview shape
When a write action requires confirmation butconfirm is omitted or false, every
write tool returns this shape instead of calling Meta:
confirm: true added.
CREATE_DEFAULT_STATUS
The default initial status for all create tools isPAUSED. The connector enforces
this as a defense-in-depth fallback even if status is absent in the call.
Shared parameters
Ad account id
All account-scoped tools acceptadAccountId in either the act_<digits> form or
as bare digits. The connector normalizes to act_<digits> before calling the Graph
API.
Date window / preset
The insights tools accept either an explicit date range or a preset:Start of an explicit window. Must be paired with
toDate.End of the window.
A Meta date preset, used when
fromDate/toDate are omitted. Allowed values:
today, yesterday, last_7d, last_14d, last_28d, last_30d, last_90d,
this_week_mon_sun, last_week_mon_sun, this_month, last_month,
this_quarter, maximum.limit
Maximum rows to return. The client paginates internally (cursor-based, up to 25
pages) and caps at
5000. Default 100.Money fields (minor units)
Budget and bid arguments on the write tools use minor units of the account currency (e.g.5000 = 50.00 DKK/EUR/USD). Insights money fields (spend,
cpc, cpm) are returned as Meta delivers them: decimal strings in the account
currency’s major unit.
Read tools: accounts & structure (34 total)
list_ad_accounts
List the Meta ad accounts the connected login can access. Use this as the first call to discover theact_<id> required by all other tools.
count, data[] with account_id, id, name, account_status,
currency, timezone_name, business.
get_account_info
Read one ad account’s profile.Meta ad account id (
act_<digits> or bare digits).account_id, name, account_status, currency, timezone_name,
amount_spent, spend_cap, balance, business.
get_account_billing_summary
Spend posture for one account: caps, balances, prepay status, and disable reason. Does not include payment-instrument data.spend_cap, amount_spent, balance, currency,
is_prepay_account, account_status, disable_reason, min_daily_budget.
list_campaigns
List campaigns with status, objective, budgets and schedule.Filter by
effective_status. Allowed values: ACTIVE, PAUSED, DELETED,
ARCHIVED, IN_PROCESS, WITH_ISSUES.id, name, objective, status, effective_status,
buying_type, daily_budget, lifetime_budget, bid_strategy, start_time,
stop_time, special_ad_categories, created_time, updated_time.
list_ad_sets
List ad sets. Optionally scope to one campaign.Scope to one campaign id (bare digits).
id, name, campaign_id, status, effective_status,
optimization_goal, billing_event, bid_strategy, bid_amount,
daily_budget, lifetime_budget, start_time, end_time.
list_ads
List ads. Optionally scope to one ad set.Scope to one ad set id.
id, name, adset_id, campaign_id, status,
effective_status, creative{id}, created_time, updated_time.
Read tools: creatives & assets
list_creatives
List ad creatives (identity-level) for the account.id, name, title, body, object_type,
call_to_action_type, thumbnail_url, image_url,
instagram_permalink_url, effective_object_story_id.
list_ad_creatives_detail
Every creative with fully hydrated content (object_story_spec, CTA, image_url,
video_id, link_url, url_tags) for messaging and UTM audits.
list_creatives plus object_story_id,
object_story_spec, image_hash, video_id, link_url, url_tags.
get_ad_creative
Full creative detail for one creative id: what does this ad actually say, show, or link to.Numeric Graph creative id (bare digits).
object_story_spec, CTA,
image_url, image_hash, video_id, url_tags, page and Instagram ids.
get_ad_creative_asset_feed_spec
Theasset_feed_spec of a Dynamic or Advantage+ creative: candidate images,
videos, bodies, titles, descriptions, link URLs, CTA options and customization
rules. For dynamic ads the flat fields are empty; this is the only read of
the variants.
id, name, asset_feed_spec, degrees_of_freedom_spec,
object_type.
get_ad_preview
Render a placement preview of an existing ad (same render as Ads Manager).Numeric Graph ad id.
A Meta
ad_format enum, e.g. MOBILE_FEED_STANDARD, INSTAGRAM_STORY,
FACEBOOK_REELS_MOBILE, DESKTOP_FEED_STANDARD./previews edge.
list_ad_images
Account image library with viewable URLs. Resolves a creative’simage_hash.
hash, name, url, url_128, permalink_url, width,
height, status, created_time.
Read tools: insights & performance
All insights tools accept the shared date window / preset andlimit parameters.
account_insights
Account-level performance headline: impressions, reach, clicks, spend, CTR, CPC, CPM, frequency, actions.campaign_insights
Per-campaign performance. Optionally scope to one campaign.Scope to one campaign id.
ad_set_insights
Per-ad-set performance. Optionally scope to one ad set.Scope to one ad set id.
ad_insights
Per-ad (finest granularity) performance. Optionally scope to one ad.Scope to one ad id.
insights_by_breakdown
Performance split by a demographic, geographic or delivery dimension.One of:
age, gender, country, region, dma, publisher_platform,
platform_position, impression_device, device_platform.Aggregation level:
account, campaign, adset, or ad.get_conversion_actions
Conversions broken out byaction_type (purchase, lead, add_to_cart,
registration, landing_page_view) with cost_per_action_type, conversions,
conversion_values, cost_per_conversion: how many leads/purchases and what
did each cost.
get_reach_and_frequency
Deduplicated audience view: reach, frequency, unique clicks, unique CTR, cost_per_unique_click. Optional daily time series.If
true, return a per-day time series (time_increment=1).get_video_metrics
Video-engagement funnel: plays, % watched (25/50/75/95/100), ThruPlay, 30-sec, average time watched,cost_per_thruplay.
creative_asset_insights_breakdown
Per-asset performance inside a Dynamic or Advantage+ ad: which image, video, headline, body, description, or CTA variant drives results. Ad-level only.A single ad id (bare digits).
Read tools: tracking config
list_pixels
Meta Pixels/datasets with health metadata. Returns metadata only (no event payloads).id, name, last_fired_time, data_use_setting,
enable_automatic_matching, is_unavailable, creation_time.
list_custom_conversions
Custom conversions and their configuration: source pixel, rule, event type, default value, archive status.id, name, pixel, rule, custom_event_type,
default_conversion_value, is_archived, creation_time.
Read tools: audiences & planning
list_custom_audiences
Custom Audiences metadata only (Meta stores only hashes; no member data is ever returned): name, subtype, approximate size bounds, operation/delivery status.id, name, subtype, description,
approximate_count_lower_bound, approximate_count_upper_bound,
operation_status, delivery_status, retention_days, data_source,
is_value_based.
list_saved_audiences
Saved (reusable) targeting audiences with their full targeting spec,sentence_lines, and approximate size. Configuration data, not member data.
id, name, description, targeting, approximate_count_lower_bound,
approximate_count_upper_bound, run_status, sentence_lines.
estimate_reach
Estimated reachable audience size for a targeting spec before spending. Returns an aggregate count (no individuals).A Meta
targeting_spec as a JSON string,
e.g. '{"geo_locations":{"countries":["DK"]}}'.users (aggregate estimate), estimate_ready.
search_targeting_interests
Search the interest-targeting taxonomy by free text.Free-text interest query, e.g.
running shoes.id, name, type, audience size bounds, path (breadcrumb),
topic.
Read tools: account audit
list_account_activities
Account change log: budget edits, status flips, targeting changes.Only events on or after this date.
Only events on or before this date.
event_type, translated_event_type, event_time, object_id,
object_name, actor_id, actor_name, extra_data.
list_automated_rules
Automated ad rules: triggers, filters, scheduled action (pause/scale/etc.). Shows what automation is running and what it would do.id, name, status, evaluation_spec, execution_spec,
schedule_spec, created_by.
Read tools: leads & pages
Lead
field_data carries personal data (name, email, phone). The platform is
read-through only: leads are fetched on demand and returned to your AI
assistant; they are never persisted by Consile.list_pages
List the Facebook Pages the connected user manages. The first call for the leads workflow: lead forms live on a Page.id, name, category, tasks.
list_lead_forms
List the Lead-Ads forms on a Page.A Page id (from
list_pages).id, name, status, locale, created_time, leads_count.
list_leads
Read the leads captured by a lead form.A lead form id (from
list_lead_forms).id, created_time, ad_id, adset_id, campaign_id,
form_id, platform, field_data (submitted answers; may contain personal data).
get_lead
Read one lead by id.A lead id (from
list_leads).list_leads for the single record.
Read tools: advanced / escape hatch
query
Advanced read: GET any Graph node or edge with a safelisted set of read parameters. Read-only by construction (GET-only). For the long tail not covered by a dedicated tool.A bare Graph path, e.g.
act_1234567890/campaigns or 23847239847. No scheme,
no .., no query string.Read params; only safelisted keys are forwarded (all others are dropped). Allowed
keys:
fields, time_range, date_preset, level, breakdowns,
action_breakdowns, filtering, time_increment, limit, after, sort,
effective_status.Write tools (5 guardrailed)
create_campaign
Create a new campaign. CreatedPAUSED by default.
Campaign name.
Campaign objective (ODAX). One of:
OUTCOME_TRAFFIC, OUTCOME_AWARENESS,
OUTCOME_ENGAGEMENT, OUTCOME_LEADS, OUTCOME_SALES, OUTCOME_APP_PROMOTION.Initial status.
ACTIVE requires confirm: true.Special ad categories, e.g.
HOUSING, EMPLOYMENT, CREDIT,
ISSUES_ELECTIONS_POLITICS. Pass [] if none.Set
true to apply when status is ACTIVE (starts spend) or ARCHIVED.
Omit or false to receive a WritePreview.status is ACTIVE or ARCHIVED.
create_ad_set
Create an ad set under a campaign. CreatedPAUSED by default.
Parent campaign id (bare digits).
Daily budget in minor units (e.g.
5000 = 50.00). Provide daily OR lifetime.Lifetime budget in minor units.
e.g.
IMPRESSIONS, LINK_CLICKS, THRUPLAY, POST_ENGAGEMENT.e.g.
LINK_CLICKS, LANDING_PAGE_VIEWS, OFFSITE_CONVERSIONS, REACH,
THRUPLAY.Meta
targeting_spec as a JSON string,
e.g. '{"geo_locations":{"countries":["DK"]}}'.Bid cap in minor units (optional).
ISO 8601 start time (optional).
ISO 8601 end time (optional).
Initial status.
ACTIVE requires confirm: true.status is ACTIVE or ARCHIVED.
create_ad
Create an ad under an ad set from an existing creative. CreatedPAUSED by default.
Parent ad set id (bare digits).
An existing ad creative id (from
list_creatives). Building creatives from
scratch (image/video upload) is not supported by this connector.Initial status.
ACTIVE requires confirm: true.status is ACTIVE or ARCHIVED.
update_status
Set a campaign, ad set, or ad toPAUSED, ACTIVE, or ARCHIVED.
A campaign, ad set, or ad id (bare digits).
Target status:
ACTIVE, PAUSED, or ARCHIVED.ACTIVE (spend starts) and ARCHIVED (permanent disable).
Pausing (PAUSED) is immediately safe (no confirmation needed).
update_budget
Change the daily or lifetime budget of a campaign or ad set. Always requires confirmation (it changes spend).A campaign or ad set id (bare digits).
New daily budget in minor units. Provide daily OR lifetime.
New lifetime budget in minor units.
Must be
true to apply. Omit to receive a WritePreview.Code examples
Tool names are namespaced
meta-ads__<tool> in Claude/ChatGPT (the AI invokes
these automatically). The bare names (e.g. list_campaigns) are used here for
readability.An expired or revoked access token returns
AccessTokenExpiredError (“Meta access
token has expired; reconnect required”). Reconnect via the portal to issue a new
long-lived token. See Errors & limits.