Skip to main content
Glama

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.

Ownership verified
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

B3.4/5.0

Scored across 64 tools

Disambiguation3/5

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.

Naming Consistency4/5

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.

Tool Count2/5

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.

Completeness4/5

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
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 tools
add_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_idsA
Read-onlyIdempotent
Inspect

Look up public profiles for up to 20 numeric user ids the user already named.

Inputs: userIds (required).

check_follow_relationshipC
Read-onlyIdempotent
Inspect

Check whether source_user_name follows / is followed by target_user_name.

Inputs: source_user_name (required), target_user_name.

check_ideas_statusA
Read-onlyIdempotent
Inspect

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_statusA
Read-onlyIdempotent
Inspect

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_postsA
Read-onlyIdempotent
Inspect

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_articleA
Read-onlyIdempotent
Inspect

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_infoC
Read-onlyIdempotent
Inspect

Get X Community info by community id.

Inputs: community_id (required).

get_community_membersA
Read-onlyIdempotent
Inspect

Get members of an X Community. Page size 20; use cursor to paginate.

Inputs: community_id (required), cursor.

get_community_moderatorsB
Read-onlyIdempotent
Inspect

Get moderators of an X Community. Page size 20; use cursor to paginate.

Inputs: community_id (required), cursor.

get_community_tweetsA
Read-onlyIdempotent
Inspect

Get tweets from an X Community (newest first). Page size 20; use cursor to paginate.

Inputs: community_id (required), cursor.

get_connected_socialsA
Read-onlyIdempotent
Inspect

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 ReportA
Read-onlyIdempotent
Inspect

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 TasksA
Read-onlyIdempotent
Inspect

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 DraftsA
Read-onlyIdempotent
Inspect

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_uploadA
Read-onlyIdempotent
Inspect

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_followersA
Read-onlyIdempotent
Inspect

Get followers of an X list. Page size 20; use cursor to paginate.

Inputs: list_id (required), cursor.

get_list_membersA
Read-onlyIdempotent
Inspect

Get members of an X list. Page size 20; use cursor to paginate.

Inputs: list_id (required), cursor.

get_list_timelineB
Read-onlyIdempotent
Inspect

Get timeline tweets from an X list. Use cursor to paginate. Billed as list timeline + tweet volume.

Inputs: listId (required), cursor.

get_list_tweetsA
Read-onlyIdempotent
Inspect

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 AnalyticsA
Read-onlyIdempotent
Inspect

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 SlotsA
Read-onlyIdempotent
Inspect

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_urlsA
Read-onlyIdempotent
Inspect

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 _id from 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 IdeasA
Read-onlyIdempotent
Inspect

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 that id (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 PostsA
Read-onlyIdempotent
Inspect

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_detailC
Read-onlyIdempotent
Inspect

Get X Spaces detail by space id.

Inputs: space_id (required).

get_tweet_quotesA
Read-onlyIdempotent
Inspect

Get quote tweets for a tweet id (~20 per page). Use cursor to paginate.

Inputs: tweetId (required), cursor, sinceTime, untilTime, +1 more.

get_tweet_repliesA
Read-onlyIdempotent
Inspect

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_v2B
Read-onlyIdempotent
Inspect

Get replies to a tweet (v2). Up to ~20 per page. queryType: Relevance (default), Latest, or Likes.

Inputs: tweetId (required), cursor, queryType.

get_tweet_retweetersA
Read-onlyIdempotent
Inspect

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_idsB
Read-onlyIdempotent
Inspect

Fetch tweets by one or more tweet ids (comma-separated under the hood).

Inputs: tweet_ids (required).

get_tweet_thread_contextB
Read-onlyIdempotent
Inspect

Get thread context around a tweet (ancestors + related replies). Use cursor to paginate.

Inputs: tweetId (required), cursor.

get_user_aboutB
Read-onlyIdempotent
Inspect

Get extended profile 'about' info by screen name.

Inputs: userName (required).

get_user_followersA
Read-onlyIdempotent
Inspect

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_idsA
Read-onlyIdempotent
Inspect

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_followingsA
Read-onlyIdempotent
Inspect

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_infoC
Read-onlyIdempotent
Inspect

Get a user profile by screen name (userName).

Inputs: userName (required).

get_user_last_tweetsA
Read-onlyIdempotent
Inspect

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_mentionsA
Read-onlyIdempotent
Inspect

Get tweets mentioning a user (~20 per page). Use cursor to paginate.

Inputs: userName (required), cursor, sinceTime, untilTime.

get_user_timelineA
Read-onlyIdempotent
Inspect

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_followersA
Read-onlyIdempotent
Inspect

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 SetsA
Read-onlyIdempotent
Inspect

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_supabirdA
Read-onlyIdempotent
Inspect

A basic tool to check if the Supabird MCP is responding

Inputs: message (required).

remove_posting_slotRemove Posting SlotA
Destructive
Inspect

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_tweetsA
Read-onlyIdempotent
Inspect

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_tweetsA
Read-onlyIdempotent
Inspect

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_usersA
Read-onlyIdempotent
Inspect

Search X users by keyword. Use cursor to paginate.

Inputs: query (required), cursor.

unschedule_postUnschedule PostA
Destructive
Inspect

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 SlotA
Destructive
Inspect

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

    Related MCP Servers

    • A
      license
      Not graded
      quality
      C
      maintenance
      Social 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 npm
      110
      MIT
    • A
      license
      A
      quality
      D
      maintenance
      AI-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.
      6
      MIT
    • A
      license
      A
      quality
      B
      maintenance
      One 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/mcp
      22
      87 npm
      MIT
    Try in Browser

    Glama MCP Gateway

    Add one secure layer between your agents and this server.

    Resources