Skip to content

bug(mcp): Fundamentals tools require annual periods; quarterly returns empty; undocumented data limits #61

@langalpha-bot

Description

@langalpha-bot

What I was doing

Comprehensive testing of all 14 MCP tools across 3 categories (price_data, fundamentals, macro) to validate production readiness. Initial results showed 7/14 endpoints returning 0 records with default/intuitive parameters.

What went wrong

7 endpoints returned empty datasets initially, appearing to be non-functional:

  • get_financial_statements(symbol="MSFT") → 0 records
  • get_financial_ratios(symbol="MSFT") → 0 records
  • get_growth_metrics(symbol="MSFT") → 0 records
  • get_insider_trades(symbol="MSFT") → 0 records
  • get_economic_indicator(...) → 0 records
  • get_earnings_calendar(from_date="2026-03-01", to_date="2026-03-15") → 0 records
  • get_economic_calendar(from_date="2026-03-01", to_date="2026-03-15") → 0 records

Root cause: Not tool bugs, but missing/misleading parameter documentation and undiscovered constraints.

Root Causes & Limitations Discovered

1. Fundamentals Tools - Period Parameter Constraint

Issue: Quarterly periods return 0 records; annual periods required but not documented

Details:

  • get_financial_statements(symbol="MSFT", period="annual", limit=10) → ✓ 10 records
  • get_financial_statements(symbol="TSLA", period="quarterly", limit=8) → ✗ 0 records
  • Same issue affects: get_financial_ratios, get_growth_metrics

Test Results: 80% success with annual, 0% with quarterly

Severity: Medium — Tools work but undocumented constraint causes user confusion

2. Fundamentals Tools - Limited Historical Data

Issue: Fundamental metrics only available for ~2 years of annual data

Details:

  • get_financial_ratios() consistently returns 2 records max per symbol
  • get_growth_metrics() consistently returns 2 records max per symbol
  • No documented limit or explanation

3. Economic Indicators - Date Range Sensitivity

Issue: Narrow date ranges (1-15 days) return 0 records; requires monthly+ history

Details:

  • Problem: Indicators are monthly data, but users may request narrow windows
  • Need better documentation on date range requirements

4. Earnings Calendar - Hard Limit at 4000 Records

Issue: get_earnings_calendar() capped at 4000 records, not documented

Details:

  • All tested date ranges return exactly 4000 records
  • No pagination or "more data available" indicator
  • Users unaware they're getting truncated results

Severity: Medium — Silent data truncation is dangerous for research

5. Some Economic Indicators - Minimal Data Points

Issue: Several economic indicators return only 2-3 records

  • "GDP": 3 records (quarterly data)
  • "federalFundsRate": 2 records
  • "nonFarmPayrolls": 2 records

Where the Issue Likely Is

Documentation Issues (Primary)

  • tools/docs/fundamentals/*.md - Missing note about period parameter constraint (annual only)
  • tools/docs/fundamentals/*.md - Missing note about ~2 year historical limit
  • tools/docs/macro/get_earnings_calendar.md - Missing documentation of 4000 record cap
  • tools/docs/macro/get_economic_indicator.md - Missing guidance on date range requirements

Test Results Summary

Tool Fix Applied Success Rate
get_financial_statements Use period="annual" 80%
get_financial_ratios Use period="annual" 80%
get_growth_metrics Use period="annual" 80%
get_insider_trades (no fix needed) 100%
get_economic_indicator (works correctly) 100%
get_earnings_calendar Use 2+ month range 100%
get_economic_calendar Use 3-6 month range 100%

Overall: 100% of endpoints functional after parameter discovery

Suggested Fixes

High Priority (Documentation)

  1. tools/docs/fundamentals/get_financial_statements.md

    • Add: "⚠️ Only annual periods supported. Quarterly returns empty results."
    • Add: "⏱️ Limited to ~2 years of historical annual data"
  2. tools/docs/fundamentals/get_financial_ratios.md

    • Add: "⚠️ Only annual periods supported. Quarterly returns empty results."
  3. tools/docs/fundamentals/get_growth_metrics.md

    • Add: "⚠️ Only annual periods supported. Quarterly returns empty results."
  4. tools/docs/macro/get_earnings_calendar.md

    • Add: "📌 Results capped at 4000 records per query."
  5. tools/docs/macro/get_economic_indicator.md

    • Add: "📊 Indicators are monthly or quarterly. Daily/weekly queries return 0 records."

Environment

  • Thread: 2026-03-09/10 MCP Tools Comprehensive Testing
  • Error Type: mcp_documentation + mcp_data_constraints
  • Test Coverage: 50 parameter combinations across 7 endpoints, 100% reproducible

Metadata

Metadata

Assignees

No one assigned

    Labels

    agent-reportedLabel used by LangAlpha Agent to self report issuesbugSomething isn't workingdocumentationImprovements or additions to documentation

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions