Skip to main content
Glama
attainmentlabs

meta-ads-manager-mcp

create_meta_campaign

Create a complete Meta ad campaign with campaign, ad set, creatives, and ads in one call. Simulate with dry run first, then deploy paused campaigns with confirmed budget and targeting.

Instructions

Create a complete Meta ad campaign: campaign, ad set, creatives, and ads.

Each item in ads is a dict with:

  • name (str): ad name

  • image_path (str): absolute path to image file on disk

  • primary_text (str): ad body copy

  • headline (str): ad headline

  • link (str): destination URL

  • cta (str, optional): call-to-action button, default "LEARN_MORE"

  • description (str, optional): ad description text

daily_budget_cents: budget in cents. 1000 = $10/day, 3000 = $30/day.

dry_run: when True (default), simulates all API calls without spending money. Set dry_run=False to actually deploy. All campaigns start as PAUSED regardless. confirm: required when dry_run=False. This is the approval gate.

Valid objectives: OUTCOME_TRAFFIC, OUTCOME_AWARENESS, OUTCOME_ENGAGEMENT, OUTCOME_LEADS, OUTCOME_SALES, OUTCOME_APP_PROMOTION

Valid CTAs: LEARN_MORE, SIGN_UP, DOWNLOAD, SHOP_NOW, BOOK_NOW, GET_OFFER, SUBSCRIBE, CONTACT_US, APPLY_NOW, WATCH_MORE, INSTALL_MOBILE_APP

Input Schema

NameRequiredDescriptionDefault
adsNo
age_maxNo
age_minNo
confirmNo
dry_runNo
countriesNo
objectiveNoOUTCOME_TRAFFIC
ad_set_nameYes
campaign_nameYes
optimization_goalNoLINK_CLICKS
daily_budget_centsNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.2.0

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden, and it does disclose meaningful behavior: dry_run=True simulates without spending money, dry_run=False actually deploys, confirm is the approval gate, and all campaigns start PAUSED. This is strong safety-relevant disclosure. It stops short of covering permissions/auth, rate limits, partial-failure or rollback behavior on multi-object creation, and what identifiers are returned.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded in the first line, followed by a tight bulleted parameter reference and enum lists; there is no filler or redundant restatement. Every block earns its place by documenting information the schema leaves blank.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 11-parameter, money-spending mutation tool with no annotations and no output schema, the description covers the critical unknowns: dry_run/confirm semantics, pause-on-create default, and enum vocabularies. It omits what the call returns (campaign/ad IDs), failure semantics, and a few parameters, but the essentials for safe invocation are present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it does substantially: it fully documents the nested ads dict fields (name, image_path, primary_text, headline, link, cta, description), explains daily_budget_cents with concrete examples (1000 = $10/day), and enumerates valid objective and CTA values. Gaps remain for optimization_goal, countries, age_min/age_max, and the two name params, which explain why this is not a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence gives a specific verb ('Create') and a compound resource ('a complete Meta ad campaign: campaign, ad set, creatives, and ads'), which precisely scopes it against the sibling list/update/pause/delete tools. An agent can immediately tell this is the only tool that provisions a whole campaign tree rather than reading or mutating an existing one.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use the tool (creating a campaign) and gives workflow context: dry_run defaults to True and confirm is required to deploy. However, it never names alternatives or states explicit exclusions — e.g., whether image upload must precede this call given it accepts image_path, or how this relates to upload_ad_image. Usage is inferable but not spelled out.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.