create_ad
Create and configure Meta ads by specifying ad account, name, ad set, creative, and settings like bid amount and tracking specifications.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| ad_account_id | Yes | ||
| name | Yes | ||
| ad_set_id | Yes | ||
| ad_creative_id | Yes | ||
| status | No | PAUSED | |
| bid_amount | No | ||
| tracking_specs | No | ||
| meta_access_token | No |
Implementation Reference
- The 'create_ad' tool is implemented as an async function in 'src/armavita_meta_ads_mcp/core/ad_tools.py'. It takes several arguments like 'ad_account_id', 'name', 'ad_set_id', and 'ad_creative_id', validates them, constructs a payload, and sends a POST request to the Meta Graph API to create the ad.
async def create_ad( ad_account_id: str, name: str, ad_set_id: str, ad_creative_id: str, status: str = "PAUSED", bid_amount: Optional[int] = None, tracking_specs: Optional[List[Dict[str, Any]]] = None, meta_access_token: Optional[str] = None, ) -> str: if not ad_account_id: return _json({"error": "No account ID provided"}) if not name: return _json({"error": "No ad name provided"}) if not ad_set_id: return _json({"error": "No ad set ID provided"}) if not ad_creative_id: return _json({"error": "No creative ID provided"}) payload: Dict[str, Any] = { "name": name, "ad_set_id": ad_set_id, "creative": {"ad_creative_id": ad_creative_id}, "status": status, } if bid_amount is not None: payload["bid_amount"] = str(bid_amount) encoded_tracking = _build_tracking_specs(tracking_specs) if encoded_tracking is not None: payload["tracking_specs"] = encoded_tracking result = await make_api_request(f"{ad_account_id}/ads", meta_access_token, payload, method="POST") return _json(result)