opentwitter

Twitter/X and meme evidence data via the 6551 API. Supports user profiles, tweet search, user tweets, follower events, deleted tweets, KOL followers, meme token evidence, and meme …

infra403

@infra403

Install

$ openclaw skills install @infra403/opentwitter-mcp

Twitter/X Data Skill

Query Twitter/X data from the 6551 platform REST API. All endpoints require a Bearer token via $OPENNEWS_TOKEN.

Get your token: http://app.newsliquid.com/mcp

Base URL: https://ai.6551.io

Authentication

All requests require the header:

Authorization: Bearer $OPENNEWS_TOKEN

Meme Evidence Operations

Get Meme Token Evidence

Get the initial thesis and callout evidence for a meme token from the fomo/pump feeds.

curl -s -X POST "https://ai.6551.io/open/meme/token-evidence" \
  -H "Authorization: Bearer $OPENNEWS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"coin": "GADj8JQ8iQLQD5S6ScvncJWmGs7PkwHnXsBrEUns6ue5", "limit": 100}'

Parameters: coin, kind, platform, handle, user, since, and limit. The default kind is thesis,callout; limit is capped at 1000.

Get Meme Activity

Get later statements and buy/sell evidence for meme tokens.

curl -s -X POST "https://ai.6551.io/open/meme/activity" \
  -H "Authorization: Bearer $OPENNEWS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"coin": "GADj8JQ8iQLQD5S6ScvncJWmGs7PkwHnXsBrEUns6ue5", "kind": "trade", "limit": 100}'

Parameters: coin, handle, user, wallet, kind, platform, since, and limit. kind=trade is an alias for buy and sell.

Twitter Operations

1. Get Twitter User Info

Get user profile by username.

curl -s -X POST "https://ai.6551.io/open/twitter_user_info" \
  -H "Authorization: Bearer $OPENNEWS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"username": "elonmusk"}'

2. Get Twitter User by ID

Get user profile by numeric ID.

curl -s -X POST "https://ai.6551.io/open/twitter_user_by_id" \
  -H "Authorization: Bearer $OPENNEWS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"userId": "44196397"}'

3. Get User Tweets

Get recent tweets from a user.

curl -s -X POST "https://ai.6551.io/open/twitter_user_tweets" \
  -H "Authorization: Bearer $OPENNEWS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"username": "elonmusk", "maxResults": 20, "product": "Latest"}'
ParameterTypeDefaultDescription
usernamestringrequiredTwitter username (without @)
maxResultsinteger20Max tweets (1-100)
productstring"Latest""Latest" or "Top"
includeRepliesbooleanfalseInclude reply tweets
includeRetweetsbooleanfalseInclude retweets

4. Search Twitter

Search tweets with various filters.

Search with query:

curl -s -X POST "https://ai.6551.io/open/twitter_search" \
  -H "Authorization: Bearer $OPENNEWS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"query": "from:VitalikButerin bitcoin -filter:replies", "maxResults": 20, "product": "Top"}'
curl -s -X POST "https://ai.6551.io/open/twitter_search" \
  -H "Authorization: Bearer $OPENNEWS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"keywords": "bitcoin", "maxResults": 20, "product": "Top"}'

Search from specific user:

curl -s -X POST "https://ai.6551.io/open/twitter_search" \
  -H "Authorization: Bearer $OPENNEWS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"fromUser": "VitalikButerin", "maxResults": 20}'

Search by hashtag:

curl -s -X POST "https://ai.6551.io/open/twitter_search" \
  -H "Authorization: Bearer $OPENNEWS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"hashtag": "crypto", "minLikes": 100, "maxResults": 20}'

Twitter Search Parameters

ParameterTypeDefaultDescription
querystring-Complete search string; overrides other filters
keywordsstring-Search keywords
fromUserstring-Tweets from specific user
toUserstring-Tweets to specific user
mentionUserstring-Tweets mentioning user
hashtagstring-Filter by hashtag (without #)
excludeRepliesbooleanfalseExclude reply tweets
excludeRetweetsbooleanfalseExclude retweets
minLikesinteger0Minimum likes threshold
minRetweetsinteger0Minimum retweets threshold
minRepliesinteger0Minimum replies threshold
sinceDatestring-Start date (YYYY-MM-DD)
untilDatestring-End date (YYYY-MM-DD)
langstring-Language code (e.g. "en", "zh")
productstring"Top""Top" or "Latest"
maxResultsinteger20Max tweets (1-100)

If query is set, it is passed through as-is and the other search fields are ignored.

5. Get Follower Events

Get new followers or unfollowers for a user.

# Get new followers
curl -s -X POST "https://ai.6551.io/open/twitter_follower_events" \
  -H "Authorization: Bearer $OPENNEWS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"username": "elonmusk", "isFollow": true, "maxResults": 20}'

# Get unfollowers
curl -s -X POST "https://ai.6551.io/open/twitter_follower_events" \
  -H "Authorization: Bearer $OPENNEWS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"username": "elonmusk", "isFollow": false, "maxResults": 20}'
ParameterTypeDefaultDescription
usernamestringrequiredTwitter username (without @)
isFollowbooleantruetrue=new followers, false=unfollowers
maxResultsinteger20Max events (1-100)

6. Get Deleted Tweets

Get deleted tweets from a user.

curl -s -X POST "https://ai.6551.io/open/twitter_deleted_tweets" \
  -H "Authorization: Bearer $OPENNEWS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"username": "elonmusk", "maxResults": 20}'
ParameterTypeDefaultDescription
usernamestringrequiredTwitter username (without @)
maxResultsinteger20Max tweets (1-100)

7. Get KOL Followers

Get which KOLs (Key Opinion Leaders) are following a user.

curl -s -X POST "https://ai.6551.io/open/twitter_kol_followers" \
  -H "Authorization: Bearer $OPENNEWS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"username": "elonmusk"}'
ParameterTypeDefaultDescription
usernamestringrequiredTwitter username (without @)

8. Get Twitter Article by ID

Get Twitter article by ID.

curl -s -X POST "https://ai.6551.io/open/twitter_article_by_id" \
  -H "Authorization: Bearer $OPENNEWS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"id": "article_id"}'
ParameterTypeDefaultDescription
idstringrequiredTwitter article ID

9. Get Tweet by ID

Get a specific tweet by its ID, including nested reply/quote tweets.

This endpoint retrieves a tweet by ID and automatically fetches any tweets it replies to or quotes, providing complete context.

curl -s -X POST "https://ai.6551.io/open/twitter_tweet_by_id" \
  -H "Authorization: Bearer $OPENNEWS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"twId": "2030318958512164966"}'
ParameterTypeDefaultDescription
twIdstringrequiredTwitter tweet ID (numeric)

Response includes:

  • Main tweet data
  • replyStatus: The tweet being replied to (if applicable)
  • quotedStatus: The tweet being quoted (if applicable)

10. Get Quote Tweets by ID

Get tweets that quote a specific tweet.

curl -s -X POST "https://ai.6551.io/open/twitter_quote_tweets_by_id" \
  -H "Authorization: Bearer $OPENNEWS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"id": "2030318958512164966", "maxResults": 20}'
ParameterTypeDefaultDescription
idstringrequiredTwitter tweet ID (numeric)
maxResultsinteger20Max tweets (1-100)

11. Get Retweet Users by ID

Get users who retweeted a specific tweet.

curl -s -X POST "https://ai.6551.io/open/twitter_retweet_users_by_id" \
  -H "Authorization: Bearer $OPENNEWS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"id": "2030318958512164966"}'
ParameterTypeDefaultDescription
idstringrequiredTwitter tweet ID (numeric)
cursorstring-Pagination cursor for next page

12. Get Twitter Watch List

Get all Twitter monitoring users for the current user.

curl -s -X POST "https://ai.6551.io/open/twitter_watch" \
  -H "Authorization: Bearer $OPENNEWS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}'

13. Add Twitter Watch

Add a Twitter user to monitoring list.

curl -s -X POST "https://ai.6551.io/open/twitter_watch_add" \
  -H "Authorization: Bearer $OPENNEWS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"username": "elonmusk", "groupName": "AI", "remark": "Custom note", "newTweetBol": true, "newFlwBol": false}'
ParameterTypeDefaultDescription
usernamestringrequiredTwitter username (without @)
groupNamestring-Watch group name; an existing matching group is reused, otherwise it is created
remarkstring-Custom note for this watch entry
newTweetBolbooleantrue (server)Monitor new tweets
newFlwBolbooleanfalse (server)Monitor new followers
newUnFlwBolbooleanfalse (server)Monitor unfollowers
newTweetReplyBolbooleantrue (server)Monitor tweet replies
newTweetQuoteBolbooleantrue (server)Monitor quote tweets
newRetweetBolbooleantrue (server)Monitor retweets
updateNameBolbooleantrue (server)Monitor username changes
updateDescBolbooleantrue (server)Monitor bio/description changes
updateAvatarBolbooleantrue (server)Monitor profile picture changes
updateBannerBolbooleantrue (server)Monitor banner image changes
newCaBolbooleanfalse (server)Monitor CA (contract address) events
tweetToppingBolbooleanfalse (server)Monitor tweet pinning events

14. Delete Twitter Watch

Delete a Twitter user from monitoring list by username.

curl -s -X POST "https://ai.6551.io/open/twitter_watch_delete" \
  -H "Authorization: Bearer $OPENNEWS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"username": "elonmusk"}'
ParameterTypeDefaultDescription
usernamestringrequiredTwitter username to delete (without @)

WebSocket Real-time Subscriptions

Endpoint: wss://ai.6551.io/open/twitter_wss?token=YOUR_TOKEN

Subscribe to real-time events from your monitored Twitter accounts.

Heartbeat

To keep the connection alive, the client can send ping, and the server responds with pong.

Subscribe to Twitter Events

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "twitter.subscribe"
}

Response:

{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "success": true
  }
}

Unsubscribe

{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "twitter.unsubscribe"
}

Server Push - Twitter Event

When a monitored account has activity, the server pushes:

{
  "jsonrpc": "2.0",
  "method": "twitter.event",
  "params": {
    "id": 123456,
    "twAccount": "elonmusk",
    "twUserName": "Elon Musk",
    "profileUrl": "https://twitter.com/elonmusk",
    "eventType": "NEW_TWEET",
    "content": "...",
    "ca": "0x1234...",
    "remark": "Custom note",
    "createdAt": "2026-03-06T10:00:00Z"
  }
}

Note: The content field structure varies by event type (see below).


**Event Types and Content Structure**:

#### Tweet Events
- `NEW_TWEET` - New tweet posted
- `NEW_TWEET_REPLY` - New reply tweet
- `NEW_TWEET_QUOTE` - New quote tweet
- `NEW_RETWEET` - Retweeted
- `CA` - Tweet with CA address

Content structure for tweet events:
```json
{
  "id": "1234567890",
  "text": "Tweet content...",
  "createdAt": "2026-03-06T10:00:00Z",
  "language": "en",
  "retweetCount": 100,
  "favoriteCount": 500,
  "replyCount": 20,
  "quoteCount": 10,
  "viewCount": 10000,
  "userScreenName": "elonmusk",
  "userName": "Elon Musk",
  "userIdStr": "44196397",
  "userFollowers": 170000000,
  "userVerified": true,
  "conversationId": "1234567890",
  "isReply": false,
  "isQuote": false,
  "hashtags": ["crypto", "bitcoin"],
  "media": [
    {
      "type": "photo",
      "url": "https://...",
      "thumbUrl": "https://..."
    }
  ],
  "urls": [
    {
      "url": "https://...",
      "expandedUrl": "https://...",
      "displayUrl": "example.com"
    }
  ],
  "mentions": [
    {
      "username": "VitalikButerin",
      "name": "Vitalik Buterin"
    }
  ]
}

Follower Events

  • NEW_FOLLOWER - New follower
  • NEW_UNFOLLOWER - Unfollower event

Content structure for follower events (array):

[
  {
    "id": 123,
    "twId": 44196397,
    "twAccount": "elonmusk",
    "twUserName": "Elon Musk",
    "twUserLabel": "Verified",
    "description": "User bio...",
    "profileUrl": "https://...",
    "bannerUrl": "https://...",
    "followerCount": 170000000,
    "friendCount": 500,
    "createdAt": "2026-03-06T10:00:00Z"
  }
]

Profile Update Events

  • UPDATE_NAME - Username changed (content: new name string)
  • UPDATE_DESCRIPTION - Bio updated (content: new description string)
  • UPDATE_AVATAR - Profile picture changed (content: new avatar URL string)
  • UPDATE_BANNER - Banner image changed (content: new banner URL string)

Other Events

  • TWEET_TOPPING - Tweet pinned
  • DELETE - Tweet deleted
  • SYSTEM - System event
  • TRANSLATE - Tweet translation
  • CA_CREATE - CA token created

Data Structures

Twitter User

{
  "userId": "44196397",
  "screenName": "elonmusk",
  "name": "Elon Musk",
  "description": "...",
  "followersCount": 170000000,
  "friendsCount": 500,
  "statusesCount": 30000,
  "verified": true
}

Tweet

{
  "id": "1234567890",
  "text": "Tweet content...",
  "createdAt": "2024-02-20T12:00:00Z",
  "retweetCount": 1000,
  "favoriteCount": 5000,
  "replyCount": 200,
  "userScreenName": "elonmusk",
  "hashtags": ["crypto", "bitcoin"],
  "urls": [{"url": "https://..."}]
}

Common Workflows

Crypto Twitter KOL Tweets

curl -s -X POST "https://ai.6551.io/open/twitter_user_tweets" \
  -H "Authorization: Bearer $OPENNEWS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"username": "VitalikButerin", "maxResults": 10}'

Trending Crypto Tweets

curl -s -X POST "https://ai.6551.io/open/twitter_search" \
  -H "Authorization: Bearer $OPENNEWS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"keywords": "bitcoin", "minLikes": 1000, "product": "Top", "maxResults": 20}'

Query Search

curl -s -X POST "https://ai.6551.io/open/twitter_search" \
  -H "Authorization: Bearer $OPENNEWS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"query": "from:VitalikButerin bitcoin -filter:replies", "maxResults": 20, "product": "Top"}'

Notes

  • Get your API token at http://app.newsliquid.com/mcp
  • Rate limits apply; max 100 results per request
  • Twitter usernames should not include the @ symbol

Top skills in this category

Playwright (Automation + MCP + Scraper)

@ivangdavila

Automates, tests, and debugs browsers with Playwright: locators, auto-waiting, traces, CI runs, and MCP browser control. Use when a test is flaky, times out, or fails only in CI or headless; when a locator matches multiple elements or the wrong one (strict mode violation); when clicks need force, waits become sleeps, or networkidle never settles; for storageState and login setup, request mocking and HAR replay, uploads and downloads, iframes and shadow DOM, popups and dialogs, screenshot diffs that change per machine, trace and report artifacts, sharding a slow suite, device and permission emulation, accessibility checks, driving a real browser through Playwright MCP, extracting data from JS-rendered pages, or porting a Cypress, Puppeteer, or Selenium suite to Playwright. Not for maintaining an existing Cypress or Puppeteer suite (cypress, puppeteer) or for work a plain HTTP request answers (http).

13043k

Scrapling Official Skill

@d4vinci

Scrape web pages using Scrapling with anti-bot bypass (like Cloudflare Turnstile), stealth headless browsing, spiders framework, adaptive scraping, and JavaScript rendering. Use when asked to scrape, crawl, or extract data from websites; web_fetch fails; the site has anti-bot protections; write Pyth

2815k

Agent Browser Core

@codedao12

OpenClaw skill for the agent-browser CLI (Rust-based with Node.js fallback) enabling AI-friendly web automation with snapshots, refs, and structured commands.

2214k

Polymarket

@mvanhorn

Query and trade on Polymarket prediction markets — check odds, trending markets, search events, view order books, place trades, and manage positions. Now ava...

2410.0k

Gifgrep

@steipete

Search GIF providers with CLI/TUI, download results, and extract stills/sheets.

721k