name: xbird
description: "Use when the user asks to tweet, post threads, read tweets, search Twitter/X, check mentions, manage engagement (like/retweet/bookmark), update profile (bio, avatar, banner), upload media, or interact with Twitter accounts. Triggers: twitter, tweet, post, thread, timeline, mentions, followers, following, likes, retweet, bookmark, profile picture, bio."
argument-hint: "[action or query]"
xbird — Twitter/X for AI Agents
34 MCP tools for Twitter/X with x402 micropayments. Runs locally from residential IP.
Setup
Add xbird MCP server to Claude Code:
claude mcp add xbird -- npx @checkra1n/xbird
Required environment variables (set in ~/.claude/settings.json or shell):
XBIRD_AUTH_TOKEN — from x.com cookies (DevTools → Application → Cookies → auth_token)
XBIRD_CT0 — from x.com cookies (DevTools → Application → Cookies → ct0)
XBIRD_PRIVATE_KEY — wallet private key for x402 payments (optional, needed for paid tier)
Tools Reference
Read — $0.001/call
| Tool |
Description |
get_tweet |
Get tweet by ID |
get_thread |
Get full thread/conversation chain |
get_replies |
Get replies to a tweet (supports count, cursor) |
get_user |
Get user profile by handle |
get_user_about |
Get detailed user info (bio, stats, links) |
get_current_user |
Get authenticated user's profile |
get_home_timeline |
Get home feed (supports count, cursor) |
get_news |
Get trending topics (tabs: trending, forYou, news, sports, entertainment) |
get_lists |
Get owned Twitter lists |
get_list_timeline |
Get tweets from a list by list ID |
Search — $0.005/call
| Tool |
Description |
search_tweets |
Search tweets. Supports operators: from:user, to:user, since:2024-01-01, filter:media, -filter:retweets |
get_mentions |
Get mentions for a handle |
Bulk — $0.01/call
| Tool |
Description |
get_user_tweets |
Get user's tweets. Requires numeric userId — get it from get_user first |
get_followers |
Get user's followers. Requires numeric userId |
get_following |
Get who user follows. Requires numeric userId |
get_likes |
Get user's liked tweets. Requires numeric userId |
get_bookmarks |
Get bookmarked tweets |
get_list_memberships |
Get lists user is a member of |
Write — $0.01/call
| Tool |
Description |
post_tweet |
Post a tweet. Pass mediaIds array to attach media |
reply_to_tweet |
Reply to a tweet by replyToId |
post_thread |
Post a thread — array of strings, minimum 2 tweets |
like_tweet / unlike_tweet |
Like or unlike by tweet ID |
retweet / unretweet |
Retweet or undo by tweet ID |
bookmark_tweet / unbookmark_tweet |
Bookmark or remove by tweet ID |
follow_user / unfollow_user |
Follow or unfollow by handle |
Profile — $0.01/call
| Tool |
Description |
update_profile |
Update bio/description text |
update_profile_image |
Update avatar — absolute file path to image |
update_profile_banner |
Update banner — absolute file path to image |
remove_profile_banner |
Remove banner image |
Media — $0.05/call
| Tool |
Description |
upload_media |
Upload image/video, returns mediaId. Pass it to post_tweet or reply_to_tweet via mediaIds |
Common Workflows
Post a tweet with an image
upload_media with file path → get mediaId
post_tweet with text and mediaIds: ["<mediaId>"]
Get someone's recent tweets
get_user with handle → get numeric userId
get_user_tweets with userId
Update profile with new avatar and bio
update_profile_image with file path
update_profile with new description text
Search and engage
search_tweets with query (e.g. "AI agents" since:2024-01-01 -filter:retweets)
like_tweet or retweet interesting results
Important Notes
- Handles: work with or without
@ prefix
- userId vs handle: Bulk tools require numeric
userId. Always call get_user first to resolve handle → userId
- Pagination: most list tools accept
cursor from previous response for next page
- Media flow: always upload first, then attach
mediaId to tweet
- Rate limits: if a tool returns an error about rate limiting, wait 1-2 minutes before retrying
- x402 payments: all calls are metered via micropayments on Base (USDC). Free tier available without wallet key