add_assets_to_project
ChatGPTPlace accessible library assets on a project page by asset ID. Existing placements are skipped; new placements are arranged beside existing content. Returns added and skipped counts.
add_images_to_board
ChatGPTAdd one or more images to a board. Pass assetId(s) from generate_image / edit_image / expand_image ("id" field), OR image URL(s) via publicUrl/publicUrls — Pikes URLs are linked directly, and EXTERNAL http(s) image URLs (e.g. find_ads ad stills, web images) are automatically fetched and re-hosted as the user's assets. Do not run a dummy edit_image just to get an id. The user must be the board owner or a team member with write access.
add_items_to_library_folder
ChatGPTFile the supplied asset, board, or product IDs in the selected folder. Changes to already-public board folders affect public pages; moving boards into them can grant inherited public access.
add_project_object
ChatGPTAdd a note, context card, native canvas section, or editable frame to a project page. content holds note text; dataJson holds structured frame data. A section is a note with dataJson={"canvasSection":true} and bounds enclosing separate objects. Membership is spatial. Canvas coordinates are pixels.
add_project_text
ChatGPTAdd an editable text layer to a frame or image while preserving the underlying design. An image is converted to a frame. Coordinates use native frame pixels; returns a new layerId.
animate_image
ChatGPTAnimate a supplied still image into a video. Requires a publicly accessible starting image and a motion prompt. Uses Pikes credits and saves a new video asset.
apply_project_frame_design
ChatGPTApply one design brief to existing frames. Read target/reference layers first. layerId, referenceLayerId and stackAfter accept an exact unique layer name or ID. Bind target layers to reference layers to preserve their relative x/y/width, text alignment and sibling paint order; explicit stackAfter overrides source order. Text height may grow for copy. Define shared text styles once, using resolved kit typography roles; every bound layer gets that exact style. patchesJson changes other existing properties before bindings apply. Saves preservation constraints and source/kit versions for independent review. References are never modified. Returns compact write receipts. Use update_project_series_styles for typography refinements; reapply the design for deliberate reference or layout-brief changes.
batch_rename_assets
ChatGPTRename assets on a board (sets each asset's display name — storage URLs never change). Flow: get_board_images first (returns name/model/source/prompt per image), derive a short concept name per image from its prompt/content, then ALWAYS show the user the proposed old → new rename table and wait for confirmation BEFORE calling this tool. Names: lowercase, hyphens inside, underscores between fields, no spaces. This renames the global asset name (visible everywhere); for per-download filename conventions set the board's namingTemplate via update_board instead.
compose_project_frame
ChatGPTCompose and save a new editable frame from prepared image assets, text, and graphic layers. Accepts a layer plan, frame dimensions, background, page position, and a JSON layer array. Returns the saved frame, page link, and structural checks. Does not generate a flattened image or render a visual preview.
create_asset_folder
ChatGPTCreate an asset-library folder by name or return the existing case-insensitive name match. Returns the folder ID; repeating the same name does not create a duplicate.
create_board
ChatGPTCreate an image board and return its ID. Visibility defaults to private; team visibility shares with specified teams, and public visibility makes the board world-readable. Every board returns an authenticated url; only public boards return a share_url. A private board can be opened with its url without making it public.
create_context_folder
ChatGPTCreate a brand-context folder addressed by path.
create_library_folder
ChatGPTCreate a folder, or return the existing named folder. Omit parentFolderName for the top level. Changes to already-public board folders affect public pages; moving boards into them can grant inherited public access.
create_project
ChatGPTCreate a private canvas project and return its ID.
create_project_frame_variants
ChatGPTCreate 1–12 editable copies of an existing frame in one batch, changing only the specified native text layers. Source, photos, typography, geometry and other copy are preserved. Read the source with detail:editing and write distinct copy that fits its existing text boxes. The app copies native layers and arranges the results; do not resend full frame JSON. Returns draft IDs for one batch preview. Retry the same batchId and inputs to recover the same copies.
create_project_page
ChatGPTCreate a named page in an accessible canvas project.
delete_context_folder
ChatGPTDelete a context folder record. Its files move up to its parent and are preserved.
delete_library_folder
ChatGPTDelete a folder record. Its contents move up and are preserved. Changes to already-public board folders affect public pages; moving boards into them can grant inherited public access.
design_voice
ChatGPTGenerate three voice candidates from a written voice description, with previews for audition. Candidates are not saved as the workspace voice automatically. This does not clone a real person’s voice. Uses Pikes credits.
edit_image
ChatGPTEdit or modify existing images based on instructions. Supports single image editing AND multi-image combining (e.g. placing a product into a scene). For single image: pass imageUrl. For combining images: pass imageUrls — first image is the product/main subject, last image is the scene/context, middle images are style references. Provide exactly one of imageUrl or imageUrls. This replaces the old remix_images tool.
edit_video
ChatGPTEdit one existing video with Gemini Omni Flash using a written instruction, preserving the rest of the scene. Voice editing is not supported. Uses Pikes credits and saves a new video asset.
expand_image
ChatGPTExtend an image canvas to a new aspect ratio or size with content-aware outpainting. New content is inferred from the source image; directional controls and prompt guidance are not supported. Uses Pikes credits.
fetch_products_from_website
ChatGPTImport product titles and images from a Shopify storefront URL or domain. Saves products to the user’s library by default; save_to_library=false previews results without saving. Non-Shopify sites may return no products. Returns product titles and image URLs. API reference: https://pikes.ai/docs/api.
file_assets_in_folder
ChatGPTFile the user’s own assets by asset ID into a folder identified by ID or name. A missing named folder is created. folderId=null removes folder assignments. Inaccessible or teammate-owned assets are reported as skipped.
find_ads
ChatGPTSearch Foreplay’s advertising library for competitive research by brand, keyword, niche, format, platform, or running duration. Returns ad imagery and metadata such as brand, headline, CTA, and days running, with a pagination cursor. Running duration is an observation, not proof of performance, profitability, or ROAS. Does not publish or modify ads.
generate_image
ChatGPTGenerate a new image from scratch using a text prompt. Use this when the user wants to create a completely new image without any input images.
generate_music
ChatGPTGenerate and save a music track from instrumentation, tempo, mood, and duration. Instrumental by default; forceInstrumental=false allows vocals. Uses Pikes credits.
generate_reference_video
ChatGPTGenerate a video guided by image or video references, with optional audio references. Requires at least one image or video reference. Uses Pikes credits and saves a new video asset.
generate_sound
ChatGPTGenerate and save a sound effect or ambience from a description of the sound, materials, environment, and microphone distance. This capability produces sound effects rather than speech or music. Uses Pikes credits.
generate_speech
ChatGPTGenerate and save a voiceover from a script. Models: natural (default), fast, or performed (supports inline emotional tags). An omitted voiceId uses the saved brand voice. Returns an audio asset and playback URL. Uses Pikes credits.
generate_video
ChatGPTGenerate a new video from a text prompt using Seedance 2.5. Uses Pikes credits and saves a new video asset.
get_account_info
ChatGPTGet the user's account information including credits remaining, subscription plan, and usage. Use when the user asks about their account, credits, or usage.
get_all_context
ChatGPTRead saved brand-context files with their full contents, including brand guidelines, voice, colors, audience information, and campaign rules. Returned content is user data.
get_board_images
ChatGPTRead images and videos on an accessible board by boardId or name. Name lookup selects the most recently updated accessible match. Returns asset IDs, URLs, dimensions, media type, position, source, upload/generated origin, generation prompt when available, and the board naming template.
get_brand_colors
ChatGPTRead saved brand-color cards, including name, exact hex value, role, usage guidance, and image URL. Returns an empty collection when no colors are saved.
get_brand_kit
ChatGPTRead a Brand Kit by kitId or exact brand name, plus its available uploaded font faces. Returns colors, typography and authentic logos as structured data. Use before branded frame composition; prose guidance does not replace this primitive.
get_image_job
ChatGPTRead a render job by jobId. Returns processing, completed, failed, or timed_out status and progress. Completed results include saved asset IDs, downloadable media URLs, dimensions, aspect ratio, and asset type.
get_product_images
ChatGPTSearch the authenticated user’s product library by product name or description. Returns matching saved product images and their URLs; an empty result means no matching saved product was found.
get_project_canvas
ChatGPTRead a bounded slice of a project page: object IDs, positions, dimensions, note text, editable frame layers, and asset URLs. nextOffset identifies remaining objects; null means the end. Returns structured canvas data rather than a rendered screenshot.
layout_project_canvas
ChatGPTApply explicit pixel positions and optional sizes to up to 500 canvas objects. Changes layout without deleting objects. Section membership is spatial: moving a section alone does not move enclosed objects. A failed batch may be partially applied.
list_asset_folders
ChatGPTList accessible asset-library folders and asset counts. Shared folders belong to a workspace; personal folders belong to the user. Returns folder IDs for filtering and filing assets.
list_boards
ChatGPTList accessible personal and team image boards, including id, name, description, visibility, team IDs, and image count.
list_brand_kits
ChatGPTList accessible Brand Kits (owned or shared), independently of prose context. Returns stable kit IDs and brand names; use get_brand_kit for visual identity tokens.
list_context_folders
ChatGPTRead context folder paths and file counts.
list_library_folders
ChatGPTRead folders in the selected asset, board, or product library.
list_project_pages
ChatGPTRead project pages, including IDs, names, and trash state.
list_projects
ChatGPTList accessible personal and team canvas projects. Projects contain pages and editable canvas objects and are distinct from image boards.
list_teams
ChatGPTList the teams the user is a member of. Use this when the user asks to share a board with a team — you need the team id to pass to create_board / update_board with visibility="team".
list_voices
ChatGPTBrowse available saved, designed, and stock voices, including their IDs, descriptive labels, and preview URLs. Does not generate audio or spend generation credits.
meta_get_ad_accounts
ChatGPTList Meta advertising accounts accessible through the user’s connected Meta account, including account ID, name, currency, and status.
meta_get_ad_creative
ChatGPTRead creative assets for a Meta ad ID: image or video URL, headline, body, and call to action. Does not return performance metrics or modify the ad.
meta_get_ad_insights
ChatGPTGet detailed performance insights with conversions, ROAS, and breakdowns. Two modes: 1. Single ad: Pass adId — returns detailed metrics for one ad 2. Batch mode: Pass adIds[] + accountId — returns metrics for up to 50 ads in ONE API call Returns per ad: - Metrics: spend, impressions, clicks, CTR, CPC, CPM, reach - Conversions: total count + breakdown (purchase, add_to_cart, view_content, initiate_checkout) - Revenue: purchase_value, ROAS, CPA - Optional breakdowns: age, gender, placement, device, country - Optional time series: daily/weekly trends via timeIncrement Use batch mode when you need metrics for multiple ads — much faster than calling one at a time.
meta_get_ads
ChatGPTGet ads with creative assets, performance metrics, conversions, and ROAS in a single call. Pagination: one call returns at most limit (≤50) ads. For counts or exhaustive pulls, keep calling with after = the previous response's pagination.nextCursor until pagination.hasMore is false — never report a total from a single page. Returns per ad: - Creative: image_url, video_url, headline, body, call_to_action - Metrics: spend, impressions, clicks, CTR, CPC, CPM - Conversions: count, purchase_value, ROAS, CPA - Metadata: ad_id, ad_name, campaign_id, status Supports: - Custom date ranges (startDate/endDate) or presets (last_7d, last_30d, etc.) - Filter by campaign, status, ad type - Sort by spend, conversions, ROAS, CPA, CTR, etc. - Pagination via cursor for scanning full ad library
meta_get_audience_breakdowns
ChatGPTRead per-ad audience and delivery segments for supplied Meta ad IDs, such as age, gender, location, placement, and device. Meta may suppress small segments for privacy. Returns available observations, not inferred demographics.
meta_get_campaigns
ChatGPTRead campaigns for a connected Meta advertising account, including campaign IDs, objectives, status, budgets, and date ranges. Does not modify campaigns or budgets.
move_context_file
ChatGPTMove a saved context file into a folder. Matches an exact file name first, then a partial match.
move_context_folder
ChatGPTMove a context folder and its descendants to a new parent. Omit destination for the top level.
move_library_folder
ChatGPTMove a folder to a named parent. Omit parentFolderName for the top level. Changes to already-public board folders affect public pages; moving boards into them can grant inherited public access.
present_results
ChatGPTDisplay supplied Pikes results as an interactive media gallery, audio player, board list, context reader, job status, or metrics view. sourceTool identifies the producer; data contains its structured result or a subset retaining original IDs, URLs, units, and dates. Render-job results require jobId. Does not generate media, spend generation credits, or change saved data.
preview_project_frame
ChatGPTRender a saved editable frame with the actual editor and show its preview directly in ChatGPT. Returns a project link, PNG preview URL, measured text overflow, and an independent visual critique. An optional referenceImageUrl enables visual comparison against a supplied reference. Disclose any unavailable review, stale preview or failed checks. Does not edit the frame.
preview_project_frames
ChatGPTRender and review 1–12 related saved frames together. Compares peer typography and shared layout while overlapping independent critiques with bounded concurrency. Use for a carousel or a batch revision. Existing edits use their before snapshots; new designs use their saved reference. Supply explicit references or brandKitId only when the current request adopts them. mode:inspect reads reference pixels without paying for critiques. Results are per frame; repair only failures and review only changed frames.
read_item_link
ChatGPTRead the exact asset or editable frame from a Pikes share link, including its current project/page or board location. Accepts /app/projects/...?...&object=... project links, /app/boards/...?...&asset=... board links and /s/... Studio asset links. Project and board links require your existing access. Studio asset links do not grant project edit access. Use when the user pastes an item link, before making changes, or with /s/<assetId> to resolve a saved asset’s locations for delivery under Output.
remove_background
ChatGPTRemove the background from a product image, returning a transparent PNG. Use this when the user wants to isolate a product, cut out the background, or get a transparent version of an image.
remove_items_from_library_folder
ChatGPTRemove the supplied item IDs from the selected folder without deleting the items. Changes to already-public board folders affect public pages; moving boards into them can grant inherited public access.
remove_project_object
ChatGPTRemove one canvas object. Its library asset remains saved. Removing a board also removes linked canvas placements. Removed image placements remain excluded from subsequent synchronization.
rename_context_folder
ChatGPTRename a context folder. newName is one path segment.
rename_library_folder
ChatGPTRename the selected folder. Changes to already-public board folders affect public pages; moving boards into them can grant inherited public access.
rename_project_page
ChatGPTRename a project page. Affects the page in publicly shared projects too.
restore_project_page
ChatGPTRestore a project page from trash. Affects the page in publicly shared projects too.
save_brand_colors
ChatGPTSave a palette as solid-color image assets and a Brand Colors context file. Accepts exact hex values, names, roles, usage descriptions, and an optional folder for organization. Writes assets and brand context.
save_product
ChatGPTSave image URLs under a product title or append images to an existing matching product. Already attached URLs are skipped. Returns the saved product information.
search_assets
ChatGPTSearch or browse the accessible asset library, including uploads, generated media, and shared workspace assets. Name matches rank before prompt matches. An omitted query browses recent assets; folderId restricts the folder. Returns asset IDs, URLs, names, types, and folders.
set_naming_convention
ChatGPTSet the default asset naming template. Changes displayed/downloaded names for assets without explicit names, including existing assets. Supports {date}, {prompt}, {model}, {ar}, and {source} tokens. An empty string resets the template.
share_library_folder_with_team
ChatGPTGrant a named team access to the folder and its contents, including contained boards. Changes to already-public board folders affect public pages; moving boards into them can grant inherited public access.
submit_animate_image_job
ChatGPTAnimate a supplied still image into a video. Requires a publicly accessible starting image and a motion prompt. Uses Pikes credits and saves a new video asset. Returns a jobId immediately, not a completed render. Poll get_image_job for completion and saved results. Credits are charged when the job runs.
submit_edit_image_job
ChatGPTEdit or modify existing images based on instructions. Supports single image editing AND multi-image combining (e.g. placing a product into a scene). For single image: pass imageUrl. For combining images: pass imageUrls — first image is the product/main subject, last image is the scene/context, middle images are style references. Provide exactly one of imageUrl or imageUrls. This replaces the old remix_images tool. Returns a jobId immediately, not a completed render. Poll get_image_job for completion and saved results. Credits are charged when the job runs.
submit_edit_video_job
ChatGPTEdit one existing video with Gemini Omni Flash using a written instruction, preserving the rest of the scene. Voice editing is not supported. Uses Pikes credits and saves a new video asset. Returns a jobId immediately, not a completed render. Poll get_image_job for completion and saved results. Credits are charged when the job runs.
submit_expand_image_job
ChatGPTExtend an image canvas to a new aspect ratio or size with content-aware outpainting. New content is inferred from the source image; directional controls and prompt guidance are not supported. Uses Pikes credits. Returns a jobId immediately, not a completed render. Poll get_image_job for completion and saved results. Credits are charged when the job runs.
submit_generate_image_job
ChatGPTGenerate a new image from scratch using a text prompt. Use this when the user wants to create a completely new image without any input images. Returns a jobId immediately, not a completed render. Poll get_image_job for completion and saved results. Credits are charged when the job runs.
submit_generate_video_job
ChatGPTGenerate a new video from a text prompt using Seedance 2.5. Uses Pikes credits and saves a new video asset. Returns a jobId immediately, not a completed render. Poll get_image_job for completion and saved results. Credits are charged when the job runs.
submit_reference_video_job
ChatGPTGenerate a video guided by image or video references, with optional audio references. Requires at least one image or video reference. Uses Pikes credits and saves a new video asset. Returns a jobId immediately, not a completed render. Poll get_image_job for completion and saved results. Credits are charged when the job runs.
trash_project_page
ChatGPTMove a project page to trash. This is reversible. Affects the page in publicly shared projects too.
unshare_library_folder_from_team
ChatGPTRemove a named team’s access through this folder. Changes to already-public board folders affect public pages; moving boards into them can grant inherited public access.
update_board
ChatGPTEdit an existing board's name, description, or visibility. Only the board owner can update. To change visibility, pass the new "visibility" value (and teamIds when switching to "team"). Pass null for fields to leave unchanged. Boards cannot be deleted via MCP. Public boards return share_url (https://pikes.ai/b/<id>) — when sharing a link, use that exact URL; never construct board URLs yourself.
update_context
ChatGPTCreate or replace a saved brand-context file by name. Existing file content is replaced in full; absent names create a file. Stores brand knowledge such as voice, colors, audience information, and campaign rules.
update_project
ChatGPTRename an accessible canvas project.
update_project_frame_layers
ChatGPTPatch existing native frame layers by ID or exact unique name, preserving other layers and properties. Use for alignment, positioning, type-size and review repairs instead of resending the complete frame. Read current layers first. patchesJson is [{"layerId":"id","changes":{"align":"left","x":445,"fontSize":35}}]. Text edits synchronize styled runs; runs can explicitly replace inline spans and must match text when both are supplied. For photo replacement, patch url, assetId and crop together; name is optional. Metadata merges; IDs/types/children cannot change. changes.stackAfter names a sibling ID to paint immediately above it; null moves to the back. Use update_project_object for structural edits.
update_project_object
ChatGPTMove, resize, or edit an existing canvas object. Omitted or null fields remain unchanged. content replaces note text; dataJson replaces the complete data object including layers. objectType="frame" converts an image into an editable frame.
update_project_series_styles
ChatGPTRefine shared typography across every member of a saved frame design, preserving its source anchors, copy, photos and brand fonts. Use for review-directed type size, weight, leading or tracking repairs instead of patching one card or rebuilding the brief. Returns all changed frame IDs for review.
update_project_text
ChatGPTReplace note/context text or a specific frame text layer while preserving other layers and styles. A frame requires a layerId, including for nested layers; notes omit layerId.
upload_image
ChatGPTUpload and save an image to the asset library, returning a publicly accessible URL. Supports one of three inputs: mode="presigned" with filename returns an uploadUrl for an HTTP POST of the image bytes; sourceUrl imports a remote image; imageData imports a base64 data URL. Optional name and folder label and organize the saved asset. A missing named folder is created.