Skip to main content
Glama

create_ad

Create new Meta ads using existing creatives by specifying account, ad set, creative ID, and optional bid or tracking parameters.

Instructions

Create a new ad with an existing creative. Args: account_id: Meta Ads account ID (format: act_XXXXXXXXX) name: Ad name adset_id: Ad set ID where this ad will be placed creative_id: ID of an existing creative to use status: Initial ad status (default: PAUSED) bid_amount: Optional bid amount in account currency (in cents) tracking_specs: Optional tracking specifications (e.g., for pixel events). Example: [{"action.type":"offsite_conversion","fb_pixel":["YOUR_PIXEL_ID"]}] access_token: Meta API access token (optional - will use cached token if not provided) Note: Dynamic Creative creatives require the parent ad set to have `is_dynamic_creative=true`. Otherwise, ad creation will fail with error_subcode 1885998.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
account_idYes
nameYes
adset_idYes
creative_idYes
statusNoPAUSED
bid_amountNo
tracking_specsNo
access_tokenNo

Implementation Reference

  • The main handler function for the 'create_ad' tool. Decorated with @mcp_server.tool() which registers it as an MCP tool, and @meta_api_tool for API handling. Creates a new ad in the Meta Ads API using the provided parameters by making a POST request to /{account_id}/ads endpoint.
    @mcp_server.tool() @meta_api_tool async def create_ad( account_id: str, name: str, adset_id: str, creative_id: str, status: str = "PAUSED", bid_amount: Optional[int] = None, tracking_specs: Optional[List[Dict[str, Any]]] = None, access_token: Optional[str] = None ) -> str: """ Create a new ad with an existing creative. Args: account_id: Meta Ads account ID (format: act_XXXXXXXXX) name: Ad name adset_id: Ad set ID where this ad will be placed creative_id: ID of an existing creative to use status: Initial ad status (default: PAUSED) bid_amount: Optional bid amount in account currency (in cents) tracking_specs: Optional tracking specifications (e.g., for pixel events). Example: [{"action.type":"offsite_conversion","fb_pixel":["YOUR_PIXEL_ID"]}] access_token: Meta API access token (optional - will use cached token if not provided) Note: Dynamic Creative creatives require the parent ad set to have `is_dynamic_creative=true`. Otherwise, ad creation will fail with error_subcode 1885998. """ # Check required parameters if not account_id: return json.dumps({"error": "No account ID provided"}, indent=2) if not name: return json.dumps({"error": "No ad name provided"}, indent=2) if not adset_id: return json.dumps({"error": "No ad set ID provided"}, indent=2) if not creative_id: return json.dumps({"error": "No creative ID provided"}, indent=2) endpoint = f"{account_id}/ads" params = { "name": name, "adset_id": adset_id, "creative": {"creative_id": creative_id}, "status": status } # Add bid amount if provided if bid_amount is not None: params["bid_amount"] = str(bid_amount) # Add tracking specs if provided if tracking_specs is not None: params["tracking_specs"] = json.dumps(tracking_specs) # Needs to be JSON encoded string try: data = await make_api_request(endpoint, access_token, params, method="POST") return json.dumps(data, indent=2) except Exception as e: error_msg = str(e) return json.dumps({ "error": "Failed to create ad", "details": error_msg, "params_sent": params }, indent=2)
  • The @mcp_server.tool() decorator registers the create_ad function as an MCP tool named 'create_ad'. @meta_api_tool adds additional API-specific functionality.
    @mcp_server.tool() @meta_api_tool

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/pipeboard-co/meta-ads-mcp'

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