add_keywords
ChatGPTAdd one or more keywords to track for a project's linked app. Up to 50 keywords per call. If appId or storeProvider is omitted, both are resolved from the project (primaryStoreProvider + appleAppId / googlePlayPackageName). Returns 402 with error "keyword_limit" if the user's plan limit would be exceeded.
apply_promo_video_candidate
ChatGPTCreate a promo-video variant from one of the three server-stored candidates. This is called by the inline picker after explicit user selection; arbitrary video config input is not accepted. If replaceVariantId is supplied, the previous variant is deleted after the new variant is saved; replacement requires explicit user approval.
apply_screenshot_style
ChatGPTCreate a new screenshot variant from a previously prepared personalized style catalog without another AI generation. Fallback for applying a template id supplied directly in chat or by an API client. The normal prepare_screenshot_styles flow now lets the user compare v1/v2 and create the variant directly in the browser. The new variant includes phone, tablet, and desktop layouts and opens in the editor.
apply_social_graphics_style
ChatGPTCreate a new social-graphics variant from a previously prepared personalized catalog without another AI generation. Use after prepare_social_graphics_styles and browse_social_templates. The new variant contains all supported formats and opens in the graphics editor.
browse_social_templates
ChatGPTOpen the visual social style gallery. With generationId and catalogKey from prepare_social_graphics_styles it renders personalized previews and creates the selected variant directly; without them it provides static style discovery. Never offer social templates via text or AskUserQuestion.
browse_templates
ChatGPTOpen the visual style gallery. With generationId and catalogKey from prepare_screenshot_styles it renders personalized v1/v2 previews and creates the selected variant directly; without them it provides static style discovery. Never offer templates via text or AskUserQuestion.
clear_promo_video
ChatGPTWipe the promo video config for a variant so the user can start over. Does not delete the variant itself.
create_asset_folder
ChatGPTCreate a screenshot folder within the specified device and platform. Optionally bind it to an explicit locale. Supply a new UUID folderId and reuse it for retries. Storage paths do not change.
create_mockup_animation
ChatGPTCreate a new mockup-animation variant seeded from a SCENE_PRESETS preset and a specific screenshot/recording path. Always omit variantId — this tool always creates a new variant. Never overwrites an existing mockup variant. Use list_assets to find existing project screenshots, or list_mockup_media to find dedicated mockup uploads and recordings. Both return valid project-relative screenshotPath values; an empty mockup-media list does not mean the project has no screenshots. Reuse the requested existing screenshot without re-uploading it. Call list_mockup_presets to pick a presetId. The editor opens automatically after creation.
create_project
ChatGPTCreate a new AppLaunchFlow project. Only app name and platform are required. Autofill category and description from context when possible — do not ask the user for these unless genuinely ambiguous.
create_variant
ChatGPTCreate a new content variant. This is the preferred starting point when the user wants a new screenshot direction, a different template, or a fresh AI-generated take without overwriting the current variant.
delete_asset_folder
ChatGPTRemove an explicitly selected folder. Its files become ungrouped; no files are deleted.
delete_assets
ChatGPTPermanently delete explicitly selected unused assets from storage. Files referenced by any saved design are blocked. There is no restore.
delete_project
ChatGPTDelete a project
duplicate_variant
ChatGPTDuplicate an existing variant
generate_promo_video
ChatGPTGenerate or reuse three transient promo-video candidates from the project's screenshots. This tool itself displays the same three-option dashboard picker inline in Claude, ChatGPT, and other MCP Apps-compatible hosts; do not call another tool after it. Only the candidate explicitly chosen by the user becomes a saved variant. Clients without UI support receive the exact picker URL. Use replaceVariantId only when the user explicitly chose to replace that existing variant, which also allows a safe swap at the plan limit. Use selectedScreenshotPaths to constrain which uploaded screenshots feed the candidates.
get_editing_reference
ChatGPTRead before editing screenshots, social graphics, promo videos or mockups. Returns workflow, coordinate units and an exhaustive index of current configuration types, validators and catalogs. Pass a symbol from the index to retrieve its complete fields, enums, bounds and defaults. Works even in MCP clients without resource browsing; read-only, no project or network access.
get_graphics
ChatGPTFetch the current social graphics layouts (one per format) for overview or metadata inspection. For direct edits, use get_graphics_format instead.
get_graphics_format
ChatGPTFetch exactly one social graphics layout for a project. Use this before direct edits so the next save_graphics_format call works from the current state of that same format. If the user did not request a specific format, use the variant's primary format from an earlier get_graphics response or inspect the editor URL. The returned layout is the same Layout shape screenshots use — one screen, canvas sized to the format. Read the resource applaunchflow://schema/layout for every node type's fields and valid ranges.
get_keyword_history
ChatGPTFetch the rank time series for a single tracked keyword. Returns up to 30 days on Free and up to 365 days on Unlimited. Pass appId to compute the history for a competitor app instead of the user's own app — defaults to the tracked keyword's owner app.
get_layout
ChatGPTGet layout JSON for the current translation before editing or reviewing a variant. This is mandatory before every direct transform_layout call. Returns the editor URL as a reference link — do NOT auto-open it. The user already has the editor open from the initial generation. The returned JSON follows the layout schema documented in the resource applaunchflow://schema/layout — read it to learn which fields exist and their valid ranges, not just which ones happen to be set here.
get_mockup_animation
ChatGPTFetch the current mockup animation state (MockupProjectState shape) for a project. Required before update_mockup_animation so edits operate on fresh state. Read get_editing_reference(feature: mockups) for all supported configuration fields.
get_project
ChatGPTGet the full hub state for a project
get_promo_video
ChatGPTFetch the current promo video config (Remotion VideoConfig) for a project. Required before update_promo_video so edits operate on fresh state. The returned object follows the schema in the resource applaunchflow://schema/video-config — read that resource to learn which fields and scene types exist and their valid ranges, not just which ones this config happens to use.
get_release_render
ChatGPTPoll a render. Only succeeded renders provide a validated manifest and short-lived package download URL. Failed or indeterminate jobs must not be retried with a new key automatically.
list_asset_folders
ChatGPTList device/platform-scoped screenshot folders, their explicit locales and memberships. Shared by the dashboard and MCP. Does not modify anything.
list_assets
ChatGPTBrowse an existing project's uploaded screenshots (all devices/platforms), illustrations, app icons, backgrounds, panoramas, recordings, music and clips (audio/video/images), and font files in an embedded asset list. Listing is read-only. The user can explicitly upload files using the widget's Upload button; opening the list does not upload, select or apply anything. Inspect existing assets before asking the user to upload again. Signed preview links are private widget data; use returned relative paths in editing tools. At most 100 newest files per folder; truncated indicates more exist.
list_export_formats
ChatGPTList supported store dimensions and locales for validated Fastlane packages.
list_illustrations
ChatGPTList available illustrations. Use 'shared' source to browse the shared library (icons, stickers, etc.). Use 'project' source to list illustrations uploaded to a specific project. When the user wants to add an illustration, list available options FIRST so they can pick one or choose to upload.
list_keyword_competitors
ChatGPTList the competitor apps configured for keyword tracking on a project (name, developer, icon) plus the user's plan-based competitor limit. These are the apps shown alongside the user's app in the keyword monitor's competitor columns.
list_keywords
ChatGPTFetch the keywords currently tracked for a project, including current rank, 7d/30d deltas, difficulty/traffic estimates, sparkline, competitor positions, and a summary (tracked count, ranked count, average position, top-10 share). Use this as the first read for any keyword/ASO conversation.
list_mockup_media
ChatGPTList the screenshots and screen recordings uploaded under the project's mockups/ storage folder. For existing project screenshots outside mockups/, use list_assets instead. An empty result here does not prevent creating a mockup from an existing screenshot. Returns media items with { path, signedUrl, kind: 'image' | 'video' }.
list_mockup_presets
ChatGPTReturn the structured set of valid mockup configuration values: motion presets, device finishes, background presets, output ratios, scene presets, and validation bounds. Use before constructing an update_mockup_animation payload to pick valid enum values without round-tripping through the server validator. If projectId is supplied, also returns the active screenshots variant's themeColors so the LLM can pick on-brand swatches for backgroundColor / gradient.
list_projects
ChatGPTList existing AppLaunchFlow projects for the authenticated user and show a simple project list with icons. Use this before asking for screenshots or a new upload. When the user has named a project, continue with that matching project; only ask them to select if the choice is ambiguous. Clicking Use project sends the chosen project ID to the chat, without creating a variant.
list_screenshots
ChatGPTList uploaded screenshot paths for a project
list_source_screenshots
ChatGPTList all real source screenshots available to screenshot and social-graphics style generation, including project-relative path, signed preview URL, platform, and phone/tablet/desktop device type. No sample fallback is added. Use the returned paths to choose 3-7 inputs for prepare_screenshot_styles or prepare_social_graphics_styles.
list_translations
ChatGPTList available translations for a project variant. Returns which languages have been translated.
list_variants
ChatGPTList variants for a generation and content type
move_assets
ChatGPTMove screenshot assets into a folder with the same device and platform, or pass null to ungroup them. Never changes storage paths or saved designs.
prepare_asset_upload
ChatGPTApp-only: authorize one explicitly selected file upload to the user's project. Does not upload bytes, replace existing files, apply designs or change the project icon. The upload permission is private widget metadata; never include it in a chat message.
prepare_screenshot_styles
ChatGPTGenerate or reuse the project's personalized screenshot-style catalog before the user chooses a style. This prepares every screenshot template for phone, tablet, and desktop in one AI call and returns a catalogKey. This tool itself displays the interactive picker in MCP Apps-compatible clients; do not call another tool after it. The picker shows real v1/v2 renders and creates a variant only after the user explicitly confirms a style. Repeating this with the same app context and screenshot paths is a cache hit and does not regenerate AI content. Clients without UI support receive the exact full-gallery URL.
prepare_social_graphics_styles
ChatGPTGenerate or reuse the project's personalized social-graphics style catalog before the user chooses a style. This prepares every social template across all supported social, store-listing, and mobile-ad formats in one AI call and returns a catalogKey. This tool itself displays the existing dashboard picker inline in Claude, ChatGPT, and other MCP Apps-compatible hosts; do not call another tool after it. A variant is created only after the user explicitly confirms a style. Clients without UI support receive the exact gallery URL. Repeating the same app context and screenshot paths reuses the cache.
rename_asset_folder
ChatGPTRename an existing logical asset folder. Does not rename or modify files.
render_screenshots
ChatGPTRender the saved translations of the active screenshot variant (or a specified existing variant). Use list_export_formats for sizes. Set resolutions['android.phone'] to {preset:'preview'} for 1290x2796 or {preset:'play-high'} for 2160x3840 (default). Any requested format can use exact custom {width,height} (320-8192 pixels); custom sizes may not satisfy store requirements. Presets follow layout orientation. One resolution per format per request. Update captures and copy through the normal asset and layout tools first. Reuse idempotencyKey for retries; never replace it after an uncertain outcome.
replace_asset
ChatGPTReplace an asset with an already uploaded file in the same category/device/platform. Explicitly updates all saved-design references and preserves folder membership, then permanently deletes the old file from storage. No restore. Upload the new file first. On partial failure both files are retained until cleanup succeeds; inspect the result and retry the same paths.
save_graphics
ChatGPTPersist a complete social graphics payload (template id, primary format, all per-format layouts). Prefer save_graphics_format when editing a single format. Each layout uses the same shape as screenshot layouts; see the resource applaunchflow://schema/layout.
save_graphics_format
ChatGPTPersist exactly one social graphics format after reading the latest same-format layout with get_graphics_format. ENFORCED: each call requires a fresh get_graphics_format for the same generationId/variantId/format immediately beforehand. Read the current layouts, mutate only the requested format in memory, then save that single layout here.
save_layout
ChatGPTPersist a full translation layout payload. Whole-layout replace per device size — prefer transform_layout for targeted edits. Each layout must be a complete, valid Layout object; see the resource applaunchflow://schema/layout for every field and valid value range.
set_asset_folder_locale
ChatGPTBind a screenshot folder to an explicit language code, or pass null to clear the binding. Folder names do not determine language.
store_review_snapshot
ChatGPTApp-only: temporarily store the PNG rendered by the edit-result widget after the user clicks Review. Does not render on the server or modify any design or library asset.
transform_layout
ChatGPTApply transform operations to an existing layout. Primary editing tool for text, screenshots, colors, and structure changes. IMPORTANT: Always call get_layout FIRST to inspect the current layout state before using this tool. Never transform blindly. ENFORCED RULE: each transform_layout call requires a fresh get_layout call for the same generationId, language, and variantId immediately beforehand. RULES: 1. nodeType is REQUIRED in every operation target. 2. Omit nodeId to update ALL nodes of that type in the target screens. 3. Use screens:'all' to target every screen at once. Do NOT send one operation per screen when the same change applies to all. 4. Dot-notation is supported for deep updates without replacing the whole object. Example: {'richContent.attrs.defaultFontSize': 96} updates only the font size inside richContent.attrs, preserving all other fields. Always use dot-notation for nested property changes. 5. For add_node, changes MUST include an 'id' field. 6. To add new screens, first add empty screen containers, then populate them in a SECOND call using selector 'screenId:<id>'. 7. Default to layouts:['mobile']. Only include tablet/desktop if the user asks. 8. FONT SIZE: The rendered font size is controlled ONLY by 'richContent.attrs.defaultFontSize' (pixel value). To change font size, use dot-notation: {'richContent.attrs.defaultFontSize': 80}. Do NOT use 'fontSizeScale' — that property is for promo videos only and has NO effect on screenshot rendering. SCHEMA REFERENCE: read the resource applaunchflow://schema/transforms for the full operation and selector reference, and applaunchflow://schema/layout for every node type's fields and valid value ranges. Read them before any non-trivial edit rather than guessing field names.
translate_layouts
ChatGPTTranslate screenshot layouts into one or more target languages using AI. This is the PREFERRED way to localize screenshots — do NOT manually edit text nodes for translation. The backend translates all text in the layout while preserving positioning, styling, and screenshots. Requires a source screenshot layout to already exist — created by the personalized gallery or apply_screenshot_style. Pass the source variantId when available to translate that exact variant; if omitted, the active variant is used.
update_mockup_animation
ChatGPTPersist a mockup animation state (the same MockupProjectState shape returned by get_mockup_animation). This is a full-state replace — fetch the current state with get_mockup_animation, mutate the parts you want to change, then call this tool with the updated object. There is no granular per-keyframe transform; whole-state replace is the supported edit path. ENFORCED: each call requires a fresh get_mockup_animation for the same projectId/variantId immediately beforehand. Validation bounds (see list_mockup_presets for the full reference): primaryKeyframes count 2–8, time 0–1, x/y -3..3, rotations -2π..2π, scale 0.2..3, speed 0.7..1.4, motionDuration 1..60, deviceScale 0.7..1.3.
update_promo_video
ChatGPTPersist a promo video config (the same Remotion VideoConfig shape returned by get_promo_video / generate_promo_video). This is a full-config replace — fetch the current config with get_promo_video, mutate the parts you want to change, then call this tool with the updated object. There is no granular scene-level transform; whole-config replace is the supported edit path at this stage. ENFORCED: each call requires a fresh get_promo_video for the same projectId/variantId immediately beforehand. SCHEMA REFERENCE: read the resource applaunchflow://schema/video-config for the full field-level reference — the six scene types and their content shapes, theme, TextStyle, ken burns, choreography preset ids, devices, overlays, and audio. Values outside the documented ranges fail validation and reject the whole update.
upload_asset
ChatGPTUpload a project asset: illustration, logo, panorama, background, font file, mockup media (image/video), or promo media (image/video/audio). Maximum 25 MB per file. Use an HTTPS URL or base64 data with a filename including its extension; local paths are also available to the npm/stdio connector. Upload stores a file only: it does not replace the project's app icon, apply a design, or register a font family in the editor. Returns the stored path which can then be used in transform_layout operations (e.g. set panoramaBackground.imageUrl or illustration imageUrl to the returned path). For illustrations: list_illustrations first to show existing options, then upload only if the user wants a custom image. For panoramas: use an HTTPS URL or base64-encoded image.
upload_screenshots
ChatGPTUpload screenshot images for screenshot generation workflows. Hosted connectors must use HTTPS URLs or base64 data; local file paths are available only to the npm/stdio connector. If a batch is incomplete, follow its recovery guidance and do not re-upload completed files.
view_review_snapshot
ChatGPTRetrieve actual PNG image pixels rendered by the user's edit-result widget. Call this when the widget's review message provides projectId and snapshotId; inspect the returned image, not layout JSON. Snapshots expire after 15 minutes and only the uploading user can read them. This does not modify the design.
view_screenshot
ChatGPTFetch a screenshot image and return it for visual analysis. Use this to inspect screenshots — extract colors, read UI text, understand layout context, or identify visual elements. Pass projectId and the relative path from list_screenshots or get_layout (e.g. 'mobile/ios/1234-image.PNG').