Followin MCP
Your AI's market desk — investment-bank research, market data, news and trader signals for crypto and US equities, through one endpoint.
What it can do
- News: PURPOSE: Search financial news, market commentary, social posts, and raw indexed research-source articles/documents — across articles, tweets, Telegram channel posts, blogs, media, and research-
- Metrics: PURPOSE: Look up live and historical financial market data — prices, charts, technical indicators, macroeconomic data, and company fundamentals. Always call this for current numbers; training
- Signal: PURPOSE: Look up who is trading what — actual positioning and trade calls, with the original content so you can read the reasoning, size, and timing. COVERS (by intent): - [signal-kol-call] KO
What data it sees
Do you need an account
An API key from the service settings is required
Your AI's market desk — investment-bank research, market data, news and trader signals for crypto and US equities, through one endpoint.
Broker research, structured
A living library of sell-side reports, refreshed daily. Ask about a ticker and get the thesis, catalysts, risks, how the house differs from consensus, target-price revisions, and page-level source anchors — structured fields, not a PDF dump. Coverage spans US mega-caps and Asia tech, with dozens of distinct institutions on a single name.
Markets and signals
- Real-time and historical quotes across crypto, US equities, global indices, commodities and FX
- 840k+ FRED macro series and an event-ahead economic calendar
- 12-block US-equity fundamentals in one call, with 30-year history
- Curated top-trader position snapshots
- Insider and congressional filings (Form 4, Senate & House)
- KOL calls from premium channels
News search is free
Cross-market newsflashes, topic clustering, deep articles from 100+ finance sources, plus Twitter/X and Telegram discussion in 5 languages.
Free tier, no credit card — API key issued on signup at followin.io/mcp.
Server tool list (5)
Raw names from tools/list. Only developers need these.
| news | PURPOSE: Search financial news, market commentary, social posts, and raw indexed research-source articles/documents — across articles, tweets, Telegram channel posts, blogs, media, and research-source documents. COVERS (by intent): - [news-search] keyword / topic / event search across media, social content, and raw research-source article/document records (scope with the sources field: twitter | media | research) - [news-telegram] curated Telegram channel posts (sources=["telegram"]) — crypto-focused - [news-trending] browse what is hot with no specific entity — leave query empty (and sources empty) to get trending topics; add asset_type="crypto"|"tradfi" to narrow the trending board to one asset class BOUNDARIES: - Commentary / interpretation / "解读" / "怎么看" about events, media coverage, or social discussion → news. Raw price or fundamental numbers → metrics. Structured broker research reports / 研报 consumption, report-card fields, thesis/catalysts/caveats, affected-name mentions, most-mentioned stocks in research reports, analyst RATING / price target / "上调评级" → metrics. - sources=["research"] fits raw indexed research-source article/document discovery, original-document browsing, or article-style search. 研报 consumption/summary/analysis by ticker and no-ticker research-report boards fit metrics(categories=["fundamentals"]). - "What are KOLs calling / 喊单 / consensus" → signal(kol_call). News returns articles & posts. - Open-ended "anything worth watching / 有什么热点" with no named entity → call with EMPTY query (returns trending). - A named account's COMPLETE or live raw timeline, or a specific tweet's replies/thread → the twitter tool. News searches the curated/indexed set (recent posts + discovery). USAGE: English query gives the best recall — translate intent, prefer canonical entity names. Query search defaults to sort_by="time" and accepts "relevance"; both retain BM25+KNN recall, while time orders the candidate pool by published time and relevance applies semantic reranking. For an exact KOL alias when Twitter is eligible (default mixed search or sources includes "twitter"), authored originals and content mentions are independent recall legs: each is filtered/deduped/sorted separately, they split the Twitter visible limit evenly with unused quota backfilled, and only the mention leg uses asset entity admission. Empty-query trending defaults to sort_by="hot" and accepts "time"; scoped source browse is time-only. Empty query with sources=["telegram"] uses ten-category fan-out internally for recall, folds exact cross-category duplicates, and returns one globally newest-first stream. Use source_lang when the user explicitly asks for local-language coverage. To search a specific KOL, put their Twitter handle in query + sources=["twitter"] (e.g. 马斯克→elonmusk). RETURNS: article/document rows with title, content, source, author, time, and a source-quality tag. Structured ticker-scoped research-report cards live under metrics.fundamentals.research_reports; no-ticker most-mentioned research-report requests return leaderboard items under metrics.fundamentals.research_report_most_mentioned. EXAMPLES (user → args; cross-lingual): - "比特币最近的新闻" → query="BTC", sort_by="time" - "비트코인 최근 뉴스" → query="BTC" - "Tin tức Bitcoin" → query="BTC" - "美联储利率决议解读" → query="FEDFUNDS rate decision" - "AAPL 财报评论" → query="AAPL earnings" - "TG meme 打新动态" → sources=["telegram"], query="meme launch" - "在资讯库里搜 AAPL 相关 research 原文" → sources=["research"], query="AAPL" - "浏览最近 research source 的原始文章" → sources=["research"] - "今天有什么值得关注的" → query="", time_range="1d", sort_by="hot" (empty → trending) - "最近加密有什么热点" → query="", asset_type="crypto" (trending, crypto only) - "美股今天有什么风向" → query="", asset_type="tradfi", time_range="1d" (trending, tradfi only) - "刷一下推特最新" → sources=["twitter"] - "马斯克最近发的推" → sources=["twitter"], query="elonmusk" - "V神发了什么" → sources=["twitter"], query="VitalikButerin" |
| metrics | PURPOSE: Look up live and historical financial market data — prices, charts, technical indicators, macroeconomic data, and company fundamentals. Always call this for current numbers; training data is stale. COVERS (by intent): - market: [market-quote] live price / quote / snapshot, including optional extended-hours bid/ask quote for US stocks/ETFs · [market-history] OHLCV candles & price history (incl. crypto K-line, Binance-sourced) · [market-technical] technical indicators (RSI / MACD / moving averages) · [market-movers] US gainers / losers / most-active board - macro: [macro-indicator] economic series (CPI, GDP, unemployment, fed funds) · [macro-rates] treasury yields & yield curve · [macro-calendar] economic-event calendar & data release dates - fundamentals: [fundamentals-financials] income statement / balance sheet / cash flow · [fundamentals-earnings] fiscal-period financial statements, actual-versus-estimate earnings comparisons, and fiscal-period call transcripts · [fundamentals-earnings-calendar] next-earnings date for a ticker AND market-wide earnings calendar (with or without a ticker) · [fundamentals-analyst] sell-side analyst price targets, estimates, and rating upgrades/downgrades · [fundamentals-research-report] structured broker / sell-side research reports, report cards, report thesis/catalysts/caveats, matched mention context, section counts, and a most-mentioned board whose mention_impact counts how distinct reports describe each affected ticker · [fundamentals-valuation] DCF / ratios / key metrics / enterprise value · [fundamentals-growth] revenue & earnings growth · [fundamentals-profile] company profile, sector, shares outstanding / float · [fundamentals-peers] comparable companies / competitors · [fundamentals-filings] SEC filings (10-K, 8-K) · [fundamentals-esg] ESG ratings BOUNDARIES: - Sell-side analyst ratings, price targets, estimates, and rating upgrades/downgrades → fundamentals-analyst. Structured broker research reports / 研报 / 券商研报 with report cards, thesis, catalysts, caveats, matched mention context, or "most mentioned stocks in research reports" → fundamentals-research-report. Plain "研报" consumption/summary/analysis defaults to metrics. Raw research-source article/document discovery uses news.sources=["research"]. Ratings / targets / "上调评级" / "how Wall Street rates it" / "华尔街怎么看…评级" are fundamentals datapoints. - "Comparable / peer companies" → fundamentals-peers. - Raw numbers / data → metrics; open-ended interpretation / commentary / "怎么看" / "解读" about events, media coverage, or social discussion → news. - Market movers cover US equities and drop sub-$1 penny stocks by default (include_penny_stocks=true to keep them). USAGE: Argument contract: keywords is the ENTITY FIELD; query is the INTENT FIELD. Whenever the user names assets, companies, indices, commodities, or macro series, put each canonical ID in a separate keywords item and put the requested metric or operation in query. Example: "JBLU next earnings date" → keywords=["JBLU"], query="next earnings date"; a batch uses keywords=["JBLU","CUBI"]. Standalone query serves entity-free screens such as economic calendar, biggest gainers, treasury yield curve, or the research-report leaderboard. categories (market | macro | fundamentals) is optional — omit to auto-detect. interval selects intraday candles; period is the indicator window. English query gives the best recall; up to 5 keywords run in parallel, and omissions are reported in meta.warnings. Calendar leaves return at most 50 rows per page; meta.pagination supplies an opaque next_cursor, and sending it back unchanged in cursor with the same arguments continues that leaf. A requested calendar limit above 50 uses 50 and is reported in meta.warnings. Structured research-report asset mode searches every resolved ticker, including multiple listings from one alias; report cards are deduplicated by event_id with subject matches preferred, all ticker groups share one card stream, and each page contains at most 10 cards. Continue fundamentals.research_reports with its opaque next_cursor and unchanged arguments, including verbosity. Every card always includes report_subject_target_price and matched_asset_target_price (null when unavailable); legacy target-price aliases are absent. No-ticker research aggregation counts each report/ticker pair once and exposes mention_impact counts for beneficiary, adverse, neutral, and mixed descriptions; dominant is tie when buckets share the highest count and mixed only when the mixed bucket uniquely leads. detail returns capped evidence sections plus original section counts. Both structured research-report modes honor time_range/date_from/date_to by filtering inclusive report_date bounds. Use time_range=24h / 7d / 30d for recent-report views. Because report_date is date-granularity, 24h resolves to an inclusive calendar-date range rather than a sub-day publication timestamp. If no time parameter is supplied, all available reports are used. No-ticker aggregation uses limit as leaderboard item count within the effective window. RETURNS: results bucketed market.{snapshot,history,technical,movers}, macro.{indicators,calendar}, fundamentals.{concise,earnings_calendar,research_reports,research_report_most_mentioned} — only fired buckets present. Fundamentals concise output groups corresponding financial_statement and earnings_surprise blocks under fiscal_quarters[].fiscal_period; earnings_surprise is the standard actual-results-versus-consensus comparison. Transcript rows carry their actual date, fiscal_year, fiscal_quarter, and stable freshness. Pagination state is keyed by result leaf in meta.pagination. Per-input failures / no-match notices in meta.warnings[] (reason=not_applicable / kw_not_canonical / no_match). EXAMPLES (user → args; cross-lingual — translate intent to English): - "BTC 现价" → keywords=["BTC"] - "苹果近30天走势带 RSI" → keywords=["AAPL"], query="RSI", time_range="30d" - "비트코인 1년 차트" → keywords=["BTC"], asset_type="crypto", time_range="1y" - "Giá Bitcoin hôm nay" → keywords=["BTC"] - "美国 CPI 和 GDP 增速" → keywords=["CPI","GDP"], categories=["macro"] - "国债收益率曲线" → query="treasury yield curve", categories=["macro"] - "经济日历" → query="economic calendar", categories=["macro"] - "分析师给英伟达的目标价" → keywords=["NVDA"], query="analyst price target" - "华尔街最近有没有上调特斯拉评级" → keywords=["TSLA"], query="analyst rating" - "NVDA 的券商研报怎么看" → keywords=["NVDA"], query="broker research reports", categories=["fundamentals"] - "最近7天研报提到最多的美股" → query="most mentioned stocks in research reports", categories=["fundamentals"], time_range="7d" - "最近24小时的 NVDA 研报" → keywords=["NVDA"], query="latest broker research reports", categories=["fundamentals"], time_range="24h" - "美股财报日历" → query="earnings calendar" - "苹果下次财报时间" → keywords=["AAPL"], query="next earnings date" - "和英伟达对标的几家公司" → keywords=["NVDA"], query="peers" - "苹果的自由现金流" → keywords=["AAPL"], query="cash flow" - "AAPL 全面分析" → keywords=["AAPL"], query="comprehensive analysis" |
| signal | PURPOSE: Look up who is trading what — actual positioning and trade calls, with the original content so you can read the reasoning, size, and timing. COVERS (by intent): - [signal-kol-call] KOL trading calls (Twitter/TG personalities posting calls) — covers BOTH crypto KOLs AND tradfi (stock/ETF) finance influencers; omit asset_type for both, or set asset_type="crypto"|"tradfi" to scope one class; query="consensus" → aggregated bullish/bearish view across KOLs (best with a specific ticker/entity). Watch / subscribe / alert / remind / notify / monitor intents about KOL-call symbols fit subscription; it tracks watched symbols with zero quota cost. - [signal-trader-position] latest directional trader-position legs by symbol/asset, including simultaneous long+short hedge legs, bot-reported notional size, active status, compact trader profile context, and empty-keyword trending symbol groups; covers crypto and tradfi position rows, while asset_type narrows one family - [signal-insider-trading] corporate insider (SEC Form 4) + political / congressional trades (tradfi) - [signal-institutional] A ticker's bounded 13F holder page, a manager's latest reported portfolio, and changes versus its previous available report (tradfi). Manager results disclose the selected filing and bounded evidence when more than one filing version was observed for a report period. BOUNDARIES: - signal = crypto-social calls + tradfi insider/13F filings. Sell-side Wall Street ANALYST ratings / price targets / rating upgrades-downgrades / "评级" / "华尔街怎么看…评级" fit metrics(fundamentals). "KOL / 喊单" maps to finance influencer calls; "分析师 / analyst" maps to sell-side analyst data. Institutional means 13F holdings. - News articles & commentary → news. - Watch / subscribe / alert / remind / notify / monitor intents about KOL-call symbols → subscription, a free watchlist inbox that lists watched symbols and unread counts. Immediate call content and original posts → signal. - trader_position and kol_call cover BOTH crypto and tradfi (asset_type="crypto"|"tradfi" narrows; omit → both classes). insider_trading & institutional are tradfi-only. USAGE: Argument contract: keywords is the ENTITY FIELD; query is the INTENT FIELD. Whenever the user names tickers, symbols, KOLs, people, or managers, put each entity in a separate keywords item and put the requested signal view in query. Example: "ETH KOL consensus" → keywords=["ETH"], query="consensus", categories=["kol_call"]. Standalone query serves entity-free discovery; trader_position with empty keywords returns trending symbol groups. Pick categories to scope (omit for all). Up to 5 keywords run in parallel, and omissions are reported in meta.warnings. For institutional, put security tickers and/or manager CIKs or exact legal/common names in keywords. Security and manager matches are additive and may coexist. Explicit keywords are authoritative for Institutional entity execution; with empty keywords, query-derived entities provide compatibility discovery. Each resolved manager returns both manager_portfolio and manager_changes, with query supplying context while the view set stays fixed. English / canonical names match best. RETURNS: signals with original content, bucketed {kol_call, trader_position, insider_trading, institutional} — only fired buckets present. trader_position returns {top_trader}; groups are by symbol/asset/instrument so multi-keyword requests keep BTC, ETH, MSTR, etc. separate. Each active direction is a separate position leg, so one trader may have both long and short rows for the same symbol. For trader_position, each symbol group returns up to limit position rows, across up to 5 symbol groups from keywords or empty-keyword trending; symbol_rollup metadata is returned per group outside that row budget. top_trader groups contain symbol_rollup + positions; symbol_rollup exposes long/short leg counts, positions_without_notional, gross_notional_value_usd, net_notional_value_usd, long_notional_ratio, short_notional_ratio, net_direction, agreement, actions, and classification. Exposure sums only reported notional_value_usd values: a position with null notional remains in leg counts but is excluded from dollar exposure and increments positions_without_notional; entry_price is never used as notional. Exposure and action totals count position legs; agreement counts distinct canonical traders, with a trader holding both long and short counted once and abstaining from the directional vote. notional_value_usd/value_usd remains bot-reported notional, not an inferred margin value. trader_position profile.status remains available when collected profile fields exist and unavailable otherwise. profile.history_access_status reports whether the trader's TG history is currently accessible or hidden, but hidden access never suppresses already collected profile fields or profile-quality ranking. Every available profile includes history_data_note="Based on collected records; data may be incomplete." because reopening history does not guarantee gap backfill. Institutional returns security_holders for security keywords and both manager_portfolio and manager_changes for each resolved manager; both capability legs may coexist in one response. Ambiguous live manager discovery returns manager_candidates instead of guessing. Every nested list is capped by limit. Manager rows return only the selected filing's bounded positions or cross-period changes, plus every observed filing summary, selected_filing_id, semantic_status, and at most min(limit,10) same-period filing differences when complete version positions are available. The Host does not receive raw multi-megabyte extracts; the filing-aware DB snapshot retains complete normalized positions for all current-response filings while public output remains bounded to one selected portfolio. For trader_position, omitted sort_by ranks positions by profile quality (tier, then profile_confidence) with amount/time tie-breakers; pass sort_by="time" for newest-first or "amount" for largest-position-first. Notices in meta.warnings[] (reason=not_applicable / no_match). EXAMPLES (user → args; cross-lingual): - "KOL 在喊什么单" → categories=["kol_call"] - "现在 KOL 都在喊什么币" → categories=["kol_call"] - "近 24h KOL 对 ETH 共识" → categories=["kol_call"], keywords=["ETH"], query="consensus", time_range="1d" - "订阅/监控/提醒 BTC 的 KOL 喊单" → use tool subscription(action="set", items=[{"symbol":"BTC","asset_type":"crypto"}]) — zero quota cost - "美股 KOL 在喊什么 / who's calling stocks on Twitter" → categories=["kol_call"], asset_type="tradfi" - "谁在推特喊 NVDA" → categories=["kol_call"], keywords=["NVDA"], asset_type="tradfi" - "BTC 最新交易员仓位 / BTC latest trader positions" → categories=["trader_position"], keywords=["BTC"] - "MSTR 最新持仓动向" → categories=["trader_position"], keywords=["MSTR"], asset_type="tradfi" - "现在交易员都集中在哪些标的" → categories=["trader_position"], keywords=[] - "비트코인 롱숏 포지션" → categories=["trader_position"], keywords=["BTC"] - "AAPL 内部人最近交易" → categories=["insider_trading"], keywords=["AAPL"] - "佩洛西最近交易" → categories=["insider_trading"], keywords=["Pelosi"] - "金额最大的几笔国会交易" → categories=["insider_trading"], sort_by="amount" - "TSLA 13F 机构持仓变化" → categories=["institutional"], keywords=["TSLA"] - "AAPL 的机构持有人" → categories=["institutional"], keywords=["AAPL"] - "Berkshire Hathaway 最新 13F 组合和持仓变化" → categories=["institutional"], keywords=["BERKSHIRE HATHAWAY INC"] - "同时看 AAPL 持有人和 BlackRock 组合" → categories=["institutional"], keywords=["AAPL","BlackRock"] |
| subscription | PURPOSE: Manage a free per-key KOL-call watchlist inbox for watch / subscribe / alert / remind / notify / monitor intents — save symbols, check unread counts, then fetch content with signal when needed. COVERS (by intent): - [subscription-watchlist] watch / subscribe / alert me / remind me / notify me / monitor a symbol for new KOL calls; save or update a KOL-call watchlist; list watched symbols and unread counts; check whether watched coins or stocks have unseen KOL calls; acknowledge counts I already saw BOUNDARIES: - Choose subscription when the user asks to watch, subscribe, alert, remind, notify, monitor, list subscriptions, check alerts, show watched symbols, or check unread KOL-call counts. It returns symbols and unread counts with zero monthly quota cost. - For the actual calls and original posts, use signal(categories=["kol_call"], keywords=[...]) after list reports symbols with unread_count > 0; that follow-up signal call is billed as usual. - Phase 1 supports category="kol_call" only, covering both crypto and tradfi KOL calls. Use per-item asset_type="crypto"|"tradfi" only to disambiguate a symbol. - Delivery model: pull-based watchlist inbox for user "alert/remind/notify me" wording; users can check stored unread counts later. USAGE: - set: action="set", items=[{"symbol":"BTC","asset_type":"crypto"},{"symbol":"AAPL","asset_type":"tradfi"}]; this adds new items, ignores duplicates, and preserves existing items - list: action="list" (free; returns the watchlist with unread_count and folds pending updates into shown; repeated list calls are stable until ack) - ack: action="ack", items=[{"symbol":"BTC","asset_type":"crypto"}] (free; clears shown only) - delete: action="delete" (clears the whole watchlist) RETURNS: results.watchlist for set/list, results.acknowledged for ack, or results.status for delete. set watchlist rows include symbol and asset_kind; list watchlist rows also include pending, shown, unread_count, and latest_ts where relevant. EXAMPLES: - "帮我盯一下 BTC 和 ETH 有新喊单就提醒" → action="set", items=[{"symbol":"BTC","asset_type":"crypto"},{"symbol":"ETH","asset_type":"crypto"}] - "watch / subscribe / alert me on NVDA KOL calls" → action="set", items=[{"symbol":"NVDA","asset_type":"tradfi"}] - "我的自选币有新动静吗 / check my alerts" → action="list" - "我订阅的信号有更新吗 / show my subscriptions" → action="list" - "BTC 的提醒我看过了" → action="ack", items=[{"symbol":"BTC","asset_type":"crypto"}] - "列出我的订阅" → action="list" |
| PURPOSE: Direct Twitter/X access — raw operations on a specific account, tweet, search, list, or community. COVERS (by action): tweet search & user search; a named user's profile / tweets / timeline / mentions; followers, followings & follow checks; a tweet's replies / thread / quotes / retweeters; trends; community & list timelines; spaces; long-form articles. BOUNDARIES: - Use twitter for RAW ops on a NAMED account or a specific tweet. For "what are KOLs calling / 喊单" use signal(kol_call); for general crypto/news tweet CONTENT use news(sources=["twitter"]). USAGE — pick an action and supply its required params: - search: query (+ optional query_type, cursor, time_range) - user_info / user_about: user_name - batch_user_info: user_ids (comma-separated) - search_users: query - user_tweets: user_name or user_id (+ optional include_replies, cursor) - user_timeline: user_id (+ optional cursor) - user_mentions: user_name (+ optional cursor) - followers / followings: user_name (+ optional cursor) - verified_followers: user_id (+ optional cursor) - check_follow: user_name + target_user_name - tweets_by_ids: tweet_ids (comma-separated) - tweet_replies / tweet_replies_v2 / tweet_thread / tweet_quotes / tweet_retweeters: tweet_id (+ optional cursor) - trends: woeid (default 1 = worldwide) - community_tweets: community_id (+ optional cursor) - article: tweet_id - space_detail: space_id - list_tweets / list_timeline: list_id (+ optional cursor) RETURNS: the raw twitterapi.io payload for the chosen action (tweets / users / relationships / trends), paginated via next_cursor. EXAMPLES: - "搜 BTC 相关推文" → action="search", query="BTC" - "Elon Musk 账号信息" → action="user_info", user_name="elonmusk" - "V神最近发了什么" → action="user_tweets", user_name="VitalikButerin" - "这条推文的回复" → action="tweet_replies", tweet_id="..." - "全球趋势" → action="trends" |