Financial answers go wrong quietly — a revenue number that came from the wrong XBRL concept looks exactly like one that did not. Here each value ships with its `source_tag`, so a disagreement with a filing is checkable instead of arguable. The cost of that design is one broad `sec` tool with an extract parameter rather than a tool per question, so the model has to know which extract it wants.
A financial data server that puts SEC EDGAR, market data and macro series behind one small set of tools. Filings are normalised into income-statement, balance-sheet and cash-flow groupings, and every metric comes back with a `provenance` block and a `source_tag` naming the XBRL concept it was derived from.
- All the SEC EDGAR surfaces through one call, selected by extract type — `financials` for normalised statements, `metrics` for computed ratios, `concepts` for raw XBRL series, `insiders` for Form 4, `ownership` for 13F, `events` for 8-K, `sections` for MD&A and risk-factor text, `segments`, `float`, `corporate_actions`, `transcripts` and `peers` — `sec`
- Price history as daily OHLCV bars and indicators computed from them — SMA, EMA, RSI, MACD, Bollinger, ATR and VWAP — `sec`
- FRED macro series grouped by inflation, employment, GDP, housing and rates — `economics`
- A stock screen by sector, market cap, price, volume and beta — `screener`
- Live crypto quotes by symbol — `crypto`
- The list of capabilities and their parameters, for discovering what the other tools accept — `caps`
An FMP key in `FMP_API_KEY` for market data and a FRED key in `FRED_API_KEY` for macro series; SEC access needs only a contact string in `SEC_USER_AGENT`. The Python package is `eugene-intelligence` (0.8.1), installed with `pip install -e .`. Launch the stdio server with `python eugene_server.py --mode mcp`; the same process also serves REST on port 8000 and exposes MCP over streamable HTTP at `/mcp` and SSE at `/sse` when started without the flag.
One command plus a key — pip install -e ., then supply credentials
