Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

MarketTwits news + Russian market data (x402)

NPM · X402-MARKETTWITS-MCP

Pay-per-call market news, CBR/MOEX/Rosstat data and Telegram tools; auto-pays USDC on Base via x402

69 Trust /100

Last scanned (49 minutes ago)

Scores higher than 39% of npm servers

Category Finance and Payments

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security99
  • No malware found by supply-chain analysis.Pass
  • No known CVEs affecting this package version or its production dependencies.Pass
  • No install/post-install scripts declared.Pass
  • 31 of 112 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency45
Schema Quality & AI Usability66
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 5112 tokens (~189/item across 27 items; 27 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management3
  • Stability observed for 1 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • We read all 27 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
  • An AI judge read all 28 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 22 Oct 26 69

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 23 Oct 2026 · Analysed npm/x402-markettwits-mcp@0.1.0

Provenance No attestation

The registry publishes no build provenance for this version, so there is nothing to verify.

Result No attestation
Ecosystem npm

Background: How many MCP packages publish verified provenance →

Dependencies 112 packages
Packages resolved 112
Stale 31
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 27 exposed · ~5,013 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
check_new_high_alert ~175

Is there new HIGH-importance news on a keyword in the last N hours?. Checks only importance=high news matching q in the last N hours (1-168, default 6): has_new, count and the latest item. Cheap poll for market-moving alerts on a topic/ticker. GET /news/alerts/new — price $0.005 USDC per call, paid automatically via x402 on Base (only successful responses are charged; 400/404/502 are free).

NameTypeReqDescription
hoursinteger–Look-back window in hours (default 6, clamped to 1-168) Default: 6.
qstringyesKeywords (case-insensitive). Several words = all must match. Hashtags match with or without '#', e.g. 'oil', '#Fed rates'.

No output schema declared.

No examples provided.

check_news_alert ~164

Keyword alert check: how many matching items in the last N hours. Count of news matching q (same matching as /news/search) published in the last N hours (1-168, default 24), plus the 5 most recent GET /news/alerts/check — price $0.004 USDC per call, paid automatically via x402 on Base (only successful responses are charged; 400/404/502 are free).

NameTypeReqDescription
hoursinteger–Look-back window in hours (default 24, clamped to 1-168) Default: 24.
qstringyesKeywords (case-insensitive). Several words = all must match. Hashtags match with or without '#', e.g. 'oil', '#Fed rates'.

No output schema declared.

No examples provided.

compare_products ~200

Compare 2-5 Wildberries products: prices, cheapest, price spread, stock. Fetches 2-5 product URLs (urls=comma-separated, or repeated url=) with the same live chain as /product/info and returns per-item title/price/original_price/in_stock/rating/reviews_count, the cheapest and most expensive item, price_diff (abs RUB and percent of the cheapest), in_stock_count and all_in_stock. Items that fail carry error/detail; returns 502 (payment not settled) only if fewer than 2 items returned a price. GET /product/compare — price $0.006 USDC per call, paid automatically via x402 on Base (only successful responses are charged; 400/404/502 are free).

NameTypeReqDescription
urlsstringyes2-5 comma-separated product URLs (Wildberries; Ozon is accepted but currently blocked by its anti-bot). Alternatively repeat url= instead.

No output schema declared.

No examples provided.

get_cbr_fx_rates ~198

Official Bank of Russia FX rates (RUB) with day-over-day change. CBR official exchange rates from cbr.ru XML_daily.asp for a date (default: the latest set) and optional currency codes: per currency nominal, value (RUB per nominal), per_unit (RUB per 1 unit), previous set's per_unit, change and change_pct. Cached 30 min (past dates 7 days). GET /ru/fx — price $0.0015 USDC per call, paid automatically via x402 on Base (only successful responses are charged; 400/404/502 are free).

NameTypeReqDescription
codesstring–Comma-separated ISO currency codes (default: all ~55 CBR currencies), e.g. USD,EUR,CNY
datestring–Rates date YYYY-MM-DD (default: latest set by CBR; 1992-07-01 .. tomorrow)

No output schema declared.

No examples provided.

get_cbr_key_rate ~171

Bank of Russia key rate: current level, since when, and recent changes. Current CBR key rate (% p.a.) from the cbr.ru DailyInfo web service (KeyRateXML; the hd_base/KeyRate page as fallback): rate, as_of, effective_since, previous_rate, last_change_bp and every change in the last `months` (default 24) newest first, plus min/max in the window. Cached 3 h. GET /ru/key-rate — price $0.0015 USDC per call, paid automatically via x402 on Base (only successful responses are charged; 400/404/502 are free).

NameTypeReqDescription
monthsinteger–History window in months for `changes` (default 24, max 120) Default: 24.

No output schema declared.

No examples provided.

get_country_news ~228

News about one country (flag emoji + country keywords) with counts and top topics. Items of the last N hours (1-168, default 24; importance all|high|medium|low) that carry the country's flag emoji or mention it (e.g. RU: Russia/Kremlin/Bank of Russia/MOEX; US: USA/Fed/White House): count, high_count, share_of_window, top_topics and the 10 latest headlines. GET /news/country — price $0.004 USDC per call, paid automatically via x402 on Base (only successful responses are charged; 400/404/502 are free).

NameTypeReqDescription
codestringyesISO 3166-1 alpha-2 country code (e.g. US, RU, CN, UA, IR, GB; UK = GB; EU accepted)
hoursinteger–Look-back window in hours (default 24, clamped to 1-168) Default: 24.
importancestring–Importance filter (default all) Default: all.

No output schema declared.

No examples provided.

get_data_surprises ~217

Macro data and earnings vs. expectations: actual, expected, previous, surprise. Parses releases like 'US Pending Home Sales (Sep) = -7.3% m/m (exp. -0.5% / prev. +0.3%)' and earnings lines like '3Q REV. $14.58B, EST. $12.87B' from news of the last N hours (1-168, default 24; optional q filter): indicator, actual, expected, previous, unit, surprise (actual - expected), surprise_pct and direction above/below/inline. GET /news/data-surprises — price $0.006 USDC per call, paid automatically via x402 on Base (only successful responses are charged; 400/404/502 are free).

NameTypeReqDescription
hoursinteger–Look-back window in hours (default 24, clamped to 1-168) Default: 24.
qstring–Optional keyword filter (same matching as /news/search)

No output schema declared.

No examples provided.

get_important_news ~97

High-importance news only (newest first). Only importance=high MarketTwits news (newest first), limit 1-50 GET /news/important — price $0.003 USDC per call, paid automatically via x402 on Base (only successful responses are charged; 400/404/502 are free).

NameTypeReqDescription
limitinteger–Number of items (newest first) Default: 20.

No output schema declared.

No examples provided.

get_latest_news ~94

Latest translated MarketTwits news (newest first). Latest translated MarketTwits news (newest first), limit 1-50 GET /news/latest — price $0.003 USDC per call, paid automatically via x402 on Base (only successful responses are charged; 400/404/502 are free).

NameTypeReqDescription
limitinteger–Number of items (newest first) Default: 20.

No output schema declared.

No examples provided.

get_moex_index ~191

MOEX index values (IMOEX, RTSI, sector indices) or the index catalogue. Index level, change/change_pct vs previous close, open/high/low, month/year change, annual high/low and traded value for up to 5 codes (default IMOEX), or code=list for the catalogue of MOEX stock indices (SNDX board + RTS*). Delayed ~15 minutes. Unknown codes -> 404 (not settled). GET /moex/index — price $0.003 USDC per call, paid automatically via x402 on Base (only successful responses are charged; 400/404/502 are free).

NameTypeReqDescription
codestring–Index code(s), up to 5 comma-separated (default IMOEX; e.g. RTSI, MOEXBMI, MOEXOG), or `list` for the catalogue of stock indices Default: IMOEX.

No output schema declared.

No examples provided.

get_moex_movers ~210

Top gainers and losers on the Moscow Exchange main board (TQBR), with market breadth. Ranks TQBR shares by change vs previous close (turnover >= min_value RUB, default 5 mln): top `limit` gainers and losers (default 10, max 50), advancers/decliners/unchanged. Before the session's first trades (mode previous_session) it ranks the last completed session from ISS history. Delayed ~15 minutes. GET /moex/movers — price $0.004 USDC per call, paid automatically via x402 on Base (only successful responses are charged; 400/404/502 are free).

NameTypeReqDescription
limitinteger–Gainers and losers to return (each side, default 10, max 50) Default: 10.
min_value––Minimum turnover in RUB to count a stock (default 5000000; filters illiquid names) Default: 5000000.

No output schema declared.

No examples provided.

get_moex_quote ~191

Moscow Exchange stock quote (delayed ~15 min): price, change, volume, bid/offer. One MOEX shares-market ticker from MOEX ISS (main board TQBR when listed): price (last trade, or previous close before the session's first trade), change/change_pct vs previous close, open/high/low, bid/offer, volume, value_rub, market cap, trading status. Data is delayed ~15 minutes (delayed: true). Unknown ticker -> 404 (not settled). GET /moex/quote — price $0.003 USDC per call, paid automatically via x402 on Base (only successful responses are charged; 400/404/502 are free).

NameTypeReqDescription
tickerstringyesMOEX ticker (SECID) on the shares market, e.g. SBER, GAZP, LKOH, YDEX, T

No output schema declared.

No examples provided.

get_news_digest ~165

Sectioned briefing: central banks, macro, energy, equities, crypto, geopolitics. Groups news of the last N hours (1-48, default 24) into central_banks, macro, energy, equities, crypto and geopolitics by keyword rules (an item may appear in several), each with count, high_count and up to 5 headlines (high first, then newest), plus top_topics of high items. GET /news/digest — price $0.01 USDC per call, paid automatically via x402 on Base (only successful responses are charged; 400/404/502 are free).

NameTypeReqDescription
hoursinteger–Look-back window in hours (default 24, clamped to 1-48) Default: 24.

No output schema declared.

No examples provided.

get_news_movers ~210

Top gainers/losers reported in the news ('#TICKER = ±X%'). Parses '#TICKER [Name] = ±X%' price-move mentions (stocks, indices, crypto; RU/US/... from the flag) in news of the last N hours (1-72, default 6), newest mention per ticker, |move| >= min_pct (default 0): top 10 gainers and top 10 losers with the source item. GET /news/movers — price $0.005 USDC per call, paid automatically via x402 on Base (only successful responses are charged; 400/404/502 are free).

NameTypeReqDescription
hoursinteger–Look-back window in hours (default 6, clamped to 1-72) Default: 6.
min_pct––Minimum absolute move in percent (default 0, max 100), e.g. 3 or 2.5 Default: 0.

No output schema declared.

No examples provided.

get_news_sentiment ~232

Heuristic bullish/bearish tone of news on a keyword (lexicon, not a model). Scores each item matching q in the last N hours (1-168, default 24) with a keyword/emoji lexicon (rise/beat/upgrade vs. fall/miss/sanctions, ⬆️/⬇️) plus explicit '= ±X%' moves, and returns bullish/bearish/neutral counts, score = (bullish - bearish)/count in [-1, 1], a label and examples. method is always 'heuristic'. GET /news/sentiment — price $0.005 USDC per call, paid automatically via x402 on Base (only successful responses are charged; 400/404/502 are free).

NameTypeReqDescription
hoursinteger–Look-back window in hours (default 24, clamped to 1-168) Default: 24.
qstringyesKeywords (case-insensitive). Several words = all must match. Hashtags match with or without '#', e.g. 'oil', '#Fed rates'.

No output schema declared.

No examples provided.

get_news_since ~172

Incremental feed: items newer than the id you already have (cursor polling). All stored items with id > id (oldest first, up to limit 1-100, default 50) plus next_id/has_more for the next call. The cheapest way for a bot to poll without duplicates: keep next_id and pass it back. GET /news/since — price $0.002 USDC per call, paid automatically via x402 on Base (only successful responses are charged; 400/404/502 are free).

NameTypeReqDescription
id–yesLast item id you already have (0 = from the oldest stored item). Items with a larger id are returned, oldest first.
limitinteger–Max items per page (default 50, max 100) Default: 50.

No output schema declared.

No examples provided.

get_product_info ~216

Wildberries / Ozon product card: title, price (RUB), rating, reviews, stock. Live product data for a Wildberries (wildberries.ru, wb.ru) or Ozon (ozon.ru) product URL: title, current price in RUB (original_amount = list price before discount when known), rating, reviews_count and availability. Cached 10 min per product. If the marketplace blocks or fails, returns 502 upstream_unavailable and the payment is NOT settled. Can take up to ~40s when the live page has to be rendered. GET /product/info — price $0.004 USDC per call, paid automatically via x402 on Base (only successful responses are charged; 400/404/502 are free).

NameTypeReqDescription
urlstringyesProduct page URL: https://www.wildberries.ru/catalog/<id>/detail.aspx (also wb.ru, *.wildberries.ru) or https://www.ozon.ru/product/<slug>-<id>/ (also *.ozon.ru)

No output schema declared.

No examples provided.

get_product_price_history ~251

Wildberries price history: weekly CDN points + observed + live price, min/max/avg, 30-day change. Price history for a Wildberries product: weekly points from WB's public price-history CDN (weekly_cdn), prices this service observed on earlier lookups (observed; in-memory, reset on restart), and the current live price (live). Returns points (oldest first), current, stats min/max/avg, change_30d (vs. the latest point at least 30 days old) and history_limited:true with a note when only the current price exists. Ozon has no public history (only live, currently blocked). 502 (not settled) only when no price at all is available. GET /product/history — price $0.004 USDC per call, paid automatically via x402 on Base (only successful responses are charged; 400/404/502 are free).

NameTypeReqDescription
urlstringyesProduct page URL: https://www.wildberries.ru/catalog/<id>/detail.aspx (also wb.ru, *.wildberries.ru) or https://www.ozon.ru/product/<slug>-<id>/ (also *.ozon.ru)

No output schema declared.

No examples provided.

get_ru_fuel_prices ~195

Russian retail fuel prices (AI-92/95/98, diesel) — Rosstat weekly averages. Average retail pump prices across Russia from Rosstat's weekly release (rosstat.gov.ru nedel_sred_cen.xlsx): price (RUB/l), as_of, week-over-week change, 4-week and year-to-date change and `weeks` of history per fuel. Rosstat publishes weekly (usually Wednesday, prices as of Monday); cached 6 h, a stale copy (stale: true) is served for up to 14 days if Rosstat is unreachable. GET /ru/fuel — price $0.003 USDC per call, paid automatically via x402 on Base (only successful responses are charged; 400/404/502 are free).

NameTypeReqDescription
weeksinteger–Weekly history points to include per fuel (0-52, default 4) Default: 4.

No output schema declared.

No examples provided.

get_telegram_channel_latest ~199

Latest posts of a public Telegram channel (text, date, views, link). Reads the public web preview t.me/s/<channel> (no login): newest `limit` posts (default 20, max 50) with id, date, text (HTML stripped, emoji kept), views, link, media types and channel title/subscribers. Channels without a public preview or that do not exist -> 404 (not settled). Cached 2 min. GET /tg/channel/latest — price $0.004 USDC per call, paid automatically via x402 on Base (only successful responses are charged; 400/404/502 are free).

NameTypeReqDescription
channelstringyesPublic Telegram channel username (5-32 chars; '@name' or a t.me link also accepted), e.g. markettwits
limitinteger–Messages to return (default 20, max 50) Default: 20.

No output schema declared.

No examples provided.

get_top_topics ~130

Top 5 keywords/hashtags in high-importance news of the last N hours. Top 5 topics (hashtags, names, keywords; counted once per item) across high-importance news of the last N hours (1-72, default 6) GET /news/top-topics — price $0.005 USDC per call, paid automatically via x402 on Base (only successful responses are charged; 400/404/502 are free).

NameTypeReqDescription
hoursinteger–Look-back window in hours (default 6, clamped to 1-72) Default: 6.

No output schema declared.

No examples provided.

get_trending_topics ~154

Trending topics in high-importance news with change vs. the previous window. Top 5 topics (hashtags, names, keywords; counted once per item) in high-importance news of the last N hours (1-72, default 6), each with prev_count in the previous equal-length window, change = count - prev_count, and latest_id/latest_source_url GET /news/topics/trending — price $0.004 USDC per call, paid automatically via x402 on Base (only successful responses are charged; 400/404/502 are free).

NameTypeReqDescription
hoursinteger–Look-back window in hours (default 6, clamped to 1-72) Default: 6.

No output schema declared.

No examples provided.

monitor_product_price ~266

Price-target check for one product: is the current price at or below target_price?. Fetches one Wildberries/Ozon product (same live chain as /product/info) and compares it with target_price (RUB): below_target (current <= target and not out of stock), current_price, diff_abs/diff_percent, in_stock, the full product object and checked_at. Use it as a paid poll for price alerts. If the product is out of stock with no price it returns 200 with below_target false, current_price null, in_stock false and a note; if no product data can be fetched at all it returns 502 and the payment is not settled. GET /product/monitor — price $0.005 USDC per call, paid automatically via x402 on Base (only successful responses are charged; 400/404/502 are free).

NameTypeReqDescription
target_price–yesTarget price in RUB, a positive number (e.g. 1500 or 1499.90)
urlstringyesProduct page URL: https://www.wildberries.ru/catalog/<id>/detail.aspx (also wb.ru, *.wildberries.ru) or https://www.ozon.ru/product/<slug>-<id>/ (also *.ozon.ru)

No output schema declared.

No examples provided.

search_news ~135

Keyword search in translated news (newest first). Case-insensitive keyword search in translated MarketTwits news (all words must match), limit 1-50 GET /news/search — price $0.003 USDC per call, paid automatically via x402 on Base (only successful responses are charged; 400/404/502 are free).

NameTypeReqDescription
limitinteger–Number of items (newest first) Default: 20.
qstringyesKeywords (case-insensitive). Several words = all must match. Hashtags match with or without '#', e.g. 'oil', '#Fed rates'.

No output schema declared.

No examples provided.

search_telegram_channels ~212

Search up to 5 public Telegram channels for a keyword. Runs Telegram's own channel search (t.me/s/<channel>?q=) on 1-5 public channels, merges the matches newest first (up to `limit`, default 20) with per-channel counts/errors. 404 when no channel exists, 502 when all fail; partial failures are reported in per_channel. GET /tg/search — price $0.006 USDC per call, paid automatically via x402 on Base (only successful responses are charged; 400/404/502 are free).

NameTypeReqDescription
channelsstringyes1-5 comma-separated public channel usernames, e.g. markettwits,rbc_news
limitinteger–Messages to return (default 20, max 50) Default: 20.
qstringyesKeywords (case-insensitive). Several words = all must match. Hashtags match with or without '#', e.g. 'oil', '#Fed rates'.

No output schema declared.

No examples provided.

summarize_news ~163

Short extractive English summary of the latest news on a keyword. 3-5 sentence extractive summary of the latest news matching q (limit 1-50, default 10): lead sentence + de-duplicated headlines, high-importance first GET /news/summary — price $0.008 USDC per call, paid automatically via x402 on Base (only successful responses are charged; 400/404/502 are free).

NameTypeReqDescription
limitinteger–Number of latest matching items to summarize (default 10, max 50) Default: 10.
qstringyesKeywords (case-insensitive). Several words = all must match. Hashtags match with or without '#', e.g. 'oil', '#Fed rates'.

No output schema declared.

No examples provided.

summarize_recent_news ~177

Extractive English summary of news on a keyword from the last N hours. 3-5 sentence extractive summary of news matching q published in the last N hours (1-168, default 12; up to 50 items), with high_count. Use for 'what happened with X today'. GET /news/summary/recent — price $0.007 USDC per call, paid automatically via x402 on Base (only successful responses are charged; 400/404/502 are free).

NameTypeReqDescription
hoursinteger–Look-back window in hours (default 12, clamped to 1-168) Default: 12.
qstringyesKeywords (case-insensitive). Several words = all must match. Hashtags match with or without '#', e.g. 'oil', '#Fed rates'.

No output schema declared.

No examples provided.

Install

How do I install the MarketTwits news + Russian market data (x402) MCP server?

MarketTwits news + Russian market data (x402) runs locally as an npm package, launched with npx -y x402-markettwits-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

npm · x402-markettwits-mcp

# add to Claude Code
claude mcp add croomee-x402-markettwits-mcp -- npx -y x402-markettwits-mcp
Common questions

What is the MarketTwits news + Russian market data (x402) MCP server?

MarketTwits news + Russian market data (x402) is an MCP server listed in the public MCP registry as io.github.Croomee/x402-markettwits-mcp. Pay-per-call market news, CBR/MOEX/Rosstat data and Telegram tools; auto-pays USDC on Base via x402. This page covers its npm package (x402-markettwits-mcp).

Is the MarketTwits news + Russian market data (x402) MCP server safe to use?

MarketTwits news + Russian market data (x402) scores 69 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 23 October 2026. It declares no install or post-install scripts. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the MarketTwits news + Russian market data (x402) MCP server expose?

MarketTwits news + Russian market data (x402) exposes 27 tools: get_moex_index, get_moex_movers, get_moex_quote, check_news_alert, check_new_high_alert, and 22 more. Their descriptions and schemas cost roughly 5,013 tokens of context every time the server is loaded.

Is the MarketTwits news + Russian market data (x402) MCP server still maintained?

MarketTwits news + Russian market data (x402) is still listed as active in the MCP registry. We last reached this channel on 23 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the MarketTwits news + Russian market data (x402) MCP server under?

MarketTwits news + Russian market data (x402) declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.