update_ad_set
Modify an ad set's delivery settings, budget allocation, and audience targeting parameters to optimize campaign performance.
Instructions
Update an ad set's delivery, budgeting, and targeting configuration.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| ad_set_id | Yes | ||
| frequency_control_specs | No | ||
| bid_strategy | No | ||
| bid_amount | No | ||
| bid_constraints | No | ||
| status | No | ||
| targeting | No | ||
| optimization_goal | No | ||
| daily_budget | No | ||
| lifetime_budget | No | ||
| is_dynamic_creative | No | ||
| meta_access_token | No |
Implementation Reference
- Handler function for 'update_ad_set' tool. It performs input validation and makes an API request to update the ad set.
@mcp_server.tool() @meta_api_tool async def update_ad_set( ad_set_id: str, frequency_control_specs: Optional[List[Dict[str, Any]]] = None, bid_strategy: Optional[str] = None, bid_amount: Optional[int] = None, bid_constraints: Optional[Dict[str, Any]] = None, status: Optional[str] = None, targeting: Optional[Dict[str, Any]] = None, optimization_goal: Optional[str] = None, daily_budget: Optional[int] = None, lifetime_budget: Optional[int] = None, is_dynamic_creative: Optional[bool] = None, meta_access_token: Optional[str] = None, ) -> str: """Update an ad set's delivery, budgeting, and targeting configuration.""" if not ad_set_id: return _json({"error": "No ad set ID provided"}) bid_error = _validate_bid_controls(bid_strategy, bid_amount, bid_constraints) if bid_error: return _json(bid_error) payload: Dict[str, Any] = {} if frequency_control_specs is not None: payload["frequency_control_specs"] = frequency_control_specs normalized_bid_strategy = _normalize_bid_strategy(bid_strategy) if normalized_bid_strategy is not None: payload["bid_strategy"] = normalized_bid_strategy if bid_amount is not None: payload["bid_amount"] = str(bid_amount) if bid_constraints is not None: payload["bid_constraints"] = json.dumps(bid_constraints) if status is not None: payload["status"] = status if targeting is not None: payload["targeting"] = json.dumps(targeting) if optimization_goal is not None: payload["optimization_goal"] = optimization_goal if daily_budget is not None: payload["daily_budget"] = str(daily_budget) if lifetime_budget is not None: payload["lifetime_budget"] = str(lifetime_budget) if is_dynamic_creative is not None: payload["is_dynamic_creative"] = "true" if bool(is_dynamic_creative) else "false" if not payload: return _json({"error": "No update parameters provided"}) try: result = await make_api_request(ad_set_id, meta_access_token, payload, method="POST") return _json(result) except Exception as exc: # noqa: BLE001 return _json( { "error": f"Failed to update ad set {ad_set_id}", "details": str(exc), "params_sent": payload, } )