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
| 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 |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| result | Yes |
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, } )