> ## Documentation Index
> Fetch the complete documentation index at: https://docs.adsmcp.si/llms.txt
> Use this file to discover all available pages before exploring further.

# create_meta_catalog_campaign

> Launch an Advantage+ catalog (dynamic product ads) campaign, created PAUSED: create_campaign (OUTCOME_SALES, promoted_object.product_catalog_id, daily budget) -> create_ad_set (promoted_object.product

> [!WARNING]
>
> **Change — approval required.** Calling this tool does not change your ad account. ADSMCP checks the arguments and stages the change as a pending action. It runs only after a person approves it on the dashboard [Approvals](https://adsmcp.si/dashboard/approvals) page. Over MCP or REST you can view (`list_pending_actions`) or reject (`manage_action`) it, never approve it. `execution_mode` and similar arguments do not skip the queue.
>
> New campaigns, ad groups, ads and creatives are created paused or as drafts, so nothing starts spending when the approved change runs.
>
> A change that fails when it runs is not retried automatically. It shows on the dashboard Execution Queue.

Launch an Advantage+ catalog (dynamic product ads) campaign, created PAUSED: create\_campaign (OUTCOME\_SALES, promoted\_object.product\_catalog\_id, daily budget) -> create\_ad\_set (promoted\_object.product\_set\_id + the conversion event, OFFSITE\_CONVERSIONS; with retargeting\_window\_days it targets people who viewed or added to cart in that window and did not buy, otherwise it is prospecting) -> create\_meta\_catalog\_ad (a template creative on the product set). Every step is staged for dashboard approval: the tool stops at the first staged step and returns the rest; after approval use the id Meta returned in place of each \{"\$fromStep": n} reference.

**Platform:** Meta Ads · **Type:** Change

## How to call it

* **MCP:** on `https://mcp.adsmcp.si/mcp`, run it through the `meta_ads_write` tool with `{"action": "execute", "tool_name": "create_meta_catalog_campaign", "arguments": { ... }}`, or call `create_meta_catalog_campaign` by name. `search_tools` finds it and `get_tool_schema` returns its arguments; `https://mcp.adsmcp.si/mcp/flat` lists every tool by name.
* **REST:** `POST https://mcp.adsmcp.si/api/v1/tools/create_meta_catalog_campaign/execute` with `Authorization: Bearer sk_live_...` and a JSON body `{"platform": "meta", "arguments": { ... }}`. The arguments are listed below; they are exactly the tool's input schema.


## OpenAPI

````yaml api-reference/openapi.json POST /api/v1/tools/create_meta_catalog_campaign/execute
openapi: 3.1.0
info:
  title: ADSMCP REST API
  version: 0.1.0
  description: >-
    ADSMCP REST API: every public ADSMCP tool as POST
    /api/v1/tools/{name}/execute. Generated from the ADSMCP code (the service
    serves the same document at GET /api/v1/openapi.json). Changes to ad
    accounts are staged for approval by a person on the ADSMCP dashboard;
    nothing in this API can approve them.
servers:
  - url: https://mcp.adsmcp.si
    description: ADSMCP MCP and REST service
security: []
paths:
  /api/v1/tools/create_meta_catalog_campaign/execute:
    post:
      tags:
        - meta
      summary: >-
        Launch an Advantage+ catalog (dynamic product ads) campaign, created
        PAUSED: create_campaign (OUTCOME_SALES,
        promoted_object.product_catalog_id, daily budget) -> create_ad_set
        (promoted_object.product_set_id + the conversion event,
        OFFSITE_CONVERSIONS; with retargeting_window_days it targets people who
        viewed or added to cart in that window and did not buy, otherwise it is
        prospecting) -> create_meta_catalog_ad (a template creative on the
        product set). Every step is staged for dashboard approval: the tool
        stops at the first staged step and returns the rest; after approval use
        the id Meta returned in place of each {"$fromStep": n} reference.
      description: >-
        Launch an Advantage+ catalog (dynamic product ads) campaign, created
        PAUSED: create_campaign (OUTCOME_SALES,
        promoted_object.product_catalog_id, daily budget) -> create_ad_set
        (promoted_object.product_set_id + the conversion event,
        OFFSITE_CONVERSIONS; with retargeting_window_days it targets people who
        viewed or added to cart in that window and did not buy, otherwise it is
        prospecting) -> create_meta_catalog_ad (a template creative on the
        product set). Every step is staged for dashboard approval: the tool
        stops at the first staged step and returns the rest; after approval use
        the id Meta returned in place of each {"$fromStep": n} reference. Use
        this when you intend that change. Write tools create paused objects or
        wait for approval, and a failed spend-affecting call is not retried
        automatically.
      operationId: execute_create_meta_catalog_campaign
      parameters:
        - name: Authorization
          in: header
          required: true
          schema:
            type: string
          description: Bearer token
        - name: Idempotency-Key
          in: header
          required: false
          schema:
            type: string
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                platform:
                  type: string
                  default: meta
                arguments:
                  type: object
                  properties:
                    account_id:
                      type: string
                      description: >-
                        Meta ad account id (act_... or the bare number). Alias:
                        ad_account_id.
                    ad_account_id:
                      type: string
                      description: Alias of account_id.
                    name:
                      type: string
                      description: >-
                        Campaign name; the ad set and ad are named after it
                        unless ad_set_name / ad_name are given.
                    catalog_id:
                      type: string
                      description: Product catalog id (see get_meta_product_catalogs).
                    product_set_id:
                      type: string
                      description: Product set the ads show (see get_meta_product_sets).
                    daily_budget:
                      type: integer
                      minimum: 1
                      description: >-
                        Campaign daily budget in the currency's minor units
                        (e.g. cents).
                    special_ad_categories:
                      type: array
                      items:
                        type: string
                      description: Meta special ad categories (default none).
                    targeting:
                      type: object
                      additionalProperties: true
                      description: >-
                        Ad set targeting, e.g. { geo_locations: { countries:
                        ['US'] } }.
                    retargeting_window_days:
                      type: integer
                      minimum: 1
                      maximum: 180
                      description: >-
                        Retarget viewers / add-to-carts of the last N days (omit
                        for prospecting).
                    conversion_event:
                      type: string
                      enum:
                        - PURCHASE
                        - LEAD
                        - COMPLETE_REGISTRATION
                        - ADD_TO_CART
                        - INITIATED_CHECKOUT
                        - ADD_PAYMENT_INFO
                        - CONTENT_VIEW
                        - SEARCH
                        - SUBSCRIBE
                        - START_TRIAL
                        - CONTACT
                        - SUBMIT_APPLICATION
                        - SCHEDULE
                        - OTHER
                      description: >-
                        Conversion event the catalog ad set optimises for
                        (default PURCHASE).
                    ad_set_name:
                      type: string
                      description: Ad set name.
                    ad_name:
                      type: string
                      description: Ad name.
                    start_time:
                      type: string
                      description: Ad set start time (ISO 8601).
                    end_time:
                      type: string
                      description: Ad set end time (ISO 8601).
                    page_id:
                      type: string
                      description: Facebook Page the ad runs as.
                    link:
                      type: string
                      description: >-
                        Landing page (https); product links come from the
                        catalog.
                    message:
                      type: string
                      description: >-
                        Primary text; may use catalog placeholders such as
                        {{product.name}}.
                    headline:
                      type: string
                      description: Headline (template), e.g. {{product.name}}.
                    description:
                      type: string
                      description: Description (template), e.g. {{product.price}}.
                    call_to_action:
                      type: string
                      description: Call-to-action type (default SHOP_NOW).
                    execution_mode:
                      type: string
                      enum:
                        - paused
                        - approval_required
                      description: Passed unchanged to every write call this tool makes.
                  required:
                    - name
                    - catalog_id
                    - product_set_id
                    - daily_budget
                    - targeting
                    - page_id
                    - link
                  additionalProperties: false
              additionalProperties: false
      responses:
        '200':
          description: Tool execution result.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExecuteToolResponse'
        '400':
          description: Invalid JSON input.
        '401':
          description: Authentication error.
      security:
        - bearerAuth: []
components:
  schemas:
    ExecuteToolResponse:
      type: object
      properties:
        ok:
          type: boolean
        platform:
          type: string
        tool:
          type: string
        data: {}
        error:
          anyOf:
            - type: 'null'
            - $ref: '#/components/schemas/ErrorResponse'
        mcp_response: {}
      required:
        - ok
        - platform
        - tool
        - error
        - mcp_response
      additionalProperties: false
    ErrorResponse:
      type: object
      properties:
        code: {}
        message:
          type: string
        details: {}
      required:
        - message
      additionalProperties: false
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: API token

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.