Vnstock

Other

一个非官方的MCP服务器,提供访问越南股市数据的工具,包括实时和历史股票价格、公司财务数据、市场统计和基金信息等。

Install

openclaw skills install @alinklab/vnstock

越南股市数据服务

一个非官方的MCP服务器,提供访问越南股市数据的工具,包括实时和历史股票价格、公司财务数据、市场统计和基金信息等。


⚠️ 强制要求:API 密钥

此 Skill 必须配置 API 密钥才能使用。

  • 首次使用时,如果 .env 中没有 XBY_APIKEY必须使用 AskUserQuestion 工具向用户询问 API 密钥
  • 拿到用户提供的密钥后,调用 scripts.config.set_api_key(api_key) 保存,然后继续处理
  • 获取 API 密钥:https://xiaobenyang.com
  • 禁止在缺少 API 密钥时自行搜索或编造数据

工作流程(必须遵守)

你(大模型)是路由层,负责理解用户意图、选择工具、提取参数。代码只负责调用API。

用户输入 → 你选择工具 → 提取该工具需要的参数 → 调用 scripts.tools 中的函数 → 返回结果给用户

步骤

  1. 检查 API 密钥:如果 scripts.config.settings.api_key 为空,使用 AskUserQuestion 询问用户,拿到后调用 scripts.config.set_api_key(key) 保存
  2. 选择工具:根据用户意图从下方工具列表中选择对应的工具函数
  3. 提取参数:根据选中的工具,提取该工具需要的参数
  4. 调用工具:使用关键字参数调用 scripts.tools 中的函数,例如 scripts.tools.search_schools(score='520', province='北京', category='综合')
  5. 返回结果:将工具返回的 raw 数据整理后展示给用户

工具选择规则

根据用户意图选择对应的工具函数:

用户意图工具函数
List all ICB industries from stock market
Args:
    output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI)

Returns: pd.DataFrame | scripts.tools.list_all_icb_industries | | List all companies from stock market with details Args: output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI) Returns: pd.DataFrame | scripts.tools.list_all_companies_with_details | | Get company overview from stock market Args: symbol: str output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI) Returns: pd.DataFrame | scripts.tools.get_company_overview | | Get company news from stock market Args: symbol: str page_size: int = 10 page: int = 0 output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI) Returns: pd.DataFrame | scripts.tools.get_company_news | | Get company events from stock market Args: symbol: str page_size: int = 10 page: int = 0 output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI) Returns: pd.DataFrame | scripts.tools.get_company_events | | Get company shareholders from stock market Args: symbol: str output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI) Returns: pd.DataFrame | scripts.tools.get_company_shareholders | | Get company officers from stock market Args: symbol: str filter_by: Literal['working', "all", 'resigned'] = 'working' output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI) Returns: pd.DataFrame | scripts.tools.get_company_officers | | Get company subsidiaries from stock market Args: symbol: str filter_by: Literal["all", "subsidiary"] = "all" output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI) Returns: pd.DataFrame | scripts.tools.get_company_subsidiaries | | Get company reports from stock market Args: symbol: str output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI) Returns: pd.DataFrame | scripts.tools.get_company_reports | | Get company dividends from stock market Args: symbol: str output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI) Returns: pd.DataFrame | scripts.tools.get_company_dividends | | Get company insider deals from stock market Args: symbol: str output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI) Returns: pd.DataFrame | scripts.tools.get_company_insider_deals | | Get company ratio summary from stock market Args: symbol: str output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI) Returns: pd.DataFrame | scripts.tools.get_company_ratio_summary | | Get company trading stats from stock market Args: symbol: str output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI) Returns: pd.DataFrame | scripts.tools.get_company_trading_stats | | Get all symbol groups from stock market Args: output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI) Returns: pd.DataFrame | scripts.tools.get_all_symbol_groups | | Get all symbols from stock market Args: group: str (group name to get symbols) output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI) Returns: pd.DataFrame | scripts.tools.get_all_symbols_by_group | | Get all symbols from stock market Args: industry: str = None (if None, return all symbols) output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI) Returns: pd.DataFrame or json | scripts.tools.get_all_symbols_by_industry | | Get all symbols from stock market Args: output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI) Returns: pd.DataFrame or json | scripts.tools.get_all_symbols | | Get all symbols detailed from stock market Args: output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI) Returns: pd.DataFrame | scripts.tools.get_all_symbols_detailed | | Get income statements of a company from stock market Args:
symbol: str (symbol of the company to get income statements) period: Literal['quarter', 'year'] = 'year' (period to get income statements) output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI) Returns: pd.DataFrame | scripts.tools.get_income_statements | | Get balance sheets of a company from stock market Args: symbol: str (symbol of the company to get balance sheets) period: Literal['quarter', 'year'] = 'year' (period to get balance sheets) output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI) Returns: pd.DataFrame | scripts.tools.get_balance_sheets | | Get cash flows of a company from stock market Args: symbol: str (symbol of the company to get cash flows) period: Literal['quarter', 'year'] = 'year' (period to get cash flows) output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI) Returns: pd.DataFrame | scripts.tools.get_cash_flows | | Get finance ratios of a company from stock market Args: symbol: str (symbol of the company to get finance ratios) period: Literal['quarter', 'year'] = 'year' (period to get finance ratios) output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI) Returns: pd.DataFrame | scripts.tools.get_finance_ratios | | Get raw report of a company from stock market Args: symbol: str (symbol of the company to get raw report) period: Literal['quarter', 'year'] = 'year' (period to get raw report) output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI) Returns: pd.DataFrame | scripts.tools.get_raw_report | | List all funds from stock market Args: fund_type: Literal['BALANCED', 'BOND', 'STOCK', None ] = None (if None, return funds in all types) output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI) Returns: pd.DataFrame | scripts.tools.list_all_funds | | Search fund by name from stock market Args: keyword: str (partial match for fund name to search) output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI) Returns: pd.DataFrame | scripts.tools.search_fund | | Get nav report of a fund from stock market Args: symbol: str (symbol of the fund to get nav report) output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI) Returns: pd.DataFrame | scripts.tools.get_fund_nav_report | | Get top holding of a fund from stock market Args: symbol: str (symbol of the fund to get top holding) output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI) Returns: pd.DataFrame | scripts.tools.get_fund_top_holding | | Get industry holding of a fund from stock market Args: symbol: str (symbol of the fund to get industry holding) output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI) Returns: pd.DataFrame | scripts.tools.get_fund_industry_holding | | Get asset holding of a fund from stock market Args: symbol: str (symbol of the fund to get asset holding) output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI) Returns: pd.DataFrame | scripts.tools.get_fund_asset_holding | | Get gold price from stock market Args: date: str = None (if None, return today's price. Format: YYYY-MM-DD) source: Literal['SJC', 'BTMC'] = 'SJC' (source to get gold price) output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI) Returns: pd.DataFrame | scripts.tools.get_gold_price | | Get exchange rate of all currency pairs from stock market Args: date: str = None (if None, return today's price. Format: YYYY-MM-DD) output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI) Returns: pd.DataFrame | scripts.tools.get_exchange_rate | | Get quote price with indicators of a symbol from stock market.

Indicators can be specified with or without parameters:

  • Simple: "rsi", "macd", "stochastic"
  • With params: "rsi(window=21)", "macd(fast=12, slow=26, signal=9)"

Args: symbol: str (symbol to get price) indicators: list[str] (list of indicators with optional parameters) Examples: - ["rsi", "macd"] - use default parameters - ["rsi(window=21)", "macd(fast=12, slow=26)"] - custom parameters - ["stochastic(k=14, d=3)", "cci(window=20)"] - mixed start_date: str (format: YYYY-MM-DD) end_date: str = None (end date to get price. None means today) interval: Literal['1m', '5m', '15m', '30m', '1H', '1D', '1W', '1M'] = '1D' (interval to get price) output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI) Returns: pd.DataFrame with OHLCV data and requested indicator columns | scripts.tools.get_quote_price_with_indicators | | Get quote price history of a symbol from stock market Args: symbol: str (symbol to get history price) start_date: str (format: YYYY-MM-DD) end_date: str = None (end date to get history price. None means today) interval: Literal['1m', '5m', '15m', '30m', '1H', '1D', '1W', '1M'] = '1D' (interval to get history price) output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI) Returns: pd.DataFrame | scripts.tools.get_quote_history_price | | Get quote intraday price from stock market Args: symbol: str (symbol to get intraday price) page_size: int = 500 (max: 100000) (number of rows to return) page: int = 1 (page number to get intraday price from) output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI) Returns: pd.DataFrame | scripts.tools.get_quote_intraday_price | | Get quote price depth from stock market Args: symbol: str (symbol to get price depth) output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI) Returns: pd.DataFrame | scripts.tools.get_quote_price_depth | | Get price board from stock market Args: symbols: list[str] (list of symbols to get price board) output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI) Returns: pd.DataFrame | scripts.tools.get_price_board |

如果参数不完整,使用 AskUserQuestion 向用户询问缺失的参数。


工具函数说明


scripts.tools.list_all_icb_industries

工具描述:List all ICB industries from stock market Args: output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI) Returns: pd.DataFrame

参数定义

参数名称参数类型是否必填默认值描述
output_formatstringfalse"toon"null

scripts.tools.list_all_companies_with_details

工具描述:List all companies from stock market with details Args: output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI) Returns: pd.DataFrame

参数定义

参数名称参数类型是否必填默认值描述
output_formatstringfalse"toon"null

scripts.tools.get_company_overview

工具描述:Get company overview from stock market Args: symbol: str output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI) Returns: pd.DataFrame

参数定义

参数名称参数类型是否必填默认值描述
symbolstringtruenull
output_formatstringfalse"toon"null

scripts.tools.get_company_news

工具描述:Get company news from stock market Args: symbol: str page_size: int = 10 page: int = 0 output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI) Returns: pd.DataFrame

参数定义

参数名称参数类型是否必填默认值描述
symbolstringtruenull
page_sizeintegerfalse10.0null
pageintegerfalse0.0null
output_formatstringfalse"toon"null

scripts.tools.get_company_events

工具描述:Get company events from stock market Args: symbol: str page_size: int = 10 page: int = 0 output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI) Returns: pd.DataFrame

参数定义

参数名称参数类型是否必填默认值描述
symbolstringtruenull
page_sizeintegerfalse10.0null
pageintegerfalse0.0null
output_formatstringfalse"toon"null

scripts.tools.get_company_shareholders

工具描述:Get company shareholders from stock market Args: symbol: str output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI) Returns: pd.DataFrame

参数定义

参数名称参数类型是否必填默认值描述
symbolstringtruenull
output_formatstringfalse"toon"null

scripts.tools.get_company_officers

工具描述:Get company officers from stock market Args: symbol: str filter_by: Literal['working', "all", 'resigned'] = 'working' output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI) Returns: pd.DataFrame

参数定义

参数名称参数类型是否必填默认值描述
symbolstringtruenull
filter_bystringfalse"working"null
output_formatstringfalse"toon"null

scripts.tools.get_company_subsidiaries

工具描述:Get company subsidiaries from stock market Args: symbol: str filter_by: Literal["all", "subsidiary"] = "all" output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI) Returns: pd.DataFrame

参数定义

参数名称参数类型是否必填默认值描述
symbolstringtruenull
filter_bystringfalse"all"null
output_formatstringfalse"toon"null

scripts.tools.get_company_reports

工具描述:Get company reports from stock market Args: symbol: str output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI) Returns: pd.DataFrame

参数定义

参数名称参数类型是否必填默认值描述
symbolstringtruenull
output_formatstringfalse"toon"null

scripts.tools.get_company_dividends

工具描述:Get company dividends from stock market Args: symbol: str output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI) Returns: pd.DataFrame

参数定义

参数名称参数类型是否必填默认值描述
symbolstringtruenull
output_formatstringfalse"toon"null

scripts.tools.get_company_insider_deals

工具描述:Get company insider deals from stock market Args: symbol: str output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI) Returns: pd.DataFrame

参数定义

参数名称参数类型是否必填默认值描述
symbolstringtruenull
output_formatstringfalse"toon"null

scripts.tools.get_company_ratio_summary

工具描述:Get company ratio summary from stock market Args: symbol: str output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI) Returns: pd.DataFrame

参数定义

参数名称参数类型是否必填默认值描述
symbolstringtruenull
output_formatstringfalse"toon"null

scripts.tools.get_company_trading_stats

工具描述:Get company trading stats from stock market Args: symbol: str output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI) Returns: pd.DataFrame

参数定义

参数名称参数类型是否必填默认值描述
symbolstringtruenull
output_formatstringfalse"toon"null

scripts.tools.get_all_symbol_groups

工具描述:Get all symbol groups from stock market Args: output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI) Returns: pd.DataFrame

参数定义

参数名称参数类型是否必填默认值描述
output_formatstringfalse"toon"null

scripts.tools.get_all_symbols_by_group

工具描述:Get all symbols from stock market Args: group: str (group name to get symbols) output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI) Returns: pd.DataFrame

参数定义

参数名称参数类型是否必填默认值描述
groupstringtruenull
output_formatstringfalse"toon"null

scripts.tools.get_all_symbols_by_industry

工具描述:Get all symbols from stock market Args: industry: str = None (if None, return all symbols) output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI) Returns: pd.DataFrame or json

参数定义

参数名称参数类型是否必填默认值描述
industrystringfalsenull
output_formatstringfalse"toon"null

scripts.tools.get_all_symbols

工具描述:Get all symbols from stock market Args: output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI) Returns: pd.DataFrame or json

参数定义

参数名称参数类型是否必填默认值描述
output_formatstringfalse"toon"null

scripts.tools.get_all_symbols_detailed

工具描述:Get all symbols detailed from stock market Args: output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI) Returns: pd.DataFrame

参数定义

参数名称参数类型是否必填默认值描述
output_formatstringfalse"toon"null

scripts.tools.get_income_statements

工具描述:Get income statements of a company from stock market Args:
symbol: str (symbol of the company to get income statements) period: Literal['quarter', 'year'] = 'year' (period to get income statements) output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI) Returns: pd.DataFrame

参数定义

参数名称参数类型是否必填默认值描述
symbolstringtruenull
periodstringfalse"year"null
output_formatstringfalse"toon"null

scripts.tools.get_balance_sheets

工具描述:Get balance sheets of a company from stock market Args: symbol: str (symbol of the company to get balance sheets) period: Literal['quarter', 'year'] = 'year' (period to get balance sheets) output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI) Returns: pd.DataFrame

参数定义

参数名称参数类型是否必填默认值描述
symbolstringtruenull
periodstringfalse"year"null
output_formatstringfalse"toon"null

scripts.tools.get_cash_flows

工具描述:Get cash flows of a company from stock market Args: symbol: str (symbol of the company to get cash flows) period: Literal['quarter', 'year'] = 'year' (period to get cash flows) output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI) Returns: pd.DataFrame

参数定义

参数名称参数类型是否必填默认值描述
symbolstringtruenull
periodstringfalse"year"null
output_formatstringfalse"toon"null

scripts.tools.get_finance_ratios

工具描述:Get finance ratios of a company from stock market Args: symbol: str (symbol of the company to get finance ratios) period: Literal['quarter', 'year'] = 'year' (period to get finance ratios) output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI) Returns: pd.DataFrame

参数定义

参数名称参数类型是否必填默认值描述
symbolstringtruenull
periodstringfalse"year"null
output_formatstringfalse"toon"null

scripts.tools.get_raw_report

工具描述:Get raw report of a company from stock market Args: symbol: str (symbol of the company to get raw report) period: Literal['quarter', 'year'] = 'year' (period to get raw report) output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI) Returns: pd.DataFrame

参数定义

参数名称参数类型是否必填默认值描述
symbolstringtruenull
periodstringfalse"year"null
output_formatstringfalse"toon"null

scripts.tools.list_all_funds

工具描述:List all funds from stock market Args: fund_type: Literal['BALANCED', 'BOND', 'STOCK', None ] = None (if None, return funds in all types) output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI) Returns: pd.DataFrame

参数定义

参数名称参数类型是否必填默认值描述
fund_typenullfalsenull
output_formatstringfalse"toon"null

scripts.tools.search_fund

工具描述:Search fund by name from stock market Args: keyword: str (partial match for fund name to search) output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI) Returns: pd.DataFrame

参数定义

参数名称参数类型是否必填默认值描述
keywordstringtruenull
output_formatstringfalse"toon"null

scripts.tools.get_fund_nav_report

工具描述:Get nav report of a fund from stock market Args: symbol: str (symbol of the fund to get nav report) output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI) Returns: pd.DataFrame

参数定义

参数名称参数类型是否必填默认值描述
symbolstringtruenull
output_formatstringfalse"toon"null

scripts.tools.get_fund_top_holding

工具描述:Get top holding of a fund from stock market Args: symbol: str (symbol of the fund to get top holding) output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI) Returns: pd.DataFrame

参数定义

参数名称参数类型是否必填默认值描述
symbolstringtruenull
output_formatstringfalse"toon"null

scripts.tools.get_fund_industry_holding

工具描述:Get industry holding of a fund from stock market Args: symbol: str (symbol of the fund to get industry holding) output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI) Returns: pd.DataFrame

参数定义

参数名称参数类型是否必填默认值描述
symbolstringtruenull
output_formatstringfalse"toon"null

scripts.tools.get_fund_asset_holding

工具描述:Get asset holding of a fund from stock market Args: symbol: str (symbol of the fund to get asset holding) output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI) Returns: pd.DataFrame

参数定义

参数名称参数类型是否必填默认值描述
symbolstringtruenull
output_formatstringfalse"toon"null

scripts.tools.get_gold_price

工具描述:Get gold price from stock market Args: date: str = None (if None, return today's price. Format: YYYY-MM-DD) source: Literal['SJC', 'BTMC'] = 'SJC' (source to get gold price) output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI) Returns: pd.DataFrame

参数定义

参数名称参数类型是否必填默认值描述
datestringfalsenull
sourcestringfalse"SJC"null
output_formatstringfalse"toon"null

scripts.tools.get_exchange_rate

工具描述:Get exchange rate of all currency pairs from stock market Args: date: str = None (if None, return today's price. Format: YYYY-MM-DD) output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI) Returns: pd.DataFrame

参数定义

参数名称参数类型是否必填默认值描述
datestringfalsenull
output_formatstringfalse"toon"null

scripts.tools.get_quote_price_with_indicators

工具描述:Get quote price with indicators of a symbol from stock market.

Indicators can be specified with or without parameters:

  • Simple: "rsi", "macd", "stochastic"
  • With params: "rsi(window=21)", "macd(fast=12, slow=26, signal=9)"

Args: symbol: str (symbol to get price) indicators: list[str] (list of indicators with optional parameters) Examples: - ["rsi", "macd"] - use default parameters - ["rsi(window=21)", "macd(fast=12, slow=26)"] - custom parameters - ["stochastic(k=14, d=3)", "cci(window=20)"] - mixed start_date: str (format: YYYY-MM-DD) end_date: str = None (end date to get price. None means today) interval: Literal['1m', '5m', '15m', '30m', '1H', '1D', '1W', '1M'] = '1D' (interval to get price) output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI) Returns: pd.DataFrame with OHLCV data and requested indicator columns

参数定义

参数名称参数类型是否必填默认值描述
symbolstringtruenull
indicatorsarraytruenull
start_datestringtruenull
end_datestringfalsenull
intervalstringfalse"1D"null
drop_market_closebooleanfalsetruenull
output_formatstringfalse"toon"null

scripts.tools.get_quote_history_price

工具描述:Get quote price history of a symbol from stock market Args: symbol: str (symbol to get history price) start_date: str (format: YYYY-MM-DD) end_date: str = None (end date to get history price. None means today) interval: Literal['1m', '5m', '15m', '30m', '1H', '1D', '1W', '1M'] = '1D' (interval to get history price) output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI) Returns: pd.DataFrame

参数定义

参数名称参数类型是否必填默认值描述
symbolstringtruenull
start_datestringtruenull
end_datestringfalsenull
intervalstringfalse"1D"null
drop_market_closebooleanfalsetruenull
output_formatstringfalse"toon"null

scripts.tools.get_quote_intraday_price

工具描述:Get quote intraday price from stock market Args: symbol: str (symbol to get intraday price) page_size: int = 500 (max: 100000) (number of rows to return) page: int = 1 (page number to get intraday price from) output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI) Returns: pd.DataFrame

参数定义

参数名称参数类型是否必填默认值描述
symbolstringtruenull
page_sizeintegerfalse100.0null
pageintegerfalse1.0null
output_formatstringfalse"toon"null

scripts.tools.get_quote_price_depth

工具描述:Get quote price depth from stock market Args: symbol: str (symbol to get price depth) output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI) Returns: pd.DataFrame

参数定义

参数名称参数类型是否必填默认值描述
symbolstringtruenull
output_formatstringfalse"toon"null

scripts.tools.get_price_board

工具描述:Get price board from stock market Args: symbols: list[str] (list of symbols to get price board) output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI) Returns: pd.DataFrame

参数定义

参数名称参数类型是否必填默认值描述
symbolsarraytruenull
output_formatstringfalse"toon"null


返回值处理

工具函数返回 dict 对象:

  • result["raw"] - API 原始返回数据(JSON),直接将此数据整理后展示给用户
  • result["success"] - 是否成功(True/False)
  • result["message"] - 状态消息

项目结构

xiaobenyang_gaokao_skill/
├── scripts/
│   ├── __init__.py
│   ├── config.py       # 配置管理 + set_api_key()
│   ├── call_api.py      # API 客户端 + call_api()
│   └── tools.py         # 工具函数(直接调用)
├── requirements.txt
└── SKILL.md

注意事项

  1. API 密钥是必需的,无密钥时必须通过 AskUserQuestion 询问用户
  2. 禁止在缺少 API 密钥时自行搜索或编造数据