{"name":"Pikes AI","version":"1.0.0","description":"AI-powered image generation and editing. Generate product photography, edit images with AI, remix and combine images, expand canvases.","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 one URL. For combining images: pass multiple URLs — first image is the product/main subject, last image is the scene/context, middle images are style references. This replaces the old remix_images tool."},{"name":"expand_image","description":"Extend or outpaint an image's canvas. Use this when the user wants to expand the image boundaries, add more space around the image, or extend the scene beyond the current edges."},{"name":"animate_image","description":"Animate a still image into a short video. Picks between several models via the `model` param:\n- veo3_fast (default): Google Veo 3.1 Fast. 4/6/8s. 16:9 or 9:16. Optional audio + end-frame keyframe mode (pass endImageUrl).\n- veo3: Google Veo 3.1 base — higher quality / higher cost than veo3_fast. Same constraints (4/6/8s, 16:9/9:16, optional audio + end-frame).\n- kling: Kling 3.0 Pro image-to-video. 5–10s. Native audio (toggle with generateAudio). Optional end frame (endImageUrl).\n- seedance: Bytedance Seedance v1.5 Pro at 720p with native audio. 3–12s. No end frame.\n- seedance2: Bytedance Seedance 2.0 at 720p. 4–15s. Optional audio + end frame.\n\nEnd-frame mode (pass endImageUrl) is supported by veo3_fast / veo3 / kling / seedance2. Frames should share composition/lighting/crop for clean transitions. Set reverse=true to programmatically reverse the generated video post-hoc (ffmpeg) — never prompt the model to render motion backwards."},{"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":"upload_image","description":"Upload an image to get a publicly accessible URL for use with edit_image, expand_image, etc.\n\nTHREE MODES (use ONE):\n1. PRESIGNED (fastest) - Get upload URLs, then upload directly via pikes.ai:\n   { \"mode\": \"presigned\", \"filename\": \"photo.jpg\" }\n   Returns uploadUrl + publicUrl. Upload via: curl -X POST \"<uploadUrl>\" --data-binary @photo.jpg\n\n2. URL - Fetch from remote URL and re-host:\n   { \"sourceUrl\": \"https://example.com/image.jpg\" }\n\n3. BASE64 - Send image data directly (slower but always works):\n   { \"imageData\": \"data:image/jpeg;base64,...\" }\n\nRECOMMENDED: Use presigned mode for local files - it's 10x faster than base64.\n\nTROUBLESHOOTING: If presigned upload fails with \"domain blocked\" or \"403\", add pikes.ai to allowed domains:\nSettings → Capabilities → Code execution and file creation → Additional allowed domains → add \"pikes.ai\""},{"name":"get_brand_context","description":"Get the user's brand context including brand memory, voice/guidelines, and brand colors. Call this at the start of new conversations to understand the user's brand identity and preferences."},{"name":"update_brand_memory","description":"Update the brand memory with something you learned from this conversation. Rewrite the full memory with your updates incorporated. Call this when you discover brand preferences, visual patterns, photography rules, or audience insights."},{"name":"update_brand_voice","description":"Update the brand voice and guidelines. Use this when the user provides or refines their brand positioning, tone, audience definition, or communication style."},{"name":"update_brand_colors","description":"Update the brand colors when the user specifies or refines their color palette. Use this when colors are explicitly mentioned or when analyzing their website/assets reveals consistent color usage."},{"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 user's saved product library and return image URLs. Call this tool IMMEDIATELY — without asking the user first — whenever they mention a product by name or reference (e.g. \"the t-shirt\", \"my sneakers\", \"the coffee bag\", \"possible t shirt\", \"that product\"). Do NOT ask the user to upload an image or confirm — just call this tool. The returned URLs can be passed directly to edit_image."},{"name":"list_boards","description":"List the user's image boards. Use this BEFORE add_images_to_board or update_board to find an existing board's id, or to confirm a board with that name doesn't already exist before calling create_board. Includes personal boards and any team boards the user has access to. Returns: id, name, description, is_public, team_ids, image_count."},{"name":"create_board","description":"Create a new image board. Returns the board id — pass it to add_images_to_board next. Visibility defaults to \"private\"; pass \"team\" + teamIds to share with one or more teams, or \"public\" to make the board world-readable."},{"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."},{"name":"add_images_to_board","description":"Add one or more image assets to a board. Pass the asset ids returned by generate_image / edit_image / expand_image (the \"id\" field in their result), or fetched from the pikes://images/recent resource. The user must be the board owner or a member of one of the board's teams."},{"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":"meta_get_ad_accounts","description":"List all Meta ad accounts the user has access to. Returns account ID, name, currency, and status. Call this first to get the accountId needed for other Meta tools."},{"name":"meta_get_campaigns","description":"List campaigns for an ad account. Returns campaign ID, name, objective, status, budget, and date range.\n\n**Use this to:**\n- See all campaigns and their objectives (CONVERSIONS, TRAFFIC, AWARENESS, etc.)\n- Understand budget allocation across campaigns\n- Get campaignId to filter ads by campaign in meta_get_ads\n- See which campaigns are active vs paused"},{"name":"meta_get_ads","description":"Get ads with creative assets, performance metrics, conversions, and ROAS in a single call.\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":"Get just the creative assets for a specific ad by ID. Use this when you already know the ad_id and only need the creative (not metrics).\n\n**Returns:**\n- image_url or video_url\n- headline\n- body/description\n- call_to_action\n\n**When to use:**\n- User says \"get me the creative for ad XYZ\"\n- You need to refresh creative data for a specific ad\n- You want creative-only data without metrics\n\n**Note:** In most cases, use meta_get_ads instead as it returns creatives + metrics together."},{"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":"Get available audience and delivery segment rows for specific ads.\n\nThis is a primitive data tool. The agent should compose it with meta_get_ads:\n- For \"older women\", fetch ads first, then call this with adIds, then filter gender=female and age=45-54/55-64/65+.\n- For \"who is this ad working for\", call this for that ad ID and summarize best age/gender, country/region, placement, and device.\n- For \"which ads work in this demo\", call this for many ad IDs and rank the matching segment rows.\n\nReturns per-ad segment data where Meta allows it. Meta may suppress small segments for privacy."}],"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"}