{"name":"kickitai","version":"1.0.0","description":"KickitAI — social media scheduling and download platform","protocol":"MCP StreamableHTTP","protocolVersion":"2024-11-05","endpoint":"/mcp","tools":[{"name":"download_media","description":"Download a social media video or image (Instagram, TikTok, Twitter, YouTube, etc.) and upload it to the CDN. Returns a public CDN URL."},{"name":"get_user_profile","description":"Look up a KickitAI user by phone number. Returns account existence, userId, connected platforms, and subscription status."},{"name":"list_brands","description":"List all brands belonging to the authenticated user. Requires a user API key (kk_live_...)."},{"name":"list_scheduled_posts","description":"List the user's scheduled posts. Requires a user API key (kk_live_...)."},{"name":"get_subscription","description":"Get the authenticated user's subscription status, plan tier, usage percentage, and billing cycle dates. Requires a user API key (kk_live_...)."},{"name":"create_support_ticket","description":"Create a support ticket on behalf of the authenticated user. Requires a user API key (kk_live_...)."},{"name":"create_post","description":"Schedule a new social media post. Always schedules for the future (minimum 5 minutes).\n\nCAPTION LIMITS (enforced): twitter=280, bluesky=300, threads=500, linkedin=3000, instagram/tiktok=2200, youtube=5000, facebook=63206. The post is rejected if caption exceeds any targeted platform's limit.\n\nMEDIA: Use cdnUrl from create_upload_url. Only .mp4 video is supported — convert .mov/.avi first with ffmpeg. mediaUrls are automatically normalized to the correct internal format.\n\nRequires a user API key (kk_live_...)."},{"name":"get_post","description":"Get a scheduled post by its ID. Requires a user API key (kk_live_...)."},{"name":"update_post","description":"Update a scheduled post (caption, scheduledFor, platforms). Only scheduled or draft posts can be updated. Requires a user API key (kk_live_...)."},{"name":"delete_post","description":"Delete a scheduled post. Only scheduled or draft posts can be deleted. Requires a user API key (kk_live_...)."},{"name":"delete_platform_post","description":"Delete a published post from the actual social media platform (removes it live) and marks the platform entry as deleted in KickitAI. Works on published or partial posts. Use delete_post to cancel a not-yet-published scheduled post. Requires a user API key (kk_live_...)."},{"name":"list_posts","description":"List the authenticated user's posts with optional filters. Requires a user API key (kk_live_...)."},{"name":"list_analytics","description":"List analytics for the user's published posts. Returns per-post metrics. Requires a user API key (kk_live_...)."},{"name":"sync_analytics","description":"Trigger an analytics sync for the user's published posts. Returns immediately with a confirmation message. Requires a user API key (kk_live_...)."},{"name":"list_post_results","description":"List per-platform publish results for the user's posts. Shows publish status, error, and platform post URL per platform. Requires a user API key (kk_live_...)."},{"name":"upload_media","description":"Upload media to the CDN by providing a public URL. Returns a mediaId and CDN URL. Requires a user API key (kk_live_...)."},{"name":"list_media","description":"List media files uploaded by the authenticated user. Requires a user API key (kk_live_...)."},{"name":"delete_media","description":"Delete a media file by mediaId. Idempotent — returns success even if media not found. Requires a user API key (kk_live_...)."},{"name":"create_upload_url","description":"Generate a presigned AWS S3 PUT URL to upload a local file directly to KickitAI media storage. Returns uploadUrl (PUT raw bytes), mediaId, and cdnUrl ready for create_post.\n\nSUPPORTED FORMATS: video/mp4 (.mp4) only for video. Images: jpeg, png, gif, webp.\n\nREJECTED: .mov, .avi, .mkv, .webm and other video formats. If you have a non-mp4 video, convert it first:\n  ffmpeg -i input.mov -c:v libx264 -preset fast -crf 22 -c:a aac -movflags +faststart output.mp4\n\nRequires a user API key (kk_live_...)."},{"name":"generate_dashboard_link","description":"Generate a one-time auto-login link to the KickitAI dashboard for the current user. Use this instead of performing destructive actions (delete, cancel). The link lets the user take the action themselves securely."},{"name":"create_brand","description":"Create a new brand workspace for the authenticated user. Returns the created brand."},{"name":"update_brand","description":"Update an existing brand. Requires the brandId from list_brands."},{"name":"set_default_brand","description":"Set a brand as the default brand for the user."},{"name":"share_brand","description":"Share a brand with another user by email address."},{"name":"get_brand_limits","description":"Get the brand limits for the current subscription tier (e.g. Starter=1 brand, Pro=3, Enterprise=unlimited)."},{"name":"get_platform_status","description":"Get the connected social media platform status for the user's brands."},{"name":"connect_platform","description":"Generate a one-click magic link that authenticates the user and starts the OAuth flow for a specific social media platform and brand. The user clicks the link, approves on the provider, and lands back on the dashboard with the platform connected."},{"name":"list_api_keys","description":"List all active API keys for the authenticated user. Returns name, prefix, creation date, and isInternal flag. Does NOT return the raw key hash."},{"name":"create_api_key","description":"Create a new kk_live_ API key for the authenticated user. The raw key is returned once only — it cannot be retrieved again."},{"name":"revoke_api_key","description":"Revoke an API key by its keyId. Cannot revoke bot-provisioned (isInternal: true) keys."},{"name":"get_boosend_status","description":"Check if the user has connected their BooSend account for DM automation. Returns connection status. If not connected, returns a magic link URL that auto-logs the user in and redirects to the BooSend OAuth connect flow."},{"name":"list_boosend_automations","description":"List the user's BooSend DM automations (Instagram, WhatsApp, Telegram). Returns automation name, status (active/draft), trigger type, and execution count. Requires BooSend to be connected — call get_boosend_status first if unsure."},{"name":"toggle_boosend_automation","description":"Activate or deactivate a BooSend DM automation. Use list_boosend_automations to get the automationId first."},{"name":"list_boosend_tools","description":"List all available BooSend MCP tools with their names, descriptions, and input schemas. Use this to discover what you can do before calling call_boosend_tool."},{"name":"call_boosend_tool","description":"Call any BooSend MCP tool directly. Use list_boosend_tools first to discover available tool names and their required arguments. Covers all 43 BooSend tools: automations, contacts, conversations, analytics, knowledge bases, workspaces, Instagram/WhatsApp/Telegram accounts, AI agents, tracking links, and more."},{"name":"list_video_voices","description":"List the available AI voices for video creation. Returns voice ID, name, gender, and accent. Use the voiceId when calling create_video."},{"name":"create_video","description":"Create a short social media video (9:16 portrait) from a topic. If script is provided (e.g. from a multi-turn support bot conversation), it is used directly — no AI script generation. Free tier: 2 videos/month. Returns a jobId — use get_video_status to poll for the download URL."},{"name":"get_video_status","description":"Check the render status of a video job created with create_video. Returns status (queued/generating/rendering/complete/failed) and a CDN download URL when complete."},{"name":"claude_watch_video","description":"Analyse a rendered video using Claude Watch — extracts frames and returns visual improvement suggestions (pacing, text, colour, hierarchy). Use on a completed video r2Url to get feedback before a refinement render."},{"name":"get_account_overview","description":"Get a complete overview of the user's account in one call: subscription tier and status, brand count, scheduled post count, API key count, and service window status. Useful as a quick health check."}]}