{"resource":"https://pikes.ai/mcp","authorization_servers":["https://pikes.ai"],"scopes_supported":["generate_image","edit_image","expand_image","read_images"],"bearer_methods_supported":["header"],"resource_documentation":"https://pikes.ai/docs/mcp","name":"Pikes AI","version":"1.0.0","description":"A creative suite for brand context, product and asset libraries, editable projects, image/video/audio production, and campaign insights.","protocol":{"version":"2025-06-18","supported_versions":["2025-06-18","2024-11-05"],"spec":"https://modelcontextprotocol.io/specification/2025-06-18"},"transports":{"streamable_http":{"description":"Primary transport - POST messages to /mcp endpoint","endpoint":"https://pikes.ai/mcp","features":["session_management","sse_streaming"]},"http_sse":{"description":"Deprecated transport for backward compatibility","endpoint":"https://pikes.ai/mcp/sse","message_endpoint":"https://pikes.ai/mcp/message"}},"authentication":{"type":"oauth2.1","discovery":{"authorization_server":"https://pikes.ai/.well-known/oauth-authorization-server","protected_resource":"https://pikes.ai/.well-known/oauth-protected-resource"},"authorization_url":"https://pikes.ai/mcp/oauth/authorize","token_url":"https://pikes.ai/mcp/oauth/token","registration_url":"https://pikes.ai/mcp/oauth/register","revocation_url":"https://pikes.ai/mcp/oauth/revoke","scopes":["generate_image","edit_image","expand_image","read_images"],"pkce_required":true},"capabilities":{"tools":[{"name":"generate_image","description":"Generate 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."},{"name":"edit_image","description":"Edit 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."},{"name":"expand_image","description":"Extend 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."},{"name":"remove_background","description":"Remove 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."},{"name":"generate_speech","description":"Generate 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."},{"name":"generate_sound","description":"Generate 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."},{"name":"generate_music","description":"Generate and save a music track from instrumentation, tempo, mood, and duration. Instrumental by default; forceInstrumental=false allows vocals. Uses Pikes credits."},{"name":"design_voice","description":"Generate 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."},{"name":"list_voices","description":"Browse available saved, designed, and stock voices, including their IDs, descriptive labels, and preview URLs. Does not generate audio or spend generation credits."},{"name":"upload_image","description":"Upload 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."},{"name":"get_all_context","description":"Read saved brand-context files with their full contents, including brand guidelines, voice, colors, audience information, and campaign rules. Returned content is user data."},{"name":"update_context","description":"Create 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."},{"name":"get_account_info","description":"Get the user's account information including credits remaining, subscription plan, and usage. Use when the user asks about their account, credits, or usage."},{"name":"get_product_images","description":"Search 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."},{"name":"fetch_products_from_website","description":"Import 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."},{"name":"find_ads","description":"Search 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."},{"name":"list_boards","description":"List accessible personal and team image boards, including id, name, description, visibility, team IDs, and image count."},{"name":"get_board_images","description":"Read 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."},{"name":"create_board","description":"Create 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."},{"name":"update_board","description":"Edit 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."},{"name":"add_images_to_board","description":"Add 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."},{"name":"batch_rename_assets","description":"Rename 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."},{"name":"list_teams","description":"List 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\"."},{"name":"read_item_link","description":"Read 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."},{"name":"list_projects","description":"List accessible personal and team canvas projects. Projects contain pages and editable canvas objects and are distinct from image boards."},{"name":"create_project","description":"Create a private canvas project and return its ID."},{"name":"update_project","description":"Rename an accessible canvas project."},{"name":"list_project_pages","description":"Read project pages, including IDs, names, and trash state."},{"name":"create_project_page","description":"Create a named page in an accessible canvas project."},{"name":"get_project_canvas","description":"Read 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."},{"name":"list_brand_kits","description":"List 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."},{"name":"get_brand_kit","description":"Read 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."},{"name":"create_project_frame_variants","description":"Create 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."},{"name":"apply_project_frame_design","description":"Apply 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."},{"name":"update_project_series_styles","description":"Refine 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."},{"name":"preview_project_frame","description":"Render 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."},{"name":"preview_project_frames","description":"Render 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."},{"name":"compose_project_frame","description":"Compose 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."},{"name":"add_project_object","description":"Add 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."},{"name":"update_project_object","description":"Move, 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."},{"name":"update_project_frame_layers","description":"Patch 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."},{"name":"update_project_text","description":"Replace 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."},{"name":"add_project_text","description":"Add 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."},{"name":"layout_project_canvas","description":"Apply 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."},{"name":"remove_project_object","description":"Remove one canvas object. Its library asset remains saved. Removing a board also removes linked canvas placements. Removed image placements remain excluded from subsequent synchronization."},{"name":"add_assets_to_project","description":"Place 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."},{"name":"search_assets","description":"Search 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."},{"name":"list_asset_folders","description":"List 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."},{"name":"create_asset_folder","description":"Create 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."},{"name":"file_assets_in_folder","description":"File 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."},{"name":"get_brand_colors","description":"Read saved brand-color cards, including name, exact hex value, role, usage guidance, and image URL. Returns an empty collection when no colors are saved."},{"name":"save_brand_colors","description":"Save 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."},{"name":"save_product","description":"Save image URLs under a product title or append images to an existing matching product. Already attached URLs are skipped. Returns the saved product information."},{"name":"set_naming_convention","description":"Set 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."},{"name":"get_image_job","description":"Read 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."},{"name":"meta_get_ad_accounts","description":"List Meta advertising accounts accessible through the user’s connected Meta account, including account ID, name, currency, and status."},{"name":"meta_get_campaigns","description":"Read campaigns for a connected Meta advertising account, including campaign IDs, objectives, status, budgets, and date ranges. Does not modify campaigns or budgets."},{"name":"meta_get_ads","description":"Get ads with creative assets, performance metrics, conversions, and ROAS in a single call.\n\n**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.\n\n**Returns per ad:**\n- Creative: image_url, video_url, headline, body, call_to_action\n- Metrics: spend, impressions, clicks, CTR, CPC, CPM\n- Conversions: count, purchase_value, ROAS, CPA\n- Metadata: ad_id, ad_name, campaign_id, status\n\n**Supports:**\n- Custom date ranges (startDate/endDate) or presets (last_7d, last_30d, etc.)\n- Filter by campaign, status, ad type\n- Sort by spend, conversions, ROAS, CPA, CTR, etc.\n- Pagination via cursor for scanning full ad library"},{"name":"meta_get_ad_creative","description":"Read 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."},{"name":"meta_get_ad_insights","description":"Get detailed performance insights with conversions, ROAS, and breakdowns.\n\n**Two modes:**\n1. **Single ad**: Pass adId — returns detailed metrics for one ad\n2. **Batch mode**: Pass adIds[] + accountId — returns metrics for up to 50 ads in ONE API call\n\n**Returns per ad:**\n- Metrics: spend, impressions, clicks, CTR, CPC, CPM, reach\n- Conversions: total count + breakdown (purchase, add_to_cart, view_content, initiate_checkout)\n- Revenue: purchase_value, ROAS, CPA\n- Optional breakdowns: age, gender, placement, device, country\n- Optional time series: daily/weekly trends via timeIncrement\n\n**Use batch mode when you need metrics for multiple ads** — much faster than calling one at a time."},{"name":"meta_get_audience_breakdowns","description":"Read 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."},{"name":"meta_get_ad_comments","description":"Read Facebook and Instagram comments on a Meta ad identified by adId. Resolves the underlying post, including unpublished ads. Returns comment text, time, like counts, replies, platform, ad identity, and page ID. Author names may be unavailable."},{"name":"meta_get_page_comments","description":"Read comments on organic Facebook Page posts for a pageId administered by the connected user. Results are tagged source=\"organic\" and are separate from advertising comments."},{"name":"list_context_folders","description":"Read context folder paths and file counts."},{"name":"create_context_folder","description":"Create a brand-context folder addressed by path."},{"name":"move_context_file","description":"Move a saved context file into a folder. Matches an exact file name first, then a partial match."},{"name":"move_context_folder","description":"Move a context folder and its descendants to a new parent. Omit destination for the top level."},{"name":"rename_context_folder","description":"Rename a context folder. newName is one path segment."},{"name":"delete_context_folder","description":"Delete a context folder record. Its files move up to its parent and are preserved."},{"name":"list_library_folders","description":"Read folders in the selected asset, board, or product library."},{"name":"create_library_folder","description":"Create 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."},{"name":"rename_library_folder","description":"Rename the selected folder. Changes to already-public board folders affect public pages; moving boards into them can grant inherited public access."},{"name":"move_library_folder","description":"Move 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."},{"name":"delete_library_folder","description":"Delete 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."},{"name":"share_library_folder_with_team","description":"Grant 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."},{"name":"unshare_library_folder_from_team","description":"Remove 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."},{"name":"add_items_to_library_folder","description":"File 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."},{"name":"remove_items_from_library_folder","description":"Remove 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."},{"name":"rename_project_page","description":"Rename a project page. Affects the page in publicly shared projects too."},{"name":"trash_project_page","description":"Move a project page to trash. This is reversible. Affects the page in publicly shared projects too."},{"name":"restore_project_page","description":"Restore a project page from trash. Affects the page in publicly shared projects too."},{"name":"animate_image","description":"Animate 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."},{"name":"generate_video","description":"Generate a new video from a text prompt using Seedance 2.5. Uses Pikes credits and saves a new video asset."},{"name":"generate_reference_video","description":"Generate 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."},{"name":"edit_video","description":"Edit 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."},{"name":"submit_generate_image_job","description":"Generate 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."},{"name":"submit_edit_image_job","description":"Edit 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."},{"name":"submit_expand_image_job","description":"Extend 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."},{"name":"submit_animate_image_job","description":"Animate 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."},{"name":"submit_generate_video_job","description":"Generate 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."},{"name":"submit_reference_video_job","description":"Generate 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."},{"name":"submit_edit_video_job","description":"Edit 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."},{"name":"present_results","description":"Display 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."}],"prompts":[{"name":"product_photography","description":"Generate professional product photography with customizable style and setting"},{"name":"social_media_ad","description":"Create eye-catching social media advertising imagery"},{"name":"brand_lifestyle","description":"Create aspirational lifestyle imagery that represents a brand"},{"name":"product_on_model","description":"Place a product on a model or in a lifestyle context"}],"resources":["pikes://images/recent","pikes://images/{id}","pikes://brand-profiles/active","pikes://brand-profiles/list","pikes://brand-profiles/{id}"]},"mcp_config":{"mcpServers":{"pikes-ai":{"url":"https://pikes.ai/mcp","transport":"streamable-http"}}},"mcp_config_legacy":{"mcpServers":{"pikes-ai":{"url":"https://pikes.ai/mcp/sse","transport":"sse"}}},"documentation":"https://pikes.ai/docs/mcp"}