# Xbird

> Use when the user asks to tweet, post threads, read tweets, search Twitter/X, check mentions, manage engagement (like/retweet/bookmark), lists, communities, Grok, notifications, or update profile (bio, avatar, banner). Triggers: twitter, tweet, post, thread, timeline, mentions, followers, bookmark, Grok, Birdwatch.

- Skill: `checkra1neth/xbird-2` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add checkra1neth/xbird-2`
- Raw SKILL.md: https://api.skillmd.com/api/skills/checkra1neth/xbird-2/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: checkra1neth (https://skillmd.com/u/checkra1neth)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/checkra1neth/xbird-2

---


# xbird — Twitter/X for AI Agents

247 MCP tools for Twitter/X with x402 micropayments. Pure Node.js — no Bun required.

**Zero config** — auto-detects your browser session and generates a wallet. No API keys, no developer account.

## When to Use

- Running inside Claude Code, Cursor, or Windsurf
- Need direct MCP tool access to Twitter/X
- Works with Node.js >= 18 — no Bun required

**Don't use when:** Building backend services or autonomous agents (use REST x402 instead), or operating on Virtuals marketplace (use ACP instead).

## Setup

Two runtime options:

### Bun (recommended) — zero config
```bash
claude mcp add xbird -- bunx @checkra1n/xbird
```
Auto-detects cookies from Chrome, Firefox, Edge, Safari. Just log in to x.com — done.

### Node.js — one-time login
```bash
claude mcp add xbird -- npx @checkra1n/xbird
npx @checkra1n/xbird login  # paste auth_token + ct0 from x.com DevTools
```

A payment wallet is generated automatically on first run.

Full tool list: see `tools.md`.

## Common Workflows

**Post tweet with image:** `upload_media` (get `mediaId`) → `post_tweet` with `mediaIds: ["<id>"]`

**Get someone's tweets:** `get_user` (get numeric `userId`) → `get_user_tweets` with `userId`

**Search and engage:** `search_tweets` with query → `like_tweet` or `retweet` results

**Update profile:** `update_profile_image` + `update_profile` with new bio

## Quick Reference

```
Handles:    work with or without @ prefix
Pagination: most tools accept cursor; list/search use count (default 20, max 100)
Media:      always upload first, then attach mediaId to tweet
Billing:    resource × count — post_read $0.0025 | user_read $0.005 | owned_read $0.001
              post_create $0.0075 | interaction_create $0.0075 | content_create $0.005
```

## Common Mistakes

| Mistake | Fix |
|---------|-----|
| Using handle for bulk tools | `get_user_tweets`, `get_followers`, etc. need numeric `userId`. Call `get_user` first. |
| Posting thread with 1 tweet | `post_thread` requires minimum 2 tweets. Use `post_tweet` for single tweet. |
| Media not attached | Upload returns `mediaId` — must pass it in `mediaIds` array to `post_tweet`. |
| Rate limit error | Twitter rate limit. Wait 1-2 minutes, retry. |
| Cookies not detected | Run `npx @checkra1n/xbird login` and paste cookies manually. Auto-detect only works with Bun, not npx. |

