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

# Direct Meta actions

> Upload media, create Meta objects, duplicate setups, and change delivery status.

Call `actions_capabilities` to check whether live Meta changes are enabled. Creation, duplication, and status requests default to `dry_run: true`. Campaigns, ad sets, and ads created through these tools start paused. Direct budget amounts use integer account-currency minor units.

The tables list arguments and common nested fields. Expand **Full input schema** for all fields and allowed values. Workspace and account permissions apply to every tool.

<span id="actions-capabilities" />

## actions\_capabilities

Check which Meta actions and live changes are enabled.

**Access:** `mcp:read`.

**Arguments:** none.

<Accordion title="Full input schema">
  ```json theme={null}
  {
    "additionalProperties": false,
    "properties": {},
    "type": "object"
  }
  ```
</Accordion>

<span id="media-uploads-create" />

## media\_uploads\_create

Open a media picker or prepare a signed upload to the workspace library. The picker accepts up to ten files, with a default total limit of 64 MiB. To get a signed upload URL for one file, supply its metadata.

A successful upload saves the file in the library. Use `media_asset_id` with Launcher tools or `media_id` with `creatives_create`. Uploading a file does not create a Meta creative.

**Access:** `mcp:read` and `mcp:write`.

| Parameter | Type | Required / default | Details |
| - | - | - | - |
| `payload` | object | Required | Request ID and optional file metadata for a signed upload. |

### payload fields

| Parameter | Type | Required / default | Details |
| - | - | - | - |
| `request_id` | uuid | Required | UUID for this operation; use a new UUID for changed inputs. |
| `ad_account_id` | uuid or null | `null` | Superlaunch account UUID from `ad_accounts_list`. |
| `filename` | string or null | `null` | Original file name, including its extension. |
| `mime_type` | image/jpeg, image/png, image/webp, video/mp4, video/quicktime or null | `null` | File content type, such as `image/jpeg`. |
| `byte_size` | integer or null | `null` | File size in bytes. |
| `checksum_sha256` | string or null | `null` | SHA-256 checksum of the file bytes. |

**Retries:** reuse the same `request_id` with unchanged inputs for the same operation.

<Accordion title="Full input schema">
  ```json theme={null}
  {
    "$defs": {
      "MediaUploadCreate": {
        "additionalProperties": false,
        "description": "Open the media picker or create one bounded signed upload grant.",
        "properties": {
          "request_id": {
            "format": "uuid",
            "type": "string"
          },
          "ad_account_id": {
            "anyOf": [
              {
                "format": "uuid",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "filename": {
            "anyOf": [
              {
                "maxLength": 255,
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "mime_type": {
            "anyOf": [
              {
                "enum": [
                  "image/jpeg",
                  "image/png",
                  "image/webp",
                  "video/mp4",
                  "video/quicktime"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "byte_size": {
            "anyOf": [
              {
                "maximum": 1073741824,
                "minimum": 1,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "checksum_sha256": {
            "anyOf": [
              {
                "pattern": "^[0-9a-f]{64}$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          }
        },
        "required": [
          "request_id"
        ],
        "type": "object"
      }
    },
    "additionalProperties": false,
    "properties": {
      "payload": {
        "$ref": "#/$defs/MediaUploadCreate"
      }
    },
    "required": [
      "payload"
    ],
    "type": "object"
  }
  ```
</Accordion>

<span id="media-uploads-complete" />

## media\_uploads\_complete

Upload one to ten selected files and return a result for each file. The default combined limit is 64 MiB.

Use `media_asset_id` with Launcher tools or `media_id` with `creatives_create`. After a partial failure, retry with the same `request_id` and files to retain the results for files that already succeeded.

**Access:** `mcp:read` and `mcp:write`.

| Parameter | Type | Required / default | Details |
| - | - | - | - |
| `files` | array of object | Required | minItems: `1`. maxItems: `10`. |
| `media_id` | uuid or null | `null` | Upload identifier used by direct Meta creative creation. |
| `request_id` | uuid or null | `null` | UUID for this operation; use a new UUID for changed inputs. |
| `ad_account_id` | uuid or null | `null` | Superlaunch account UUID from `ad_accounts_list`. |

**Retries:** reuse the same `request_id` with unchanged inputs for the same operation.

<Accordion title="Full input schema">
  ```json theme={null}
  {
    "$defs": {
      "MediaUploadFile": {
        "additionalProperties": false,
        "description": "One Prefab-selected file sent directly to the upload completion tool.",
        "properties": {
          "name": {
            "maxLength": 255,
            "minLength": 1,
            "type": "string"
          },
          "size": {
            "maximum": 1073741824,
            "minimum": 1,
            "type": "integer"
          },
          "type": {
            "maxLength": 100,
            "minLength": 1,
            "type": "string"
          },
          "data": {
            "maxLength": 357914456,
            "minLength": 1,
            "type": "string"
          }
        },
        "required": [
          "name",
          "size",
          "type",
          "data"
        ],
        "type": "object"
      }
    },
    "additionalProperties": false,
    "properties": {
      "files": {
        "items": {
          "$ref": "#/$defs/MediaUploadFile"
        },
        "maxItems": 10,
        "minItems": 1,
        "type": "array"
      },
      "media_id": {
        "anyOf": [
          {
            "format": "uuid",
            "type": "string"
          },
          {
            "type": "null"
          }
        ],
        "default": null,
        "type": [
          "string",
          "null"
        ]
      },
      "request_id": {
        "anyOf": [
          {
            "format": "uuid",
            "type": "string"
          },
          {
            "type": "null"
          }
        ],
        "default": null,
        "type": [
          "string",
          "null"
        ]
      },
      "ad_account_id": {
        "anyOf": [
          {
            "format": "uuid",
            "type": "string"
          },
          {
            "type": "null"
          }
        ],
        "default": null,
        "type": [
          "string",
          "null"
        ]
      }
    },
    "required": [
      "files"
    ],
    "type": "object"
  }
  ```
</Accordion>

<span id="creatives-create" />

## creatives\_create

Create a Meta creative from one completed signed media upload.

**Access:** `mcp:read` and `mcp:write`.

| Parameter | Type | Required / default | Details |
| - | - | - | - |
| `payload` | object | Required | Upload completed media to Meta and create one ad creative. |

### payload fields

| Parameter | Type | Required / default | Details |
| - | - | - | - |
| `request_id` | uuid | Required | UUID for this operation; use a new UUID for changed inputs. |
| `ad_account_id` | uuid | Required | Superlaunch account UUID from `ad_accounts_list`. |
| `media_id` | uuid | Required | Upload identifier used by direct Meta creative creation. |
| `name` | string | Required | minLength: `1`. maxLength: `255`. |
| `object_story_spec` | object | Required | |
| `url_tags` | string or null | `null` | |
| `dry_run` | boolean | `true` | `true` checks the request without making live changes in Meta. |

**Retries:** reuse the same `request_id` with unchanged inputs for the same operation.

<Accordion title="Full input schema">
  ```json theme={null}
  {
    "$defs": {
      "CreativeCreate": {
        "additionalProperties": false,
        "description": "Upload completed media to Meta and create one ad creative.",
        "properties": {
          "request_id": {
            "format": "uuid",
            "type": "string"
          },
          "ad_account_id": {
            "format": "uuid",
            "type": "string"
          },
          "media_id": {
            "format": "uuid",
            "type": "string"
          },
          "name": {
            "maxLength": 255,
            "minLength": 1,
            "type": "string"
          },
          "object_story_spec": {
            "$ref": "#/$defs/JsonObjectInput"
          },
          "url_tags": {
            "anyOf": [
              {
                "maxLength": 2000,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "dry_run": {
            "default": true,
            "type": "boolean"
          }
        },
        "required": [
          "request_id",
          "ad_account_id",
          "media_id",
          "name",
          "object_story_spec"
        ],
        "type": "object"
      },
      "JsonObjectInput": {
        "additionalProperties": true,
        "type": "object"
      }
    },
    "additionalProperties": false,
    "properties": {
      "payload": {
        "$ref": "#/$defs/CreativeCreate"
      }
    },
    "required": [
      "payload"
    ],
    "type": "object"
  }
  ```
</Accordion>

<span id="campaigns-create" />

## campaigns\_create

Validate campaign inputs or create a paused Meta campaign. The default is `dry_run: true`.

**Access:** `mcp:read` and `mcp:write`.

| Parameter | Type | Required / default | Details |
| - | - | - | - |
| `payload` | object | Required | Create or validate one paused Meta campaign. |

### payload fields

| Parameter | Type | Required / default | Details |
| - | - | - | - |
| `request_id` | uuid | Required | UUID for this operation; use a new UUID for changed inputs. |
| `ad_account_id` | uuid | Required | Superlaunch account UUID from `ad_accounts_list`. |
| `name` | string | Required | minLength: `1`. maxLength: `255`. |
| `objective` | string | Required | minLength: `1`. maxLength: `100`. |
| `status` | "PAUSED" | `"PAUSED"` | |
| `special_ad_categories` | array of string | Optional | maxItems: `10`. |
| `special_ad_category_country` | array of string or null | `null` | |
| `daily_budget` | integer or null | `null` | Daily budget in the ad account currency's minor units (for USD, 10000 means \$100.00). |
| `is_adset_budget_sharing_enabled` | boolean or null | `null` | |
| `lifetime_budget` | integer or null | `null` | Lifetime budget in the ad account currency's minor units (for USD, 10000 means \$100.00). |
| `bid_strategy` | string or null | `null` | |
| `buying_type` | string or null | `null` | |
| `promoted_object` | object or null | `null` | |
| `start_time` | string or null | `null` | |
| `stop_time` | string or null | `null` | |
| `dry_run` | boolean | `true` | `true` checks the request without making live changes in Meta. |

**Retries:** reuse the same `request_id` with unchanged inputs for the same operation.

<Accordion title="Full input schema">
  ```json theme={null}
  {
    "$defs": {
      "CampaignCreate": {
        "additionalProperties": false,
        "description": "Create or validate one paused Meta campaign.",
        "properties": {
          "request_id": {
            "format": "uuid",
            "type": "string"
          },
          "ad_account_id": {
            "format": "uuid",
            "type": "string"
          },
          "name": {
            "maxLength": 255,
            "minLength": 1,
            "type": "string"
          },
          "objective": {
            "maxLength": 100,
            "minLength": 1,
            "type": "string"
          },
          "status": {
            "const": "PAUSED",
            "default": "PAUSED",
            "type": "string"
          },
          "special_ad_categories": {
            "items": {
              "type": "string"
            },
            "maxItems": 10,
            "type": "array"
          },
          "special_ad_category_country": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "maxItems": 50,
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "daily_budget": {
            "anyOf": [
              {
                "minimum": 1,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Daily budget in the ad account currency's minor units (for USD, 10000 means $100.00)."
          },
          "is_adset_budget_sharing_enabled": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "lifetime_budget": {
            "anyOf": [
              {
                "minimum": 1,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Lifetime budget in the ad account currency's minor units (for USD, 10000 means $100.00)."
          },
          "bid_strategy": {
            "anyOf": [
              {
                "maxLength": 100,
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "buying_type": {
            "anyOf": [
              {
                "maxLength": 100,
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "promoted_object": {
            "anyOf": [
              {
                "$ref": "#/$defs/JsonObjectInput"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "start_time": {
            "anyOf": [
              {
                "maxLength": 100,
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "stop_time": {
            "anyOf": [
              {
                "maxLength": 100,
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "dry_run": {
            "default": true,
            "type": "boolean"
          }
        },
        "required": [
          "request_id",
          "ad_account_id",
          "name",
          "objective"
        ],
        "type": "object"
      },
      "JsonObjectInput": {
        "additionalProperties": true,
        "type": "object"
      }
    },
    "additionalProperties": false,
    "properties": {
      "payload": {
        "$ref": "#/$defs/CampaignCreate"
      }
    },
    "required": [
      "payload"
    ],
    "type": "object"
  }
  ```
</Accordion>

<span id="adsets-create" />

## adsets\_create

Validate ad-set inputs or create a paused Meta ad set. The default is `dry_run: true`.

**Access:** `mcp:read` and `mcp:write`.

| Parameter | Type | Required / default | Details |
| - | - | - | - |
| `payload` | object | Required | Create or validate one paused Meta ad set under an existing campaign. |

### payload fields

| Parameter | Type | Required / default | Details |
| - | - | - | - |
| `request_id` | uuid | Required | UUID for this operation; use a new UUID for changed inputs. |
| `ad_account_id` | uuid | Required | Superlaunch account UUID from `ad_accounts_list`. |
| `campaign_id` | string | Required | minLength: `1`. maxLength: `300`. |
| `name` | string | Required | minLength: `1`. maxLength: `255`. |
| `optimization_goal` | string | Required | minLength: `1`. maxLength: `100`. |
| `billing_event` | string | Required | minLength: `1`. maxLength: `100`. |
| `targeting` | object | Required | |
| `status` | "PAUSED" | `"PAUSED"` | |
| `daily_budget` | integer or null | `null` | Daily budget in the ad account currency's minor units (for USD, 2100 means \$21.00). |
| `lifetime_budget` | integer or null | `null` | Lifetime budget in the ad account currency's minor units (for USD, 2100 means \$21.00). |
| `bid_amount` | integer or null | `null` | Bid amount in the ad account currency's minor units. |
| `bid_strategy` | string or null | `null` | |
| `promoted_object` | object or null | `null` | |
| `destination_type` | string or null | `null` | |
| `attribution_spec` | array of object or null | `null` | |
| `start_time` | string or null | `null` | |
| `end_time` | string or null | `null` | |
| `dsa_beneficiary` | string or null | `null` | |
| `dsa_payor` | string or null | `null` | |
| `dry_run` | boolean | `true` | `true` checks the request without making live changes in Meta. |

**Retries:** reuse the same `request_id` with unchanged inputs for the same operation.

<Accordion title="Full input schema">
  ```json theme={null}
  {
    "$defs": {
      "AdSetCreate": {
        "additionalProperties": false,
        "description": "Create or validate one paused Meta ad set under an existing campaign.",
        "properties": {
          "request_id": {
            "format": "uuid",
            "type": "string"
          },
          "ad_account_id": {
            "format": "uuid",
            "type": "string"
          },
          "campaign_id": {
            "maxLength": 300,
            "minLength": 1,
            "type": "string"
          },
          "name": {
            "maxLength": 255,
            "minLength": 1,
            "type": "string"
          },
          "optimization_goal": {
            "maxLength": 100,
            "minLength": 1,
            "type": "string"
          },
          "billing_event": {
            "maxLength": 100,
            "minLength": 1,
            "type": "string"
          },
          "targeting": {
            "$ref": "#/$defs/JsonObjectInput"
          },
          "status": {
            "const": "PAUSED",
            "default": "PAUSED",
            "type": "string"
          },
          "daily_budget": {
            "anyOf": [
              {
                "minimum": 1,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Daily budget in the ad account currency's minor units (for USD, 2100 means $21.00)."
          },
          "lifetime_budget": {
            "anyOf": [
              {
                "minimum": 1,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Lifetime budget in the ad account currency's minor units (for USD, 2100 means $21.00)."
          },
          "bid_amount": {
            "anyOf": [
              {
                "minimum": 1,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Bid amount in the ad account currency's minor units."
          },
          "bid_strategy": {
            "anyOf": [
              {
                "maxLength": 100,
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "promoted_object": {
            "anyOf": [
              {
                "$ref": "#/$defs/JsonObjectInput"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "destination_type": {
            "anyOf": [
              {
                "maxLength": 100,
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "attribution_spec": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/$defs/JsonObjectInput"
                },
                "maxItems": 20,
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "start_time": {
            "anyOf": [
              {
                "maxLength": 100,
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "end_time": {
            "anyOf": [
              {
                "maxLength": 100,
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "dsa_beneficiary": {
            "anyOf": [
              {
                "maxLength": 300,
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "dsa_payor": {
            "anyOf": [
              {
                "maxLength": 300,
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "dry_run": {
            "default": true,
            "type": "boolean"
          }
        },
        "required": [
          "request_id",
          "ad_account_id",
          "campaign_id",
          "name",
          "optimization_goal",
          "billing_event",
          "targeting"
        ],
        "type": "object"
      },
      "JsonObjectInput": {
        "additionalProperties": true,
        "type": "object"
      }
    },
    "additionalProperties": false,
    "properties": {
      "payload": {
        "$ref": "#/$defs/AdSetCreate"
      }
    },
    "required": [
      "payload"
    ],
    "type": "object"
  }
  ```
</Accordion>

<span id="ads-create" />

## ads\_create

Validate ad inputs or create a paused Meta ad. The default is `dry_run: true`.

**Access:** `mcp:read` and `mcp:write`.

| Parameter | Type | Required / default | Details |
| - | - | - | - |
| `payload` | object | Required | Create or validate one paused Meta ad using an existing creative. |

### payload fields

| Parameter | Type | Required / default | Details |
| - | - | - | - |
| `request_id` | uuid | Required | UUID for this operation; use a new UUID for changed inputs. |
| `ad_account_id` | uuid | Required | Superlaunch account UUID from `ad_accounts_list`. |
| `adset_id` | string | Required | minLength: `1`. maxLength: `300`. |
| `name` | string | Required | minLength: `1`. maxLength: `255`. |
| `creative_id` | string | Required | minLength: `1`. maxLength: `300`. |
| `status` | "PAUSED" | `"PAUSED"` | |
| `conversion_domain` | string or null | `null` | |
| `tracking_specs` | array of object or null | `null` | |
| `dry_run` | boolean | `true` | `true` checks the request without making live changes in Meta. |

**Retries:** reuse the same `request_id` with unchanged inputs for the same operation.

<Accordion title="Full input schema">
  ```json theme={null}
  {
    "$defs": {
      "AdCreate": {
        "additionalProperties": false,
        "description": "Create or validate one paused Meta ad using an existing creative.",
        "properties": {
          "request_id": {
            "format": "uuid",
            "type": "string"
          },
          "ad_account_id": {
            "format": "uuid",
            "type": "string"
          },
          "adset_id": {
            "maxLength": 300,
            "minLength": 1,
            "type": "string"
          },
          "name": {
            "maxLength": 255,
            "minLength": 1,
            "type": "string"
          },
          "creative_id": {
            "maxLength": 300,
            "minLength": 1,
            "type": "string"
          },
          "status": {
            "const": "PAUSED",
            "default": "PAUSED",
            "type": "string"
          },
          "conversion_domain": {
            "anyOf": [
              {
                "maxLength": 300,
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "tracking_specs": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/$defs/JsonObjectInput"
                },
                "maxItems": 50,
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "dry_run": {
            "default": true,
            "type": "boolean"
          }
        },
        "required": [
          "request_id",
          "ad_account_id",
          "adset_id",
          "name",
          "creative_id"
        ],
        "type": "object"
      },
      "JsonObjectInput": {
        "additionalProperties": true,
        "type": "object"
      }
    },
    "additionalProperties": false,
    "properties": {
      "payload": {
        "$ref": "#/$defs/AdCreate"
      }
    },
    "required": [
      "payload"
    ],
    "type": "object"
  }
  ```
</Accordion>

<span id="actions-execute" />

## actions\_execute

Change the status of a campaign, ad set, or ad with `set_status`.

**Access:** `mcp:read` and `mcp:write`.

| Parameter | Type | Required / default | Details |
| - | - | - | - |
| `payload` | object | Required | Set one existing campaign, ad set, or ad ACTIVE or PAUSED. |

### payload fields

| Parameter | Type | Required / default | Details |
| - | - | - | - |
| `request_id` | uuid | Required | UUID for this operation; use a new UUID for changed inputs. |
| `ad_account_id` | uuid | Required | Superlaunch account UUID from `ad_accounts_list`. |
| `target_type` | campaign, adset, ad | Required | |
| `target_id` | string | Required | minLength: `1`. maxLength: `300`. |
| `status` | ACTIVE, PAUSED | Required | |
| `dry_run` | boolean | `true` | `true` checks the request without making live changes in Meta. |

**Retries:** reuse the same `request_id` with unchanged inputs for the same operation.

<Accordion title="Full input schema">
  ```json theme={null}
  {
    "$defs": {
      "StatusActionExecute": {
        "additionalProperties": false,
        "description": "Set one existing campaign, ad set, or ad ACTIVE or PAUSED.",
        "properties": {
          "request_id": {
            "format": "uuid",
            "type": "string"
          },
          "ad_account_id": {
            "format": "uuid",
            "type": "string"
          },
          "target_type": {
            "enum": [
              "campaign",
              "adset",
              "ad"
            ],
            "type": "string"
          },
          "target_id": {
            "maxLength": 300,
            "minLength": 1,
            "type": "string"
          },
          "status": {
            "enum": [
              "ACTIVE",
              "PAUSED"
            ],
            "type": "string"
          },
          "dry_run": {
            "default": true,
            "type": "boolean"
          }
        },
        "required": [
          "request_id",
          "ad_account_id",
          "target_type",
          "target_id",
          "status"
        ],
        "type": "object"
      }
    },
    "additionalProperties": false,
    "properties": {
      "payload": {
        "$ref": "#/$defs/StatusActionExecute"
      }
    },
    "required": [
      "payload"
    ],
    "type": "object"
  }
  ```
</Accordion>

<span id="campaigns-duplicate" />

## campaigns\_duplicate

Preview or copy a campaign with its children in the same account, paused.

**Access:** `mcp:read` and `mcp:write`.

| Parameter | Type | Required / default | Details |
| - | - | - | - |
| `payload` | object | Required | Copy one source in its account; copied hierarchies always start paused. |

### payload fields

| Parameter | Type | Required / default | Details |
| - | - | - | - |
| `request_id` | uuid | Required | UUID for this operation; use a new UUID for changed inputs. |
| `ad_account_id` | uuid | Required | Superlaunch account UUID from `ad_accounts_list`. |
| `source_id` | string | Required | minLength: `1`. maxLength: `300`. |
| `dry_run` | boolean | `true` | `true` checks the request without making live changes in Meta. |

**Retries:** reuse the same `request_id` with unchanged inputs for the same operation.

<Accordion title="Full input schema">
  ```json theme={null}
  {
    "$defs": {
      "DuplicateAction": {
        "additionalProperties": false,
        "description": "Copy one source in its account; copied hierarchies always start paused.",
        "properties": {
          "request_id": {
            "format": "uuid",
            "type": "string"
          },
          "ad_account_id": {
            "format": "uuid",
            "type": "string"
          },
          "source_id": {
            "maxLength": 300,
            "minLength": 1,
            "type": "string"
          },
          "dry_run": {
            "default": true,
            "type": "boolean"
          }
        },
        "required": [
          "request_id",
          "ad_account_id",
          "source_id"
        ],
        "type": "object"
      }
    },
    "additionalProperties": false,
    "properties": {
      "payload": {
        "$ref": "#/$defs/DuplicateAction"
      }
    },
    "required": [
      "payload"
    ],
    "type": "object"
  }
  ```
</Accordion>

<span id="adsets-duplicate" />

## adsets\_duplicate

Preview or copy an ad set with its ads in the same campaign, paused.

**Access:** `mcp:read` and `mcp:write`.

| Parameter | Type | Required / default | Details |
| - | - | - | - |
| `payload` | object | Required | Copy one source in its account; copied hierarchies always start paused. |

### payload fields

| Parameter | Type | Required / default | Details |
| - | - | - | - |
| `request_id` | uuid | Required | UUID for this operation; use a new UUID for changed inputs. |
| `ad_account_id` | uuid | Required | Superlaunch account UUID from `ad_accounts_list`. |
| `source_id` | string | Required | minLength: `1`. maxLength: `300`. |
| `dry_run` | boolean | `true` | `true` checks the request without making live changes in Meta. |

**Retries:** reuse the same `request_id` with unchanged inputs for the same operation.

<Accordion title="Full input schema">
  ```json theme={null}
  {
    "$defs": {
      "DuplicateAction": {
        "additionalProperties": false,
        "description": "Copy one source in its account; copied hierarchies always start paused.",
        "properties": {
          "request_id": {
            "format": "uuid",
            "type": "string"
          },
          "ad_account_id": {
            "format": "uuid",
            "type": "string"
          },
          "source_id": {
            "maxLength": 300,
            "minLength": 1,
            "type": "string"
          },
          "dry_run": {
            "default": true,
            "type": "boolean"
          }
        },
        "required": [
          "request_id",
          "ad_account_id",
          "source_id"
        ],
        "type": "object"
      }
    },
    "additionalProperties": false,
    "properties": {
      "payload": {
        "$ref": "#/$defs/DuplicateAction"
      }
    },
    "required": [
      "payload"
    ],
    "type": "object"
  }
  ```
</Accordion>

<span id="ads-duplicate" />

## ads\_duplicate

Preview or copy an ad in the same ad set, paused.

**Access:** `mcp:read` and `mcp:write`.

| Parameter | Type | Required / default | Details |
| - | - | - | - |
| `payload` | object | Required | Copy one source in its account; copied hierarchies always start paused. |

### payload fields

| Parameter | Type | Required / default | Details |
| - | - | - | - |
| `request_id` | uuid | Required | UUID for this operation; use a new UUID for changed inputs. |
| `ad_account_id` | uuid | Required | Superlaunch account UUID from `ad_accounts_list`. |
| `source_id` | string | Required | minLength: `1`. maxLength: `300`. |
| `dry_run` | boolean | `true` | `true` checks the request without making live changes in Meta. |

**Retries:** reuse the same `request_id` with unchanged inputs for the same operation.

<Accordion title="Full input schema">
  ```json theme={null}
  {
    "$defs": {
      "DuplicateAction": {
        "additionalProperties": false,
        "description": "Copy one source in its account; copied hierarchies always start paused.",
        "properties": {
          "request_id": {
            "format": "uuid",
            "type": "string"
          },
          "ad_account_id": {
            "format": "uuid",
            "type": "string"
          },
          "source_id": {
            "maxLength": 300,
            "minLength": 1,
            "type": "string"
          },
          "dry_run": {
            "default": true,
            "type": "boolean"
          }
        },
        "required": [
          "request_id",
          "ad_account_id",
          "source_id"
        ],
        "type": "object"
      }
    },
    "additionalProperties": false,
    "properties": {
      "payload": {
        "$ref": "#/$defs/DuplicateAction"
      }
    },
    "required": [
      "payload"
    ],
    "type": "object"
  }
  ```
</Accordion>

<span id="actions-get" />

## actions\_get

Read an action result using its activity ID.

**Access:** `mcp:read`.

| Parameter | Type | Required / default | Details |
| - | - | - | - |
| `activity_id` | uuid | Required | Activity UUID from the tool result or `activity_list`. |

<Accordion title="Full input schema">
  ```json theme={null}
  {
    "additionalProperties": false,
    "properties": {
      "activity_id": {
        "format": "uuid",
        "type": "string"
      }
    },
    "required": [
      "activity_id"
    ],
    "type": "object"
  }
  ```
</Accordion>


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