@pipeworx/china-stocks
Connect: https://pipeworx.io/mcp — every tool in the catalog, including @pipeworx/china-stocks’s. Install: one-click buttons
Connect to just the @pipeworx/china-stocks pack
https://gateway.pipeworx.io/china-stocks/mcp — only @pipeworx/china-stocks’s own tools, nothing else in the catalog.
No MCP client? Skip the connection: POST https://gateway.pipeworx.io/v1/tools/search_packs {"query":"..."} to find a tool below, GET /v1/tools/<name> for its schema, POST the same URL with arguments for the data — see For AI agents.
Tools: 16
Live data for the Chinese A-share market (Shanghai / Shenzhen / STAR / ChiNext) — real-time quotes, intraday minute bars, daily OHLCV history, technical indicators, the limit-up/limit-down boards, market-wide margin financing balance, market-wide turnover ranking, and company earnings guidance/analyst consensus.
Tools
ashares_market_snapshot()— headline index levels (Shanghai Composite, Shenzhen Component, ChiNext, STAR 50, CSI 300) plus limit-up/limit-down counts as a sentiment gauge.ashares_limit_up({ date?, limit? })— the daily limit-up board (涨停板): how many stocks hit their daily price limit and the ranked pool with consecutive-board count, seal fund, industry, turnover.ashares_limit_down({ date?, limit? })— the daily limit-down board (跌停板), the counterpart toashares_limit_up: how many stocks hit their daily down price limit and the ranked pool. Source: EastmoneygetTopicDTPool(same host/shape as the limit-up pool).ashares_margin_financing({ symbol?, date? })— China A-share margin financing and securities-lending balance (融资融券余额/两融余额): market-wide aggregate by exchange (SSE + SZSE) with day-over-day change whensymbolis omitted, or one SZSE-listed stock’s own balance whensymbolis a 6-digit SZSE code (0/3/159-prefixed). SSE per-stock detail has no verified keyless route, so an SSE code (6xxxxx) returns a clearnot_availablemessage rather than guessing. Margin data publishes T+1 and SSE usually publishes before SZSE, so the aggregate reports both exchanges for the latest trading day BOTH have published (on or beforedate), says so indate_note, and never sums two different days into one market total.ashares_quote({ symbols })— real-time quote(s) by 6-digit code, comma-separated.ashares_daily_history({ codes, start, end?, adjust? })— daily OHLCV history (open/high/low/close/volume, day-over-day change %) for up to 20 codes over a date range.adjust:qfq(forward-adjusted, default),hfq(backward-adjusted), ornone(raw). Turnover amount (成交额) is not exposed by the daily-bar source, soamount_cnyreports"not_available"per row rather than being estimated — useashares_quoteorashares_turnover_rankingfor same-day turnover amount.ashares_intraday_bars({ symbols, date, up_to?, interval? })— intraday minute bars (分时/分钟K线) for a past trading day, up to 5 comma-separated codes, withcumulative_volume_shares/cumulative_turnover_cnysummed from the day’s open throughup_to(e.g."11:05"; omit for the whole day).intervalis the bar size in minutes (1/5/15/30/60, default5). Bounded lookback: the upstream caps total bars at ~1950 regardless of interval, so retention shrinks with interval and slides forward daily — roughly 8 trading days at 1-minute, 40 at 5-minute (default), 110 at 15-minute, a year at 30-minute, two years at 60-minute. A result’searliest_bar_date_available/latest_bar_date_availablestate the live bound for that call; adateolder thanearliest_bar_date_availableneeds a coarserintervalorashares_daily_history(daily only, no intraday).ashares_turnover_ranking({ limit?, sort?, order?, board? })— market-wide ranking by turnover amount, change %, or volume, server-side sorted, with turnover in CNY.ashares_earnings_forecast({ symbol, limit? })— company-issued earnings guidance (业绩预告): predicted profit range, YoY change %, forecast type, stated reason.ashares_analyst_consensus({ symbol })— analyst consensus estimates (盈利预测) per forecast year: EPS, PE, net profit, revenue.ashares_stock_connect({ date? })— Stock Connect (沪深港通) daily channel turnover: Northbound (mainland A-shares bought via Hong Kong — 沪股通/深股通/combined) and Southbound (HK-listed stocks bought by mainland investors — 港股通沪/港股通深/combined), in CNY. Mainland regulators (CSRC) stopped publishing DAILY net fund-flow figures for Northbound in August 2024 — every Northbound channel’snet_flowsays so explicitly rather than returning nulls as if they were real data; gross turnover remains published for every channel. Also attempts a per-stock “top traded stocks” ranking for Northbound on every call (top_traded_stocks.northbound) and reports plainly whether real data came back — as of this build, Eastmoney’s upstream report for that ranking returns a server error on every probe, so it currently reports “not available” rather than faking rows.
Auth
Keyless. All upstreams are public, unauthenticated endpoints.
Data sources
https://push2ex.eastmoney.com/getTopicZTPool— limit-up pool (涨停板). Date trap (both pools): the response’sqdateis always the LATEST trading day, whateverdateyou asked for, whiletcand the pool are for the requested day — so the date to report is the one requested, neverqdate. Data is kept for about the last 20 trading days; an older day or a non-trading day comes back astc: 0with an empty pool, which the tools report asfound: false, not as zero. Zero limit-DOWNs is a real outcome on a strong day, so an empty DT board is believed only when the ZT board for that day is non-empty.https://push2ex.eastmoney.com/getTopicDTPool— limit-down pool (跌停板), same host/params as the limit-up pool above. Verified live 2026-10-08; a 2026-09-07 project note recorded this endpoint as gated (rc:206 data:null) — that no longer holds, so don’t skip it on the strength of the old note alone.https://query.sse.com.cn/marketdata/tradedata/queryMargin.do— SSE’s own daily margin-trading summary (融资融券交易汇总), market-wide, newest-first with no date param. Fields are already native CNY (元) — no unit conversion. This is a different path from the genericcommonQuery.do, which fails open (HTTP 200,data: null) on an unrecognizedsqlIdand will look like “no data” rather than “wrong endpoint” if you guess wrong.https://www.szse.cn/api/report/ShowReport/data?CATALOGID=1837_xxpl— SZSE’s margin-trading report via the same ShowReport mechanism asashares_sector_flows’ sibling pack (china-exchange-data).TABKEY=tab1is the market-wide total,TABKEY=tab2+txtZqdm=<6-digit code>is per-stock detail.txtDateisYYYY-MM-DDand required — omitting it dumps the full history since 2010 instead of defaulting to latest. A date with nothing published yet (today, weekend, holiday) comes back as a real HTTP 200 with an emptydataarray and blankmetadata.subname, not an error — callers must walk back trading days themselves (this pack does). Unit trap:tab1’sjrrjye(融券余额) is in 亿元 (×1e8);tab2’sjrrjye— same field name — is in 万元 (×1e4). Confirmed live 2026-10-08; reusing the tab1 factor on tab2 data is a 10,000× error.https://datacenter-web.eastmoney.com/api/data/v1/get?reportName=RPTA_RZRQ_LSDB— Eastmoney’s margin history split by exchange (H_*= SSE,S_*= SZSE, native CNY). The fallback for whichever exchange endpoint does not answer from Worker egress — both are intermittent from Cloudflare (SSE returned HTTP 500 to the gateway on 2026-10-09/10 while a laptop got 200; SZSE timed out on some edge probes). Its figures matched SSE and SZSE’s own to the yuan for 2026-09-30, 10-08 and 10-09. A row exists before SZSE has published that day, with theS_*columns null — null means not yet, never zero. Acceptsfilter=(DIM_DATE<='YYYY-MM-DD').https://hq.sinajs.cn/list=...— real-time quotes and index levels (GBK-encoded; decode withTextDecoder('gbk')).https://vip.stock.finance.sina.com.cn/quotes_service/api/json_v2.php/Market_Center.getHQNodeData— market-wide ranked node listing (turnover/volume/change % ranking); no industry field.https://datacenter-web.eastmoney.com/api/data/v1/get— earnings guidance / analyst consensus datacenter reports. Note: this is a different Eastmoney host frompush2.eastmoney.com, which is empty from any IP — don’t lump them together.https://web.ifzq.gtimg.cn/appstock/app/fqkline/get— Tencent/gtimg daily K-line bars.param=<sym>,day,<start>,<end>,<count>,<adjust>where<sym>issh/sz/bj+ 6-digit code and<adjust>isqfq/hfq/empty (unadjusted, still needs the trailing comma or the request 400s). Response key isqfqday/hfqday/daymatching the adjust arg; an invalid code returns HTTP 200 with an emptydayarray rather than an error, so treat empty rows asfound: false, not a fetch failure. Rows are[date, open, close, high, low, volume]— note the volume unit is 手 (lots of 100 shares), not raw shares, and there is no turnover-amount field in any adjust variant. A single request only accepts oneparam=(repeating the query param keeps only the last), so multi-code history is N parallel requests, not a batch call.
Turnover amount is deliberately absent from ashares_daily_history: checked both the gtimg row form (all three adjust variants) and Sina’s hisdata/klc_kl.js second-leg endpoint (binary-encoded, not a usable JSON leg) — neither exposes daily amount, so it is reported as not_available rather than derived from price × volume.
https://quotes.sina.cn/cn/api/jsonp_v2.php/var%20_=/CN_MarketDataService.getKLineData— Sina’s minute-bar kline (分钟K线), keyless.?symbol=<sh|sz|bj><code>&scale=<1|5|15|30|60>&ma=no&datalen=1950;datalencaps at ~1950 total bars regardless ofscale(verified 2026-10-06: 1950 works, 2000 returns the literal stringnull), so retention shrinks asscaleshrinks — the live window is reported per-call asearliest_bar_date_available/latest_bar_date_available. Response is JSONP-shaped text (var _=([...]);) rather than plain JSON, so it needs a regex extract, notres.json(). Each row’svolumeis already in shares (not the 100-share 手 lotsashares_daily_history’s gtimg source uses) andamountis CNY turnover — summing a full day’s 5-minute bars for 515050 and 600519 on 2026-09-01 matchedashares_daily_history’s daily volume for the same code+day within ~0.1% (the residual is end-of-day call-auction handling).ashares_intraday_barssums these bars client-side intocumulative_volume_shares/cumulative_turnover_cny.
Tools
- ashares_limit_up — China A-share stocks that hit their daily limit-up price today, from Eastmoney.
- ashares_limit_down — China A-share stocks that hit their daily limit-down price today, from Eastmoney.
- ashares_margin_financing — The China A-share market’s aggregate margin financing and securities lending balance, from SSE + SZSE.
- ashares_market_snapshot — A snapshot of current China A-share market indices and breadth, from Eastmoney.
- ashares_quote — The current quote for a China A-share stock, from Eastmoney.
- ashares_turnover_ranking — China A-share stocks ranked by trading turnover today, or by change % on a past trading day, from Sina/Eastmoney.
- ashares_capital_flow — A China A-share stock’s daily main-capital (主力) net inflow history, from Eastmoney.
- ashares_billboard — The China A-share market’s daily dragon-tiger list (龙虎榜) with seat net-buy amounts, from Eastmoney.
- ashares_etf_shares — A Chinese ETF’s disclosed share-count and net-asset history (period-end, not daily), from Eastmoney.
- ashares_earnings_forecast — Analyst earnings forecasts for a China A-share company, from Eastmoney.
- ashares_analyst_consensus — The analyst consensus rating and price target for a China A-share stock, from Eastmoney.
- ashares_daily_history — A China A-share stock’s daily price history, from Eastmoney.
- ashares_intraday_bars — A China A-share stock’s intraday minute bars and cumulative volume/turnover up to a given time on a past trading day, from Sina.
- ashares_technical_indicators — Moving averages, Bollinger Bands, MACD and KDJ for a China A-share stock or ETF, computed from daily OHLCV history.
- ashares_sector_capital_flow — China A-share industry sectors ranked by main-capital net inflow for a trading day, from Eastmoney.
- ashares_stock_connect — China Stock Connect daily Northbound/Southbound turnover, with an explicit note where daily net-flow is no longer published.
Tools
ashares_analyst_consensus— The analyst consensus rating and price target for a China A-share stock, from Eastmoney.ashares_billboard— The China A-share market's daily dragon-tiger list (龙虎榜) with seat net-buy amounts, from Eastmoney.ashares_capital_flow— A China A-share stock's daily main-capital (主力) net inflow history, from Eastmoney.ashares_daily_history— A China A-share stock's daily price history, from Eastmoney.ashares_earnings_forecast— Analyst earnings forecasts for a China A-share company, from Eastmoney.ashares_etf_shares— A Chinese ETF's disclosed share-count and net-asset history (period-end, not daily), from Eastmoney.ashares_intraday_bars— A China A-share stock's intraday minute bars and cumulative volume/turnover up to a given time on a past trading day, from Sina.ashares_limit_down— China A-share stocks that hit their daily limit-down price today, from Eastmoney.ashares_limit_up— China A-share stocks that hit their daily limit-up price today, from Eastmoney.ashares_margin_financing— The China A-share market's aggregate margin financing and securities lending balance, from SSE + SZSE.ashares_market_snapshot— A snapshot of current China A-share market indices and breadth, from Eastmoney.ashares_quote— The current quote for a China A-share stock, from Eastmoney.ashares_sector_capital_flow— China A-share industry sectors ranked by main-capital net inflow for a trading day, from Eastmoney.ashares_stock_connect— China Stock Connect daily Northbound/Southbound turnover, with an explicit note where daily net-flow is no longer published.ashares_technical_indicators— Moving averages, Bollinger Bands, MACD and KDJ for a China A-share stock or ETF, computed from daily OHLCV history.ashares_turnover_ranking— China A-share stocks ranked by trading turnover today, or by change % on a past trading day, from Sina/Eastmoney.