Skip to main content
Glama
EfrainTorres

ArmaVita Meta Ads MCP

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
NameRequiredDescriptionDefault
ad_set_idYes
frequency_control_specsNo
bid_strategyNo
bid_amountNo
bid_constraintsNo
statusNo
targetingNo
optimization_goalNo
daily_budgetNo
lifetime_budgetNo
is_dynamic_creativeNo
meta_access_tokenNo

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,
                }
            )

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/EfrainTorres/armavita-meta-ads-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server