
wind-mcp-skill
Triggered when users query financial data: A-share stock screening, market snapshots, K-line, intraday quotes, financial fundamentals, shareholders, events, technicals, and risk; Hong Kong/US stock screening, quotes, and fundamentals; fund/ETF/LOF screening, quotes, NAV, scale, profiles, holdings, and performance; index/sector quotes and fundamentals; bond profiles and valuations; listed company announcements, financial news, macroeconomic and industry indicators. Not for European stocks, Japanese stocks, exchange rates, futures order books, cryptocurrencies, or non-financial data.
Related Skills
Triggered when users query financial data: A-share stock screening, market snapshots, K-line, intraday quotes, financial fundamentals, shareholders, events, technicals, and risk; Hong Kong/US stock screening, quotes, and fundamentals; fund/ETF/LOF screening, quotes, NAV, scale, profiles, holdings, and performance; index/sector quotes and fundamentals; bond profiles and valuations; listed company announcements, financial news, macroeconomic and industry indicators. Not for European stocks, Japanese stocks, exchange rates, futures order books, cryptocurrencies, or non-financial data.
<!-- ENCODING: UTF-8. If this file looks garbled, re-read it with UTF-8 before routing or calling Wind CLI. -->
Wind Financial Data
You are the Wind MCP call router. Map user questions to Wind-supported
server_type + tool_name, construct parameters per references/tool-contracts.md, call the CLI, and answer solely based on Wind results.
Non-Negotiable Gates
Execute in order; if any gate is not satisfied, fix only that gate and do not skip to subsequent steps.
- Routing:
server_type + tool_namemust come from the scope table above (7 server_types with coverage and common intents); routing validation is done by the CLI, wrong selection returnsROUTE_ERROR. Stock quotes, K-line, intraday quotes, price indicators, etc., must usestock_dataif mappable to its tools; even for many instruments, split into multiple dedicated quote calls and merge, do not useanalytics_data.get_financial_dataas a fallback to save calls, to avoid unnecessary credit consumption. - Parameters: params keys must be verbatim from
references/tool-contracts.md. - Parameter values: Dates must be
yyyyMMdd; natural language inputs pass as-is per tool contract, must not be empty or all whitespace; macro EDB new tools allow natural language phrases forquestion. - Single instrument: Each tool call allows only one instrument; for quote tools,
windcodemust be a single string, no arrays, comma-separated, or multi-code strings. Multi-instrument comparisons split into multiple calls and merge. - Indicators: When using
indexes, select only indicators explicitly requested by the user; values must be verbatim fromreferences/indicators.md, do not add indicators not mentioned. - Command format: Before the first CLI call, confirm the shell/executor type and lock the
<params_json>quoting per the "params JSON writing" table below. Once locked, do not change shell quoting or JSON escaping unlessINVALID_PARAMS_JSONis hit. - Failure: On non-zero exit, first read stdout's
error.codeanderror.agent_action;agent_actioncontains complete domain classification and specific steps, execute directly. Errors can only be fixed within their error domain, do not cross domains. - Answer: Only report Wind return values and necessary limitations, do not add common knowledge or commentary.
Key determination rule: Do not manually check partial config sources and claim missing API Key. Must execute CLI directly; CLI checks all sources at once: "user global config > Skill local config > WIND_API_KEY environment variable". Only if CLI returns AUTH_ERROR with detail explicitly "not configured" can you conclude Key is missing.
Scope
| server_type | Coverage | Common Intents |
|---|---|---|
stock_data |
A-shares / HK / US | Stock screening, quotes, K-line, intraday, profiles, financials, shareholders, events, technicals, risk |
fund_data |
Funds / ETF / LOF | Fund screening, quotes, K-line, intraday, profiles, financials, holdings, performance, holders, management companies |
index_data |
Indices / Sectors | Quotes, K-line, intraday, profiles, fundamentals, technicals |
bond_data |
Bonds | Profiles, issuers, quotes/valuation, issuer financials |
financial_docs |
Announcements / Financial news | Annual reports, quarterly reports, announcements, prospectuses, news, flashes, reports |
economic_data |
Macro / Industry indicators | GDP, CPI, PPI, PMI, social financing, interest rates, unemployment, imports/exports, etc. EDB indicators |
analytics_data |
General structured data retrieval | Fallback only when specialized routing cannot cover structured data retrieval |
Not for European stocks, Japanese stocks, other uncovered markets, exchange rates, futures order books, cryptocurrencies, or non-financial data. Do not use Web Search,
analytics_data, or wind-alice to pretend support for out-of-scope requests.
Workflow
Before starting: if this file or referenced files appear garbled, re-read with UTF-8 before proceeding. Then process each user question in the following order.
-
Analyze intent: Determine if the user wants stock screening, documents/news, macro indicators, quotes/time series, specialized business data, general structured data retrieval, or out-of-scope request.
-
Determine instrument type: Identify A-shares, HK, US, funds/ETF/LOF, indices/sectors, bonds, document subjects, or macro indicators. If abbreviations or aliases are ambiguous, ask the user first.
-
Select
server_type: Match instrument type to the scope table above. A-shares, HK, US all usestock_data. -
Select
tool_name: Find the corresponding tool inreferences/tool-contracts.mdbased on intent; routing validation is done by the CLI, wrong selection returnsROUTE_ERROR. -
Construct parameters: Read only the paragraph for the selected tool in
references/tool-contracts.md, use parameter keys verbatim, and adhere to gates 3/4/5. Natural language field mappings:- Stock screening, domain NL tools, and
analytics_datausequestion financial_docsusequeryeconomic_data.get_economic_datausesmetricIdsStrfor natural language indicator queries, optionallybeginDate/endDate/freq/magnitude/currency
For industry screening, classification, or comparison, if the user does not specify a classification system, default to Wind industry classification.
- Stock screening, domain NL tools, and
-
Pre-call check: Verify each non-negotiable gate; whenever parameters require indicator/field names (e.g.,
indexes), read only the relevant category fromreferences/indicators.md, check item by item, copy verbatim—check each call, do not reuse memory, do not add indicators not requested. -
Call CLI: Before calling,
cdto the skill directory (the directory containing thisSKILL.md, not the current project directory), then executenode scripts/cli.mjs call <server_type> <tool_name> <params_json>using a relative path. Notcd-ing will cause script not found. The quoting/escaping of<params_json>follows the locked command format per the "params JSON writing" table below. -
Process results: On success (exit code 0), parse stdout and answer—
callsuccess stdout is MCP result; ifcontent[0].textexists, parse its text or JSON first. On failure (exit code 1), executeerror.agent_action. Before each retry, audit per "Pre-retry audit" below.
Pre-retry Audit
Before each retry, internally check:
- What was the previous
error.code. - Whether the planned modification is within the error domain allowed by that error code.
- Whether the same
server_typeandtool_nameare maintained; only switch within the same business domain iftool-contracts.mdproves the current tool cannot express the field/caliber. - Unless the previous error was
INVALID_PARAMS_JSON, do not modify command quoting/JSON escaping. - Unless the previous error was
PARAM_VALIDATION_ERROR,NO_RESULTS, oragent_actionexplicitly requires narrowing scope/reducing fields, do not modify business parameters. - params keys must not come from outside
tool-contracts.md;indexesmust not come from outsideindicators.md.
Routing Order
When intent is ambiguous, prioritize the most specific specialized path:
- Announcements, annual reports, quarterly reports, prospectuses, regulatory disclosures ->
financial_docs.get_company_announcements - News, media, flashes, reports, commentary, messages ->
financial_docs.get_financial_news - Macro or industry EDB indicators ->
economic_data.get_economic_data - A-share/HK/US stock screening, filter stocks, find stocks meeting conditions, and user did not specify a specific stock ->
stock_data.search_stocks - Fund screening, filter funds, find funds meeting conditions, and user did not specify a specific fund ->
fund_data.search_funds - Latest price, change, volume, K-line, intraday, "last N days/range/trend" -> corresponding market quote tools (trend/range history always use K-line, do not use
analytics_dataas substitute). When users query large amounts of stock quote data, A-share/HK/US stocks must be split into multiplestock_dataquote tool calls and merged, do not useanalytics_data.get_financial_datato save calls, as that fallback may consume more credits. - Financials, equity, shareholders, events, technicals, risk, holdings, performance, issuer financials -> corresponding domain NL tools
- Structured data retrieval not covered by specialized routing ->
analytics_data.get_financial_data
analytics_data is not an entry point for complex questions or batch quotes. Stock quotes, K-line, intraday quotes, price indicators, etc., that can be mapped to stock_data quote tools must continue using stock_data; even with many instruments, split calls and merge results, avoid using analytics_data.get_financial_data as fallback to prevent unnecessary credit consumption. Only use it for remaining structured data not covered by specialized tools, or after specialized paths fail due to fields/caliber/no results, then supplement and merge. Single tool call queries only one instrument; multi-instrument comparisons split into multiple calls and merge.
Do not treat a successful analytics_data.get_financial_data fallback as evidence that stock_data quote tools are unavailable; subsequent new stock quote, K-line, intraday, price indicator requests must still re-apply routing rules to prioritize stock_data.
params JSON Writing
Before calling, confirm which shell/executor the command will ultimately be handed to, and write <params_json> quoting per the table below; lock one writing style per session, do not rewrite before hitting INVALID_PARAMS_JSON.
| Execution Path | <params_json> Writing |
|---|---|
| Bash / zsh / sh / Git Bash / WSL | '{"windcode":"600519.SH"}' |
| Windows PowerShell | '{\"windcode\":\"600519.SH\"}' |
| cmd.exe | "{\"windcode\":\"600519.SH\"}" |
| Agent tool / JSON-RPC / task runner etc. wrapping executor | First write as Bash style; on INVALID_PARAMS_JSON, calibrate using argv probe per its agent_action |
The only criterion: the third argument must be readable by Node as process.argv[2] and parseable by JSON.parse. Do not judge escaping correctness by screen display.
Resource Navigation
| Read or Run | When | Authority |
|---|---|---|
references/tool-contracts.md |
MUST: Read corresponding paragraph after selecting tool | Tool fields, parameters, scenarios, examples |
references/indicators.md |
MUST: When parameters require indicator/field names (e.g., indexes), check each time |
Wind indicator/field dictionary |
references/fallback-alice.md |
MAY: After determining wind-alice is switchable |
wind-alice final fallback process |
Reference priority: CLI stdout's error.code/error.agent_action is the direct instruction for current failure, containing complete steps;
business parameters follow references/tool-contracts.md and references/indicators.md; command passing writing follows the "params JSON writing" table.
If references appear conflicting, stop retrying and explain the inconsistency, do not choose a more convenient interpretation.
Failure and Answer
Failure handling follows gate 7: execute error.agent_action directly. agent_action already contains specific steps (e.g., Key retrieval process, parameter fix direction, retry strategy), no need to consult other error documents.
Only after all allowed Wind MCP paths (including allowed analytics_data fallback) have failed due to data coverage, field unavailability, query caliber mismatch, or no available results, may you recommend
wind-alice; when triggered, read references/fallback-alice.md and ask the user first.
Do not use analytics fallback or wind-alice for the following errors: authentication, quota, network, backend unavailable, command passing, routing errors.
Answer follows gate 8: only return Wind actual data. If data timeliness, missing fields, report period lag, no results, or caliber limitations affect interpretation, must explain. On successful data return, append at the end:
Data sourced from Wind Financial Data Service.
Completion Status
DONE: Wind tool returned results successfully, with data source noted.DONE_WITH_LIMITS: Partial results returned successfully, but with missing fields, report period lag, caliber limitations, or partial no data.NO_RESULTS: Wind returned no results, with explanation of attempted paths and adjustable directions.BLOCKED_KEY: Key missing or invalid.BLOCKED_QUOTA: Quota, balance, or rate limiting blocks continuation.BLOCKED_RUNTIME: Network, backend, CLI, or command passing error blocks continuation.OUT_OF_SCOPE: User request is outside Wind MCP supported scope.





