> ## 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.

# add_meta_catalog_ad_set

> Add a catalog ad set to an existing catalog campaign through create_ad_set, created PAUSED: the product set and conversion event as promoted_object, OFFSITE_CONVERSIONS, and with retargeting_window_da

> [!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.
>
> A change that fails when it runs is not retried automatically. It shows on the dashboard Execution Queue.

Add a catalog ad set to an existing catalog campaign through create\_ad\_set, created PAUSED: the product set and conversion event as promoted\_object, OFFSITE\_CONVERSIONS, and with retargeting\_window\_days an audience of people who viewed or added to cart in that window and did not buy. Budgets only when the campaign has none (CBO campaigns carry their own). Staged for dashboard approval.

**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": "add_meta_catalog_ad_set", "arguments": { ... }}`, or call `add_meta_catalog_ad_set` 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/add_meta_catalog_ad_set/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/add_meta_catalog_ad_set/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/add_meta_catalog_ad_set/execute:
    post:
      tags:
        - meta
      summary: >-
        Add a catalog ad set to an existing catalog campaign through
        create_ad_set, created PAUSED: the product set and conversion event as
        promoted_object, OFFSITE_CONVERSIONS, and with retargeting_window_days
        an audience of people who viewed or added to cart in that window and did
        not buy. Budgets only when the campaign has none (CBO campaigns carry
        their own). Staged for dashboard approval.
      description: >-
        Add a catalog ad set to an existing catalog campaign through
        create_ad_set, created PAUSED: the product set and conversion event as
        promoted_object, OFFSITE_CONVERSIONS, and with retargeting_window_days
        an audience of people who viewed or added to cart in that window and did
        not buy. Budgets only when the campaign has none (CBO campaigns carry
        their own). Staged for dashboard approval. 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_add_meta_catalog_ad_set
      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.
                    campaign_id:
                      type: string
                      description: Catalog campaign to add the ad set to.
                    name:
                      type: string
                      description: Ad set name.
                    product_set_id:
                      type: string
                      description: Product set the ad set promotes.
                    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).
                    daily_budget:
                      type: integer
                      minimum: 1
                      description: >-
                        Ad set daily budget (minor units); not for CBO
                        campaigns.
                    lifetime_budget:
                      type: integer
                      minimum: 1
                      description: >-
                        Ad set lifetime budget (minor units); not for CBO
                        campaigns.
                    bid_strategy:
                      type: string
                      description: Bid strategy, e.g. LOWEST_COST_WITHOUT_CAP.
                    bid_amount:
                      type: integer
                      minimum: 1
                      description: Bid cap or cost cap (minor units).
                    start_time:
                      type: string
                      description: Start time (ISO 8601).
                    end_time:
                      type: string
                      description: End time (ISO 8601).
                    execution_mode:
                      type: string
                      enum:
                        - paused
                        - approval_required
                      description: Passed unchanged to every write call this tool makes.
                  required:
                    - campaign_id
                    - name
                    - product_set_id
                    - targeting
                  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.