AI investment-analysis agent (MCP server) — financials, ratios, peers, DCF, moat, risk and a 0-100 rating for NSE/BSE and global companies.
Investo demonstrates solid definition quality with 25 well-named tools following verb_noun conventions (search_company, get_financials, analyze_company). All tools have descriptions (avg ~120 chars, within 10-1024 baseline). Input schemas are present and typed with enums for market/period parameters. Tool annotations (readOnlyHint, destructiveHint) are correctly applied. However, several tools lack parameter descriptions (e.g., get_peer_group_directory and get_provider_status have empty input objects with no guidance), and output schemas are inferred from pydantic models rather than explicitly documented in descriptions. Error handling is basic, no recovery guidance or actionable error messages visible in the code sample. The export_report tool correctly sandboxes file paths, but most tools assume successful API calls without fallback strategies.
Full investment analysis: profile, financials, ratios, peers, DCF, moat, risk, management, news, Buffett checklist, SWOT seeds and a 0-100 rating. Returns an AnalysisReport with an auto-generated HTML export.
Multi-company comparison: side-by-side ratios, valuations, growth, quality scores.
Competitor comparison table vs sector peers (revenue, margins, valuation, growth).
Two-stage DCF: intrinsic value/share, margin of safety and expected return. Optional overrides: discount_rate (e.g. 0.12), terminal_growth (e.g. 0.04), years, growth_rate. Handles cases where statements and the stock trade in different currencies.
Export an AnalysisReport to HTML or PDF (path is sandboxed to the export directory).
AI/ML adoption signals: product mentions, R&D spend, competitive positioning.
Two tools (get_peer_group_directory, get_provider_status) have empty input schemas with no parameter descriptions. LLMs cannot infer what these tools do or when to call them without explicit guidance.
Output schemas are not explicitly documented in tool descriptions. Descriptions state what the tool returns (e.g., 'AnalysisReport') but do not detail the structure of returned fields. LLMs must infer output shape from pydantic model names alone.
No error handling guidance visible in tool descriptions. Tools do not document what happens on API failures (e.g., 'If Yahoo Finance is unavailable, returns cached data' or 'Raises ValueError if ticker not found'). Agents cannot plan recovery.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 60 | <=2025-11-25 | v2 |
Warren Buffett–style quality checklist: ROE, ROIC, debt, FCF, moat, management, margin of safety.
Company profile: sector, industry, business summary, market cap, executives.
Income statement, balance sheet and cash flow (period = 'annual' or 'quarterly').
Growth outlook: revenue/earnings CAGR, analyst estimates, guidance.
Sector sub-domains, demand drivers, industry CAGR and risks.
Structured investment thesis: bull case, bear case, key catalysts, risks.
Valuation, profitability, leverage, liquidity, growth and cash-flow ratios.
Executives, promoter/insider/institutional holding and capital-allocation signals.
Recent company news, categorized (earnings, M&A, management, legal, product/AI).
List all available peer groups (curated and auto-detected).
Check data provider health (Yahoo Finance, NSE, BSE, SEC).
Red flag report: accounting anomalies, governance concerns, litigation, regulatory issues.
Relative valuation: compare a company's multiples to peers and historical range.
US company SEC EDGAR facts (10-K/10-Q filings, CIK lookup).
NSE/BSE shareholding pattern (promoter, institutional, public holding).
Technical analysis snapshot (52-week high/low, moving averages, momentum).
Economic-moat signals (brand/cost/scale/IP) with a 0-10 heuristic score.
Risk signals (leverage, currency, concentration, regulation) with a 0-5 safety score.
Resolve a company name to an exchange ticker (NSE/BSE preferred for India). Returns the best match plus ranked alternatives.
pyproject.toml pins mcp<2 due to FastMCP removal in mcp 2.x. This is a hard blocker for MCP 2.0 adoption. The server will break when mcp 2.0 becomes standard.
STDIO-only transport limits remote accessibility. Hosted MCP clients (Claude.ai, Cursor, etc.) cannot connect to STDIO servers. HTTP or SSE transport required for production agent deployment.