# How Superlaunch works Source: https://docs.superlaunch.pro/concepts/how-it-works Understand workspaces, provider accounts, AI agents, and campaign operations. Superlaunch gives your team and AI agents access to advertising data and campaign operations through one workspace. You can use the web application for setup and review, then use an agent for analysis and repeatable tasks. ## The workflow ```mermaid theme={null} flowchart LR A["Connect an ad platform"] --> B["Import accounts, assets, and insights"] B --> C["Review in the app or through MCP"] C --> D["Prepare a launch or rule"] D --> E["Check permissions and inputs"] E --> F["Execute and review activity"] ``` ## Workspaces and accounts A **workspace** contains your team, connections, brand context, and shared library. An **ad account** belongs to an advertising provider and has its own currency, time zone, and permissions. In Meta, the delivery hierarchy is **ad account → campaign → ad set → ad**. A creative holds the content used by an ad. Superlaunch stores account IDs as UUIDs; provider campaign, ad-set, ad, and creative IDs are separate identifiers. See [IDs and versions](/concepts/ids-and-versions). ## Data and operations Insights use imported reporting data. A connected account does not guarantee that today's data is complete. Check the returned reporting period and data-through date. Direct MCP creation tools support Meta campaigns, ad sets, ads, creatives, duplication, and status changes. Launcher adds a shared creative library, reusable templates, batches, and scheduled launches. Availability depends on your workspace permissions and the enabled capabilities. Rules evaluate conditions on a schedule or through a manual run. The agent does not need to stay in a conversation for a submitted durable run to continue. ## Access and review When you authorize an MCP connection, you choose a workspace and scopes. Superlaunch checks your current access when you call a tool. OAuth write access alone does not grant permission to every account or action. Use **Activity** to inspect tool calls, provider actions, and rule runs. A submitted operation can still be running or can fail after acceptance. Read its final result before reporting success. # IDs, versions, and retries Source: https://docs.superlaunch.pro/concepts/ids-and-versions Use the right identifiers and avoid duplicate operations. Resolve IDs from Superlaunch before creating or changing an object. A name helps you find an object; it does not uniquely identify it. | Identifier | Meaning | How to obtain it | | - | - | - | | `ad_account_id` | Superlaunch account UUID | `ad_accounts_list` | | `brand_id` | Superlaunch brand UUID | `brands_list` | | Provider campaign, ad-set, or ad ID | Object in Meta | `assets_list`, `launcher_targets_list`, or a creation result | | Launcher creative ID | Creative family in the workspace library | `launcher_creatives_list` | | Creative version ID | Exact saved content version | `launcher_creatives_get` | | Template version ID | Exact saved launch settings | `launcher_templates_get` | | Run or activity ID | Submitted work or its audit record | Submission result or activity list | A Launcher creative ID and a Meta creative ID refer to different objects. Keep the names and IDs together while planning a launch. ## Versions Read an object before editing it. Tools that accept `expected_version` or `expected_lock_version` require the current value from a read. If another person edits it first, refresh the object and review the change before trying again. A saved creative or template version preserves the inputs used by an earlier launch. Saving a newer version does not rewrite those earlier inputs. Approval applies to an exact creative version. ## Request IDs and keys For operations that advertise idempotent retries, generate one request UUID or key for one intended operation. Retry the same operation with the same inputs and key. Use a new key when the inputs or intended operation change. Do not assume that every write tool is idempotent. Check its reference page. In particular, rule status changes and archival rely on a current version check; a supplied `request_id` does not make them replayable. ## After a timeout Read the submitted run, action result, or [activity record](/guides/activity) before issuing a second write. A client timeout does not prove that the provider rejected the operation. # Review activity and results Source: https://docs.superlaunch.pro/guides/activity Trace tool calls, provider actions, and rule runs to their outcomes. Open **Activity** to review operations in your workspace. Use it after an agent write, a rule run, or a failed request. ## Find an operation Filter by member, tool, action, account, rule, or status. A request or run ID helps you find a specific operation. Open the record to inspect its parameters, result, timing, and error code. An accepted request can still be pending. Report a provider change as successful only after its result confirms that change. ## Through MCP Use `activity_list` to search the unified log. Exact filters work for known fields; `query` searches text across tool, action, member, target, request, and error metadata. Use `activity_get` for one complete record and `activity_summary` to count the complete filtered result set. Follow `next_cursor` until `complete` is true when you need the full list. The `rule_activity_*` tools return rule-specific activity. They do not replace the unified log for all tool and action operations. ## Investigate a failure 1. Find the request's activity record. 2. Check the account and target IDs. 3. Read the error code and result. 4. Check related run or action records. 5. Resolve authorization or input errors before retrying. After a timeout, read the result before submitting another provider write. For a Launcher batch, inspect [operation-level results](/launcher/recovery) so that you retry only eligible failed work. # Brand profiles and kits Source: https://docs.superlaunch.pro/guides/brands Give your team and agent the brand guidance they need. Use **Brands** to keep a brand profile and structured kit in your workspace. ## Create a profile Open **Brands** and select **New brand**. Add the name, website, industry, description, markets, and languages that apply. Save the profile, then open **Edit brand** to add its kit. Creating a brand through MCP does not link ad accounts. Treat account assignment as a separate setup task. ## Add a brand kit Use the kit to record: * **Main message**: the brand's positioning. * **Tagline** and supporting proof points. * Colors with roles such as primary, accent, background, and text. * Heading and body fonts. * Voice traits and writing guidance. Use concrete guidance, such as “Use short sentences and describe the product's function before its benefits.” Give your agent verified proof points instead of claims it must infer. ## Use the kit through MCP `brands_list` finds the profile and `brands_get` returns its active kit. Ask your agent to read it before writing campaign copy. > Read the brand kit for this brand. Draft three ad headlines using its main message and voice guidance. Use only the supporting claims in the kit. `brands_update` accepts partial updates. Omitted fields keep their values; empty lists clear list fields. A changed kit creates a new immutable version. When no active kit exists, the kit needs `positioning`. Brand kits hold structured brand guidance. Use [Memory](/guides/memory) for additional facts you explicitly want to retain. # Analyze performance Source: https://docs.superlaunch.pro/guides/insights Choose comparable dates, metrics, attribution, and reporting levels. Use **Insights** to compare advertising performance across accounts, campaigns, ad sets, and ads. ## Build a report 1. Open **Insights** and choose the **Ad account**. 2. Set the **Reporting period**, or enter a **Start date** and **End date**. 3. Choose the entity level under **Show data for**. 4. Choose daily rows or period totals under **Show results as**. 5. Select a supported breakdown under **Break down by**. 6. For purchase analysis, choose the **Purchase type** and attribution setting under **Count purchases**. 7. Set **Sort by** and **Order** to find the results you need. Compare accounts with care: currency, time zone, attribution, and reporting periods can differ. A high value does not by itself mean good performance; for example, high spend and high CPA have different implications from high ROAS. ## Use your agent > Compare my Meta campaigns for October 1–7, 2026. Use purchase ROAS with the 7-day click attribution window, exclude campaigns with less than 100 in spend, and show the five highest and lowest results. Include currency, data-through date, and any warnings. Your agent should resolve accounts, then use `insights_rank` for a compact ranking. For daily rows or breakdowns, it should call `insights_capabilities` before `insights_query`. Structured metrics such as `actions` and `action_values` require explicit `action_types` and `attribution_windows`. The agent should ask you which event and window to use if the question leaves them unclear. ## Check completeness The query result includes `complete` and `next_cursor`. Follow the cursor while preserving the query filters. A page of 25 rows can be only part of the report. Use the account time zone and returned period fields when comparing dates. Check `data_through` and warnings in ranking results before treating a period as final. # Save and manage memory Source: https://docs.superlaunch.pro/guides/memory Retain approved facts with private, team, brand, or ad-account scope. Memory stores facts you want to reuse in later conversations. Save a fact when you ask your agent to remember it or approve a focused suggestion to save it. ## Choose a scope | Scope | Use it for | | - | - | | Private | Your personal working preferences | | Team | Facts relevant to the workspace | | Brand | Guidance specific to a brand | | Ad account | Facts specific to an advertising account | Brand and ad-account scopes require the corresponding Superlaunch UUID. Private and team scopes do not take a target ID. ## Save a fact > Remember for this brand that campaign copy must use British English and avoid discount claims unless I provide an approved offer. The agent should resolve the brand and call `memory_remember` with your fact, scope, request UUID, and consent value. It should report whether the result is active, pending indexing, duplicated, rejected, or needs confirmation. A stored fact awaiting indexing might not appear in semantic recall yet. ## Review and correct Open **Memory** to review available records. Through MCP, `memory_list` lists records and `memory_get` reads an exact record. `memory_recall` finds relevant context for a query. Read the current version before using `memory_update`, `memory_set_enabled`, or `memory_forget`. Disable a record to stop future retrieval; forget it when you want permanent deletion. ## Interpret recalled facts Recalled memory contains user-authored context. The agent should use it as context and evaluate it against your current request. A stored fact can be incomplete or outdated; it should not override your current instruction or grant new permission. # Create and run rules Source: https://docs.superlaunch.pro/guides/rules Define targets, conditions, actions, schedules, and dry-run checks. Rules apply repeatable decisions to advertising objects. A rule defines its accounts, target level, target filter, tasks, and schedule. ## Create a rule 1. Open **Rules** and start a new rule. 2. Select the ad accounts and target level. 3. Add a target filter, or choose an empty filter to cover the selected level. 4. Add a task with at least one condition and action. 5. Set the metric, timeframe, operator, and comparison value for each condition. 6. Set a schedule and time zone. 7. Save as a draft with dry-run mode enabled. A task's `active_only` setting controls whether it considers only active objects. Check that setting when your target set includes paused ads. Budget-increase actions require a maximum daily budget; budget-decrease actions require a minimum. Absolute adjustments and rule safety bounds use major account-currency units. Direct creation tools use minor units instead. ## Check a dry run Run the current rule version with `dry_run: true`. Review its targets, decisions, and action outcomes before enabling provider effects. > Draft a rule for this account that pauses active ads when spend exceeds 50 today and purchases are zero. Use dry-run mode, show the target filter and schedule, and wait for me to review before activation. Your agent should call `rules_schema` for the current metrics and action vocabulary. It should obtain the account ID and ask for any missing targeting or scheduling choices. ## Edit or activate Read the rule's current version before changing it. `rules_update` replaces the definition, so preserve fields you intend to keep. A rule's status and dry-run setting are separate. Review both before setting it to **active**. A manual `rules_run` defaults to dry-run mode even if you omit that argument. ## Review results Open the run details or use `rule_runs_get`. Review [Activity](/guides/activity) for decisions and provider actions. `rules_delete` archives the rule. # Superlaunch documentation Source: https://docs.superlaunch.pro/index Connect your accounts, work with AI agents, and manage campaigns in Superlaunch. Superlaunch connects your AI agent to advertising accounts, campaign tools, and shared marketing context. You control access through workspace permissions and can review operations in the activity log. Start by connecting an ad account, then choose the web application or an [MCP client](/mcp/overview) for your work. Connect an account and check your first report. Use ChatGPT, Claude, Codex, or another remote MCP client. Prepare creatives, reuse templates, and track launches. Find tool names, parameters, and examples. ## Choose a workflow | Your goal | Start here | | - | - | | Understand the product | [How Superlaunch works](/concepts/how-it-works) | | Compare campaign performance | [Insights](/guides/insights) | | Automate repeatable decisions | [Rules](/guides/rules) | | Share brand guidance with your agent | [Brands and memory](/guides/brands) | | Manage access | [Team permissions](/workspace/permissions) | | Diagnose a failed operation | [Troubleshooting](/support/troubleshooting) | ## Use the docs with an AI assistant Read the [documentation index](/llms.txt) or the [full documentation text](/llms-full.txt). These public files describe Superlaunch; access to your workspace still requires authorization through the [product MCP server](/mcp/overview). # Organize collections Source: https://docs.superlaunch.pro/launcher/collections Use fixed selections or smart filters to choose creatives for launches. Collections help you reuse a selection of creatives. ## Choose a collection kind A **fixed collection** contains the creative families you select. Use it for a reviewed set of concepts or an explicit campaign package. A **smart collection** uses filters such as name, concept, approved language, approved format, tags, source, or import date. Conditions combine with AND; values within a condition act as alternatives. Add exclusions if a matching creative should stay out. ## Create a collection 1. Open **Launcher → Creatives → Collections**. 2. Create a collection and enter its name. 3. Choose fixed or smart selection. 4. Add members or filters. 5. Review the selected or matching creatives. 6. Select **Save collection**. Smart-filter previews show current matches. Launch preparation still checks which exact versions are approved. ## Resolve a launch selection Use the resolve-selection control or `launcher_collections_resolve` to obtain a selection for a launch. Check exclusions and rejected items before submission. A saved launch preserves its resolved inputs. Later library edits do not retroactively replace the creative versions used by that launch. ## Edit or archive Read the current collection before editing or archiving it through MCP. Use its current lock version where required. For scheduled selection behavior, see [Recurring launches](/launcher/schedules). # Create and approve creatives Source: https://docs.superlaunch.pro/launcher/creatives Save content versions, check media, and approve the version you intend to launch. A creative family holds a name, concept, tags, and saved content versions. Each version records the copy, format, language, and media that a launch uses. ## Create a creative 1. Open the Launcher creative library. 2. Select **New creative**. 3. Enter a name and the organizing fields you need. 4. Choose the supported format and language. 5. Add the message, headline, destination, and required identity fields. 6. Choose saved media for the format and any supported placement variants. 7. Save the creative and inspect its version. Supported content includes formats such as single images, single videos, carousels, and multilingual content where enabled. The editor and MCP schema define which fields apply to each format. ## Approve a version Open the creative, inspect its copy and media, then approve the exact version. Approval requires approval access. A saved draft is not eligible merely because its creative family has an approved earlier version. When editing content, create a new version and review it before approval. Keep a note of the version ID if your launch must use exact content. ## Revoke or archive Revoke approval when you need to prevent a version from selection. Archive the family when you want to remove it from active library use. Earlier launches retain their recorded content inputs. Approval changes do not rewrite provider objects created by those launches. ## Check usage Use the creative's usage view or `launcher_creatives_usage` to find launches that used it. Read `launcher_creatives_get` or `launcher_creative_versions_get` when you need exact version details. # Prepare and submit a launch Source: https://docs.superlaunch.pro/launcher/launch Select an operation, approved content, target, timing, and delivery status. Before you submit, confirm the workspace, ad account, approved creative versions, and campaign settings. Launch execution can create provider objects and incur workspace usage. ## Choose an operation The setup supports operations such as testing new content, retesting, and promoting an existing result. Use the options available for your account. Operations that target an existing ad set need an exact target from a fresh provider read. Through MCP, call `launcher_discover`, resolve accounts, and use `launcher_targets_list` followed by `launcher_targets_get` when an existing target is required. ## Prepare the inputs 1. Open **Launcher** and choose the ad account. 2. Open launch setup and enter a name. 3. Select the operation and template version. 4. Choose creatives or resolve a collection. 5. Review grouping, budget, and targeting. 6. Choose immediate, future, or recurring timing where supported. 7. Choose **Create paused** or **Activate after creation**. Activation can start delivery and spend. Confirm that choice before submission. ## Preview Select **Preview (optional)** to check the estimated number of writes, usage units, names, and budget exposure. Preview does not reserve capacity or guarantee provider acceptance. Correct missing inputs and review the selection. Submission checks permissions, approval, provider state, billing, and limits again. ## Submit and track Submit the launch once. Your agent should use one stable `request_key` for the intended operation and retain the returned launch ID. Read `launcher_launches_get` and `launcher_run_operations` until you understand the final outcome. A batch can contain both successful and failed operations. See [Recover a launch](/launcher/recovery). # Upload and import media Source: https://docs.superlaunch.pro/launcher/media Add images and videos to the shared library or import selected Drive files. Use the Launcher library and imports area to add media before you create a creative version. ## Upload a file 1. Open **Launcher** and choose the workspace. 2. Open the media library or **Import media**. 3. Select the upload control and choose your image or video. 4. Wait for the upload and processing status. 5. Open the media item and check its preview before using it in a creative. The upload interface shows the supported file types and size limits. A thumbnail failure does not by itself mean the original file failed to upload. Check the media status and use the thumbnail retry option where available. ## Import from Google Drive 1. Open **Import media** and connect Google Drive. 2. Complete the browser authorization and file or folder selection. 3. Browse available files and choose the files to import. 4. Review the selection and start the import. 5. Inspect the import results before creating content from the imported media. Saving a Drive folder or selecting a file does not itself import all its contents. The folder browser can distinguish new, changed, and previously imported files. Review those states when importing a new revision. ## Use with an agent Call `launcher_discover` for the browser intake handoff. Complete private file upload or Drive authorization in the browser, then provide the stable media IDs to your agent. Use `launcher_media_list` and `launcher_media_get` to discover saved media. The MCP Drive folder tools list and save folder selections; they do not perform the browser's private file intake. For direct Meta creative creation, see the separate [signed upload workflow](/mcp/workflows). # Launcher overview Source: https://docs.superlaunch.pro/launcher/overview Prepare approved creatives and reuse campaign settings for launches. Launcher creates campaigns and ads from your workspace's creative library. Use it to prepare batches, reuse campaign settings, schedule work, and inspect provider results. ## The building blocks | Object | Purpose | | - | - | | Media | Uploaded or imported image or video | | Creative | A named family of content with saved versions | | Approved creative version | Exact content eligible for selection | | Collection | A fixed selection or smart filter over creatives | | Template version | Saved campaign, ad-set, budget, and naming settings | | Launch | Submitted work with recorded inputs and operation results | | Schedule | Recurring launch configuration and limits | The library belongs to the workspace. Launches target an ad account. Approval and execution require their respective permissions. ## Prepare and launch 1. [Upload or import media](/launcher/media). 2. [Save and approve a creative version](/launcher/creatives). 3. [Create a template](/launcher/templates). 4. Select creatives or a [collection](/launcher/collections). 5. [Prepare and submit a launch](/launcher/launch). 6. Inspect its [results and recovery options](/launcher/recovery). Launcher availability depends on enabled features and access. Through MCP, call `launcher_discover` to check availability, limits, and the supported journey. ## Preview and usage A preview estimates selected creatives, writes, budget exposure, and usage. It reserves nothing. Submission checks current approvals, access, billing, and limits again. Confirmed provider writes own usage units. Browsing the library, previewing, submitting, and polling do not themselves represent confirmed provider-write usage. Use **Billing** for the workspace's current usage and plan. # Inspect and recover launches Source: https://docs.superlaunch.pro/launcher/recovery Understand partial results and choose retries or replacement work. A submitted launch can succeed, fail, or finish with only some operations complete. Inspect operation results before deciding how to recover it. ## Inspect the result Open the launch in **Launcher**. Review operation status, provider object IDs, error codes, and suggested recovery steps. Through MCP, read `launcher_launches_get`, then `launcher_run_operations`. Use the result's available operations and recovery guidance instead of guessing from a status label. ## Retry unchanged work Use `launcher_launches_retry` only for operations that the current result identifies as eligible. Retain the original inputs for that work and use the request fields required by the retry tool. Successful provider writes already exist. Avoid resubmitting the entire batch to address one failed item. ## Replace corrected content When you need to correct a failed item's content, obtain replacement candidates with `launcher_launches_replacement_candidates`. Prepare a new request with the required replacement metadata, approved pinned creative versions, exact existing target, and a new request key. Preview the corrected selection and inspect the fresh target before submission. Changed content is a new operation. ## Cancel or hold a launch Use `launcher_launches_cancel` to request cancellation. Use `launcher_launches_change_status` to hold or resume an unstarted launch; it does not set the delivery status of existing provider ads. A missed launch time requires Run now or a new time. A cancellation request does not erase provider objects or guarantee that a write already underway stops. Read the resulting state and account activity. # Schedule recurring launches Source: https://docs.superlaunch.pro/launcher/schedules Set recurring timing, selection behavior, and batch limits. A recurring schedule prepares launches from saved configuration. You need scheduling access as well as the permissions required for the launch. ## Create a schedule 1. Open launch setup. 2. Choose a supported operation and saved template version. 3. Choose a collection and review its selection behavior. 4. Select recurring timing. 5. Set the frequency, time, and **Schedule time zone**. 6. Set the batch count and budget limits. 7. Review whether created objects stay paused or activate. 8. Save the schedule. The schedule time zone determines when the recurring job starts. Provider delivery settings in the template are separate. ## Check pinned inputs Schedules keep pinned recurring inputs. Review the exact template and collection version references before saving. When editing a schedule, preserve the references you intend to keep. An occurrence that has already started keeps its recorded inputs. A schedule is not a guarantee that every occurrence will launch. Current approval, account access, workspace access, billing, and limits still apply. ## Pause, edit, and inspect Open the schedule to inspect its current status and recent work. Read its lock version before an MCP update. Use `launcher_schedules_change_status` to change status and `launcher_schedules_update` to revise configuration. Read the resulting launch and operation records after an occurrence. If it fails, review the reason before re-enabling or retrying. See [Launcher MCP tools](/mcp/reference/launcher-schedules) for exact schedule fields. # Create launch templates Source: https://docs.superlaunch.pro/launcher/templates Save versioned campaign settings, budgets, destinations, and naming. A template holds settings you can reuse across launches. Saving an edit creates a new template version; earlier launches keep the settings they used. ## Create a template Open **Launcher → Templates** and select **Create template**. Set: * Campaign objective and budget ownership. * Daily or lifetime budget, currency, and amount. * Destination, optimization goal, billing event, and promotion details. * Targeting and delivery settings. * Allowed creative formats and language mode. * Grouping and object naming. Use the available selectors for provider objects such as Pages and promotion assets. Resolve exact IDs instead of entering an object name as an ID. ## Budget and delivery Confirm that the budget currency matches the account. The web interface accepts displayed currency amounts; MCP fields ending in `_minor` use integer minor units. For USD, `1000` means \$10.00. Review bid strategy, bid amount, or ROAS constraints where the chosen objective requires them. A ROAS value is a ratio, not a currency amount. Set the delivery time zone before entering start and end times. A launch schedule controls when Superlaunch starts work; template delivery settings control the provider's delivery times. ## Reuse or revise Save the template and choose the version during [launch setup](/launcher/launch). Through MCP, use `launcher_templates_get` to inspect its versions and `launcher_template_versions_create` to save new settings. Archive a template to remove it from active use. Keep earlier version IDs when reviewing an existing launch or schedule. # Authentication and access Source: https://docs.superlaunch.pro/mcp/authentication Understand OAuth scopes, workspace selection, and revocation. Superlaunch's product MCP endpoint requires OAuth authorization. Each connection belongs to the member and workspace selected during consent. ## Authorize access Start the connection in your MCP client. Sign in to Superlaunch in the browser, choose the workspace, and review the requested scopes. * `mcp:read` permits read tools. * `mcp:write` permits write tools and requires read scope. Selecting write scope does not grant new provider or account permissions. Superlaunch checks the connection, workspace membership, function, and referenced objects when you call a tool. ## Workspace selection Authorize the workspace you intend the agent to use. Switching workspaces in the web application does not redefine the workspace attached to an existing MCP authorization. If you need a different workspace, reconnect and choose it during consent. Confirm the returned account list before an operation. ## Discovery for client developers The public protected-resource metadata is available at: ```text theme={null} https://mcp.superlaunch.pro/.well-known/oauth-protected-resource/mcp ``` It identifies the resource `https://mcp.superlaunch.pro/mcp`, the authorization server `https://auth.superlaunch.pro/`, and the supported scopes. Use your MCP client's OAuth implementation for registration, authorization, token refresh, and bearer headers. An unauthenticated request returning HTTP 401 is expected. Adding the URL alone does not authorize access. ## Revoke access Open **Connections → AI agents** and select **Disconnect**. Superlaunch rechecks revoked connections on calls. Removing an agent from a conversation and revoking its Superlaunch connection are separate actions. See [MCP troubleshooting](/mcp/troubleshooting) if authorization loops or a tool becomes unavailable. # Connect an MCP client Source: https://docs.superlaunch.pro/mcp/connect Set up Superlaunch in ChatGPT, Claude, Codex, or another OAuth client. You need a Superlaunch workspace and an AI client that supports remote MCP with OAuth. Use this server URL: ```text theme={null} https://mcp.superlaunch.pro/mcp ``` Client interfaces change. The steps below follow the product setup instructions and official client documentation checked on October 13, 2026. ## ChatGPT Work 1. Open the **Plugins** directory in ChatGPT. 2. Select **+ → Add custom MCP server**. 3. Name it **Superlaunch** and enter the server URL. 4. Choose **OAuth** with dynamic client registration. Leave client ID and secret empty. 5. Review the access notice, create the plugin, and install it from your personal plugins. 6. Sign in to Superlaunch, choose a workspace, and approve access. 7. Start a **Work** chat. Type `@` and select Superlaunch. See the [official plugin connection guide](https://developers.openai.com/plugins/quickstart). If your ChatGPT workspace uses the Apps interface, use **Apps → Create**, enable developer mode where required, enter the same OAuth server, and complete the tool scan. Availability and admin controls depend on the ChatGPT plan; check the [official MCP app guide](https://help.openai.com/en/articles/12584461-developer-mode-and-mcp-apps-in-chatgpt). ## Claude 1. Open **Customize → Connectors**. 2. Select **+ Add → Add custom connector**. 3. Name it **Superlaunch**, enter the URL, and continue. 4. Choose sign-in authentication and **Register automatically** for the OAuth client. 5. Add the connector, sign in to Superlaunch, choose a workspace, and approve access. 6. In the conversation, open **+ → Connectors** and enable Superlaunch. A Team or Enterprise organization may require an owner to add the connector first. See [Claude's remote connector guide](https://support.claude.com/en/articles/11175166-get-started-with-custom-connectors-using-remote-mcp). ## Codex CLI ```bash theme={null} codex mcp add superlaunch --url https://mcp.superlaunch.pro/mcp codex mcp login superlaunch ``` Complete authorization in the browser. Start a new session and use `/mcp` to check the connection. Run `codex mcp list` to inspect configured servers. See the [official MCP guide](https://learn.chatgpt.com/docs/extend/mcp?surface=cli). ## Claude Code ```bash theme={null} claude mcp add --transport http superlaunch https://mcp.superlaunch.pro/mcp ``` Start Claude Code, run `/mcp`, and complete OAuth authentication. See the [official Claude Code MCP guide](https://code.claude.com/docs/en/mcp). ## Other clients Add a remote Streamable HTTP server, enter the URL, and choose OAuth with automatic registration. Complete browser authorization and enable the connection. Ask the client to list the available tools, then run `ad_accounts_list`. ## Verify and disconnect Open **Connections → AI agents** in Superlaunch. Check that the connection appears and that a tool call updates its activity. Select **Disconnect** to revoke it. Reconnect through your client when you want to authorize it again. # MCP argument examples Source: https://docs.superlaunch.pro/mcp/examples Valid argument shapes for discovery, reporting, campaign validation, memory, and launch polling. These examples show argument objects for named MCP tools. Send them through your authenticated client. Replace example UUIDs with IDs from discovery reads and generate a fresh request UUID for a new operation. The read examples do not change advertising objects. `memory_remember` stores a fact; use it only with consent. The campaign example sets `dry_run: true`. ## List accessible accounts **Tool:** `ad_accounts_list` Read account IDs, currencies, and time zones before choosing a target. ```json theme={null} { "limit": 25 } ``` ## Read daily campaign metrics **Tool:** `insights_query` Replace the account UUID. Call insights\_capabilities first. Inspect complete and next\_cursor in the result. ```json theme={null} { "ad_account_ids": [ "00000000-0000-4000-8000-000000000001" ], "date_from": "2026-10-01", "date_to": "2026-10-07", "metrics": [ "spend", "impressions", "clicks" ], "entity_level": "campaign", "report_spec": "base_daily", "grain": "daily", "limit": 25 } ``` ## Rank purchase ROAS **Tool:** `insights_rank` Choose the purchase event and attribution window that match your analysis. The result distinguishes numeric extremes and includes data-through information. ```json theme={null} { "ad_account_ids": [ "00000000-0000-4000-8000-000000000001" ], "date_from": "2026-10-01", "date_to": "2026-10-07", "entity_level": "campaign", "rank_by": "roas", "action_type": "omni_purchase", "attribution_window": "7d_click", "direction": "both", "rank_scope": "global", "min_spend": 100, "limit": 5 } ``` ## Validate a paused campaign **Tool:** `campaigns_create` This defaults to validation without creating the intended campaign. Check actions\_capabilities first. Review the result before a live request; use a new request\_id when changing dry\_run to false. ```json theme={null} { "payload": { "request_id": "00000000-0000-4000-8000-000000000002", "ad_account_id": "00000000-0000-4000-8000-000000000001", "name": "October traffic test", "objective": "OUTCOME_TRAFFIC", "special_ad_categories": [], "status": "PAUSED", "dry_run": true } } ``` ## Save a fact after explicit consent **Tool:** `memory_remember` Use this only after the user asks you to save the fact or approves that suggestion. Replace the brand UUID and generate a request UUID. Inspect the returned persistence state. ```json theme={null} { "payload": { "request_id": "00000000-0000-4000-8000-000000000002", "fact": "Use British English for this brand's campaign copy.", "scope": { "kind": "brand", "target_id": "00000000-0000-4000-8000-000000000003" }, "consent": "explicit_user_request" } } ``` ## Find failed tool activity **Tool:** `activity_list` Follow next\_cursor with the same filters to read the complete set. ```json theme={null} { "payload": { "query": "campaigns_create", "limit": 25, "cursor": 0 } } ``` ## Discover saved creatives **Tool:** `launcher_creatives_list` Inspect the returned version and approval information before selecting content. ```json theme={null} { "limit": 25 } ``` ## Poll an accepted launch **Tool:** `launcher_launches_get` Use the account and launch IDs from the submission. Inspect launcher\_run\_operations for individual provider outcomes. ```json theme={null} { "ad_account_id": "00000000-0000-4000-8000-000000000001", "launch_id": "00000000-0000-4000-8000-000000000004" } ``` # Your first MCP workflow Source: https://docs.superlaunch.pro/mcp/first-workflow Verify access and ask your agent for a read-only performance check. Connect your client first. This exercise reads account data and performance without changing provider objects. ## 1. Confirm accounts Ask: > Use Superlaunch to list the ad accounts I can access. Include each account's ID, currency, and time zone. The agent should call `ad_accounts_list`. Choose the account you intend to inspect. If the name is ambiguous, choose by its returned ID. ## 2. Confirm reporting capabilities Ask: > Check the supported insight metrics and reporting levels before you build the report. The agent should call `insights_capabilities`. This avoids requesting an unsupported metric, breakdown, or grain. ## 3. Request a bounded report > For the selected account, show daily spend, impressions, and clicks for October 1–7, 2026. Use campaign level. State the account currency and time zone, and tell me if the result is incomplete. An illustrative `insights_query` argument object is: ```json theme={null} { "ad_account_ids": ["00000000-0000-4000-8000-000000000001"], "date_from": "2026-10-01", "date_to": "2026-10-07", "metrics": ["spend", "impressions", "clicks"], "entity_level": "campaign", "report_spec": "base_daily", "grain": "daily", "limit": 25 } ``` Replace the example UUID with an ID returned by `ad_accounts_list`. This is the tool's argument object, not an HTTP request body. ## 4. Check the result The agent should inspect `complete`, `next_cursor`, and the returned periods. When a cursor exists, it should request the next page with the same filters before claiming a complete report. Ask it to identify what the data supports and which questions need more evidence. A read-only report does not change ad delivery. ## Continue Use [MCP workflows](/mcp/workflows) for launches, rules, direct actions, and memory. Keep the [tool reference](/mcp/tools) available when building repeatable prompts. # Superlaunch MCP Source: https://docs.superlaunch.pro/mcp/overview Connect an AI client to your workspace's advertising data and operations. The Model Context Protocol (MCP) lets an AI client discover and call Superlaunch tools. Use it to inspect accounts, analyze performance, prepare launches, manage rules, and work with approved context. ## Server connection | Setting | Value | | - | - | | Server URL | `https://mcp.superlaunch.pro/mcp` | | Transport | Streamable HTTP | | Authentication | OAuth | | Client registration | Automatic dynamic client registration | | Read scope | `mcp:read` | | Write scope | `mcp:write` | Sign in through the browser, choose a workspace, and approve access. Your agent uses the resulting connection on your behalf. You do not paste your Superlaunch password or provider credentials into the conversation. ## Supported work * Read authorized ad accounts, brands, assets, and insights. * Create and manage rules and inspect their runs. * Create, duplicate, or change supported Meta objects. * Prepare Launcher library content, collections, templates, launches, and schedules. * Save approved facts and retrieve relevant memory. * Review unified activity and operation results. The tool catalog can vary with approved scopes and feature availability. Use capability tools before preparing actions. ## Get started [Connect your client](/mcp/connect), then use [Your first MCP workflow](/mcp/first-workflow). The [tool index](/mcp/tools) lists the documented methods by task. ## Product MCP and documentation MCP The product server above operates on your authorized workspace. Mintlify may also offer an MCP connection for searching this public documentation. A documentation connection does not authorize access to your advertising accounts. For plain-text documentation, use [/llms.txt](/llms.txt) and [/llms-full.txt](/llms-full.txt). # Accounts, assets, and brands Source: https://docs.superlaunch.pro/mcp/reference/accounts-brands Resolve Superlaunch account and brand IDs before reading or changing objects. Resolve Superlaunch account and brand IDs before reading or changing objects. Asset IDs identify provider objects; account IDs identify Superlaunch records. The parameter tables show the top-level arguments and common nested objects. Expand the input schema for nested formats, constraints, and allowed values. ## ad\_accounts\_list List ad accounts the current user may read. **Access:** `mcp:read`. Object and function permissions also apply. | Parameter | Type | Required / default | Details | | - | - | - | - | | `limit` | integer | `25` | See input schema. | ```json theme={null} { "additionalProperties": false, "properties": { "limit": { "default": 25, "type": "integer" } }, "type": "object" } ``` ## ad\_accounts\_get Read one authorized ad account. **Access:** `mcp:read`. Object and function permissions also apply. | Parameter | Type | Required / default | Details | | - | - | - | - | | `ad_account_id` | uuid | Required | See input schema. | ```json theme={null} { "additionalProperties": false, "properties": { "ad_account_id": { "format": "uuid", "type": "string" } }, "required": [ "ad_account_id" ], "type": "object" } ``` ## brands\_list List brands the current user may read. **Access:** `mcp:read`. Object and function permissions also apply. | Parameter | Type | Required / default | Details | | - | - | - | - | | `limit` | integer | `25` | See input schema. | ```json theme={null} { "additionalProperties": false, "properties": { "limit": { "default": 25, "type": "integer" } }, "type": "object" } ``` ## brands\_create Create a brand in the current workspace and grant its creator write access. Supply a fresh request\_id UUID. Reuse it with the same payload to safely retry; changed payloads conflict. Optional profile fields are website, industry, description, markets, and languages. No ad accounts are linked. **Access:** `mcp:read` plus `mcp:write`. Object and function permissions also apply. | Parameter | Type | Required / default | Details | | - | - | - | - | | `payload` | object | Required | Create a workspace brand; reuse request\_id only for identical retries. | ### payload fields | Parameter | Type | Required / default | Details | | - | - | - | - | | `request_id` | uuid | Required | See input schema. | | `name` | string | Required | minLength: `1`. maxLength: `200`. pattern: `\S`. | | `website` | string or null | `null` | See input schema. | | `industry` | string or null | `null` | See input schema. | | `description` | string or null | `null` | See input schema. | | `markets` | array of string | Optional | maxItems: `50`. | | `languages` | array of string | Optional | maxItems: `50`. | **Retries:** the tool advertises idempotent behavior. Reuse its request identifier only with unchanged inputs. ```json theme={null} { "$defs": { "BrandCreate": { "additionalProperties": false, "description": "Create a workspace brand; reuse request_id only for identical retries.", "properties": { "request_id": { "format": "uuid", "type": "string" }, "name": { "$ref": "#/$defs/BrandName" }, "website": { "anyOf": [ { "maxLength": 500, "type": "string" }, { "type": "null" } ], "default": null }, "industry": { "anyOf": [ { "maxLength": 200, "type": "string" }, { "type": "null" } ], "default": null }, "description": { "anyOf": [ { "maxLength": 10000, "type": "string" }, { "type": "null" } ], "default": null }, "markets": { "items": { "$ref": "#/$defs/BrandLabel" }, "maxItems": 50, "type": "array" }, "languages": { "items": { "$ref": "#/$defs/BrandLabel" }, "maxItems": 50, "type": "array" } }, "required": [ "request_id", "name" ], "type": "object" }, "BrandLabel": { "maxLength": 100, "minLength": 1, "pattern": "\\S", "type": "string" }, "BrandName": { "maxLength": 200, "minLength": 1, "pattern": "\\S", "type": "string" } }, "additionalProperties": false, "properties": { "payload": { "$ref": "#/$defs/BrandCreate" } }, "required": [ "payload" ], "type": "object" } ``` ## brands\_update Update mutable fields on one writable brand. Supply a fresh request\_id UUID and at least one field. Reuse the request\_id with the same brand and payload to safely retry; changed payloads conflict. Empty markets or languages clear those lists. Use kit to partially update messaging, voice, colors, or typography; a changed kit creates an immutable version. kit.positioning is required when no active kit exists. **Access:** `mcp:read` plus `mcp:write`. Object and function permissions also apply. | Parameter | Type | Required / default | Details | | - | - | - | - | | `brand_id` | uuid | Required | See input schema. | | `payload` | object | Required | Partially update a brand; reuse request\_id only for identical retries. | ### payload fields | Parameter | Type | Required / default | Details | | - | - | - | - | | `request_id` | uuid | Required | See input schema. | | `name` | string or null | `null` | See input schema. | | `website` | string or null | `null` | See input schema. | | `industry` | string or null | `null` | See input schema. | | `description` | string or null | `null` | See input schema. | | `markets` | array of string or null | `null` | See input schema. | | `languages` | array of string or null | `null` | See input schema. | | `kit` | object or null | `null` | See input schema. | **Retries:** the tool advertises idempotent behavior. Reuse its request identifier only with unchanged inputs. ```json theme={null} { "$defs": { "BrandKitColor": { "additionalProperties": false, "description": "One semantic color in a brand palette.", "properties": { "role": { "enum": [ "primary", "secondary", "accent", "background", "text" ], "type": "string" }, "name": { "maxLength": 80, "minLength": 1, "type": "string" }, "hex": { "pattern": "^#[0-9A-Fa-f]{6}$", "type": "string" } }, "required": [ "role", "name", "hex" ], "type": "object" }, "BrandKitPositioning": { "maxLength": 300, "minLength": 1, "type": "string" }, "BrandKitTagline": { "maxLength": 160, "type": "string" }, "BrandKitTypographyUpdate": { "additionalProperties": false, "description": "Partial primary brand typeface update; null clears a font.", "properties": { "heading_font": { "anyOf": [ { "maxLength": 120, "type": "string" }, { "type": "null" } ], "default": null }, "body_font": { "anyOf": [ { "maxLength": 120, "type": "string" }, { "type": "null" } ], "default": null } }, "type": "object" }, "BrandKitUpdate": { "additionalProperties": false, "description": "Partial versioned kit update; omitted fields retain their current values.", "properties": { "positioning": { "anyOf": [ { "$ref": "#/$defs/BrandKitPositioning" }, { "type": "null" } ], "default": null }, "tagline": { "anyOf": [ { "$ref": "#/$defs/BrandKitTagline" }, { "type": "null" } ], "default": null }, "colors": { "anyOf": [ { "items": { "$ref": "#/$defs/BrandKitColor" }, "maxItems": 5, "type": "array" }, { "type": "null" } ], "default": null }, "typography": { "anyOf": [ { "$ref": "#/$defs/BrandKitTypographyUpdate" }, { "type": "null" } ], "default": null }, "voice": { "anyOf": [ { "$ref": "#/$defs/BrandKitVoiceUpdate" }, { "type": "null" } ], "default": null }, "proof_points": { "anyOf": [ { "items": { "type": "string" }, "maxItems": 3, "type": "array" }, { "type": "null" } ], "default": null } }, "type": "object" }, "BrandKitVoiceUpdate": { "additionalProperties": false, "description": "Partial brand voice update; empty traits clear and null clears guidance.", "properties": { "traits": { "anyOf": [ { "items": { "type": "string" }, "maxItems": 5, "type": "array" }, { "type": "null" } ], "default": null }, "guidance": { "anyOf": [ { "maxLength": 500, "type": "string" }, { "type": "null" } ], "default": null } }, "type": "object" }, "BrandLabel": { "maxLength": 100, "minLength": 1, "pattern": "\\S", "type": "string" }, "BrandName": { "maxLength": 200, "minLength": 1, "pattern": "\\S", "type": "string" }, "BrandUpdate": { "additionalProperties": false, "description": "Partially update a brand; reuse request_id only for identical retries.", "properties": { "request_id": { "format": "uuid", "type": "string" }, "name": { "anyOf": [ { "$ref": "#/$defs/BrandName" }, { "type": "null" } ], "default": null }, "website": { "anyOf": [ { "maxLength": 500, "type": "string" }, { "type": "null" } ], "default": null }, "industry": { "anyOf": [ { "maxLength": 200, "type": "string" }, { "type": "null" } ], "default": null }, "description": { "anyOf": [ { "maxLength": 10000, "type": "string" }, { "type": "null" } ], "default": null }, "markets": { "anyOf": [ { "items": { "$ref": "#/$defs/BrandLabel" }, "maxItems": 50, "type": "array" }, { "type": "null" } ], "default": null }, "languages": { "anyOf": [ { "items": { "$ref": "#/$defs/BrandLabel" }, "maxItems": 50, "type": "array" }, { "type": "null" } ], "default": null }, "kit": { "anyOf": [ { "$ref": "#/$defs/BrandKitUpdate" }, { "type": "null" } ], "default": null } }, "required": [ "request_id" ], "type": "object" } }, "additionalProperties": false, "properties": { "brand_id": { "format": "uuid", "type": "string" }, "payload": { "$ref": "#/$defs/BrandUpdate" } }, "required": [ "brand_id", "payload" ], "type": "object" } ``` ## brands\_get Read one authorized brand with its active structured brand kit. **Access:** `mcp:read`. Object and function permissions also apply. | Parameter | Type | Required / default | Details | | - | - | - | - | | `brand_id` | uuid | Required | See input schema. | ```json theme={null} { "additionalProperties": false, "properties": { "brand_id": { "format": "uuid", "type": "string" } }, "required": [ "brand_id" ], "type": "object" } ``` ## assets\_list List one filtered normalized asset page under an authorized account. **Access:** `mcp:read`. Object and function permissions also apply. | Parameter | Type | Required / default | Details | | - | - | - | - | | `ad_account_id` | uuid | Required | See input schema. | | `level` | campaign, adset, ad, creative | Required | See input schema. | | `limit` | integer | `25` | minimum: `1`. maximum: `200`. | | `cursor` | string or null | `null` | See input schema. | ```json theme={null} { "$defs": { "AssetCursor": { "anyOf": [ { "pattern": "^[0-9]+$", "type": "string" }, { "type": "null" } ] }, "AssetLevel": { "enum": [ "campaign", "adset", "ad", "creative" ], "type": "string" }, "AssetLimit": { "maximum": 200, "minimum": 1, "type": "integer" } }, "additionalProperties": false, "properties": { "ad_account_id": { "format": "uuid", "type": "string" }, "level": { "$ref": "#/$defs/AssetLevel" }, "limit": { "$ref": "#/$defs/AssetLimit", "default": 25 }, "cursor": { "$ref": "#/$defs/AssetCursor", "default": null, "type": [ "string", "null" ] } }, "required": [ "ad_account_id", "level" ], "type": "object" } ``` ## assets\_get Read one normalized asset under an authorized account. **Access:** `mcp:read`. Object and function permissions also apply. | Parameter | Type | Required / default | Details | | - | - | - | - | | `asset_id` | string | Required | See input schema. | | `ad_account_id` | uuid | Required | See input schema. | ```json theme={null} { "additionalProperties": false, "properties": { "asset_id": { "type": "string" }, "ad_account_id": { "format": "uuid", "type": "string" } }, "required": [ "asset_id", "ad_account_id" ], "type": "object" } ``` # Direct Meta actions Source: https://docs.superlaunch.pro/mcp/reference/actions Call `actions_capabilities` to check whether provider effects are enabled. Call `actions_capabilities` to check whether provider effects 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 parameter tables show the top-level arguments and common nested objects. Expand the input schema for nested formats, constraints, and allowed values. ## actions\_capabilities List configured direct Meta creation, duplication, and status actions. **Access:** `mcp:read`. Object and function permissions also apply. **Arguments:** none. ```json theme={null} { "additionalProperties": false, "properties": {}, "type": "object" } ``` ## media\_uploads\_create Upload media to the current workspace library without requiring an account. Open a picker for up to ten files (64 MiB total by default), or supply metadata for one signed PUT grant. A successful PUT confirms library persistence. Use media\_asset\_id with Launcher library tools; media\_id retains compatibility with creatives\_create. Uploads do not contact Meta. **Access:** `mcp:read` plus `mcp:write`. Object and function permissions also apply. | Parameter | Type | Required / default | Details | | - | - | - | - | | `payload` | object | Required | Open the media picker or create one bounded signed upload grant. | ### payload fields | Parameter | Type | Required / default | Details | | - | - | - | - | | `request_id` | uuid | Required | See input schema. | | `ad_account_id` | uuid or null | `null` | See input schema. | | `filename` | string or null | `null` | See input schema. | | `mime_type` | image/jpeg, image/png, image/webp, video/mp4, video/quicktime or null | `null` | See input schema. | | `byte_size` | integer or null | `null` | See input schema. | | `checksum_sha256` | string or null | `null` | See input schema. | **Retries:** the tool advertises idempotent behavior. Reuse its request identifier only with unchanged inputs. ```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" } ``` ## media\_uploads\_complete Upload up to ten files into the current workspace media library. The total interactive limit is 64 MiB by default, shared across all files. Use returned media\_asset\_id with Launcher library tools. The legacy media\_id remains compatible with creatives\_create. Retry the same request\_id and files to retain exact per-file receipts, including after a partial batch failure. **Access:** `mcp:read` plus `mcp:write`. Object and function permissions also apply. | Parameter | Type | Required / default | Details | | - | - | - | - | | `files` | array of object | Required | minItems: `1`. maxItems: `10`. | | `media_id` | uuid or null | `null` | See input schema. | | `request_id` | uuid or null | `null` | See input schema. | | `ad_account_id` | uuid or null | `null` | See input schema. | **Retries:** the tool advertises idempotent behavior. Reuse its request identifier only with unchanged inputs. ```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" } ``` ## creatives\_create Create a Meta creative from one completed signed media upload. **Access:** `mcp:read` plus `mcp:write`. Object and function permissions also apply. | 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 | See input schema. | | `ad_account_id` | uuid | Required | See input schema. | | `media_id` | uuid | Required | See input schema. | | `name` | string | Required | minLength: `1`. maxLength: `255`. | | `object_story_spec` | object | Required | See input schema. | | `url_tags` | string or null | `null` | See input schema. | | `dry_run` | boolean | `true` | See input schema. | **Retries:** the tool advertises idempotent behavior. Reuse its request identifier only with unchanged inputs. ```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" } ``` ## campaigns\_create Validate by default or explicitly create one paused Meta campaign. **Access:** `mcp:read` plus `mcp:write`. Object and function permissions also apply. | 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 | See input schema. | | `ad_account_id` | uuid | Required | See input schema. | | `name` | string | Required | minLength: `1`. maxLength: `255`. | | `objective` | string | Required | minLength: `1`. maxLength: `100`. | | `status` | "PAUSED" | `"PAUSED"` | See input schema. | | `special_ad_categories` | array of string | Optional | maxItems: `10`. | | `special_ad_category_country` | array of string or null | `null` | See input schema. | | `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` | See input schema. | | `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` | See input schema. | | `buying_type` | string or null | `null` | See input schema. | | `promoted_object` | object or null | `null` | See input schema. | | `start_time` | string or null | `null` | See input schema. | | `stop_time` | string or null | `null` | See input schema. | | `dry_run` | boolean | `true` | See input schema. | **Retries:** the tool advertises idempotent behavior. Reuse its request identifier only with unchanged inputs. ```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" } ``` ## adsets\_create Validate by default or explicitly create one paused Meta ad set. **Access:** `mcp:read` plus `mcp:write`. Object and function permissions also apply. | 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 | See input schema. | | `ad_account_id` | uuid | Required | See input schema. | | `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 | See input schema. | | `status` | "PAUSED" | `"PAUSED"` | See input schema. | | `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` | See input schema. | | `promoted_object` | object or null | `null` | See input schema. | | `destination_type` | string or null | `null` | See input schema. | | `attribution_spec` | array of object or null | `null` | See input schema. | | `start_time` | string or null | `null` | See input schema. | | `end_time` | string or null | `null` | See input schema. | | `dsa_beneficiary` | string or null | `null` | See input schema. | | `dsa_payor` | string or null | `null` | See input schema. | | `dry_run` | boolean | `true` | See input schema. | **Retries:** the tool advertises idempotent behavior. Reuse its request identifier only with unchanged inputs. ```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" } ``` ## ads\_create Validate by default or explicitly create one paused Meta ad. **Access:** `mcp:read` plus `mcp:write`. Object and function permissions also apply. | 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 | See input schema. | | `ad_account_id` | uuid | Required | See input schema. | | `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"` | See input schema. | | `conversion_domain` | string or null | `null` | See input schema. | | `tracking_specs` | array of object or null | `null` | See input schema. | | `dry_run` | boolean | `true` | See input schema. | **Retries:** the tool advertises idempotent behavior. Reuse its request identifier only with unchanged inputs. ```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" } ``` ## actions\_execute Execute set\_status for one campaign, ad set, or ad. **Access:** `mcp:read` plus `mcp:write`. Object and function permissions also apply. | 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 | See input schema. | | `ad_account_id` | uuid | Required | See input schema. | | `target_type` | campaign, adset, ad | Required | See input schema. | | `target_id` | string | Required | minLength: `1`. maxLength: `300`. | | `status` | ACTIVE, PAUSED | Required | See input schema. | | `dry_run` | boolean | `true` | See input schema. | **Retries:** the tool advertises idempotent behavior. Reuse its request identifier only with unchanged inputs. ```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" } ``` ## campaigns\_duplicate Preview or copy a campaign with its children in the same account, paused. **Access:** `mcp:read` plus `mcp:write`. Object and function permissions also apply. | 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 | See input schema. | | `ad_account_id` | uuid | Required | See input schema. | | `source_id` | string | Required | minLength: `1`. maxLength: `300`. | | `dry_run` | boolean | `true` | See input schema. | **Retries:** the tool advertises idempotent behavior. Reuse its request identifier only with unchanged inputs. ```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" } ``` ## adsets\_duplicate Preview or copy an ad set with its ads in the same campaign, paused. **Access:** `mcp:read` plus `mcp:write`. Object and function permissions also apply. | 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 | See input schema. | | `ad_account_id` | uuid | Required | See input schema. | | `source_id` | string | Required | minLength: `1`. maxLength: `300`. | | `dry_run` | boolean | `true` | See input schema. | **Retries:** the tool advertises idempotent behavior. Reuse its request identifier only with unchanged inputs. ```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" } ``` ## ads\_duplicate Preview or copy an ad in the same ad set, paused. **Access:** `mcp:read` plus `mcp:write`. Object and function permissions also apply. | 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 | See input schema. | | `ad_account_id` | uuid | Required | See input schema. | | `source_id` | string | Required | minLength: `1`. maxLength: `300`. | | `dry_run` | boolean | `true` | See input schema. | **Retries:** the tool advertises idempotent behavior. Reuse its request identifier only with unchanged inputs. ```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" } ``` ## actions\_get Read one permission-filtered action result by Activity ID. **Access:** `mcp:read`. Object and function permissions also apply. | Parameter | Type | Required / default | Details | | - | - | - | - | | `activity_id` | uuid | Required | See input schema. | ```json theme={null} { "additionalProperties": false, "properties": { "activity_id": { "format": "uuid", "type": "string" } }, "required": [ "activity_id" ], "type": "object" } ``` # Activity tools Source: https://docs.superlaunch.pro/mcp/reference/activity Use the unified log for tool calls, actions, and rule operations. Use the unified log for tool calls, actions, and rule operations. Exact filters select known fields; `query` searches text. Follow `next_cursor` until `complete` is true. Time filters form a half-open interval: include `started_after`, exclude `started_before`. The parameter tables show the top-level arguments and common nested objects. Expand the input schema for nested formats, constraints, and allowed values. ## activity\_list Search the complete authorized tool, action, and rule-run log. Use exact filters for known fields or `query` for case-insensitive text search across tool, action, member, target, request, and error metadata. Follow `next_cursor` until `complete` is true. **Access:** `mcp:read`. Object and function permissions also apply. | Parameter | Type | Required / default | Details | | - | - | - | - | | `payload` | object | Required | Bounded page request for the unified activity log. | ### payload fields | Parameter | Type | Required / default | Details | | - | - | - | - | | `query` | string or null | `null` | See input schema. | | `activity_type` | tool\_call, action, rule\_run, launch\_run, creative\_import or null | `null` | See input schema. | | `status` | running, succeeded, failed, denied, skipped, undone, undo\_failed, reconciliation\_needed or null | `null` | See input schema. | | `team_member_user_id` | uuid or null | `null` | See input schema. | | `initiator_type` | string or null | `null` | See input schema. | | `ad_account_id` | uuid or null | `null` | See input schema. | | `mcp_connection_id` | uuid or null | `null` | See input schema. | | `rule_id` | uuid or null | `null` | See input schema. | | `rule_run_id` | uuid or null | `null` | See input schema. | | `launch_id` | uuid or null | `null` | See input schema. | | `tool_name` | string or null | `null` | See input schema. | | `action_name` | string or null | `null` | See input schema. | | `target_type` | string or null | `null` | See input schema. | | `target_id` | string or null | `null` | See input schema. | | `started_after` | date-time or null | `null` | See input schema. | | `started_before` | date-time or null | `null` | See input schema. | | `limit` | integer | `25` | minimum: `1`. maximum: `100`. | | `cursor` | integer | `0` | minimum: `0`. maximum: `4294967295`. | ```json theme={null} { "$defs": { "ActivityQuery": { "additionalProperties": false, "description": "Bounded page request for the unified activity log.", "properties": { "query": { "anyOf": [ { "maxLength": 200, "minLength": 1, "type": "string" }, { "type": "null" } ], "default": null }, "activity_type": { "anyOf": [ { "$ref": "#/$defs/ActivityType" }, { "type": "null" } ], "default": null }, "status": { "anyOf": [ { "$ref": "#/$defs/ActivityStatus" }, { "type": "null" } ], "default": null }, "team_member_user_id": { "anyOf": [ { "format": "uuid", "type": "string" }, { "type": "null" } ], "default": null }, "initiator_type": { "anyOf": [ { "maxLength": 32, "minLength": 1, "type": "string" }, { "type": "null" } ], "default": null }, "ad_account_id": { "anyOf": [ { "format": "uuid", "type": "string" }, { "type": "null" } ], "default": null }, "mcp_connection_id": { "anyOf": [ { "format": "uuid", "type": "string" }, { "type": "null" } ], "default": null }, "rule_id": { "anyOf": [ { "format": "uuid", "type": "string" }, { "type": "null" } ], "default": null }, "rule_run_id": { "anyOf": [ { "format": "uuid", "type": "string" }, { "type": "null" } ], "default": null }, "launch_id": { "anyOf": [ { "format": "uuid", "type": "string" }, { "type": "null" } ], "default": null }, "tool_name": { "anyOf": [ { "maxLength": 100, "minLength": 1, "type": "string" }, { "type": "null" } ], "default": null }, "action_name": { "anyOf": [ { "maxLength": 64, "minLength": 1, "type": "string" }, { "type": "null" } ], "default": null }, "target_type": { "anyOf": [ { "maxLength": 64, "minLength": 1, "type": "string" }, { "type": "null" } ], "default": null }, "target_id": { "anyOf": [ { "maxLength": 300, "minLength": 1, "type": "string" }, { "type": "null" } ], "default": null }, "started_after": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "default": null }, "started_before": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "default": null }, "limit": { "default": 25, "maximum": 100, "minimum": 1, "type": "integer" }, "cursor": { "default": 0, "maximum": 4294967295, "minimum": 0, "type": "integer" } }, "type": "object" }, "ActivityStatus": { "description": "Small shared activity lifecycle.", "enum": [ "running", "succeeded", "failed", "denied", "skipped", "undone", "undo_failed", "reconciliation_needed" ], "type": "string" }, "ActivityType": { "description": "User-visible kinds of work.", "enum": [ "tool_call", "action", "rule_run", "launch_run", "creative_import" ], "type": "string" } }, "additionalProperties": false, "properties": { "payload": { "$ref": "#/$defs/ActivityQuery" } }, "required": [ "payload" ], "type": "object" } ``` ## activity\_get Read one complete authorized activity record by ID. **Access:** `mcp:read`. Object and function permissions also apply. | Parameter | Type | Required / default | Details | | - | - | - | - | | `activity_id` | uuid | Required | See input schema. | ```json theme={null} { "additionalProperties": false, "properties": { "activity_id": { "format": "uuid", "type": "string" } }, "required": [ "activity_id" ], "type": "object" } ``` ## activity\_summary Count the complete authorized result set for activity filters. **Access:** `mcp:read`. Object and function permissions also apply. | Parameter | Type | Required / default | Details | | - | - | - | - | | `payload` | object | Required | Permission-filtered search criteria for the unified activity log. | ### payload fields | Parameter | Type | Required / default | Details | | - | - | - | - | | `query` | string or null | `null` | See input schema. | | `activity_type` | tool\_call, action, rule\_run, launch\_run, creative\_import or null | `null` | See input schema. | | `status` | running, succeeded, failed, denied, skipped, undone, undo\_failed, reconciliation\_needed or null | `null` | See input schema. | | `team_member_user_id` | uuid or null | `null` | See input schema. | | `initiator_type` | string or null | `null` | See input schema. | | `ad_account_id` | uuid or null | `null` | See input schema. | | `mcp_connection_id` | uuid or null | `null` | See input schema. | | `rule_id` | uuid or null | `null` | See input schema. | | `rule_run_id` | uuid or null | `null` | See input schema. | | `launch_id` | uuid or null | `null` | See input schema. | | `tool_name` | string or null | `null` | See input schema. | | `action_name` | string or null | `null` | See input schema. | | `target_type` | string or null | `null` | See input schema. | | `target_id` | string or null | `null` | See input schema. | | `started_after` | date-time or null | `null` | See input schema. | | `started_before` | date-time or null | `null` | See input schema. | ```json theme={null} { "$defs": { "ActivityFilters": { "additionalProperties": false, "description": "Permission-filtered search criteria for the unified activity log.", "properties": { "query": { "anyOf": [ { "maxLength": 200, "minLength": 1, "type": "string" }, { "type": "null" } ], "default": null }, "activity_type": { "anyOf": [ { "$ref": "#/$defs/ActivityType" }, { "type": "null" } ], "default": null }, "status": { "anyOf": [ { "$ref": "#/$defs/ActivityStatus" }, { "type": "null" } ], "default": null }, "team_member_user_id": { "anyOf": [ { "format": "uuid", "type": "string" }, { "type": "null" } ], "default": null }, "initiator_type": { "anyOf": [ { "maxLength": 32, "minLength": 1, "type": "string" }, { "type": "null" } ], "default": null }, "ad_account_id": { "anyOf": [ { "format": "uuid", "type": "string" }, { "type": "null" } ], "default": null }, "mcp_connection_id": { "anyOf": [ { "format": "uuid", "type": "string" }, { "type": "null" } ], "default": null }, "rule_id": { "anyOf": [ { "format": "uuid", "type": "string" }, { "type": "null" } ], "default": null }, "rule_run_id": { "anyOf": [ { "format": "uuid", "type": "string" }, { "type": "null" } ], "default": null }, "launch_id": { "anyOf": [ { "format": "uuid", "type": "string" }, { "type": "null" } ], "default": null }, "tool_name": { "anyOf": [ { "maxLength": 100, "minLength": 1, "type": "string" }, { "type": "null" } ], "default": null }, "action_name": { "anyOf": [ { "maxLength": 64, "minLength": 1, "type": "string" }, { "type": "null" } ], "default": null }, "target_type": { "anyOf": [ { "maxLength": 64, "minLength": 1, "type": "string" }, { "type": "null" } ], "default": null }, "target_id": { "anyOf": [ { "maxLength": 300, "minLength": 1, "type": "string" }, { "type": "null" } ], "default": null }, "started_after": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "default": null }, "started_before": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "default": null } }, "type": "object" }, "ActivityStatus": { "description": "Small shared activity lifecycle.", "enum": [ "running", "succeeded", "failed", "denied", "skipped", "undone", "undo_failed", "reconciliation_needed" ], "type": "string" }, "ActivityType": { "description": "User-visible kinds of work.", "enum": [ "tool_call", "action", "rule_run", "launch_run", "creative_import" ], "type": "string" } }, "additionalProperties": false, "properties": { "payload": { "$ref": "#/$defs/ActivityFilters" } }, "required": [ "payload" ], "type": "object" } ``` # Insights tools Source: https://docs.superlaunch.pro/mcp/reference/insights Call `insights_capabilities` before querying. Call `insights_capabilities` before querying. Choose the reporting period, entity level, metrics, conversion event, and attribution window. Follow query cursors before reporting complete results. The parameter tables show the top-level arguments and common nested objects. Expand the input schema for nested formats, constraints, and allowed values. ## insights\_capabilities List insight grains, compatible metrics, dimensions, and paging semantics. **Access:** `mcp:read`. Object and function permissions also apply. **Arguments:** none. ```json theme={null} { "additionalProperties": false, "properties": {}, "type": "object" } ``` ## insights\_query Query one insights page, then follow next\_cursor when needed. Call `insights_capabilities` first for valid combinations. The default page contains 25 rows and the MCP maximum is 100 rows to keep tool results within agent context limits. Prefer the default instead of requesting the maximum unless a larger page is necessary. Daily account, campaign, and adset queries automatically roll up aggregation-safe metrics from ad rows; reach and frequency remain exact native metrics at the requested level. Filter structured metrics with `action_types` and `attribution_windows` instead of returning every raw Meta action tuple. Both filters are REQUIRED for actions, action\_values, and other structured metrics. For purchase analysis, for example, supply action\_types=\["omni\_purchase"], attribution\_windows=\["value"]. Choose the action and attribution window that match the question; they are not inferred. Use sorting and `min_spend` before paginating for top-N analysis; use `entity_ids` for targeted follow-up queries. **Access:** `mcp:read`. Object and function permissions also apply. | Parameter | Type | Required / default | Details | | - | - | - | - | | `ad_account_ids` | array of uuid | Required | minItems: `1`. maxItems: `20`. | | `date_from` | string | Required | See input schema. | | `date_to` | string | Required | See input schema. | | `metrics` | array of spend, impressions, clicks, reach, frequency, inline\_link\_clicks, inline\_post\_engagement, unique\_clicks, unique\_inline\_link\_clicks, quality\_ranking, engagement\_rate\_ranking, conversion\_rate\_ranking, actions, action\_values, conversions, conversion\_values, outbound\_clicks, unique\_outbound\_clicks, video\_play\_actions, video\_continuous\_2\_sec\_watched\_actions, video\_15\_sec\_watched\_actions, video\_30\_sec\_watched\_actions, video\_p25\_watched\_actions, video\_p50\_watched\_actions, video\_p75\_watched\_actions, video\_p95\_watched\_actions, video\_p100\_watched\_actions, video\_thruplay\_watched\_actions, video\_avg\_time\_watched\_actions, video\_time\_watched\_actions, ctr, cpc, cpm | Required | minItems: `1`. maxItems: `20`. | | `entity_level` | account, campaign, adset, ad | `"ad"` | See input schema. | | `entity_ids` | array of string or null | `null` | See input schema. | | `report_spec` | base\_daily, demographic\_daily, country\_daily | `"base_daily"` | See input schema. | | `grain` | daily, period | `"daily"` | See input schema. | | `action_types` | array of string or null | `null` | See input schema. | | `attribution_windows` | array of value, 1d\_click, 7d\_click, 1d\_view or null | `null` | See input schema. | | `min_spend` | number or null | `null` | See input schema. | | `sort_by` | entity\_id, date, spend, impressions, clicks, ctr, purchases, roas | `"entity_id"` | See input schema. | | `sort_direction` | asc, desc | `"asc"` | See input schema. | | `sort_action_type` | string | `"omni_purchase"` | See input schema. | | `sort_attribution` | value, 1d\_click, 7d\_click, 1d\_view | `"value"` | See input schema. | | `limit` | integer | `25` | minimum: `1`. maximum: `100`. | | `cursor` | string or null | `null` | See input schema. | ```json theme={null} { "$defs": { "InsightAccountIds": { "items": { "format": "uuid", "type": "string" }, "maxItems": 20, "minItems": 1, "type": "array" }, "InsightActionType": { "maxLength": 200, "minLength": 1, "type": "string" }, "InsightActionTypes": { "items": { "$ref": "#/$defs/InsightActionType" }, "maxItems": 50, "type": "array" }, "InsightAttributionWindow": { "enum": [ "value", "1d_click", "7d_click", "1d_view" ], "type": "string" }, "InsightAttributionWindows": { "items": { "$ref": "#/$defs/InsightAttributionWindow" }, "maxItems": 4, "type": "array" }, "InsightEntityId": { "maxLength": 300, "minLength": 1, "type": "string" }, "InsightEntityIds": { "items": { "$ref": "#/$defs/InsightEntityId" }, "maxItems": 100, "type": "array" }, "InsightEntityLevel": { "enum": [ "account", "campaign", "adset", "ad" ], "type": "string" }, "InsightGrain": { "enum": [ "daily", "period" ], "type": "string" }, "InsightLimit": { "maximum": 100, "minimum": 1, "type": "integer" }, "InsightMetric": { "enum": [ "spend", "impressions", "clicks", "reach", "frequency", "inline_link_clicks", "inline_post_engagement", "unique_clicks", "unique_inline_link_clicks", "quality_ranking", "engagement_rate_ranking", "conversion_rate_ranking", "actions", "action_values", "conversions", "conversion_values", "outbound_clicks", "unique_outbound_clicks", "video_play_actions", "video_continuous_2_sec_watched_actions", "video_15_sec_watched_actions", "video_30_sec_watched_actions", "video_p25_watched_actions", "video_p50_watched_actions", "video_p75_watched_actions", "video_p95_watched_actions", "video_p100_watched_actions", "video_thruplay_watched_actions", "video_avg_time_watched_actions", "video_time_watched_actions", "ctr", "cpc", "cpm" ], "type": "string" }, "InsightMetrics": { "items": { "$ref": "#/$defs/InsightMetric" }, "maxItems": 20, "minItems": 1, "type": "array" }, "InsightMinimumSpend": { "minimum": 0, "type": "number" }, "InsightReportSpec": { "enum": [ "base_daily", "demographic_daily", "country_daily" ], "type": "string" }, "InsightSortBy": { "enum": [ "entity_id", "date", "spend", "impressions", "clicks", "ctr", "purchases", "roas" ], "type": "string" }, "InsightSortDirection": { "enum": [ "asc", "desc" ], "type": "string" } }, "additionalProperties": false, "properties": { "ad_account_ids": { "$ref": "#/$defs/InsightAccountIds" }, "date_from": { "type": "string" }, "date_to": { "type": "string" }, "metrics": { "$ref": "#/$defs/InsightMetrics" }, "entity_level": { "$ref": "#/$defs/InsightEntityLevel", "default": "ad" }, "entity_ids": { "anyOf": [ { "$ref": "#/$defs/InsightEntityIds" }, { "type": "null" } ], "default": null, "type": [ "array", "null" ] }, "report_spec": { "$ref": "#/$defs/InsightReportSpec", "default": "base_daily" }, "grain": { "$ref": "#/$defs/InsightGrain", "default": "daily" }, "action_types": { "anyOf": [ { "$ref": "#/$defs/InsightActionTypes" }, { "type": "null" } ], "default": null, "type": [ "array", "null" ] }, "attribution_windows": { "anyOf": [ { "$ref": "#/$defs/InsightAttributionWindows" }, { "type": "null" } ], "default": null, "type": [ "array", "null" ] }, "min_spend": { "anyOf": [ { "$ref": "#/$defs/InsightMinimumSpend" }, { "type": "null" } ], "default": null, "type": [ "number", "null" ] }, "sort_by": { "$ref": "#/$defs/InsightSortBy", "default": "entity_id" }, "sort_direction": { "$ref": "#/$defs/InsightSortDirection", "default": "asc" }, "sort_action_type": { "default": "omni_purchase", "type": "string" }, "sort_attribution": { "$ref": "#/$defs/InsightAttributionWindow", "default": "value" }, "limit": { "$ref": "#/$defs/InsightLimit", "default": 25 }, "cursor": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "type": [ "string", "null" ] } }, "required": [ "ad_account_ids", "date_from", "date_to", "metrics" ], "type": "object" } ``` ## insights\_rank Rank compact period performance without returning raw insight pages. Use one entity level per call and choose an explicit conversion action and attribution window for conversion metrics. `highest` and `lowest` are numeric extremes, not automatic business judgments. `global` returns one ranking across the requested accounts; `per_account` returns one ranking for each account. Add minimum evidence filters for meaningful results. The result never includes raw structured Meta metric arrays or a pagination cursor. **Access:** `mcp:read`. Object and function permissions also apply. | Parameter | Type | Required / default | Details | | - | - | - | - | | `ad_account_ids` | array of uuid | Required | minItems: `1`. maxItems: `20`. | | `date_from` | string | Required | See input schema. | | `date_to` | string | Required | See input schema. | | `entity_level` | campaign, adset, ad | Required | See input schema. | | `rank_by` | spend, impressions, clicks, ctr, cpc, cpm, conversions, conversion\_value, cpa, roas | Required | See input schema. | | `action_type` | string | `"omni_purchase"` | minLength: `1`. maxLength: `200`. | | `attribution_window` | value, 1d\_click, 7d\_click, 1d\_view | `"value"` | See input schema. | | `direction` | highest, lowest, both | `"both"` | See input schema. | | `rank_scope` | global, per\_account | `"global"` | See input schema. | | `statuses` | array of string or null | `null` | See input schema. | | `min_spend` | number or null | `null` | See input schema. | | `min_impressions` | integer or null | `null` | See input schema. | | `min_clicks` | integer or null | `null` | See input schema. | | `min_conversions` | number or string or null | `null` | See input schema. | | `limit` | integer | `5` | minimum: `1`. maximum: `20`. | ```json theme={null} { "$defs": { "InsightAccountIds": { "items": { "format": "uuid", "type": "string" }, "maxItems": 20, "minItems": 1, "type": "array" }, "InsightActionType": { "maxLength": 200, "minLength": 1, "type": "string" }, "InsightAttributionWindow": { "enum": [ "value", "1d_click", "7d_click", "1d_view" ], "type": "string" }, "InsightMinimumConversions": { "anyOf": [ { "minimum": 0.0, "type": "number" }, { "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$", "type": "string" } ] }, "InsightMinimumCount": { "minimum": 0, "type": "integer" }, "InsightMinimumSpend": { "minimum": 0, "type": "number" }, "InsightRankDirection": { "enum": [ "highest", "lowest", "both" ], "type": "string" }, "InsightRankEntityLevel": { "enum": [ "campaign", "adset", "ad" ], "type": "string" }, "InsightRankLimit": { "maximum": 20, "minimum": 1, "type": "integer" }, "InsightRankMetric": { "enum": [ "spend", "impressions", "clicks", "ctr", "cpc", "cpm", "conversions", "conversion_value", "cpa", "roas" ], "type": "string" }, "InsightRankScope": { "enum": [ "global", "per_account" ], "type": "string" }, "InsightStatuses": { "items": { "maxLength": 64, "minLength": 1, "type": "string" }, "maxItems": 16, "type": "array" } }, "additionalProperties": false, "properties": { "ad_account_ids": { "$ref": "#/$defs/InsightAccountIds" }, "date_from": { "type": "string" }, "date_to": { "type": "string" }, "entity_level": { "$ref": "#/$defs/InsightRankEntityLevel" }, "rank_by": { "$ref": "#/$defs/InsightRankMetric" }, "action_type": { "$ref": "#/$defs/InsightActionType", "default": "omni_purchase" }, "attribution_window": { "$ref": "#/$defs/InsightAttributionWindow", "default": "value" }, "direction": { "$ref": "#/$defs/InsightRankDirection", "default": "both" }, "rank_scope": { "$ref": "#/$defs/InsightRankScope", "default": "global" }, "statuses": { "anyOf": [ { "$ref": "#/$defs/InsightStatuses" }, { "type": "null" } ], "default": null, "type": [ "array", "null" ] }, "min_spend": { "anyOf": [ { "$ref": "#/$defs/InsightMinimumSpend" }, { "type": "null" } ], "default": null, "type": [ "number", "null" ] }, "min_impressions": { "anyOf": [ { "$ref": "#/$defs/InsightMinimumCount" }, { "type": "null" } ], "default": null, "type": [ "integer", "null" ] }, "min_clicks": { "anyOf": [ { "$ref": "#/$defs/InsightMinimumCount" }, { "type": "null" } ], "default": null, "type": [ "integer", "null" ] }, "min_conversions": { "anyOf": [ { "$ref": "#/$defs/InsightMinimumConversions" }, { "type": "null" } ], "default": null, "type": [ "number", "string", "null" ] }, "limit": { "$ref": "#/$defs/InsightRankLimit", "default": 5 } }, "required": [ "ad_account_ids", "date_from", "date_to", "entity_level", "rank_by" ], "type": "object" } ``` # Launcher Drive tools Source: https://docs.superlaunch.pro/mcp/reference/launcher-drive Authorize Google Drive and select files or folders in Superlaunch first. Authorize Google Drive and select files or folders in Superlaunch first. These tools expose selected items under `drive.file`. An empty result does not mean the folder is empty. Folder selection does not grant access to all children or start automatic importing. The parameter tables show the top-level arguments and common nested objects. Expand the input schema for nested formats, constraints, and allowed values. Successful Launcher responses include `status: "ok"`, the returned object or page, and `next_actions`. Follow returned cursors using the parameter specified by the tool. An accepted launch is not a completed provider write. ## launcher\_drive\_folders\_list List saved workspace folders. Connect Google Drive in Superlaunch first. **Access:** `mcp:read`. Object and function permissions also apply. | Parameter | Type | Required / default | Details | | - | - | - | - | | `connection_id` | uuid | Required | See input schema. | ```json theme={null} { "additionalProperties": false, "properties": { "connection_id": { "format": "uuid", "type": "string" } }, "required": [ "connection_id" ], "type": "object" } ``` ## launcher\_drive\_folders\_save Save a folder selected in Superlaunch's Google Picker with drive.file. Folder selection grants no access to its children. Select each new media batch in Google Picker, then refresh the folder list. No automatic import starts. **Access:** `mcp:read` plus `mcp:write`. Object and function permissions also apply. | Parameter | Type | Required / default | Details | | - | - | - | - | | `connection_id` | uuid | Required | See input schema. | | `folder_id` | string | Required | pattern: `^[A-Za-z0-9_-]{1,200}$`. | | `protected_manifest_ref` | uuid or null | `null` | See input schema. | **Retries:** the tool advertises idempotent behavior. Reuse its request identifier only with unchanged inputs. ```json theme={null} { "additionalProperties": false, "properties": { "connection_id": { "format": "uuid", "type": "string" }, "folder_id": { "pattern": "^[A-Za-z0-9_-]{1,200}$", "type": "string" }, "protected_manifest_ref": { "anyOf": [ { "format": "uuid", "type": "string" }, { "type": "null" } ], "default": null, "type": [ "string", "null" ] } }, "required": [ "connection_id", "folder_id" ], "type": "object" } ``` ## launcher\_drive\_folder\_files\_list List up to 100 selected media files and folders with drive.file. This is a selected subset: an empty page does not mean the folder is empty. Select each new batch in Superlaunch's Google Picker, then refresh this tool. Follow next\_page\_token for more authorized items; no complete-folder claim or automatic monitoring is made. Child navigation verifies saved-root ancestry. Protected references expire after one hour. Files are not downloaded. **Access:** `mcp:read`. Object and function permissions also apply. | Parameter | Type | Required / default | Details | | - | - | - | - | | `connection_id` | uuid | Required | See input schema. | | `folder_id` | string | Required | pattern: `^[A-Za-z0-9_-]{1,200}$`. | | `parent_folder_id` | string or null | `null` | See input schema. | | `parent_manifest_ref` | uuid or null | `null` | See input schema. | | `search` | string | `""` | maxLength: `200`. | | `media_type` | all, image, video | `"all"` | See input schema. | | `page_token` | string or null | `null` | See input schema. | ```json theme={null} { "additionalProperties": false, "properties": { "connection_id": { "format": "uuid", "type": "string" }, "folder_id": { "pattern": "^[A-Za-z0-9_-]{1,200}$", "type": "string" }, "parent_folder_id": { "anyOf": [ { "pattern": "^[A-Za-z0-9_-]{1,200}$", "type": "string" }, { "type": "null" } ], "default": null, "type": [ "string", "null" ] }, "parent_manifest_ref": { "anyOf": [ { "format": "uuid", "type": "string" }, { "type": "null" } ], "default": null, "type": [ "string", "null" ] }, "search": { "default": "", "maxLength": 200, "type": "string" }, "media_type": { "default": "all", "enum": [ "all", "image", "video" ], "type": "string" }, "page_token": { "anyOf": [ { "maxLength": 4096, "type": "string" }, { "type": "null" } ], "default": null, "type": [ "string", "null" ] } }, "required": [ "connection_id", "folder_id" ], "type": "object" } ``` # Launcher launch tools Source: https://docs.superlaunch.pro/mcp/reference/launcher-launches Discover exact provider assets and targets before preparing a launch. Discover exact provider assets and targets before preparing a launch. Preview reserves nothing. Submission uses one stable request key and returns work to track. Read operation results before retrying; corrected replacement inputs require a new request key. The parameter tables show the top-level arguments and common nested objects. Expand the input schema for nested formats, constraints, and allowed values. Successful Launcher responses include `status: "ok"`, the returned object or page, and `next_actions`. Follow returned cursors using the parameter specified by the tool. An accepted launch is not a completed provider write. ## launcher\_promotion\_sources\_list Choose confirmed test ads to promote using their exact source item IDs. **Access:** `mcp:read`. Object and function permissions also apply. | Parameter | Type | Required / default | Details | | - | - | - | - | | `ad_account_id` | uuid | Required | See input schema. | | `limit` | integer | `50` | minimum: `1`. maximum: `100`. | | `after_id` | uuid or null | `null` | See input schema. | ```json theme={null} { "additionalProperties": false, "properties": { "ad_account_id": { "format": "uuid", "type": "string" }, "limit": { "default": 50, "maximum": 100, "minimum": 1, "type": "integer" }, "after_id": { "anyOf": [ { "format": "uuid", "type": "string" }, { "type": "null" } ], "default": null, "type": [ "string", "null" ] } }, "required": [ "ad_account_id" ], "type": "object" } ``` ## launcher\_assets\_list Find named Meta assets without copying IDs from another product. Pages, apps, pixels and audiences use the selected account. Forms, Instagram and catalogs require parent\_id=Page ID. Product sets require parent\_id=catalog ID plus page\_id. Pages and Instagram accounts come from the synced ClickHouse catalog; inspect sync\_status and synced\_at for freshness. Other assets use live Meta discovery. Follow next\_cursor; discovery does not guarantee launch eligibility. **Access:** `mcp:read`. Object and function permissions also apply. | Parameter | Type | Required / default | Details | | - | - | - | - | | `ad_account_id` | uuid | Required | See input schema. | | `kind` | pages, instagram\_accounts, pixels, applications, lead\_forms, product\_catalogs, product\_sets, custom\_audiences | Required | Supported discovery edges, never arbitrary Graph paths. | | `parent_id` | string or null | `null` | See input schema. | | `page_id` | string or null | `null` | See input schema. | | `limit` | integer | `50` | minimum: `1`. maximum: `100`. | | `cursor` | string or null | `null` | See input schema. | ```json theme={null} { "$defs": { "AssetKind": { "description": "Supported discovery edges, never arbitrary Graph paths.", "enum": [ "pages", "instagram_accounts", "pixels", "applications", "lead_forms", "product_catalogs", "product_sets", "custom_audiences" ], "type": "string" } }, "additionalProperties": false, "properties": { "ad_account_id": { "format": "uuid", "type": "string" }, "kind": { "$ref": "#/$defs/AssetKind" }, "parent_id": { "anyOf": [ { "pattern": "^[0-9]{1,32}$", "type": "string" }, { "type": "null" } ], "default": null, "type": [ "string", "null" ] }, "page_id": { "anyOf": [ { "pattern": "^[0-9]{1,32}$", "type": "string" }, { "type": "null" } ], "default": null, "type": [ "string", "null" ] }, "limit": { "default": 50, "maximum": 100, "minimum": 1, "type": "integer" }, "cursor": { "anyOf": [ { "maxLength": 4096, "type": "string" }, { "type": "null" } ], "default": null, "type": [ "string", "null" ] } }, "required": [ "ad_account_id", "kind" ], "type": "object" } ``` ## launcher\_targets\_list List current account ad sets; inspect the chosen target before preview. **Access:** `mcp:read`. Object and function permissions also apply. | Parameter | Type | Required / default | Details | | - | - | - | - | | `ad_account_id` | uuid | Required | See input schema. | | `limit` | integer | `50` | minimum: `1`. maximum: `100`. | | `cursor` | string or null | `null` | See input schema. | ```json theme={null} { "additionalProperties": false, "properties": { "ad_account_id": { "format": "uuid", "type": "string" }, "limit": { "default": 50, "maximum": 100, "minimum": 1, "type": "integer" }, "cursor": { "anyOf": [ { "maxLength": 4096, "type": "string" }, { "type": "null" } ], "default": null, "type": [ "string", "null" ] } }, "required": [ "ad_account_id" ], "type": "object" } ``` ## launcher\_targets\_get Inspect the exact account/parent/settings fingerprint for a chosen target. **Access:** `mcp:read`. Object and function permissions also apply. | Parameter | Type | Required / default | Details | | - | - | - | - | | `ad_account_id` | uuid | Required | See input schema. | | `adset_id` | string | Required | pattern: `^[0-9]{1,32}$`. | | `campaign_id` | string or null | `null` | See input schema. | ```json theme={null} { "additionalProperties": false, "properties": { "ad_account_id": { "format": "uuid", "type": "string" }, "adset_id": { "pattern": "^[0-9]{1,32}$", "type": "string" }, "campaign_id": { "anyOf": [ { "pattern": "^[0-9]{1,32}$", "type": "string" }, { "type": "null" } ], "default": null, "type": [ "string", "null" ] } }, "required": [ "ad_account_id", "adset_id" ], "type": "object" } ``` ## launcher\_launches\_preview Resolve exact approved inputs and operation counts; preview reserves nothing. **Access:** `mcp:read`. Object and function permissions also apply. | Parameter | Type | Required / default | Details | | - | - | - | - | | `request` | object | Required | Brandless public schema with legacy receipt parsing for exact retries. | ### request fields | Parameter | Type | Required / default | Details | | - | - | - | - | | `schema_version` | 1 | `1` | See input schema. | | `name` | string | `"Launch"` | minLength: `1`. maxLength: `200`. | | `request_key` | string | Required | minLength: `1`. maxLength: `200`. | | `ad_account_id` | uuid | Required | See input schema. | | `operation` | test, promote, refresh | Required | See input schema. | | `purpose` | test, scale | Required | See input schema. | | `template_version_id` | uuid | Required | See input schema. | | `selection` | object | Required | Direct or pinned collection selection with explicit exclusions. | | `repeat_across_groups` | boolean | `false` | See input schema. | | `manual_groups` | array of object | `[]` | maxItems: `100`. | | `requested_status` | PAUSED, ACTIVE | `"PAUSED"` | Requested provider status, distinct from actual delivery. | | `scheduled_at` | date-time or null | `null` | See input schema. | | `source_launch_item_ids` | array of uuid | `[]` | See input schema. | | `target` | object or null | `null` | See input schema. | | `retest_reason` | string or null | `null` | See input schema. | | `replacement` | object or null | `null` | See input schema. | ```json theme={null} { "$defs": { "BudgetConfig": { "additionalProperties": false, "description": "One budget owner and period using integer currency minor units.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "owner": { "enum": [ "campaign", "adset" ], "type": "string" }, "period": { "enum": [ "daily", "lifetime" ], "type": "string" }, "amount_minor": { "exclusiveMinimum": 0, "maximum": 9223372036854775807, "type": "integer" }, "currency": { "pattern": "^[A-Z]{3}$", "type": "string" } }, "required": [ "owner", "period", "amount_minor", "currency" ], "type": "object" }, "ExistingTargetSpec": { "additionalProperties": false, "description": "Exact provider target chosen from fresh account reads.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "campaign_id": { "maxLength": 100, "minLength": 1, "type": "string" }, "adset_id": { "maxLength": 100, "minLength": 1, "type": "string" }, "settings_fingerprint": { "pattern": "^[0-9a-f]{64}$", "type": "string" } }, "required": [ "campaign_id", "adset_id", "settings_fingerprint" ], "type": "object" }, "FilterCondition": { "additionalProperties": false, "description": "Conditions combine with AND; their values combine with OR.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "field": { "enum": [ "name", "concept", "language", "format", "tags", "source", "imported_at" ], "type": "string" }, "operator": { "enum": [ "eq", "contains", "in", "gte", "lte" ], "type": "string" }, "values": { "items": { "type": "string" }, "maxItems": 100, "minItems": 1, "type": "array" } }, "required": [ "field", "operator", "values" ], "type": "object" }, "FilterSpec": { "additionalProperties": false, "description": "Versioned server filter definition.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "conditions": { "default": [], "items": { "$ref": "#/$defs/FilterCondition" }, "maxItems": 30, "type": "array" } }, "type": "object" }, "ManualGroup": { "additionalProperties": false, "description": "One stable user-assigned group over explicit creative families.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "group_key": { "maxLength": 200, "minLength": 1, "type": "string" }, "creative_ids": { "default": [], "items": { "format": "uuid", "type": "string" }, "maxItems": 1000, "type": "array" }, "targeting": { "anyOf": [ { "$ref": "#/$defs/TargetingConfig" }, { "type": "null" } ], "default": null }, "budget": { "anyOf": [ { "$ref": "#/$defs/BudgetConfig" }, { "type": "null" } ], "default": null } }, "required": [ "group_key" ], "type": "object" }, "ProviderLocation": { "additionalProperties": false, "description": "Exact location-search reference with optional city radius.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "kind": { "enum": [ "region", "city", "zip" ], "type": "string" }, "key": { "maxLength": 100, "minLength": 1, "type": "string" }, "radius": { "anyOf": [ { "exclusiveMinimum": 0, "maximum": 1000, "type": "integer" }, { "type": "null" } ], "default": null }, "distance_unit": { "anyOf": [ { "enum": [ "kilometer", "mile" ], "type": "string" }, { "type": "null" } ], "default": null } }, "required": [ "kind", "key" ], "type": "object" }, "ReplacementItem": { "additionalProperties": false, "description": "Fence one failed assignment and the exact approved corrected version.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "source_item_id": { "format": "uuid", "type": "string" }, "creative_version_id": { "format": "uuid", "type": "string" }, "expected_ad_attempt": { "minimum": 0, "type": "integer" } }, "required": [ "source_item_id", "creative_version_id", "expected_ad_attempt" ], "type": "object" }, "ReplacementSpec": { "additionalProperties": false, "description": "A new request links a bounded corrected subset to retained source history.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "launch_id": { "format": "uuid", "type": "string" }, "expected_version": { "minimum": 1, "type": "integer" }, "items": { "items": { "$ref": "#/$defs/ReplacementItem" }, "maxItems": 1000, "minItems": 1, "type": "array" } }, "required": [ "launch_id", "expected_version", "items" ], "type": "object" }, "RequestedStatus": { "description": "Requested provider status, distinct from actual delivery.", "enum": [ "PAUSED", "ACTIVE" ], "type": "string" }, "SelectionSpec": { "additionalProperties": false, "description": "Direct or pinned collection selection with explicit exclusions.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "kind": { "enum": [ "direct", "fixed", "smart" ], "type": "string" }, "creative_ids": { "default": [], "items": { "format": "uuid", "type": "string" }, "maxItems": 1000, "type": "array" }, "excluded_ids": { "default": [], "items": { "format": "uuid", "type": "string" }, "maxItems": 1000, "type": "array" }, "collection_id": { "anyOf": [ { "format": "uuid", "type": "string" }, { "type": "null" } ], "default": null }, "source_lock_version": { "anyOf": [ { "minimum": 1, "type": "integer" }, { "type": "null" } ], "default": null }, "filter_spec": { "anyOf": [ { "$ref": "#/$defs/FilterSpec" }, { "type": "null" } ], "default": null } }, "required": [ "kind" ], "type": "object" }, "TargetingConfig": { "additionalProperties": false, "description": "Country and audience controls with independent exclusions.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "countries": { "default": [], "items": { "type": "string" }, "type": "array" }, "excluded_countries": { "default": [], "items": { "type": "string" }, "type": "array" }, "included_locations": { "default": [], "items": { "$ref": "#/$defs/ProviderLocation" }, "maxItems": 100, "type": "array" }, "excluded_locations": { "default": [], "items": { "$ref": "#/$defs/ProviderLocation" }, "maxItems": 100, "type": "array" }, "genders": { "default": [], "items": { "enum": [ 1, 2 ], "type": "integer" }, "type": "array" }, "user_os": { "default": [], "items": { "type": "string" }, "maxItems": 10, "type": "array" }, "user_device": { "default": [], "items": { "type": "string" }, "maxItems": 100, "type": "array" }, "advantage_audience": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": null }, "custom_audiences": { "default": [], "items": { "type": "string" }, "type": "array" }, "excluded_custom_audiences": { "default": [], "items": { "type": "string" }, "type": "array" }, "locales": { "default": [], "items": { "type": "integer" }, "type": "array" }, "age_min": { "anyOf": [ { "maximum": 65, "minimum": 13, "type": "integer" }, { "type": "null" } ], "default": null }, "age_max": { "anyOf": [ { "maximum": 65, "minimum": 13, "type": "integer" }, { "type": "null" } ], "default": null }, "audience_semantics": { "default": "control", "enum": [ "control", "suggestion" ], "type": "string" } }, "type": "object" }, "WorkspaceLaunchSubmit": { "additionalProperties": false, "description": "Brandless public schema with legacy receipt parsing for exact retries.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "name": { "default": "Launch", "maxLength": 200, "minLength": 1, "type": "string" }, "request_key": { "maxLength": 200, "minLength": 1, "type": "string" }, "ad_account_id": { "format": "uuid", "type": "string" }, "operation": { "enum": [ "test", "promote", "refresh" ], "type": "string" }, "purpose": { "enum": [ "test", "scale" ], "type": "string" }, "template_version_id": { "format": "uuid", "type": "string" }, "selection": { "$ref": "#/$defs/SelectionSpec" }, "repeat_across_groups": { "default": false, "type": "boolean" }, "manual_groups": { "default": [], "items": { "$ref": "#/$defs/ManualGroup" }, "maxItems": 100, "type": "array" }, "requested_status": { "$ref": "#/$defs/RequestedStatus", "default": "PAUSED" }, "scheduled_at": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "default": null }, "source_launch_item_ids": { "default": [], "items": { "format": "uuid", "type": "string" }, "type": "array" }, "target": { "anyOf": [ { "$ref": "#/$defs/ExistingTargetSpec" }, { "type": "null" } ], "default": null }, "retest_reason": { "anyOf": [ { "maxLength": 2000, "minLength": 1, "type": "string" }, { "type": "null" } ], "default": null }, "replacement": { "anyOf": [ { "$ref": "#/$defs/ReplacementSpec" }, { "type": "null" } ], "default": null } }, "required": [ "request_key", "ad_account_id", "operation", "purpose", "template_version_id", "selection" ], "type": "object" } }, "additionalProperties": false, "properties": { "request": { "$ref": "#/$defs/WorkspaceLaunchSubmit", "type": "object" } }, "required": [ "request" ], "type": "object" } ``` ## launcher\_launches\_submit Submit exact inputs using one stable request key; effects run asynchronously. Corrected failed items require replacement metadata, pinned approved versions, an exact existing target and a new request key. **Access:** `mcp:read` plus `mcp:write`. Object and function permissions also apply. | Parameter | Type | Required / default | Details | | - | - | - | - | | `request` | object | Required | Brandless public schema with legacy receipt parsing for exact retries. | ### request fields | Parameter | Type | Required / default | Details | | - | - | - | - | | `schema_version` | 1 | `1` | See input schema. | | `name` | string | `"Launch"` | minLength: `1`. maxLength: `200`. | | `request_key` | string | Required | minLength: `1`. maxLength: `200`. | | `ad_account_id` | uuid | Required | See input schema. | | `operation` | test, promote, refresh | Required | See input schema. | | `purpose` | test, scale | Required | See input schema. | | `template_version_id` | uuid | Required | See input schema. | | `selection` | object | Required | Direct or pinned collection selection with explicit exclusions. | | `repeat_across_groups` | boolean | `false` | See input schema. | | `manual_groups` | array of object | `[]` | maxItems: `100`. | | `requested_status` | PAUSED, ACTIVE | `"PAUSED"` | Requested provider status, distinct from actual delivery. | | `scheduled_at` | date-time or null | `null` | See input schema. | | `source_launch_item_ids` | array of uuid | `[]` | See input schema. | | `target` | object or null | `null` | See input schema. | | `retest_reason` | string or null | `null` | See input schema. | | `replacement` | object or null | `null` | See input schema. | **Retries:** the tool advertises idempotent behavior. Reuse its request identifier only with unchanged inputs. ```json theme={null} { "$defs": { "BudgetConfig": { "additionalProperties": false, "description": "One budget owner and period using integer currency minor units.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "owner": { "enum": [ "campaign", "adset" ], "type": "string" }, "period": { "enum": [ "daily", "lifetime" ], "type": "string" }, "amount_minor": { "exclusiveMinimum": 0, "maximum": 9223372036854775807, "type": "integer" }, "currency": { "pattern": "^[A-Z]{3}$", "type": "string" } }, "required": [ "owner", "period", "amount_minor", "currency" ], "type": "object" }, "ExistingTargetSpec": { "additionalProperties": false, "description": "Exact provider target chosen from fresh account reads.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "campaign_id": { "maxLength": 100, "minLength": 1, "type": "string" }, "adset_id": { "maxLength": 100, "minLength": 1, "type": "string" }, "settings_fingerprint": { "pattern": "^[0-9a-f]{64}$", "type": "string" } }, "required": [ "campaign_id", "adset_id", "settings_fingerprint" ], "type": "object" }, "FilterCondition": { "additionalProperties": false, "description": "Conditions combine with AND; their values combine with OR.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "field": { "enum": [ "name", "concept", "language", "format", "tags", "source", "imported_at" ], "type": "string" }, "operator": { "enum": [ "eq", "contains", "in", "gte", "lte" ], "type": "string" }, "values": { "items": { "type": "string" }, "maxItems": 100, "minItems": 1, "type": "array" } }, "required": [ "field", "operator", "values" ], "type": "object" }, "FilterSpec": { "additionalProperties": false, "description": "Versioned server filter definition.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "conditions": { "default": [], "items": { "$ref": "#/$defs/FilterCondition" }, "maxItems": 30, "type": "array" } }, "type": "object" }, "ManualGroup": { "additionalProperties": false, "description": "One stable user-assigned group over explicit creative families.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "group_key": { "maxLength": 200, "minLength": 1, "type": "string" }, "creative_ids": { "default": [], "items": { "format": "uuid", "type": "string" }, "maxItems": 1000, "type": "array" }, "targeting": { "anyOf": [ { "$ref": "#/$defs/TargetingConfig" }, { "type": "null" } ], "default": null }, "budget": { "anyOf": [ { "$ref": "#/$defs/BudgetConfig" }, { "type": "null" } ], "default": null } }, "required": [ "group_key" ], "type": "object" }, "ProviderLocation": { "additionalProperties": false, "description": "Exact location-search reference with optional city radius.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "kind": { "enum": [ "region", "city", "zip" ], "type": "string" }, "key": { "maxLength": 100, "minLength": 1, "type": "string" }, "radius": { "anyOf": [ { "exclusiveMinimum": 0, "maximum": 1000, "type": "integer" }, { "type": "null" } ], "default": null }, "distance_unit": { "anyOf": [ { "enum": [ "kilometer", "mile" ], "type": "string" }, { "type": "null" } ], "default": null } }, "required": [ "kind", "key" ], "type": "object" }, "ReplacementItem": { "additionalProperties": false, "description": "Fence one failed assignment and the exact approved corrected version.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "source_item_id": { "format": "uuid", "type": "string" }, "creative_version_id": { "format": "uuid", "type": "string" }, "expected_ad_attempt": { "minimum": 0, "type": "integer" } }, "required": [ "source_item_id", "creative_version_id", "expected_ad_attempt" ], "type": "object" }, "ReplacementSpec": { "additionalProperties": false, "description": "A new request links a bounded corrected subset to retained source history.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "launch_id": { "format": "uuid", "type": "string" }, "expected_version": { "minimum": 1, "type": "integer" }, "items": { "items": { "$ref": "#/$defs/ReplacementItem" }, "maxItems": 1000, "minItems": 1, "type": "array" } }, "required": [ "launch_id", "expected_version", "items" ], "type": "object" }, "RequestedStatus": { "description": "Requested provider status, distinct from actual delivery.", "enum": [ "PAUSED", "ACTIVE" ], "type": "string" }, "SelectionSpec": { "additionalProperties": false, "description": "Direct or pinned collection selection with explicit exclusions.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "kind": { "enum": [ "direct", "fixed", "smart" ], "type": "string" }, "creative_ids": { "default": [], "items": { "format": "uuid", "type": "string" }, "maxItems": 1000, "type": "array" }, "excluded_ids": { "default": [], "items": { "format": "uuid", "type": "string" }, "maxItems": 1000, "type": "array" }, "collection_id": { "anyOf": [ { "format": "uuid", "type": "string" }, { "type": "null" } ], "default": null }, "source_lock_version": { "anyOf": [ { "minimum": 1, "type": "integer" }, { "type": "null" } ], "default": null }, "filter_spec": { "anyOf": [ { "$ref": "#/$defs/FilterSpec" }, { "type": "null" } ], "default": null } }, "required": [ "kind" ], "type": "object" }, "TargetingConfig": { "additionalProperties": false, "description": "Country and audience controls with independent exclusions.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "countries": { "default": [], "items": { "type": "string" }, "type": "array" }, "excluded_countries": { "default": [], "items": { "type": "string" }, "type": "array" }, "included_locations": { "default": [], "items": { "$ref": "#/$defs/ProviderLocation" }, "maxItems": 100, "type": "array" }, "excluded_locations": { "default": [], "items": { "$ref": "#/$defs/ProviderLocation" }, "maxItems": 100, "type": "array" }, "genders": { "default": [], "items": { "enum": [ 1, 2 ], "type": "integer" }, "type": "array" }, "user_os": { "default": [], "items": { "type": "string" }, "maxItems": 10, "type": "array" }, "user_device": { "default": [], "items": { "type": "string" }, "maxItems": 100, "type": "array" }, "advantage_audience": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": null }, "custom_audiences": { "default": [], "items": { "type": "string" }, "type": "array" }, "excluded_custom_audiences": { "default": [], "items": { "type": "string" }, "type": "array" }, "locales": { "default": [], "items": { "type": "integer" }, "type": "array" }, "age_min": { "anyOf": [ { "maximum": 65, "minimum": 13, "type": "integer" }, { "type": "null" } ], "default": null }, "age_max": { "anyOf": [ { "maximum": 65, "minimum": 13, "type": "integer" }, { "type": "null" } ], "default": null }, "audience_semantics": { "default": "control", "enum": [ "control", "suggestion" ], "type": "string" } }, "type": "object" }, "WorkspaceLaunchSubmit": { "additionalProperties": false, "description": "Brandless public schema with legacy receipt parsing for exact retries.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "name": { "default": "Launch", "maxLength": 200, "minLength": 1, "type": "string" }, "request_key": { "maxLength": 200, "minLength": 1, "type": "string" }, "ad_account_id": { "format": "uuid", "type": "string" }, "operation": { "enum": [ "test", "promote", "refresh" ], "type": "string" }, "purpose": { "enum": [ "test", "scale" ], "type": "string" }, "template_version_id": { "format": "uuid", "type": "string" }, "selection": { "$ref": "#/$defs/SelectionSpec" }, "repeat_across_groups": { "default": false, "type": "boolean" }, "manual_groups": { "default": [], "items": { "$ref": "#/$defs/ManualGroup" }, "maxItems": 100, "type": "array" }, "requested_status": { "$ref": "#/$defs/RequestedStatus", "default": "PAUSED" }, "scheduled_at": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "default": null }, "source_launch_item_ids": { "default": [], "items": { "format": "uuid", "type": "string" }, "type": "array" }, "target": { "anyOf": [ { "$ref": "#/$defs/ExistingTargetSpec" }, { "type": "null" } ], "default": null }, "retest_reason": { "anyOf": [ { "maxLength": 2000, "minLength": 1, "type": "string" }, { "type": "null" } ], "default": null }, "replacement": { "anyOf": [ { "$ref": "#/$defs/ReplacementSpec" }, { "type": "null" } ], "default": null } }, "required": [ "request_key", "ad_account_id", "operation", "purpose", "template_version_id", "selection" ], "type": "object" } }, "additionalProperties": false, "properties": { "request": { "$ref": "#/$defs/WorkspaceLaunchSubmit", "type": "object" } }, "required": [ "request" ], "type": "object" } ``` ## launcher\_launches\_list List newest launches first within the current workspace and account grants. Pass next\_cursor as after\_id for the next page. Keep the account. **Access:** `mcp:read`. Object and function permissions also apply. | Parameter | Type | Required / default | Details | | - | - | - | - | | `ad_account_id` | uuid | Required | See input schema. | | `limit` | integer | `50` | minimum: `1`. maximum: `100`. | | `after_id` | uuid or null | `null` | See input schema. | ```json theme={null} { "additionalProperties": false, "properties": { "ad_account_id": { "format": "uuid", "type": "string" }, "limit": { "default": 50, "maximum": 100, "minimum": 1, "type": "integer" }, "after_id": { "anyOf": [ { "format": "uuid", "type": "string" }, { "type": "null" } ], "default": null, "type": [ "string", "null" ] } }, "required": [ "ad_account_id" ], "type": "object" } ``` ## launcher\_launches\_get Poll launch state; use linked Activity for individual provider outcomes. **Access:** `mcp:read`. Object and function permissions also apply. | Parameter | Type | Required / default | Details | | - | - | - | - | | `ad_account_id` | uuid | Required | See input schema. | | `launch_id` | uuid | Required | See input schema. | ```json theme={null} { "additionalProperties": false, "properties": { "ad_account_id": { "format": "uuid", "type": "string" }, "launch_id": { "format": "uuid", "type": "string" } }, "required": [ "ad_account_id", "launch_id" ], "type": "object" } ``` ## launcher\_launches\_change\_status Hold or resume an unstarted run; a missed time requires Run now or a new time. **Access:** `mcp:read` plus `mcp:write`. Object and function permissions also apply. | Parameter | Type | Required / default | Details | | - | - | - | - | | `ad_account_id` | uuid | Required | See input schema. | | `launch_id` | uuid | Required | See input schema. | | `enabled` | boolean | Required | See input schema. | | `expected_version` | integer | Required | minimum: `1`. | | `scheduled_at` | date-time or null | `null` | See input schema. | | `run_now` | boolean | `false` | See input schema. | **Retries:** the tool advertises idempotent behavior. Reuse its request identifier only with unchanged inputs. ```json theme={null} { "additionalProperties": false, "properties": { "ad_account_id": { "format": "uuid", "type": "string" }, "launch_id": { "format": "uuid", "type": "string" }, "enabled": { "type": "boolean" }, "expected_version": { "minimum": 1, "type": "integer" }, "scheduled_at": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "default": null, "type": [ "string", "null" ] }, "run_now": { "default": false, "type": "boolean" } }, "required": [ "ad_account_id", "launch_id", "enabled", "expected_version" ], "type": "object" } ``` ## launcher\_launches\_cancel Request cancellation; release only claims with confirmed no-write evidence. **Access:** `mcp:read` plus `mcp:write`. Object and function permissions also apply. | Parameter | Type | Required / default | Details | | - | - | - | - | | `ad_account_id` | uuid | Required | See input schema. | | `launch_id` | uuid | Required | See input schema. | | `expected_version` | integer | Required | minimum: `1`. | **Retries:** the tool advertises idempotent behavior. Reuse its request identifier only with unchanged inputs. ```json theme={null} { "additionalProperties": false, "properties": { "ad_account_id": { "format": "uuid", "type": "string" }, "launch_id": { "format": "uuid", "type": "string" }, "expected_version": { "minimum": 1, "type": "integer" } }, "required": [ "ad_account_id", "launch_id", "expected_version" ], "type": "object" } ``` ## launcher\_launches\_replacement\_candidates Inspect failed-item replacement choices. Keep successful or uncertain items unchanged; approve corrected content, read the exact target, then preview and submit with a new key and explicit replacement metadata. **Access:** `mcp:read`. Object and function permissions also apply. | Parameter | Type | Required / default | Details | | - | - | - | - | | `ad_account_id` | uuid | Required | See input schema. | | `launch_id` | uuid | Required | See input schema. | | `limit` | integer | `50` | minimum: `1`. maximum: `100`. | | `after_id` | uuid or null | `null` | See input schema. | ```json theme={null} { "additionalProperties": false, "properties": { "ad_account_id": { "format": "uuid", "type": "string" }, "launch_id": { "format": "uuid", "type": "string" }, "limit": { "default": 50, "maximum": 100, "minimum": 1, "type": "integer" }, "after_id": { "anyOf": [ { "format": "uuid", "type": "string" }, { "type": "null" } ], "default": null, "type": [ "string", "null" ] } }, "required": [ "ad_account_id", "launch_id" ], "type": "object" } ``` ## launcher\_run\_operations Read scoped results and attempts using Launcher read access. **Access:** `mcp:read`. Object and function permissions also apply. | Parameter | Type | Required / default | Details | | - | - | - | - | | `ad_account_id` | uuid | Required | See input schema. | | `launch_id` | uuid | Required | See input schema. | | `limit` | integer | `50` | minimum: `1`. maximum: `100`. | | `after_id` | uuid or null | `null` | See input schema. | ```json theme={null} { "additionalProperties": false, "properties": { "ad_account_id": { "format": "uuid", "type": "string" }, "launch_id": { "format": "uuid", "type": "string" }, "limit": { "default": 50, "maximum": 100, "minimum": 1, "type": "integer" }, "after_id": { "anyOf": [ { "format": "uuid", "type": "string" }, { "type": "null" } ], "default": null, "type": [ "string", "null" ] } }, "required": [ "ad_account_id", "launch_id" ], "type": "object" } ``` ## launcher\_launches\_retry Retry unchanged inputs after no-write proof. Use attempt 0 for every untouched operation after a failed preflight; uncertainty stays blocked. **Access:** `mcp:read` plus `mcp:write`. Object and function permissions also apply. | Parameter | Type | Required / default | Details | | - | - | - | - | | `ad_account_id` | uuid | Required | See input schema. | | `launch_id` | uuid | Required | See input schema. | | `expected_version` | integer | Required | minimum: `1`. | | `expected_attempts` | object | Required | See input schema. | **Retries:** the tool advertises idempotent behavior. Reuse its request identifier only with unchanged inputs. ```json theme={null} { "additionalProperties": false, "properties": { "ad_account_id": { "format": "uuid", "type": "string" }, "launch_id": { "format": "uuid", "type": "string" }, "expected_version": { "minimum": 1, "type": "integer" }, "expected_attempts": { "additionalProperties": { "minimum": 0, "type": "integer" }, "maxProperties": 5000, "minProperties": 1, "propertyNames": { "format": "uuid" }, "type": "object" } }, "required": [ "ad_account_id", "launch_id", "expected_version", "expected_attempts" ], "type": "object" } ``` # Launcher library tools Source: https://docs.superlaunch.pro/mcp/reference/launcher-library Library objects belong to the authorized workspace. Library objects belong to the authorized workspace. Save content edits as new versions, then approve the exact version. Media IDs, creative family IDs, creative version IDs, and template version IDs refer to different objects. The parameter tables show the top-level arguments and common nested objects. Expand the input schema for nested formats, constraints, and allowed values. Successful Launcher responses include `status: "ok"`, the returned object or page, and `next_actions`. Follow returned cursors using the parameter specified by the tool. An accepted launch is not a completed provider write. ## launcher\_discover Discover the Launcher journey, exact IDs, limits, access and browser upload instructions. **Access:** `mcp:read`. Object and function permissions also apply. **Arguments:** none. ```json theme={null} { "additionalProperties": false, "properties": {}, "type": "object" } ``` ## launcher\_creatives\_list List a active creative-family page in the authorized workspace. **Access:** `mcp:read`. Object and function permissions also apply. | Parameter | Type | Required / default | Details | | - | - | - | - | | `limit` | integer | `50` | minimum: `1`. maximum: `100`. | | `after_id` | uuid or null | `null` | See input schema. | | `query` | string or null | `null` | See input schema. | ```json theme={null} { "additionalProperties": false, "properties": { "limit": { "default": 50, "maximum": 100, "minimum": 1, "type": "integer" }, "after_id": { "anyOf": [ { "format": "uuid", "type": "string" }, { "type": "null" } ], "default": null, "type": [ "string", "null" ] }, "query": { "anyOf": [ { "maxLength": 200, "type": "string" }, { "type": "null" } ], "default": null, "type": [ "string", "null" ] } }, "type": "object" } ``` ## launcher\_creatives\_usage Read usage, held claims and source-input lineage for one creative and authorized account. Created claims indicate family use; inspect run operations for confirmed provider object IDs. **Access:** `mcp:read`. Object and function permissions also apply. | Parameter | Type | Required / default | Details | | - | - | - | - | | `ad_account_id` | uuid | Required | See input schema. | | `creative_id` | uuid | Required | See input schema. | | `limit` | integer | `50` | minimum: `1`. maximum: `100`. | | `after_id` | uuid or null | `null` | See input schema. | ```json theme={null} { "additionalProperties": false, "properties": { "ad_account_id": { "format": "uuid", "type": "string" }, "creative_id": { "format": "uuid", "type": "string" }, "limit": { "default": 50, "maximum": 100, "minimum": 1, "type": "integer" }, "after_id": { "anyOf": [ { "format": "uuid", "type": "string" }, { "type": "null" } ], "default": null, "type": [ "string", "null" ] } }, "required": [ "ad_account_id", "creative_id" ], "type": "object" } ``` ## launcher\_creatives\_get Read a creative and exact version summaries; content never changes in place. **Access:** `mcp:read`. Object and function permissions also apply. | Parameter | Type | Required / default | Details | | - | - | - | - | | `creative_id` | uuid | Required | See input schema. | ```json theme={null} { "additionalProperties": false, "properties": { "creative_id": { "format": "uuid", "type": "string" } }, "required": [ "creative_id" ], "type": "object" } ``` ## launcher\_creative\_versions\_get Read one exact version with editable copy and media bindings. Content is immutable. Save edits as a new draft version. **Access:** `mcp:read`. Object and function permissions also apply. | Parameter | Type | Required / default | Details | | - | - | - | - | | `creative_id` | uuid | Required | See input schema. | | `version_id` | uuid | Required | See input schema. | ```json theme={null} { "additionalProperties": false, "properties": { "creative_id": { "format": "uuid", "type": "string" }, "version_id": { "format": "uuid", "type": "string" } }, "required": [ "creative_id", "version_id" ], "type": "object" } ``` ## launcher\_creatives\_create Create a creative family with an draft content version; approve the whole version separately. **Access:** `mcp:read` plus `mcp:write`. Object and function permissions also apply. | Parameter | Type | Required / default | Details | | - | - | - | - | | `family` | object | Required | Editable family metadata separate from immutable content. | | `content` | object | Required | Content edits always create a draft and never accept approval inputs. | ### family fields | Parameter | Type | Required / default | Details | | - | - | - | - | | `schema_version` | 1 | `1` | See input schema. | | `name` | string | Required | minLength: `1`. maxLength: `300`. | | `concept` | string or null | `null` | See input schema. | | `tags` | array of string | `[]` | maxItems: `100`. | | `source_group` | string or null | `null` | See input schema. | ### content fields | Parameter | Type | Required / default | Details | | - | - | - | - | | `schema_version` | 1 | `1` | See input schema. | | `format` | single\_image, single\_video, carousel, collection, flexible, existing\_post, catalog | Required | See input schema. | | `language_mode` | single, multilingual | `"single"` | See input schema. | | `default_locale` | string | Required | See input schema. | | `cta` | string or null | `null` | See input schema. | | `source_spec` | object | Optional | Content origin references; credentials and ad codes are excluded. | | `variants` | array of object | Required | minItems: `1`. maxItems: `50`. | | `media` | array of object | `[]` | maxItems: `100`. | **Retries:** the tool does not advertise idempotent replay. Read the current state before repeating a write. ```json theme={null} { "$defs": { "CreativeContentWrite": { "additionalProperties": false, "description": "Content edits always create a draft and never accept approval inputs.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "format": { "enum": [ "single_image", "single_video", "carousel", "collection", "flexible", "existing_post", "catalog" ], "type": "string" }, "language_mode": { "default": "single", "enum": [ "single", "multilingual" ], "type": "string" }, "default_locale": { "type": "string" }, "cta": { "anyOf": [ { "maxLength": 64, "type": "string" }, { "type": "null" } ], "default": null }, "source_spec": { "$ref": "#/$defs/CreativeSource" }, "variants": { "items": { "$ref": "#/$defs/CreativeVariant" }, "maxItems": 50, "minItems": 1, "type": "array" }, "media": { "default": [], "items": { "$ref": "#/$defs/CreativeMediaBinding" }, "maxItems": 100, "type": "array" } }, "required": [ "format", "default_locale", "variants" ], "type": "object" }, "CreativeFamilyWrite": { "additionalProperties": false, "description": "Editable family metadata separate from immutable content.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "name": { "maxLength": 300, "minLength": 1, "type": "string" }, "concept": { "anyOf": [ { "maxLength": 200, "type": "string" }, { "type": "null" } ], "default": null }, "tags": { "default": [], "items": { "type": "string" }, "maxItems": 100, "type": "array" }, "source_group": { "anyOf": [ { "maxLength": 300, "type": "string" }, { "type": "null" } ], "default": null } }, "required": [ "name" ], "type": "object" }, "CreativeIdentity": { "additionalProperties": false, "description": "Nonsecret provider identity requirements.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "page_id": { "anyOf": [ { "maxLength": 300, "type": "string" }, { "type": "null" } ], "default": null }, "instagram_actor_id": { "anyOf": [ { "maxLength": 300, "type": "string" }, { "type": "null" } ], "default": null } }, "type": "object" }, "CreativeMediaBinding": { "additionalProperties": false, "description": "Exact immutable media assignment within one content version.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "media_asset_id": { "format": "uuid", "type": "string" }, "slot_key": { "maxLength": 160, "minLength": 1, "type": "string" }, "placement_key": { "anyOf": [ { "maxLength": 100, "type": "string" }, { "type": "null" } ], "default": null }, "position": { "default": 0, "minimum": 0, "type": "integer" }, "variant_key": { "anyOf": [ { "maxLength": 100, "type": "string" }, { "type": "null" } ], "default": null }, "asset_metadata": { "$ref": "#/$defs/MediaMetadata" } }, "required": [ "media_asset_id", "slot_key" ], "type": "object" }, "CreativeSource": { "additionalProperties": false, "description": "Content origin references; credentials and ad codes are excluded.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "kind": { "default": "new_story", "enum": [ "new_story", "existing_post", "catalog", "flexible" ], "type": "string" }, "identity": { "anyOf": [ { "$ref": "#/$defs/CreativeIdentity" }, { "type": "null" } ], "default": null }, "post_id": { "anyOf": [ { "maxLength": 300, "type": "string" }, { "type": "null" } ], "default": null }, "catalog_id": { "anyOf": [ { "maxLength": 300, "type": "string" }, { "type": "null" } ], "default": null }, "product_set_id": { "anyOf": [ { "maxLength": 300, "type": "string" }, { "type": "null" } ], "default": null }, "instant_experience_id": { "anyOf": [ { "maxLength": 300, "type": "string" }, { "type": "null" } ], "default": null }, "partnership_identity_id": { "anyOf": [ { "maxLength": 300, "type": "string" }, { "type": "null" } ], "default": null }, "partnership_permission_ref": { "anyOf": [ { "format": "uuid", "type": "string" }, { "type": "null" } ], "default": null } }, "type": "object" }, "CreativeVariant": { "additionalProperties": false, "description": "A locale member identified independently of list order.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "variant_key": { "maxLength": 100, "minLength": 1, "type": "string" }, "locale": { "pattern": "^[a-z]{2,3}(?:-[A-Za-z0-9]{2,8})*$", "type": "string" }, "headline": { "maxLength": 1000, "type": "string" }, "primary_text": { "maxLength": 10000, "type": "string" }, "description": { "default": "", "maxLength": 1000, "type": "string" }, "destination_url": { "anyOf": [ { "maxLength": 2048, "type": "string" }, { "type": "null" } ], "default": null }, "deep_link": { "anyOf": [ { "maxLength": 2048, "type": "string" }, { "type": "null" } ], "default": null } }, "required": [ "variant_key", "locale", "headline", "primary_text" ], "type": "object" }, "MediaMetadata": { "additionalProperties": false, "description": "Bounded nonsecret placement hints, not raw provider payloads.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "width_px": { "anyOf": [ { "exclusiveMinimum": 0, "type": "integer" }, { "type": "null" } ], "default": null }, "height_px": { "anyOf": [ { "exclusiveMinimum": 0, "type": "integer" }, { "type": "null" } ], "default": null }, "duration_ms": { "anyOf": [ { "minimum": 0, "type": "integer" }, { "type": "null" } ], "default": null }, "aspect_ratio": { "anyOf": [ { "maxLength": 32, "type": "string" }, { "type": "null" } ], "default": null } }, "type": "object" } }, "additionalProperties": false, "properties": { "family": { "$ref": "#/$defs/CreativeFamilyWrite", "type": "object" }, "content": { "$ref": "#/$defs/CreativeContentWrite" } }, "required": [ "family", "content" ], "type": "object" } ``` ## launcher\_creatives\_update Edit family metadata with the current lock version; content requires a new version. **Access:** `mcp:read` plus `mcp:write`. Object and function permissions also apply. | Parameter | Type | Required / default | Details | | - | - | - | - | | `creative_id` | uuid | Required | See input schema. | | `family` | object | Required | Editable family metadata separate from immutable content. | | `expected_version` | integer | Required | minimum: `1`. | ### family fields | Parameter | Type | Required / default | Details | | - | - | - | - | | `schema_version` | 1 | `1` | See input schema. | | `name` | string | Required | minLength: `1`. maxLength: `300`. | | `concept` | string or null | `null` | See input schema. | | `tags` | array of string | `[]` | maxItems: `100`. | | `source_group` | string or null | `null` | See input schema. | **Retries:** the tool does not advertise idempotent replay. Read the current state before repeating a write. ```json theme={null} { "$defs": { "CreativeFamilyWrite": { "additionalProperties": false, "description": "Editable family metadata separate from immutable content.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "name": { "maxLength": 300, "minLength": 1, "type": "string" }, "concept": { "anyOf": [ { "maxLength": 200, "type": "string" }, { "type": "null" } ], "default": null }, "tags": { "default": [], "items": { "type": "string" }, "maxItems": 100, "type": "array" }, "source_group": { "anyOf": [ { "maxLength": 300, "type": "string" }, { "type": "null" } ], "default": null } }, "required": [ "name" ], "type": "object" } }, "additionalProperties": false, "properties": { "creative_id": { "format": "uuid", "type": "string" }, "family": { "$ref": "#/$defs/CreativeFamilyWrite", "type": "object" }, "expected_version": { "minimum": 1, "type": "integer" } }, "required": [ "creative_id", "family", "expected_version" ], "type": "object" } ``` ## launcher\_creatives\_archive Archive a family while preserving immutable content and existing launch history. **Access:** `mcp:read` plus `mcp:write`. Object and function permissions also apply. | Parameter | Type | Required / default | Details | | - | - | - | - | | `creative_id` | uuid | Required | See input schema. | | `expected_version` | integer | Required | minimum: `1`. | **Retries:** the tool advertises idempotent behavior. Reuse its request identifier only with unchanged inputs. ```json theme={null} { "additionalProperties": false, "properties": { "creative_id": { "format": "uuid", "type": "string" }, "expected_version": { "minimum": 1, "type": "integer" } }, "required": [ "creative_id", "expected_version" ], "type": "object" } ``` ## launcher\_creative\_versions\_create Save corrected content as a new immutable draft version; preserve prior successful launches. **Access:** `mcp:read` plus `mcp:write`. Object and function permissions also apply. | Parameter | Type | Required / default | Details | | - | - | - | - | | `creative_id` | uuid | Required | See input schema. | | `content` | object | Required | Content edits always create a draft and never accept approval inputs. | | `expected_version` | integer | Required | minimum: `1`. | ### content fields | Parameter | Type | Required / default | Details | | - | - | - | - | | `schema_version` | 1 | `1` | See input schema. | | `format` | single\_image, single\_video, carousel, collection, flexible, existing\_post, catalog | Required | See input schema. | | `language_mode` | single, multilingual | `"single"` | See input schema. | | `default_locale` | string | Required | See input schema. | | `cta` | string or null | `null` | See input schema. | | `source_spec` | object | Optional | Content origin references; credentials and ad codes are excluded. | | `variants` | array of object | Required | minItems: `1`. maxItems: `50`. | | `media` | array of object | `[]` | maxItems: `100`. | **Retries:** the tool does not advertise idempotent replay. Read the current state before repeating a write. ```json theme={null} { "$defs": { "CreativeContentWrite": { "additionalProperties": false, "description": "Content edits always create a draft and never accept approval inputs.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "format": { "enum": [ "single_image", "single_video", "carousel", "collection", "flexible", "existing_post", "catalog" ], "type": "string" }, "language_mode": { "default": "single", "enum": [ "single", "multilingual" ], "type": "string" }, "default_locale": { "type": "string" }, "cta": { "anyOf": [ { "maxLength": 64, "type": "string" }, { "type": "null" } ], "default": null }, "source_spec": { "$ref": "#/$defs/CreativeSource" }, "variants": { "items": { "$ref": "#/$defs/CreativeVariant" }, "maxItems": 50, "minItems": 1, "type": "array" }, "media": { "default": [], "items": { "$ref": "#/$defs/CreativeMediaBinding" }, "maxItems": 100, "type": "array" } }, "required": [ "format", "default_locale", "variants" ], "type": "object" }, "CreativeIdentity": { "additionalProperties": false, "description": "Nonsecret provider identity requirements.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "page_id": { "anyOf": [ { "maxLength": 300, "type": "string" }, { "type": "null" } ], "default": null }, "instagram_actor_id": { "anyOf": [ { "maxLength": 300, "type": "string" }, { "type": "null" } ], "default": null } }, "type": "object" }, "CreativeMediaBinding": { "additionalProperties": false, "description": "Exact immutable media assignment within one content version.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "media_asset_id": { "format": "uuid", "type": "string" }, "slot_key": { "maxLength": 160, "minLength": 1, "type": "string" }, "placement_key": { "anyOf": [ { "maxLength": 100, "type": "string" }, { "type": "null" } ], "default": null }, "position": { "default": 0, "minimum": 0, "type": "integer" }, "variant_key": { "anyOf": [ { "maxLength": 100, "type": "string" }, { "type": "null" } ], "default": null }, "asset_metadata": { "$ref": "#/$defs/MediaMetadata" } }, "required": [ "media_asset_id", "slot_key" ], "type": "object" }, "CreativeSource": { "additionalProperties": false, "description": "Content origin references; credentials and ad codes are excluded.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "kind": { "default": "new_story", "enum": [ "new_story", "existing_post", "catalog", "flexible" ], "type": "string" }, "identity": { "anyOf": [ { "$ref": "#/$defs/CreativeIdentity" }, { "type": "null" } ], "default": null }, "post_id": { "anyOf": [ { "maxLength": 300, "type": "string" }, { "type": "null" } ], "default": null }, "catalog_id": { "anyOf": [ { "maxLength": 300, "type": "string" }, { "type": "null" } ], "default": null }, "product_set_id": { "anyOf": [ { "maxLength": 300, "type": "string" }, { "type": "null" } ], "default": null }, "instant_experience_id": { "anyOf": [ { "maxLength": 300, "type": "string" }, { "type": "null" } ], "default": null }, "partnership_identity_id": { "anyOf": [ { "maxLength": 300, "type": "string" }, { "type": "null" } ], "default": null }, "partnership_permission_ref": { "anyOf": [ { "format": "uuid", "type": "string" }, { "type": "null" } ], "default": null } }, "type": "object" }, "CreativeVariant": { "additionalProperties": false, "description": "A locale member identified independently of list order.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "variant_key": { "maxLength": 100, "minLength": 1, "type": "string" }, "locale": { "pattern": "^[a-z]{2,3}(?:-[A-Za-z0-9]{2,8})*$", "type": "string" }, "headline": { "maxLength": 1000, "type": "string" }, "primary_text": { "maxLength": 10000, "type": "string" }, "description": { "default": "", "maxLength": 1000, "type": "string" }, "destination_url": { "anyOf": [ { "maxLength": 2048, "type": "string" }, { "type": "null" } ], "default": null }, "deep_link": { "anyOf": [ { "maxLength": 2048, "type": "string" }, { "type": "null" } ], "default": null } }, "required": [ "variant_key", "locale", "headline", "primary_text" ], "type": "object" }, "MediaMetadata": { "additionalProperties": false, "description": "Bounded nonsecret placement hints, not raw provider payloads.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "width_px": { "anyOf": [ { "exclusiveMinimum": 0, "type": "integer" }, { "type": "null" } ], "default": null }, "height_px": { "anyOf": [ { "exclusiveMinimum": 0, "type": "integer" }, { "type": "null" } ], "default": null }, "duration_ms": { "anyOf": [ { "minimum": 0, "type": "integer" }, { "type": "null" } ], "default": null }, "aspect_ratio": { "anyOf": [ { "maxLength": 32, "type": "string" }, { "type": "null" } ], "default": null } }, "type": "object" } }, "additionalProperties": false, "properties": { "creative_id": { "format": "uuid", "type": "string" }, "content": { "$ref": "#/$defs/CreativeContentWrite", "type": "object" }, "expected_version": { "minimum": 1, "type": "integer" } }, "required": [ "creative_id", "content", "expected_version" ], "type": "object" } ``` ## launcher\_creative\_versions\_approve Approve the exact complete locale bundle using the current approval grant. **Access:** `mcp:read` plus `mcp:write`. Object and function permissions also apply. | Parameter | Type | Required / default | Details | | - | - | - | - | | `creative_id` | uuid | Required | See input schema. | | `version_id` | uuid | Required | See input schema. | **Retries:** the tool advertises idempotent behavior. Reuse its request identifier only with unchanged inputs. ```json theme={null} { "additionalProperties": false, "properties": { "creative_id": { "format": "uuid", "type": "string" }, "version_id": { "format": "uuid", "type": "string" } }, "required": [ "creative_id", "version_id" ], "type": "object" } ``` ## launcher\_creative\_versions\_revoke Revoke the complete approved bundle with a reason; history remains immutable. **Access:** `mcp:read` plus `mcp:write`. Object and function permissions also apply. | Parameter | Type | Required / default | Details | | - | - | - | - | | `creative_id` | uuid | Required | See input schema. | | `version_id` | uuid | Required | See input schema. | | `reason` | string | Required | minLength: `1`. maxLength: `1000`. | **Retries:** the tool advertises idempotent behavior. Reuse its request identifier only with unchanged inputs. ```json theme={null} { "additionalProperties": false, "properties": { "creative_id": { "format": "uuid", "type": "string" }, "version_id": { "format": "uuid", "type": "string" }, "reason": { "maxLength": 1000, "minLength": 1, "type": "string" } }, "required": [ "creative_id", "version_id", "reason" ], "type": "object" } ``` ## launcher\_collections\_list List fixed and smart collection definitions in the authorized workspace. **Access:** `mcp:read`. Object and function permissions also apply. | Parameter | Type | Required / default | Details | | - | - | - | - | | `limit` | integer | `50` | minimum: `1`. maximum: `100`. | | `after_id` | uuid or null | `null` | See input schema. | ```json theme={null} { "additionalProperties": false, "properties": { "limit": { "default": 50, "maximum": 100, "minimum": 1, "type": "integer" }, "after_id": { "anyOf": [ { "format": "uuid", "type": "string" }, { "type": "null" } ], "default": null, "type": [ "string", "null" ] } }, "type": "object" } ``` ## launcher\_collections\_preview Preview unsaved smart filters across the workspace without creating anything. Repeat the same filters and exclusions with next\_cursor to continue. Results show matching creative families; launch preview checks eligible versions. Reads do not use billable Meta writes. **Access:** `mcp:read`. Object and function permissions also apply. | Parameter | Type | Required / default | Details | | - | - | - | - | | `filter_spec` | object | Required | Versioned server filter definition. | | `excluded_ids` | array of uuid | `[]` | maxItems: `1000`. | | `limit` | integer | `24` | minimum: `1`. maximum: `100`. | | `cursor` | string or null | `null` | See input schema. | | `include_count` | boolean | `true` | See input schema. | ### filter\_spec fields | Parameter | Type | Required / default | Details | | - | - | - | - | | `schema_version` | 1 | `1` | See input schema. | | `conditions` | array of object | `[]` | maxItems: `30`. | ```json theme={null} { "$defs": { "FilterCondition": { "additionalProperties": false, "description": "Conditions combine with AND; their values combine with OR.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "field": { "enum": [ "name", "concept", "language", "format", "tags", "source", "imported_at" ], "type": "string" }, "operator": { "enum": [ "eq", "contains", "in", "gte", "lte" ], "type": "string" }, "values": { "items": { "type": "string" }, "maxItems": 100, "minItems": 1, "type": "array" } }, "required": [ "field", "operator", "values" ], "type": "object" }, "FilterSpec": { "additionalProperties": false, "description": "Versioned server filter definition.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "conditions": { "default": [], "items": { "$ref": "#/$defs/FilterCondition" }, "maxItems": 30, "type": "array" } }, "type": "object" } }, "additionalProperties": false, "properties": { "filter_spec": { "$ref": "#/$defs/FilterSpec", "type": "object" }, "excluded_ids": { "default": [], "items": { "format": "uuid", "type": "string" }, "maxItems": 1000, "type": "array" }, "limit": { "default": 24, "maximum": 100, "minimum": 1, "type": "integer" }, "cursor": { "anyOf": [ { "maxLength": 4096, "type": "string" }, { "type": "null" } ], "default": null, "type": [ "string", "null" ] }, "include_count": { "default": true, "type": "boolean" } }, "required": [ "filter_spec" ], "type": "object" } ``` ## launcher\_collections\_get Read a collection definition and its revision before pinning a selection. **Access:** `mcp:read`. Object and function permissions also apply. | Parameter | Type | Required / default | Details | | - | - | - | - | | `collection_id` | uuid | Required | See input schema. | ```json theme={null} { "additionalProperties": false, "properties": { "collection_id": { "format": "uuid", "type": "string" } }, "required": [ "collection_id" ], "type": "object" } ``` ## launcher\_collections\_create Create fixed family includes or a smart filter with explicit family exclusions. **Access:** `mcp:read` plus `mcp:write`. Object and function permissions also apply. | Parameter | Type | Required / default | Details | | - | - | - | - | | `data` | object | Required | Fixed includes or smart exclusions with typed definition. | ### data fields | Parameter | Type | Required / default | Details | | - | - | - | - | | `schema_version` | 1 | `1` | See input schema. | | `name` | string | Required | minLength: `1`. maxLength: `200`. | | `kind` | fixed, smart | Required | See input schema. | | `filter_spec` | object or null | `null` | See input schema. | | `member_ids` | array of uuid | `[]` | maxItems: `100`. | **Retries:** the tool does not advertise idempotent replay. Read the current state before repeating a write. ```json theme={null} { "$defs": { "CollectionWrite": { "additionalProperties": false, "description": "Fixed includes or smart exclusions with typed definition.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "name": { "maxLength": 200, "minLength": 1, "type": "string" }, "kind": { "enum": [ "fixed", "smart" ], "type": "string" }, "filter_spec": { "anyOf": [ { "$ref": "#/$defs/FilterSpec" }, { "type": "null" } ], "default": null }, "member_ids": { "default": [], "items": { "format": "uuid", "type": "string" }, "maxItems": 100, "type": "array" } }, "required": [ "name", "kind" ], "type": "object" }, "FilterCondition": { "additionalProperties": false, "description": "Conditions combine with AND; their values combine with OR.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "field": { "enum": [ "name", "concept", "language", "format", "tags", "source", "imported_at" ], "type": "string" }, "operator": { "enum": [ "eq", "contains", "in", "gte", "lte" ], "type": "string" }, "values": { "items": { "type": "string" }, "maxItems": 100, "minItems": 1, "type": "array" } }, "required": [ "field", "operator", "values" ], "type": "object" }, "FilterSpec": { "additionalProperties": false, "description": "Versioned server filter definition.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "conditions": { "default": [], "items": { "$ref": "#/$defs/FilterCondition" }, "maxItems": 30, "type": "array" } }, "type": "object" } }, "additionalProperties": false, "properties": { "data": { "$ref": "#/$defs/CollectionWrite" } }, "required": [ "data" ], "type": "object" } ``` ## launcher\_collections\_update replace the saved definition and members using its current lock version. **Access:** `mcp:read` plus `mcp:write`. Object and function permissions also apply. | Parameter | Type | Required / default | Details | | - | - | - | - | | `collection_id` | uuid | Required | See input schema. | | `data` | object | Required | Fixed includes or smart exclusions with typed definition. | | `expected_version` | integer | Required | minimum: `1`. | ### data fields | Parameter | Type | Required / default | Details | | - | - | - | - | | `schema_version` | 1 | `1` | See input schema. | | `name` | string | Required | minLength: `1`. maxLength: `200`. | | `kind` | fixed, smart | Required | See input schema. | | `filter_spec` | object or null | `null` | See input schema. | | `member_ids` | array of uuid | `[]` | maxItems: `100`. | **Retries:** the tool does not advertise idempotent replay. Read the current state before repeating a write. ```json theme={null} { "$defs": { "CollectionWrite": { "additionalProperties": false, "description": "Fixed includes or smart exclusions with typed definition.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "name": { "maxLength": 200, "minLength": 1, "type": "string" }, "kind": { "enum": [ "fixed", "smart" ], "type": "string" }, "filter_spec": { "anyOf": [ { "$ref": "#/$defs/FilterSpec" }, { "type": "null" } ], "default": null }, "member_ids": { "default": [], "items": { "format": "uuid", "type": "string" }, "maxItems": 100, "type": "array" } }, "required": [ "name", "kind" ], "type": "object" }, "FilterCondition": { "additionalProperties": false, "description": "Conditions combine with AND; their values combine with OR.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "field": { "enum": [ "name", "concept", "language", "format", "tags", "source", "imported_at" ], "type": "string" }, "operator": { "enum": [ "eq", "contains", "in", "gte", "lte" ], "type": "string" }, "values": { "items": { "type": "string" }, "maxItems": 100, "minItems": 1, "type": "array" } }, "required": [ "field", "operator", "values" ], "type": "object" }, "FilterSpec": { "additionalProperties": false, "description": "Versioned server filter definition.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "conditions": { "default": [], "items": { "$ref": "#/$defs/FilterCondition" }, "maxItems": 30, "type": "array" } }, "type": "object" } }, "additionalProperties": false, "properties": { "collection_id": { "format": "uuid", "type": "string" }, "data": { "$ref": "#/$defs/CollectionWrite", "type": "object" }, "expected_version": { "minimum": 1, "type": "integer" } }, "required": [ "collection_id", "data", "expected_version" ], "type": "object" } ``` ## launcher\_collections\_archive Archive a collection; existing saved occurrence snapshots remain retained. **Access:** `mcp:read` plus `mcp:write`. Object and function permissions also apply. | Parameter | Type | Required / default | Details | | - | - | - | - | | `collection_id` | uuid | Required | See input schema. | | `expected_version` | integer | Required | minimum: `1`. | **Retries:** the tool advertises idempotent behavior. Reuse its request identifier only with unchanged inputs. ```json theme={null} { "additionalProperties": false, "properties": { "collection_id": { "format": "uuid", "type": "string" }, "expected_version": { "minimum": 1, "type": "integer" } }, "required": [ "collection_id", "expected_version" ], "type": "object" } ``` ## launcher\_collections\_resolve Resolve a consistent collection selection with AND conditions and OR values; reserves nothing. **Access:** `mcp:read`. Object and function permissions also apply. | Parameter | Type | Required / default | Details | | - | - | - | - | | `collection_id` | uuid | Required | See input schema. | ```json theme={null} { "additionalProperties": false, "properties": { "collection_id": { "format": "uuid", "type": "string" } }, "required": [ "collection_id" ], "type": "object" } ``` ## launcher\_templates\_list List active templates within the authorized workspace. **Access:** `mcp:read`. Object and function permissions also apply. | Parameter | Type | Required / default | Details | | - | - | - | - | | `limit` | integer | `50` | minimum: `1`. maximum: `100`. | | `after_id` | uuid or null | `null` | See input schema. | ```json theme={null} { "additionalProperties": false, "properties": { "limit": { "default": 50, "maximum": 100, "minimum": 1, "type": "integer" }, "after_id": { "anyOf": [ { "format": "uuid", "type": "string" }, { "type": "null" } ], "default": null, "type": [ "string", "null" ] } }, "type": "object" } ``` ## launcher\_templates\_get Read typed saved template versions; saved configuration is not proof of provider eligibility. **Access:** `mcp:read`. Object and function permissions also apply. | Parameter | Type | Required / default | Details | | - | - | - | - | | `template_id` | uuid | Required | See input schema. | ```json theme={null} { "additionalProperties": false, "properties": { "template_id": { "format": "uuid", "type": "string" } }, "required": [ "template_id" ], "type": "object" } ``` ## launcher\_templates\_create Save a typed template and its first exact configuration version without a provider effect. **Access:** `mcp:read` plus `mcp:write`. Object and function permissions also apply. | Parameter | Type | Required / default | Details | | - | - | - | - | | `data` | object | Required | Named reusable exact template version input. | ### data fields | Parameter | Type | Required / default | Details | | - | - | - | - | | `schema_version` | 1 | `1` | See input schema. | | `name` | string | Required | minLength: `1`. maxLength: `200`. | | `config` | object | Required | Typed initial template subset; capability evidence is external. | **Retries:** the tool does not advertise idempotent replay. Read the current state before repeating a write. ```json theme={null} { "$defs": { "AdSetConfig": { "additionalProperties": false, "description": "Account-scoped capability validation owns enum compatibility.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "destination": { "maxLength": 100, "minLength": 1, "type": "string" }, "optimization_goal": { "maxLength": 100, "minLength": 1, "type": "string" }, "billing_event": { "maxLength": 100, "minLength": 1, "type": "string" }, "promoted_object": { "$ref": "#/$defs/PromotedObject" }, "targeting": { "$ref": "#/$defs/TargetingConfig" }, "placements": { "default": [], "items": { "type": "string" }, "type": "array" }, "bid": { "anyOf": [ { "$ref": "#/$defs/BidConfig" }, { "type": "null" } ], "default": null }, "delivery": { "$ref": "#/$defs/DeliveryPolicy" }, "is_skadnetwork_attribution": { "default": false, "type": "boolean" }, "attribution": { "default": [], "items": { "$ref": "#/$defs/AttributionWindow" }, "maxItems": 10, "type": "array" }, "frequency": { "anyOf": [ { "$ref": "#/$defs/FrequencyControl" }, { "type": "null" } ], "default": null }, "dayparts": { "default": [], "items": { "$ref": "#/$defs/DaypartWindow" }, "maxItems": 100, "type": "array" }, "beneficiary": { "anyOf": [ { "maxLength": 300, "type": "string" }, { "type": "null" } ], "default": null }, "payor": { "anyOf": [ { "maxLength": 300, "type": "string" }, { "type": "null" } ], "default": null } }, "required": [ "destination", "optimization_goal", "billing_event", "promoted_object", "targeting", "delivery" ], "type": "object" }, "AttributionWindow": { "additionalProperties": false, "description": "Explicit provider attribution event and bounded integer window.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "event_type": { "enum": [ "CLICK_THROUGH", "VIEW_THROUGH", "ENGAGED_VIDEO_VIEW" ], "type": "string" }, "window_days": { "maximum": 28, "minimum": 1, "type": "integer" } }, "required": [ "event_type", "window_days" ], "type": "object" }, "BidConfig": { "additionalProperties": false, "description": "Bid values preserve minor units or decimal ROAS text.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "strategy": { "maxLength": 100, "minLength": 1, "type": "string" }, "amount_minor": { "anyOf": [ { "exclusiveMinimum": 0, "type": "integer" }, { "type": "null" } ], "default": null }, "min_roas": { "anyOf": [ { "maxLength": 100, "pattern": "^[0-9]+(?:\\.[0-9]+)?$", "type": "string" }, { "type": "null" } ], "default": null } }, "required": [ "strategy" ], "type": "object" }, "BudgetConfig": { "additionalProperties": false, "description": "One budget owner and period using integer currency minor units.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "owner": { "enum": [ "campaign", "adset" ], "type": "string" }, "period": { "enum": [ "daily", "lifetime" ], "type": "string" }, "amount_minor": { "exclusiveMinimum": 0, "maximum": 9223372036854775807, "type": "integer" }, "currency": { "pattern": "^[A-Z]{3}$", "type": "string" } }, "required": [ "owner", "period", "amount_minor", "currency" ], "type": "object" }, "CampaignConfig": { "additionalProperties": false, "description": "Requested campaign declarations without claiming provider support.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "objective": { "enum": [ "OUTCOME_AWARENESS", "OUTCOME_TRAFFIC", "OUTCOME_ENGAGEMENT", "OUTCOME_LEADS", "OUTCOME_APP_PROMOTION", "OUTCOME_SALES" ], "type": "string" }, "buying_type": { "default": "AUCTION", "enum": [ "AUCTION", "RESERVED" ], "type": "string" }, "special_categories": { "default": [], "items": { "type": "string" }, "type": "array" }, "category_countries": { "default": [], "items": { "type": "string" }, "type": "array" } }, "required": [ "objective" ], "type": "object" }, "CreativePolicy": { "additionalProperties": false, "description": "Whole-version language and partnership requirements.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "allowed_formats": { "items": { "enum": [ "single_image", "single_video", "carousel", "collection", "flexible", "existing_post", "catalog" ], "type": "string" }, "type": "array" }, "language_mode": { "default": "single", "enum": [ "single", "multilingual" ], "type": "string" }, "missing_variant_policy": { "const": "block", "default": "block", "type": "string" }, "partnership_required": { "default": false, "type": "boolean" } }, "required": [ "allowed_formats" ], "type": "object" }, "DaypartWindow": { "additionalProperties": false, "description": "Ordered provider delivery interval without a general scheduler language.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "days": { "items": { "type": "integer" }, "maxItems": 7, "minItems": 1, "type": "array" }, "start_minute": { "exclusiveMaximum": 1440, "minimum": 0, "type": "integer" }, "end_minute": { "exclusiveMinimum": 0, "maximum": 1440, "type": "integer" }, "timezone_type": { "default": "ADVERTISER", "enum": [ "ADVERTISER", "USER" ], "type": "string" } }, "required": [ "days", "start_minute", "end_minute" ], "type": "object" }, "DeliveryPolicy": { "additionalProperties": false, "description": "Deterministic schedule policy without automatic catch-up.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "timezone": { "type": "string" }, "dst_gap": { "const": "skip", "default": "skip", "type": "string" }, "dst_repeat": { "const": "second", "default": "second", "type": "string" }, "missed_run": { "const": "skip", "default": "skip", "type": "string" }, "start_at": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "default": null }, "end_at": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "default": null }, "start_offset_seconds": { "anyOf": [ { "maximum": 31536000, "minimum": 0, "type": "integer" }, { "type": "null" } ], "default": null }, "duration_seconds": { "anyOf": [ { "exclusiveMinimum": 0, "maximum": 31536000, "type": "integer" }, { "type": "null" } ], "default": null } }, "required": [ "timezone" ], "type": "object" }, "FrequencyControl": { "additionalProperties": false, "description": "Awareness frequency request; account eligibility is checked externally.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "impressions": { "exclusiveMinimum": 0, "maximum": 1000, "type": "integer" }, "days": { "exclusiveMinimum": 0, "maximum": 90, "type": "integer" } }, "required": [ "impressions", "days" ], "type": "object" }, "NamingConfig": { "additionalProperties": false, "description": "Patterns are expanded and collision-checked before admission.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "campaign": { "maxLength": 200, "minLength": 1, "type": "string" }, "adset": { "maxLength": 200, "minLength": 1, "type": "string" }, "ad": { "maxLength": 200, "minLength": 1, "type": "string" } }, "required": [ "campaign", "adset", "ad" ], "type": "object" }, "PromotedObject": { "additionalProperties": false, "description": "Explicit destination references validated further by capabilities.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "kind": { "enum": [ "website", "app", "web_app", "form", "messaging", "calls", "catalog", "event", "profile", "omnichannel" ], "type": "string" }, "dataset_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null }, "event": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null }, "custom_conversion_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null }, "application_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null }, "store_url": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null }, "os": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null }, "page_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null }, "form_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null }, "channel": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null }, "identity_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null }, "flow_ref": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null }, "phone": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null }, "availability": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null }, "catalog_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null }, "product_set_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null }, "event_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null }, "profile_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null }, "location_ids": { "default": [], "items": { "type": "string" }, "type": "array" } }, "required": [ "kind" ], "type": "object" }, "ProviderLocation": { "additionalProperties": false, "description": "Exact location-search reference with optional city radius.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "kind": { "enum": [ "region", "city", "zip" ], "type": "string" }, "key": { "maxLength": 100, "minLength": 1, "type": "string" }, "radius": { "anyOf": [ { "exclusiveMinimum": 0, "maximum": 1000, "type": "integer" }, { "type": "null" } ], "default": null }, "distance_unit": { "anyOf": [ { "enum": [ "kilometer", "mile" ], "type": "string" }, { "type": "null" } ], "default": null } }, "required": [ "kind", "key" ], "type": "object" }, "RequestedStatus": { "description": "Requested provider status, distinct from actual delivery.", "enum": [ "PAUSED", "ACTIVE" ], "type": "string" }, "StructureConfig": { "additionalProperties": false, "description": "Bounded structure modes rather than a general workflow builder.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "mode": { "default": "all", "enum": [ "all", "concept", "manual" ], "type": "string" } }, "type": "object" }, "TargetingConfig": { "additionalProperties": false, "description": "Country and audience controls with independent exclusions.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "countries": { "default": [], "items": { "type": "string" }, "type": "array" }, "excluded_countries": { "default": [], "items": { "type": "string" }, "type": "array" }, "included_locations": { "default": [], "items": { "$ref": "#/$defs/ProviderLocation" }, "maxItems": 100, "type": "array" }, "excluded_locations": { "default": [], "items": { "$ref": "#/$defs/ProviderLocation" }, "maxItems": 100, "type": "array" }, "genders": { "default": [], "items": { "enum": [ 1, 2 ], "type": "integer" }, "type": "array" }, "user_os": { "default": [], "items": { "type": "string" }, "maxItems": 10, "type": "array" }, "user_device": { "default": [], "items": { "type": "string" }, "maxItems": 100, "type": "array" }, "advantage_audience": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": null }, "custom_audiences": { "default": [], "items": { "type": "string" }, "type": "array" }, "excluded_custom_audiences": { "default": [], "items": { "type": "string" }, "type": "array" }, "locales": { "default": [], "items": { "type": "integer" }, "type": "array" }, "age_min": { "anyOf": [ { "maximum": 65, "minimum": 13, "type": "integer" }, { "type": "null" } ], "default": null }, "age_max": { "anyOf": [ { "maximum": 65, "minimum": 13, "type": "integer" }, { "type": "null" } ], "default": null }, "audience_semantics": { "default": "control", "enum": [ "control", "suggestion" ], "type": "string" } }, "type": "object" }, "TemplateConfig": { "additionalProperties": false, "description": "Typed initial template subset; capability evidence is external.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "campaign": { "$ref": "#/$defs/CampaignConfig" }, "budget": { "$ref": "#/$defs/BudgetConfig" }, "adset": { "$ref": "#/$defs/AdSetConfig" }, "creative_policy": { "$ref": "#/$defs/CreativePolicy" }, "naming": { "$ref": "#/$defs/NamingConfig" }, "structure": { "$ref": "#/$defs/StructureConfig" }, "requested_status": { "$ref": "#/$defs/RequestedStatus", "default": "PAUSED" } }, "required": [ "campaign", "budget", "adset", "creative_policy", "naming" ], "type": "object" }, "TemplateWrite": { "additionalProperties": false, "description": "Named reusable exact template version input.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "name": { "maxLength": 200, "minLength": 1, "type": "string" }, "config": { "$ref": "#/$defs/TemplateConfig" } }, "required": [ "name", "config" ], "type": "object" } }, "additionalProperties": false, "properties": { "data": { "$ref": "#/$defs/TemplateWrite" } }, "required": [ "data" ], "type": "object" } ``` ## launcher\_template\_versions\_create Save a new immutable template configuration version; scheduled references keep their exact version. **Access:** `mcp:read` plus `mcp:write`. Object and function permissions also apply. | Parameter | Type | Required / default | Details | | - | - | - | - | | `template_id` | uuid | Required | See input schema. | | `data` | object | Required | Named reusable exact template version input. | | `expected_version` | integer | Required | minimum: `1`. | ### data fields | Parameter | Type | Required / default | Details | | - | - | - | - | | `schema_version` | 1 | `1` | See input schema. | | `name` | string | Required | minLength: `1`. maxLength: `200`. | | `config` | object | Required | Typed initial template subset; capability evidence is external. | **Retries:** the tool does not advertise idempotent replay. Read the current state before repeating a write. ```json theme={null} { "$defs": { "AdSetConfig": { "additionalProperties": false, "description": "Account-scoped capability validation owns enum compatibility.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "destination": { "maxLength": 100, "minLength": 1, "type": "string" }, "optimization_goal": { "maxLength": 100, "minLength": 1, "type": "string" }, "billing_event": { "maxLength": 100, "minLength": 1, "type": "string" }, "promoted_object": { "$ref": "#/$defs/PromotedObject" }, "targeting": { "$ref": "#/$defs/TargetingConfig" }, "placements": { "default": [], "items": { "type": "string" }, "type": "array" }, "bid": { "anyOf": [ { "$ref": "#/$defs/BidConfig" }, { "type": "null" } ], "default": null }, "delivery": { "$ref": "#/$defs/DeliveryPolicy" }, "is_skadnetwork_attribution": { "default": false, "type": "boolean" }, "attribution": { "default": [], "items": { "$ref": "#/$defs/AttributionWindow" }, "maxItems": 10, "type": "array" }, "frequency": { "anyOf": [ { "$ref": "#/$defs/FrequencyControl" }, { "type": "null" } ], "default": null }, "dayparts": { "default": [], "items": { "$ref": "#/$defs/DaypartWindow" }, "maxItems": 100, "type": "array" }, "beneficiary": { "anyOf": [ { "maxLength": 300, "type": "string" }, { "type": "null" } ], "default": null }, "payor": { "anyOf": [ { "maxLength": 300, "type": "string" }, { "type": "null" } ], "default": null } }, "required": [ "destination", "optimization_goal", "billing_event", "promoted_object", "targeting", "delivery" ], "type": "object" }, "AttributionWindow": { "additionalProperties": false, "description": "Explicit provider attribution event and bounded integer window.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "event_type": { "enum": [ "CLICK_THROUGH", "VIEW_THROUGH", "ENGAGED_VIDEO_VIEW" ], "type": "string" }, "window_days": { "maximum": 28, "minimum": 1, "type": "integer" } }, "required": [ "event_type", "window_days" ], "type": "object" }, "BidConfig": { "additionalProperties": false, "description": "Bid values preserve minor units or decimal ROAS text.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "strategy": { "maxLength": 100, "minLength": 1, "type": "string" }, "amount_minor": { "anyOf": [ { "exclusiveMinimum": 0, "type": "integer" }, { "type": "null" } ], "default": null }, "min_roas": { "anyOf": [ { "maxLength": 100, "pattern": "^[0-9]+(?:\\.[0-9]+)?$", "type": "string" }, { "type": "null" } ], "default": null } }, "required": [ "strategy" ], "type": "object" }, "BudgetConfig": { "additionalProperties": false, "description": "One budget owner and period using integer currency minor units.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "owner": { "enum": [ "campaign", "adset" ], "type": "string" }, "period": { "enum": [ "daily", "lifetime" ], "type": "string" }, "amount_minor": { "exclusiveMinimum": 0, "maximum": 9223372036854775807, "type": "integer" }, "currency": { "pattern": "^[A-Z]{3}$", "type": "string" } }, "required": [ "owner", "period", "amount_minor", "currency" ], "type": "object" }, "CampaignConfig": { "additionalProperties": false, "description": "Requested campaign declarations without claiming provider support.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "objective": { "enum": [ "OUTCOME_AWARENESS", "OUTCOME_TRAFFIC", "OUTCOME_ENGAGEMENT", "OUTCOME_LEADS", "OUTCOME_APP_PROMOTION", "OUTCOME_SALES" ], "type": "string" }, "buying_type": { "default": "AUCTION", "enum": [ "AUCTION", "RESERVED" ], "type": "string" }, "special_categories": { "default": [], "items": { "type": "string" }, "type": "array" }, "category_countries": { "default": [], "items": { "type": "string" }, "type": "array" } }, "required": [ "objective" ], "type": "object" }, "CreativePolicy": { "additionalProperties": false, "description": "Whole-version language and partnership requirements.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "allowed_formats": { "items": { "enum": [ "single_image", "single_video", "carousel", "collection", "flexible", "existing_post", "catalog" ], "type": "string" }, "type": "array" }, "language_mode": { "default": "single", "enum": [ "single", "multilingual" ], "type": "string" }, "missing_variant_policy": { "const": "block", "default": "block", "type": "string" }, "partnership_required": { "default": false, "type": "boolean" } }, "required": [ "allowed_formats" ], "type": "object" }, "DaypartWindow": { "additionalProperties": false, "description": "Ordered provider delivery interval without a general scheduler language.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "days": { "items": { "type": "integer" }, "maxItems": 7, "minItems": 1, "type": "array" }, "start_minute": { "exclusiveMaximum": 1440, "minimum": 0, "type": "integer" }, "end_minute": { "exclusiveMinimum": 0, "maximum": 1440, "type": "integer" }, "timezone_type": { "default": "ADVERTISER", "enum": [ "ADVERTISER", "USER" ], "type": "string" } }, "required": [ "days", "start_minute", "end_minute" ], "type": "object" }, "DeliveryPolicy": { "additionalProperties": false, "description": "Deterministic schedule policy without automatic catch-up.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "timezone": { "type": "string" }, "dst_gap": { "const": "skip", "default": "skip", "type": "string" }, "dst_repeat": { "const": "second", "default": "second", "type": "string" }, "missed_run": { "const": "skip", "default": "skip", "type": "string" }, "start_at": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "default": null }, "end_at": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "default": null }, "start_offset_seconds": { "anyOf": [ { "maximum": 31536000, "minimum": 0, "type": "integer" }, { "type": "null" } ], "default": null }, "duration_seconds": { "anyOf": [ { "exclusiveMinimum": 0, "maximum": 31536000, "type": "integer" }, { "type": "null" } ], "default": null } }, "required": [ "timezone" ], "type": "object" }, "FrequencyControl": { "additionalProperties": false, "description": "Awareness frequency request; account eligibility is checked externally.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "impressions": { "exclusiveMinimum": 0, "maximum": 1000, "type": "integer" }, "days": { "exclusiveMinimum": 0, "maximum": 90, "type": "integer" } }, "required": [ "impressions", "days" ], "type": "object" }, "NamingConfig": { "additionalProperties": false, "description": "Patterns are expanded and collision-checked before admission.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "campaign": { "maxLength": 200, "minLength": 1, "type": "string" }, "adset": { "maxLength": 200, "minLength": 1, "type": "string" }, "ad": { "maxLength": 200, "minLength": 1, "type": "string" } }, "required": [ "campaign", "adset", "ad" ], "type": "object" }, "PromotedObject": { "additionalProperties": false, "description": "Explicit destination references validated further by capabilities.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "kind": { "enum": [ "website", "app", "web_app", "form", "messaging", "calls", "catalog", "event", "profile", "omnichannel" ], "type": "string" }, "dataset_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null }, "event": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null }, "custom_conversion_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null }, "application_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null }, "store_url": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null }, "os": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null }, "page_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null }, "form_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null }, "channel": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null }, "identity_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null }, "flow_ref": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null }, "phone": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null }, "availability": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null }, "catalog_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null }, "product_set_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null }, "event_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null }, "profile_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null }, "location_ids": { "default": [], "items": { "type": "string" }, "type": "array" } }, "required": [ "kind" ], "type": "object" }, "ProviderLocation": { "additionalProperties": false, "description": "Exact location-search reference with optional city radius.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "kind": { "enum": [ "region", "city", "zip" ], "type": "string" }, "key": { "maxLength": 100, "minLength": 1, "type": "string" }, "radius": { "anyOf": [ { "exclusiveMinimum": 0, "maximum": 1000, "type": "integer" }, { "type": "null" } ], "default": null }, "distance_unit": { "anyOf": [ { "enum": [ "kilometer", "mile" ], "type": "string" }, { "type": "null" } ], "default": null } }, "required": [ "kind", "key" ], "type": "object" }, "RequestedStatus": { "description": "Requested provider status, distinct from actual delivery.", "enum": [ "PAUSED", "ACTIVE" ], "type": "string" }, "StructureConfig": { "additionalProperties": false, "description": "Bounded structure modes rather than a general workflow builder.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "mode": { "default": "all", "enum": [ "all", "concept", "manual" ], "type": "string" } }, "type": "object" }, "TargetingConfig": { "additionalProperties": false, "description": "Country and audience controls with independent exclusions.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "countries": { "default": [], "items": { "type": "string" }, "type": "array" }, "excluded_countries": { "default": [], "items": { "type": "string" }, "type": "array" }, "included_locations": { "default": [], "items": { "$ref": "#/$defs/ProviderLocation" }, "maxItems": 100, "type": "array" }, "excluded_locations": { "default": [], "items": { "$ref": "#/$defs/ProviderLocation" }, "maxItems": 100, "type": "array" }, "genders": { "default": [], "items": { "enum": [ 1, 2 ], "type": "integer" }, "type": "array" }, "user_os": { "default": [], "items": { "type": "string" }, "maxItems": 10, "type": "array" }, "user_device": { "default": [], "items": { "type": "string" }, "maxItems": 100, "type": "array" }, "advantage_audience": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": null }, "custom_audiences": { "default": [], "items": { "type": "string" }, "type": "array" }, "excluded_custom_audiences": { "default": [], "items": { "type": "string" }, "type": "array" }, "locales": { "default": [], "items": { "type": "integer" }, "type": "array" }, "age_min": { "anyOf": [ { "maximum": 65, "minimum": 13, "type": "integer" }, { "type": "null" } ], "default": null }, "age_max": { "anyOf": [ { "maximum": 65, "minimum": 13, "type": "integer" }, { "type": "null" } ], "default": null }, "audience_semantics": { "default": "control", "enum": [ "control", "suggestion" ], "type": "string" } }, "type": "object" }, "TemplateConfig": { "additionalProperties": false, "description": "Typed initial template subset; capability evidence is external.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "campaign": { "$ref": "#/$defs/CampaignConfig" }, "budget": { "$ref": "#/$defs/BudgetConfig" }, "adset": { "$ref": "#/$defs/AdSetConfig" }, "creative_policy": { "$ref": "#/$defs/CreativePolicy" }, "naming": { "$ref": "#/$defs/NamingConfig" }, "structure": { "$ref": "#/$defs/StructureConfig" }, "requested_status": { "$ref": "#/$defs/RequestedStatus", "default": "PAUSED" } }, "required": [ "campaign", "budget", "adset", "creative_policy", "naming" ], "type": "object" }, "TemplateWrite": { "additionalProperties": false, "description": "Named reusable exact template version input.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "name": { "maxLength": 200, "minLength": 1, "type": "string" }, "config": { "$ref": "#/$defs/TemplateConfig" } }, "required": [ "name", "config" ], "type": "object" } }, "additionalProperties": false, "properties": { "template_id": { "format": "uuid", "type": "string" }, "data": { "$ref": "#/$defs/TemplateWrite", "type": "object" }, "expected_version": { "minimum": 1, "type": "integer" } }, "required": [ "template_id", "data", "expected_version" ], "type": "object" } ``` ## launcher\_templates\_archive Archive a template identity while retaining previously pinned configuration versions. **Access:** `mcp:read` plus `mcp:write`. Object and function permissions also apply. | Parameter | Type | Required / default | Details | | - | - | - | - | | `template_id` | uuid | Required | See input schema. | | `expected_version` | integer | Required | minimum: `1`. | **Retries:** the tool advertises idempotent behavior. Reuse its request identifier only with unchanged inputs. ```json theme={null} { "additionalProperties": false, "properties": { "template_id": { "format": "uuid", "type": "string" }, "expected_version": { "minimum": 1, "type": "integer" } }, "required": [ "template_id", "expected_version" ], "type": "object" } ``` ## launcher\_media\_list List imported asset IDs and metadata; storage locations stay private. **Access:** `mcp:read`. Object and function permissions also apply. | Parameter | Type | Required / default | Details | | - | - | - | - | | `limit` | integer | `50` | minimum: `1`. maximum: `100`. | | `search` | string or null | `null` | See input schema. | | `media_type` | image, video or null | `null` | See input schema. | | `source_kind` | upload, google\_drive or null | `null` | See input schema. | | `sort` | newest, oldest, name | `"newest"` | See input schema. | | `offset` | integer | `0` | minimum: `0`. maximum: `100000`. | | `after_id` | uuid or null | `null` | See input schema. | ```json theme={null} { "additionalProperties": false, "properties": { "limit": { "default": 50, "maximum": 100, "minimum": 1, "type": "integer" }, "search": { "anyOf": [ { "maxLength": 200, "type": "string" }, { "type": "null" } ], "default": null, "type": [ "string", "null" ] }, "media_type": { "anyOf": [ { "enum": [ "image", "video" ], "type": "string" }, { "type": "null" } ], "default": null, "type": [ "string", "null" ] }, "source_kind": { "anyOf": [ { "enum": [ "upload", "google_drive" ], "type": "string" }, { "type": "null" } ], "default": null, "type": [ "string", "null" ] }, "sort": { "default": "newest", "enum": [ "newest", "oldest", "name" ], "type": "string" }, "offset": { "default": 0, "maximum": 100000, "minimum": 0, "type": "integer" }, "after_id": { "anyOf": [ { "format": "uuid", "type": "string" }, { "type": "null" } ], "default": null, "type": [ "string", "null" ] } }, "type": "object" } ``` ## launcher\_media\_get Read imported media metadata without private URLs or object keys. **Access:** `mcp:read`. Object and function permissions also apply. | Parameter | Type | Required / default | Details | | - | - | - | - | | `media_asset_id` | uuid | Required | See input schema. | ```json theme={null} { "additionalProperties": false, "properties": { "media_asset_id": { "format": "uuid", "type": "string" } }, "required": [ "media_asset_id" ], "type": "object" } ``` ## launcher\_media\_delete Archive unused media and queue storage cleanup. Retained creative or execution references block deletion. **Access:** `mcp:read` plus `mcp:write`. Object and function permissions also apply. | Parameter | Type | Required / default | Details | | - | - | - | - | | `media_asset_id` | uuid | Required | See input schema. | **Retries:** the tool advertises idempotent behavior. Reuse its request identifier only with unchanged inputs. ```json theme={null} { "additionalProperties": false, "properties": { "media_asset_id": { "format": "uuid", "type": "string" } }, "required": [ "media_asset_id" ], "type": "object" } ``` ## launcher\_media\_retry\_thumbnail Queue a thumbnail attempt for media in the currently authorized workspace. **Access:** `mcp:read` plus `mcp:write`. Object and function permissions also apply. | Parameter | Type | Required / default | Details | | - | - | - | - | | `media_asset_id` | uuid | Required | See input schema. | **Retries:** the tool does not advertise idempotent replay. Read the current state before repeating a write. ```json theme={null} { "additionalProperties": false, "properties": { "media_asset_id": { "format": "uuid", "type": "string" } }, "required": [ "media_asset_id" ], "type": "object" } ``` # Launcher schedules and limits Source: https://docs.superlaunch.pro/mcp/reference/launcher-schedules Schedules keep pinned recurring inputs. Schedules keep pinned recurring inputs. Read the current lock version before editing. Existing occurrences keep their recorded inputs. Account limits cap campaign counts and budget exposure; omission of an expected version applies only to initial limit configuration. The parameter tables show the top-level arguments and common nested objects. Expand the input schema for nested formats, constraints, and allowed values. Successful Launcher responses include `status: "ok"`, the returned object or page, and `next_actions`. Follow returned cursors using the parameter specified by the tool. An accepted launch is not a completed provider write. ## launcher\_schedules\_create Save pinned recurring inputs with SKIP overlap and current automation authority. **Access:** `mcp:read` plus `mcp:write`. Object and function permissions also apply. | Parameter | Type | Required / default | Details | | - | - | - | - | | `data` | object | Required | Workspace content and an explicit account define future runs. | ### data fields | Parameter | Type | Required / default | Details | | - | - | - | - | | `schema_version` | 1 | `1` | See input schema. | | `name` | string | Required | minLength: `1`. maxLength: `200`. | | `request` | object | Required | Brandless public schema with legacy receipt parsing for exact retries. | | `cron_expression` | string | Required | minLength: `9`. maxLength: `100`. | | `timezone` | string | Required | See input schema. | | `batch_limit` | integer | Required | minimum: `1`. maximum: `1000`. | | `batch_budget_limit_minor` | integer | Required | exclusiveMinimum: `0`. | | `enabled` | boolean | `true` | See input schema. | **Retries:** the tool does not advertise idempotent replay. Read the current state before repeating a write. ```json theme={null} { "$defs": { "BudgetConfig": { "additionalProperties": false, "description": "One budget owner and period using integer currency minor units.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "owner": { "enum": [ "campaign", "adset" ], "type": "string" }, "period": { "enum": [ "daily", "lifetime" ], "type": "string" }, "amount_minor": { "exclusiveMinimum": 0, "maximum": 9223372036854775807, "type": "integer" }, "currency": { "pattern": "^[A-Z]{3}$", "type": "string" } }, "required": [ "owner", "period", "amount_minor", "currency" ], "type": "object" }, "ExistingTargetSpec": { "additionalProperties": false, "description": "Exact provider target chosen from fresh account reads.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "campaign_id": { "maxLength": 100, "minLength": 1, "type": "string" }, "adset_id": { "maxLength": 100, "minLength": 1, "type": "string" }, "settings_fingerprint": { "pattern": "^[0-9a-f]{64}$", "type": "string" } }, "required": [ "campaign_id", "adset_id", "settings_fingerprint" ], "type": "object" }, "FilterCondition": { "additionalProperties": false, "description": "Conditions combine with AND; their values combine with OR.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "field": { "enum": [ "name", "concept", "language", "format", "tags", "source", "imported_at" ], "type": "string" }, "operator": { "enum": [ "eq", "contains", "in", "gte", "lte" ], "type": "string" }, "values": { "items": { "type": "string" }, "maxItems": 100, "minItems": 1, "type": "array" } }, "required": [ "field", "operator", "values" ], "type": "object" }, "FilterSpec": { "additionalProperties": false, "description": "Versioned server filter definition.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "conditions": { "default": [], "items": { "$ref": "#/$defs/FilterCondition" }, "maxItems": 30, "type": "array" } }, "type": "object" }, "ManualGroup": { "additionalProperties": false, "description": "One stable user-assigned group over explicit creative families.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "group_key": { "maxLength": 200, "minLength": 1, "type": "string" }, "creative_ids": { "default": [], "items": { "format": "uuid", "type": "string" }, "maxItems": 1000, "type": "array" }, "targeting": { "anyOf": [ { "$ref": "#/$defs/TargetingConfig" }, { "type": "null" } ], "default": null }, "budget": { "anyOf": [ { "$ref": "#/$defs/BudgetConfig" }, { "type": "null" } ], "default": null } }, "required": [ "group_key" ], "type": "object" }, "ProviderLocation": { "additionalProperties": false, "description": "Exact location-search reference with optional city radius.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "kind": { "enum": [ "region", "city", "zip" ], "type": "string" }, "key": { "maxLength": 100, "minLength": 1, "type": "string" }, "radius": { "anyOf": [ { "exclusiveMinimum": 0, "maximum": 1000, "type": "integer" }, { "type": "null" } ], "default": null }, "distance_unit": { "anyOf": [ { "enum": [ "kilometer", "mile" ], "type": "string" }, { "type": "null" } ], "default": null } }, "required": [ "kind", "key" ], "type": "object" }, "ReplacementItem": { "additionalProperties": false, "description": "Fence one failed assignment and the exact approved corrected version.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "source_item_id": { "format": "uuid", "type": "string" }, "creative_version_id": { "format": "uuid", "type": "string" }, "expected_ad_attempt": { "minimum": 0, "type": "integer" } }, "required": [ "source_item_id", "creative_version_id", "expected_ad_attempt" ], "type": "object" }, "ReplacementSpec": { "additionalProperties": false, "description": "A new request links a bounded corrected subset to retained source history.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "launch_id": { "format": "uuid", "type": "string" }, "expected_version": { "minimum": 1, "type": "integer" }, "items": { "items": { "$ref": "#/$defs/ReplacementItem" }, "maxItems": 1000, "minItems": 1, "type": "array" } }, "required": [ "launch_id", "expected_version", "items" ], "type": "object" }, "RequestedStatus": { "description": "Requested provider status, distinct from actual delivery.", "enum": [ "PAUSED", "ACTIVE" ], "type": "string" }, "SelectionSpec": { "additionalProperties": false, "description": "Direct or pinned collection selection with explicit exclusions.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "kind": { "enum": [ "direct", "fixed", "smart" ], "type": "string" }, "creative_ids": { "default": [], "items": { "format": "uuid", "type": "string" }, "maxItems": 1000, "type": "array" }, "excluded_ids": { "default": [], "items": { "format": "uuid", "type": "string" }, "maxItems": 1000, "type": "array" }, "collection_id": { "anyOf": [ { "format": "uuid", "type": "string" }, { "type": "null" } ], "default": null }, "source_lock_version": { "anyOf": [ { "minimum": 1, "type": "integer" }, { "type": "null" } ], "default": null }, "filter_spec": { "anyOf": [ { "$ref": "#/$defs/FilterSpec" }, { "type": "null" } ], "default": null } }, "required": [ "kind" ], "type": "object" }, "TargetingConfig": { "additionalProperties": false, "description": "Country and audience controls with independent exclusions.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "countries": { "default": [], "items": { "type": "string" }, "type": "array" }, "excluded_countries": { "default": [], "items": { "type": "string" }, "type": "array" }, "included_locations": { "default": [], "items": { "$ref": "#/$defs/ProviderLocation" }, "maxItems": 100, "type": "array" }, "excluded_locations": { "default": [], "items": { "$ref": "#/$defs/ProviderLocation" }, "maxItems": 100, "type": "array" }, "genders": { "default": [], "items": { "enum": [ 1, 2 ], "type": "integer" }, "type": "array" }, "user_os": { "default": [], "items": { "type": "string" }, "maxItems": 10, "type": "array" }, "user_device": { "default": [], "items": { "type": "string" }, "maxItems": 100, "type": "array" }, "advantage_audience": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": null }, "custom_audiences": { "default": [], "items": { "type": "string" }, "type": "array" }, "excluded_custom_audiences": { "default": [], "items": { "type": "string" }, "type": "array" }, "locales": { "default": [], "items": { "type": "integer" }, "type": "array" }, "age_min": { "anyOf": [ { "maximum": 65, "minimum": 13, "type": "integer" }, { "type": "null" } ], "default": null }, "age_max": { "anyOf": [ { "maximum": 65, "minimum": 13, "type": "integer" }, { "type": "null" } ], "default": null }, "audience_semantics": { "default": "control", "enum": [ "control", "suggestion" ], "type": "string" } }, "type": "object" }, "WorkspaceLaunchSubmit": { "additionalProperties": false, "description": "Brandless public schema with legacy receipt parsing for exact retries.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "name": { "default": "Launch", "maxLength": 200, "minLength": 1, "type": "string" }, "request_key": { "maxLength": 200, "minLength": 1, "type": "string" }, "ad_account_id": { "format": "uuid", "type": "string" }, "operation": { "enum": [ "test", "promote", "refresh" ], "type": "string" }, "purpose": { "enum": [ "test", "scale" ], "type": "string" }, "template_version_id": { "format": "uuid", "type": "string" }, "selection": { "$ref": "#/$defs/SelectionSpec" }, "repeat_across_groups": { "default": false, "type": "boolean" }, "manual_groups": { "default": [], "items": { "$ref": "#/$defs/ManualGroup" }, "maxItems": 100, "type": "array" }, "requested_status": { "$ref": "#/$defs/RequestedStatus", "default": "PAUSED" }, "scheduled_at": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "default": null }, "source_launch_item_ids": { "default": [], "items": { "format": "uuid", "type": "string" }, "type": "array" }, "target": { "anyOf": [ { "$ref": "#/$defs/ExistingTargetSpec" }, { "type": "null" } ], "default": null }, "retest_reason": { "anyOf": [ { "maxLength": 2000, "minLength": 1, "type": "string" }, { "type": "null" } ], "default": null }, "replacement": { "anyOf": [ { "$ref": "#/$defs/ReplacementSpec" }, { "type": "null" } ], "default": null } }, "required": [ "request_key", "ad_account_id", "operation", "purpose", "template_version_id", "selection" ], "type": "object" }, "WorkspaceScheduleWrite": { "additionalProperties": false, "description": "Workspace content and an explicit account define future runs.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "name": { "maxLength": 200, "minLength": 1, "type": "string" }, "request": { "$ref": "#/$defs/WorkspaceLaunchSubmit" }, "cron_expression": { "maxLength": 100, "minLength": 9, "type": "string" }, "timezone": { "type": "string" }, "batch_limit": { "maximum": 1000, "minimum": 1, "type": "integer" }, "batch_budget_limit_minor": { "exclusiveMinimum": 0, "type": "integer" }, "enabled": { "default": true, "type": "boolean" } }, "required": [ "name", "request", "cron_expression", "timezone", "batch_limit", "batch_budget_limit_minor" ], "type": "object" } }, "additionalProperties": false, "properties": { "data": { "$ref": "#/$defs/WorkspaceScheduleWrite", "type": "object" } }, "required": [ "data" ], "type": "object" } ``` ## launcher\_schedules\_change\_status Pause or resume future admissions; preserve already created occurrence snapshots. **Access:** `mcp:read` plus `mcp:write`. Object and function permissions also apply. | Parameter | Type | Required / default | Details | | - | - | - | - | | `ad_account_id` | uuid | Required | See input schema. | | `schedule_id` | uuid | Required | See input schema. | | `enabled` | boolean | Required | See input schema. | | `expected_version` | integer | Required | minimum: `1`. | **Retries:** the tool advertises idempotent behavior. Reuse its request identifier only with unchanged inputs. ```json theme={null} { "additionalProperties": false, "properties": { "ad_account_id": { "format": "uuid", "type": "string" }, "schedule_id": { "format": "uuid", "type": "string" }, "enabled": { "type": "boolean" }, "expected_version": { "minimum": 1, "type": "integer" } }, "required": [ "ad_account_id", "schedule_id", "enabled", "expected_version" ], "type": "object" } ``` ## launcher\_schedules\_list List pinned recurring schedules in the currently authorized account. **Access:** `mcp:read`. Object and function permissions also apply. | Parameter | Type | Required / default | Details | | - | - | - | - | | `ad_account_id` | uuid | Required | See input schema. | | `limit` | integer | `50` | minimum: `1`. maximum: `100`. | | `after_id` | uuid or null | `null` | See input schema. | ```json theme={null} { "additionalProperties": false, "properties": { "ad_account_id": { "format": "uuid", "type": "string" }, "limit": { "default": 50, "maximum": 100, "minimum": 1, "type": "integer" }, "after_id": { "anyOf": [ { "format": "uuid", "type": "string" }, { "type": "null" } ], "default": null, "type": [ "string", "null" ] } }, "required": [ "ad_account_id" ], "type": "object" } ``` ## launcher\_schedules\_get Read a schedule definition and exact version references. **Access:** `mcp:read`. Object and function permissions also apply. | Parameter | Type | Required / default | Details | | - | - | - | - | | `ad_account_id` | uuid | Required | See input schema. | | `schedule_id` | uuid | Required | See input schema. | ```json theme={null} { "additionalProperties": false, "properties": { "ad_account_id": { "format": "uuid", "type": "string" }, "schedule_id": { "format": "uuid", "type": "string" } }, "required": [ "ad_account_id", "schedule_id" ], "type": "object" } ``` ## launcher\_schedules\_update Save future settings; claimed occurrences keep their snapshot. **Access:** `mcp:read` plus `mcp:write`. Object and function permissions also apply. | Parameter | Type | Required / default | Details | | - | - | - | - | | `schedule_id` | uuid | Required | See input schema. | | `data` | object | Required | Workspace content and an explicit account define future runs. | | `expected_version` | integer | Required | minimum: `1`. | ### data fields | Parameter | Type | Required / default | Details | | - | - | - | - | | `schema_version` | 1 | `1` | See input schema. | | `name` | string | Required | minLength: `1`. maxLength: `200`. | | `request` | object | Required | Brandless public schema with legacy receipt parsing for exact retries. | | `cron_expression` | string | Required | minLength: `9`. maxLength: `100`. | | `timezone` | string | Required | See input schema. | | `batch_limit` | integer | Required | minimum: `1`. maximum: `1000`. | | `batch_budget_limit_minor` | integer | Required | exclusiveMinimum: `0`. | | `enabled` | boolean | `true` | See input schema. | **Retries:** the tool does not advertise idempotent replay. Read the current state before repeating a write. ```json theme={null} { "$defs": { "BudgetConfig": { "additionalProperties": false, "description": "One budget owner and period using integer currency minor units.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "owner": { "enum": [ "campaign", "adset" ], "type": "string" }, "period": { "enum": [ "daily", "lifetime" ], "type": "string" }, "amount_minor": { "exclusiveMinimum": 0, "maximum": 9223372036854775807, "type": "integer" }, "currency": { "pattern": "^[A-Z]{3}$", "type": "string" } }, "required": [ "owner", "period", "amount_minor", "currency" ], "type": "object" }, "ExistingTargetSpec": { "additionalProperties": false, "description": "Exact provider target chosen from fresh account reads.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "campaign_id": { "maxLength": 100, "minLength": 1, "type": "string" }, "adset_id": { "maxLength": 100, "minLength": 1, "type": "string" }, "settings_fingerprint": { "pattern": "^[0-9a-f]{64}$", "type": "string" } }, "required": [ "campaign_id", "adset_id", "settings_fingerprint" ], "type": "object" }, "FilterCondition": { "additionalProperties": false, "description": "Conditions combine with AND; their values combine with OR.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "field": { "enum": [ "name", "concept", "language", "format", "tags", "source", "imported_at" ], "type": "string" }, "operator": { "enum": [ "eq", "contains", "in", "gte", "lte" ], "type": "string" }, "values": { "items": { "type": "string" }, "maxItems": 100, "minItems": 1, "type": "array" } }, "required": [ "field", "operator", "values" ], "type": "object" }, "FilterSpec": { "additionalProperties": false, "description": "Versioned server filter definition.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "conditions": { "default": [], "items": { "$ref": "#/$defs/FilterCondition" }, "maxItems": 30, "type": "array" } }, "type": "object" }, "ManualGroup": { "additionalProperties": false, "description": "One stable user-assigned group over explicit creative families.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "group_key": { "maxLength": 200, "minLength": 1, "type": "string" }, "creative_ids": { "default": [], "items": { "format": "uuid", "type": "string" }, "maxItems": 1000, "type": "array" }, "targeting": { "anyOf": [ { "$ref": "#/$defs/TargetingConfig" }, { "type": "null" } ], "default": null }, "budget": { "anyOf": [ { "$ref": "#/$defs/BudgetConfig" }, { "type": "null" } ], "default": null } }, "required": [ "group_key" ], "type": "object" }, "ProviderLocation": { "additionalProperties": false, "description": "Exact location-search reference with optional city radius.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "kind": { "enum": [ "region", "city", "zip" ], "type": "string" }, "key": { "maxLength": 100, "minLength": 1, "type": "string" }, "radius": { "anyOf": [ { "exclusiveMinimum": 0, "maximum": 1000, "type": "integer" }, { "type": "null" } ], "default": null }, "distance_unit": { "anyOf": [ { "enum": [ "kilometer", "mile" ], "type": "string" }, { "type": "null" } ], "default": null } }, "required": [ "kind", "key" ], "type": "object" }, "ReplacementItem": { "additionalProperties": false, "description": "Fence one failed assignment and the exact approved corrected version.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "source_item_id": { "format": "uuid", "type": "string" }, "creative_version_id": { "format": "uuid", "type": "string" }, "expected_ad_attempt": { "minimum": 0, "type": "integer" } }, "required": [ "source_item_id", "creative_version_id", "expected_ad_attempt" ], "type": "object" }, "ReplacementSpec": { "additionalProperties": false, "description": "A new request links a bounded corrected subset to retained source history.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "launch_id": { "format": "uuid", "type": "string" }, "expected_version": { "minimum": 1, "type": "integer" }, "items": { "items": { "$ref": "#/$defs/ReplacementItem" }, "maxItems": 1000, "minItems": 1, "type": "array" } }, "required": [ "launch_id", "expected_version", "items" ], "type": "object" }, "RequestedStatus": { "description": "Requested provider status, distinct from actual delivery.", "enum": [ "PAUSED", "ACTIVE" ], "type": "string" }, "SelectionSpec": { "additionalProperties": false, "description": "Direct or pinned collection selection with explicit exclusions.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "kind": { "enum": [ "direct", "fixed", "smart" ], "type": "string" }, "creative_ids": { "default": [], "items": { "format": "uuid", "type": "string" }, "maxItems": 1000, "type": "array" }, "excluded_ids": { "default": [], "items": { "format": "uuid", "type": "string" }, "maxItems": 1000, "type": "array" }, "collection_id": { "anyOf": [ { "format": "uuid", "type": "string" }, { "type": "null" } ], "default": null }, "source_lock_version": { "anyOf": [ { "minimum": 1, "type": "integer" }, { "type": "null" } ], "default": null }, "filter_spec": { "anyOf": [ { "$ref": "#/$defs/FilterSpec" }, { "type": "null" } ], "default": null } }, "required": [ "kind" ], "type": "object" }, "TargetingConfig": { "additionalProperties": false, "description": "Country and audience controls with independent exclusions.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "countries": { "default": [], "items": { "type": "string" }, "type": "array" }, "excluded_countries": { "default": [], "items": { "type": "string" }, "type": "array" }, "included_locations": { "default": [], "items": { "$ref": "#/$defs/ProviderLocation" }, "maxItems": 100, "type": "array" }, "excluded_locations": { "default": [], "items": { "$ref": "#/$defs/ProviderLocation" }, "maxItems": 100, "type": "array" }, "genders": { "default": [], "items": { "enum": [ 1, 2 ], "type": "integer" }, "type": "array" }, "user_os": { "default": [], "items": { "type": "string" }, "maxItems": 10, "type": "array" }, "user_device": { "default": [], "items": { "type": "string" }, "maxItems": 100, "type": "array" }, "advantage_audience": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": null }, "custom_audiences": { "default": [], "items": { "type": "string" }, "type": "array" }, "excluded_custom_audiences": { "default": [], "items": { "type": "string" }, "type": "array" }, "locales": { "default": [], "items": { "type": "integer" }, "type": "array" }, "age_min": { "anyOf": [ { "maximum": 65, "minimum": 13, "type": "integer" }, { "type": "null" } ], "default": null }, "age_max": { "anyOf": [ { "maximum": 65, "minimum": 13, "type": "integer" }, { "type": "null" } ], "default": null }, "audience_semantics": { "default": "control", "enum": [ "control", "suggestion" ], "type": "string" } }, "type": "object" }, "WorkspaceLaunchSubmit": { "additionalProperties": false, "description": "Brandless public schema with legacy receipt parsing for exact retries.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "name": { "default": "Launch", "maxLength": 200, "minLength": 1, "type": "string" }, "request_key": { "maxLength": 200, "minLength": 1, "type": "string" }, "ad_account_id": { "format": "uuid", "type": "string" }, "operation": { "enum": [ "test", "promote", "refresh" ], "type": "string" }, "purpose": { "enum": [ "test", "scale" ], "type": "string" }, "template_version_id": { "format": "uuid", "type": "string" }, "selection": { "$ref": "#/$defs/SelectionSpec" }, "repeat_across_groups": { "default": false, "type": "boolean" }, "manual_groups": { "default": [], "items": { "$ref": "#/$defs/ManualGroup" }, "maxItems": 100, "type": "array" }, "requested_status": { "$ref": "#/$defs/RequestedStatus", "default": "PAUSED" }, "scheduled_at": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "default": null }, "source_launch_item_ids": { "default": [], "items": { "format": "uuid", "type": "string" }, "type": "array" }, "target": { "anyOf": [ { "$ref": "#/$defs/ExistingTargetSpec" }, { "type": "null" } ], "default": null }, "retest_reason": { "anyOf": [ { "maxLength": 2000, "minLength": 1, "type": "string" }, { "type": "null" } ], "default": null }, "replacement": { "anyOf": [ { "$ref": "#/$defs/ReplacementSpec" }, { "type": "null" } ], "default": null } }, "required": [ "request_key", "ad_account_id", "operation", "purpose", "template_version_id", "selection" ], "type": "object" }, "WorkspaceScheduleWrite": { "additionalProperties": false, "description": "Workspace content and an explicit account define future runs.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "name": { "maxLength": 200, "minLength": 1, "type": "string" }, "request": { "$ref": "#/$defs/WorkspaceLaunchSubmit" }, "cron_expression": { "maxLength": 100, "minLength": 9, "type": "string" }, "timezone": { "type": "string" }, "batch_limit": { "maximum": 1000, "minimum": 1, "type": "integer" }, "batch_budget_limit_minor": { "exclusiveMinimum": 0, "type": "integer" }, "enabled": { "default": true, "type": "boolean" } }, "required": [ "name", "request", "cron_expression", "timezone", "batch_limit", "batch_budget_limit_minor" ], "type": "object" } }, "additionalProperties": false, "properties": { "schedule_id": { "format": "uuid", "type": "string" }, "data": { "$ref": "#/$defs/WorkspaceScheduleWrite", "type": "object" }, "expected_version": { "minimum": 1, "type": "integer" } }, "required": [ "schedule_id", "data", "expected_version" ], "type": "object" } ``` ## launcher\_account\_limits\_get Read configured account-wide campaign and budget admission ceilings. **Access:** `mcp:read`. Object and function permissions also apply. | Parameter | Type | Required / default | Details | | - | - | - | - | | `ad_account_id` | uuid | Required | See input schema. | ```json theme={null} { "additionalProperties": false, "properties": { "ad_account_id": { "format": "uuid", "type": "string" } }, "required": [ "ad_account_id" ], "type": "object" } ``` ## launcher\_account\_limits\_update Set account ceilings; omit expected version only on initial configuration. **Access:** `mcp:read` plus `mcp:write`. Object and function permissions also apply. | Parameter | Type | Required / default | Details | | - | - | - | - | | `ad_account_id` | uuid | Required | See input schema. | | `data` | object | Required | Explicit currency exposure ceilings separate from subscription usage. | | `expected_version` | integer or null | `null` | See input schema. | ### data fields | Parameter | Type | Required / default | Details | | - | - | - | - | | `schema_version` | 1 | `1` | See input schema. | | `currency` | string | Required | pattern: `^[A-Z]{3}$`. | | `max_open_campaigns` | integer | Required | minimum: `0`. maximum: `1000000`. | | `max_daily_budget_minor` | integer | Required | minimum: `0`. maximum: `9223372036854775807`. | | `max_lifetime_commitment_minor` | integer | Required | minimum: `0`. maximum: `9223372036854775807`. | **Retries:** the tool does not advertise idempotent replay. Read the current state before repeating a write. ```json theme={null} { "$defs": { "AccountLimitsWrite": { "additionalProperties": false, "description": "Explicit currency exposure ceilings separate from subscription usage.", "properties": { "schema_version": { "const": 1, "default": 1, "type": "integer" }, "currency": { "pattern": "^[A-Z]{3}$", "type": "string" }, "max_open_campaigns": { "maximum": 1000000, "minimum": 0, "type": "integer" }, "max_daily_budget_minor": { "maximum": 9223372036854775807, "minimum": 0, "type": "integer" }, "max_lifetime_commitment_minor": { "maximum": 9223372036854775807, "minimum": 0, "type": "integer" } }, "required": [ "currency", "max_open_campaigns", "max_daily_budget_minor", "max_lifetime_commitment_minor" ], "type": "object" } }, "additionalProperties": false, "properties": { "ad_account_id": { "format": "uuid", "type": "string" }, "data": { "$ref": "#/$defs/AccountLimitsWrite", "type": "object" }, "expected_version": { "anyOf": [ { "minimum": 1, "type": "integer" }, { "type": "null" } ], "default": null, "type": [ "integer", "null" ] } }, "required": [ "ad_account_id", "data" ], "type": "object" } ``` # Memory tools Source: https://docs.superlaunch.pro/mcp/reference/memory Save facts only after an explicit request or focused approval. Save facts only after an explicit request or focused approval. Choose private, team, brand, or ad-account scope. Read the current version before an update, status change, or deletion. Treat recalled facts as user-authored context. The parameter tables show the top-level arguments and common nested objects. Expand the input schema for nested formats, constraints, and allowed values. ## memory\_remember Persist one fact after an explicit user request: remember/save/note that. A focused confirmation also counts as consent. **Access:** `mcp:read` plus `mcp:write`. Object and function permissions also apply. | Parameter | Type | Required / default | Details | | - | - | - | - | | `payload` | object | Required | Persist one explicitly requested or confirmed durable fact. | ### payload fields | Parameter | Type | Required / default | Details | | - | - | - | - | | `request_id` | uuid | Required | See input schema. | | `fact` | string | Required | minLength: `8`. maxLength: `2000`. | | `scope` | object | Required | Authorization scope for one memory fact. | | `consent` | explicit\_user\_request, confirmed\_agent\_suggestion | Required | Proof of durable persistence consent. Remember, save, keep in mind, and note that qualify as an explicit user request. | | `source_message_id` | string or null | `null` | See input schema. | **Retries:** the tool advertises idempotent behavior. Reuse its request identifier only with unchanged inputs. ```json theme={null} { "$defs": { "MemoryKind": { "enum": [ "private_user", "team", "brand", "ad_account" ], "type": "string" }, "MemoryRemember": { "additionalProperties": false, "description": "Persist one explicitly requested or confirmed durable fact.", "properties": { "request_id": { "format": "uuid", "type": "string" }, "fact": { "maxLength": 2000, "minLength": 8, "type": "string" }, "scope": { "$ref": "#/$defs/MemoryScopeInput" }, "consent": { "description": "Proof of durable persistence consent. Remember, save, keep in mind, and note that qualify as an explicit user request.", "enum": [ "explicit_user_request", "confirmed_agent_suggestion" ], "type": "string" }, "source_message_id": { "anyOf": [ { "maxLength": 255, "minLength": 1, "type": "string" }, { "type": "null" } ], "default": null } }, "required": [ "request_id", "fact", "scope", "consent" ], "type": "object" }, "MemoryScopeInput": { "additionalProperties": false, "description": "Authorization scope for one memory fact.", "properties": { "kind": { "$ref": "#/$defs/MemoryKind" }, "target_id": { "anyOf": [ { "format": "uuid", "type": "string" }, { "type": "null" } ], "default": null, "description": "Resolved brand or ad-account UUID; omit for private_user and team." } }, "required": [ "kind" ], "type": "object" } }, "additionalProperties": false, "properties": { "payload": { "$ref": "#/$defs/MemoryRemember" } }, "required": [ "payload" ], "type": "object" } ``` ## memory\_recall Recall semantically relevant user-authored context. Prefer top-level query and optional scope (kind and target\_id). Scope restricts recall to that scope only. Object and JSON-string scopes work. Alternatively supply the legacy payload; never mix the two formats. Without scope, use brand\_ids/ad\_account\_ids and include\_private/include\_team. **Access:** `mcp:read`. Object and function permissions also apply. | Parameter | Type | Required / default | Details | | - | - | - | - | | `payload` | object or null | `null` | See input schema. | | `query` | string or null | `null` | See input schema. | | `scope` | object or string or null | `null` | See input schema. | | `brand_ids` | array of uuid or null | `null` | See input schema. | | `ad_account_ids` | array of uuid or null | `null` | See input schema. | | `include_private` | boolean or null | `null` | See input schema. | | `include_team` | boolean or null | `null` | See input schema. | | `limit` | integer or null | `null` | See input schema. | ```json theme={null} { "$defs": { "MemoryKind": { "enum": [ "private_user", "team", "brand", "ad_account" ], "type": "string" }, "MemoryRecall": { "additionalProperties": false, "description": "Bounded semantic recall for the current conversation.", "properties": { "query": { "maxLength": 2000, "minLength": 1, "type": "string" }, "brand_ids": { "items": { "format": "uuid", "type": "string" }, "maxItems": 20, "type": "array" }, "ad_account_ids": { "items": { "format": "uuid", "type": "string" }, "maxItems": 20, "type": "array" }, "include_private": { "default": true, "type": "boolean" }, "include_team": { "default": true, "type": "boolean" }, "limit": { "default": 5, "maximum": 8, "minimum": 1, "type": "integer" } }, "required": [ "query" ], "type": "object" }, "MemoryScopeInput": { "additionalProperties": false, "description": "Authorization scope for one memory fact.", "properties": { "kind": { "$ref": "#/$defs/MemoryKind" }, "target_id": { "anyOf": [ { "format": "uuid", "type": "string" }, { "type": "null" } ], "default": null, "description": "Resolved brand or ad-account UUID; omit for private_user and team." } }, "required": [ "kind" ], "type": "object" }, "RecallScope": { "anyOf": [ { "$ref": "#/$defs/MemoryScopeInput" }, { "contentMediaType": "application/json", "contentSchema": { "$ref": "#/$defs/MemoryScopeInput" }, "type": "string" } ] } }, "additionalProperties": false, "properties": { "payload": { "anyOf": [ { "$ref": "#/$defs/MemoryRecall" }, { "type": "null" } ], "default": null, "type": [ "object", "null" ] }, "query": { "anyOf": [ { "maxLength": 2000, "minLength": 1, "type": "string" }, { "type": "null" } ], "default": null, "type": [ "string", "null" ] }, "scope": { "anyOf": [ { "$ref": "#/$defs/RecallScope" }, { "type": "null" } ], "default": null, "type": [ "object", "string", "null" ] }, "brand_ids": { "anyOf": [ { "items": { "format": "uuid", "type": "string" }, "maxItems": 20, "type": "array" }, { "type": "null" } ], "default": null, "type": [ "array", "null" ] }, "ad_account_ids": { "anyOf": [ { "items": { "format": "uuid", "type": "string" }, "maxItems": 20, "type": "array" }, { "type": "null" } ], "default": null, "type": [ "array", "null" ] }, "include_private": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": null, "type": [ "boolean", "null" ] }, "include_team": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": null, "type": [ "boolean", "null" ] }, "limit": { "anyOf": [ { "maximum": 8, "minimum": 1, "type": "integer" }, { "type": "null" } ], "default": null, "type": [ "integer", "null" ] } }, "type": "object" } ``` ## memory\_get Read one exact authorized memory by ID. **Access:** `mcp:read`. Object and function permissions also apply. | Parameter | Type | Required / default | Details | | - | - | - | - | | `payload` | object | Required | See input schema. | ### payload fields | Parameter | Type | Required / default | Details | | - | - | - | - | | `memory_id` | uuid | Required | See input schema. | ```json theme={null} { "$defs": { "MemoryGet": { "additionalProperties": false, "properties": { "memory_id": { "format": "uuid", "type": "string" } }, "required": [ "memory_id" ], "type": "object" } }, "additionalProperties": false, "properties": { "payload": { "$ref": "#/$defs/MemoryGet" } }, "required": [ "payload" ], "type": "object" } ``` ## memory\_list List one memory page with an optional scope filter. **Access:** `mcp:read`. Object and function permissions also apply. | Parameter | Type | Required / default | Details | | - | - | - | - | | `payload` | object | Required | See input schema. | ### payload fields | Parameter | Type | Required / default | Details | | - | - | - | - | | `kind` | private\_user, team, brand, ad\_account or null | `null` | See input schema. | | `target_id` | uuid or null | `null` | See input schema. | | `limit` | integer | `25` | minimum: `1`. maximum: `100`. | | `cursor` | integer | `0` | minimum: `0`. | ```json theme={null} { "$defs": { "MemoryKind": { "enum": [ "private_user", "team", "brand", "ad_account" ], "type": "string" }, "MemoryList": { "additionalProperties": false, "properties": { "kind": { "anyOf": [ { "$ref": "#/$defs/MemoryKind" }, { "type": "null" } ], "default": null }, "target_id": { "anyOf": [ { "format": "uuid", "type": "string" }, { "type": "null" } ], "default": null }, "limit": { "default": 25, "maximum": 100, "minimum": 1, "type": "integer" }, "cursor": { "default": 0, "minimum": 0, "type": "integer" } }, "type": "object" } }, "additionalProperties": false, "properties": { "payload": { "$ref": "#/$defs/MemoryList" } }, "required": [ "payload" ], "type": "object" } ``` ## memory\_update Idempotently replace one memory using its current version. **Access:** `mcp:read` plus `mcp:write`. Object and function permissions also apply. | Parameter | Type | Required / default | Details | | - | - | - | - | | `payload` | object | Required | See input schema. | ### payload fields | Parameter | Type | Required / default | Details | | - | - | - | - | | `memory_id` | uuid | Required | See input schema. | | `request_id` | uuid | Required | See input schema. | | `expected_version` | integer | Required | minimum: `1`. | | `fact` | string | Required | minLength: `8`. maxLength: `2000`. | | `expires_at` | date-time or null | `null` | See input schema. | **Retries:** the tool advertises idempotent behavior. Reuse its request identifier only with unchanged inputs. ```json theme={null} { "$defs": { "MemoryUpdate": { "additionalProperties": false, "properties": { "memory_id": { "format": "uuid", "type": "string" }, "request_id": { "format": "uuid", "type": "string" }, "expected_version": { "minimum": 1, "type": "integer" }, "fact": { "maxLength": 2000, "minLength": 8, "type": "string" }, "expires_at": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "default": null } }, "required": [ "memory_id", "request_id", "expected_version", "fact" ], "type": "object" } }, "additionalProperties": false, "properties": { "payload": { "$ref": "#/$defs/MemoryUpdate" } }, "required": [ "payload" ], "type": "object" } ``` ## memory\_set\_enabled Idempotently enable or disable one memory for future retrieval. **Access:** `mcp:read` plus `mcp:write`. Object and function permissions also apply. | Parameter | Type | Required / default | Details | | - | - | - | - | | `payload` | object | Required | See input schema. | ### payload fields | Parameter | Type | Required / default | Details | | - | - | - | - | | `memory_id` | uuid | Required | See input schema. | | `request_id` | uuid | Required | See input schema. | | `expected_version` | integer | Required | minimum: `1`. | | `enabled` | boolean | Required | See input schema. | **Retries:** the tool advertises idempotent behavior. Reuse its request identifier only with unchanged inputs. ```json theme={null} { "$defs": { "MemorySetEnabled": { "additionalProperties": false, "properties": { "memory_id": { "format": "uuid", "type": "string" }, "request_id": { "format": "uuid", "type": "string" }, "expected_version": { "minimum": 1, "type": "integer" }, "enabled": { "type": "boolean" } }, "required": [ "memory_id", "request_id", "expected_version", "enabled" ], "type": "object" } }, "additionalProperties": false, "properties": { "payload": { "$ref": "#/$defs/MemorySetEnabled" } }, "required": [ "payload" ], "type": "object" } ``` ## memory\_forget Idempotently and permanently forget one memory after user approval. **Access:** `mcp:read` plus `mcp:write`. Object and function permissions also apply. | Parameter | Type | Required / default | Details | | - | - | - | - | | `payload` | object | Required | See input schema. | ### payload fields | Parameter | Type | Required / default | Details | | - | - | - | - | | `memory_id` | uuid | Required | See input schema. | | `request_id` | uuid | Required | See input schema. | | `expected_version` | integer | Required | minimum: `1`. | **Retries:** the tool advertises idempotent behavior. Reuse its request identifier only with unchanged inputs. ```json theme={null} { "$defs": { "MemoryForget": { "additionalProperties": false, "properties": { "memory_id": { "format": "uuid", "type": "string" }, "request_id": { "format": "uuid", "type": "string" }, "expected_version": { "minimum": 1, "type": "integer" } }, "required": [ "memory_id", "request_id", "expected_version" ], "type": "object" } }, "additionalProperties": false, "properties": { "payload": { "$ref": "#/$defs/MemoryForget" } }, "required": [ "payload" ], "type": "object" } ``` # Rule tools Source: https://docs.superlaunch.pro/mcp/reference/rules Read `rules_schema` for the current rule vocabulary. Read `rules_schema` for the current rule vocabulary. Read the current rule version before an update. `rules_update` replaces the definition. `rules_run` defaults to dry-run mode. The parameter tables show the top-level arguments and common nested objects. Expand the input schema for nested formats, constraints, and allowed values. ## rules\_schema Return the rule-builder vocabulary and write requirements. **Access:** `mcp:read`. Object and function permissions also apply. **Arguments:** none. ```json theme={null} { "additionalProperties": false, "properties": {}, "type": "object" } ``` ## rules\_list List rules whose complete target set is readable. **Access:** `mcp:read`. Object and function permissions also apply. | Parameter | Type | Required / default | Details | | - | - | - | - | | `limit` | integer | `25` | See input schema. | ```json theme={null} { "additionalProperties": false, "properties": { "limit": { "default": 25, "type": "integer" } }, "type": "object" } ``` ## rules\_get Read the complete current rule definition for a lossless replacement. **Access:** `mcp:read`. Object and function permissions also apply. | Parameter | Type | Required / default | Details | | - | - | - | - | | `rule_id` | uuid | Required | See input schema. | ```json theme={null} { "additionalProperties": false, "properties": { "rule_id": { "format": "uuid", "type": "string" } }, "required": [ "rule_id" ], "type": "object" } ``` ## rules\_create Create one rule after target and functional authorization. **Access:** `mcp:read` plus `mcp:write`. Object and function permissions also apply. | Parameter | Type | Required / default | Details | | - | - | - | - | | `payload` | object | Required | Complete canonical rule create request. | ### payload fields | Parameter | Type | Required / default | Details | | - | - | - | - | | `request_id` | uuid | Required | See input schema. | | `name` | string | Required | minLength: `1`. maxLength: `300`. | | `provider` | string | `"meta"` | minLength: `1`. maxLength: `64`. | | `status` | draft, active, paused | `"draft"` | See input schema. | | `ad_account_ids` | array of uuid | Required | minItems: `1`. maxItems: `20`. | | `level` | campaign, adset, ad | `"ad"` | Advertising hierarchy levels that rules may target. | | `target_filter` | object | Required | Nested target predicates. | | `tasks` | array of object | Required | minItems: `1`. maxItems: `20`. | | `schedule` | object | Required | Validated cron schedule and IANA timezone. | | `execution_limit` | object or null | `null` | See input schema. | | `dry_run` | boolean | `true` | See input schema. | | `metadata` | object | Optional | See input schema. | **Retries:** the tool does not advertise idempotent replay. Read the current state before repeating a write. ```json theme={null} { "$defs": { "ConditionNode": { "additionalProperties": false, "description": "Condition or group node with explicit discriminating kind.", "properties": { "kind": { "enum": [ "condition", "group" ], "type": "string" }, "metric": { "anyOf": [ { "$ref": "#/$defs/MetricReferenceInput" }, { "$ref": "#/$defs/RuleMetricId" }, { "type": "null" } ], "default": null }, "timeframe": { "anyOf": [ { "$ref": "#/$defs/MetricTimeframeInput" }, { "type": "string" }, { "type": "null" } ], "default": null }, "operator": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null }, "value": { "default": null, "title": "Value" }, "combinator": { "anyOf": [ { "enum": [ "and", "or" ], "type": "string" }, { "type": "null" } ], "default": null }, "children": { "items": { "$ref": "#/$defs/ConditionNode" }, "maxItems": 50, "type": "array" } }, "required": [ "kind" ], "type": "object" }, "DecreaseBudgetActionParameters": { "additionalProperties": false, "description": "Decrease parameters with an explicit account-currency floor.", "properties": { "mode": { "enum": [ "percent", "absolute" ], "type": "string" }, "value": { "description": "Percent when mode is percent; major account-currency units when absolute.", "exclusiveMinimum": 0, "type": "number" }, "min_daily_budget": { "description": "Minimum allowed budget in major account-currency units (for USD, 100 means $100).", "exclusiveMinimum": 0, "type": "number" } }, "required": [ "mode", "value", "min_daily_budget" ], "type": "object" }, "DecreaseBudgetRuleAction": { "additionalProperties": false, "description": "Budget decrease that cannot fall below its mandatory floor.", "properties": { "type": { "const": "decrease_budget", "type": "string" }, "params": { "$ref": "#/$defs/DecreaseBudgetActionParameters" } }, "required": [ "type", "params" ], "type": "object" }, "IncreaseBudgetActionParameters": { "additionalProperties": false, "description": "Increase parameters with an explicit account-currency ceiling.", "properties": { "mode": { "enum": [ "percent", "absolute" ], "type": "string" }, "value": { "description": "Percent when mode is percent; major account-currency units when absolute.", "exclusiveMinimum": 0, "type": "number" }, "max_daily_budget": { "description": "Maximum allowed budget in major account-currency units (for USD, 100 means $100).", "exclusiveMinimum": 0, "type": "number" } }, "required": [ "mode", "value", "max_daily_budget" ], "type": "object" }, "IncreaseBudgetRuleAction": { "additionalProperties": false, "description": "Budget increase that cannot exceed its mandatory ceiling.", "properties": { "type": { "const": "increase_budget", "type": "string" }, "params": { "$ref": "#/$defs/IncreaseBudgetActionParameters" } }, "required": [ "type", "params" ], "type": "object" }, "MetricReferenceInput": { "additionalProperties": false, "description": "Immutable provider metric selector.", "properties": { "id": { "$ref": "#/$defs/RuleMetricId" }, "source_metric": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null }, "action_type": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null }, "attribution_window": { "default": "value", "enum": [ "value", "1d_click", "7d_click", "1d_view" ], "type": "string" } }, "required": [ "id" ], "type": "object" }, "MetricTimeframeInput": { "additionalProperties": false, "description": "Today or bounded rolling-day window.", "properties": { "kind": { "enum": [ "today", "rolling_days" ], "type": "string" }, "days": { "default": 1, "maximum": 365, "minimum": 1, "type": "integer" } }, "required": [ "kind" ], "type": "object" }, "OtherRuleAction": { "additionalProperties": false, "description": "One non-relative-budget action validated again by Core.", "properties": { "type": { "enum": [ "set_budget", "set_status", "add_tag", "remove_tag", "replace_tag", "edit_name", "duplicate" ], "type": "string" }, "params": { "additionalProperties": true, "type": "object" } }, "required": [ "type" ], "type": "object" }, "RuleAction": { "discriminator": { "mapping": { "add_tag": "#/$defs/OtherRuleAction", "decrease_budget": "#/$defs/DecreaseBudgetRuleAction", "duplicate": "#/$defs/OtherRuleAction", "edit_name": "#/$defs/OtherRuleAction", "increase_budget": "#/$defs/IncreaseBudgetRuleAction", "remove_tag": "#/$defs/OtherRuleAction", "replace_tag": "#/$defs/OtherRuleAction", "set_budget": "#/$defs/OtherRuleAction", "set_status": "#/$defs/OtherRuleAction" }, "propertyName": "type" }, "oneOf": [ { "$ref": "#/$defs/IncreaseBudgetRuleAction" }, { "$ref": "#/$defs/DecreaseBudgetRuleAction" }, { "$ref": "#/$defs/OtherRuleAction" } ] }, "RuleCreate": { "additionalProperties": false, "description": "Complete canonical rule create request.", "properties": { "request_id": { "format": "uuid", "type": "string" }, "name": { "maxLength": 300, "minLength": 1, "type": "string" }, "provider": { "default": "meta", "maxLength": 64, "minLength": 1, "type": "string" }, "status": { "default": "draft", "enum": [ "draft", "active", "paused" ], "type": "string" }, "ad_account_ids": { "items": { "format": "uuid", "type": "string" }, "maxItems": 20, "minItems": 1, "type": "array" }, "level": { "$ref": "#/$defs/RuleTargetLevel", "default": "ad" }, "target_filter": { "$ref": "#/$defs/TargetFilterGroup" }, "tasks": { "items": { "$ref": "#/$defs/RuleTask" }, "maxItems": 20, "minItems": 1, "type": "array" }, "schedule": { "$ref": "#/$defs/RuleSchedule" }, "execution_limit": { "anyOf": [ { "$ref": "#/$defs/RuleExecutionLimit" }, { "type": "null" } ], "default": null }, "dry_run": { "default": true, "type": "boolean" }, "metadata": { "additionalProperties": true, "type": "object" } }, "required": [ "request_id", "name", "ad_account_ids", "target_filter", "tasks", "schedule" ], "type": "object" }, "RuleExecutionLimit": { "additionalProperties": false, "description": "Per-rule/per-asset execution capacity inside a rolling window.", "properties": { "max_executions": { "maximum": 100000, "minimum": 1, "type": "integer" }, "window_seconds": { "maximum": 31536000, "minimum": 1, "type": "integer" }, "scope": { "const": "rule_asset", "default": "rule_asset", "type": "string" } }, "required": [ "max_executions", "window_seconds" ], "type": "object" }, "RuleMetricId": { "enum": [ "spend", "impressions", "frequency", "cpm", "inline_link_clicks", "meta.action:landing_page_view", "ctr", "cpc", "leads", "add_to_carts", "meta.action:initiate_checkout", "purchases", "purchase_value", "cpa", "roas" ], "minLength": 1, "type": "string" }, "RuleSchedule": { "additionalProperties": false, "description": "Validated cron schedule and IANA timezone.", "properties": { "cron": { "maxLength": 100, "minLength": 1, "type": "string" }, "timezone": { "maxLength": 100, "minLength": 1, "type": "string" } }, "required": [ "cron", "timezone" ], "type": "object" }, "RuleTargetLevel": { "description": "Advertising hierarchy levels that rules may target.", "enum": [ "campaign", "adset", "ad" ], "type": "string" }, "RuleTask": { "additionalProperties": false, "description": "Ordered first-match rule task.", "properties": { "id": { "format": "uuid", "type": "string" }, "name": { "anyOf": [ { "maxLength": 300, "type": "string" }, { "type": "null" } ], "default": null }, "active_only": { "default": true, "type": "boolean" }, "conditions": { "$ref": "#/$defs/ConditionNode" }, "actions": { "items": { "$ref": "#/$defs/RuleAction" }, "maxItems": 10, "minItems": 1, "type": "array" } }, "required": [ "id", "conditions", "actions" ], "type": "object" }, "TargetFilterGroup": { "additionalProperties": false, "description": "Nested target predicates.", "properties": { "kind": { "const": "group", "default": "group", "type": "string" }, "combinator": { "default": "and", "enum": [ "and", "or" ], "type": "string" }, "children": { "items": { "discriminator": { "mapping": { "filter": "#/$defs/TargetFilterPredicate", "group": "#/$defs/TargetFilterGroup" }, "propertyName": "kind" }, "oneOf": [ { "$ref": "#/$defs/TargetFilterPredicate" }, { "$ref": "#/$defs/TargetFilterGroup" } ] }, "maxItems": 50, "type": "array" } }, "type": "object" }, "TargetFilterPredicate": { "additionalProperties": false, "description": "One provider-neutral target predicate.", "properties": { "kind": { "const": "filter", "type": "string" }, "attribute": { "maxLength": 100, "minLength": 1, "type": "string" }, "operator": { "maxLength": 50, "minLength": 1, "type": "string" }, "value": {}, "scope": { "default": "self", "enum": [ "self", "ancestor" ], "type": "string" }, "level": { "anyOf": [ { "$ref": "#/$defs/RuleTargetLevel" }, { "type": "null" } ], "default": null } }, "required": [ "kind", "attribute", "operator", "value" ], "type": "object" } }, "additionalProperties": false, "properties": { "payload": { "$ref": "#/$defs/RuleCreate", "type": "object" } }, "required": [ "payload" ], "type": "object" } ``` ## rules\_update Replace one rule; first read it and preserve every unchanged field. **Access:** `mcp:read` plus `mcp:write`. Object and function permissions also apply. | Parameter | Type | Required / default | Details | | - | - | - | - | | `rule_id` | uuid | Required | See input schema. | | `payload` | object | Required | See input schema. | ### payload fields | Parameter | Type | Required / default | Details | | - | - | - | - | | `request_id` | uuid | Required | See input schema. | | `name` | string | Required | minLength: `1`. maxLength: `300`. | | `provider` | string | `"meta"` | minLength: `1`. maxLength: `64`. | | `status` | draft, active, paused | `"draft"` | See input schema. | | `ad_account_ids` | array of uuid | Required | minItems: `1`. maxItems: `20`. | | `level` | campaign, adset, ad | `"ad"` | Advertising hierarchy levels that rules may target. | | `target_filter` | object | Required | Nested target predicates. | | `tasks` | array of object | Required | minItems: `1`. maxItems: `20`. | | `schedule` | object | Required | Validated cron schedule and IANA timezone. | | `execution_limit` | object or null | `null` | See input schema. | | `dry_run` | boolean | `true` | See input schema. | | `metadata` | object | Optional | See input schema. | | `expected_version` | integer | Required | minimum: `1`. | **Retries:** the tool does not advertise idempotent replay. Read the current state before repeating a write. ```json theme={null} { "$defs": { "ConditionNode": { "additionalProperties": false, "description": "Condition or group node with explicit discriminating kind.", "properties": { "kind": { "enum": [ "condition", "group" ], "type": "string" }, "metric": { "anyOf": [ { "$ref": "#/$defs/MetricReferenceInput" }, { "$ref": "#/$defs/RuleMetricId" }, { "type": "null" } ], "default": null }, "timeframe": { "anyOf": [ { "$ref": "#/$defs/MetricTimeframeInput" }, { "type": "string" }, { "type": "null" } ], "default": null }, "operator": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null }, "value": { "default": null, "title": "Value" }, "combinator": { "anyOf": [ { "enum": [ "and", "or" ], "type": "string" }, { "type": "null" } ], "default": null }, "children": { "items": { "$ref": "#/$defs/ConditionNode" }, "maxItems": 50, "type": "array" } }, "required": [ "kind" ], "type": "object" }, "DecreaseBudgetActionParameters": { "additionalProperties": false, "description": "Decrease parameters with an explicit account-currency floor.", "properties": { "mode": { "enum": [ "percent", "absolute" ], "type": "string" }, "value": { "description": "Percent when mode is percent; major account-currency units when absolute.", "exclusiveMinimum": 0, "type": "number" }, "min_daily_budget": { "description": "Minimum allowed budget in major account-currency units (for USD, 100 means $100).", "exclusiveMinimum": 0, "type": "number" } }, "required": [ "mode", "value", "min_daily_budget" ], "type": "object" }, "DecreaseBudgetRuleAction": { "additionalProperties": false, "description": "Budget decrease that cannot fall below its mandatory floor.", "properties": { "type": { "const": "decrease_budget", "type": "string" }, "params": { "$ref": "#/$defs/DecreaseBudgetActionParameters" } }, "required": [ "type", "params" ], "type": "object" }, "IncreaseBudgetActionParameters": { "additionalProperties": false, "description": "Increase parameters with an explicit account-currency ceiling.", "properties": { "mode": { "enum": [ "percent", "absolute" ], "type": "string" }, "value": { "description": "Percent when mode is percent; major account-currency units when absolute.", "exclusiveMinimum": 0, "type": "number" }, "max_daily_budget": { "description": "Maximum allowed budget in major account-currency units (for USD, 100 means $100).", "exclusiveMinimum": 0, "type": "number" } }, "required": [ "mode", "value", "max_daily_budget" ], "type": "object" }, "IncreaseBudgetRuleAction": { "additionalProperties": false, "description": "Budget increase that cannot exceed its mandatory ceiling.", "properties": { "type": { "const": "increase_budget", "type": "string" }, "params": { "$ref": "#/$defs/IncreaseBudgetActionParameters" } }, "required": [ "type", "params" ], "type": "object" }, "MetricReferenceInput": { "additionalProperties": false, "description": "Immutable provider metric selector.", "properties": { "id": { "$ref": "#/$defs/RuleMetricId" }, "source_metric": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null }, "action_type": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null }, "attribution_window": { "default": "value", "enum": [ "value", "1d_click", "7d_click", "1d_view" ], "type": "string" } }, "required": [ "id" ], "type": "object" }, "MetricTimeframeInput": { "additionalProperties": false, "description": "Today or bounded rolling-day window.", "properties": { "kind": { "enum": [ "today", "rolling_days" ], "type": "string" }, "days": { "default": 1, "maximum": 365, "minimum": 1, "type": "integer" } }, "required": [ "kind" ], "type": "object" }, "OtherRuleAction": { "additionalProperties": false, "description": "One non-relative-budget action validated again by Core.", "properties": { "type": { "enum": [ "set_budget", "set_status", "add_tag", "remove_tag", "replace_tag", "edit_name", "duplicate" ], "type": "string" }, "params": { "additionalProperties": true, "type": "object" } }, "required": [ "type" ], "type": "object" }, "RuleAction": { "discriminator": { "mapping": { "add_tag": "#/$defs/OtherRuleAction", "decrease_budget": "#/$defs/DecreaseBudgetRuleAction", "duplicate": "#/$defs/OtherRuleAction", "edit_name": "#/$defs/OtherRuleAction", "increase_budget": "#/$defs/IncreaseBudgetRuleAction", "remove_tag": "#/$defs/OtherRuleAction", "replace_tag": "#/$defs/OtherRuleAction", "set_budget": "#/$defs/OtherRuleAction", "set_status": "#/$defs/OtherRuleAction" }, "propertyName": "type" }, "oneOf": [ { "$ref": "#/$defs/IncreaseBudgetRuleAction" }, { "$ref": "#/$defs/DecreaseBudgetRuleAction" }, { "$ref": "#/$defs/OtherRuleAction" } ] }, "RuleExecutionLimit": { "additionalProperties": false, "description": "Per-rule/per-asset execution capacity inside a rolling window.", "properties": { "max_executions": { "maximum": 100000, "minimum": 1, "type": "integer" }, "window_seconds": { "maximum": 31536000, "minimum": 1, "type": "integer" }, "scope": { "const": "rule_asset", "default": "rule_asset", "type": "string" } }, "required": [ "max_executions", "window_seconds" ], "type": "object" }, "RuleMetricId": { "enum": [ "spend", "impressions", "frequency", "cpm", "inline_link_clicks", "meta.action:landing_page_view", "ctr", "cpc", "leads", "add_to_carts", "meta.action:initiate_checkout", "purchases", "purchase_value", "cpa", "roas" ], "minLength": 1, "type": "string" }, "RuleSchedule": { "additionalProperties": false, "description": "Validated cron schedule and IANA timezone.", "properties": { "cron": { "maxLength": 100, "minLength": 1, "type": "string" }, "timezone": { "maxLength": 100, "minLength": 1, "type": "string" } }, "required": [ "cron", "timezone" ], "type": "object" }, "RuleTargetLevel": { "description": "Advertising hierarchy levels that rules may target.", "enum": [ "campaign", "adset", "ad" ], "type": "string" }, "RuleTask": { "additionalProperties": false, "description": "Ordered first-match rule task.", "properties": { "id": { "format": "uuid", "type": "string" }, "name": { "anyOf": [ { "maxLength": 300, "type": "string" }, { "type": "null" } ], "default": null }, "active_only": { "default": true, "type": "boolean" }, "conditions": { "$ref": "#/$defs/ConditionNode" }, "actions": { "items": { "$ref": "#/$defs/RuleAction" }, "maxItems": 10, "minItems": 1, "type": "array" } }, "required": [ "id", "conditions", "actions" ], "type": "object" }, "RuleUpdate": { "additionalProperties": false, "properties": { "request_id": { "format": "uuid", "type": "string" }, "name": { "maxLength": 300, "minLength": 1, "type": "string" }, "provider": { "default": "meta", "maxLength": 64, "minLength": 1, "type": "string" }, "status": { "default": "draft", "enum": [ "draft", "active", "paused" ], "type": "string" }, "ad_account_ids": { "items": { "format": "uuid", "type": "string" }, "maxItems": 20, "minItems": 1, "type": "array" }, "level": { "$ref": "#/$defs/RuleTargetLevel", "default": "ad" }, "target_filter": { "$ref": "#/$defs/TargetFilterGroup" }, "tasks": { "items": { "$ref": "#/$defs/RuleTask" }, "maxItems": 20, "minItems": 1, "type": "array" }, "schedule": { "$ref": "#/$defs/RuleSchedule" }, "execution_limit": { "anyOf": [ { "$ref": "#/$defs/RuleExecutionLimit" }, { "type": "null" } ], "default": null }, "dry_run": { "default": true, "type": "boolean" }, "metadata": { "additionalProperties": true, "type": "object" }, "expected_version": { "minimum": 1, "type": "integer" } }, "required": [ "request_id", "name", "ad_account_ids", "target_filter", "tasks", "schedule", "expected_version" ], "type": "object" }, "TargetFilterGroup": { "additionalProperties": false, "description": "Nested target predicates.", "properties": { "kind": { "const": "group", "default": "group", "type": "string" }, "combinator": { "default": "and", "enum": [ "and", "or" ], "type": "string" }, "children": { "items": { "discriminator": { "mapping": { "filter": "#/$defs/TargetFilterPredicate", "group": "#/$defs/TargetFilterGroup" }, "propertyName": "kind" }, "oneOf": [ { "$ref": "#/$defs/TargetFilterPredicate" }, { "$ref": "#/$defs/TargetFilterGroup" } ] }, "maxItems": 50, "type": "array" } }, "type": "object" }, "TargetFilterPredicate": { "additionalProperties": false, "description": "One provider-neutral target predicate.", "properties": { "kind": { "const": "filter", "type": "string" }, "attribute": { "maxLength": 100, "minLength": 1, "type": "string" }, "operator": { "maxLength": 50, "minLength": 1, "type": "string" }, "value": {}, "scope": { "default": "self", "enum": [ "self", "ancestor" ], "type": "string" }, "level": { "anyOf": [ { "$ref": "#/$defs/RuleTargetLevel" }, { "type": "null" } ], "default": null } }, "required": [ "kind", "attribute", "operator", "value" ], "type": "object" } }, "additionalProperties": false, "properties": { "rule_id": { "format": "uuid", "type": "string" }, "payload": { "$ref": "#/$defs/RuleUpdate", "type": "object" } }, "required": [ "rule_id", "payload" ], "type": "object" } ``` ## rules\_change\_status Change rule status after current target authorization. **Access:** `mcp:read` plus `mcp:write`. Object and function permissions also apply. | Parameter | Type | Required / default | Details | | - | - | - | - | | `rule_id` | uuid | Required | See input schema. | | `expected_version` | integer | Required | See input schema. | | `status` | string | Required | See input schema. | | `request_id` | uuid | Required | See input schema. | **Retries:** the tool does not advertise idempotent replay. Read the current state before repeating a write. ```json theme={null} { "additionalProperties": false, "properties": { "rule_id": { "format": "uuid", "type": "string" }, "expected_version": { "type": "integer" }, "status": { "type": "string" }, "request_id": { "format": "uuid", "type": "string" } }, "required": [ "rule_id", "expected_version", "status", "request_id" ], "type": "object" } ``` ## rules\_delete Archive one authorized rule. **Access:** `mcp:read` plus `mcp:write`. Object and function permissions also apply. | Parameter | Type | Required / default | Details | | - | - | - | - | | `rule_id` | uuid | Required | See input schema. | | `expected_version` | integer | Required | See input schema. | | `request_id` | uuid | Required | See input schema. | **Retries:** the tool does not advertise idempotent replay. Read the current state before repeating a write. ```json theme={null} { "additionalProperties": false, "properties": { "rule_id": { "format": "uuid", "type": "string" }, "expected_version": { "type": "integer" }, "request_id": { "format": "uuid", "type": "string" } }, "required": [ "rule_id", "expected_version", "request_id" ], "type": "object" } ``` ## rules\_changes List immutable changes for an authorized rule. **Access:** `mcp:read`. Object and function permissions also apply. | Parameter | Type | Required / default | Details | | - | - | - | - | | `rule_id` | uuid | Required | See input schema. | | `limit` | integer | `25` | See input schema. | ```json theme={null} { "additionalProperties": false, "properties": { "rule_id": { "format": "uuid", "type": "string" }, "limit": { "default": 25, "type": "integer" } }, "required": [ "rule_id" ], "type": "object" } ``` ## rules\_run Accept one idempotent durable rule run. **Access:** `mcp:read` plus `mcp:write`. Object and function permissions also apply. | Parameter | Type | Required / default | Details | | - | - | - | - | | `rule_id` | uuid | Required | See input schema. | | `version` | integer | Required | See input schema. | | `request_id` | uuid | Required | See input schema. | | `dry_run` | boolean | `true` | See input schema. | **Retries:** the tool advertises idempotent behavior. Reuse its request identifier only with unchanged inputs. ```json theme={null} { "additionalProperties": false, "properties": { "rule_id": { "format": "uuid", "type": "string" }, "version": { "type": "integer" }, "request_id": { "format": "uuid", "type": "string" }, "dry_run": { "default": true, "type": "boolean" } }, "required": [ "rule_id", "version", "request_id" ], "type": "object" } ``` ## rule\_runs\_list List authorized rule runs. **Access:** `mcp:read`. Object and function permissions also apply. | Parameter | Type | Required / default | Details | | - | - | - | - | | `limit` | integer | `25` | See input schema. | ```json theme={null} { "additionalProperties": false, "properties": { "limit": { "default": 25, "type": "integer" } }, "type": "object" } ``` ## rule\_runs\_get Read one authorized rule run. **Access:** `mcp:read`. Object and function permissions also apply. | Parameter | Type | Required / default | Details | | - | - | - | - | | `run_id` | uuid | Required | See input schema. | ```json theme={null} { "additionalProperties": false, "properties": { "run_id": { "format": "uuid", "type": "string" } }, "required": [ "run_id" ], "type": "object" } ``` ## rule\_activity\_list List authorized rule activity records. **Access:** `mcp:read`. Object and function permissions also apply. | Parameter | Type | Required / default | Details | | - | - | - | - | | `limit` | integer | `25` | See input schema. | ```json theme={null} { "additionalProperties": false, "properties": { "limit": { "default": 25, "type": "integer" } }, "type": "object" } ``` ## rule\_activity\_get Read one authorized rule activity record. **Access:** `mcp:read`. Object and function permissions also apply. | Parameter | Type | Required / default | Details | | - | - | - | - | | `activity_id` | uuid | Required | See input schema. | ```json theme={null} { "additionalProperties": false, "properties": { "activity_id": { "format": "uuid", "type": "string" } }, "required": [ "activity_id" ], "type": "object" } ``` ## rule\_activity\_summary Return a activity summary for one authorized rule. **Access:** `mcp:read`. Object and function permissions also apply. | Parameter | Type | Required / default | Details | | - | - | - | - | | `rule_id` | uuid | Required | See input schema. | ```json theme={null} { "additionalProperties": false, "properties": { "rule_id": { "format": "uuid", "type": "string" } }, "required": [ "rule_id" ], "type": "object" } ``` # MCP tool index Source: https://docs.superlaunch.pro/mcp/tools Find all 97 documented MCP tools by task, with access requirements and parameter references. Find a tool by name or task. This reference covers the 97 tools registered in the source catalog checked on October 13, 2026. Your client may expose a subset based on OAuth scopes, client settings, and feature availability. ## Calling tools Use an MCP client with [OAuth authorization](/mcp/authentication). The JSON examples are argument objects for named tools. They are not standalone HTTP bodies. A parameter named `payload`, `request`, `data`, `family`, or `content` must keep that nesting. Read tools require `mcp:read`. Write tools also require `mcp:write` and the relevant workspace, account, and functional permissions. A read-only annotation describes the tool's intended effects; it does not bypass access checks. [Argument examples](/mcp/examples) show valid input shapes for common tasks. See [IDs and retries](/concepts/ids-and-versions) before issuing writes. ## Accounts, assets, and brands | Tool | Access | Purpose | | - | - | - | | [`ad_accounts_list`](/mcp/reference/accounts-brands#ad-accounts-list) | Read | List ad accounts the current user may read. | | [`ad_accounts_get`](/mcp/reference/accounts-brands#ad-accounts-get) | Read | Read one authorized ad account. | | [`brands_list`](/mcp/reference/accounts-brands#brands-list) | Read | List brands the current user may read. | | [`brands_create`](/mcp/reference/accounts-brands#brands-create) | Write | Create a brand in the current workspace and grant its creator write access. | | [`brands_update`](/mcp/reference/accounts-brands#brands-update) | Write | Update mutable fields on one writable brand. | | [`brands_get`](/mcp/reference/accounts-brands#brands-get) | Read | Read one authorized brand with its active structured brand kit. | | [`assets_list`](/mcp/reference/accounts-brands#assets-list) | Read | List one filtered normalized asset page under an authorized account. | | [`assets_get`](/mcp/reference/accounts-brands#assets-get) | Read | Read one normalized asset under an authorized account. | ## Insights tools | Tool | Access | Purpose | | - | - | - | | [`insights_capabilities`](/mcp/reference/insights#insights-capabilities) | Read | List insight grains, compatible metrics, dimensions, and paging semantics. | | [`insights_query`](/mcp/reference/insights#insights-query) | Read | Query one insights page, then follow next\_cursor when needed. | | [`insights_rank`](/mcp/reference/insights#insights-rank) | Read | Rank compact period performance without returning raw insight pages. | ## Rule tools | Tool | Access | Purpose | | - | - | - | | [`rules_schema`](/mcp/reference/rules#rules-schema) | Read | Return the rule-builder vocabulary and write requirements. | | [`rules_list`](/mcp/reference/rules#rules-list) | Read | List rules whose complete target set is readable. | | [`rules_get`](/mcp/reference/rules#rules-get) | Read | Read the complete current rule definition for a lossless replacement. | | [`rules_create`](/mcp/reference/rules#rules-create) | Write | Create one rule after target and functional authorization. | | [`rules_update`](/mcp/reference/rules#rules-update) | Write | Replace one rule; first read it and preserve every unchanged field. | | [`rules_change_status`](/mcp/reference/rules#rules-change-status) | Write | Change rule status after current target authorization. | | [`rules_delete`](/mcp/reference/rules#rules-delete) | Write | Archive one authorized rule. | | [`rules_changes`](/mcp/reference/rules#rules-changes) | Read | List immutable changes for an authorized rule. | | [`rules_run`](/mcp/reference/rules#rules-run) | Write | Accept one idempotent durable rule run. | | [`rule_runs_list`](/mcp/reference/rules#rule-runs-list) | Read | List authorized rule runs. | | [`rule_runs_get`](/mcp/reference/rules#rule-runs-get) | Read | Read one authorized rule run. | | [`rule_activity_list`](/mcp/reference/rules#rule-activity-list) | Read | List authorized rule activity records. | | [`rule_activity_get`](/mcp/reference/rules#rule-activity-get) | Read | Read one authorized rule activity record. | | [`rule_activity_summary`](/mcp/reference/rules#rule-activity-summary) | Read | Return a activity summary for one authorized rule. | ## Direct Meta actions | Tool | Access | Purpose | | - | - | - | | [`actions_capabilities`](/mcp/reference/actions#actions-capabilities) | Read | List configured direct Meta creation, duplication, and status actions. | | [`media_uploads_create`](/mcp/reference/actions#media-uploads-create) | Write | Upload media to the current workspace library without requiring an account. | | [`media_uploads_complete`](/mcp/reference/actions#media-uploads-complete) | Write | Upload up to ten files into the current workspace media library. | | [`creatives_create`](/mcp/reference/actions#creatives-create) | Write | Create a Meta creative from one completed signed media upload. | | [`campaigns_create`](/mcp/reference/actions#campaigns-create) | Write | Validate by default or explicitly create one paused Meta campaign. | | [`adsets_create`](/mcp/reference/actions#adsets-create) | Write | Validate by default or explicitly create one paused Meta ad set. | | [`ads_create`](/mcp/reference/actions#ads-create) | Write | Validate by default or explicitly create one paused Meta ad. | | [`actions_execute`](/mcp/reference/actions#actions-execute) | Write | Execute set\_status for one campaign, ad set, or ad. | | [`campaigns_duplicate`](/mcp/reference/actions#campaigns-duplicate) | Write | Preview or copy a campaign with its children in the same account, paused. | | [`adsets_duplicate`](/mcp/reference/actions#adsets-duplicate) | Write | Preview or copy an ad set with its ads in the same campaign, paused. | | [`ads_duplicate`](/mcp/reference/actions#ads-duplicate) | Write | Preview or copy an ad in the same ad set, paused. | | [`actions_get`](/mcp/reference/actions#actions-get) | Read | Read one permission-filtered action result by Activity ID. | ## Activity tools | Tool | Access | Purpose | | - | - | - | | [`activity_list`](/mcp/reference/activity#activity-list) | Read | Search the complete authorized tool, action, and rule-run log. | | [`activity_get`](/mcp/reference/activity#activity-get) | Read | Read one complete authorized activity record by ID. | | [`activity_summary`](/mcp/reference/activity#activity-summary) | Read | Count the complete authorized result set for activity filters. | ## Memory tools | Tool | Access | Purpose | | - | - | - | | [`memory_remember`](/mcp/reference/memory#memory-remember) | Write | Persist one fact after an explicit user request: remember/save/note that. | | [`memory_recall`](/mcp/reference/memory#memory-recall) | Read | Recall semantically relevant user-authored context. | | [`memory_get`](/mcp/reference/memory#memory-get) | Read | Read one exact authorized memory by ID. | | [`memory_list`](/mcp/reference/memory#memory-list) | Read | List one memory page with an optional scope filter. | | [`memory_update`](/mcp/reference/memory#memory-update) | Write | Idempotently replace one memory using its current version. | | [`memory_set_enabled`](/mcp/reference/memory#memory-set-enabled) | Write | Idempotently enable or disable one memory for future retrieval. | | [`memory_forget`](/mcp/reference/memory#memory-forget) | Write | Idempotently and permanently forget one memory after user approval. | ## Launcher library tools | Tool | Access | Purpose | | - | - | - | | [`launcher_discover`](/mcp/reference/launcher-library#launcher-discover) | Read | Discover the Launcher journey, exact IDs, limits, access and browser upload instructions. | | [`launcher_creatives_list`](/mcp/reference/launcher-library#launcher-creatives-list) | Read | List a active creative-family page in the authorized workspace. | | [`launcher_creatives_usage`](/mcp/reference/launcher-library#launcher-creatives-usage) | Read | Read usage, held claims and source-input lineage for one creative and authorized account. | | [`launcher_creatives_get`](/mcp/reference/launcher-library#launcher-creatives-get) | Read | Read a creative and exact version summaries; content never changes in place. | | [`launcher_creative_versions_get`](/mcp/reference/launcher-library#launcher-creative-versions-get) | Read | Read one exact version with editable copy and media bindings. | | [`launcher_creatives_create`](/mcp/reference/launcher-library#launcher-creatives-create) | Write | Create a creative family with an draft content version; approve the whole version separately. | | [`launcher_creatives_update`](/mcp/reference/launcher-library#launcher-creatives-update) | Write | Edit family metadata with the current lock version; content requires a new version. | | [`launcher_creatives_archive`](/mcp/reference/launcher-library#launcher-creatives-archive) | Write | Archive a family while preserving immutable content and existing launch history. | | [`launcher_creative_versions_create`](/mcp/reference/launcher-library#launcher-creative-versions-create) | Write | Save corrected content as a new immutable draft version; preserve prior successful launches. | | [`launcher_creative_versions_approve`](/mcp/reference/launcher-library#launcher-creative-versions-approve) | Write | Approve the exact complete locale bundle using the current approval grant. | | [`launcher_creative_versions_revoke`](/mcp/reference/launcher-library#launcher-creative-versions-revoke) | Write | Revoke the complete approved bundle with a reason; history remains immutable. | | [`launcher_collections_list`](/mcp/reference/launcher-library#launcher-collections-list) | Read | List fixed and smart collection definitions in the authorized workspace. | | [`launcher_collections_preview`](/mcp/reference/launcher-library#launcher-collections-preview) | Read | Preview unsaved smart filters across the workspace without creating anything. | | [`launcher_collections_get`](/mcp/reference/launcher-library#launcher-collections-get) | Read | Read a collection definition and its revision before pinning a selection. | | [`launcher_collections_create`](/mcp/reference/launcher-library#launcher-collections-create) | Write | Create fixed family includes or a smart filter with explicit family exclusions. | | [`launcher_collections_update`](/mcp/reference/launcher-library#launcher-collections-update) | Write | replace the saved definition and members using its current lock version. | | [`launcher_collections_archive`](/mcp/reference/launcher-library#launcher-collections-archive) | Write | Archive a collection; existing saved occurrence snapshots remain retained. | | [`launcher_collections_resolve`](/mcp/reference/launcher-library#launcher-collections-resolve) | Read | Resolve a consistent collection selection with AND conditions and OR values; reserves nothing. | | [`launcher_templates_list`](/mcp/reference/launcher-library#launcher-templates-list) | Read | List active templates within the authorized workspace. | | [`launcher_templates_get`](/mcp/reference/launcher-library#launcher-templates-get) | Read | Read typed saved template versions; saved configuration is not proof of provider eligibility. | | [`launcher_templates_create`](/mcp/reference/launcher-library#launcher-templates-create) | Write | Save a typed template and its first exact configuration version without a provider effect. | | [`launcher_template_versions_create`](/mcp/reference/launcher-library#launcher-template-versions-create) | Write | Save a new immutable template configuration version; scheduled references keep their exact version. | | [`launcher_templates_archive`](/mcp/reference/launcher-library#launcher-templates-archive) | Write | Archive a template identity while retaining previously pinned configuration versions. | | [`launcher_media_list`](/mcp/reference/launcher-library#launcher-media-list) | Read | List imported asset IDs and metadata; storage locations stay private. | | [`launcher_media_get`](/mcp/reference/launcher-library#launcher-media-get) | Read | Read imported media metadata without private URLs or object keys. | | [`launcher_media_delete`](/mcp/reference/launcher-library#launcher-media-delete) | Write | Archive unused media and queue storage cleanup. | | [`launcher_media_retry_thumbnail`](/mcp/reference/launcher-library#launcher-media-retry-thumbnail) | Write | Queue a thumbnail attempt for media in the currently authorized workspace. | ## Launcher launch tools | Tool | Access | Purpose | | - | - | - | | [`launcher_promotion_sources_list`](/mcp/reference/launcher-launches#launcher-promotion-sources-list) | Read | Choose confirmed test ads to promote using their exact source item IDs. | | [`launcher_assets_list`](/mcp/reference/launcher-launches#launcher-assets-list) | Read | Find named Meta assets without copying IDs from another product. | | [`launcher_targets_list`](/mcp/reference/launcher-launches#launcher-targets-list) | Read | List current account ad sets; inspect the chosen target before preview. | | [`launcher_targets_get`](/mcp/reference/launcher-launches#launcher-targets-get) | Read | Inspect the exact account/parent/settings fingerprint for a chosen target. | | [`launcher_launches_preview`](/mcp/reference/launcher-launches#launcher-launches-preview) | Read | Resolve exact approved inputs and operation counts; preview reserves nothing. | | [`launcher_launches_submit`](/mcp/reference/launcher-launches#launcher-launches-submit) | Write | Submit exact inputs using one stable request key; effects run asynchronously. | | [`launcher_launches_list`](/mcp/reference/launcher-launches#launcher-launches-list) | Read | List newest launches first within the current workspace and account grants. | | [`launcher_launches_get`](/mcp/reference/launcher-launches#launcher-launches-get) | Read | Poll launch state; use linked Activity for individual provider outcomes. | | [`launcher_launches_change_status`](/mcp/reference/launcher-launches#launcher-launches-change-status) | Write | Hold or resume an unstarted run; a missed time requires Run now or a new time. | | [`launcher_launches_cancel`](/mcp/reference/launcher-launches#launcher-launches-cancel) | Write | Request cancellation; release only claims with confirmed no-write evidence. | | [`launcher_launches_replacement_candidates`](/mcp/reference/launcher-launches#launcher-launches-replacement-candidates) | Read | Inspect failed-item replacement choices. | | [`launcher_run_operations`](/mcp/reference/launcher-launches#launcher-run-operations) | Read | Read scoped results and attempts using Launcher read access. | | [`launcher_launches_retry`](/mcp/reference/launcher-launches#launcher-launches-retry) | Write | Retry unchanged inputs after no-write proof. | ## Launcher schedules and limits | Tool | Access | Purpose | | - | - | - | | [`launcher_schedules_create`](/mcp/reference/launcher-schedules#launcher-schedules-create) | Write | Save pinned recurring inputs with SKIP overlap and current automation authority. | | [`launcher_schedules_change_status`](/mcp/reference/launcher-schedules#launcher-schedules-change-status) | Write | Pause or resume future admissions; preserve already created occurrence snapshots. | | [`launcher_schedules_list`](/mcp/reference/launcher-schedules#launcher-schedules-list) | Read | List pinned recurring schedules in the currently authorized account. | | [`launcher_schedules_get`](/mcp/reference/launcher-schedules#launcher-schedules-get) | Read | Read a schedule definition and exact version references. | | [`launcher_schedules_update`](/mcp/reference/launcher-schedules#launcher-schedules-update) | Write | Save future settings; claimed occurrences keep their snapshot. | | [`launcher_account_limits_get`](/mcp/reference/launcher-schedules#launcher-account-limits-get) | Read | Read configured account-wide campaign and budget admission ceilings. | | [`launcher_account_limits_update`](/mcp/reference/launcher-schedules#launcher-account-limits-update) | Write | Set account ceilings; omit expected version only on initial configuration. | ## Launcher Drive tools | Tool | Access | Purpose | | - | - | - | | [`launcher_drive_folders_list`](/mcp/reference/launcher-drive#launcher-drive-folders-list) | Read | List saved workspace folders. | | [`launcher_drive_folders_save`](/mcp/reference/launcher-drive#launcher-drive-folders-save) | Write | Save a folder selected in Superlaunch's Google Picker with drive.file. | | [`launcher_drive_folder_files_list`](/mcp/reference/launcher-drive#launcher-drive-folder-files-list) | Read | List up to 100 selected media files and folders with drive.file. | # MCP troubleshooting Source: https://docs.superlaunch.pro/mcp/troubleshooting Resolve connection, permission, input, and result-completeness problems. Use the symptom below to choose the next check. | Symptom | Check | | - | - | | Server asks you to sign in | Complete OAuth in the browser; the URL alone is not authorization | | No tools in the conversation | Enable the connector or plugin in that conversation, then refresh tool discovery | | Read tools appear but writes do not | Check approved `mcp:write` scope and your client's action restrictions | | Account not found | Confirm workspace, account ID, provider connection, and member permissions | | Permission denied | Review functional and object-level access with the workspace owner | | Version conflict | Read the current object and review changes before retrying | | Changed inputs rejected for a request key | Use a new key for a changed intended operation | | Only part of a report returned | Follow `next_cursor` with unchanged filters | | Launch accepted but no objects yet | Read launch and operation status; execution is asynchronous | ## Authorization loop Check the server URL, automatic OAuth client registration, browser sign-in, and workspace selection. Disconnect the stale connection in **Connections → AI agents**, then authorize again. If your client asks for a client ID or secret, check that you selected automatic registration. Use the [connection guide](/mcp/connect) for the client-specific setting. ## Tool input error Use the tool's current input schema. A tool with a `payload` parameter needs its fields inside `payload`; other tools take top-level arguments. UUIDs and provider IDs are not interchangeable. For insight queries, check the metric, report specification, grain, conversion event, and attribution window with `insights_capabilities`. For Launcher, use discovery and fresh reads for exact media, creative version, template version, and target IDs. Follow the returned recovery hints. ## Timeout after a write Look up the action, activity, rule run, or launch before submitting again. A timeout can happen after acceptance. Retry only when the tool's semantics and recorded state support it. ## Get help Include the client, approximate time, tool name, activity or run ID, and error code when contacting [support](https://superlaunch.pro/contact). Exclude passwords, tokens, signed upload URLs, and private campaign data. # MCP workflows Source: https://docs.superlaunch.pro/mcp/workflows Use discovery, validation, writes, and result checks in the right order. Start a workflow by discovering accessible objects and capabilities. Resolve required IDs, review the proposed change, submit it, then inspect the result. ## Rank campaign performance 1. Call `ad_accounts_list`. 2. Choose the accounts, dates, conversion event, and attribution window. 3. Use `insights_rank` for compact highest and lowest rankings. 4. Read the data-through date and warnings. Apply minimum evidence filters such as spend or conversions. “Highest” and “lowest” are numeric rankings; decide whether each outcome is desirable for the metric. ## Create a draft rule Call `rules_schema`, resolve accounts, and build the full rule definition. Supply a target filter, tasks with conditions and actions, and a schedule with time zone. Save as a draft with `dry_run: true`. Read the rule back and run its current version in dry-run mode. Review decisions before activation. See [Rules](/guides/rules). ## Prepare a Launcher batch Call `launcher_discover`, resolve accounts, and inspect library content and templates. Complete private media intake in the [browser](/launcher/media). Approve exact creative versions, resolve the selection, inspect an existing target where required, and preview the launch. Submit with one stable request key. Poll the launch and operation records, including partial failures. ## Create Meta objects directly Call `actions_capabilities` to check configured effects. Creation and duplication tools default to `dry_run: true`; creation starts campaigns, ad sets, and ads paused. For a direct creative upload, call `media_uploads_create`. An enabled interactive picker can accept the file in the client. With metadata, the tool returns a signed upload URL, required headers, and expiry. Use the returned method and headers to upload binary bytes. In the interactive flow, `media_uploads_complete` completes one selected file or upload intent. Verify upload status before passing its `media_id` to `creatives_create`. Create a campaign, then an ad set, then an ad with the required parent IDs. Review dry-run results. Use a new request ID when changing the request from validation to live execution. Inspect the action result after execution. ## Save a confirmed fact Resolve the scope, then call `memory_remember` only after an explicit save request or focused approval. Report the returned persistence state. Use `memory_recall` for relevant context and `memory_get` for an exact record. # Set up Superlaunch Source: https://docs.superlaunch.pro/quickstart Connect your first ad account and confirm that your agent can read it. This guide takes you from a new workspace to your first performance check. You need access to an advertising account and permission to connect it. ## 1. Sign in and choose a workspace Open [Superlaunch](https://app.superlaunch.pro/sign-in). Create an account or sign in, then create a workspace or accept your invitation. Complete any email verification shown during sign-in. If you belong to more than one workspace, choose the workspace you want to use from the account menu. Connections, permissions, and billing belong to that workspace. ## 2. Connect an ad account Open **Connections → Ad platforms**. A workspace owner can select **Connect Meta**, complete the provider authorization, and choose the accounts to connect. Allow time for the first data import. An account can be connected before its assets and reporting data finish loading. See [Connect ad platforms](/workspace/connections) if an account is missing. ## 3. Check a report Open **Insights**, choose an ad account, and set a reporting period. Start with spend, impressions, and clicks. Confirm the account currency and date range before interpreting results. An empty report can mean that the first import is still running, that the account had no delivery in that period, or that you lack reporting access. ## 4. Connect your agent Follow [Connect an MCP client](/mcp/connect) for ChatGPT, Claude, or Codex. Approve read access for the workspace, then ask: > List the ad accounts I can access in Superlaunch. Show their names, currencies, and time zones. Your agent should call `ad_accounts_list` and return only accounts you can read. ## Next steps * [Understand the account and campaign hierarchy](/concepts/how-it-works). * [Compare performance](/guides/insights). * [Prepare your first launch](/launcher/launch). * [Create a rule in dry-run mode](/guides/rules). # Documentation for AI assistants Source: https://docs.superlaunch.pro/reference/ai-access Read the public documentation index, full text, and page Markdown. Use these public files to give an AI assistant the Superlaunch documentation. | Resource | URL | Contents | | - | - | - | | Documentation index | [/llms.txt](/llms.txt) | Page titles, descriptions, and links | | Full documentation | [/llms-full.txt](/llms-full.txt) | Combined documentation content | | Page Markdown | Add `.md` to a page URL, for example [/mcp/overview.md](/mcp/overview.md) | Text for one page | Mintlify generates the index and full-text exports from the published documentation. Use the index to choose pages for a question; use the full-text file when you need the complete site. ## Example prompt > Read [https://docs.superlaunch.pro/llms.txt](https://docs.superlaunch.pro/llms.txt) and the linked MCP setup guide. Explain how to connect Superlaunch in my client, then wait for me to finish authorization before reading my accounts. ## Public docs and private workspace data These files describe the product and tool contracts. They contain no authorization to your workspace. For live advertising data or operations, connect the [Superlaunch product MCP server](/mcp/connect) and complete OAuth authorization. Keep account, campaign, and memory results within the access approved for the conversation. # Glossary Source: https://docs.superlaunch.pro/reference/glossary Definitions for the terms used in Superlaunch and its MCP tools. | Term | Meaning | | - | - | | Workspace | Team context for members, connections, billing, and shared content | | Provider connection | Authorization that lets Superlaunch access an advertising platform | | MCP connection | Authorization that lets an AI client use Superlaunch on your behalf | | Ad account | Provider account with its own currency, time zone, and assets | | Campaign | Meta object that defines a campaign objective and related settings | | Ad set | Meta object with targeting, optimization, delivery, and ads | | Ad | Delivery object that uses a creative | | Brand kit | Versioned positioning, voice, colors, fonts, and proof points | | Memory | A fact you approved for durable use in a defined scope | | Creative family | Workspace library object containing saved content versions | | Creative version | Exact content, format, language, and media saved at one point | | Approval | Permission to select an exact creative version for supported launches | | Collection | Fixed selection or smart filter over library creatives | | Template version | Saved settings for campaign, ad-set, budget, and naming behavior | | Launch | Durable submission with recorded inputs and operation results | | Schedule | Configuration for recurring launch or rule execution | | Rule | Targeted conditions and actions with scheduling settings | | Dry run | Validation or evaluation without the intended provider effects | | Activity | Permission-filtered record of a tool call, action, or rule operation | | Idempotent retry | Replay of the same intended operation with the same key and inputs | | Minor units | Integer currency units; USD 1000 represents \$10.00 | | Attribution window | Reporting interval used to count an event after an ad interaction | | Cursor | Token or offset for the next page of a filtered result | # Billing and usage Source: https://docs.superlaunch.pro/support/billing Review the workspace subscription, usage, payments, and access state. The workspace owner manages billing. Open **Billing** from the workspace controls to review the current subscription, plan limits, usage, and payments. ## Plans and trials Use the [pricing page](https://superlaunch.pro/pricing) and the checkout summary for current prices, billing intervals, trial terms, taxes, and included limits. Review the billing workspace before starting checkout. A checkout return page is not proof of an active subscription. Wait for Superlaunch to show the confirmed billing state. If it remains pending, refresh the billing view or contact support before opening another checkout. ## Usage Review **Billing** for the current allowance and recorded usage. In Launcher, previews estimate usage if provider writes succeed. Submission and polling do not themselves confirm provider-write usage. Your plan and account limits can prevent new work. Check the billing result and error message rather than repeatedly submitting the same launch. ## Payments and subscription management Use the subscription controls to review available plan changes, cancellation, or resumption. Read the displayed effective date before confirming a change. The payments view shows recent payment activity where available. Payment-method management can open the provider's hosted billing portal; embedded checkout and saved-card management are separate flows. If you see a sandbox or test-mode notice, follow its instructions. Test-mode behavior does not prove that a live charge completed. ## Restricted access A workspace can have full, read-only, or recovery access depending on its billing state. Read-only access can permit review while preventing new writes. Recovery access exposes the supported controls for resolving interrupted work. For a billing access message, the owner should inspect the current status in **Billing**. Other members should contact the workspace owner. For payment help or refund questions, use [Contact](https://superlaunch.pro/contact) and the [refund policy](https://superlaunch.pro/refund.html). # Troubleshooting Source: https://docs.superlaunch.pro/support/troubleshooting Resolve common workspace, reporting, rule, and launch problems. Start with the exact workspace, account, date range, and operation you were using. ## Sign-in or workspace access Complete any email-verification step. If the workspace is missing, confirm that you accepted its invitation with the same email identity. Ask the owner to check membership. A billing access message needs a billing-state check by the owner. See [Billing and usage](/support/billing). ## Connected account has no data Check account selection, provider permissions, member access, and the reporting period. The first import can still be running. An account without delivery in the selected period can have an empty report. If the provider authorization needs renewal, open **Connections → Ad platforms** and reconnect it. ## Report values differ from Meta Compare the entity level, account time zone, currency, conversion event, attribution window, report grain, and breakdown. Check the data-through date and whether the complete result set has loaded. A daily report and a period ranking answer different questions. Keep the query definitions together when comparing them. ## Rule did not change an object Check the rule status, dry-run setting, schedule, current version, target filter, and task conditions. Inspect the run and activity records for skipped targets or errors. A dry run can record decisions without changing provider state. ## Launch partially failed Read individual operation results. Retry eligible unchanged work or prepare a corrected replacement. Avoid submitting the entire successful and failed set again. See [Recover a launch](/launcher/recovery). ## Contact support Send the approximate time, workspace name, tool or feature, and activity or run ID through [Contact](https://superlaunch.pro/contact). Include the error code and expected outcome. Do not include access tokens or signed private URLs. # Connect ad platforms Source: https://docs.superlaunch.pro/workspace/connections Authorize Meta, choose accounts, and recover a disconnected connection. A workspace owner connects advertising platforms. Other members use the accounts that their permissions allow. ## Connect Meta 1. Choose the intended workspace. 2. Open **Connections → Ad platforms**. 3. Select **Connect Meta**. 4. Sign in to Meta with an identity that can access the required ad accounts. 5. Complete the provider authorization and account selection. 6. Return to Superlaunch and check the connected accounts. Choose only the accounts you intend to use. Your provider identity still needs the permissions required for reading reports or changing ads. ## First import Superlaunch imports account assets and reporting data in the background. Check **Insights** after connecting. If data is missing, review the date range and allow the first import to finish. Connect status and reporting completeness describe different things. An active provider authorization can coexist with an incomplete import. ## Reconnect Select **Reconnect Meta** on the existing connection and complete authorization again. Reconnect after a provider authorization expires, an identity loses access, or you change the accounts available to the connection. If an account remains missing, check that you selected the right workspace and that your Meta identity can access it. Ask the workspace owner to review account selection and member permissions. ## Agent connections Provider connections give Superlaunch access to advertising accounts. [AI agent connections](/mcp/connect) let an agent use Superlaunch on your behalf. Set up both if you want an agent to analyze or manage your advertising accounts. # Team and permissions Source: https://docs.superlaunch.pro/workspace/permissions Manage workspace members and control access to accounts, rules, and launches. Your workspace owner manages members and their permissions from **Team**. Superlaunch applies access checks in the API and MCP service as well as in the web application. ## Invite a teammate 1. Open **Team** in the correct workspace. 2. Invite the teammate with the email address they will use to sign in. 3. Ask them to accept the invitation. 4. Review the accounts and functions they need before granting access. Membership and account access are separate. A teammate can belong to your workspace without permission to read a particular ad account. ## Review permissions Open the member's permissions. Grant the required functions for the relevant ad accounts, such as reading assets or insights, managing rules, or performing provider actions. Launcher uses its own read, author, approval, execution, scheduling, and control permissions. Authoring a creative does not imply permission to approve it or launch it. Use the available permission definitions in the member editor. Brand and memory access also depend on their scope. A private memory belongs to its author; team, brand, and ad-account memories follow their corresponding access rules. ## MCP access An MCP connection uses the member who authorized it. `mcp:read` permits read tools; `mcp:write` permits write tools in addition to read access. These scopes do not expand the member's account or functional permissions. Superlaunch rechecks membership, connection status, and target access on tool calls. If access changes, an existing conversation can lose access too. ## Resolve an access error Check the workspace, account, member permissions, OAuth scopes, and connection status. If a rule targets several accounts, the member needs the required access to its complete target set. See [MCP authentication](/mcp/authentication) and [Troubleshooting](/support/troubleshooting).