Ducto

Meta Ads

Facebook and Instagram campaigns, from creative to insights

Your agent runs Meta accounts across the full hierarchy — campaigns, ad sets, ads, and creatives — plus duplication and insights. Twelve of the 23 tools write, and every one of them answers to your policy row.

23 tools11 read12 writemcp.getducto.com/meta-ads
connect the meta-ads mount

$ claude mcp add --transport http meta-ads \

https://mcp.getducto.com/meta-ads

✓ connected — 23 tools

read-only until you set a policy

What your agent does here

Real Meta Ads work, in conversation

Build the full hierarchy

Create campaigns, ad sets, creatives, and ads — created paused, budgets capped by policy.

meta_create_campaignmeta_create_adsetmeta_create_ad_creativemeta_create_ad

Duplicate what works

Clone campaigns, ad sets, and ads to iterate on winners without rebuilding from scratch.

meta_duplicate_campaignmeta_duplicate_adsetmeta_duplicate_ad

Read performance, then act

Insights across the account plus per-object reads, so budget moves are grounded in data.

meta_insightsmeta_list_campaignsmeta_get_ad

Governed writes

How writes are enforced

Budget updates and status flips clear your caps before execution. New objects are created paused, so a campaign your agent builds can never start spending without a deliberate enable.

read-only defaultcaps ← policy rowpreview before applyapproval on flagged classeshash-chained audit

The full request path is on the security architecture page.

Tool reference

Every tool in the meta-ads mount

Generated from the running gateway's tool registry — this is the complete list, not a highlight reel.

meta_create_adwriteCreate an ad (paused by default; ``creative_id`` xor ``creative_spec``).
meta_create_ad_creativewriteCreate a link-ad creative (``object_story_spec.link_data``).
meta_create_adsetwriteCreate an ad set (paused by default; budgets capped; lifetime needs ``end_time``).
meta_create_campaignwriteCreate a campaign (paused by default; budgets in major units, capped).
meta_duplicate_adwriteDuplicate an ad (optionally into another ad set; the copy is PAUSED by default).
meta_duplicate_adsetwriteDuplicate an ad set (optionally into another campaign; ``deep_copy`` includes ads; the copy is PAUSED by default).
meta_duplicate_campaignwriteDuplicate a campaign (native ``/copies``; ``deep_copy`` includes ad sets + ads; the copy is PAUSED by default).
meta_get_adreadFetch one ad node.
meta_get_ad_accountreadFetch one ad account node (fields include ``currency``).
meta_get_ad_creativereadFetch one ad creative node.
meta_get_adsetreadFetch one ad set node.
meta_get_campaignreadFetch one campaign node.
meta_insightsreadInsights for any node (account/campaign/adset/ad); ``date_preset`` or ``time_range``.
meta_list_activitiesreadChange/activity log for an ad account or ad set.
meta_list_ad_accountsreadList the ad accounts the token's user can access (``/me/adaccounts``).
meta_list_adsreadList ads under exactly one parent (account, campaign, or ad set).
meta_list_adsetsreadList ad sets under exactly one parent (account or campaign).
meta_list_campaignsreadList campaigns under an ad account (Graph ``filtering``/``effective_status`` passthrough).
meta_set_statuswriteChange a campaign/adset/ad status (ACTIVE/PAUSED/ARCHIVED/DELETED — DELETED destructive).
meta_update_adwriteUpdate an ad from API-shaped fields.
meta_update_adsetwriteUpdate an ad set from API-shaped fields (budget fields cap-checked, minor units).
meta_update_budgetwriteChange a campaign (CBO) or ad-set budget (major units, capped, converted to minor).
meta_update_campaignwriteUpdate a campaign from API-shaped fields (budget fields cap-checked, minor units).

More in the Paid social & search stack

Connect Meta Ads