CT Alpha — Crypto Twitter Intelligence
Overview
CT Alpha turns X/Twitter into an actionable crypto intelligence layer. It searches CT for narratives, alpha, strategies, and sentiment, then ranks results using TweetRank (a PageRank-inspired credibility scoring system), extracts tokens/CAs from multiple signals, detects coordinated raids, fetches full X articles (long-form posts), and suggests execution steps using whatever tools the user has available.
Cost awareness: X API charges ~$0.10 per quick search (20 tweets). Relevancy sort means top results come first — fetching 20 is often better signal than 100. Always start with --quick mode. Never run expensive queries without user confirmation.
Environment Setup
Before using ct-search, ensure the token is available:
source ~/.config/env/global.env 2>/dev/null
If setup hasn't been run yet:
bun run ~/ct-alpha/setup.ts
The skill directory is at ~/ct-alpha/. All CLI commands run from there.
Hosted x402 API
Use the hosted standard x402 surface when the task is to consume ct-alpha over HTTP instead of running the local CLI.
- Hosted base URL:
https://x-research.suzi.trade
- Public standard routes live under:
https://x-research.suzi.trade/x402/*
- Call a concrete route, not the bare prefix. Example:
https://x-research.suzi.trade/x402/search/20?q=solana&since=24h
- Add
fresh=true when the user explicitly wants a live fetch instead of a cached response
- Treat
/metered/* as internal tooling unless the task is specifically about the metered auth/top-up flow
For x402 clients, follow the standard flow:
- Send the request to the exact
https://x-research.suzi.trade/x402/* route.
- If the response is
402 Payment Required, read the payment requirements from the response.
- Pay for that exact method + path + query string.
- Retry the same request with the x402 payment header(s).
CLI Reference
search — Core research command
source ~/.config/env/global.env 2>/dev/null && bun run ~/ct-alpha/ct-search.ts search "<query>" [flags]
Flags:
--quick — 20 tweets, 1hr cache, ~$0.10 (DEFAULT — always use this first)
--full — Up to 3 pages, 15min cache, ~$0.50-1.50 (confirm cost with user first)
--limit N — Override max tweets (default: 20 quick, 100 full)
--sort likes|recency|relevancy — Sort order (default: relevancy)
--since 1h|6h|24h|7d — Time window (default: 24h)
--min-likes N — Engagement filter (default: 3 for quick)
--from user1,user2 — Restrict to specific accounts
--extract-tickers — Show extracted tickers from results
--extract-cas — Show contract addresses and crypto URLs
--raw — JSON output
trending — Multi-signal trending detection
source ~/.config/env/global.env 2>/dev/null && bun run ~/ct-alpha/ct-search.ts trending [flags]
Flags:
--window 1h|6h|24h — Detection window (default: 6h)
--min-mentions N — Minimum mentions (default: 3)
--solana-only — Solana ecosystem only
--top N — Number of results (default: 20)
watchlist — Monitor CT accounts
source ~/.config/env/global.env 2>/dev/null && bun run ~/ct-alpha/ct-search.ts watchlist [flags]
Flags:
--category <cat> — Filter by category (solana-builders, defi-researchers, etc.)
--since 1h|6h|24h|7d — Time window (default: 24h)
read — Read a specific tweet/article by URL or ID (~$0.005)
source ~/.config/env/global.env 2>/dev/null && bun run ~/ct-alpha/ct-search.ts read <tweet_url_or_id> [flags]
Flags:
--thread — Also load the full conversation thread (replies)
--raw — JSON output
Accepts x.com URLs, twitter.com URLs, or raw tweet IDs. Articles (long-form posts) are fetched in full. Uses full-archive search for threads (no 7-day limit).
thread — Hydrate conversation thread
source ~/.config/env/global.env 2>/dev/null && bun run ~/ct-alpha/ct-search.ts thread <tweet_id>
cost — Track API spending
source ~/.config/env/global.env 2>/dev/null && bun run ~/ct-alpha/ct-search.ts cost [--reset]
Research Methodology
Follow this 6-step loop for every research request:
1. Decompose
Break the user's question into 1-3 targeted search queries.
- For token research: search both
$TICKER and plain name with OR (e.g., "$PENDLE" OR "pendle")
- For narratives: search thematic keywords, not just token names
- For strategies: include strategy/yield/APY keywords
- For sentiment: include bullish/bearish/buy/sell keywords
2. Pre-Filter
Before making any API call:
- Check cache: Run
--quick first. If cached results exist, analyze those.
- Add noise filters: The CLI auto-appends crypto noise filters (-is:retweet, -airdrop, -giveaway, etc.)
- Estimate cost: Quick = ~$0.10, Full = ~$0.50-1.50. Tell user before full mode.
- Narrow time window: Default 24h for trending, 7d for research.
3. Search
Execute with --quick mode (always the first pass):
source ~/.config/env/global.env 2>/dev/null && bun run ~/ct-alpha/ct-search.ts search "$TOKEN alpha" --quick --extract-tickers
CRITICAL: Query string rules
- Twitter v2 AND-joins every bare word. A query like
polymarket sure bet 90 percent free money requires ALL 7 words in a single tweet — result: 0 hits. Keep to 2-3 AND-ed terms max, use OR groups for synonyms: polymarket ("free money" OR "easy bet" OR "sure thing")
- Never pass the user's raw question as the query. Decompose it into search terms first. See
references/query-templates.md "Query Anti-Patterns" section.
- The query argument should contain ONLY search terms, boolean logic (
OR, -, "phrases"), and v2 operators (from:, is:retweet, has:links, lang:, conversation_id:, $cashtag, #hashtag)
- NEVER put these v1.1 operators in the query string — they do NOT exist on v2 pay-per-use and will cause 400 errors:
min_faves:N, min_retweets:N, min_replies:N — use --min-likes CLI flag instead (filters client-side)
place:, place_country:, point_radius: — geo operators not available
bio:, bio_name:, bio_location: — profile operators not available
sample: — sampling not available
- Do NOT manually include noise filters (
-is:retweet, -"airdrop", etc.) in your query — the CLI auto-appends them
- Do NOT use
& in query strings — it breaks X API v2 query parsing
4. Extract
Results include TweetRank scores and trust labels:
[WATCHLIST] — Author is on user's watchlist (highest trust)
[HIGH-CRED] — Author has high credibility score
[UNKNOWN] — Unverified author
[SUSPICIOUS] — Bot-like patterns detected
ARTICLE — Long-form X post (full text captured)
Look for extracted tickers, contract addresses, and crypto URLs.
5. Deep-Dive (if needed)
If initial results are promising:
- Follow high-engagement threads:
bun run ~/ct-alpha/ct-search.ts thread <id>
- Search specific authors:
--from author1,author2
- Broaden with
--full only if quick was insufficient
6. Synthesize
Combine findings into actionable intelligence:
- Group by theme, not by query
- Highlight tickers with strong multi-signal detection (cashtag + URL + name-phrase)
- Flag raid risks (high low-cred author ratio)
- Suggest verification and execution steps using available tools
- Cross-reference with DeFi Llama (TVL, yields, fees), Backpack (price, depth), Polymarket (prediction markets)
Refinement Heuristics
Too noisy?
- Add
--min-likes 50 for higher quality
- Narrow time window:
--since 6h
- Restrict to watchlist:
--from trusted_user1,trusted_user2
Too few results?
- Broaden query: use OR with alternative terms
- Extend window:
--since 7d
- Remove restrictive keywords
- Lower min-likes:
--min-likes 0
Need expert takes?
- Use
--from with known analysts from watchlist
- Search with
has:links for substantive content
Detecting spam/raids?
- Check the TweetRank source labels
- Look for RAID flags in trending output
- Low unique-author count = suspicious
Dynamic Tool Discovery
After completing research, check what other tools the user has available and suggest execution steps. Look for these MCP tool prefixes:
- mcp__defillama__* → Check TVL, yields, fees, prices, protocol comparison
- mcp__backpack__* → Check exchange price, depth, trades, klines
- mcp__polymarket__* → Check prediction markets for related narratives
- mcp__postgres-mcp__* → Query on-chain data if available
Common patterns:
- Token found →
get_protocol_tvl, get_current_prices, backpack_get_ticker
- CA found → suggest verification on Solscan/Etherscan, rug check if available
- Narrative detected →
search_polymarket for prediction market odds
- Strategy found →
get_top_yield_pools for current APYs
- Protocol comparison →
compare_protocols side by side
Always frame suggestions as "verify" not "confirm" — encourage skepticism about CT alpha.
Output Trust Labels
Every result includes trust metadata. Never present CT findings as authoritative:
- Confidence: HIGH (multiple watchlist sources agree) / MED / LOW
- Source quality: Per-tweet labels showing author credibility
- Verification status: Contract addresses are always UNVERIFIED until tool-checked
- Risk bullets: "What could be wrong?" per finding (spoofed engagement, coordinated raid, etc.)
Cost Protocol
- Always
--quick first (~$0.10 for 20 tweets). Relevancy sort = best results come first.
- Only use
--limit 30 or --limit 50 if 20 results are genuinely insufficient.
- Display cost estimate before
--full mode (~$0.50-1.50).
- Cache is aggressive (1hr for quick mode) — same query is free within TTL.
- Two-pass strategy: First search with 20 results. If the user needs more depth on a specific sub-topic, do a targeted follow-up rather than re-running with higher limits.
- Show
cost summary if user asks about spending.
Recency Defaults
- Trending / narratives:
--since 24h
- Research / strategies:
--since 7d
- Older data: Only on explicit user request, never default
1---2name: ct-alpha3description: Crypto Twitter intelligence and alpha research agent. Searches X/Twitter for real-time crypto narratives, trending tokens, yield strategies, smart money signals, and protocol research. Features TweetRank (PageRank-inspired credibility scoring), multi-signal token detection (cashtags + name-phrases + crypto URLs + contract addresses), coordinated raid detection, X article (long-form post) support, and dynamic tool discovery for execution suggestions. Use when: (1) user says "ct alpha", "what's CT saying", "trending on crypto twitter", "find alpha on", "search CT for", "what are people saying about [token]", "crypto twitter research", "/ct-alpha", "what's hot in crypto", "CT sentiment", (2) user wants to research crypto narratives, tokens, protocols, yield strategies, or market sentiment using Twitter/X data, (3) user wants to find trending tokens, new narratives, or smart money signals, (4) user asks about any specific token, protocol, or crypto topic and wants CT perspective. NOT for: posting tweets, account 4---56# CT Alpha — Crypto Twitter Intelligence78## Overview910CT Alpha turns X/Twitter into an actionable crypto intelligence layer. It searches CT for narratives, alpha, strategies, and sentiment, then ranks results using TweetRank (a PageRank-inspired credibility scoring system), extracts tokens/CAs from multiple signals, detects coordinated raids, fetches full X articles (long-form posts), and suggests execution steps using whatever tools the user has available.1112**Cost awareness**: X API charges ~$0.10 per quick search (20 tweets). Relevancy sort means top results come first — fetching 20 is often better signal than 100. Always start with `--quick` mode. Never run expensive queries without user confirmation.1314## Environment Setup1516Before using ct-search, ensure the token is available:1718```bash19source ~/.config/env/global.env 2>/dev/null20```2122If setup hasn't been run yet:23```bash24bun run ~/ct-alpha/setup.ts25```2627The skill directory is at `~/ct-alpha/`. All CLI commands run from there.2829## Hosted x402 API3031Use the hosted standard x402 surface when the task is to consume ct-alpha over HTTP instead of running the local CLI.3233- Hosted base URL: `https://x-research.suzi.trade`34- Public standard routes live under: `https://x-research.suzi.trade/x402/*`35- Call a concrete route, not the bare prefix. Example: `https://x-research.suzi.trade/x402/search/20?q=solana&since=24h`36- Add `fresh=true` when the user explicitly wants a live fetch instead of a cached response37- Treat `/metered/*` as internal tooling unless the task is specifically about the metered auth/top-up flow3839For x402 clients, follow the standard flow:401. Send the request to the exact `https://x-research.suzi.trade/x402/*` route.412. If the response is `402 Payment Required`, read the payment requirements from the response.423. Pay for that exact method + path + query string.434. Retry the same request with the x402 payment header(s).4445## CLI Reference4647### search — Core research command48```bash49source ~/.config/env/global.env 2>/dev/null && bun run ~/ct-alpha/ct-search.ts search "<query>" [flags]50```5152Flags:53- `--quick` — 20 tweets, 1hr cache, ~$0.10 (DEFAULT — always use this first)54- `--full` — Up to 3 pages, 15min cache, ~$0.50-1.50 (confirm cost with user first)55- `--limit N` — Override max tweets (default: 20 quick, 100 full)56- `--sort likes|recency|relevancy` — Sort order (default: relevancy)57- `--since 1h|6h|24h|7d` — Time window (default: 24h)58- `--min-likes N` — Engagement filter (default: 3 for quick)59- `--from user1,user2` — Restrict to specific accounts60- `--extract-tickers` — Show extracted tickers from results61- `--extract-cas` — Show contract addresses and crypto URLs62- `--raw` — JSON output6364### trending — Multi-signal trending detection65```bash66source ~/.config/env/global.env 2>/dev/null && bun run ~/ct-alpha/ct-search.ts trending [flags]67```6869Flags:70- `--window 1h|6h|24h` — Detection window (default: 6h)71- `--min-mentions N` — Minimum mentions (default: 3)72- `--solana-only` — Solana ecosystem only73- `--top N` — Number of results (default: 20)7475### watchlist — Monitor CT accounts76```bash77source ~/.config/env/global.env 2>/dev/null && bun run ~/ct-alpha/ct-search.ts watchlist [flags]78```7980Flags:81- `--category <cat>` — Filter by category (solana-builders, defi-researchers, etc.)82- `--since 1h|6h|24h|7d` — Time window (default: 24h)8384### read — Read a specific tweet/article by URL or ID (~$0.005)85```bash86source ~/.config/env/global.env 2>/dev/null && bun run ~/ct-alpha/ct-search.ts read <tweet_url_or_id> [flags]87```8889Flags:90- `--thread` — Also load the full conversation thread (replies)91- `--raw` — JSON output9293Accepts x.com URLs, twitter.com URLs, or raw tweet IDs. Articles (long-form posts) are fetched in full. Uses full-archive search for threads (no 7-day limit).9495### thread — Hydrate conversation thread96```bash97source ~/.config/env/global.env 2>/dev/null && bun run ~/ct-alpha/ct-search.ts thread <tweet_id>98```99100### cost — Track API spending101```bash102source ~/.config/env/global.env 2>/dev/null && bun run ~/ct-alpha/ct-search.ts cost [--reset]103```104105## Research Methodology106107Follow this 6-step loop for every research request:108109### 1. Decompose110Break the user's question into 1-3 targeted search queries.111- For token research: search both `$TICKER` and plain name with OR (e.g., `"$PENDLE" OR "pendle"`)112- For narratives: search thematic keywords, not just token names113- For strategies: include strategy/yield/APY keywords114- For sentiment: include bullish/bearish/buy/sell keywords115116### 2. Pre-Filter117Before making any API call:118- **Check cache**: Run `--quick` first. If cached results exist, analyze those.119- **Add noise filters**: The CLI auto-appends crypto noise filters (-is:retweet, -airdrop, -giveaway, etc.)120- **Estimate cost**: Quick = ~$0.10, Full = ~$0.50-1.50. Tell user before full mode.121- **Narrow time window**: Default 24h for trending, 7d for research.122123### 3. Search124Execute with `--quick` mode (always the first pass):125```bash126source ~/.config/env/global.env 2>/dev/null && bun run ~/ct-alpha/ct-search.ts search "$TOKEN alpha" --quick --extract-tickers127```128129**CRITICAL: Query string rules**130- **Twitter v2 AND-joins every bare word.** A query like `polymarket sure bet 90 percent free money` requires ALL 7 words in a single tweet — result: 0 hits. Keep to 2-3 AND-ed terms max, use OR groups for synonyms: `polymarket ("free money" OR "easy bet" OR "sure thing")`131- **Never pass the user's raw question as the query.** Decompose it into search terms first. See `references/query-templates.md` "Query Anti-Patterns" section.132- The query argument should contain ONLY search terms, boolean logic (`OR`, `-`, `"phrases"`), and v2 operators (`from:`, `is:retweet`, `has:links`, `lang:`, `conversation_id:`, `$cashtag`, `#hashtag`)133- **NEVER put these v1.1 operators in the query string — they do NOT exist on v2 pay-per-use and will cause 400 errors:**134 - `min_faves:N`, `min_retweets:N`, `min_replies:N` — use `--min-likes` CLI flag instead (filters client-side)135 - `place:`, `place_country:`, `point_radius:` — geo operators not available136 - `bio:`, `bio_name:`, `bio_location:` — profile operators not available137 - `sample:` — sampling not available138- **Do NOT manually include noise filters** (`-is:retweet`, `-"airdrop"`, etc.) in your query — the CLI auto-appends them139- **Do NOT use `&` in query strings** — it breaks X API v2 query parsing140141### 4. Extract142Results include TweetRank scores and trust labels:143- `[WATCHLIST]` — Author is on user's watchlist (highest trust)144- `[HIGH-CRED]` — Author has high credibility score145- `[UNKNOWN]` — Unverified author146- `[SUSPICIOUS]` — Bot-like patterns detected147- `ARTICLE` — Long-form X post (full text captured)148149Look for extracted tickers, contract addresses, and crypto URLs.150151### 5. Deep-Dive (if needed)152If initial results are promising:153- Follow high-engagement threads: `bun run ~/ct-alpha/ct-search.ts thread <id>`154- Search specific authors: `--from author1,author2`155- Broaden with `--full` only if quick was insufficient156157### 6. Synthesize158Combine findings into actionable intelligence:159- Group by theme, not by query160- Highlight tickers with strong multi-signal detection (cashtag + URL + name-phrase)161- Flag raid risks (high low-cred author ratio)162- Suggest verification and execution steps using available tools163- Cross-reference with DeFi Llama (TVL, yields, fees), Backpack (price, depth), Polymarket (prediction markets)164165## Refinement Heuristics166167**Too noisy?**168- Add `--min-likes 50` for higher quality169- Narrow time window: `--since 6h`170- Restrict to watchlist: `--from trusted_user1,trusted_user2`171172**Too few results?**173- Broaden query: use OR with alternative terms174- Extend window: `--since 7d`175- Remove restrictive keywords176- Lower min-likes: `--min-likes 0`177178**Need expert takes?**179- Use `--from` with known analysts from watchlist180- Search with `has:links` for substantive content181182**Detecting spam/raids?**183- Check the TweetRank source labels184- Look for RAID flags in trending output185- Low unique-author count = suspicious186187## Dynamic Tool Discovery188189After completing research, check what other tools the user has available and suggest execution steps. Look for these MCP tool prefixes:190191- **mcp__defillama__*** → Check TVL, yields, fees, prices, protocol comparison192- **mcp__backpack__*** → Check exchange price, depth, trades, klines193- **mcp__polymarket__*** → Check prediction markets for related narratives194- **mcp__postgres-mcp__*** → Query on-chain data if available195196Common patterns:197- Token found → `get_protocol_tvl`, `get_current_prices`, `backpack_get_ticker`198- CA found → suggest verification on Solscan/Etherscan, rug check if available199- Narrative detected → `search_polymarket` for prediction market odds200- Strategy found → `get_top_yield_pools` for current APYs201- Protocol comparison → `compare_protocols` side by side202203**Always frame suggestions as "verify" not "confirm"** — encourage skepticism about CT alpha.204205## Output Trust Labels206207Every result includes trust metadata. Never present CT findings as authoritative:208- **Confidence**: HIGH (multiple watchlist sources agree) / MED / LOW209- **Source quality**: Per-tweet labels showing author credibility210- **Verification status**: Contract addresses are always UNVERIFIED until tool-checked211- **Risk bullets**: "What could be wrong?" per finding (spoofed engagement, coordinated raid, etc.)212213## Cost Protocol2142151. **Always `--quick` first** (~$0.10 for 20 tweets). Relevancy sort = best results come first.2162. Only use `--limit 30` or `--limit 50` if 20 results are genuinely insufficient.2173. Display cost estimate before `--full` mode (~$0.50-1.50).2184. Cache is aggressive (1hr for quick mode) — same query is free within TTL.2195. **Two-pass strategy**: First search with 20 results. If the user needs more depth on a specific sub-topic, do a targeted follow-up rather than re-running with higher limits.2206. Show `cost` summary if user asks about spending.221222## Recency Defaults223224- Trending / narratives: `--since 24h`225- Research / strategies: `--since 7d`226- Older data: Only on explicit user request, never default