Financial data tools powered by Yahoo Finance. Use these to get stock prices, news, earnings, financial statements, insider transactions, and SEC filings.
finz provides 8 financial data tools with consistent naming (all get_* verbs) and reasonable descriptions (100-150 chars each). All tools have single-parameter input schemas with type and description. However, output schemas are entirely undocumented, the code returns complex nested dicts (e.g., get_ticker returns 8+ nested objects) with no schema specification visible to the LLM. Parameter descriptions are minimal (e.g., 'Stock ticker symbol (e.g., AAPL)', under 50 chars). No error handling guidance, no pagination support despite tools returning variable-length results (news, earnings), and no input validation beyond type hints. Tools are well-composed (each does one thing) but lack the depth of documentation expected for production use.
Annual balance sheet for a ticker. Example: get_balance_sheet("AAPL")
Earnings dates and EPS estimates for a ticker. Example: get_earnings("AAPL")
Analyst revenue and earnings growth estimates for a ticker. Example: get_growth_estimate("MSFT")
Annual income statement for a ticker. Example: get_income_stmt("AAPL")
Recent insider buy/sell transactions for a ticker. Example: get_insider_transactions("PLTR")
Latest news articles for a stock: title, summary, date, provider, URL. Example: get_news("NVDA")
SEC filings list (type, date, URL) for a ticker. Example: get_sec_filings("TSLA")
Output schemas completely undocumented. get_ticker returns 8 nested objects (main_info, valuation, ratios, price_performance, debt, dividends, risk, price_targets) with no schema visible to LLM. LLM cannot plan downstream tool calls or extract specific fields reliably.
No pagination or result limits. get_news returns up to 11 items hardcoded; get_earnings and get_growth_estimate return raw DataFrames serialized to JSON with no limit. Large result sets will bloat context and degrade LLM reasoning.
Parameter descriptions are minimal (under 50 chars). 'Stock ticker symbol (e.g., AAPL)' provides no guidance on format constraints, valid ranges, or error cases. LLM cannot self-correct invalid input.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 55 | 2026-07-28+ | v2 |
Full market snapshot for a stock: price, valuation, ratios, margins, risk, debt, dividends, and price targets. Example: get_ticker("AAPL")
No error handling or recovery guidance. If yfinance fails (invalid ticker, rate limit, network error), the exception propagates with no actionable message. LLM receives raw Python traceback instead of 'Ticker not found. Try search_tickers() or verify symbol.'
No input validation. Tools accept any string as symbol parameter. Invalid tickers (e.g., 'XYZ123', empty string) will fail at yfinance layer with unhelpful errors. Should validate ticker format and return 'Invalid ticker format' before calling API.