MCP server suite for AI agent testing with financial data tools. Provides market data fetching, technical indicator computation, risk analysis, and stock price lookups via yfinance and Open-Meteo APIs.
9 tools with mixed quality. Core financial tools (get_market_data, compute_indicators, analyze_stock) have reasonable descriptions (100-200 chars) and basic schemas, but lack output documentation and error guidance. Utility tools (wikipedia_search, get_weather, convert_units) are generic and underdescribed. No tool has documented return schemas, error recovery paths, or actionable error messages. Parameter descriptions exist but are often vague (e.g., 'dict with keys' instead of formal schema). No tool annotations (readOnlyHint, destructiveHint). Composition is poor: analyze_stock combines fetch+compute but doesn't document this multi-step behavior. Risk analysis tool lacks input validation guidance.
Fetch market data AND compute indicators for a given ticker. Returns OHLCV + SMA, EMA, RSI, MACD ready for strategy generation. Args: ticker: Stock symbol, e.g. 'AAPL' interval: '1d', '1wk', '1m' start_date: YYYY-MM-DD end_date: YYYY-MM-DD
Calculate the future value of an investment using compound interest. Formula: A = P * (1 + r)^n where P = principal, r = annual rate (as decimal), n = years Args: principal: Initial investment amount (e.g. 1000.0) annual_rate_percent: Annual growth rate in percent (e.g. 7.5 means 7.5%) years: Number of years to grow Returns: A dict with the final amount, total gain, and a year-by-year breakdown.
Compute SMA, EMA, RSI, and MACD from OHLCV data. SMA : average price over the last n periods EMA : weighted average that gives more importance to recent prices RSI : momentum indicator based on average gains versus average losses MACD : difference between two EMAs Args: ohlcv: dict with keys ['Open', 'High', 'Low', 'Close', 'Volume'] Returns: Updated dict with added indicators
Convert a numeric value between units. Supported: length (m, km, mi, ft, in, yd), mass (kg, g, lb, oz, t), speed (m/s, km/h, mph, knots), temperature (C, F, K). Args: value: numeric value to convert from_unit: source unit, e.g. 'km', 'lbs', 'F' to_unit: target unit, e.g. 'miles', 'kg', 'C'
No output schemas documented. Tools return dicts/lists but LLMs cannot infer field names, types, or structure. Forces LLMs to guess at response shape and risks extraction errors.
No error handling or recovery guidance. Tools return raw errors (e.g., 'Could not retrieve price') without actionable next steps. LLMs cannot self-correct or retry intelligently.
Parameter descriptions use informal language ('dict with keys') instead of formal constraints. No enums for constrained values (e.g., interval: '1d'|'1wk'|'1m'). No min/max for numeric params (principal, years).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 50 | 2026-07-28+ | v2 |
Fetch historical OHLCV data using yfinance. Args: ticker: Stock symbol, e.g., 'AAPL' for apple start_date: Start date in YYYY-MM-DD format end_date: End date in YYYY-MM-DD format interval : The intervals in which the data is returned , e.g.,"1wk", "1m" , "1d" Returns: the market data as a dictionary of lists (keys are : Open : opening price High : highest price Low : lowest price Close : closing price Adj Close : adjusted price Volume : exchanged volume
Get the current stock price and basic info for a given ticker symbol. Args: ticker: Stock ticker symbol, e.g. 'AAPL', 'MSFT', 'MC.PA' (LVMH), 'AIR.PA' (Airbus) Returns: A dict with company name, current price, currency, and 52-week range.
Get current weather for a city via Open-Meteo (no API key needed). Args: city: e.g. 'Paris', 'Tokyo', 'New York' Returns: Temperature (°C), wind speed (km/h), and weather condition.
Compute risk metrics: Sharpe ratio, max drawdown, annualized volatility. Args: ohlcv: dict with 'Close' prices Returns: Dictionary with risk metrics
Fetch the Wikipedia summary for a given topic. Args: query: e.g. 'Apple Inc', 'Eiffel Tower', 'compound interest' Returns: Article title, a short summary, and the Wikipedia URL.
analyze_stock combines two responsibilities (fetch + compute) without documenting this composition. Tool name does not signal multi-step behavior. Violates single-responsibility principle.
Utility tools (wikipedia_search, get_weather, convert_units) are generic and lack domain context. Descriptions under 50 chars. No guidance on when to use vs alternatives. Low signal for LLM tool selection.