CAUTION version 1.0.12 · audited 2026-09-17
This skill is a wrapper around Eastmoney's Miaoxiang financial data service. It reads the EM_API_KEY environment variable, sends the user's natural-language query to Eastmoney for entity recognition and data lookup, parses returned tables, and writes Excel and Markdown result files under the current working directory. The documented behavior matches the declared purpose, and no hidden downloads, shell execution, wallet access, or prompt-injection payloads were found. The main caution is that the Python function accepts custom API base URLs and will send the API key to a supplied URL; the skill card itself discloses this risk. Users should also review the instruction to persist EM_API_KEY in a shell profile.
| Declared purpose | Natural-language querying of Eastmoney financial data across A-shares, Hong Kong and US stocks, ETFs, funds, bonds, indices, and related entities, then exporting results as Excel and Markdown files for investment research and market analysis. |
| Observed behavior | The script requires EM_API_KEY, builds HTTP POST requests to Eastmoney's entity recognition and searchData endpoints, sends the API key in a request header, parses dataTableDTOList JSON into table rows, and writes .xlsx and .md files under `./miaoxiang/mx_finance_data`. It chooses direct query for up to 5 recognized entities and batch query for more, with a maximum of 500 entities. It does not contain download-and-execute, base64 payloads, wallet handling, or automatic execution of shell commands. |
| Verdict, rules only | CAUTION · reads credential-like environment variables: EM_API_KEY; touches persistence (cron, shell profile, autostart) |
| Verdict, AI | CAUTION |
| Final verdict | CAUTION (never better than either pass) |
| capability | vs purpose | detail |
|---|---|---|
| network | needed | Sends HTTPS POST requests to Eastmoney endpoints `ai-saas.eastmoney.com/proxy/...` to recognize entities and fetch financial data. |
| credentials | needed | Reads EM_API_KEY from the environment and transmits it in the `em_api_key` header to authenticate to Eastmoney. |
| filesystem_write | needed | Writes .xlsx and .md files under `cwd()/miaoxiang/mx_finance_data`; this is the documented output. |
| install_packages | needed | Installs Python packages `httpx pandas openpyxl` via pip3 for HTTP requests, parsing, and Excel output. |
| shell | needed | SKILL.md provides manual shell commands for configuring the key, installing dependencies, and running the script. |
| persistence | exceeds purpose | SKILL.md tells users to add `export EM_API_KEY=...` to ~/.zshrc or ~/.bashrc, which persists the secret across shell sessions; the package does not perform this automatically. |
| severity | finding |
|---|---|
| info | Reads API key from environment The script requires this secret and refuses to run when it is missing (lines 48-49). The key is later used as the `em_api_key` header for API authentication. scripts/get_data.py:47 EM_API_KEY = os.environ.get("EM_API_KEY", "") |
| info | Default Eastmoney data endpoint This is the default searchData URL. The entity recognition endpoint is defined two lines later at line 76 as `https://ai-saas.eastmoney.com/proxy/entity/saas`. scripts/get_data.py:73 "https://ai-saas.eastmoney.com/proxy/b/mcp/tool/searchData" |
| medium | Custom API base URL can receive the API key The main query function accepts `api_base` and `entity_api_base` (lines 675-676). If called with an untrusted URL, the subsequent request still includes the `em_api_key` header (line 727). The CLI does not expose the override, but this Python function does. `skill-card.md` line 25 discloses the same risk. scripts/get_data.py:688 url = api_base or DEFAULT_SEARCH_API_URL |
| low | API key is sent as a request header The key is included in POST requests to the selected data or entity API base URL. This is necessary for legitimate Eastmoney calls, but becomes sensitive if combined with the custom base URL override. scripts/get_data.py:727 "em_api_key": api_key, |
| info | Writes Markdown result file locally The script also writes an Excel workbook at lines 642-648. Files are placed under `Path.cwd()/miaoxiang/mx_finance_data` per line 90, matching the documented output. scripts/get_data.py:650 md_path.write_text(_tables_to_markdown(tables), encoding="utf-8") |
| low | Instructs persisting API key in shell profile SKILL.md lines 91-104 tell macOS and Linux users to add the key to `~/.zshrc` or `~/.bashrc` and then source the file. This is a manual step that stores the secret on disk across sessions. SKILL.md:92 export EM_API_KEY="your_api_key_here" |
| info | Installs Python dependencies These packages are used for HTTP requests, data handling, and Excel generation. The metadata `install` block at lines 10-16 declares the same dependencies. SKILL.md:111 pip3 install httpx pandas openpyxl --user |
| info | Publisher discloses endpoint-override risk This matches the optional `api_base`/`entity_api_base` parameters in scripts/get_data.py. The card's mitigation is to use the documented CLI path and avoid custom endpoints. skill-card.md:25 Risk: An undocumented API endpoint override can expose EM_API_KEY if invoked with an untrusted URL. |
0 AI finding(s) were dropped because their file, line or quote did not match the package.
| domain | service rating | where |
|---|---|---|
| ai-saas.eastmoney.com | not in the service index | scripts/get_data.py:73 |
| ai.eastmoney.com | not in the service index | SKILL.md:27 |
| clawhub.ai | not in the service index | skill-card.md:9 |
| Binaries invoked | bash, pip3, python, python3 |
| Environment variables read | EM_API_KEY |
| Hard-coded wallets | none |
| Pipes a download to a shell | 0 |
| eval / exec / subprocess | 0 |
| base64 blobs | 0 |
| File writes | 1 |
| Persistence | 3 |
| file | lines | sha256 |
|---|---|---|
SKILL.md | 187 | 17fbaa5eb5539680… |
_meta.json | 6 | ba332d0cadf19680… |
scripts/get_data.py | 877 | 465e331ce8c1961b… |
skill-card.md | 54 | 2903366bde27f85e… |
For agents
JSON: https://agenteconomy.report/k/mx-finance-data.audit.json · badge: https://agenteconomy.report/k/mx-finance-data.audited.svg ·
skill rating: /k/mx-finance-data · commission an audit of any skill: US$ 29 per version.
The complete published package of this exact version was downloaded from the registry and read statically; nothing was executed. A deterministic pass extracts network destinations, binaries, environment variables, writes, install commands, obfuscation markers, subprocesses and wallets, each with file and line. An AI then reads the whole package with those facts and writes the summary, the capabilities and the findings under a strict schema; every finding it produces must cite a file, a line and the exact text, or it is dropped. The final verdict is the worst of the two passes. The audit does not change the skill's trust tier (policy); the author may respond through the dispute channel and the response is published here. Commissioned by: the Agent Economy Report (free program: the 150 most downloaded skills, September 2026).