A MCP server for accessing J-Quants financial data API, providing tools to search for listed stocks and retrieve daily quotes and financial statements
Three tools with basic verb-noun naming (search_company, get_daily_quotes, get_financial_statements). All have descriptions and input schemas with types. However, descriptions are verbose (200+ chars) and include example values that LLMs may reuse literally. Parameters lack enums and format constraints. Output schemas are not documented, tools return JSON strings without specifying field structure. Error handling returns JSON with 'error' and 'status' fields but provides no recovery guidance. No tool annotations (readOnlyHint, idempotentHint). Parameter descriptions embed examples ('トヨタ', '72030', '2023-01-01') which violates best practice, LLMs latch onto these literal values. Date parameters lack format validation hints. No pagination metadata (total count, next_cursor) documented.
Retrieve daily stock price data for a specified stock code. The available data spans from 2 years prior to today up until 12 weeks ago. Args: code (str): Specify the stock code. Example: "72030" (トヨタ自動車) from_date (str): Specify the start date. Example: "2023-01-01" must be in YYYY-MM-DD format to_date (str): Specify the end date. Example: "2023-01-31" must be in YYYY-MM-DD format limit (int, optional): Maximum number of results to retrieve. Defaults to 10. start_position (int, optional): The starting position for the search. Defaults to 0. Returns: str: API response text
Retrieve financial statements for a specified stock code. The available data spans from 2 years prior to today up until 12 weeks ago. You can obtain quarterly financial summary reports and disclosure information regarding revisions to performance and dividend information (mainly numerical data) for listed companies. Args: code (str): Specify the stock code. Example: "72030" (トヨタ自動車) limit (int, optional): Maximum number of results to retrieve. Defaults to 10. start_position (int, optional): The starting position for the search. Defaults to 0.
Search for listed stocks by company name. Args: query (str): Query parameter for searching company names. Specify a string contained in the company name. Example: Specifying "トヨタ" will search for stocks with "トヨタ" in the company name. Must be in Japanese. limit (int, optional): Maximum number of results to retrieve. Defaults to 10. start_position (int, optional): The starting position for the search. Defaults to 0. Returns: str: API response text
Output schemas not documented. Tools return JSON strings without specifying field structure (e.g., 'info', 'daily_quotes', 'statements' objects). LLMs cannot plan downstream calls or extract data reliably.
Descriptions embed literal example values (company names 'トヨタ', stock codes '72030', dates '2023-01-01'). LLMs frequently reuse examples verbatim instead of adapting to context, causing failures.
No parameter enums or format constraints. 'from_date' and 'to_date' accept free-form strings; no regex pattern or validation hint. LLMs may pass invalid formats (e.g., '01/23/2023' instead of '2023-01-23').
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 50 | 2026-07-28+ | v2 |
Error responses lack recovery guidance. Errors return {'error': '...', 'status': 'timeout'} but do not tell the LLM what to do next (retry? ask user? call a different tool?).
No tool annotations. Tools lack readOnlyHint, idempotentHint, or destructiveHint. Agents cannot determine if calls are safe to retry or have side effects.