Using Sendcove
Sendcove is a social media scheduler. Its MCP server gives you tools to manage the user's posts, media, analytics and inbox. If no Sendcove tools are available, tell the user to connect Sendcove (setup guides: https://www.sendcove.app/features/mcp).
Start with the accounts
- Call
list_accountsbefore creating or changing a post. Pass the returnedids asaccountIds; Sendcove works out the platforms from them. - If the user has several accounts and didn't say which to use, ask. Don't post to every account by default.
- An account with
needsReconnect: truewill fail to publish. Tell the user to reconnect it in Sendcove.
Creating posts
create_postmakes a draft unless you setstatus. Drafts are the safe default: create one, show the user what you made, and let them schedule or publish it.contentis the default text for every platform. UseplatformContentto give a platform its own text, e.g. a 280-character version fortwitterand a longer caption forinstagram. Keys:twitter,instagram,tiktok,threads,bluesky,facebook,linkedin(strings) andyoutube({ title, description }).- Per-platform options (Instagram post type, YouTube video type and visibility, TikTok privacy, Bluesky reply settings, X community, and so on) go in
platformSettings. Take the allowed fields and values from the tool's input schema and its descriptions instead of guessing. Before settingplatformSettings.tiktok, callget_tiktok_creator_infofor the privacy levels and interactions that account allows. - Character limits are checked when the post is published: X 280, Bluesky 300, Threads 500, Instagram and TikTok 2200, LinkedIn 3000, YouTube title 100 and description 5000. Keep each platform's text within its limit (use
platformContent) so the post doesn't fail later. - Instagram and TikTok posts need media; YouTube needs one video.
- Threads: pass follow-up posts as
threadItems(each{ content, mediaUrls? }). They're published as a thread on X, Bluesky and Threads (Pro and Max); other platforms getcontentonly.update_postwiththreadItems: []stops threading. - Hashtags:
list_hashtag_setsreturns the user's saved sets (stored without#). - Pass an
idempotencyKey(any unique string, 8 to 200 characters) tocreate_post,duplicate_postandreply_to_inbox_item. If a call times out or you're unsure it went through, retry with the same key: you get the first result instead of a duplicate post or reply. update_postchanges only the fields you pass, butplatformContent,platformSettingsandthreadItemseach replace the whole stored value. Callget_postfirst and send the complete object.
Media
- Media must be in the user's Sendcove media library before it can go in
mediaUrls.list_mediashows what's already there. - A public https URL:
upload_media_from_url, then use the returnedurl. - A local file: call
create_media_upload_urland run the returned curl command with the real file path (for examplecurl -s -X POST '<uploadUrl>' -F 'file=@/path/to/photo.jpg'). The JSON response has theurlto use. The upload URL lasts 10 minutes and needs no API key. For files over 4 MB, passcontentTypeand run the two returned commands (PUT to storage, then the finalize POST) in that order. Add-F convertForInstagram=trueto convert an image to JPEG for Instagram. - Allowed types: JPEG, PNG, GIF, WebP, MP4, MOV, AVI.
Scheduling and publishing
Only schedule, publish or reply when the user asked for it in this conversation. Writing a post is not permission to publish it.
- Schedule:
status: "scheduled"withscheduledForas ISO 8601 with an offset (2026-11-20T15:00:00Z). Convert the user's local time and confirm the time zone if it's unclear. Or passnextOpenSlot: trueto use the next free posting time the user set for those accounts. - Publish now:
status: "pending"oncreate_post, orpublish_postfor an existing post. - After publishing, call
get_post: each account has its ownstatus(published,failed,pending) anderror. A failed post usually means one account failed.publish_poston that post retries only the failed accounts; it never re-posts where it's already live. delete_postcannot be undone. Confirm before deleting.
Drafts-only connections (403)
Scheduling, publishing and replying need a Pro or Max plan and a connection that allows publishing. On the Basic plan, or with an API key or connected app set to drafts only, those calls return 403 "This API key or connected app can only create drafts".
When that happens, don't retry and don't work around it. Save the post as a draft and tell the user:
I saved this as a draft in Sendcove. This connection is drafts only, so I can't schedule or publish it. To let me publish, you need a Pro or Max plan, then reconnect Sendcove here and choose "Allow publishing" (or use an API key created with "Allow publishing" on, under Account > API keys in Sendcove). You can also schedule the draft yourself in Sendcove.
Analytics and inbox
get_engagement: totals, per-platform breakdown, top posts, and each account's best recent posts against its own median (timesMedianshows how much better a post did, not why).get_post_analytics: one published post's metrics per account; passrefresh: truefor fresh numbers (cached for an hour). Not every platform reports every metric.get_best_times: best days and hours to post, from the user's own engagement.list_inbox/get_inbox_item: replies, mentions and comments.reply_to_inbox_itemposts a public reply, so show the user the text and get a yes first.update_inbox_itemmarks items read, unread or archived.