quant-research-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| QUANT_DATA_PROVIDER | No | Data provider factory name. Default is yfinance. Implement the DataProvider protocol for custom providers. | yfinance |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| quant_list_methodsA | List every registered paper-backed trading method. Args: params (FormatInput): response_format ('markdown'|'json'). Returns: str: methods with key, name, paper citation, paper_url and regime_applicability. JSON returns the full metadata list; markdown is a readable digest. Use this to discover what method_key values are valid for quant_analyze_setup / quant_describe_method. |
| quant_describe_methodA | Full detail and citation for one registered method. Args: params (DescribeMethodInput): method_key plus response_format. Returns: str: the method's name, paper, paper_url, regime_applicability and a prose description of its mechanics. Error string if the key is unknown (call quant_list_methods for valid keys). |
| quant_screen_universeA | Rank tickers by intraday tradeability (gap, relative volume, ATR%). Hard-filters names under $5 or under $50M average daily dollar volume, then scores the rest by 2*|gap%| + rel_volume + 0.5*ATR% and returns the top N. Args: params (ScreenInput): optional tickers list (defaults to the built-in universe), top_n, response_format. Returns: str: ranked candidates, each with ticker, price, gap_pct, rel_volume, atr_pct, avg_dollar_volume_m and score. JSON returns a list under 'candidates'; markdown is a ranked table. |
| quant_compute_indicatorsA | Compute EMA9/EMA20, RSI, ATR, VWAP and the Hurst exponent for a ticker. Daily series drive Hurst and ATR; the latest intraday session drives VWAP, EMAs and 5m RSI. Args: params (TickerInput): ticker, response_format. Returns: str: a dict with price, hurst, atr_daily, and intraday ema9/ema20/ rsi_5m/vwap. Error string if no data. |
| quant_detect_regimeA | Classify a ticker's regime from its daily Hurst exponent. H >= 0.55 -> TRENDING (momentum edge), H <= 0.45 -> MEAN_REVERTING (fade edge), otherwise RANDOM_WALK (no structural edge). Args: params (TickerInput): ticker, response_format. Returns: str: dict with ticker, hurst and regime. Error string if no data. |
| quant_analyze_setupA | Run a registered method on a ticker to produce a trade setup. Fetches daily + latest-session intraday data and dispatches to the named method, which returns signal (LONG/SHORT/NO_ENTRY), playbook, regime, and entry/stop/target when actionable. Args: params (AnalyzeInput): ticker, method_key (default 'hurst_regime_orb'), response_format. Returns: str: the setup dict (feed it directly to quant_score_decision). Includes signal, playbook, regime, hurst, price, atr_daily, rel_volume, rsi, entry, stop, target, reasons, plus method extras (vwap, or_high, or_low, ema9, ema20). Error string for unknown method or missing data. |
| quant_score_decisionA | Deterministically score a setup and decide ENTRY / NO_ENTRY. This is the decision helper: a pure function (no LLM, no network). It combines scientifically-motivated sub-factors — reward:risk, regime strength (|Hurst-0.5|), volume confirmation, RSI positioning and ATR-normalised stop quality — into a 0..1 composite score, gates it against a threshold, applies an optional caller-supplied news-sentiment boost/veto, and returns fixed-fractional position sizing plus a mechanical execution plan. Same inputs always yield the same output. Args: params (ScoreDecisionInput): setup (from quant_analyze_setup), equity, risk_pct, optional news_sentiment ('bullish'|'bearish'|'neutral') and news_confidence (0..1). The AGENT derives the sentiment from headlines; this tool only consumes it. Returns: str: dict with verdict (ENTRY|NO_ENTRY), score, threshold, per-factor breakdown, factor_weights, news boost/veto, rationale, position_size (shares, dollar_risk, formula, haircut flag) and, on ENTRY, an execution_plan (entry trigger, order type, stop ladder, profit taking, time stop, abort conditions). 'deterministic': true. |
| quant_analyze_universeA | Run a universe-based method (ranking or pairs) across multiple tickers. xs_momentum ranks the universe by 12-1 momentum and marks the top-N book LONG. pairs_cointegration requires exactly 2 tickers and returns one setup per leg with the shared spread statistics (beta, ADF p-value, z-score). Args: params (AnalyzeUniverseInput): method_key, tickers (defaults to the built-in universe), top_n (ranking methods), response_format. Returns: str: list of setup dicts (each feedable to quant_score_decision). Error string for unknown/non-universe methods or bad ticker counts. |
| quant_backtest_methodA | Backtest a registered method by replaying its own analyze() over history. The engines execute the method's live signal logic bar by bar (no separate backtest implementation that could drift). Daily methods replay daily bars with next-open fills and method-specific exits; intraday methods replay each available 5m session (provider-capped to ~60 days); xs_momentum runs a monthly-rebalance portfolio. Costs applied one-way on entry and exit. Args: params (BacktestInput): method_key, tickers, period, costs_bps, risk_pct, top_n, response_format. Returns: str: stats (n_trades, win_rate, avg_r/expectancy, profit_factor, max_drawdown_pct, total_return_pct), in-sample/out-of-sample halves, and the last 10 trades. Treat results as PARAMETER VALIDATION, not a forecast — yfinance data is survivorship-prone and costs are estimates. |
| quant_check_eventsA | Upcoming earnings and dividend events for a ticker. Earnings inside the holding window are the classic binary risk: pass days_to_earnings into quant_score_decision, which vetoes swing/position entries within the configured window (default 3 days) and warns intraday. Args: params (TickerInput): ticker, response_format. Returns: str: {next_earnings, days_to_earnings, recent_earnings, ex_dividend}. Fields are null when the provider has no data — treat unknown as risk and check the company's IR page before a swing entry. |
| quant_portfolio_riskA | Stateless portfolio heat / correlation / concentration check. Pass your open positions (the server stores nothing) and optionally a candidate trade. Returns per-position and total open risk vs the heat limit, pairwise 90d correlation flags, sector concentration, and for the candidate a FITS / REDUCE / REJECT verdict with a recommended risk_pct to feed into quant_score_decision (with portfolio_heat_pct). Args: params (PortfolioRiskInput): positions [{ticker, direction, entry, stop, shares}], optional candidate {ticker, direction, entry, stop}, equity, response_format. Returns: str: heat/correlation/concentration analysis dict; candidate verdict when one was supplied. |
| quant_market_contextA | Index/VIX/sector tape read for the current session. SPY/QQQ/IWM day % and 20d-EMA side, VIX level and change, the 11 SPDR sector ETFs ranked by day %, and a breadth flag (risk_on when most sectors advance). Use before sizing any intraday trade; trading breakouts against a risk-off tape is the most common ORB failure mode. Args: params (FormatInput): response_format. Returns: str: {indexes, vix, sectors (ranked), breadth{risk_on}}. |
| quant_fetch_newsA | Fetch recent headlines for a ticker. Data only — no sentiment is computed. The calling agent reads these and forms its own sentiment to pass to quant_score_decision; this tool deliberately does no interpretation. Args: params (TickerInput): ticker, response_format. Returns: str: list of headlines, each with title, summary, published, provider. Empty-list message if none found. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/FlawlessByte/quant-research-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server