Multi-agent financial-risk copilot for your terminal — live market data + your own documents, framework-free.
Vigil Risk exposes 6 financial data tools with clear action verbs (get_*, search_, read_) and domain-specific descriptions. However, critical gaps undermine production readiness: most tools lack documented output schemas, parameter descriptions are sparse or missing, and error handling is minimal. Tools are read-only (low risk) but lack the structured guidance LLMs need for reliable composition. The codebase shows defensive input sanitization (good), but tool definitions themselves are incomplete per the 54-pattern baseline.
Fetch recent financial news headlines with sentiment labels for a given sector/topic.
Fetch the current macro backdrop: VIX, S&P 500 trend, 10Y yield and curve, gold, USD index, market regime, and fear/greed.
Fetch 7-day performance and directional signal for the major market sectors (tech, healthcare, financials, energy, etc.).
Fetch live price, performance, and fundamentals for one ticker (e.g. AAPL, TSLA, BTC-USD, QQQ). Use it before judging any specific investment.
Read one workspace document by filename (markdown, text, or CSV). Use this to get the full text of a specific file.
Search the user's own company documents (financials, plans, contracts they placed in their workspace) for a topic. Use this before asking for clarification.
No documented output schemas for any tool. LLMs cannot predict response structure, forcing them to guess at field names and types. This breaks tool chaining and increases hallucination risk.
Parameter descriptions are minimal or absent. 'sector' in get_live_headlines has a description, but get_market_pulse and get_sector_performance have empty parameter objects with no guidance on what they return or when to call them.
Tool descriptions lack WHEN-to-use guidance. 'Fetch live price...' tells WHAT but not WHEN to call get_stock_data vs get_market_pulse. LLMs need explicit selection criteria to avoid redundant calls.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 54 | <=2025-11-25 | v2 |
No error handling guidance in tool definitions. If a ticker is invalid or API fails, the tool returns a plain error string. LLMs need structured error responses with recovery hints (e.g., 'Try search_company_docs() instead').
search_company_docs and read_company_doc lack pagination/limit parameters. Large document sets or files could blow context windows. No documented cap on results or chunking strategy.