create_post_draft
Draft a post for the user to approve LATER in the Socialync app (web/mobile). The draft is NOT sent to the platform yet -- the user must visit /mcp-drafts-approval to approve it. Use this ONLY when the user explicitly asks to "save as draft", "review later", or is not actively confirming in this chat -- for normal in-chat workflows, use publish_now (skips the app detour). Returns a draft_id, expiry, and dailyDraftsRemaining. Supports up to 10 images total via imageUrls (public https URLs) and/or base64Images (image bytes). Cannot attach video. Cannot draft to TikTok or YouTube (video only). Instagram requires at least one image. Hard cap: 10 drafts per UTC day per profile -- platform-security mechanism to keep the user's accounts under Meta/X/LinkedIn spam-detection thresholds, not a Socialync restriction.
schedule_post_draft
Draft a post to be SCHEDULED for future publishing, requiring user approval in the Socialync app FIRST. Use this ONLY when the user explicitly wants to review the draft in the app before it enters the schedule -- for direct scheduling without an app round-trip, use publish_scheduled. The draft is NOT scheduled yet -- the user must approve it in the Socialync app. Once approved, it enters the scheduled queue and publishes automatically at scheduledFor. Returns a draft_id, expiry, and dailyDraftsRemaining for the target publish day. Media: up to 10 images via imageUrls/base64Images, OR one video via videoUrl, OR existing Socialync media via mediaId (from list_media). TikTok/YouTube are allowed ONLY for video posts (YouTube also needs title). Instagram requires media. Hard cap: 10 drafts per UTC day per profile (the day determined by scheduledFor). Each future day has its own independent 10-cap.
get_draft_status
Check the status of a draft created via create_post_draft or schedule_post_draft. Returns the current state (pending, approved, rejected, expired, published) so you can tell the user what happened. Only returns drafts owned by this user.
approve_draft
Publish a pending draft NOW (or, for scheduled drafts, move it into the scheduled queue). Call this AFTER the user has explicitly confirmed in chat that they want to publish the draft. Do NOT call without explicit user consent. The draft must have been created via create_post_draft or schedule_post_draft, must still be pending, must belong to this user, and must not be expired. Returns per-platform success/failure for immediate publishes, or scheduled post IDs for scheduled publishes.
publish_now
Publish a post IMMEDIATELY to one or more platforms. PREFERRED tool when the user is interacting with you in chat -- it skips the Socialync drafts page entirely. There is NO approval modal -- this publishes as soon as you call it. Before calling, you MUST show the user the exact caption, platforms, and images you will post, and get their explicit confirmation in the chat. Treat this the same way you would treat sending an email on someone's behalf. If the user uploaded image(s) to you in the conversation, pass them via base64Images (preferred) -- Socialync will host them for you. If the user gave you a public image URL, pass it via imageUrls. Returns per-platform success/failure. Same validation as create_post_draft: text and/or up to 10 images total (URLs + base64 combined), Instagram requires at least one image, no TikTok/YouTube, 10/day cap per profile (platform-security mechanism to keep accounts under spam-detection thresholds).
publish_scheduled
Schedule a post for future publishing. PREFERRED tool when the user is interacting with you in chat -- skips the Socialync drafts page. There is NO approval modal -- once you call this, the post enters the scheduled queue and will publish automatically at scheduledFor. Before calling, show the user the caption, platforms, media, and the scheduled time, and get their explicit confirmation in chat. Media options: base64Images (user uploaded images to you in chat), imageUrls (public https), videoUrl (ONE public https video URL -- Socialync never stores video, platforms fetch it at publish), or mediaId (media already in Socialync, from list_media -- use for "the video I uploaded"). TikTok/YouTube allowed for VIDEO posts only (YouTube also needs title). Returns scheduled post IDs. Same validation as schedule_post_draft. 10/day cap per profile per publish day (UTC date of scheduledFor).
get_scheduled_posts
List all pending scheduled posts for the user. Shows platform, caption, scheduled time, and status.
delete_scheduled_post
Cancel a pending scheduled post before it publishes. Pass a postId to cancel a single platform entry, or a groupId to cancel every platform in a grouped multi-platform post at once (the ids publish_scheduled returns together share a groupId). Destructive and not undoable -- show the user what will be cancelled and get explicit confirmation in chat first. Already-published posts cannot be cancelled. Call get_scheduled_posts to find ids.
get_post_history
Get the user's recent post history with per-platform success/failure tracking. Useful for checking what was posted and what failed.
get_analytics
Get aggregated analytics matching the Socialync analytics page. Returns totals (views, likes, comments, shares, saves, followers) plus period-over-period percentage changes. Set breakdown="by_platform" to get separate metrics for each connected platform (the comparison cards). Set includeTimeseries=true to also get daily snapshots per platform for trend analysis.
get_top_posts
Get the user's posts with engagement metrics, ranked by engagement or recency. Returns the same data as the Top Performing Posts and Recent Posts tables on the analytics page: views, likes, comments, shares, engagement rate, and a status (viral/good/average/flop).
generate_content
Use Socialync's AI to generate platform-optimized captions. The AI knows each platform's tone, character limits, and best practices. Requires Premium plan.