A LangGraph-based agent that answers questions about Rohan's portfolio using live weather and stock data via MCP servers
Three tools with clear verb-noun naming (get_stock_analysis, get_current_weather, get_forecast) and reasonable descriptions (100-150 chars). All tools have input schemas with type definitions and parameter descriptions. However, output schemas are not documented, LLMs cannot predict return structure. Error handling returns structured {ok, error} but lacks recovery guidance. No tool annotations (readOnlyHint, idempotentHint). Parameter descriptions are minimal (10-30 chars) and lack format/constraint details. No pagination support despite weather forecast accepting 'days' parameter. Missing documentation of what fields are returned and their types.
Current weather conditions for a city: temperature, humidity, wind and sky state.
Daily forecast for a city: min/max temperature and conditions for up to 7 days.
Price, day range, recent news and AI recommendation for one stock ticker (e.g. AAPL, TSLA, INFY). Expects a ticker symbol, not a company name.
Output schemas not documented. LLMs cannot predict return structure (fields, types, presence). get_stock_analysis returns 15+ fields but none are formally specified.
Parameter descriptions are too brief (10-30 chars). 'City name to get weather for' lacks format constraints, valid ranges, or examples. Rubric baseline: 72 chars average.
No tool annotations. Tools are read-only but lack readOnlyHint. Agents cannot distinguish safe tools from destructive ones without explicit hints.
Error handling returns {ok: false, error: string} but lacks recovery guidance. 'Stock service timed out' tells agent nothing about retry strategy or alternatives.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 53 | 2025-06-18+ | v2 |
get_forecast 'days' parameter lacks constraints. Accepts 1-7 but no min/max validation visible. Unbounded numeric params invite absurd LLM inputs.