The server has 4 tools with reasonable naming conventions (all start with action verbs: get_, download_). Descriptions are present and substantive (ranging 95-273 chars, within the 10-1024 baseline). Input schemas are fully defined with types and descriptions for all parameters. However, there are significant gaps: (1) output schemas are not documented, tools return strings or untyped responses, making it impossible for LLMs to structure downstream reasoning; (2) error handling is minimal, all tools return generic 'Error: {str(e)}' messages with no recovery guidance; (3) parameter validation is absent, no enums for period values despite a documented list of valid options, no range constraints on numeric fields, no clarification of interdependencies; (4) some descriptions lack detail about when to use the tool vs. similar alternatives (e.g., download_history_data vs. download_history_data2 distinction could be clearer).
Download historical market data for a list of stocks.
Download historical market data for a specific stock.
Retrieve detailed information about a financial instrument.
Retrieve market data for a list of stocks. Please make sure you have downloaded the data using download_history_data function.
Output schemas are not documented. All tools return plain strings (e.g., 'str: A string representation...'), making it impossible for LLMs to extract structured fields or chain tool calls. LLMs cannot plan multi-step workflows without knowing what data is returned.
Period parameter accepts free-form strings instead of an enum. Descriptions list valid values ('tick', '1m', '5m', etc.) but do not enforce them. LLMs may hallucinate invalid periods like '2m' or '30sec'.
Error handling is generic and offers no recovery guidance. All exceptions return 'Error: {str(e)}', which tells the LLM nothing about whether to retry, ask the user, or call a different tool. No error classification (retryable vs. user-fixable vs. fatal).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 57 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 45 | - | v1 |
No distinction in naming or description between download_history_data_tool (single stock) and download_history_data2_tool (stock list). The '_2' suffix is opaque; names should be verb_noun patterns like 'download_stock_history' vs 'download_stocks_history' or use more explicit suffixes.
No input validation or constraint documentation for numeric fields (count in get_market_data_ex_tool). 'count' accepts -1 to mean 'all', but this is not a standard pattern and wastes tokens on validation reasoning.
get_market_data_ex_tool description says 'Please make sure you have downloaded the data using download_history_data function.' This is a precondition, but it is poorly documented, LLMs may not recognize it as a hard dependency and attempt to call get_market_data_ex_tool on undownloaded stocks, causing silent failures.