SupaBird
Server Details
SupaBird is your social media growth agent. Find viral content, write in your voice and schedule posts across all major social platforms from any AI agent.
- Status
- Healthy
- Uptime
- 8.7% over the last 24 hours
- OAuth
- Works in Glama
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 64 tools
The set covers many distinct domains, but there are numerous near-duplicate tools such as get_user_last_tweets vs get_user_timeline, get_tweet_replies vs get_tweet_replies_v2, get_list_tweets vs get_list_timeline, and four separate writing-style tools. Descriptions do explain the differences, but an agent must read carefully to avoid choosing the wrong variant. Overlap is significant enough to create real misselection risk.
Names are consistently snake_case and mostly follow a verb_noun pattern such as get_user_info, schedule_post, search_tweets, and unschedule_post. Minor deviations exist, including version suffixes like get_tweet_replies_v2 and prefix variation like batch_get_users_by_ids. The overall pattern remains predictable.
At 64 tools, the surface is far too large for an agent to navigate efficiently, even though the server covers several real subdomains: scheduling, cross-posting, analytics, search, communities, lists, writing, and tasks. Many tools are niche read variants or style variants that could be consolidated. The count is excessive for the apparent scope.
The server provides broad lifecycle coverage: search and read X data, generate and save ideas, write drafts, schedule, cross-post, retrieve published URLs, unschedule, and view analytics. Minor gaps remain around editing existing drafts or posts and managing media beyond upload/schedule flows. Core social media management workflows are well covered.
Publisher details
- Operator
- SupaBird
- Operator website
- https://supabird.io
- Vendor relationship
- First-party
- Documentation
- https://github.com/Farid18baku/supabird-mcp
- Trust center
- Not available
- Restrictions
- Requires a SupaBird account (free trial available). Tool usage is paid from the account's SupaBird credit wallet. Sign-in is OAuth 2.1; no API key.
Available Tools
64 toolsadd_posting_slotAdd Posting SlotAInspect
Add a repeating posting slot to the weekly calendar.
Ask for weekday (or today/tomorrow) and local time (HH:MM, 24-hour) if missing. Optional tag_name such as value, fun, or random.
This changes the weekly template, not a single date. Confirm with the user before adding.
Inputs: weekday (required), local_time (required), tag_name, tag_color, +1 more.
batch_get_users_by_idsARead-onlyIdempotentInspect
Look up public profiles for up to 20 numeric user ids the user already named.
Inputs: userIds (required).
check_follow_relationshipCRead-onlyIdempotentInspect
Check whether source_user_name follows / is followed by target_user_name.
Inputs: source_user_name (required), target_user_name.
check_ideas_statusARead-onlyIdempotentInspect
Check the status of a generation job started by generate_ideas. If status is 'running': inform the user and call this tool again after a few seconds with the same job_id. Generation often takes 60–180 seconds. Do not stop after 30 seconds. If status is 'completed': present the posts. If status is 'failed': show the error. Never stop polling until status is 'completed' or 'failed'.
RESPONSE FORMATTING: Always display the full post content as-is, never summarize, shorten, or paraphrase. Show each post in its entirety exactly as returned.
Inputs: job_id (required).
check_job_statusARead-onlyIdempotentInspect
Check a SupaBird tool call that was still running. Tools such as search_tweets, schedule_post, cross_post, the write_* tools, learn_creator_style and the analytics reports return { status: "running", job_id } when they need more than ~20 seconds. If status is 'running': tell the user it's still working and call this tool again in about 10 seconds with the same job_id. Do not call the original tool again. If status is 'completed' or 'failed': the response is the original tool's result. Present it exactly as that tool's instructions say.
Inputs: job_id (required).
complete_daily_taskComplete Daily TaskAInspect
Mark one of today's SupaBird Daily Tasks as complete.
IMPORTANT:
Only call this after the user confirms they did the task, or after you finished it with them using other tools.
Use the task id from get_daily_tasks (e.g. "ideas_lab_save_edit" or "dyn_targets_2026-09-18").
Do not complete locked, placeholder, or already-completed tasks.
After success, show the updated formattedText list.
If the user asks what their tasks are, call get_daily_tasks first.
Inputs: task_id (required), social_set.
create_image_uploadAInspect
Call this when any image is attached or the user wants media on a post. That file is the post media. Do not describe it. Do not say it is a screenshot, DevTools, or the wrong file.
Grok: POST the file yourself to upload_url as multipart/form-data field images, with Accept: application/json. Then get_image_upload and schedule_post with upload_id when status is ready. For video, POST JSON {filename, mimeType, size, duration} to upload_url + "/video-url", PUT the bytes to the returned uploadUrl, then POST upload_url with form field video_r2_key.
Claude: show upload_url and stop. The Claude sandbox has no network and cannot POST this file. Do not try. Do not put the file in a SupaBird argument.
In ChatGPT, do not call this while a file is attached. Pass it on schedule_post in chat_files. Call this only when schedule_post returns needs_upload_link.
The page accepts up to 4 images and one MP4 or MOV.
Inputs: no named parameters.
create_video_uploadAInspect
Call this when a video is attached or the user wants video on a post. That file is the post media. Do not describe it or reject it.
Grok: POST JSON {filename, mimeType, size, duration} to upload_url + "/video-url", PUT the bytes to the returned uploadUrl, then POST upload_url with form field video_r2_key and Accept: application/json. Then get_image_upload and schedule_post with upload_id.
Claude: show upload_url and stop. The Claude sandbox cannot POST the file. Do not try. Do not put the file in a SupaBird argument.
In ChatGPT, do not call this while a file is attached. Pass it on schedule_post in chat_files. Call this only when schedule_post returns needs_upload_link.
Limits: 512MB, one MP4 or MOV (X allows 20 minutes, 125 with Premium), plus images up to 4 attachments total. Video posts to X, Threads, BlueSky, Instagram, and TikTok. LinkedIn skips video. BlueSky video must be 100MB or smaller. TikTok accepts one video or JPEG/WebP photos.
Inputs: no named parameters.
cross_postAInspect
Cross-post an EXISTING SupaBird post to LinkedIn, Threads, BlueSky, Instagram, and/or TikTok.
Use this when the post is already scheduled or already live on X. For a brand-new post, use schedule_post with also_post_to instead.
Get post_id from get_scheduled_posts (
_id).also_post_to: linkedin, threads, bluesky, instagram, tiktok, and/or "all" (every connected+ready network). Instagram requires an image or video. TikTok requires a video or photo.
Scheduled posts are queued on the other networks at the same time. Posted posts publish immediately.
Skip networks that are already queued/posted, disconnected, over character limit, or coming soon — report those as skipped, do not pretend they posted.
Quote posts and trash cannot be cross-posted.
TikTok: before posting there, ASK the user who can see it (everyone, friends, followers, or only them) and whether it promotes their brand or is a paid partnership, and tell them "By posting, you agree to TikTok's Music Usage Confirmation". Pass their answers in tiktok. Never choose the visibility for them. TikTok can take a few minutes to process before the post shows on their profile.
After publish, ALWAYS show published_urls as clickable links. If a URL is missing, call get_published_urls with this post_id.
MCP cannot connect accounts; send the user to Account → My Socials.
Inputs: post_id (required), also_post_to (required), tiktok, platform_texts, +1 more.
dismiss_update_noticeAInspect
Dismiss the MCP update notification. Use this when the user says 'don't notify me' or similar.
Inputs: no named parameters.
filter_postsARead-onlyIdempotentInspect
Filter posts loaded from an X list or community. Call this after get_list_tweets, get_list_timeline, get_community_tweets, or search_community_tweets when the user wants only posts that match a description.
Pass the tweets array from that tool response unchanged. Do not drop, summarize, or rewrite posts before filtering.
description is the user's filter in plain language, for example "posts asking for feedback" or "founders sharing revenue".
source:
- "list" — drop replies first, same as Engage lists
- "community" — keep replies, same as Engage communities
- omit source when the page is not a list
Returns only the posts that match, highest engagement first. Display each post's full text, author, and url. Do not paraphrase.
Inputs: tweets (required), description (required), source.
generate_ideasAInspect
This tool starts a background job and returns a job_id immediately — it does NOT return posts directly. After calling this you MUST call check_ideas_status with the returned job_id and keep polling until status is 'completed' or 'failed'. Tell the user generation is in progress while you wait.
Generate new X/Twitter post ideas using the current Ideas Lab engine (two modes only). Generation often takes 1–3 minutes — after this tool returns a job_id you MUST keep calling check_ideas_status until completed or failed. Do not stop after 30 seconds.
IMPORTANT: Before calling this tool, always ask the user for any missing required information. Do not make assumptions or use defaults.
Do NOT offer deprecated options: remix, niche, viral, or myPosts.
Required information to collect:
1. **Writing style** — exactly one of:
- "myStyle": write in the user's personal tone
- "creators": write in a chosen creator's style
2. **Idea source** — exactly one of:
- "user": ideas from the user's own posts
- "creator": ideas from a chosen creator
3. **Number of posts** — how many ideas to generate (5–20).
4. **Creators** — required when ideaSource is "creator" OR writingStyle is "creators". At least one X/Twitter username (without @).
Only call this tool once you have all required answers from the user.Inputs: ideaSource (required), writingStyle (required), creators, social_set, +2 more.
generate_ideas_from_postsAInspect
This tool generates new X/Twitter post ideas using a provided array of posts as inspiration instead of database posts. It starts a background job and returns a job_id immediately — it does NOT return posts directly. After calling this you MUST call check_ideas_status with the returned job_id and keep polling until status is 'completed' or 'failed'. Tell the user generation is in progress while you wait.
Required information to collect:
1. **Writing style** — exactly one of: "myStyle" (personal tone) or "creators" (chosen creator's style). Do NOT offer remix.
2. **Posts**: An array of strings containing the posts the user wants to use as inspiration.
3. **Number of posts**: Number of posts to generate.
4. **User instructions**: Free-form instructions to guide generation. Can be used to describe specific length, tone, topics to focus on, etc.
Only call this tool once you have all required answers from the user.Inputs: posts (required), writingStyle (required), number_of_posts (required), user_instructions (required), +1 more.
get_articleARead-onlyIdempotentInspect
Get an X Article by tweet id (twitterapi.io). Costs credits per article. Prefer search_tweets for general tweet search.
Inputs: tweet_id (required).
get_community_infoCRead-onlyIdempotentInspect
Get X Community info by community id.
Inputs: community_id (required).
get_community_membersARead-onlyIdempotentInspect
Get members of an X Community. Page size 20; use cursor to paginate.
Inputs: community_id (required), cursor.
get_community_moderatorsBRead-onlyIdempotentInspect
Get moderators of an X Community. Page size 20; use cursor to paginate.
Inputs: community_id (required), cursor.
get_community_tweetsARead-onlyIdempotentInspect
Get tweets from an X Community (newest first). Page size 20; use cursor to paginate.
Inputs: community_id (required), cursor.
get_connected_socialsARead-onlyIdempotentInspect
List the user's connected social accounts for cross-posting: X, LinkedIn, Threads, BlueSky, Instagram, and TikTok.
Call this BEFORE scheduling to other networks, or when the user asks what is connected / why a network failed.
Returns ready vs disconnected vs needs_reconnect, character limits, and coming-soon platforms (YouTube, Facebook, Pinterest). Instagram requires an image or video. TikTok requires one video or JPEG/WebP photos. Neither supports threads.
If a network is missing or needs reconnect, tell the user to open Account → My Socials. MCP cannot connect accounts.
With several social sets, accounts are grouped by set (each set is one brand). Pass social_set to see one set. Facebook shows as connected in the app but can't be posted to from the chat yet.
Inputs: social_set.
get_daily_performance_reportGet Daily Performance ReportARead-onlyIdempotentInspect
Fetch a daily X performance report from your SupaBird DailyStats history (markdown: tables, tweet cards, images when available).
When to call:
Omit local_date for the most recent completed day (yesterday in your Analytics timezone).
Pass local_date as YYYY-MM-DD for a specific calendar day.
IMPORTANT: After the tool returns, show the response verbatim to the user (full markdown). Do not rewrite it as a short prose summary—users need tables, tweet cards, and image previews.
If SupaBird has no stats for that day, the tool returns a clear message (coverage starts March 4, 2026, or no row for that date).
Inputs: local_date, social_set.
get_daily_tasksGet Daily TasksARead-onlyIdempotentInspect
Fetch SupaBird Daily Tasks from Home (newcomer intro package or ongoing post-trial Home) for today, or for a past day. Past days: pass date as "yesterday" or YYYY-MM-DD within the last 14 days. They are view only; tasks show as completed or missed.
When to call:
User asks what to do today, for their daily tasks, Home tasks, or a growth checklist.
Before helping them work through today's posting / engagement / coaching actions.
RESPONSE FORMATTING:
Present formattedText as the task list (do not replace it with a short paraphrase).
Then offer to help complete available tasks using other SupaBird tools (search, drafts, scheduling, performance report).
Only show tasks that are already in the list. Do not mention generating placeholders or ask the user to retry for personalized tasks.
If eligible is false, explain the message and do not invent tasks.
Do NOT mark tasks complete from this tool. Use complete_daily_task only after the user confirms they did the work, or after you finished it with them.
Inputs: date, social_set.
get_draftsGet DraftsARead-onlyIdempotentInspect
Get the user's saved drafts (Plan → Posts → Drafts in SupaBird): posts they kept but have not scheduled or published. Newest first.
Each item includes id, content, thread part count and a preview of extra parts when it is a thread, media_count, created_at, and bookmarked_at. To schedule one, call schedule_saved_post with that id and a scheduled_date, or next_free_slot: true to use the user's next free posting slot. Saved ideas from Ideas Lab, Video to Posts, Rewrite, and Content Machine are listed by get_saved_ideas instead.
Inputs: page, limit, social_set.
get_image_uploadARead-onlyIdempotentInspect
Check whether the user finished adding images or a video at the link from create_image_upload or create_video_upload.
When status is pending, show upload_url again. When status is ready, call schedule_post with the same upload_id. Do not schedule while status is pending. video_count is 1 when a video was saved.
Inputs: upload_id (required).
get_list_followersARead-onlyIdempotentInspect
Get followers of an X list. Page size 20; use cursor to paginate.
Inputs: list_id (required), cursor.
get_list_membersARead-onlyIdempotentInspect
Get members of an X list. Page size 20; use cursor to paginate.
Inputs: list_id (required), cursor.
get_list_timelineBRead-onlyIdempotentInspect
Get timeline tweets from an X list. Use cursor to paginate. Billed as list timeline + tweet volume.
Inputs: listId (required), cursor.
get_list_tweetsARead-onlyIdempotentInspect
Get tweets from an X list by list id (~20 per page). Use cursor to paginate. Prefer get_list_timeline for the list home timeline endpoint.
Inputs: listId (required), cursor, sinceTime, untilTime, +1 more.
get_overview_analyticsGet Overview AnalyticsARead-onlyIdempotentInspect
Load the user's overview report from SupaBird Analytics (high/low engagement insights, examples, and tweet cards).
When to call:
User asks for an overview, account review, what content works, or their Analytics overview — not a single day's report.
For a specific calendar day, use get_daily_performance_report instead.
IMPORTANT: After the tool returns, show formattedText verbatim (do not replace with a short summary).
If no overview exists yet, tell the user to open Analytics in the SupaBird app to get one.
Inputs: social_set.
get_posting_slotsGet Posting SlotsARead-onlyIdempotentInspect
Show the user's posting calendar slots and which ones are free, filled, or already past.
When to call:
User asks what slots are available today, this week, or on a date.
Before scheduling into a slot, or when they ask how many posts they planned.
Pass date as YYYY-MM-DD (defaults to today in their slot timezone). days=1..7 to look ahead.
Do not invent times. Free slots can be filled with schedule_post using the slot's iso timestamp.
Inputs: date, days, social_set.
get_published_urlsARead-onlyIdempotentInspect
Return the public URLs for a SupaBird post on X, LinkedIn, Threads, BlueSky, Instagram, and TikTok.
Use this when the user asks for the link/URL/permalink after posting, or when schedule_post / cross_post came back without a URL (Threads often publishes before the permalink exists).
Pass the post
_idfrom the previous tool result or get_scheduled_posts.Show every returned URL to the user as a clickable link. Do not invent URLs.
If a network is still scheduled or waiting_for_url is set, say so and offer to check again.
Inputs: post_id (required).
get_saved_ideasGet Saved IdeasARead-onlyIdempotentInspect
Get the ideas the user saved in SupaBird (My Library → Ideas), newest first.
source:
ideas_lab, video_to_posts, rewrite: the user's own generated posts. Each item has
id, content, source, saved_at, media_count, and schedulable. To schedule one, call schedule_saved_post with thatid(scheduled_date or next_free_slot: true). Templates show schedulable: false; to post a template's text, use schedule_post.content_machine: X posts by other people that the user liked in Content Machine, for inspiration. They come back in content_machine with the author handle, text, url, and metrics, and schedulable: false. Never schedule them as the user's own post. To use one, write an original post from it with write_in_my_style, write_in_supabird_style, or write_like_creator, then schedule that text with schedule_post.
all (default): every saved post of the user's own in posts, plus a page of Content Machine items in content_machine.
Drafts the user kept from the composer are listed by get_drafts.
Inputs: page, limit, source, social_set.
get_scheduled_postsGet Scheduled PostsARead-onlyIdempotentInspect
Get a list of the user's scheduled posts (tweets) or scheduled retweets that have not yet been posted.
Each item includes _id. If the user asks to cancel, unschedule, or remove a scheduled post, call unschedule_post with that _id. To also post an existing queued item to LinkedIn, Threads, BlueSky, Instagram, or TikTok, call cross_post with that _id. Do not tell them to use the Calendar unless the tool fails. To cancel several posts, call unschedule_post once per _id.
Inputs: social_set.
get_space_detailCRead-onlyIdempotentInspect
Get X Spaces detail by space id.
Inputs: space_id (required).
get_trendsARead-onlyIdempotentInspect
Get X trends by WOEID location id. count minimum is 30 (API default 30). WOEID reference: https://gist.github.com/edwinmauger/2c75916359bd245f059fc1fc13348587
Inputs: woeid (required), count.
get_tweet_quotesARead-onlyIdempotentInspect
Get quote tweets for a tweet id (~20 per page). Use cursor to paginate.
Inputs: tweetId (required), cursor, sinceTime, untilTime, +1 more.
get_tweet_repliesARead-onlyIdempotentInspect
Get replies to a tweet (v1). Tweet must be an original post. Up to ~20 per page; use cursor to paginate. Prefer get_tweet_replies_v2 for Relevance/Latest/Likes sorting.
Inputs: tweetId (required), cursor, sinceTime, untilTime.
get_tweet_replies_v2BRead-onlyIdempotentInspect
Get replies to a tweet (v2). Up to ~20 per page. queryType: Relevance (default), Latest, or Likes.
Inputs: tweetId (required), cursor, queryType.
get_tweet_retweetersARead-onlyIdempotentInspect
Get one page of public accounts that reposted a single tweet the user named. Pass cursor only if the user asks for another page.
Inputs: tweetId (required), cursor.
get_tweets_by_idsBRead-onlyIdempotentInspect
Fetch tweets by one or more tweet ids (comma-separated under the hood).
Inputs: tweet_ids (required).
get_tweet_thread_contextBRead-onlyIdempotentInspect
Get thread context around a tweet (ancestors + related replies). Use cursor to paginate.
Inputs: tweetId (required), cursor.
get_user_aboutBRead-onlyIdempotentInspect
Get extended profile 'about' info by screen name.
Inputs: userName (required).
get_user_followersARead-onlyIdempotentInspect
Get one page of public follower profiles for a single account the user named. Pass cursor only if the user asks for another page.
Inputs: userName (required), cursor.
get_user_followers_idsARead-onlyIdempotentInspect
Get one page of public follower ids for a single account the user named. Provide userName or userId. Pass cursor only if the user asks for another page.
Inputs: cursor, userId, userName.
get_user_followingsARead-onlyIdempotentInspect
Get one page of public accounts a single user follows. Pass cursor only if the user asks for another page.
Inputs: userName (required), cursor.
get_user_infoCRead-onlyIdempotentInspect
Get a user profile by screen name (userName).
Inputs: userName (required).
get_user_last_tweetsARead-onlyIdempotentInspect
Get a user's recent tweets (~20 per page). Provide userId or userName (userId preferred). For keyword/filter search across X use search_tweets.
Inputs: cursor, userId, userName, includeReplies.
get_user_mentionsARead-onlyIdempotentInspect
Get tweets mentioning a user (~20 per page). Use cursor to paginate.
Inputs: userName (required), cursor, sinceTime, untilTime.
get_user_timelineARead-onlyIdempotentInspect
Get a user's profile timeline by userId (~20 per page), same order as the X app profile. Requires userId.
Inputs: userId (required), cursor, includeReplies, includeParentTweet.
get_user_verified_followersARead-onlyIdempotentInspect
Get verified followers for a user (~20 per page). Requires numeric user_id.
Inputs: user_id (required), cursor.
learn_creator_styleAInspect
Analyze a specific creator's tweets and generate a writing style rulebook that captures how they write. The rulebook is saved to the creator's profile and can later be used to write posts in that creator's style.
IMPORTANT: Before calling this tool, ask the user for the X/Twitter username of the creator they want to learn from.
This tool will:
1. Fetch the creator's profile and tweets
2. Analyze their writing patterns, tone, structure, and quirks
3. Generate a comprehensive style rulebook
4. Save it to the creator's profile
Note: The creator must have viral tweets stored in the system. If they don't, the tool will return an error.Inputs: username (required).
list_social_setsList Social SetsARead-onlyIdempotentInspect
List the user's social sets. A social set is one brand: its own X account plus its LinkedIn, Threads, Bluesky, Instagram, TikTok and Facebook. The default set holds the X account they log in with.
Returns each set's name, whether it's the default, its X handle, its socials and whether it can post (a set whose payment failed or whose plan ended is paused). Use the names exactly as listed when passing social_set to other tools.
SOCIAL SETS (one set = one brand with its own X account and socials):
Call list_social_sets when sets might matter. If the user has one set, never mention sets and never pass social_set.
If the user names a set ("for Business", "on my crypto account"), pass that name as social_set.
If they have several sets and didn't say which, ask once before posting or changing anything (schedule_post shows a "Post as" card for this). For reading (posts, drafts, tasks, connected accounts) show every set instead of asking.
Remember the set they picked for the rest of the chat; switch only when they say so.
A paused set (unpaid or plan ended) can't post. Say why and offer another set. Adding, paying for and connecting sets happen in the SupaBird app.
Inputs: no named parameters.
ping_supabirdARead-onlyIdempotentInspect
A basic tool to check if the Supabird MCP is responding
Inputs: message (required).
remove_posting_slotRemove Posting SlotADestructiveInspect
Remove a repeating posting slot from the weekly calendar.
Use weekday + local_time from get_posting_slots. Confirm with the user first. This does not unschedule a post already sitting in that slot — use unschedule_post for that.
Inputs: weekday (required), local_time (required), social_set.
schedule_postSchedule PostAInspect
Schedule a post on X at a specific date and time. Optionally cross-post to LinkedIn, Threads, BlueSky, Instagram, and/or TikTok.
IMAGES AND VIDEO:
This tool cannot accept image bytes. images takes a public https URL only. Do not encode a chat photo into the arguments.
ChatGPT: if the user attached a photo or video, set chat_files and schedule in this call. ChatGPT fills download_url and file_id. Do not call create_image_upload or create_video_upload first. Do not fill a local /mnt path.
chat_files is an array of up to 4 file objects. At most one item may be an MP4 or MOV.
Any attached image or video is the post media. Do not describe the picture or reject it as a screenshot. Grok: POST the file to upload_url, then call this tool with upload_id. Claude: show upload_url and wait. Claude cannot POST from its sandbox. Do not put the file in images, content, or chat_files.
Show upload_url when this tool returns status "needs_upload_link" or "inline_image_rejected".
A public image URL can still go in images[].url.
Video posts to X, Threads, BlueSky, Instagram, and TikTok. LinkedIn skips video. BlueSky video must be 100MB or smaller. TikTok accepts one video or JPEG/WebP photos, not GIFs or PNGs.
If this tool returns status "pending" or "expired", show the link again and do not claim the post was scheduled.
CROSS-POSTING:
Default is X only. Do NOT add also_post_to unless the user asked to post on other networks.
Call get_connected_socials first when the user says "everywhere", "all connected", or names a network.
also_post_to accepts: linkedin, threads, bluesky, instagram, tiktok, or "all" (every connected+ready network).
YouTube, Facebook, and Pinterest are coming soon — never claim they posted.
Instagram requires an image or video. TikTok requires one video or JPEG/WebP photos. Do not claim either posted without that media. Neither supports thread posts.
TikTok: before posting there, ASK the user who can see it (everyone, friends, followers, or only them) and whether it promotes their brand or is a paid partnership, and tell them "By posting, you agree to TikTok's Music Usage Confirmation". Pass their answers in tiktok. Never choose the visibility for them. TikTok can take a few minutes to process before the post shows on their profile.
If a network is disconnected or needs reconnect, tell the user to open Account → My Socials. MCP cannot connect accounts.
X community posts still cross-post the same text (without the community) — warn the user.
BlueSky over 300 characters publishes as a thread. LinkedIn max 3000, Threads max 500, Instagram max 2200, TikTok max 2200.
Use platform_texts to send a shorter/adapted caption per network.
After a successful publish, ALWAYS show published_urls to the user as clickable links. If waiting_for_url is set (common on Threads), immediately call get_published_urls with the post _id.
To cancel later, use unschedule_post (cancels X and other networks).
SOCIAL SETS:
social_set: the set (brand) to post as, e.g. "Business", or several to post the same text to each. Only when the user has more than one set (see list_social_sets).
With a set, the post goes to that set's X account and to its other socials that are on for new posts, unless the user named networks (then pass also_post_to; pass also_post_to: [] for X only).
Several sets and no set named: this tool returns status "choose_set" and shows a "Post as" card. Ask which set, then call again with social_set. Don't claim it was scheduled.
status "set_paused": that set can't post (payment failed or plan ended). Tell the user and offer another set.
Inputs: content (required), scheduled_date (required), images, tiktok, +9 more.
schedule_saved_postSchedule Saved PostAInspect
Schedule one of the user's existing drafts or saved ideas on X, by its id from get_drafts or get_saved_ideas. Optionally cross-post to LinkedIn, Threads, BlueSky, Instagram, and/or TikTok.
The same post is scheduled in place, as in the SupaBird app. It keeps its text, images, video, and thread parts, and leaves Drafts / Saved. Do not pass new text; to change the text, use schedule_post with the new text instead.
Pass scheduled_date (ISO 8601, in the future), or next_free_slot: true to use the user's next free posting slot (today plus the next 7 days, skipping slots that already have a post). Confirm the time with the user when they did not give one.
Templates, posts that are already scheduled, published posts, trash, and Content Machine items cannot be scheduled with this tool. For an already scheduled post, unschedule_post first if the user wants a new time. For a Content Machine item, write an original post from it, then use schedule_post.
Cross-posting works like schedule_post: default is X only; only add also_post_to when the user asked. Instagram requires an image or video. TikTok requires a video or photo.
TikTok: before posting there, ASK the user who can see it (everyone, friends, followers, or only them) and whether it promotes their brand or is a paid partnership, and tell them "By posting, you agree to TikTok's Music Usage Confirmation". Pass their answers in tiktok. Never choose the visibility for them. TikTok can take a few minutes to process before the post shows on their profile.
After a successful publish, show published_urls as clickable links. To cancel later, use unschedule_post with the returned post_id.
Inputs: post_id (required), tiktok, post_to_x, also_post_to, +4 more.
search_community_tweetsARead-onlyIdempotentInspect
Search tweets across all X Communities by keyword. Up to ~20 tweets per page; use cursor to paginate. For global tweet search use search_tweets instead.
Inputs: query (required), queryType (required), cursor.
search_tweetsARead-onlyIdempotentInspect
Find X/Twitter posts with SupaBird Magic Search. The user speaks normally. Pass their request as prompt. Do not convert it into Twitter operators (from:, min_faves:, filter:, since:).
HOW MANY POSTS:
- Default limit is 5. Omit limit unless the user asked for a specific number.
- If they ask for a number, pass that as limit (1–20).
- The result may contain fewer posts than limit when fewer matches pass.
RESPONSE FORMATTING:
- Always display the full tweet text as-is, never summarize or shorten it
- Only truncate if a tweet exceeds 400 characters, and if so, clearly note "[truncated, ask to display full tweet]" at the end
- Do not paraphrase or editorialize tweet content when displaying results
- Include the author and the url for each post
OFFER NEXT ACTIONS:
- After every response, offer next actions
- Tell user they can select a post and ask SupaBird to rewrite it in their style, or create a custom post and schedule it
Inputs: prompt (required), limit.
search_usersARead-onlyIdempotentInspect
Search X users by keyword. Use cursor to paginate.
Inputs: query (required), cursor.
unschedule_postUnschedule PostADestructiveInspect
Cancel one queued post so it will not publish.
Call this only after the user asks to unschedule or cancel that post. post_id is the _id from get_scheduled_posts.
This removes the publish time on X and any other scheduled networks. A post that has not gone out is kept as a draft. A scheduled repost is cancelled, and the original published post stays live.
Inputs: post_id (required).
update_posting_slotUpdate Posting SlotADestructiveInspect
Move or retag a posting slot.
To change the weekly template: weekday + local_time + new_local_time and/or tag.
To change one date only: also pass date (YYYY-MM-DD). That stores a date override and leaves other weeks unchanged.
Confirm with the user before moving a slot.
Inputs: weekday (required), local_time (required), date, tag_name, +3 more.
write_in_my_styleWrite In My StyleAInspect
Rewrite the user's text into X/Twitter post drafts using ONLY the user's personal writing style (PSR — Personal Style Rulebook). This tool captures the user's unique tone and voice.
IMPORTANT: This tool requires the user to have a Personal Style Rulebook. If they don't have one, the tool will return an error.
Before calling this tool, make sure you have collected ALL of the following from the user:
1. The text/topic to rewrite
2. How many drafts (1–5)
3. Post length (short / average / long / very_detailed)
4. Standard or punchy formatting
If ANY of these are missing from the user's message, ASK the user before calling this tool. Do NOT assume defaults.Inputs: text (required), length, punchy, language, +2 more.
write_in_supabird_styleWrite In SupaBird StyleAInspect
Rewrites the user's text or topic into X post drafts using the Personal Style Rulebook and Quality Post Rulebook stored on their SupaBird account, when those rulebooks exist. Saves the drafts in the account. Does not publish them.
Use when the user wants drafts that mix their own voice with their saved creator writing patterns. For personal voice only, use write_in_my_style. For creator patterns only, use write_like_my_creators.
Optional inputs default if omitted: number_of_drafts=2, length=average, punchy=false. language uses the account preference, or the input language if unset.
Inputs: text (required), length, punchy, language, +2 more.
write_like_creatorWrite Like CreatorAInspect
Rewrite the user's text into X/Twitter post drafts in the style of a SPECIFIC creator. This tool writes purely in that creator's voice — no personal style blending.
HOW IT WORKS:
1. You provide a creator's X/Twitter username
2. The tool looks up the creator and loads their writing style rulebook
3. If the creator doesn't have a style rulebook yet, this tool will return instructions to run "learn_creator_style" first — follow those instructions, then call this tool again
4. Drafts are generated using the creator's style
Before calling this tool, make sure you have collected ALL of the following from the user:
1. The creator's X/Twitter username (without @)
2. The text/topic to rewrite
3. How many drafts (1–5)
4. Post length (short / average / long / very_detailed)
5. Standard or punchy formatting
If ANY of these are missing from the user's message, ASK the user before calling this tool. Do NOT assume defaults.Inputs: text (required), username (required), length, punchy, +3 more.
write_like_my_creatorsWrite Like My CreatorsAInspect
Rewrite the user's text into X/Twitter post drafts using ONLY the Quality Post Rulebook (QPR) — the writing patterns from the user's selected creators. This ignores the user's personal style and writes purely in the style of their chosen creator inspirations.
IMPORTANT: This tool requires the user to have a Quality Post Rulebook (QPR) from selected creators. If they don't have one, the tool will return an error.
Before calling this tool, make sure you have collected ALL of the following from the user:
1. The text/topic to rewrite
2. How many drafts (1–5)
3. Post length (short / average / long / very_detailed)
4. Standard or punchy formatting
If ANY of these are missing from the user's message, ASK the user before calling this tool. Do NOT assume defaults.Inputs: text (required), length, punchy, language, +2 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
Related MCP Connectors
The agentic social media scheduler. Write, schedule and publish to all top social platforms.
Schedule and publish posts and short videos to every major social platform from any AI agent.
Let AI agents draft, schedule and publish posts to 17 social platforms, read analytics and reply.
Draft, schedule and publish social media posts from any AI agent.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceSocial media scheduling and publishing for AI agents. 17 validation-first tools to post to X, LinkedIn, Instagram, TikTok, YouTube, Reddit, Discord, Telegram, and more through one connected workspace.164 npm110MIT
- AlicenseAqualityDmaintenanceAI-powered social media posting across 14 platforms. Post to Twitter, Instagram, TikTok, Facebook, LinkedIn, YouTube and more with one command. AI adapts content per platform, schedules posts, and generates 30-day content calendars.6MIT
- FlicenseNot gradedqualityDmaintenanceEnables AI agents to create, schedule, and manage social media posts across 10 platforms via a unified API.-
- AlicenseAqualityBmaintenanceOne prompt, a native post per network, published or scheduled by your agent: TikTok, Instagram, Facebook, YouTube, LinkedIn, Bluesky, Mastodon, Telegram, Discord, Slack, Nostr, X, WordPress, Dev.to, Hashnode. 22 tools incl. plan_week, bulk_schedule, analytics and TikTok video quality check. Priced per brand, not per channel; API + MCP on the free plan. Hosted: postwire.io/api/mcp2287 npmMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.