Skip to main content
Glama

Opus Growth, Ad Platforms MCP Connector

Update Meta Ad Set

update_meta_adset
Destructive

Updates a Meta ad set (only the fields provided). status: ACTIVE | PAUSED | ARCHIVED. Budget increases are subject to the safety cap. DELIVERY SETTINGS (existing targeting is preserved; only these fields change): • publisher_platforms — narrows placement; comma-separated: facebook,instagram,audience_network,messenger,whatsapp,threads (e.g. "instagram" = Instagram only). • facebook_positions / instagram_positions / whatsapp_positions / messenger_positions / audience_network_positions / threads_positions — the slot INSIDE a platform, comma-separated (facebook/instagram: story, feed, reels…; whatsapp: status). "Story + WhatsApp Status only" = publisher_platforms="facebook,instagram,whatsapp" + facebook_positions="story" + instagram_positions="story" + whatsapp_positions="status". Pass "-" to drop the restriction for that platform (all of its slots come back). See create_meta_adset for the full slot list. • audience_expansion — "off" (turns off Advantage custom audience / audience expansion; prevents a retargeting set from drifting from the list to a cold audience) or "on". TARGETING (omitted fields keep their current value; Meta replaces targeting atomically, so the tool reads the live spec and merges): • age_min / age_max — 18..65. • genders — "1" (men), "2" (women) or "1,2"; "-" CLEARS the restriction (all genders). "" means leave unchanged. Anything else is REJECTED — an invalid value used to silently clear the restriction and widen the ad set to everyone. • countries / regions / cities — comma-separated; region & city KEYS are the numeric key from search_meta_interests(kind="adgeolocation") (NOT the place name). Passing any of them replaces the location set. • places / custom_locations — RADIUS targeting (JSON). places = [{"key":"2034720566774469","radius":5.7,"distance_unit":"mile"}] (a pinned place + drop-radius; key from search_meta_interests(kind="adgeolocation")); custom_locations = [{"latitude":41.01,"longitude":28.97,"radius":10,"distance_unit":"kilometer"}]. distance_unit "mile" (1-50) or "kilometer" (1-80), clamped for you. Passing either replaces the location set. • geo_locations — the raw Meta geo_locations object (from another ad set's targeting.geo_locations) passed through verbatim to reproduce a proven radius/place target; it overrides countries/regions/cities/places/custom_locations, drops the deprecated location_types and clamps radius. • interest_ids — comma-separated interest IDs; "" clears interest targeting (demographic entries are KEPT). • relationship_statuses / education_statuses — comma-separated numeric codes (3 = MARRIED; see create_meta_adset for the full code list). AND-ed with interests, so you can add "married" to an existing interest-targeted set without touching it. • family_statuses / life_events / industries / behaviors — comma-separated IDs from search_meta_interests(kind="adTargetingCategory", category_class=...) — parents & child age brackets, newly-weds/recently-moved, industry, behaviours. Each field you pass replaces only that dimension; the ones you omit are preserved. OPTIMIZATION: • optimization_goal (e.g. OFFSITE_CONVERSIONS) • pixel_id + custom_event_type (e.g. PURCHASE) — fixes an ad set optimizing for the wrong conversion event without rebuilding the campaign. • custom_conversion_id (from list_meta_custom_conversions) — points the ad set at a specific Meta CUSTOM CONVERSION instead of a standard pixel event; keep optimization_goal OFFSITE_CONVERSIONS. custom_conversion_id is MUTUALLY EXCLUSIVE with pixel_id / custom_event_type (Meta rejects the combination with "Promoted Object Invalid") — pass one or the other. NOTE: Meta forbids changing the conversion/optimization of an ALREADY-PUBLISHED ad set (error subcode 3260011 "Can't Make Edits to Published Ad Set"); to switch a live ad set's conversion you must create a new ad set. MESSAGING (Click-to-WhatsApp / click-to-Messenger): • destination_type WHATSAPP | MESSENGER | INSTAGRAM_DIRECT | PHONE_CALL (+ page_id) — pins a CONVERSATIONS ad set's chat destination without rebuilding it (the Page needs a WhatsApp number connected for WHATSAPP). page_id also sets/overrides the messaging promoted_object. confirm=false = preview.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameNo
citiesNo
placesNo
statusNo
age_maxNo
age_minNo
confirmNo
gendersNo
page_idNo
regionsNo
adset_idYes
pixel_idNo
behaviorsNo
countriesNo
account_idYes
industriesNo
life_eventsNo
daily_budgetNo
interest_idsNo
geo_locationsNo
family_statusesNo
custom_locationsNo
destination_typeNo
custom_event_typeNo
optimization_goalNo
threads_positionsNo
audience_expansionNo
education_statusesNo
facebook_positionsNo
whatsapp_positionsNo
instagram_positionsNo
messenger_positionsNo
publisher_platformsNo
custom_conversion_idNo
relationship_statusesNo
audience_network_positionsNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added
  2. Removed
  3. Added
  4. Removed
  5. Added
  6. Removed
  7. Added
  8. Removed
  9. Added
  10. Removed
  11. Added
  12. Removed
  13. Added
  14. Removed
  15. Added
  16. Removed
  17. Added
  18. Removed
  19. Added
  20. Removed
  21. Added
  22. Removed
  23. Added
  24. Removed
  25. Added
  26. Removed
  27. Added
  28. Removed
  29. Added
  30. Removed
  31. Added
  32. Removed
  33. Added
  34. Removed
  35. Added
  36. Removed
  37. Added
  38. Removed
  39. Added

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already mark it destructive/openWorld/non-idempotent, and the description goes well beyond by disclosing the budget safety cap, the atomic targeting merge/read-live behaviour, the 'Promoted Object Invalid' mutual exclusion between custom_conversion_id and pixel_id/custom_event_type, Meta error subcode 3260011, the historical silent-clearing bug for genders, and confirm=false preview semantics.

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

Conciseness4/5

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

It is long and dense, but the length is largely justified by 36 undocumented parameters, and it is front-loaded with the core purpose before grouping settings into labelled sections (DELIVERY SETTINGS, TARGETING, OPTIMIZATION, MESSAGING). Some examples (e.g. the Story+WhatsApp Status walkthrough) could be trimmed without losing meaning.

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

Completeness5/5

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

Given a destructive mutation tool with 36 params at 0% schema coverage, this description supplies the merge semantics, value encodings, validation rules, and Meta-specific failure modes an agent needs. An output schema exists, so return-value detail is correctly omitted.

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

Parameters5/5

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

Schema coverage is 0% across 36 params, so the description carries the full burden and does so: it defines clear semantics for '-' (drop restriction), '' (leave unchanged), the numeric key requirement for regions/cities, the JSON shape of places/custom_locations, and the codes for genders/relationship_statuses. Only a few purely administrative params (name, account_id, adset_id, daily_budget) are left to common sense.

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?

Opens with a specific verb+resource and a scoping rule ('only the fields provided'), then distinguishes itself from the sibling create_meta_adset by referencing it for the full slot list. An agent can identify the tool immediately.

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

Usage Guidelines5/5

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

Explicit when/when-not guidance: it states that changing the conversion of an ALREADY-PUBLISHED ad set is forbidden and requires creating a new ad set, names list_meta_custom_conversions and search_meta_interests as prerequisite lookup tools, and explains that omitted fields are preserved. Alternatives and exclusions are spelled out.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.