FinData MCP Server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@FinData MCP ServerShow me daily stock data for 000001.SZ for the past week"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Overview
FinData is an open-source Model Context Protocol(MCP) Server that provides professional financial data access capabilities for LLM. It supports various data providers such as Tushare, Wind, DataYes, etc. This enables AI applications to quickly retrieve financial data.
Fully supports both Stdio and SSE transports, offering flexibility for different environments.
Demonstration
https://github.com/user-attachments/assets/1a6d02af-22a3-44a0-ada7-a771a1c4818d
Quick Start
Prerequisites
Before getting started, please complete the following preparations:
python => 3.11
mcp[cli]>=1.6.0
pandas>=2.2.3
Depending on your data provider, install optional packages such as:
tushare>=1.4.21
Related MCP server: FinData
Configuration
Stdio Transport
You will need to edit the MCP client configuration file to add finData:
{
"mcpServers": {
"finData": {
"command": "uv",
"args": [
"--directory",
"/ABSOLUTE/PATH/TO/PARENT/FOLDER/finData-mcp-server/src/findata",
"run",
"server.py"
],
"env": {
"DATA_API_TOKEN": "", // API Token for accessing data provider
"PROVIDER": "tushare" // Specified data provider
}
}
}
}SSE Transport
Set the environment variables DATA_API_TOKEN and PROVIDER on the server hosting the MCP Server:
Windows
set DATA_API_TOKEN=<API Token for accessing data provider>
set PROVIDER=<Specified data provider>Linux
export DATA_API_TOKEN=<API Token for accessing data provider>
export PROVIDER=<Specified data provider>Then, start the MCP Server:
uv run server.py --transport sse Optional Arguments:
--sse-hostHost to bind SSE server to (default: localhost)--sse-portPort for SSE server (default: 8000)
Once the MCP Server is running, update your MCP client's configuration with the following settings to connect to it.
{
"mcpServers": {
"finData": {
"name": "finData",
"type": "sse",
"baseUrl": "http://localhost:8000/sse"
}
}
}Note: Variable names in configuration files may vary slightly between MCP clients. Refer to each client's documentation for proper configuration.
Supported Data Providers
Set the PROVIDER environment variable to specify your provider:
tushare
Tools
Tushare
Market Data
dailyGet unadjusted daily stock market data.
Fundamental Data
stock_basicGet stock basic information including name, code, etc.stock_companyGet listed company basic information.bak_basicGet fundamental data for specific stocks within a given time range.
Financial Data
incomeGet company income statement data.balancesheetGet company balance sheet data.cashflowGet company cash flow statement data.
Macroeconomic Data
shibor_lprGet Loan Prime Rate (LPR) data.cn_gdpGet Gross Domestic Product (GDP) data.cn_cpiGet Consumer Price Index (CPI) data.cn_ppiGet Producer Price Index (PPI) data.cn_mGet Money Supply data.sf_monthGet Social Financing data.cn_pmiGet Purchasing Managers' Index (PMI) data.
DataCanvas

This project is open-sourced by DataCanvas
Available Tools
14 toolsbak_basicB
Name:
股票基本面信息。
Description:
获取某支股票在指定时间范围内的基本面数据,数据从2016年开始。
Args:
| 名称 | 类型 | 必填 | 描述 |
|------------|-------|------|----------------------------------------|
| ts_code | str | 是 | 股票代码,每次只能查询一支股票 |
| start_date | str | 是 | 开始日期(YYYYMMDD) |
| end_date | str | 是 | 开始日期(YYYYMMDD) |
| fields | list | 否 | 从Fields中选取需要查询的字段 |
Fields:
- trade_date:交易日期
- ts_code:TS股票代码
- name:股票名称
- industry:行业
- area:地域
- pe:市盈率(动)
- float_share:流通股本(亿)
- total_share:总股本(亿)
- total_assets:总资产(亿)
- liquid_assets:流动资产(亿)
- fixed_assets:固定资产(亿)
- reserved:公积金
- reserved_pershare:每股公积金
- eps:每股收益
- bvps:每股净资产
- pb:市净率
- list_date:上市日期
- undp:未分配利润
- per_undp:每股未分配利润
- rev_yoy:收入同比(%)
- profit_yoy:利润同比(%)
- gpr:毛利率(%)
- npr:净利润率(%)
- holder_num:股东人数| Name | Required | Description | Default |
|---|---|---|---|
| ts_code | Yes | ||
| start_date | Yes | ||
| end_date | Yes | ||
| fields | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries full burden. It notes data starts from 2016 but does not disclose read-only nature, rate limits, pagination, or other behavioral traits. For a query tool, this lack of transparency is a gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with separate sections for purpose, parameters, and fields. It is reasonably concise given the amount of information, though the end_date parameter has a typo ('开始日期' instead of '结束日期').
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the Fields list implicitly indicates return values, but the description does not explicitly explain the output structure or any sorting/ordering. For a data retrieval tool, this lacks completeness compared to similar tools with richer descriptions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides no descriptions (0% coverage), but the description adds a detailed table explaining each parameter's purpose, format, and constraints (e.g., ts_code single stock, date format YYYYMMDD). The fields parameter is linked to the Fields list, providing clear selection guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves fundamental data for a specific stock in a date range. However, it does not explicitly differentiate from sibling tools like stock_basic or daily, leaving some ambiguity about when to choose this tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions the constraint of querying only one stock per call, but does not provide guidance on when not to use this tool or suggest alternatives. Usage context is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
balancesheetA
Name:
上市公司资产负债表。
Description:
获取上市公司财务三大报表之资产负债表数据。
Args:
| 名称 | 类型 | 必选 | 描述 |
|------------|--------|------|----------------------------------------------------------------------|
| ts_code | str | 是 | 股票代码,每次只能查询一支股票 |
| ann_date | str | 否 | 公告日期(YYYYMMDD格式) |
| start_date | str | 否 | 公告开始日期(YYYYMMDD格式) |
| end_date | str | 否 | 公告结束日期 (YYYYMMDD格式) |
| period | str | 否 | 报告期(每个季度最后一天的日期,比如20171231表示年报,20170630半年报,20170930三季报) |
| report_type| str | 否 | 报告类型,参考文档最下方说明 |
| comp_type | str | 否 | 公司类型(一般工商业:1,银行:2,保险:3,证券:4) |
| fields | list | 否 | 从Fields中选取需要查询的字段,必须包含ann_date、f_ann_date、end_date |
Fields:
- ts_code:TS股票代码
- ann_date:公告日期
- f_ann_date:实际公告日期
- end_date:报告期
- report_type:报表类型
- comp_type:公司类型(1一般工商业2银行3保险4证券)
- end_type:报告期类型
- total_share:期末总股本
- cap_rese:资本公积金
- undistr_porfit:未分配利润
- surplus_rese:盈余公积金
- special_rese:专项储备
- money_cap:货币资金
- trad_asset:交易性金融资产
- notes_receiv:应收票据
- accounts_receiv:应收账款
- oth_receiv:其他应收款
- prepayment:预付款项
- div_receiv:应收股利
- int_receiv:应收利息
- inventories:存货
- amor_exp:待摊费用
- nca_within_1y:一年内到期的非流动资产
- sett_rsrv:结算备付金
- loanto_oth_bank_fi:拆出资金
- premium_receiv:应收保费
- reinsur_receiv:应收分保账款
- reinsur_res_receiv:应收分保合同准备金
- pur_resale_fa:买入返售金融资产
- oth_cur_assets:其他流动资产
- total_cur_assets:流动资产合计
- fa_avail_for_sale:可供出售金融资产
- htm_invest:持有至到期投资
- lt_eqt_invest:长期股权投资
- invest_real_estate:投资性房地产
- time_deposits:定期存款
- oth_assets:其他资产
- lt_rec:长期应收款
- fix_assets:固定资产
- cip:在建工程
- const_materials:工程物资
- fixed_assets_disp:固定资产清理
- produc_bio_assets:生产性生物资产
- oil_and_gas_assets:油气资产
- intan_assets:无形资产
- r_and_d:研发支出
- goodwill:商誉
- lt_amor_exp:长期待摊费用
- defer_tax_assets:递延所得税资产
- decr_in_disbur:发放贷款及垫款
- oth_nca:其他非流动资产
- total_nca:非流动资产合计
- cash_reser_cb:现金及存放中央银行款项
- depos_in_oth_bfi:存放同业和其它金融机构款项
- prec_metals:贵金属
- deriv_assets:衍生金融资产
- rr_reins_une_prem:应收分保未到期责任准备金
- rr_reins_outstd_cla:应收分保未决赔款准备金
- rr_reins_lins_liab:应收分保寿险责任准备金
- rr_reins_lthins_liab:应收分保长期健康险责任准备金
- refund_depos:存出保证金
- ph_pledge_loans:保户质押贷款
- refund_cap_depos:存出资本保证金
- indep_acct_assets:独立账户资产
- client_depos:其中:客户资金存款
- client_prov:其中:客户备付金
- transac_seat_fee:其中:交易席位费
- invest_as_receiv:应收款项类投资
- total_assets:资产总计
- lt_borr:长期借款
- st_borr:短期借款
- cb_borr:向中央银行借款
- depos_ib_deposits:吸收存款及同业存放
- loan_oth_bank:拆入资金
- trading_fl:交易性金融负债
- notes_payable:应付票据
- acct_payable:应付账款
- adv_receipts:预收款项
- sold_for_repur_fa:卖出回购金融资产款
- comm_payable:应付手续费及佣金
- payroll_payable:应付职工薪酬
- taxes_payable:应交税费
- int_payable:应付利息
- div_payable:应付股利
- oth_payable:其他应付款
- acc_exp:预提费用
- deferred_inc:递延收益
- st_bonds_payable:应付短期债券
- payable_to_reinsurer:应付分保账款
- rsrv_insur_cont:保险合同准备金
- acting_trading_sec:代理买卖证券款
- acting_uw_sec:代理承销证券款
- non_cur_liab_due_1y:一年内到期的非流动负债
- oth_cur_liab:其他流动负债
- total_cur_liab:流动负债合计
- bond_payable:应付债券
- lt_payable:长期应付款
- specific_payables:专项应付款
- estimated_liab:预计负债
- defer_tax_liab:递延所得税负债
- defer_inc_non_cur_liab:递延收益-非流动负债
- oth_ncl:其他非流动负债
- total_ncl:非流动负债合计
- depos_oth_bfi:同业和其它金融机构存放款项
- deriv_liab:衍生金融负债
- depos:吸收存款
- agency_bus_liab:代理业务负债
- oth_liab:其他负债
- prem_receiv_adva:预收保费
- depos_received:存入保证金
- ph_invest:保户储金及投资款
- reser_une_prem:未到期责任准备金
- reser_outstd_claims:未决赔款准备金
- reser_lins_liab:寿险责任准备金
- reser_lthins_liab:长期健康险责任准备金
- indept_acc_liab:独立账户负债
- pledge_borr:其中:质押借款
- indem_payable:应付赔付款
- policy_div_payable:应付保单红利
- total_liab:负债合计
- treasury_share:减:库存股
- ordin_risk_reser:一般风险准备
- forex_differ:外币报表折算差额
- invest_loss_unconf:未确认的投资损失
- minority_int:少数股东权益
- total_hldr_eqy_exc_min_int:股东权益合计(不含少数股东权益)
- total_hldr_eqy_inc_min_int:股东权益合计(含少数股东权益)
- total_liab_hldr_eqy:负债及股东权益总计
- lt_payroll_payable:长期应付职工薪酬
- oth_comp_income:其他综合收益
- oth_eqt_tools:其他权益工具
- oth_eqt_tools_p_shr:其他权益工具(优先股)
- lending_funds:融出资金
- acc_receivable:应收款项
- st_fin_payable:应付短期融资款
- payables:应付款项
- hfs_assets:持有待售的资产
- hfs_sales:持有待售的负债
- cost_fin_assets:以摊余成本计量的金融资产
- fair_value_fin_assets:以公允价值计量且其变动计入其他综合收益的金融资产
- cip_total:在建工程(合计)(元)
- oth_pay_total:其他应付款(合计)(元)
- long_pay_total:长期应付款(合计)(元)
- debt_invest:债权投资(元)
- oth_debt_invest:其他债权投资(元)
- oth_eq_invest:其他权益工具投资(元)
- oth_illiq_fin_assets:其他非流动金融资产(元)
- oth_eq_ppbond:其他权益工具:永续债(元)
- receiv_financing:应收款项融资
- use_right_assets:使用权资产
- lease_liab:租赁负债
- contract_assets:合同资产
- contract_liab:合同负债
- accounts_receiv_bill:应收票据及应收账款
- accounts_pay:应付票据及应付账款
- oth_rcv_total:其他应收款(合计)(元)
- fix_assets_total:固定资产(合计)(元)
- update_flag:更新标识| Name | Required | Description | Default |
|---|---|---|---|
| ts_code | No | ||
| ann_date | No | ||
| start_date | No | ||
| end_date | No | ||
| period | No | ||
| report_type | No | ||
| comp_type | No | ||
| fields | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must convey behavioral traits. It includes a constraint that only one stock can be queried per request (ts_code: '每次只能查询一支股票'). However, it lacks details on idempotency, rate limits, authorization, or what happens when data is missing. Partial disclosure but incomplete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely verbose, replicating the full parameter table and an extensive list of over 100 fields. The essential purpose is stated in the first two lines, but the bulk is redundant with the input schema and not front-loaded for quick scanning. This hinders efficient agent comprehension.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description must explain return values. It provides a field list indicating what data can be retrieved, but does not describe the output structure (e.g., format, ordering, pagination) or error handling. For a data retrieval tool, this is adequate but not thorough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, but the tool description contains a detailed parameter table with explicit descriptions in Chinese for each parameter (e.g., format for dates, period conventions). Additionally, a comprehensive list of available fields with Chinese labels is provided, adding significant meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states in Chinese and English that this tool retrieves balance sheet data for listed companies. It distinguishes itself from sibling tools like 'income' and 'cashflow' by specifying it covers the balance sheet, one of the three major financial statements.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for balance sheet queries but does not explicitly state when to use this tool over alternatives (e.g., income statement or cash flow). No guidance on when not to use or which conditions are appropriate is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cashflowA
Name:
上市公司现金流量表。
Description:
获取上市公司财务三大报表之现金流量表数据。
Args:
| 名称 | 类型 | 必选 | 描述 |
|------------|--------|------|----------------------------------------------------------------------|
| ts_code | str | 是 | 股票代码,每次只能查询一支股票 |
| ann_date | str | 否 | 公告日期(YYYYMMDD格式) |
| f_ann_date | str | 否 | 实际公告日期(YYYYMMDD格式) |
| start_date | str | 否 | 公告开始日期(YYYYMMDD格式) |
| end_date | str | 否 | 公告结束日期 (YYYYMMDD格式) |
| period | str | 否 | 报告期(每个季度最后一天的日期,比如20171231表示年报,20170630半年报,20170930三季报) |
| report_type| str | 否 | 报告类型,参考文档最下方说明 |
| comp_type | str | 否 | 公司类型(一般工商业:1,银行:2,保险:3,证券:4) |
| is_calc | int | 否 | 是否计算报表 |
| fields | list | 否 | 从Fields中选取需要查询的字段,必须包含ann_date、f_ann_date、end_date |
Fields:
- ts_code:TS股票代码
- ann_date:公告日期
- f_ann_date:实际公告日期
- end_date:报告期
- comp_type:公司类型(1一般工商业2银行3保险4证券)
- report_type:报表类型
- end_type:报告期类型
- net_profit:净利润
- finan_exp:财务费用
- c_fr_sale_sg:销售商品、提供劳务收到的现金
- recp_tax_rends:收到的税费返还
- n_depos_incr_fi:客户存款和同业存放款项净增加额
- n_incr_loans_cb:向中央银行借款净增加额
- n_inc_borr_oth_fi:向其他金融机构拆入资金净增加额
- prem_fr_orig_contr:收到原保险合同保费取得的现金
- n_incr_insured_dep:保户储金净增加额
- n_reinsur_prem:收到再保业务现金净额
- n_incr_disp_tfa:处置交易性金融资产净增加额
- ifc_cash_incr:收取利息和手续费净增加额
- n_incr_disp_faas:处置可供出售金融资产净增加额
- n_incr_loans_oth_bank:拆入资金净增加额
- n_cap_incr_repur:回购业务资金净增加额
- c_fr_oth_operate_a:收到其他与经营活动有关的现金
- c_inf_fr_operate_a:经营活动现金流入小计
- c_paid_goods_s:购买商品、接受劳务支付的现金
- c_paid_to_for_empl:支付给职工以及为职工支付的现金
- c_paid_for_taxes:支付的各项税费
- n_incr_clt_loan_adv:客户贷款及垫款净增加额
- n_incr_dep_cbob:存放央行和同业款项净增加额
- c_pay_claims_orig_inco:支付原保险合同赔付款项的现金
- pay_handling_chrg:支付手续费的现金
- pay_comm_insur_plcy:支付保单红利的现金
- oth_cash_pay_oper_act:支付其他与经营活动有关的现金
- st_cash_out_act:经营活动现金流出小计
- n_cashflow_act:经营活动产生的现金流量净额
- oth_recp_ral_inv_act:收到其他与投资活动有关的现金
- c_disp_withdrwl_invest:收回投资收到的现金
- c_recp_return_invest:取得投资收益收到的现金
- n_recp_disp_fiolta:处置固定资产、无形资产和其他长期资产收回的现金净额
- n_recp_disp_sobu:处置子公司及其他营业单位收到的现金净额
- stot_inflows_inv_act:投资活动现金流入小计
- c_pay_acq_const_fiolta:购建固定资产、无形资产和其他长期资产支付的现金
- c_paid_invest:投资支付的现金
- n_disp_subs_oth_biz:取得子公司及其他营业单位支付的现金净额
- oth_pay_ral_inv_act:支付其他与投资活动有关的现金
- n_incr_pledge_loan:质押贷款净增加额
- stot_out_inv_act:投资活动现金流出小计
- n_cashflow_inv_act:投资活动产生的现金流量净额
- c_recp_borrow:取得借款收到的现金
- proc_issue_bonds:发行债券收到的现金
- oth_cash_recp_ral_fnc_act:收到其他与筹资活动有关的现金
- stot_cash_in_fnc_act:筹资活动现金流入小计
- free_cashflow:企业自由现金流量
- c_prepay_amt_borr:偿还债务支付的现金
- c_pay_dist_dpcp_int_exp:分配股利、利润或偿付利息支付的现金
- incl_dvd_profit_paid_sc_ms:其中:子公司支付给少数股东的股利、利润
- oth_cashpay_ral_fnc_act:支付其他与筹资活动有关的现金
- stot_cashout_fnc_act:筹资活动现金流出小计
- n_cash_flows_fnc_act:筹资活动产生的现金流量净额
- eff_fx_flu_cash:汇率变动对现金的影响
- n_incr_cash_cash_equ:现金及现金等价物净增加额
- c_cash_equ_beg_period:期初现金及现金等价物余额
- c_cash_equ_end_period:期末现金及现金等价物余额
- c_recp_cap_contrib:吸收投资收到的现金
- incl_cash_rec_saims:其中:子公司吸收少数股东投资收到的现金
- uncon_invest_loss:未确认投资损失
- prov_depr_assets:加:资产减值准备
- depr_fa_coga_dpba:固定资产折旧、油气资产折耗、生产性生物资产折旧
- amort_intang_assets:无形资产摊销
- lt_amort_deferred_exp:长期待摊费用摊销
- decr_deferred_exp:待摊费用减少
- incr_acc_exp:预提费用增加
- loss_disp_fiolta:处置固定、无形资产和其他长期资产的损失
- loss_scr_fa:固定资产报废损失
- loss_fv_chg:公允价值变动损失
- invest_loss:投资损失
- decr_def_inc_tax_assets:递延所得税资产减少
- incr_def_inc_tax_liab:递延所得税负债增加
- decr_inventories:存货的减少
- decr_oper_payable:经营性应收项目的减少
- incr_oper_payable:经营性应付项目的增加
- others:其他
- im_net_cashflow_oper_act:经营活动产生的现金流量净额(间接法)
- conv_debt_into_cap:债务转为资本
- conv_copbonds_due_within_1y:一年内到期的可转换公司债券
- fa_fnc_leases:融资租入固定资产
- im_n_incr_cash_equ:现金及现金等价物净增加额(间接法)
- net_dism_capital_add:拆出资金净增加额
- net_cash_rece_sec:代理买卖证券收到的现金净额(元)
- credit_impa_loss:信用减值损失
- use_right_asset_dep:使用权资产折旧
- oth_loss_asset:其他资产减值损失
- end_bal_cash:现金的期末余额
- beg_bal_cash:减:现金的期初余额
- end_bal_cash_equ:加:现金等价物的期末余额
- beg_bal_cash_equ:减:现金等价物的期初余额
- update_flag:更新标志(1最新)| Name | Required | Description | Default |
|---|---|---|---|
| ts_code | No | ||
| ann_date | No | ||
| f_ann_date | No | ||
| start_date | No | ||
| end_date | No | ||
| period | No | ||
| report_type | No | ||
| comp_type | No | ||
| is_calc | No | ||
| fields | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It does not disclose authentication requirements, rate limits, data freshness, or any side effects. The description only lists parameters and fields, omitting behavioral traits essential for an agent to safely invoke the tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
While the purpose is front-loaded, the description contains an excessively long field list (over 100 lines) that could be referenced externally. The parameter table is helpful but repetitively structured. More conciseness would improve readability without losing necessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a data retrieval tool with 10 parameters and many fields, the description covers parameter formats and field names comprehensively. However, it lacks details on required parameters (ts_code is required per description but schema marks all optional), and does not explain the meaning of report_type or comp_type values, leaving minor gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description compensates with a detailed table explaining each parameter and its expected format (e.g., 'ts_code: 股票代码,每次只能查询一支股票', 'ann_date: 公告日期(YYYYMMDD格式)'). This adds significant meaning beyond the schema titles, making the parameters easily interpretable.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves cash flow statement data for listed companies (上市公司现金流量表). The verb '获取' and resource '现金流量表数据' are specific. Sibling tools like 'balancesheet' and 'income' handle other financial statements, so this tool is well-distinguished.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as 'balancesheet' or 'income'. It does not mention prerequisites, typical use cases, or exclusions. The agent must infer the tool's purpose from its name and description alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cn_cpiA
Name:
居民消费价格指数。
Description:
获取CPI居民消费价格数据,包括全国、城市和农村的数据。
Args:
| 名称 | 类型 | 必填 | 描述 |
|------------|-------|------|----------------------------------------|
| m | str | 否 | 月份(YYYYMM),支持多个月份同时输入,逗号分隔 |
| start_m | str | 否 | 开始月份(YYYYMM),与end_m同时使用 |
| end_m | str | 否 | 结束月份(YYYYMM),与start_m同时使用 |
| fields | list | 否 | 从Fields中选取需要查询的字段 |
Fields:
- month: 月份
- nt_val: 全国当月值
- nt_yoy: 全国同比(%)
- nt_mom: 全国环比(%)
- nt_accu: 全国累计值
- town_val: 城市当月值
- town_yoy: 城市同比(%)
- town_mom: 城市环比(%)
- town_accu: 城市累计值
- cnt_val: 农村当月值
- cnt_yoy: 农村同比(%)
- cnt_mom: 农村环比(%)
- cnt_accu: 农村累计值
| Name | Required | Description | Default |
|---|---|---|---|
| m | No | ||
| start_m | No | ||
| end_m | No | ||
| fields | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It describes the tool as retrieving data (read operation) but does not explicitly state it is read-only, idempotent, or safe. No mention of rate limits, error behavior, or side effects. Adequate but minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with sections (Name, Description, Args, Fields). It is reasonably concise for the information provided, though the table could be slightly more compact. No wasted sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of output schema, the description helpfully lists the fields. It covers all arguments and their usage. However, it lacks examples, error handling details, or explanation of the output format (e.g., JSON structure). Adequate for simple data retrieval but could be more complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description provides a detailed table for each parameter (m, start_m, end_m, fields) with format and usage, plus lists all possible field values. This adds significant meaning beyond the schema, which lacks descriptions. Schema coverage is 0%, so the description compensates fully.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies that the tool retrieves CPI (Consumer Price Index) data, including national, urban, and rural datasets. This distinguishes it from sibling tools like cn_gdp or cn_pmi, which focus on other economic indicators.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains how to use the parameters (m, start_m, end_m, fields) but does not explicitly state when to use this tool versus alternatives. It does not provide exclusions or guidance on choosing this tool over siblings, leaving the context implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cn_gdpA
Name:
GDP数据。
Description:
获取国民经济之GDP数据。
Args:
| 名称 | 类型 | 必填 | 描述 |
|------------|-------|------|----------------------------------------|
| q | str | 否 | 季度(2019Q1表示,2019年第一季度),支持多个季度同时输入,逗号分隔 |
| start_q | str | 否 | 开始季度(2019Q1表示,2019年第一季度),与end_q同时使用 |
| end_q | str | 否 | 结束季度(2019Q1表示,2019年第一季度),与start_q同时使用 |
| fields | list | 否 | 从Fields中选取需要查询的字段 |
Fields:
- quarter: 季度
- gdp: GDP累计值(亿元)
- gdp_yoy: 当季同比增速(%)
- pi: 第一产业累计值(亿元)
- pi_yoy: 第一产业同比增速(%)
- si: 第二产业累计值(亿元)
- si_yoy: 第二产业同比增速(%)
- ti: 第三产业累计值(亿元)
- ti_yoy: 第三产业同比增速(%)| Name | Required | Description | Default |
|---|---|---|---|
| q | No | ||
| start_q | No | ||
| end_q | No | ||
| fields | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full responsibility for behavioral disclosure. It does not mention whether the tool is read-only, if it requires authentication, or any side effects. The name and description imply it is a query, but this is not explicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (Name, Description, Args, Fields). It is concise yet informative, though the main description is only one sentence and could be expanded slightly to improve completeness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description adequately covers parameter usage but lacks details on output format (e.g., whether results are a list or single object) and behavior when no parameters are provided (e.g., returns all data). No output schema exists, so the description should fill this gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description includes a detailed Args table explaining each parameter: 'q' format (e.g., 2019Q1) and support for multiple quarters, 'start_q' and 'end_q' for range queries, and 'fields' as a list of field names. It also specifies valid field names in a separate Fields section, adding significant value beyond the schema (which has 0% description coverage).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states '获取国民经济之GDP数据' (Get GDP data of national economy), specifying the verb 'get' and the resource 'GDP data'. This distinguishes it from sibling tools that cover other economic indicators like CPI, PMI, etc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. No mention of prerequisites, typical use cases, or scenarios where other tools would be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cn_mA
Name:
货币供应量。
Description:
获取货币供应量之月度数据。
Args:
| 名称 | 类型 | 必填 | 描述 |
|------------|-------|------|----------------------------------------|
| m | str | 否 | 月份(YYYYMM),支持多个月份同时输入,逗号分隔 |
| start_m | str | 否 | 开始月份(YYYYMM),与end_m同时使用 |
| end_m | str | 否 | 结束月份(YYYYMM),与start_m同时使用 |
| fields | list | 否 | 从Fields中选取需要查询的字段 |
Fields:
- month: 月份(YYYYMM)
- m0: M0(亿元)
- m0_yoy: M0同比(%)
- m0_mom: M0环比(%)
- m1: M1(亿元)
- m1_yoy: M1同比(%)
- m1_mom: M1环比(%)
- m2: M2(亿元)
- m2_yoy: M2同比(%)
- m2_mom: M2环比(%)
| Name | Required | Description | Default |
|---|---|---|---|
| m | No | ||
| start_m | No | ||
| end_m | No | ||
| fields | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full behavioral disclosure burden. It states '获取' (get), implying a read operation, but does not disclose any additional traits such as data freshness, rate limits, or error conditions. For a simple data retrieval tool, this is adequate but not thorough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a name, purpose statement, parameter table, and fields list. It is concise with no superfluous information, and the most important details (purpose and parameters) are front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no output schema required, no nested objects), the description is complete. It provides the return fields, parameter options, and clearly explains the data source (monthly money supply). No critical information is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description compensates fully with a detailed parameter table listing all four parameters (m, start_m, end_m, fields) with clear descriptions and format requirements (YYYYMM). Additionally, the Fields list provides all selectable return fields, adding significant value beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves monthly money supply data (货币供应量之月度数据), with a specific verb ('获取') and resource ('货币供应量'). It distinguishes from sibling tools like cn_cpi or cn_gdp which cover different economic indicators.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly state when to use this tool versus alternatives or any prerequisites. However, the context of sibling tools implies it is for money supply data, and the parameter table provides basic usage instructions. No explicit when-not-to-use guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cn_pmiA
Name:
采购经理人指数(PMI)。
Description:
获取采购经理人指数(PMI)数据。
Args:
| 名称 | 类型 | 必填 | 描述 |
|------------|-------|------|----------------------------------------|
| m | str | 否 | 月份(YYYYMM),支持多个月份同时输入,逗号分隔 |
| start_m | str | 否 | 开始月份(YYYYMM),与end_m同时使用 |
| end_m | str | 否 | 结束月份(YYYYMM),与start_m同时使用 |
| fields | list | 否 | 从Fields中选取需要查询的字段 |
Fields:
- month - 月份YYYYMM
- pmi010000 - 制造业PMI
- pmi010100 - 制造业PMI-企业规模-大型企业
- pmi010200 - 制造业PMI-企业规模-中型企业
- pmi010300 - 制造业PMI-企业规模-小型企业
- pmi010400 - 制造业PMI-构成指数-生产指数
- pmi010401 - 制造业PMI-构成指数-生产指数-企业规模-大型企业
- pmi010402 - 制造业PMI-构成指数-生产指数-企业规模-中型企业
- pmi010403 - 制造业PMI-构成指数-生产指数-企业规模-小型企业
- pmi010500 - 制造业PMI-构成指数-新订单指数
- pmi010501 - 制造业PMI-构成指数-新订单指数-企业规模-大型企业
- pmi010502 - 制造业PMI-构成指数-新订单指数-企业规模-中型企业
- pmi010503 - 制造业PMI-构成指数-新订单指数-企业规模-小型企业
- pmi010600 - 制造业PMI-构成指数-供应商配送时间指数
- pmi010601 - 制造业PMI-构成指数-供应商配送时间指数-企业规模-大型企业
- pmi010602 - 制造业PMI-构成指数-供应商配送时间指数-企业规模-中型企业
- pmi010603 - 制造业PMI-构成指数-供应商配送时间指数-企业规模-小型企业
- pmi010700 - 制造业PMI-构成指数-原材料库存指数
- pmi010701 - 制造业PMI-构成指数-原材料库存指数-企业规模-大型企业
- pmi010702 - 制造业PMI-构成指数-原材料库存指数-企业规模-中型企业
- pmi010703 - 制造业PMI-构成指数-原材料库存指数-企业规模-小型企业
- pmi010800 - 制造业PMI-构成指数-从业人员指数
- pmi010801 - 制造业PMI-构成指数-从业人员指数-企业规模-大型企业
- pmi010802 - 制造业PMI-构成指数-从业人员指数-企业规模-中型企业
- pmi010803 - 制造业PMI-构成指数-从业人员指数-企业规模-小型企业
- pmi010900 - 制造业PMI-其他-新出口订单
- pmi011000 - 制造业PMI-其他-进口
- pmi011100 - 制造业PMI-其他-采购量
- pmi011200 - 制造业PMI-其他-主要原材料购进价格
- pmi011300 - 制造业PMI-其他-出厂价格
- pmi011400 - 制造业PMI-其他-产成品库存
- pmi011500 - 制造业PMI-其他-在手订单
- pmi011600 - 制造业PMI-其他-生产经营活动预期
- pmi011700 - 制造业PMI-分行业-装备制造业
- pmi011800 - 制造业PMI-分行业-高技术制造业
- pmi011900 - 制造业PMI-分行业-基础原材料制造业
- pmi012000 - 制造业PMI-分行业-消费品制造业
- pmi020100 - 非制造业PMI-商务活动
- pmi020101 - 非制造业PMI-商务活动-分行业-建筑业
- pmi020102 - 非制造业PMI-商务活动-分行业-服务业业
- pmi020200 - 非制造业PMI-新订单指数
- pmi020201 - 非制造业PMI-新订单指数-分行业-建筑业
- pmi020202 - 非制造业PMI-新订单指数-分行业-服务业
- pmi020300 - 非制造业PMI-投入品价格指数
- pmi020301 - 非制造业PMI-投入品价格指数-分行业-建筑业
- pmi020302 - 非制造业PMI-投入品价格指数-分行业-服务业
- pmi020400 - 非制造业PMI-销售价格指数
- pmi020401 - 非制造业PMI-销售价格指数-分行业-建筑业
- pmi020402 - 非制造业PMI-销售价格指数-分行业-服务业
- pmi020500 - 非制造业PMI-从业人员指数
- pmi020501 - 非制造业PMI-从业人员指数-分行业-建筑业
- pmi020502 - 非制造业PMI-从业人员指数-分行业-服务业
- pmi020600 - 非制造业PMI-业务活动预期指数
- pmi020601 - 非制造业PMI-业务活动预期指数-分行业-建筑业
- pmi020602 - 非制造业PMI-业务活动预期指数-分行业-服务业
- pmi020700 - 非制造业PMI-新出口订单
- pmi020800 - 非制造业PMI-在手订单
- pmi020900 - 非制造业PMI-存货
- pmi021000 - 非制造业PMI-供应商配送时间
- pmi030000 - 中国综合PMI-产出指数
| Name | Required | Description | Default |
|---|---|---|---|
| m | No | ||
| start_m | No | ||
| end_m | No | ||
| fields | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and the description does not disclose behavioral traits such as data source, update frequency, rate limits, or default behavior when no parameters are given. Only the parameter table and field list are present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with sections for name, description, args, and fields. It front-loads the purpose. However, the field list is lengthy; it could be referenced as an appendix, but it remains necessary and organized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (many fields) and absence of output schema and annotations, the description provides a comprehensive list of queryable fields and parameter explanations. Missing output format details, but the field list effectively conveys the data available.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description includes a detailed parameter table and an extensive field list with Chinese descriptions, providing meaning beyond the schema. The field list clearly explains each PMI sub-index, which is essential for correct parameter usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states '获取采购经理人指数(PMI)数据' (Retrieve PMI data), specifying a clear verb and resource. It differentiates from sibling tools (e.g., cn_cpi, cn_gdp) which cover other economic indicators.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool vs alternatives (e.g., other economic data tools). The description does not mention context, prerequisites, or exclusions, leaving the agent to infer usage from the field list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cn_ppiB
Name:
工业生产者出厂价格指数。
Description:
获取PPI工业生产者出厂价格指数数据。
Args:
| 名称 | 类型 | 必填 | 描述 |
|------------|-------|------|----------------------------------------|
| m | str | 否 | 月份(YYYYMM),支持多个月份同时输入,逗号分隔 |
| start_m | str | 否 | 开始月份(YYYYMM),与end_m同时使用 |
| end_m | str | 否 | 结束月份(YYYYMM),与start_m同时使用 |
| fields | list | 否 | 从Fields中选取需要查询的字段 |
Fields:
- month: 月份(格式为YYYYMM)
- ppi_yoy: 工业品出厂价格指数(PPI)-全部工业品-当月同比
- ppi_mp_yoy: PPI-生产资料-当月同比
- ppi_mp_qm_yoy: PPI-生产资料-采掘业-当月同比
- ppi_mp_rm_yoy: PPI-生产资料-原料业-当月同比
- ppi_mp_p_yoy: PPI-生产资料-加工业-当月同比
- ppi_cg_yoy: PPI-生活资料-当月同比
- ppi_cg_f_yoy: PPI-生活资料-食品类-当月同比
- ppi_cg_c_yoy: PPI-生活资料-衣着类-当月同比
- ppi_cg_adu_yoy: PPI-生活资料-一般日用品类-当月同比
- ppi_cg_dcg_yoy: PPI-生活资料-耐用消费品类-当月同比
- ppi_mom: PPI-全部工业品-环比
- ppi_mp_mom: PPI-生产资料-环比
- ppi_mp_qm_mom: PPI-生产资料-采掘业-环比
- ppi_mp_rm_mom: PPI-生产资料-原料业-环比
- ppi_mp_p_mom: PPI-生产资料-加工业-环比
- ppi_cg_mom: PPI-生活资料-环比
- ppi_cg_f_mom: PPI-生活资料-食品类-环比
- ppi_cg_c_mom: PPI-生活资料-衣着类-环比
- ppi_cg_adu_mom: PPI-生活资料-一般日用品类-环比
- ppi_cg_dcg_mom: PPI-生活资料-耐用消费品类-环比
- ppi_accu: PPI-全部工业品-累计同比
- ppi_mp_accu: PPI-生产资料-累计同比
- ppi_mp_qm_accu: PPI-生产资料-采掘业-累计同比
- ppi_mp_rm_accu: PPI-生产资料-原料业-累计同比
- ppi_mp_p_accu: PPI-生产资料-加工业-累计同比
- ppi_cg_accu: PPI-生活资料-累计同比
- ppi_cg_f_accu: PPI-生活资料-食品类-累计同比
- ppi_cg_c_accu: PPI-生活资料-衣着类-累计同比
- ppi_cg_adu_accu: PPI-生活资料-一般日用品类-累计同比
- ppi_cg_dcg_accu: PPI-生活资料-耐用消费品类-累计同比
| Name | Required | Description | Default |
|---|---|---|---|
| m | No | ||
| start_m | No | ||
| end_m | No | ||
| fields | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does not disclose whether the operation is read-only, whether authentication is needed, rate limits, or any side effects. The minimal description '获取...数据' implies a safe read, but this is not explicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a name, description, args table, and fields list. It is front-loaded with purpose. The fields list is lengthy but necessary. No unnecessary sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that there is no output schema, the description partially covers what data is returned via the fields list. However, it lacks details on response format, pagination, error handling, and default behavior when parameters are omitted.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, but the tool description provides a detailed table explaining each parameter's format and purpose. It also lists the available field values. This adds significant meaning beyond the schema's bare titles.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool retrieves PPI producer price index data ('获取PPI工业生产者出厂价格指数数据'). The name and description are clear. However, it does not differentiate from sibling tools like cn_cpi or cn_gdp, but the specificity of PPI makes confusion unlikely.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool compared to alternatives. The description does not mention prerequisites, exclusions, or when to prefer other tools. The parameter descriptions are present but usage context is missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dailyA
Name:
A股日线行情。
Description:
获取股票未复权的日线行情数据。
Args:
| 名称 | 类型 | 必填 | 描述 |
|------------|-------|------|----------------------------------------|
| ts_code | str | 否 | 股票代码(支持多个股票同时提取,逗号分隔) |
| trade_date | str | 否 | 交易日期(YYYYMMDD),不与start_date和end_date同时出现 |
| start_date | str | 否 | 开始日期(YYYYMMDD),与end_date同时出现 |
| end_date | str | 否 | 结束日期(YYYYMMDD),与start_date同时出现 |
| fields | list | 否 | 从Fields中选取需要查询的字段 |
Fields:
- ts_code: 股票代码
- trade_date: 交易日期
- open: 开盘价
- high: 最高价
- low: 最低价
- close: 收盘价
- pre_close: 昨收价【除权价,前复权】
- change: 涨跌额
- pct_chg: 涨跌幅 【基于除权后的昨收计算的涨跌幅:(今收-除权昨收)/除权昨收】
- vol: 成交量 (手)
- amount: 成交额 (千元)| Name | Required | Description | Default |
|---|---|---|---|
| ts_code | No | ||
| trade_date | No | ||
| start_date | No | ||
| end_date | No | ||
| fields | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and the description lacks behavioral traits such as rate limits, permissions, or data freshness. It only mentions the unadjusted nature and parameter constraints like mutual exclusivity of trade_date with start_date/end_date.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with tables and bullet points, but includes a redundant 'Name:' line. The description is clear and not overly verbose, though could be slightly more concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of output schema, the description provides the available fields and explains them. Parameters are fully documented. However, it omits details on pagination, error handling, default behavior when no parameters are given, and historical data range.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description thoroughly documents all 5 parameters: ts_code (supports multiple stocks), trade_date (format and mutual exclusivity), start_date/end_date (must be used together), and fields (select from listed fields). It also lists available output fields with meanings.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves A-share daily market data without adjustment using specific verb '获取' and resource '日线行情数据'. It distinguishes from sibling tools like balance sheet or cash flow data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool vs alternatives. The description implies usage for daily price data but does not provide exclusion criteria or comparison to other tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
incomeA
Name:
上市公司财务利润表。
Description:
获取上市公司财务三大报表之利润表数据。
Args:
| 名称 | 类型 | 必选 | 描述 |
|------------|--------|------|----------------------------------------------------------------------|
| ts_code | str | 是 | 股票代码,每次只能查询一支股票 |
| ann_date | str | 否 | 公告日期(YYYYMMDD格式) |
| f_ann_date | str | 否 | 实际公告日期(YYYYMMDD格式) |
| start_date | str | 否 | 公告开始日期(YYYYMMDD格式) |
| end_date | str | 否 | 公告结束日期 (YYYYMMDD格式) |
| period | str | 否 | 报告期(每个季度最后一天的日期,比如20171231表示年报,20170630半年报,20170930三季报) |
| report_type| str | 否 | 报告类型,参考文档最下方说明 |
| comp_type | str | 否 | 公司类型(一般工商业:1,银行:2,保险:3,证券:4) |
| fields | list | 否 | 从Fields中选取需要查询的字段 |
Fields:
- ts_code:TS代码
- ann_date:公告日期
- f_ann_date:实际公告日期
- end_date:报告期(每个季度最后一天的日期,比如20171231表示年报,20170630半年报,20170930三季报)
- report_type:报告类型 见底部表
- comp_type:公司类型(1一般工商业2银行3保险4证券)
- end_type:报告期类型
- basic_eps:基本每股收益
- diluted_eps:稀释每股收益
- total_revenue:营业总收入
- revenue:营业收入
- int_income:利息收入
- prem_earned:已赚保费
- comm_income:手续费及佣金收入
- n_commis_income:手续费及佣金净收入
- n_oth_income:其他经营净收益
- n_oth_b_income:加:其他业务净收益
- prem_income:保险业务收入
- out_prem:减:分出保费
- une_prem_reser:提取未到期责任准备金
- reins_income:其中:分保费收入
- n_sec_tb_income:代理买卖证券业务净收入
- n_sec_uw_income:证券承销业务净收入
- n_asset_mg_income:受托客户资产管理业务净收入
- oth_b_income:其他业务收入
- fv_value_chg_gain:加:公允价值变动净收益
- invest_income:加:投资净收益
- ass_invest_income:其中:对联营企业和合营企业的投资收益
- forex_gain:加:汇兑净收益
- total_cogs:营业总成本
- oper_cost:减:营业成本
- int_exp:减:利息支出
- comm_exp:减:手续费及佣金支出
- biz_tax_surchg:减:营业税金及附加
- sell_exp:减:销售费用
- admin_exp:减:管理费用
- fin_exp:减:财务费用
- assets_impair_loss:减:资产减值损失
- prem_refund:退保金
- compens_payout:赔付总支出
- reser_insur_liab:提取保险责任准备金
- div_payt:保户红利支出
- reins_exp:分保费用
- oper_exp:营业支出
- compens_payout_refu:减:摊回赔付支出
- insur_reser_refu:减:摊回保险责任准备金
- reins_cost_refund:减:摊回分保费用
- other_bus_cost:其他业务成本
- operate_profit:营业利润
- non_oper_income:加:营业外收入
- non_oper_exp:减:营业外支出
- nca_disploss:其中:减:非流动资产处置净损失
- total_profit:利润总额
- income_tax:所得税费用
- n_income:净利润(含少数股东损益)
- n_income_attr_p:净利润(不含少数股东损益)
- minority_gain:少数股东损益
- oth_compr_income:其他综合收益
- t_compr_income:综合收益总额
- compr_inc_attr_p:归属于母公司(或股东)的综合收益总额
- compr_inc_attr_m_s:归属于少数股东的综合收益总额
- ebit:息税前利润
- ebitda:息税折旧摊销前利润
- insurance_exp:保险业务支出
- undist_profit:年初未分配利润
- distable_profit:可分配利润
- rd_exp:研发费用
- fin_exp_int_exp:财务费用:利息费用
- fin_exp_int_inc:财务费用:利息收入
- transfer_surplus_rese:盈余公积转入
- transfer_housing_imprest:住房周转金转入
- transfer_oth:其他转入
- adj_lossgain:调整以前年度损益
- withdra_legal_surplus:提取法定盈余公积
- withdra_legal_pubfund:提取法定公益金
- withdra_biz_devfund:提取企业发展基金
- withdra_rese_fund:提取储备基金
- withdra_oth_ersu:提取任意盈余公积金
- workers_welfare:职工奖金福利
- distr_profit_shrhder:可供股东分配的利润
- prfshare_payable_dvd:应付优先股股利
- comshare_payable_dvd:应付普通股股利
- capit_comstock_div:转作股本的普通股股利
- net_after_nr_lp_correct:扣除非经常性损益后的净利润(更正前)
- credit_impa_loss:信用减值损失
- net_expo_hedging_benefits:净敞口套期收益
- oth_impair_loss_assets:其他资产减值损失
- total_opcost:营业总成本(二)
- amodcost_fin_assets:以摊余成本计量的金融资产终止确认收益
- oth_income:其他收益
- asset_disp_income:资产处置收益
- continued_net_profit:持续经营净利润
- end_net_profit:终止经营净利润
- update_flag:更新标识
| Name | Required | Description | Default |
|---|---|---|---|
| ts_code | No | ||
| ann_date | No | ||
| f_ann_date | No | ||
| start_date | No | ||
| end_date | No | ||
| period | No | ||
| report_type | No | ||
| comp_type | No | ||
| fields | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description lacks disclosure of behavioral traits such as required permissions, rate limits, or data freshness. The read-only nature is implied but not stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with a clear purpose but is lengthy due to a large field list and parameter table. While organized, it could be more concise for efficient use by an AI agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers parameters and output fields adequately but lacks examples or explanations of parameter interactions (e.g., period vs date range). No output schema is provided, so return values are inferred from the field list.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description includes a detailed table with parameter names, types, required status, and descriptions, compensating for the 0% schema description coverage. The extensive field list further clarifies the output options.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states in Chinese that the tool retrieves income statement data for listed companies, distinguishing it from sibling tools like balancesheet and cashflow, which cover other financial statements.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for income statements but provides no explicit guidance on when to use this tool versus alternatives like balancesheet or cashflow, nor any conditions for when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sf_monthA
Name:
社融数据(月度)。
Description:
获取月度社会融资数据。
Args:
| 名称 | 类型 | 必填 | 描述 |
|------------|-------|------|----------------------------------------|
| m | str | 否 | 月份(YYYYMM),支持多个月份同时输入,逗号分隔 |
| start_m | str | 否 | 开始月份(YYYYMM),与end_m同时使用 |
| end_m | str | 否 | 结束月份(YYYYMM),与start_m同时使用 |
| fields | list | 否 | 从Fields中选取需要查询的字段 |
Fields:
- month: 月度
- inc_month: 社融增量当月值(亿元)
- inc_cumval: 社融增量累计值(亿元)
- stk_endval: 社融存量期末值(万亿元)
| Name | Required | Description | Default |
|---|---|---|---|
| m | No | ||
| start_m | No | ||
| end_m | No | ||
| fields | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose behavior beyond the basic retrieval. It lacks details on authentication, rate limits, default behavior when parameters are omitted, or error handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, uses a clear table for parameters, and lists fields in bullet points. No redundant content, and the structure is easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description adequately covers the 4 optional parameters and lists available fields, but lacks explanation of default return behavior when no parameters are specified. No output schema, but field list helps. It is fairly complete for a simple retrieval tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description compensates well by explaining parameter formats (YYYYMM), usage constraints (start_m/end_m paired), and field selection from a predefined list. This adds significant meaning beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves monthly social financing data. The name 'sf_month' and description '获取月度社会融资数据' directly convey the purpose, and it is distinct from sibling tools like cn_cpi or cn_gdp.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides parameter usage details (e.g., multiple months, start_m/end_m pairing) but does not offer guidance on when to use this tool over siblings. No explicit context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
shibor_lprB
Name:
LPR贷款基础利率。
Description:
获取LPR贷款基础利率。贷款基础利率(Loan Prime Rate,简称LPR),是基于报价行自主报出的最优贷款利率计算并发布的贷款市场参考利率。
Args:
| 名称 | 类型 | 必填 | 描述 |
|------------|-------|------|----------------------------------------|
| start_date | str | 否 | 开始日期(YYYYMMDD),与end_date同时出现 |
| end_date | str | 否 | 结束日期(YYYYMMDD),与start_date同时出现 |
| fields | list | 否 | 从Fields中选取需要查询的字段 |
Fields:
- date:日期
- 1y:1年贷款利率
- 5y:5年贷款利率| Name | Required | Description | Default |
|---|---|---|---|
| start_date | No | ||
| end_date | No | ||
| fields | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must fully disclose behavior. It lists parameters and fields but does not explain default behavior when no dates are given, update frequency, data sources, or error handling. This is minimal transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with sections for Name, Description, Args, and Fields. It is reasonably concise, though some repetition of 'LPR贷款基础利率' could be trimmed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The Fields section implies return values (date, 1y, 5y), but it lacks details on default date range, rate precision, or data availability. For a simple lookup tool, it is adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Despite 0% schema coverage, the description includes a table explaining each parameter: start_date and end_date must be used together, fields selects from the listed options. This adds meaningful context beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool retrieves LPR (Loan Prime Rate) rates. It explains what LPR is, distinguishing it from sibling tools like cn_cpi or cn_gdp, but does not explicitly clarify that it returns historical time series.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like other financial indicators. It lacks conditions, prerequisites, or situational recommendations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stock_basicB
Name:
股票基础信息。
Description:
获取股票的名称、代码等基础信息。
Args:
| 名称 | 类型 | 必填 | 描述 |
|------------|-------|------|----------------------------------------|
| ts_code | str | 否 | 股票代码,每次只能查询一支股票 |
| name | str | 否 | 股票名称 |
| market | str | 否 | 市场类别 (主板/创业板/科创板/CDR/北交所) |
| list_status | str | 否 | 上市状态(L:上市,D:退市,P:暂停上市。默认是L) |
| exchange | str | 否 | 交易所代码 (上交所:SSE, 深交所:SZSE 北交所:BSE) |
| is_hs | str | 否 | 是否沪深港通标的(N:否,H:沪股通,S:深股通) |
| fields | list | 否 | 从Fields中选取需要查询的字段 |
Fields:
- ts_code: TS代码
- symbol: 股票代码
- name: 股票名称
- area: 地域
- industry: 所属行业
- fullname: 股票全称
- enname: 英文全称
- cnspell: 拼音缩写
- market: 市场类型(主板/创业板/科创板/CDR)
- exchange: 交易所代码
- curr_type: 交易货币
- list_status: 上市状态 L上市 D退市 P暂停上市
- list_date: 上市日期
- delist_date: 退市日期
- is_hs: 是否沪深港通标的,N否 H沪股通 S深股通
- act_name: 实控人名称
- act_ent_type: 实控人企业性质
| Name | Required | Description | Default |
|---|---|---|---|
| ts_code | No | ||
| name | No | ||
| market | No | ||
| list_status | No | ||
| exchange | No | ||
| is_hs | No | ||
| fields | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description lacks behavioral details such as read-only nature, data freshness, rate limits, or side effects. The tool is implicitly a query, but not stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with separate Args and Fields tables, but somewhat lengthy. Could be more concise without losing essential info.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Comprehensive for a simple query tool: explains all parameters, includes return field descriptions. No output schema but fields table compensates. Complete context for basic stock info retrieval.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% but the description includes a detailed table explaining each parameter's meaning, default, and possible values. The Fields table adds meaning to return values, compensates for lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it retrieves basic stock info (name, code, etc.), with a specific verb '获取' and resource '基础信息'. It distinguishes from financial statement tools like balancesheet but doesn't explicitly differentiate from sibling bak_basic.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like bak_basic or other stock info tools. No explicit when-not-to-use or prerequisite conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stock_companyB
Name:
上市公司基本信息。
Description:
获取上市公司基础信息。
Args:
| 名称 | 类型 | 必填 | 描述 |
|------------|-------|------|----------------------------------------|
| ts_code | str | 否 | 股票代码,每次只能查询一家公司 |
| exchange | str | 否 | 交易所代码 (上交所:SSE, 深交所:SZSE 北交所:BSE) |
| fields | list | 否 | 从Fields中选取需要查询的字段 |
Fields:
- ts_code:股票代码
- com_name:公司全称
- com_id:统一社会信用代码
- exchange:交易所代码
- chairman:法人代表
- manager:总经理
- secretary:董秘
- reg_capital:注册资本(万元)
- setup_date:注册日期
- province:所在省份
- city:所在城市
- introduction:公司介绍
- website:公司主页
- email:电子邮件
- office:办公室
- employees:员工人数
- main_business:主要业务及产品
- business_scope:经营范围| Name | Required | Description | Default |
|---|---|---|---|
| ts_code | No | ||
| exchange | No | ||
| fields | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does not disclose whether the operation is read-only, any authentication requirements, rate limits, or side effects beyond stating it 'gets' data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with sections (Name, Description, Args, Fields) and uses Markdown. It is somewhat lengthy but each part adds value. Could be slightly more concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description covers parameter details and return fields adequately. However, it lacks explanation of behavior when multiple parameters are combined, and does not specify the output format or edge cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the tool description provides detailed parameter descriptions in Chinese, including constraints (e.g., '每次只能查询一家公司') and enum values for exchange. This adds significant meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves basic company information ('获取上市公司基础信息'). The name 'stock_company' aligns with this purpose. However, it does not differentiate from sibling tool 'stock_basic', which may have overlapping functionality.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions that only one company can be queried at a time and allows selecting fields, but provides no guidance on when to use this tool versus alternatives (e.g., stock_basic) or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool targets a distinct data domain: stock fundamentals, financial statements, daily prices, macro indicators (CPI, GDP, M2, PMI, PPI, social financing, LPR), and company info. There is no overlap, and the descriptions clearly differentiate them.
Naming patterns are mixed: some tools use 'cn_' prefix for macro data (cn_cpi, cn_gdp), others use plain English names (balancesheet, cashflow, income), and 'bak_basic' is an unclear abbreviation. While all names use underscores, the conventions are not uniform across the set.
With 14 tools covering stock data, financial statements, and macroeconomic indicators, the count is well-scoped for a financial data server. Each tool serves a specific purpose without bloat.
The tool set covers core equity data (basics, fundamentals, financial statements, daily prices) and major macro indicators. Minor gaps exist, such as missing stock dividends or index data, but the overall surface is comprehensive for the domain.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
China A-share market data for research, backtesting and AI agents via MCP.
MCP server giving AI agents one-connection access to China A-share market intelligence: financials,
The financial MCP for AI agents - 90+ financial tables, SEC filings, signals, alt-data.
Real SEC, 13F, insider, congress & macro data your AI agent can cite. Hosted MCP, 24 tools.
Related MCP Servers
- AlicenseCqualityDmaintenanceThe MCP provides comprehensive financial data and analytical tool support for AI large language models, specifically including the following five core data capabilities: Stock Analysis/ETF Analysis/Public Funds/News & Information/General Tools More Info: https://github.com/shenqingtech/deepq-finan44357ISC
- AlicenseNot gradedqualityDmaintenanceMCP server providing professional financial data access for LLMs through providers like Tushare, Wind, and DataYes.1Apache 2.0
- AlicenseNot gradedqualityFmaintenanceProvides access to Chinese mainland financial data including A-stock quotes, financial statements, industry analysis, and macroeconomics through 42 MCP tools, with automatic data source fallback and no API key required.40Apache 2.0
- AlicenseNot gradedqualityDmaintenanceProvides 10 financial data tools (market data, economic indicators, news, insider trades, and calendars) via a single MCP layer, enabling any MCP-compatible LLM to access diverse financial data through a unified interface.MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/zlinzzzz/finData-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server