China Stocks

io.github.pipeworx-io由 GitHub 账号 pipeworx-io 发布v0.2.1更新于 Oct 31, 2026

China A-shares MCP. Keyless.

已验证Streamable HTTP可网页运行金融数据与分析

概览

AI 生成的概览

让助手获取中国 A 股实时行情、分时与日线数据、涨跌停板、融资融券余额及盈利预测等实时数据。

可以做什么
  • 查询沪深、科创板、创业板个股的实时行情与指数点位
  • 获取可前复权或后复权的日线 OHLCV 历史,以及历史交易日分时分钟 K 线
  • 读取每日涨停板、跌停板以及全市场成交额排行
  • 查看按交易所汇总或深市个股的融资融券余额,以及沪深港通各通道成交额
  • 查询公司业绩预告与分析师一致预期
  • 通过网关共享的 ask_pipeworx 与工具发现能力回答本包之外的问题
适用场景
适合需要中国 A 股当前或历史行情、价格历史、涨跌停板、两融余额或盈利预测的场景,且不想为每个上游数据源单独管理密钥。
运行要求
可作为远程 streamable HTTP 端点使用,也可通过 npx 运行 npm 包在本地启动,后者是连接同一网关的 stdio 桥接,需要网络访问且无离线模式。匿名使用无需账号,每天上限 50 次调用;可选的 PIPEWORX_API_KEY 可将上限提高到每天 200 次。deep_research、订阅等网关工具需要 Pipeworx 账号。
安装前请注意
匿名调用每天限 50 次;可选的 PIPEWORX_API_KEY 以 Bearer 令牌发送,并按托管连接的方式计量和计费。订阅与深度研究需要账号,thorough 深度需付费方案。数据来自公开第三方接口,可能过期或不可用,工具会以 stale 标记和 not_available 字段如实说明而非估算。该端点还会列出共享网关工具,可将问题路由到其他数据源。

安装

在 SourceWeft 中

  1. 打开 控制台中的 China Stocks,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Web executable,通过 Streamable HTTP。 远程服务在工作区中配置后即可从网页运行时运行。

交给智能体安装

把这段提示词粘贴到 Claude Code、Codex、Cursor 等智能体,或 SourceWeft 对话中。智能体会读取该服务器的安装指南,先向你展示发布者、端点和登录方式,经你同意后再把它添加到你的客户端。密钥不会写进任何命令。

阅读 https://sourceweft.com/mcp/io.github.pipeworx-io%2Fchina-stocks/install.md,并按其中说明把这个 MCP 服务器接入我的客户端。修改任何配置之前,先告诉我它的发布者、端点和登录方式,等我确认。不要把 API 密钥写进命令或我会提交的文件;问我密钥应从哪里获取。

查看智能体所依据的安装指南

其他 MCP 客户端

把它添加到你客户端的 mcpServers 配置中。

{
  "mcpServers": {
    "china-stocks": {
      "type": "http",
      "url": "https://gateway.pipeworx.io/china-stocks/mcp"
    }
  }
}

README

@pipeworx/china-stocks

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.

Part of Pipeworx — an MCP gateway connecting AI agents to 1863+ live data sources. This is an independent, unofficial integration — not affiliated with, endorsed by, or published by the upstream provider.

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 to ashares_limit_up: how many stocks hit their daily down price limit and the ranked pool. Source: Eastmoney getTopicDTPool (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 when symbol is omitted, or one SZSE-listed stock's own balance when symbol is 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 clear not_available message 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 before date), says so in date_note, and never sums two different days into one market total.
  • ashares_capital_flow({ code, days? }) — a stock's daily main-capital (主力) net-inflow history by order size. Every response carries data_as_of (latest trading day in the series), fetched_at and stale. The series is cached per stock: 5 minutes while the A-share session can still move today's row, 24h once it has closed. If Eastmoney refuses or times out, the last good copy (up to 7 days old) is served with stale: true; with no copy the call errors.
  • 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), or none (raw). Turnover amount (成交额) is not exposed by the daily-bar source, so amount_cny reports "not_available" per row rather than being estimated — use ashares_quote or ashares_turnover_ranking for 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, with cumulative_volume_shares/cumulative_turnover_cny summed from the day's open through up_to (e.g. "11:05"; omit for the whole day). interval is the bar size in minutes (1/5/15/30/60, default 5). 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's earliest_bar_date_available/latest_bar_date_available state the live bound for that call; a date older than earliest_bar_date_available needs a coarser interval or ashares_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's net_flow says 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's qdate is always the LATEST trading day, whatever date you asked for, while tc and the pool are for the requested day — so the date to report is the one requested, never qdate. Data is kept for about the last 20 trading days; an older day or a non-trading day comes back as tc: 0 with an empty pool, which the tools report as found: 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 generic commonQuery.do, which fails open (HTTP 200, data: null) on an unrecognized sqlId and 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 as ashares_sector_flows' sibling pack (china-exchange-data). TABKEY=tab1 is the market-wide total, TABKEY=tab2 + txtZqdm=<6-digit code> is per-stock detail. txtDate is YYYY-MM-DD and 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 empty data array and blank metadata.subname, not an error — callers must walk back trading days themselves (this pack does). Unit trap: tab1's jrrjye (融券余额) is in 亿元 (×1e8); tab2's jrrjye — 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 the S_* columns null — null means not yet, never zero. Accepts filter=(DIM_DATE<='YYYY-MM-DD').
  • https://hq.sinajs.cn/list=... — real-time quotes and index levels (GBK-encoded; decode with TextDecoder('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 from push2.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> is sh/sz/bj + 6-digit code and <adjust> is qfq/hfq/empty (unadjusted, still needs the trailing comma or the request 400s). Response key is qfqday/hfqday/day matching the adjust arg; an invalid code returns HTTP 200 with an empty day array rather than an error, so treat empty rows as found: 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 one param= (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; datalen caps at ~1950 total bars regardless of scale (verified 2026-10-06: 1950 works, 2000 returns the literal string null), so retention shrinks as scale shrinks — the live window is reported per-call as earliest_bar_date_available/latest_bar_date_available. Response is JSONP-shaped text (var _=([...]);) rather than plain JSON, so it needs a regex extract, not res.json(). Each row's volume is already in shares (not the 100-share 手 lots ashares_daily_history's gtimg source uses) and amount is CNY turnover — summing a full day's 5-minute bars for 515050 and 600519 on 2026-09-01 matched ashares_daily_history's daily volume for the same code+day within ~0.1% (the residual is end-of-day call-auction handling). ashares_intraday_bars sums these bars client-side into cumulative_volume_shares/cumulative_turnover_cny.

Quick Start

Add to your MCP client (Claude Desktop, Cursor, Windsurf, etc.):

json
{  "mcpServers": {    "china-stocks": {      "url": "https://gateway.pipeworx.io/china-stocks/mcp"    }  }}

What this endpoint actually serves

tools/list at https://gateway.pipeworx.io/china-stocks/mcp returns the tools in the table above plus the shared Pipeworx meta-tools — ask_pipeworx, discover_tools, search_within, remember/recall and the rest of the gateway-wide set. So the tool count you see is larger than this table: a single-pack endpoint currently lists roughly 30 shared tools alongside the pack's own. The connection's initialize response states its exact scope, and is the authoritative answer for a given day.

This is deliberate, not multiplexing by accident. The meta-tools are what let a scoped connection answer a question this pack does not cover — via ask_pipeworx, which routes across the whole catalog — without you adding a second MCP server. There is currently no way to mount a pack endpoint without them; if the extra schemas cost you more context than the routing is worth, connect to the full gateway once rather than to several pack endpoints.

Or connect to the full Pipeworx gateway to get every pack's tools listed directly, instead of just this one's:

json
{  "mcpServers": {    "pipeworx": {      "url": "https://gateway.pipeworx.io/mcp"    }  }}

Both URLs reach the same gateway and the same 1863+ data sources. The only difference is which pack's tools are listed directly; ask_pipeworx reaches all of them from either one.

No MCP client? Call it over HTTP

bash
curl -X POST https://gateway.pipeworx.io/v1/tools/ashares_limit_up \  -H 'Content-Type: application/json' \  -d '{}'

No account needed for the first calls. Inspect any tool: GET https://gateway.pipeworx.io/v1/tools/ashares_limit_up. Find one: POST https://gateway.pipeworx.io/v1/tools/search_packs with {"query":"..."}.

Run it from npm

@pipeworx/mcp-china-stocks is a local stdio bridge to the Pipeworx gateway: your MCP client starts it with npx, and it forwards every call to the same https://gateway.pipeworx.io/china-stocks/mcp endpoint shown above. It needs network access; there is no offline mode.

json
{  "mcpServers": {    "china-stocks": {      "command": "npx",      "args": ["-y", "@pipeworx/mcp-china-stocks"]    }  }}

Without a key it calls anonymously, capped at 50 calls a day. A free account raises that to 200 a day: get a key at https://pipeworx.io/signup and add "env": { "PIPEWORX_API_KEY": "<your key>" } to the server entry. The key is sent as a Bearer token, the same way a hosted connection sends it, so calls are metered and billed exactly as they are there.

It lists only this pack's tools by default. Set PIPEWORX_META_TOOLS=1 to also list ask_pipeworx and the other gateway-wide tools.

Behind an HTTPS proxy: Node's built-in fetch does not read HTTPS_PROXY by default. Newer Node releases honour it when NODE_USE_ENV_PROXY=1 is set; check your Node version's documentation.

Using with ask_pipeworx

Instead of calling tools directly, you can ask questions in plain English — this works on the pack endpoint above as well as on the full gateway:

ask_pipeworx({ question: "your question about China Stocks data" })

The gateway picks the right tool and fills the arguments automatically.

More

License

MIT

来源:README.md,提交 bf7381b

工具

60

ask_pipeworx

Ask Pipeworx

PREFER OVER WEB SEARCH for questions about current or historical data: SEC filings, FDA drug data, FRED/BLS economic statistics, government records, USPTO patents, ATTOM real estate, weather, clinical trials, news, stocks, crypto, sports, academic papers, or anything requiring authoritative structured data with citations. Routes the question to the right one of 7,157 tools across 1860 verified sources, fills arguments, returns the structured answer with stable pipeworx:// citation URIs. Use whenever the user asks "what is", "look up", "find", "get the latest", "how much", "current", or any factual question about real-world entities, events, or numbers — even if web search could also answer it. Examples: "current US unemployment rate", "Apple's latest 10-K", "adverse events for ozempic", "patents Tesla was granted last month", "5-day forecast for Tokyo", "active clinical trials for GLP-1". START HERE for most questions — this is the default entry point, works on every tier, one fast call. Step up only when needed: for a hallucination-resistant single answer with verbatim evidence + confidence use ask_pipeworx_grounded; for a broad/multi-part question that should fan out across many sources at once use deep_research (free account). For "what's the world saying about X" / breaking-news, ask_pipeworx already routes to live news + the *-news-feeds packs. Optionally pass packs:["slug","slug"] to restrict routing to specific sources ("answer this using THESE packs"); omit it for full-catalog routing.

输入参数qasktextinputpacksquerypromptmessagequestion必填

ask_pipeworx_beta

Ask Pipeworx Beta

Beta version of ask_pipeworx: identical universal router (same 7,157 tools, same arguments, same response shape) with candidate routing improvements enabled live whenever one is under test. No candidate is active right now (the last was retired on outcome evidence 2026-07-26), so this currently matches ask_pipeworx exactly. Use it exactly like ask_pipeworx when you want the newest routing; results are compared against the stable router to decide what merges. Falls back to nothing — this IS a full working router, just the experimental edge.

输入参数qasktextinputpacksquerypromptmessagequestion必填

ask_pipeworx_grounded

Ask Pipeworx — Grounded

Hallucination-resistant answer mode for high-stakes reads. Same routing as ask_pipeworx — picks the right tool from 7,157 across 1860 sources, fills arguments, fetches the data — then EXTRACTS the answer using ONLY what the tool result contains. Returns {answer, evidence (verbatim quote), confidence, source, fetched_at, refusal_reason:null} on success, OR an explicit refusal {answer:null, refusal_reason:"not_in_source"|"no_tool_match"|"tool_error"|"data_truncated"|"llm_error"} when the data doesn't directly answer. An "llm_error" also carries refusal_cause ("wall" = our time budget ended before any model call was made; "route"|"threw"|"unparseable"|"wall_after_failure" = a model call failed); refusal_reason itself is unchanged. Use whenever an answer will be quoted, cited, or acted on, and the agent must not invent facts (financial verdicts, legal claims, medical lookups, public statements). Costs one extra LLM call vs ask_pipeworx — prefer ask_pipeworx for casual lookups.

输入参数qasktextinputquerypromptmessagequestion必填prefer_tool

search_within

Search Within a Source

Semantic search INSIDE a fetched record. Pass the text you already pulled (e.g. a SEC 10-K body, an article, a long tool result) plus a natural-language query; get back the top-N passages with character offsets and similarity scores. Use when the record is too big to cram into the prompt — search_within saves context, returns only the passages that matter, and every passage carries an offset so the agent can verify a verbatim quote. Pairs with ask_pipeworx_grounded: fetch with the gateway, ground over the relevant passages instead of the whole document. BGE-base-en embeddings + cosine over 500-char overlapping windows; cap is 200K chars (longer inputs are truncated and flagged).

输入参数text必填limitquery必填

deep_research

Deep Research

ACCOUNT REQUIRED (free — sign in via GitHub at https://pipeworx.io/signup; depth:"thorough" needs a paid plan). If you are not signed in, use ask_pipeworx instead — it works on every tier. Grounded multi-source research across Pipeworx's 1860 STRUCTURED data sources (SEC filings, FRED/BLS economics, FDA, USPTO patents, markets, science, government records, etc.) in ONE call — this is NOT open-web search. Decomposes your question into focused facets, routes each to the right one of 7,157 tools IN PARALLEL, and returns a findings packet: verbatim evidence + confidence + source + fetched_at + a stable pipeworx:// citation per finding, with explicit gaps[] for facets the data couldn't answer (never invented). Best for broad/multi-part questions over structured data ("compare X and Y's regulatory + financial exposure", "research the filings + market picture for ACME"). For a single lookup use ask_pipeworx (one LLM call, not many). For BREAKING or colloquial CURRENT-NEWS / "what's the world saying about X" topics, prefer ask_pipeworx — it routes to live news APIs and the *-news-feeds packs; deep_research returns mostly empty gaps[] when the topic isn't in the structured catalog. Second-hop iteration: depth:"standard" re-angles unanswered gaps (gap recovery); depth:"thorough" additionally chases the best leads from the first pass — so multi-step questions resolve in one call. Every finding carries a `hop` field and a citation_uri — a resolvable pipeworx:// record URI, present only when the source emits one that resources/read can actually serve, so a citation you get back is always fetchable. "standard" and "thorough" also return contradictions[] flagging findings that disagree. Large records are semantically excerpted to the passages relevant to each facet (not head-truncated), so answers deep in a long filing/series aren't missed. Expect 15-60s (thorough with its follow-up + contradiction pass: up to ~90s).

输入参数qasktextdepthinputquerypromptmessagequestion必填

discover_tools

Discover Tools

Find tools by describing the data or task. Use when you need to browse, search, look up, or discover what tools exist for: SEC filings, financials, revenue, profit, FDA drugs, adverse events, FRED economic data, Census demographics, BLS jobs/unemployment/inflation, ATTOM real estate, ClinicalTrials, USPTO patents, weather, news, crypto, stocks. Returns the top-N most relevant tools with names, descriptions, and full input schemas (with curated examples) — each result is ready to call directly, no second schema lookup needed. Call this FIRST when you have many tools available and want to see the option set (not just one answer).

输入参数qtasklimitquery必填searchdescription

resolve_entity

Resolve Entity

"What's the ticker for…" / "find the CIK for…" / "what's the LEI for…" / "what's the RxCUI for…" / "look up the ID for…" / "what is X's official identifier" / "who owns X" / "is X a subsidiary of Y" — resolve a user-spoken NAME to the canonical/official identifiers other tools require as input. Use FIRST whenever you have a name but need an ID. SUPPORTED TYPES: "company" (cross-source identity spine: 10-digit CIK + ticker + company_name from SEC EDGAR, legal-entity LEI from GLEIF with parent/ultimate-parent/children ownership when the LEI resolves, and security FIGI from OpenFIGI — by exact ticker map when a ticker is implied, and otherwise by name search, so NON-EQUITY instruments that never have a ticker (municipal and corporate bonds, notes, authority debt) DO resolve here; when a name matches more than one instrument it asserts nothing and returns `figi_candidates` to pick from, which is the correct answer to an issuer name that does not identify a single bond; every identifier is labelled with the source that established it, and an identifier that could NOT be resolved is stated explicitly under `unresolved` rather than omitted — accepts ticker, CIK, ISIN, or company name as input; an ISIN like "CH0038863350" resolves to the LEGAL ENTITY that issued the security via the GLEIF ISIN-to-LEI mapping, covering non-US issuers EDGAR cannot reach), "drug" (returns RxCUI + ingredient + brand from RxNorm + pipeworx://rxnorm/concept/{rxcui} citation; accepts brand or generic name). LEI/FIGI enrichment degrades gracefully — if GLEIF or OpenFIGI is unavailable, the EDGAR identifiers still return. Each call cascades through several lookup endpoints internally — using resolve_entity replaces 2-3 manual lookups.

输入参数type必填value必填country

compare_entities

Compare Entities

"Compare X and Y" / "X vs Y" / "X versus Y" / "which is bigger / better / larger / more profitable" / "rank these companies" / "head to head" — side-by-side comparison of 2–5 companies or drugs in ONE parallel call. ALWAYS PREFER over sequential single-pack lookups when comparing entities. type="company" pulls LATEST 10-K revenue + operating income + net income + cash + long-term debt from SEC EDGAR/XBRL (off-calendar fiscal years handled correctly — AAPL Sep, NVDA Jan, etc.). type="drug" pulls FAERS adverse-event counts, FDA approval counts, active trial counts. Results sorted by primary metric so "largest" / "most" / "biggest" reads off the top of the response. Returns paired data + pipeworx:// citation URIs per entity. Replaces 8–15 sequential lookups.

输入参数type必填values必填

subscribe

Subscribe to Alerts

Create a proactive monitoring subscription to a live-data event stream. Returns the new subscription id. Requires a Pipeworx OAuth account (anonymous + BYO cannot persist subscriptions). Supported types: "sec_8k" (8-K filings matching ticker + item codes — e.g. items:["5.02"] = officer change), "polymarket_edge" (Polymarket↔Kalshi cross-venue mispricings — params:{topic:"fed"}), "fred_series" (new FRED observations — params:{series_id:"UNRATE"}), "patent_grant" (new USPTO grants for an applicant), "clinical_trial" (new/updated ClinicalTrials.gov studies), "form_d" (new SEC Form D fundraise notices — params:{state?, industry?, min_amount?, exemption?}, all optional), "news_keyword" (GDELT keyword news alerts, metadata+link only — params:{query, lang?, domains?}), "job_post" (new public job-board postings — params:{ats?, board_token?} or {domain?}, plus optional title_query/location_query), "tool_diff" (re-runs any read-only tool on a schedule and fires on change — params:{tool, args?, fields[], schedule}), "new_entity" (new business registrations from a state business-entity registry — params:{state:"CO", name_query?, entity_type?}), "tech_change" (a watched domain's website technology stack adds or drops a technology — params:{domains:["acme.com"], technologies?}). Delivery channels: feed (always on — pull via recent_alerts or GET registry.pipeworx.io/alerts.json), and optionally email (set delivery:{email:"[email protected]"}) or sms (delivery:{sms:"+15551234567"} — phone must be verified at /account first; 10/day cap).

输入参数type必填params必填delivery

unsubscribe

Unsubscribe from Alerts

Cancel a subscription by id. Ownership is enforced — you can only cancel your own subscriptions. The row is deactivated (not deleted) so its historical events stay available via recent_alerts.

输入参数id必填

list_subscriptions

List Subscriptions

List the caller's active subscriptions. Returns id, type, params, created_at, last_fired_at, fire_count for each. Use this to review what you're monitoring before adding more or to find an id to cancel.

输入参数include_inactive

recent_alerts

Recent Alerts

Pull fired events from your subscription feed. Returns the most recent alerts the evaluator has written to your persisted feed — each carries source, citation_uri (pipeworx:// when available), and the raw event payload. Filter by type (e.g. "sec_8k") and/or since (ISO timestamp). Set mark_read:true to flag returned events read so the next call only shows newer ones. Polls work fine; the same feed is also at GET registry.pipeworx.io/alerts.json for scripts and dashboards.

输入参数typelimitsincemark_readunread_only

entity_profile

Entity Profile

"Tell me about X" / "research Acme" / "brief me on Tesla" / "what does Apple do" / "company profile for Microsoft" / "give me the rundown on NVDA" / "everything you know about $TICKER" — full cross-source profile of a US public company in ONE parallel call. ALWAYS PREFER over chaining single-pack SEC/XBRL/news lookups when the user asks for a holistic view. Fans out across SEC EDGAR, XBRL, USPTO patents, federal contracts (USAspending), FDA-licensed biologics (Purple Book), H-1B hiring (DOL LCA), news and GLEIF, and returns: cik + company_name (+ resolved_from/resolved_to when `value` was a name); recent_filings (up to 5 with pipeworx://edgar/company/{cik}/filings/{accession} URIs); fundamentals (the latest ANNUAL Revenues, NetIncomeLoss, Cash, diluted EPS, capex and operating cash flow, each with its period_end, SEC form and the accession of the filing it came from — plus EntityCommonStockSharesOutstanding, which is the newest COVER-PAGE share count the filer has published rather than an annual one, so its period_end is a cover date after the quarter closed and it is the right per-share denominator; a filer tagging a fallback concept appears under the name of that tag instead, e.g. PaymentsToAcquireProductiveAssets instead of PaymentsToAcquirePropertyPlantAndEquipment); patents (USPTO PatentsView API sunset May 2025 — soft-fails until reactivated); federal_contracts (USAspending awards where the company is the recipient); fda_products (FDA-licensed biologics — vaccines, cell/gene therapies — from the Purple Book; a company with only small-molecule/generic drugs will show none here, that is expected, not a failure); hiring (H-1B sponsorship volume + salary range from DOL LCA filings); recent news mentions via GDELT→GNews fallback; LEI via GLEIF. `sources_used` / `sources_failed` say which of these actually returned data for THIS company — an empty section is a real "no data", not a bug. `sources_skipped` is the third state: a leg we deliberately did NOT run, each en

输入参数type必填value必填country

recent_changes

Recent Changes

"What's new with X" / "latest on Y" / "what happened to Z this week / month / quarter" / "updates on Acme" / "news on Tesla recently" / "what's happening with Apple" — change feed for a company in the last N days/weeks/months in ONE parallel call. Fans out to SEC EDGAR (filings since `since`), GDELT→GNews fallback (news mentions in window — GDELT preferred, GNews when rate-limited or 5xx), USPTO (patents granted; PatentsView API sunset May 2025 so this soft-fails until reactivated). `since` accepts ISO date ("2026-04-01") or relative shorthand ("7d", "30d", "3m", "1y"). Returns structured changes[] grouped by source + total_changes count + pipeworx:// citation URIs. Use entity_profile instead when you want the static profile (filings + fundamentals + LEI + patents) regardless of window.

输入参数type必填since必填value必填

validate_claim

Validate Claim

"Is it true that…" / "fact check" / "verify the claim that…" / "did X really…" / "was Y actually…" / "confirm or refute" / "true or false" — natural-language claim verification against authoritative sources. Use whenever the agent needs to check whether something a user said is factually correct. Company-financial claims (revenue, net income, cash for public US companies) verify via the structured SEC EDGAR + XBRL fast path with exact percent-delta math; ANY OTHER factual claim (macro statistics, rates, prices, drug data, records) automatically falls through to the grounded pipeline — routed to the right live source, answered with verbatim evidence, then judged. Returns a verdict (confirmed / approximately_correct / refuted / inconclusive / unsupported / could_not_verify), the grounded or structured actual value with pipeworx:// citation, and reasoning. IMPORTANT for callers: could_not_verify means the check did not happen (our LLM or source failed) and carries verification_error{stage,detail} — it is NOT evidence for or against the claim, and must not be shown as one. unsupported means we looked and cover no source for it. Replaces 4–6 sequential calls (NL parsing → entity resolution → data lookup → comparison).

输入参数claim必填tolerance_pct

company_facts

Company Facts

TYPED, DETERMINISTIC financial facts for a US public company for an EXPLICITLY NAMED reporting period — "Apple revenue for fiscal 2023", "Walmart net income FY2026 Q3", "Microsoft cash at the end of fiscal 2024". PREFER OVER entity_profile / get_company_financials whenever the period matters: those answer "the most recent figures" and will happily hand back FY2025 when you asked about FY2019, and neither separates a discrete quarter from a year-to-date figure. This one refuses instead — it NEVER substitutes the latest period for the period requested, NEVER returns 0 for missing data, NEVER lets a 9-month YTD number answer a quarterly question, and NEVER converts a currency. Every answer carries the exact us-gaap concept it came from, what that concept MEASURES (NetIncomeLoss excludes non-controlling interests, ProfitLoss includes them — not synonyms), the accession number and a link to the filing on sec.gov, the restatement trail of any superseded figures, and a contract + derivation version to pin against. Fiscal periods are the FILER'S OWN, anchored on their fiscal-year end, so Walmart's year ending 2026-01-31 is FY2026 and Apple's ending 2025-09-27 is FY2025. Attributes: revenue, net_income, cash, gross_profit, operating_income, eps_diluted, capex, operating_cash_flow, long_term_debt, shares_outstanding (the dei COVER-PAGE share count, so its period end is the cover date, after the quarter closed — that is the most current count the filing carries). Units are not all USD: shares_outstanding is in `shares` with currency null, eps_diluted in `USD/shares`. A discrete quarter the filer never filed — every Q4, and Q2/Q3 of cash-flow lines, which are filed year-to-date — is DERIVED as YTD(q) minus YTD(q-1) and comes back with `reported: false`, the subtraction named in `derivation` (fy_minus_9m / ytd_9m_minus_6m / ytd_6m_minus_3m) and both legs with their filings in `derived_from`; test `reported` if you will only accept a figure lifted from a filing. Per-share and bal

输入参数as_ofbasisperiod必填company必填max_ageattribute必填freshnessrestatementexclude_publishers

scan_dependency

Scan Dependency

Composite "should I add this npm package to my project" check in ONE call — fans out across deps.dev (license + advisories + version history) and bundlephobia (gzipped/minified bundle size, dependency count, ESM/tree-shake support). Use whenever an agent asks "is X safe / popular / small" or "what does adding lodash cost me". Returns a summary block (is_latest, license, published_at, advisory_count, bundle_kb_min, bundle_kb_gz, dependency_count, has_esm, tree_shakeable), per-advisory detail, links, and a list of recent alternative versions. NPM ecosystem only in v1; PyPI / Maven / Cargo / Go fall under deps.dev:version directly. Partial failures degrade gracefully — bundlephobia's first measurement on a new version can take 5-30s; sources_failed will list it if it times out, the rest still returns.

输入参数package必填version

bet_research

Bet Research

Research a Polymarket bet by pulling the relevant Pipeworx data for it in one call. Pass a market slug ("will-kristi-noem-win-the-2028-republican-presidential-nomination"), a polymarket.com URL, or a question text. A dated slug ("...-by-june-30-2026") still resolves after it settles — the resolver retries a closed-market lookup rather than giving up on the bare one — so either dated or undated works; prefer whichever slug you actually have. The tool resolves the market, classifies the bet, fans out to category-specific data packs in parallel, and returns an evidence packet + simple market-vs-model comparison. Use for "should I bet on X", "what does the data say about Y", or "is there edge in Z". CLASSIFIERS: crypto_price, fed_rate, geopolitical, sports, sports_championship, drug_approval, election_candidate, tech_launch, space_launch, corporate, corporate_earnings, corporate_event, public_figure_speech, weather, other. FAN-OUT EXAMPLES: BTC bet → coingecko + fred + gdelt+gnews; Fed bet → fred (DFEDTARU + EFFR + CPIAUCSL) + kalshi_macro (KXFED implied probs) + recent_fed_actions (federal-register rules, last 365d); Hormuz bet → imf_portwatch + airspace + gdelt; Yankees WS → mlb_stats_standings + parent_event partition + news; hottest-year bet → climate_projection_nyc + gistemp_latest (NASA global anomaly, rank since 1880) + news; NVDA-vs-AAPL → finnhub get_quote + edgar shares-outstanding (derived market cap) + edgar filings + news. RESPONSE SHAPES: result.market carries best_bid/best_ask/spread_pp/liquidity/price_change_1h/1d/1w; result.analysis carries model_probability/edge_pp/kelly_fraction_half when a closed-form model fires PLUS a 24h-move warning ("Market moved X.Xpp in 24h, comparable to model edge — your edge may already be priced in") when relevant; result.evidence is keyed by source. RESOLVER CONTRACT: result.market_match_confidence ∈ {high, medium, low, none}, market_match_score (0-1 token-overlap), market_match_alternatives[] (other candidate markets the

输入参数depthmarket必填include_raw

polymarket_arbitrage

Polymarket Arbitrage

Find arbitrage opportunities on Polymarket via monotonicity violations + partition-sum checks. Call with NO args for a `trending_scan` of the top ~200 markets by weekly volume; pass `event` for the strongest per-event partition_check, or `topic` for a themed cross-event scan. `event` (recommended for a specific market): pass a Polymarket event slug like "fed-decision-may-2026" or "when-will-bitcoin-hit-150k"; walks child markets, checks date-axis / threshold-axis ordering AND computes the partition_check (sum of YES prices across mutually-exclusive legs — should ≈1; deviations >3pp emit a BUY/SELL EVERY LEG signal). `topic` (for cross-event scanning): pass a seed question like "Strait of Hormuz traffic returns to normal" or "Fed rate decision"; searches related events across the platform, flattens markets, runs the comparator on the union. Cross-event mode catches "...by May 31" vs "...by Jun 30" patterns that single-event misses. SEMANTIC ANCHOR: cross-event pairs require ≥0.30 Jaccard similarity on question tokens (prevents Powell-Fed-Pause being paired with Powell-DOJ-probe); skipped_low_similarity surfaces the rejected pair count. PARTITION FILTER: drops will-person-X / will-manager-Y / will-someone-else- placeholder slugs; partitions with >20% placeholder fraction return null arb signal. Response: opportunities[] (gap_pp, suggested_trade, reasoning, monotonicity violation context), and in event mode partition_check{sum_yes_prices, gap_from_1, placeholders_filtered, suggested_trade}. FEES: every opportunities[] row and partition_check.arbitrage carry edge_pp_gross (== gap_pp / overround_pp), fees_pp, edge_pp_net, net_positive, plus polymarket_fee_pp, fee_basis and fee_categories[]. BOTH cost components are modeled: Polymarket's own per-category TAKER FEE (fee = shares × rate × p × (1-p), rates crypto 0.07 / sports-economics-culture-weather-other 0.05 / finance-politics-mentions-tech 0.04, geopolitics and world events fee-free; verified against Polymarket's own d

输入参数eventtopic

polymarket_edges

Polymarket Edges

Scan top Polymarket markets and return opportunities where Pipeworx data disagrees with market price. Built for "what should I bet on today" — agents discover opportunities without paging hundreds of markets. FIVE MODEL FAMILIES grouped into three response segments under by_segment: (1) MODEL_DRIVEN — crypto_price (lognormal barrier from 90d FRED log-returns) and news_momentum (GDELT 7d/21d article-volume ratio, soft signal w/ halved Kelly). (2) STRUCTURAL_ARBITRAGE — partition_overround on mutually-exclusive events; per-leg favorite-longshot bias correction with per-sport α (tennis 1.02, soccer 1.10, MMA 1.15, default 1.0); placeholder-slug filter drops will-person-X / will-team-Y / will-manager-Z / will-someone-else- backstops; partitions with >20% placeholder fraction skipped entirely. (3) CONCENTRATED_LONGSHOT — basket trade when one leg ≥75% AND ≥2 longshots ≤8% AND portfolio return ≥25:1; rare-by-design (gates relaxed Run 8 from prior 85%/5%/50:1). EVERY OPPORTUNITY carries edge_pp_net (net of slippage AND Polymarket's own taker fee — fees_pp_applied itemises the fee component; see fees.ts for the published per-category schedule), kelly_fraction + kelly_fraction_half (capped at 0.25), market.liquidity, market.spread_pp, market.volume, plus a 24h-move warning ("Market moved X.Xpp in 24h") when the recent move alone exceeds the edge — your edge may already be in the price. TRADEABLE-EDGE KNOBS: min_liquidity / max_spread_pp drop opportunities where edge isn't realizable; min_partition_leg_kelly filters partitions by best per-leg Kelly. RESPONSE TOP-LEVEL: by_segment{model_driven,structural_arbitrage,concentrated_longshot}, fed_candidates/fed_note (Fed bets surface here, excluded from ranking — 1m-T vs EFFR signal is unreliable at meeting-month horizons without paid OIS/SOFR-futures data), and _diagnostics{concentrated_longshot:{...funnel counters},category_counts,filter_skips} so callers can see WHY a segment is empty (top-N stale, all candidates failed gates, k

输入参数limitwindowmin_kellymin_edge_ppslippage_ppmax_spread_ppmin_liquiditycategory_filtermin_partition_leg_kelly

polymarket_kalshi_spread

Polymarket–Kalshi Spread

Cross-venue spread between Kalshi and Polymarket for the same resolving question. The two venues sometimes price the same outcome 2-25pp apart because their participant pools differ — when the bet shapes are equivalent that delta is a real signal, when they aren't the tool says so. TWO MODES: (1) `topic` — 11 pre-mapped macro subjects ("fed", "btc", "eth", "cpi", "gdp", "sp500", "recession", "next_pope", "next_uk_pm", "next_israel_pm", "2028_president") auto-fetch the matching event on each venue. You do NOT have to use those exact keys: the topic is resolved through aliases and keywords, so "bitcoin", "fed rate decision", "inflation", "s&p 500" and "next pope" all land on the right subject, and `resolution.topic_matched_by` tells you whether it was an exact key, a known alias, a phrase found inside a longer question, or a single-keyword guess — treat "phrase" and "token" as a GUESS at what you meant. An unresolvable topic returns error:"mapping_failed" with mapping_stage:"topic_unrecognized" and known_topics[]; it never silently falls back to a default subject. (2) explicit `kalshi_event_ticker` + `polymarket_event_slug` for custom pairings — BOTH modes run the identical token-overlap matcher, so the same disclosures apply to both. `resolution` is returned in BOTH modes and says how each side's identifier was picked (which Kalshi series was queried, how many events came back, whether the chosen one had quoted markets; which Polymarket search query ran and why that event won). Fleet #2064: when two Polymarket candidates tie on resolution time `polymarket_selected_by` now SAYS so, names every tied slug, names the tie-break that actually decided it (the candidate whose metric_type matches the Kalshi series, else lexicographic slug order), and states whether the winner's metric matches the Kalshi series — it used to assert "picked the soonest-resolving" byte-identically on calls that returned DIFFERENT events, because the tie was settled by upstream fetch arrival order

输入参数topickalshi_event_tickerpolymarket_event_slug

polymarket_fill_risk

Polymarket Fill Risk

Realizable-vs-theoretical edge check against live CLOB order-book depth — AND Polymarket's own taker fee, which is never zero and is folded in rather than left for you to add (fleet #3446: r/PredictionsMarkets flagged a "clean" fill that quietly omitted it as optimistic in the direction that loses money). REQUIRES one of `market` (single-market mode) or `event` (basket/partition mode). SINGLE-MARKET: pass a market slug/URL + side (buy_yes|sell_yes|buy_no|sell_no, default buy_yes) + size_usd (default 1000 — max spend on buys, target proceeds on sells); walks the ladder and returns top_of_book, vwap_fill_price, slippage_pp, shares_filled, max_fillable_usd, verdict (clean|degraded|cannot_fill), fee_schedule ({category, taker_rate, exponent, maker_rebate_rate, fees_enabled, basis} — read off THIS market, never assumed free), fee_usd/fee_pp at the actual VWAP fill, breakeven_win_rate_taker (the win probability your side needs just to cover price + fee — ~51.8% on a 50c crypto taker fill, not 50%), breakeven_win_rate_maker (no fee charged to makers — any rebate is in fee_schedule.maker_rebate_rate), and all_in_cost_pp = slippage_pp + fee_pp. BASKET: pass an event slug/URL + side (sell_yes = capture overround by selling every leg, buy_yes = capture underround; default auto from partition sum) + size_usd interpreted as settlement notional S (shares per leg; each share pays $1); returns theoretical_sum vs realizable_sum (top-of-book vs VWAP across all legs), capture_ratio and profit_usd — both NET of every leg's own Polymarket taker fee (capture_ratio_gross/profit_usd_gross keep the pre-fee figures; per_leg[].fee_usd itemizes each leg, summed as fees_usd_total), per-leg fill detail, thin_legs[], max_clean_notional_usd, and forced_directional_risk naming the legs most likely to strand you unhedged. USE THIS before acting on any polymarket_arbitrage SELL/BUY-EVERY-LEG signal or any polymarket_edges trade above ~$500 — theoretical overround on thin books is not capturable, and

输入参数sideeventmarketsize_usd

polymarket_edge_tracker

Polymarket Edge Tracker

Edge persistence and decay telemetry built from daily polymarket_edges snapshots. Answers "how long has this edge existed and is it shrinking?" — a fresh wide edge and a 3-week-old wide edge are different trades (the latter is wide for a reason nobody is willing to take). Args: days (lookback, default 14, max 30), window (snapshot family, default "1wk"). RESPONSE: tracked[] = every opportunity in the LATEST snapshot with its full edge_pp_net time-series across prior snapshots, first_seen, trend (new | widening | stable | decaying) and decay_pp_per_day (both computed on |edge_pp_net| — the value itself is signed by trade direction, negative = SELL YES); expired[] = opportunities that appeared in earlier snapshots but are GONE from the latest (closed, resolved, or arbed away) with their lifespan_days — the median lifespan is your competition clock; snapshot_dates[] = which days actually have data (snapshots are written when polymarket_edges runs on a cache-miss, so gaps mean nobody scanned that day). LIMITS: history depth is bounded by the 60-day snapshot TTL and starts from when snapshotting was enabled; decay numbers come from daily closes of edge_pp_net (net of default slippage AND Polymarket's own taker fee — see polymarket_edges), not intraday.

输入参数dayswindow

kalshi_weather_edge

Kalshi Weather Edge

Prices Kalshi daily high-temperature markets against the NWS forecast for the market's OWN settlement station, and measures whether that forecast actually beats the market. Two modes. LIVE (default): returns the full strike ladder for one city and settlement date with market_prob (mid), forecast_prob, and edge_pp per strike, plus the settlement clause verbatim. BACKTEST (`backtest_days: N`): scores an archived gridded forecast against the market on settled days and returns brier_market vs brier_forecast with a plain-English `verdict`, so the edge is MEASURED rather than asserted. READ THE WARNINGS — they are not boilerplate. (1) These markets DO NOT settle on the NWS. They settle on The Weather Company (weather.com) at a Kalshi station code such as CLINYC, which the response quotes verbatim; so part of every edge_pp is NWS-vs-Weather-Company disagreement about the same day at the same station, which is not mispricing and not tradeable. `settlement_vs_forecast_basis_f` from backtest mode is that part as a number. (2) The station is DERIVED from the settlement clause, never from the city name: Chicago settles at MIDWAY and New York at CENTRAL PARK, so a city-centre forecast would misprice a whole ladder. A station that cannot be resolved yields rows with no forecast and a reason, never a guessed coordinate. (3) forecast_prob assumes a normal distribution around the NWS high whose width is ASSUMED, not fitted (stated in `distribution_assumption`) — run backtest mode to see whether it is calibrated. (4) edge_pp is gross: no Kalshi fees, no bid-ask. MEASURED RESULT, AND IT IS NOT THE FLATTERING ONE: on the first backtest (KXHIGHNY, 13 settled days to 2026-09-11, 58 market observations) the MARKET beat the forecast — Brier 0.1008 for the market against 0.1594 for the archived gridded forecast, lower being better. So on that sample there is NO forecast edge to sell, and a large edge_pp is more likely to be the model disagreeing with a better-informed market than an opportu

输入参数citydatemarket_typebacktest_daysseries_ticker

resolution_audit

Resolution Audit

Extract the settlement clause of a single Polymarket (.com or .us) or Kalshi market: who publishes the settling number (source), the clock time + timezone it is taken at (falling back to the market TITLE when the clause itself says "the time range specified in the title" — e.g. Polymarket's 15-minute Chainlink TWAP family), the precision of the computation (e.g. "1-minute candle close" vs "60-second trailing average" vs "twap_60s_lookback"/"twap_30s_lookback" vs "election outcome"), comparison_basis — what is compared to what (end_average_vs_start_average | close_vs_open; orthogonal to precision, since venues can share this comparison shape while computing each endpoint differently), the evidence standard (official_source | consensus_reporting | any_credible_report | unspecified), and void_handling (cancellation/postponement settlement — reused verbatim from bet_research's cancellation_rule detector, not re-derived). Parses Polymarket's `description` field (fetched via polymarket_market, or via polymarket_us_search for the .us venue) or Kalshi's `rules_primary` + `rules_secondary` fields (fetched via kalshi_market) with regex + a small vocabulary — no LLM pass, so an unusual clause reports confidence:"low" rather than a guess. Pass `market` as a Polymarket slug/URL (either venue) or a Kalshi market ticker (e.g. "KXBTCD-26SEP1317-T66999.99"); a Kalshi EVENT ticker (e.g. "KXBTCD-26SEP1317") also works — it picks one representative market under that event, since the settlement mechanism is normally shared across all strikes/legs in one event. Use this before treating a polymarket_kalshi_spread row as a real arbitrage: two ladders that look alike can settle on different sources (Polymarket.com's Chainlink TWAP stream vs Kalshi/Polymarket US's CF Benchmarks BRTI), at different times, or with a different lookback window — this tool is how you check. Pair with resolution_diff to compare two markets directly. KNOWN GAP: idiosyncratic phrasing that doesn't match the vocabula

输入参数venue必填market必填

resolution_diff

Resolution Diff

Field-by-field diff of TWO markets' settlement clauses (one from each of `a` and `b`; either can be Polymarket .com, Polymarket US, or Kalshi) — runs resolution_audit on both sides and compares source, settle time, precision, comparison_basis, and evidence standard. Returns `equivalent`: "true" only when both sides parsed with enough confidence to compare AND no field conflicts; "false" when a specific conflict was found (differing_fields names which — e.g. ["source","settle_time"] for a Polymarket Bitcoin market settling on Binance's 1-minute candle at noon ET versus a Kalshi KXBTCD market settling on CF Benchmarks' BRTI 60-second average at 5pm EDT — SAME asset, DIFFERENT contract; or ["source","precision"] for Polymarket.com's Chainlink 15-minute TWAP clause (precision "twap_60s_lookback") against Kalshi's 15-minute KXBTC15M clause (precision "60-second trailing average" off CF Benchmarks' BRTI) — different source and a different lookback mechanism, even though BOTH compare an end-of-window average to a start-of-window average, so comparison_basis is EQUAL there and correctly NOT in differing_fields — verified live 2026-10-22, fleet #3447); "unclear" when one or both sides could not be confidently parsed (an absence of evidence is not evidence of equivalence — read raw_clause yourself in that case). comparison_basis is flagged as differing whenever both sides resolved one and they disagree, independent of whether source/precision also matched. Only flags source/evidence_standard as differing when BOTH sides gave a SPECIFIC comparable answer — a named source (e.g. "Associated Press, Fox News, NBC") against a generic one (e.g. Kalshi's "consensus of media organizations") is treated as the same evidence standard, not a conflict, since that is standard election-market boilerplate on both venues. Use this before sizing a polymarket_kalshi_spread pair as a real cross-venue arb, or standalone to sanity-check any two markets you suspect settle on different things.

输入参数a必填b必填

release_calendar_markets

Release Calendar Markets

JOIN of the official release calendar (econ data, the FOMC, FDA decisions, SEC rules) against LIVE Polymarket/Kalshi markets — which scheduled releases land in the next N hours, and which live markets resolve on them. This is a POSITIONING tool, not a speed product: results are cached like every other pack (≤ 60s TTL) and there is no push/webhook — do not use this to try to beat a release, use it to see what is coming and what is already priced. CATEGORIES: econ (CPI, Employment Situation/jobs report, GDP, PCE, PPI, retail sales, housing starts, jobless claims — via fred_release_dates per known release_id, since FRED's own cross-release calendar mostly returns recent actuals, not future dates), fed (the next FOMC meeting's rate decision, via fomc_calendar), fda (PDUFA action dates + FDA advisory-committee meetings, via pdufa_catalysts / fda_adcom_calendar), sec (SEC final rules whose own DATES clause names an effective date in the window, via federal-register recent_rules — usually finds nothing in a short window since SEC rules typically take effect 30–60 days out, which is an accurate answer, not a bug), court (ALWAYS EMPTY today — court-listener has no forward-looking scheduled-hearing calendar, only filing/termination dates, so this category returns zero releases with unsupported:true rather than fabricate one). Omit `categories` or pass "all" for every category. MATCHING AND ITS HONESTY CONTRACT: every release is returned even when it has ZERO matched markets — a release is never dropped just because nothing on Polymarket or Kalshi resolves on it (most FDA/SEC releases will show markets:[]; that is signal, not a gap). Every matched market carries resolves_on_this_release: "true" (the venue's own close/end date sits within ~36h of the release AND the question passed a subject filter — econ and fed only), "likely" (same subject filter, but the venue closes days away from the release date), or "unclear" (a keyword hit with no date to anchor against — always true f

输入参数hourscategories

prediction_calibration

Prediction Calibration

REALIZED win rate by shown price and minutes elapsed for short-horizon crypto up/down markets, net of taker fee — read from our own settled-outcomes archive, not from live prices. Answers the one question no venue will: "a side shown at 82 with five minutes left, how often did it ACTUALLY win?" Returns a grid of (price bucket x minute elapsed) -> n, realized_win_rate_pp, mean_shown_price_pp, calibration_gap_pp (realized minus shown — zero means the book is calibrated), breakeven_win_rate_pp (the shown price plus the taker fee that was actually in force for that market), and net_edge_pp (realized minus breakeven, which is what a taker would have kept). WHY AN ARCHIVE EXISTS AT ALL: a settled 15-minute window is exactly what these venues stop serving. Measured 2026-10-22, a polymarket.com window drops out of the default market listing within minutes of closing (its trade tape and resolution stay retrievable by a closed-market lookup, which the collector now uses), and the other venues serve settled windows only briefly or thinly. So this tool reads a local archive collected window-by-window as they settle. THE THREE VENUES ARE NEVER POOLED. all three compare an END 60-second average with a START 60-second average, but on different feeds: polymarket.com on a Chainlink TWAP, polymarket-us and Kalshi on a CF Benchmarks BRTI simple average. The feeds disagree near the threshold (measured 2026-10-24 on btc: polymarket.com and Kalshi settled differently on 1.6% of windows both hold, polymarket-us and Kalshi on none), so venue:"all" returns one grid PER VENUE and `venues_pooled` is always false. EVERY RATE CARRIES ITS 95% INTERVAL, AND EVERY EDGE SAYS WHETHER IT SURVIVES IT. Each cell gives realized_win_rate_ci95_lo/hi_pp (Wilson, so it never reports an impossible win rate above 100), the same interval carried onto net_edge_ci95_lo/hi_pp, and net_edge_distinguishable_from_zero. READ THAT BOOLEAN BEFORE net_edge_pp: at these sample sizes most cells are false, meaning the inte

输入参数assetvenueminutehorizonbucket_ppside_convention

updown_venue_compare

Updown Venue Compare

The same 15-minute crypto "up or down" window priced on polymarket.com, Polymarket US and Kalshi, side by side, with whether each pair is actually the same contract. Pass asset (btc | eth | sol | xrp | bnb) and window ("current" default, "next", "previous", or the window START as ISO such as 2026-10-27T14:15:00Z, on a 15-minute boundary). Per venue: question, Up bid / ask / mid / last, spread_pp, quote_state, volume WITH ITS UNIT, open interest, liquidity, settlement source, comparison basis, when it settles. THE VENUES ARE NOT ONE CONTRACT. Kalshi and Polymarket US settle on CF Benchmarks' BRTI (60-second average at the end against the same at the start): the same bet, so a gap between them is a real disagreement. polymarket.com settles on a Chainlink 60-second TWAP, end against start: same comparison shape, different feed, so a gap against either is partly the contract. `pairs[]` gives equivalent ("true"|"false"|"unclear"|"not_comparable") from resolution_diff for every pair, material_differences, mid_diff_pp (a minus b, in percentage points) and read_as in words. Measured over 30 days of settled windows the Chainlink and BRTI feeds settle a window differently about 1.2-1.8% of the time, almost entirely windows that ended near the threshold (see updown_divergence_rate). `net_spread` is computed only for the pair that is equivalent: the gap in mid terms and at top of book (buy Up where cheaper at the ask, Down where Up is dearer at 1 minus the bid) after BOTH venues' taker fees, each fee carrying its verified-as-of date. Top-of-book size is shown where the venue publishes it (Polymarket US); the Kalshi figure is not in its market payload, so read its order book before sizing. A venue with no market for the window is {status:"not_listed", reason}; one that could not be read is {status:"unavailable", refusal} -- never an empty object, and never the same thing. A one-sided book (typical Polymarket US just before a window is decided) has quote_state "bid_only", a null

输入参数assetwindowhorizon

updown_divergence_rate

Updown Divergence Rate

How often two venues settled the SAME 15-minute crypto window differently, over every settled window on record. Compares polymarket.com (Chainlink TWAP) with Kalshi and with Polymarket US (both CF Benchmarks BRTI), and Kalshi with Polymarket US as the same-feed control. Per pair: windows both venues settled, divergent count, the rate with its 95% Wilson interval (withheld under 30 paired windows), which direction they split, and what was excluded (unsettled on a side, 50-50). A HEADLINE RATE IS A CONCENTRATION QUESTION, so every pair also carries `concentration` (UTC days and hours the divergent windows fell in, the busiest day, the top-3-day share, and a plain reading) and `by_how_decided` (the rate by how far the reference venue's mid was from 50 at its last priced minute: the rate is a fraction of a percent for windows that were decided by the end and tens of percent for the ones that were not). `divergent_path` gives the mean Up mid by minute on both venues over the divergent windows only, split by who said Up, so the "early spike that fades" story can be checked rather than assumed. Measured on the archive 2026-10-27 over 30 days of btc: polymarket.com vs Kalshi diverged on 48 of 2,847 windows (1.69%, interval 1.27-2.23), spread over 27 of 31 UTC days, 0.19% of windows decided by the end and 17-29% of the ones still undecided; Polymarket US vs Kalshi on 0 of 1,838. asset btc | eth | sol | xrp | bnb (bnb has no pair: Kalshi only); days 1-90 (default 30), capped by what the archive holds (it starts 2026-09-22 for polymarket.com and Kalshi, 2026-10-07 for Polymarket US). Read-only; cheap enough to call, it reads several thousand archive rows.

输入参数daysasset

archive_evidence

Archive Evidence

What did a web page say on a given date? Finds the archived capture of a URL nearest that date across the Internet Archive Wayback Machine, Common Crawl and Arquivo.pt, reads it, and returns the readable text (HTML stripped) with the capture timestamp, a link to the archived copy, and the GAP between the date asked for and the capture actually used (e.g. "Captured 1.5 day(s) before the requested date"). One call replaces the find-capture, fetch-record, parse-HTML chain. If no archive holds a capture within max_gap_days (default 30) it answers status "no_capture" and names the nearest capture before and after the date with their gaps, so a distant capture is never passed off as the page on that date. Every archive's outcome is listed in sources[]; one that timed out or errored says so with its upstream status, and if all of them failed the answer is error "archives_unavailable", not no_capture. Captures are immutable and cached by capture id; served_from says whether the text came from cache or upstream. Use archive_compare to see what changed between two dates.

输入参数url必填date必填max_charsmax_gap_days

archive_compare

Archive Compare

What changed on a web page between two dates? Resolves the archived capture nearest each date (Internet Archive Wayback Machine, Common Crawl, Arquivo.pt), extracts the readable text of both, and returns a text-level diff: the segments removed and added, a similarity score, and both capture timestamps with their gaps from the requested dates. It diffs readable text, not markup, so a restyled page with the same words reads changed:false. Identical captures answer changed:false with the reason (same capture, identical content digest, or identical text), never an empty diff. A date with no capture within max_gap_days (default 30) answers status "no_capture", naming which side is missing and the nearest captures to it. Typical uses: how a privacy policy, terms of service, pricing or product page changed; whether a statement was on a page at a given time.

输入参数url必填date_a必填date_b必填max_gap_days

research_row

Research Row

Claygent-style per-row research: answer ONE question about ONE company and return a JSON object matching your output_schema, with every field wrapped in its own evidence — {value, evidence_url, quote, status}. status is NEVER self-reported by the model: "found" means this code independently verified the model's quote is a VERBATIM substring of text actually fetched; "inferred" means a value was given but the quote could not be verified; "not_established" means no source answered the field, and its value is always null — never guessed, never a blended score. Sources: "web" fetches the company's own site (entity.domain required — homepage, /about, /leadership) via fetch_url; "catalog" checks entity_profile (SEC EDGAR; resolved:false for a private company is expected, not a failure); "both" (default) tries both. max_cost (USD, default 0.02, max 0.50) scales how many pages are fetched and refuses up front if it is too small to pay for even one extraction call (floor $0.002) — never silently overspends. A row where every source comes back empty costs nothing: every field is mechanically not_established with NO model call made. For a boolean/derived field (e.g. "does this company sell to healthcare"), the quote only has to SUPPORT the value — a descriptive sentence about customers/products counts, the source need not state the answer verbatim. leadership_page_status ("fetched"|"not_found"|"not_attempted", plus leadership_note) says plainly whether a leadership/team page was actually read, so a named-person field (head_of_sales) coming back not_established is distinguishable from "this company just doesn't publish one" vs. "we never checked". model_output_empty:true means the model returned nothing usable (a transport/budget problem) — every field is not_established for THAT reason, never read as 20 individual "no" judgments. Use with a fixed question + schema across many rows for "Claygent over N companies with a hard cost cap" (composes with batch callers). For picking f

输入参数entity必填sourcesmax_costquestion必填output_schema必填

classify_row

Classify Row

Cheap categorization: given a company and a list of candidate labels, decide which labels apply — the most common GTM/AI usage shape (tagging a list by industry, ICP fit, etc.), one small model call. Same evidence contract as research_row: each label comes back {label, applies, evidence_url, quote, status: found|inferred|not_established} — "found" only when the model's quote is independently verified as a verbatim substring of the text used. Pass text directly (cheapest — no fetch) or entity.domain to fetch the homepage once as a fallback. No text and no domain means every label is not_established with no model call made.

输入参数textentity必填labels必填

suggest_questions

What Can I Ask Pipeworx?

What can I ask Pipeworx? / what is Pipeworx good for? / what can you do? / give me ideas / show me examples / getting started / what data do you have? — the onboarding entry point for an agent that just connected and wants to know what is worth asking. Returns category-bucketed example questions (company financials, drugs & clinical trials, economics, real estate, prediction markets, weather, government & patents, science & academia, news) — each with the exact tool + argument shape that answers it, drawn from the live catalog of thousands of tools. Call with no arguments for the full spread, or pass `topic` (e.g. "finance", "pharma", "betting") to focus. Use this FIRST when you do not yet know what Pipeworx can do for you, or to learn how to call the meta-tools (ask_pipeworx, entity_profile, compare_entities, etc.).

输入参数topic

generate_llms_txt

Generate llms.txt

Generate a production-ready llms.txt file for any URL so AI crawlers (ChatGPT, Claude, Perplexity) can index the site cleanly. Fetches the page, extracts title/description/key links, and emits the standard llms.txt markdown format. Output is a single text blob ready to drop at site-root/llms.txt. Useful for: getting a client's site indexed by AI, drafting llms.txt for your own project, or auditing how an AI crawler would see a competitor.

输入参数url必填max_links

ai_visibility_check

AI Visibility Check

Probe one or more LLMs for what they know about a business / brand / product / topic and score visibility (0-100) per model. Default model is Workers AI Llama-3.3-70b (free); pass `_apiKey` to also probe Anthropic (BYO key — you pay Anthropic directly for those calls). Returns per-model {score, confidence, signals, raw_response} + a combined view. Useful for AI-marketing audits, pre-launch brand checks, competitive monitoring.

输入参数entity必填models_apiKeycontext

scan_competitor_ai_presence

Scan Competitor AI Presence

Compare AI visibility across multiple entities side-by-side. Probes each entity (your brand + N competitors) with ai_visibility_check, ranks by score, surfaces which is most/least recognized. Useful for competitive AI-marketing audits: "does Claude know about us as well as our competitors?". Returns ranked list with score, confidence, signal density per entity.

输入参数models_apiKeycontextentities必填

pipeworx_feedback

Send Pipeworx Feedback

Tell the Pipeworx team something is broken, missing, or needs to exist. Use when a tool returns wrong/stale data (bug), when a tool you wish existed isn't in the catalog (feature/data_gap), or when something worked surprisingly well (praise). ONLY for tools served by this Pipeworx connection — if the tool came from a different MCP server in your client (another vendor's Gmail, Splunk, Slack, etc. connector), we cannot fix it and reporting it here only delays you; file it with that server instead. Not sure? Pipeworx tool names are the ones this connection lists. Describe the issue in terms of Pipeworx tools/packs — don't paste the end-user's prompt. Filing without an account returns a `claim_token`; pass it back later as pipeworx_feedback({claim_token:"pwfb_…"}) to read whether it was fixed and what changed. The team reads digests daily and signal directly affects roadmap. Rate-limited to 5 per identifier per day. Free; doesn't count against your tool-call quota.

输入参数typecontextmessageclaim_token

remember

Remember

Save data the agent will need to reuse later — across this conversation or across sessions. Use when you discover something worth carrying forward (a resolved ticker, a target address, a user preference, a research subject) so you don't have to look it up again. Stored as a key-value pair scoped by your identifier. Authenticated users get persistent memory; anonymous sessions retain memory for 24 hours. Pair with recall to retrieve later, forget to delete.

输入参数kvkey必填datanametextlabelvalue必填content

recall

Recall

Retrieve a value previously saved via remember, or list all saved keys (omit the key argument). Use to look up context the agent stored earlier — the user's target ticker, an address, prior research notes — without re-deriving it from scratch. Scoped to your identifier (anonymous IP, BYO key hash, or account ID). Pair with remember to save, forget to delete.

输入参数kkeynamelabel

forget

Forget

Delete a previously stored memory by key. Use when context is stale, the task is done, or you want to clear sensitive data the agent saved earlier. Pair with remember and recall.

输入参数kkey必填namelabel

ashares_limit_up

Ashares Limit Up

The Chinese A-share market's LIMIT-UP board (涨停板) for a trading day — how many stocks hit their daily price limit (+10%, or +20% for STAR/ChiNext) and the ranked list of those stocks. Answers 'how many A-shares hit limit up today', 'top limit-up stocks', 'which stocks 涨停'. Each stock includes code, name, price, change %, turnover (成交额), float market cap, turnover rate (换手率), consecutive-board count (连板数 lbc), first/last seal time, seal fund (封板资金), and industry (行业). Source: Eastmoney (keyless).

输入参数datelimit

ashares_limit_down

Ashares Limit Down

The Chinese A-share market's LIMIT-DOWN board (跌停板) for a trading day — how many stocks hit their daily DOWN price limit (-10%, or -20% for STAR/ChiNext) and the ranked list of those stocks. Answers 'how many A-shares hit limit down today', '跌停家数', 'which stocks 跌停', 'limit-down stock count for a China A-share trading day' — the counterpart to ashares_limit_up, together giving market-wide limit-up/limit-down breadth. Each stock includes code, name, price, change % (negative), turnover (成交额), float market cap, turnover rate (换手率), seal fund (封板资金), last seal time, industry (行业), and P/E. Source: Eastmoney (keyless).

输入参数datelimit

ashares_margin_financing

Ashares Margin Financing

China A-share margin financing and securities lending balance (融资融券余额/两融余额) — the market-wide leverage gauge: aggregate financing balance (融资余额, money borrowed to buy stock), securities-lending balance (融券余额, shares borrowed to short), and their combined total (融资融券余额), for the Shanghai (SSE) and Shenzhen (SZSE) exchanges separately and combined, with day-over-day change. Answers '融资余额', '两融余额', '融资融券余额', 'margin financing balance', 'China A-share margin debt', 'how much margin debt is in the A-share market', 'margin balance day over day change'. Pass a 6-digit SZSE code (0/3/159-prefixed) in `symbol` for that stock's own 融资余额/融券余额/融资融券余额 instead of the market aggregate — SSE (6xxxxx) per-stock detail is not available via any verified keyless route, so a SH code returns a clear not_available message rather than silently substituting. Margin data publishes T+1 (today's figures appear tomorrow morning); a request for a day with nothing published yet or a non-trading day (weekend/holiday) automatically falls back to the last trading day that published, and says so. Amounts in CNY (converted from each exchange's native 元/亿元/万元 units and labelled). Source: SSE query.sse.com.cn (keyless) + SZSE www.szse.cn ShowReport CATALOGID=1837_xxpl (keyless).

输入参数datesymbol

ashares_market_snapshot

Ashares Market Snapshot

Overall snapshot of the Chinese A-share market — the headline index levels (Shanghai Composite, Shenzhen Component, ChiNext, STAR 50, CSI 300) with change %, day range and turnover, plus market-wide breadth as a sentiment gauge: how many stocks hit limit-up (涨停) and limit-down (跌停) today. Answers 'how is the China A-share market doing', 'Shanghai Composite today', 'A-share market snapshot at close', 'how did Chinese stocks close', '涨跌停家数', 'limit-up limit-down counts today'. For the ranked pools use ashares_limit_up / ashares_limit_down; for market-wide margin financing leverage use ashares_margin_financing. Source: Sina + Eastmoney (keyless).

无需输入参数。

ashares_quote

Ashares Quote

Real-time quote(s) for Chinese A-share stocks by 6-digit code (Shanghai 6xxxxx, Shenzhen 0xxxxx/3xxxxx, STAR 688xxx, ChiNext 30xxxx, Beijing 8xxxxx/4xxxxx). Returns name, current price, change and change %, open, previous close, day high/low, volume, turnover, and the quote timestamp. Accepts one code or a comma-separated list. Example: ashares_quote({ symbols: "600519,000858" }) for Kweichow Moutai and Wuliangye. Source: Sina (keyless).

输入参数symbols必填

ashares_turnover_ranking

Ashares Turnover Ranking

Market-wide ranking of Chinese A-share stocks by turnover / 成交额排名, 成交额前30名, 成交量排名, or 涨跌幅排名 — the whole board (not specific codes), sorted server-side and returned as a ranked list. Answers 'A股成交额前30名', 'top 30 A-shares by turnover today', 'A股成交量排名', 'A-share market-wide ranking by amount/volume/change %', 'which A-shares traded the most today'. Each row has code, name, price, change %, volume (shares), turnover in CNY (成交额), turnover rate %, and industry (行业/板块, when resolvable). Omit `date` (or pass today) for the LIVE board (Sina, real-time). Pass a PAST trading day in `date` for that day's ranking instead of today's — this uses a different, Eastmoney-sourced historical path and only supports `sort:'changepercent'` (涨跌幅排名): no keyless bulk source for a PAST day's turnover amount or volume ranking was found (Sina's live board is the only amount/volume source), so `date` + `sort:'amount'|'volume'` throws a clear error naming that gap rather than silently substituting today's board. A non-trading `date` (weekend/holiday) walks back to the prior trading day automatically.

输入参数datesortboardlimitorder

ashares_capital_flow

Ashares Capital Flow

Per-stock daily main-capital net inflow history (主力净流入 / 超大单+大单净流入, often called '超大单净流入' in retail trackers) for a Chinese A-share stock or ETF — one row per trading day with net inflow broken down by order size: 超大单 (super-large/institutional), 大单 (large), 中单 (medium), 小单 (small), plus 主力净流入 (main = 超大单+大单combined) in both CNY amount and as a % of that day's turnover. Answers '主力净流入历史', '超大单净流入', '000768最近20个交易日的主力资金流向', 'main capital net inflow history for a China A-share stock', 'which days did big money flow into/out of a stock'. A positive net inflow means net buying pressure from that order-size bucket that day, negative means net selling. Source: Eastmoney push2his fflow/daykline (keyless).

输入参数code必填days

ashares_billboard

Ashares Billboard

The Chinese A-share market's daily 龙虎榜 (dragon-tiger list / billboard) for a trading day — stocks flagged for unusual price/turnover deviation, with the top seats' buy/sell/net amounts, plus (when present that day) institution-seat (机构专用) net-buy detail and that day's most-active brokerage branches (营业部) market-wide as a 'top brokerages' signal. Answers '龙虎榜', 'dragon tiger list for a date', 'which stocks were on the billboard on 2026-09-24', '机构净买入', 'institution seat net buys', 'top active brokerage seats'. Each listed stock has the reason it was flagged (EXPLANATION, e.g. daily move ≥7%), close price, change %, and billboard buy/sell/net amounts in CNY; stocks that also had institutional-seat activity that day carry institution_net_buy_cny/institution_buy_seats/institution_sell_seats. A non-trading `date` (weekend/holiday) walks back to the prior trading day automatically. Source: Eastmoney datacenter-web (keyless).

输入参数datelimit

ashares_etf_shares

Ashares Etf Shares

Disclosed fund-share-count (基金份额) and net-asset history for a Chinese-listed ETF — period-end total shares outstanding (期末总份额), the period's subscriptions/redemptions (期间申购/赎回), and period-end net assets (期末净资产), in shares and CNY. Answers '基金份额变动', 'ETF shares outstanding history', '515050规模变动', 'how many shares outstanding does this ETF have over time'. IMPORTANT: this is NOT a daily series — Chinese ETFs publicly disclose 份额 only at quarter-end plus occasional ad-hoc material-change dates (confirmed live for 515050/561980/588170/588200), not every trading day; a `from`/`to` window with no disclosure inside it returns found:false naming the nearest disclosed dates rather than fabricating daily rows. For a daily PRICE series use ashares_daily_history; this tool is share-count/AUM only. Source: Eastmoney fund F10 archive (keyless).

输入参数tocode必填from

ashares_earnings_forecast

Ashares Earnings Forecast

Company-issued earnings guidance (业绩预告) for a Chinese A-share stock — the company's own forecast announcements with predicted profit range (lower/upper bounds in CNY), year-over-year change %, forecast type (略增/预增/扭亏 etc.), and the company's stated reason. Answers '业绩预测', '业绩预告', 'earnings forecast/guidance for a China A-share company like 华工科技 000988'. Most recent reports first. Source: Eastmoney datacenter (keyless).

输入参数limitsymbol必填

ashares_analyst_consensus

Ashares Analyst Consensus

Analyst consensus estimates (盈利预测) for a Chinese A-share stock — per forecast year: consensus EPS, P/E at current price, net profit attributable to parent (归母净利润), and total operating revenue, in CNY. Answers "analyst estimates / 盈利预测 / forecast EPS for a China A-share like 000988". Source: Eastmoney datacenter (keyless).

输入参数symbol必填

ashares_daily_history

Ashares Daily History

Daily OHLCV history (历史日线) for one or more Chinese A-share stocks over a date range — open, high, low, close, volume, and day-over-day change % per trading day. Answers '300418在2026-08-31到2026-09-03的收盘价和涨跌幅', 'daily closes for 600519 last week', 'history for 000858 and 300750 this month', '涨跌幅历史', '历史成交量'. Up to 20 comma-separated 6-digit codes. change_pct is computed from consecutive closes within the returned range (the first row has no prior close in range, so it is null); turnover amount (成交额) is not exposed by this daily-bar source, so amount_cny is reported as "not_available" rather than estimated — use ashares_quote or ashares_turnover_ranking for same-day turnover amount. Source: Tencent/gtimg fqkline (keyless).

输入参数endcodes必填start必填adjust

ashares_intraday_bars

Ashares Intraday Bars

Intraday minute bars (分钟线/分时/分钟K线) for Chinese A-share stocks/ETFs on a given trading日/交易日, with cumulative volume and turnover (累计成交量/累计成交额) computed up to a requested time of day (截至<time>, e.g. 截至11:05) — answers '515050在2026-09-01这个交易日截至11:05的累计成交量和累计成交额', '600519某个交易日截至某时刻的累计成交量和成交额', 'cumulative volume for 600519 up to 11:05 on a past trading day', 'intraday minute bars for an A-share on a specific date'. ashares_quote is realtime-only (today, right now) and ashares_daily_history is end-of-day-only (no intraday granularity) — this tool is for a PAST trading日's intraday trajectory. Returns the interval bars for that day plus cumulative_volume_shares/cumulative_turnover_cny summed from the day's open through `up_to` (or the whole day if `up_to` is omitted). `symbols` takes a bare 6-digit code (e.g. "515050") or the sh/sz/bj-prefixed form, same as ashares_quote. Bounded lookback: the upstream caps total bars at ~1950 regardless of interval, so retention shrinks as the interval shrinks — roughly 8 trading days at 1-minute, 40 at 5-minute (the default), 110 at 15-minute, a year at 30-minute, two years at 60-minute — and it slides forward daily. A `date` older than a result's `earliest_bar_date_available` is out of range for that interval; try a coarser interval, or use ashares_daily_history for daily (not intraday) history further back. Source: Sina (keyless).

输入参数date必填up_tosymbols必填interval

ashares_technical_indicators

Ashares Technical Indicators

Technical indicators for Chinese A-share stocks and ETFs (均线/布林/MACD/KDJ) — MA (moving averages, any windows, default MA5/MA10/MA20/MA60), BOLL (Bollinger Bands, default 20-period ×2 std dev), MACD (DIF/DEA/柱, default 12/26/9), and KDJ (K/D/J, default 9/3/3), computed from this pack's own daily OHLCV history (same source and codes as ashares_daily_history — ETF codes like 515050/588170/561980 work the same as stock codes). Answers '515050通信ETF华夏最近20个交易日MA5/MA10/MA20/BOLL/MACD/KDJ', '603986兆易创新周线MACD是否死叉', 'MA20 and BOLL for an A-share ETF', '布林带', '均线', '金叉死叉'. Internally fetches extra lookback history before `start` so the indicators are warmed up (MA60/MACD need ~60+ trading days of prior data) — only the requested [start, end] range is returned. MACD histogram uses the common Chinese charting convention 柱=2×(DIF−DEA); KDJ smoothing is the standard 3/3 recursive form seeded at 50. Up to 5 comma-separated codes per call (indicator math is heavier than a plain OHLCV pull). Source: Tencent/gtimg fqkline (keyless), same as ashares_daily_history.

输入参数endcodes必填kdj_nstart必填adjustkdj_m1kdj_m2boll_multmacd_fastmacd_slowindicatorsma_windows另有 2 个

ashares_sector_capital_flow

Ashares Sector Capital Flow

China A-share INDUSTRY-SECTOR net capital inflow ranking (行业资金流向排名/板块资金流) for a trading day -- ranks Eastmoney's ~128 industry boards (行业板块) by main-capital net inflow (主力净流入), with the breakdown by order size (超大单/大单/中单/小单 net inflow in CNY), the day's change %, and each sector's single stock with the largest net inflow. Answers '今日行业资金流向排名', 'which industry sectors had the biggest net capital inflow today', '板块资金流排名', 'sector fund flow ranking', 'semiconductor sector money flow today'. This is a DIFFERENT metric from china-exchange-data's ashares_sector_flows, which is SZSE's own official per-industry TURNOVER ranking -- this tool is Eastmoney's vendor-computed NET INFLOW (主力净流入) classification, the sector-level counterpart to this pack's own per-stock ashares_capital_flow. A non-trading date (weekend/holiday, or before today's session has published -- publication usually lags a day) walks back automatically to the nearest prior trading day with data. Source: Eastmoney datacenter (keyless).

输入参数datesortlimitorder

ashares_stock_connect

Ashares Stock Connect

Stock Connect (沪深港通) daily channel statistics: GROSS TURNOVER for Northbound (mainland A-shares bought via Hong Kong -- 沪股通/深股通/combined) and Southbound (Hong Kong-listed stocks bought by mainland investors -- 港股通沪/港股通深/combined), plus a best-effort per-stock "top traded stocks" list for Northbound. Answers "northbound stock connect turnover today", "沪深股通成交额", "how much did northbound/southbound trade today", "stock connect top traded stocks". IMPORTANT: mainland regulators (CSRC) stopped publishing DAILY net fund-flow figures (net buy/sell, daily inflow, remaining quota) for NORTHBOUND Stock Connect in August 2024 -- every Northbound channel's net_flow field says so explicitly rather than returning null as if it were real data; gross turnover is unaffected and is published daily for every channel. Southbound net flow is still disclosed by Hong Kong Exchanges and Clearing and is returned when available. A turnover-ranked top-10-stocks list for Northbound depends on an Eastmoney report that has returned a server error on every live probe during this build -- the tool still attempts it live on every call and reports plainly under top_traded_stocks.northbound whether real data came back, rather than silently omitting the field or faking rows. Source: Shanghai Stock Exchange / Shenzhen Stock Exchange / Hong Kong Exchanges and Clearing, via Eastmoney datacenter (keyless).

输入参数date

版本历史

13
  1. v0.2.1最新Oct 31, 2026
  2. v0.2.0Oct 29, 2026
  3. v0.1.13Oct 24, 2026
  4. v0.1.12Oct 20, 2026
  5. v0.1.11Oct 18, 2026
  6. v0.1.10Oct 18, 2026
  7. v0.1.9Oct 10, 2026
  8. v0.1.8Oct 9, 2026
  9. v0.1.7Oct 8, 2026
  10. v0.1.6Oct 7, 2026
  11. v0.1.5Sep 26, 2026
  12. v0.1.4Sep 25, 2026
  13. v0.1.2Sep 16, 2026

评分

已满足适用检查项的 100%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通必需25 分
  • 已声明认证方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分