MCP tool · Launch
get_launch_questions
The questions the app asks before every launch, in order, with the choices read from your account and a recommended answer (TikTok's and Snapchat's own with platform). Called again with the files (it reads their names with your naming convention and proposes the ads) and with the answers so far.
What it does
The launch interview, Apogee's way: every question the Apogee app asks before a launch, in order, each with the choices read from the user's own account (ad sets and ads with their spend, saved templates, campaigns, pages, pixels and events, catalogs, naming conventions) and the recommended answer.
Call it first, then ask the questions whose status is to_ask ONE TOPIC AT A TIME, in the user's language, showing the choices. Never answer for the user.
Call it again with files once the creatives are known (nomenclature read + proposed ads grouped by format), and with the answers so far to get the choices that depend on them (a pixel's events, a page's forms, a catalog's product sets, what a copied ad set / ad holds).
Parameters
-
ad_account_idstring requiredThe ad account (list_ad_accounts): Meta act_…, a TikTok advertiser id, a Snapchat ad account id
-
platformstring optionalDefault meta. tiktok / snapchat: the same interview and arguments where they mean the same, their own settings under
tiktok/snapchat, groups made by hand underadgroups/adsquads -
filesarray of objects optionalFields of each item (7)
-
namestring requiredFile name with its extension
-
refstring optionaldrive:<id> or the URL of the file in Apogee storage
-
mimeTypestring optional -
kindstring optional -
formatstring optionalMeasured format (list_drive_folder, ffprobe): 9:16, 4:5, 1:1, 16:9
-
folderstring optionalSubfolder (list_drive_folder)
-
durationSnumber optionalLength in seconds (list_drive_folder durationS, ffprobe): files of one length in different formats are flagged as maybe one creative
-
-
answersone of optionalThe answers so far, with prepare_launch's argument names
option 1(12 fields)-
campaign_idstring or integer or null optionalQuestion "campaign"
-
existing_adset_idsarray of strings or integers or null optional -
copy_adset_fromstring or integer or null optionalAn ad set to duplicate
-
copy_ad_fromstring or integer or null optionalAn ad to duplicate
-
adset_settingsobject or null optionalFields (3)
-
pixel_idstring or integer or null optionalA pixel
-
custom_conversion_idstring or integer or null optionalA custom conversion
-
application_idstring or integer or null optionalapp_installs
-
-
ad_settingsobject or null optionalFields (4)
-
page_idstring or integer or null optionalA Facebook page
-
instagram_idstring or integer or null optionalAn Instagram account
-
lead_form_idstring or integer or null optionalAn instant form
-
partnershipobject or null optionalFields (2)
-
creator_ig_idstring or integer or null optionalAn approved creator
-
creator_fb_page_idstring or integer or null optionalThe creator's Facebook page (alone: a Facebook creator)
-
-
-
productsobject or null optionalFields (2)
-
catalog_idstring or integer or null optionalA catalog
-
product_set_idstring or integer or null optionalA product set
-
-
adsarray of objects or null optionalFields of each item (1)
-
source_ad_idstring or integer or null optionalAn existing ad to reuse with its post
-
-
adset_variantsarray of objects or null optional -
source_campaign_idstring or integer or null optionalLists the existing ads of this campaign only
-
nomenclatureobject or null optionalFields (1)
-
config_idstring or null optional
-
-
grouping_modestring optionalThe app's switch: "names" reads the file names with a saved convention, "by_hand" groups the files by hand (formats of one creative linked by name, every other file its own ad). Default: names only when a convention reads every file, else by hand
option 2(4 fields)-
campaign_idstring or null optionalQuestion "campaign"
-
copy_adset_fromstring or null optionalAn ad group / ad squad to copy, or "latest"
-
copy_ad_fromstring or null optionalAn ad to copy, or "latest"
-
existing_adset_idsarray of strings or null optional
-
Example
Your assistant calls it for you when you ask in your own words. What it sends (MCP tools/call, JSON-RPC 2.0):
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_launch_questions",
"arguments": {
"ad_account_id": "act_1234567890"
}
}
} The same call over HTTP with an API key, for an MCP client of your own (an assistant that signs in sends its OAuth token instead):
curl -X POST https://app.apogee.ad/mcp \
-H "Authorization: Bearer $APOGEE_API_KEY" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"get_launch_questions","arguments":{"ad_account_id":"act_1234567890"}}}' Access and cost
| Plans | Pro and Scale. |
|---|---|
| Scope | read: a connection or an API key without it does not see this tool (scopes). |
| Effect | Reads only: nothing is changed, in Apogee or on the ad account. |
| Credits | Free up to the daily free reads (5,000 a day on Pro, 10,000 on Scale), then 1 credit per read. A call that fails costs nothing (credits). |
| Rate limit | 600 MCP requests per 15 minutes on Pro, 1,200 on Scale (rate limits). |
| Daily cap | Counts 1 unit toward the 2,000 units one API key or assistant connection can use in 24 hours. |
In the REST API
The same thing for your own code, with an API key:
- Get launch questions:
POST /ad-accounts/{acc}/launch-questions
Related tools
Launch: The interview, the recap, your yes, then the launch.
prepare_launch: Prepares the launch without creating anything: the whole recap and aplan_id, valid 24 hours. Refuses while a question is open. Starts from scratch, a copied ad set and ad, or saved templates; the ads are new files (grouped by your naming convention or by hand), or existing ads reused with their post ID.launch: Launches a prepared plan (Meta, TikTok or Snapchat: the plan knows), once, after your explicit yes to its recap.launch_status: Follows a launch until it is finished.interruptedmeans an Apogee deploy cut it: check Ads Manager before launching again.create_campaign: Prepares a new campaign, always created paused: name, objective, budget per ad set (ABO) or per campaign (CBO, with its bid strategy).execute_actioncreates it after your OK.