MCP server for TDNET timely disclosures (適時開示) - earnings, dividends, M&A, buybacks from the Tokyo Stock Exchange
The server demonstrates solid definition quality with well-structured tools, clear naming conventions, and comprehensive parameter validation. All 4 tools follow verb-noun patterns (get_*, search_*) and have detailed descriptions. However, there are notable gaps in output schema documentation and error handling guidance. The tools are read-only and low-risk, but lack explicit error recovery patterns and structured output documentation that would elevate this to A-tier (80+).
Get disclosures for a specific company. Returns all recent disclosures for the specified company, including earnings, dividends, forecast revisions, etc. Example: get_company_disclosures("7203") → Toyota's disclosures
Get all disclosures for a specific date. Returns all TDNET disclosures filed on the specified date. Note: Only the last ~30 days are available. Example: get_disclosures_by_date("2026-02-14")
Get the most recent TDNET disclosures. Returns the latest timely disclosures from the Tokyo Stock Exchange, including earnings reports (決算短信), dividend changes, forecast revisions, stock buybacks, and other corporate announcements. Each disclosure includes company code, name, title, category, and document URL.
Search TDNET disclosures by keyword. Searches recent disclosures by company name, stock code, or title keyword. Examples: "トヨタ", "7203", "決算短信", "配当"
Output schema not documented in tool descriptions. Tools return dict[str, Any] with no schema specification visible. LLMs cannot infer return structure (field names, types, pagination) without explicit documentation.
No error handling guidance or recovery paths documented. Tools may fail with network errors, invalid dates, or empty results, but descriptions provide no actionable error messages or next steps for LLMs.
get_disclosures_by_date accepts date string without documenting failure modes: what happens if date is outside the ~30-day window? Description mentions the constraint but not the error behavior.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 12 | <=2025-11-25 | v2 |
| 2026-03-09 | D | 51 | - | v1 |
search_disclosures keyword parameter has no format guidance beyond max_length=100. Description gives examples but no rule for what constitutes valid input. LLMs may pass arbitrary strings that yield no results without clear error handling.
No pagination or result limit documentation in output schema. Tools accept limit parameters (default 50, max 300) but users don't know what structure pagination returns (is there a next_cursor? total_count?) or how to handle large result sets.