Spectre
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| TWS_PROXY | No | twscrape's own proxy env (lower priority) | |
| SPECTRE_DB | No | Account pool SQLite path | ~/.twscrape/spectre.db |
| SPECTRE_PROXY | No | Global proxy (e.g., socks5://user:pass@host:port) | |
| TWS_HTTP_BACKEND | No | Set to `curl` for TLS fingerprinting | httpx |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/ui": {}
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_accountsA | List all accounts in the pool with their status. Shows username, state (active/error/locked), and any error messages. Use this to check which accounts are available before operations. Returns: JSON array of accounts with status details. |
| set_active_accountA | Set a specific account as the primary account for all operations. The named account will be used first for reads and writes. If it gets rate-limited, the pool falls back to other active accounts. |
| set_auto_rotateA | Enable or disable automatic account rotation on rate limits. When enabled (default): if the current account hits a rate limit, Spectre automatically switches to the next available account. The agent sees a note that rotation happened. When disabled: only the account set via set_active_account() is used. Rate limits are returned as errors instead of rotating silently. Use this when you're managing a specific account and don't want operations accidentally going through a different account. |
| remove_accountC | Remove an account from the pool. |
| pool_statusA | Check account pool health — how many accounts are active, locked, or errored. Returns: JSON with pool statistics and per-account status. |
| searchC | Search X/Twitter for tweets matching a query. |
| search_usersB | Search X/Twitter for users by name or keyword. |
| get_userA | Get a user's X/Twitter profile by @handle. |
| get_user_tweetsB | Get a user's recent tweets. |
| get_user_mediaB | Get a user's media tweets (photos, videos, GIFs). |
| get_followersC | Get a user's followers. |
| get_followingC | Get who a user follows. |
| get_tweetB | Get a single tweet by its ID. |
| get_tweet_repliesC | Get replies to a tweet. |
| get_threadA | Get the full conversation thread a tweet belongs to. |
| get_retweetersB | Get users who retweeted a tweet. |
| get_trendsC | Get trending topics on X/Twitter. |
| get_home_timelineB | Get the authenticated user's home timeline feed. |
| get_list_timelineC | Get tweets from an X/Twitter list. |
| get_list_membersA | Get members of an X/Twitter list. |
| get_community_tweetsB | Get tweets from an X/Twitter community. |
| get_community_infoB | Get details about an X/Twitter community. |
| get_bookmarksA | Get the authenticated user's bookmarked tweets. |
| post_tweetC | Post a new tweet on X/Twitter. |
| upload_mediaA | Upload an image or video for use in tweets. Uses cookie-based auth. No API keys needed. Supports: jpg, png, gif, webp, mp4, mov (up to 5MB images, 512MB video). |
| delete_tweetB | Delete a tweet you posted. |
| like_tweetC | Like a tweet. |
| unlike_tweetB | Unlike a tweet. |
| retweetC | Retweet a tweet. |
| unretweetB | Undo a retweet. |
| bookmark_tweetC | Bookmark a tweet. |
| unbookmark_tweetC | Remove a bookmark. |
| follow_userB | Follow a user on X/Twitter. |
| unfollow_userB | Unfollow a user on X/Twitter. |
| mute_userB | Mute a user on X/Twitter. |
| unmute_userA | Unmute a user on X/Twitter. |
| block_userB | Block a user on X/Twitter. |
| unblock_userB | Unblock a user on X/Twitter. |
| send_dmB | Send a direct message to a user. |
| get_dm_inboxB | Get DM inbox — list recent direct message conversations. |
| get_dm_conversationB | Get messages in a direct message conversation. |
| create_listB | Create a new X/Twitter list. |
| update_listA | Update an X/Twitter list's name/description. |
| add_list_memberA | Add a user to an X/Twitter list. |
| remove_list_memberA | Remove a user from an X/Twitter list. |
| join_communityB | Join an X/Twitter community. |
| leave_communityB | Leave an X/Twitter community. |
| schedule_tweetA | Schedule a tweet for future posting. |
| get_scheduled_tweetsA | Get all scheduled tweets. Returns: JSON with list of scheduled tweets. |
| delete_scheduled_tweetB | Delete a scheduled tweet. |
| create_draftA | Save a tweet draft (not published). |
| get_draftsA | Get all draft tweets. Returns: JSON with list of drafts. |
| delete_draftB | Delete a draft tweet. |
| edit_draftC | Edit an existing draft tweet. |
| edit_scheduled_tweetC | Edit an existing scheduled tweet. |
| get_bookmark_foldersA | Get all bookmark folders. Returns: JSON with list of bookmark folders. |
| create_bookmark_folderB | Create a bookmark folder. |
| delete_bookmark_folderC | Delete a bookmark folder. |
| edit_bookmark_folderB | Rename a bookmark folder. |
| add_tweet_to_folderB | Add a bookmarked tweet to a folder. |
| remove_tweet_from_folderB | Remove a tweet from a bookmark folder. |
| delete_listC | Delete an X/Twitter list. |
| follow_topicC | Follow a topic on X/Twitter. |
| unfollow_topicB | Unfollow a topic on X/Twitter. |
| get_community_notesC | Get community notes on a tweet. |
| rate_community_noteB | Rate a community note as helpful or not helpful. |
| get_account_settingsA | Get the authenticated account's settings (language, timezone, country, etc.). Returns: JSON with account settings including language, country, timezone, protected status, etc. |
| update_profileA | ⚠️ DESTRUCTIVE — Update the authenticated account's profile info. WARNING: This immediately changes your public profile on X. All fields are optional — only provide the ones you want to change. Empty strings are ignored. |
| update_profile_imageA | ⚠️ DESTRUCTIVE — Change the profile avatar image. WARNING: This immediately replaces your current profile picture. Supported: jpg, png, gif (max 2MB recommended). |
| update_profile_bannerA | ⚠️ DESTRUCTIVE — Change the profile banner/header image. WARNING: This immediately replaces your current banner. Recommended size: 1500x500px. Supported: jpg, png, gif (max 5MB). |
| delete_profile_bannerA | ⚠️ DESTRUCTIVE — Remove the profile banner/header image. WARNING: This immediately removes your banner image. Returns: Confirmation JSON. |
| get_muted_accountsA | List all accounts you've muted. |
| get_blocked_accountsB | List all accounts you've blocked. |
| search_dmC | Search direct messages by text. |
| dm_block_userA | Block a user from sending you DMs. |
| dm_unblock_userB | Unblock a user from DMs. |
| pin_tweetA | ⚠️ DESTRUCTIVE — Pin a tweet to your profile (replaces any existing pinned tweet). WARNING: If you already have a pinned tweet, it will be unpinned automatically. Only one tweet can be pinned at a time. |
| unpin_tweetB | Unpin a tweet from your profile. |
| remove_followerC | ⚠️ DESTRUCTIVE — Remove a follower from your account. |
| pin_replyC | Pin a reply to a conversation. |
| unpin_replyB | Unpin a reply from a conversation. |
| get_followers_you_knowC | Get mutual followers (followers you know). |
| create_highlightB | Add tweets to your profile highlights section. |
| delete_highlightB | Remove a highlight from your profile. |
| get_user_highlightsA | Get a user's profile highlight tweets. |
| get_verified_followersB | Get Blue-verified followers of a user. |
| get_user_likesC | Get a user's liked tweets. |
| get_bookmark_folder_timelineC | Get tweets inside a specific bookmark folder. |
| search_dm_groupsC | Search DMs in group conversations. |
| get_dm_mutedC | Get muted DM conversations. |
| search_dm_peopleC | Search for people in DMs. |
| get_favoritersC | Get users who liked a tweet. |
| get_tweet_edit_historyC | Get edit history of a tweet. |
| get_similar_postsC | Get similar/related posts to a tweet. |
| clear_all_bookmarksA | ⚠️ DESTRUCTIVE — Delete ALL bookmarks. Cannot be undone. |
| search_bookmarksB | Search bookmarks by text. |
| subscribe_listC | Subscribe to a list. |
| unsubscribe_listC | Unsubscribe from a list. |
| get_list_membershipsC | Get lists a user is a member of. |
| get_list_ownershipsC | Get lists owned by a user. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 104 tools
Most tools have distinct resource-action targets, but several pairs overlap meaningfully (list_accounts vs pool_status, get_user_tweets vs get_user_tweets_and_replies, get_muted_accounts vs get_dm_muted). The high number of choices increases misselection risk, though the descriptions usually clarify boundaries.
The server consistently uses snake_case verb_noun names like get_tweet, post_tweet, create_list, and unlike_tweet. Minor deviations exist—remove vs delete, pool_status instead of get_pool_status, and phrase-like names such as get_followers_you_know—but the overall pattern remains predictable.
104 tools is an extreme count for an MCP server and creates a heavy selection burden for agents. Even for a broad X/Twitter domain, many niche actions could be consolidated through parameters or grouped resources, so the surface is clearly oversized.
The surface covers nearly the full X/Twitter lifecycle: reading, posting, deleting tweets, engagement, DMs, lists, bookmarks, communities, profiles, scheduling, and drafts. Minor gaps exist—such as no way to add accounts to the pool or fetch the current authenticated profile directly—but these are workable and do not undermine core workflows.