<!-- ENCODING: UTF-8. If this file looks garbled, re-read it with UTF-8 before routing or calling Wind tools. -->
Wind Financial Data
Retrieve data by calling Wind's 7 MCP services via local CLI, and answer only based on the returned results. Only report Wind return values and necessary limitations, without supplementing common knowledge or commentary.
Each question is processed in four steps: ① Route determination → ② Send command → ③ Read receipt → ④ Wrap up. Between steps ② and ③, you can correct parameters according to the error information in the receipt and call again. Before each re-call, go through the self-check items in Section 3.
1. Route Determination
First select
according to the underlying asset type, and only read the contract for that row; all parameters shall be based on this contract. Do not read contracts from other domains, and do not fill in parameter names or field values from memory.
| Coverage | Required Contract |
|---|
| Stock screening, market quotes, K-line, minute-level quotes, profiles, financials, shareholders, events, technical indicators, risk | |
| Fund / ETF / LOF screening, market quotes, K-line, minute-level quotes, profiles, financials, holdings, performance, holders, companies | |
| Index / sector market quotes, K-line, minute-level quotes, profiles, fundamentals, technical indicators | |
| Bond profiles, bond issuers, market quotes and valuation, issuer financials | |
| Announcements, annual reports, quarterly reports, prospectuses, financial news | references/financial-docs.md
|
| Macro, industry and exchange rate EDB indicators | |
| Cross-asset aggregation, weighted average, ranking, composite indicator derivation | |
When the intent may be ambiguous, arbitrate in the following order:
- Announcements, annual reports, quarterly reports, prospectuses, regulatory disclosures →
financial_docs.get_company_announcements
- News, flash updates, reports, commentary →
financial_docs.get_financial_news
- Macro, industry or exchange rate EDB indicators (production and sales volume, CPI, interest rates, exchange rate indicators, etc., even if the word "macro" does not appear) → For indicator meta information / code confirmation only, use
economic_data.search_economic_indicator
; for specific numerical time series, use economic_data.query_economic_indicator_data
- Screening requests without specifying specific underlying assets → in the corresponding domain; returns calculation results, not entity lists.
- Latest price, price change percentage, trading volume, K-line, minute-level line, interval trend → Use market quote tools in the corresponding domain; historical intervals always use K-line.
- Finance, share capital, shareholders, events, technical indicators, risk, holdings, performance → Use natural language tools in the corresponding domain.
If the underlying asset type or intent does not fall into any row of the above table, directly return
and explain.
Do not disguise support with Web Search, or .
handles cross-asset aggregation, weighted average, ranking and composite indicator derivation. It is not an entry point for complex questions, nor for batch market quotes — market quotes, K-line, minute-level quotes and price indicators must all use specialized tools in the corresponding domain. If there are many underlying assets, split into multiple calls and merge the results;
switching to will neither reduce the number of calls nor consume more points. Getting data with it last time does not justify skipping specialized tools next time. It can only be used for supplementary retrieval when specialized tools cannot cover the remaining structured data due to fields, caliber or no results.
When industries are involved and the user does not specify a classification system, Wind industry classification is used by default.
2. Send Command
First
to the directory where this
is located (
not the current project directory), then execute with a relative path:
bash
node scripts/cli.mjs call <server_type> <tool_name> '<params_json>'
A complete example that can be run directly:
bash
node scripts/cli.mjs call stock_data get_stock_price_indicators '{"windcode":"600519.SH"}'
Parameter values must always be obtained from the contract, and must not be extrapolated from this example.
Parameter passing: For POSIX shell, inline
is preferred; for non-POSIX environments (PowerShell / cmd / wrapped by executors such as workbuddy, Codex, etc.), always generate a UTF-8 JSON parameter file to
scripts/request-<unique suffix>.json
, pass it in as
@scripts/request-<unique suffix>.json
, and delete it after the call. Do not reuse shared files, and do not generate them in the skill root directory.
Key: Do not claim there is no API Key just by checking some configuration sources. You must run it once first; only when
is returned and it is clearly unconfigured can you determine that it is missing, and handle it according to the instructions in the envelope.
Batch and concurrency: Serial by default (concurrency 1). When you need to call item by item for 2 or more underlying assets, first send only the first one as a probe. Only when the probe successfully returns data and no error envelope appears, continue with the rest; if the probe returns an error envelope, immediately terminate this batch, and do not spread the same call to other underlying assets. Different
or different parameter structures are grouped separately, and each group sends one probe. When the user explicitly requires concurrency, the upper limit is 10. Once a call returns
or
, stop new requests and resume serial execution.
The
parameter of price indicator tools (
get_stock_price_indicators
/
get_fund_price_indicators
/
get_index_price_indicators
) supports multiple underlying assets separated by commas,
up to 50 per call; if there are more than 50, split into multiple batches (≤50 per batch) and merge the results. This upper limit constrains "the number of codes in a single call", which is independent of the above concurrency upper limit of 10 (which constrains "the number of concurrent calls at the same time"). When requesting a wider set of indicators (more fields in
), reduce the number of codes per batch accordingly, as the response size grows with "number of codes × number of fields".
3. Read Receipt
The stdout of each call has only two forms: a data object on success, and an error envelope with
on failure.
Success: stdout is a data object, the backend result is in
(mostly JSON strings), and the CLI additionally attaches a
. Read it directly; if
exists, prioritize parsing the text or JSON in it.
- The unit and magnitude of numerical values shall be based on the metadata included in the response: for market quote types, it is in , column definitions may include , and for EDB, it is in and . If the metadata is not provided, keep the original value and state that the unit is unknown. Do not convert it yourself.
Failure: stdout is
{ "ok": false, "code": "...", "message": "..." }
. The
of local/parameter/network errors indicates the cause (
,
,
,
,
,
,
,
,
,
,
,
); the
of interface layer errors is fixed as
, and
is the original interface text. Explain to the user based on this, or correct and re-call according to the self-check below.
Self-check before re-calling after correction (check item by item):
- Clarify the and of the last call.
- Keep the same and ; you can only switch within the same business domain if the current contract proves that the tool cannot express the required fields or caliber.
- Unless the error is , do not modify command quotes or JSON escaping.
- Unless the error is (including missing required parameters, type, enumeration, paired/mutually exclusive, date order and other parameter issues), do not modify business parameters; only correct the fields indicated in .
- Parameter names and field values must come from the current domain contract.
4. Wrap Up
When the underlying asset is not recognized or NER fails, ask the user for the accurate full name or Wind standard code. Do not add exchange suffixes yourself or guess names as codes. When there is a parameter error, prioritize correcting according to the expected type, format, enumeration or field set given in
; ask the user only when it cannot be uniquely determined.
Authentication, quota, network, backend unavailability, command delivery, routing errors: report directly,
do not switch to or .
should not be used unless necessary: only when all specialized Wind paths fail due to data coverage, unavailable fields, caliber mismatch or no results, and after explaining the tried paths and failure reasons to the user and obtaining consent, then forward the user's original question as is; if the user refuses, stop and return the tried paths and key error codes. When
is not installed on the client, you directly execute the installation command after obtaining consent (not just inform the user):
npx skills add Wind-Information-Co-Ltd/wind-skills --skill wind-alice -g -y
; for domestic networks in China, use the mirror instead:
npx skills add https://gitee.com/wind_info/wind-skills.git --skill wind-alice -g -y
; remove
if installing only to the current project. Forward after successful installation; if installation fails, report the original error of the command, and do not give up silently.
When data is successfully returned, attach a data source statement at the end, with the language consistent with the user's question (Chinese for Chinese questions, English for English questions):
数据来源于万得 Wind 金融数据服务。
Data sourced from Wind Financial Data Service.
Completion status:
,
,
,
,
,
,
.