canli-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| CANLI_HOME | No | Where the paper pack keeps its limits file, kill switch and order log, and where the audit log and its keys are kept; default ~/.canli. | |
| CANLI_FRONT | No | Changes which tools are listed directly in front of the model; empty lists only find_tool, describe_tool and run_tool. | |
| CANLI_PACKS | No | Packs to enable: quant,validation,fundamentals,research,backtest,markets,paper or all. Default: all but paper. | |
| CANLI_POLICY | No | A policy file's path, or the policy itself as JSON. Unset: no policy and no audit log. | |
| CANLI_OFFLINE | No | 1 keeps only quant and validation; no other pack's code is loaded. | |
| CANLI_PLUGINS | No | Plugin packs to load: package names or .mjs paths, comma-separated. | |
| CANLI_CACHE_DIR | No | Cache location for public fundamentals data; CANLI_CACHE_DIR="" keeps nothing. | |
| ALPACA_PAPER_KEY_ID | No | Alpaca paper key ID (starting PK). Setting this together with ALPACA_PAPER_SECRET_KEY enables the paper pack. | |
| ALPACA_PAPER_SECRET_KEY | No | Alpaca paper secret key. Setting this together with ALPACA_PAPER_KEY_ID enables the paper pack. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
| completions | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| find_toolA | Search the 350 finance tools (packs: quant, validation, fundamentals, research, backtest, markets) in plain words, e.g. "deflated sharpe", "revenue as of 2019". Returns the closest matches first, with names, argument signatures and one line each, even when none fits, so check them. Next: run_tool, or describe_tool if an argument is unclear. |
| describe_toolA | Read one tool's full description and input JSON Schema, between find_tool and run_tool, when find_tool's signature does not settle an argument. An unknown name returns an error. |
| run_toolA | Run a tool find_tool named: one ({name, arguments}), or up to 25 ({calls: [...]}). Independent calls run concurrently; a failed call returns its own error and the rest still run. Read-only unless the paper-trading pack is on. Any argument can be {"$file": "path.csv", "column": "close"} (or "columns": [...] / "all") instead of pasted numbers. {"$result": i, "path": "close"} passes batch call i's output into a later call; every result also has a ref ("r1", ...) later calls pass the same way, {"$result": "r1", "path": "close"}, so data never needs copying. |
| historyA | Get a measure (or several, with concepts) over time, newest first: latest (default), first reported, or as known on a filing date, with its filing, other version and yearly change. Use it for one measure across periods or as known on a past date; financial_statements for whole statements. Long answers come in pages. |
| financial_statementsA | A company's financial statements exactly as filed: income statement, balance sheet, cash flow and equity statement from its 10-K (or 10-Q), with its own line labels, each line's XBRL concept and the values as the filing shows them (units say the scale). Joins several filings by period; a line a later filing restated, or that a stock split changed, is shown beside its first-reported figure, never mixed in. Use it for every line in the company's own words; history for one measure over many years. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| company_brief | A company's financials, its latest 8-K news with press-release headlines, its latest results against its guidance, its next earnings date, insider trades, short interest and the options market's expected move, from the filings and exchanges themselves. |
| earnings_preview | Before a company reports: when (estimated from its own filing history, before the open or after the close), what it guided for the quarter and whether it met its last guidance, the move the options market prices in, how the stock reacted to past results, and where its revenue comes from. |
| macro_snapshot | Where the US economy and rates stand: the Fed's latest decision and projections, what Polymarket and Kalshi traders price for its next decisions, SOFR against the Fed's range, the key releases of the next two weeks, inflation, core PCE and unemployment over the last year, the Treasury curve and the VIX futures curve. |
| global_rates | The Fed's, the ECB's, the Bank of England's and the Bank of Japan's policy rates, the overnight rates banks pay beside them (SOFR, the euro short-term rate, SONIA) and the US Treasury curve, each from the central bank or the BIS itself. |
| european_company | A European listed company's latest annual financial report as it filed it in the European Single Electronic Format: revenue, operating and net profit, EPS, assets, equity, cash flows and dividends beside the prior years, in its own currency, linked to the report. |
| defi_snapshot | The supply of the two largest stablecoins and its change, the value locked on Ethereum and Solana, and a DeFi protocol's value locked, fees and revenue, from DefiLlama's open data. |
| ownership | A company's 5% holders and activists (13D/13G), its insiders' buying and selling (Form 4), and its short interest, each from the filing or FINRA report itself. |
| financial_history | A company's income statement, balance sheet and cash flows for four years exactly as it filed them, with what a later filing restated or a split changed shown beside the first-reported figures. |
| fact_check | Check every reported figure in a draft about a company against its filings: confirmed, contradicted (with the filed figure and what the wrong one matches), or not reported, before the draft is used. |
| filing_changes | What a company changed in its latest annual report against the one before: new, dropped and rewritten risk factors and MD&A paragraphs, and the words whose use rose most. |
| why_it_moved | A day's move against the market, how unusual it was from a one-year market model, and the filings and news around it. |
| portfolio_xray | What a portfolio of stocks and funds really holds: the look-through positions across every fund, the overlap between the funds, and the largest exposures. |
| peers_and_red_flags | A company against its industry peers, its debt and borrowing, how many institutions hold it quarter by quarter, and three accounting screens (Beneish, Piotroski, Altman) with every input named. |
| human_check | Turn a draft about a company into a blind labelling packet: every figure as an item people check against the filings, with guidelines and an answer key, so the agreement between them can be measured. |
| valuation_check | The growth in free cash flow that today's share price implies (a reverse DCF from the filings), set beside the company's own past growth and its peers' valuations. |
| language_drift | How much a company rewrote its 10-K year by year (similarity of each section to the year before, from the Lazy Prices study), which sections changed most, and how often a theme of your choosing comes up. |
| biotech_catalysts | A drug company's clinical trials with primary completions due (the readouts to come), its pipeline by phase, and its FDA approvals, from ClinicalTrials.gov and openFDA. |
| government_exposure | How much a company earns from US federal contracts (by agency and its largest awards) and what the SEC's staff has asked it about in comment letters. |
| bank_health | A bank's quarterly call-report figures from the FDIC: deposits and how many are uninsured, capital ratios, loan quality, unrealized securities losses and profitability, quarter by quarter. |
| insider_watch | Insiders' planned sales (Form 144 notices, often filed before the sale) beside the trades they reported afterwards (Form 4). |
| ipo_watch | Companies that filed to go public in the last weeks (S-1 and F-1 and their amendments), separated from SPACs, funds and follow-ons, and the deals that priced with their price and size. |
| research_report | A full research note on a company, the way an analyst starts coverage: the business and its segments, three years of statements as filed, peers, the growth its price implies, debt, dividends and buybacks, accounting red flags, what changed in its risk factors, ownership, insiders, its latest results against guidance, and the news, every figure from the filings and exchanges themselves. |
| market_today | How the market is doing: US indices and the VIX, the sectors ranked by the month, Treasury yields, the dollar, oil, gold, bitcoin and markets abroad over a day to a year, beside the week's key economic releases, the Fed's latest decision and what prediction markets price for its next. |
| stock_chart | An interactive chart of a stock over two years (candlesticks, moving averages, Bollinger bands, RSI and MACD, zoom and pan) and its option chain, with where the price sits against its averages, its RSI and the move options price in. |
| strategy_lab | A moving-average crossover backtested on a ticker since 2010 as an interactive dashboard: figures against buy-and-hold, growth of 1, drawdown and trades, with sliders that rerun it and a check of every setting tried for luck. |
| compare_stocks | Several stocks, funds or indices side by side: growth of 1 over any range, each one's return, volatility, Sharpe, worst drawdown and beta, and how their daily returns move together (a correlation heatmap and the number of independent bets). |
| yield_curve | The US Treasury yield curve today against a month, a year and five years ago, played through five years of history, with the 10-year minus 2-year and 10-year minus 3-month spreads and how often the curve was inverted. |
| volatility_surface | A stock's or index's implied volatility by strike and expiration: the smile of each expiration, the term structure at the money and at 25 delta, the skew, and the whole surface as a heatmap (Cboe delayed data). |
| statement_charts | A company's income statement, balance sheet and cash flows as filed, charted: any line over the years, margins (each line as a share of revenue), the balance sheet as a share of total assets, and year-on-year growth. |
| dividend_check | Whether a company's dividend looks safe and growing: years of dividends and buybacks against earnings and free cash flow, the split-adjusted record, the yields, its debt and what falls due, and its accounting screens. |
| backtest_check | Audit a strategy's daily returns for overfitting: deflated Sharpe for the number of variants tried, the minimum track record, and what to run next (leakage and placebo checks). |
| quant.analyze_strategy | Full statistical read of a return series: quality checks, performance, risk, significance after multiple testing. |
| quant.audit_backtest | Re-run a strategy across its parameter grid and deflate the best result for the number of variants. |
| quant.value_company | Intrinsic value from cash flows, the market's implied growth, multiples and red-flag scores. |
| quant.price_option | Check quotes, back out implied volatility, price and Greeks, and a scenario grid. |
| quant.test_mean_reversion | Stationarity, cointegration, half-life and a costed backtest of a pair or spread. |
| quant.build_portfolio | Clean estimates, several allocations side by side, and their risk. |
| quant.analyze_trade_log | Edge, payoff, sizing and risk of ruin from a list of trade P&Ls. |
| quant.sleeve_tournament | Run the whole sleeve library on your prices and keep only what survives multiple-testing correction. |
| quant.build_sleeve_book | Pick distinct surviving sleeves, combine them, and get paper-ready target weights. |
| quant.label_dataset | Annotate the data, sample events, label them, weight overlapping labels and build leak-free CV splits. |
| quant.check_dataset | Run the data checks that fit the data and list every problem before any model sees it. |
| validation.validate_backtest | Walk through the deflated Sharpe, overfitting and track-record checks for one strategy, and report what the numbers do not establish. |
| validation.track_record_needed | The minimum track record length for a Sharpe to clear a benchmark, with the record's own probabilistic Sharpe if its length is known. |
| validation.backtest_and_validate | Run a strategy family over a parameter grid on your prices, then read the deflated Sharpe and overfitting probability that count every variant run. |
| validation.stress_my_strategy | Resampled histories and named crash, volatility, repeat and outage scenarios for a strategy's returns. |
| validation.production_check | Order-rate and minimum-order limits, 2026 day-trading rules, market impact, crowding and capacity for a trading plan. |
| validation.summarize_market_series | Summarize a price or return file instead of reading its rows. |
| validation.check_signal_for_lookahead | Rerun your own signal code on prefixes the server picks, and find any value that depends on later rows. |
| validation.test_pipeline_on_placebos | Run your whole research pipeline on placebo data, where nothing can be predicted, and see whether its real result beats what it finds there. |
| fundamentals.known_on_date | A point-in-time snapshot for a backtest or a decision: each measure as it stood on the date, the filing behind it, ratios, and which values were later restated. |
| fundamentals.restatement_review | Every period whose value changed after its first report, why it changed, and the filings behind the biggest changes. |
| fundamentals.peers_as_of | One measure across several companies, each as filed by the date, with fiscal period ends lined up and later restatements flagged. |
| research.preflight_idea | Before testing an idea: whether Canli Capital already tested it, how it was killed or survived, and what the literature says. |
| research.audit_canli_record | Hypotheses tried against the declared budget, the live paper record with its limits, and how to check the record was not rewritten. |
| research.literature_review | Every Canli Capital paper on a topic, summarized with links. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| catalog | Every tool: name, pack and title. |
| packs | Each pack: its source package and version, tool count, network and disk use, and renamed or omitted tools. |
| privacy | What each enabled pack sends off this machine and keeps on disk. |
| view | Draws run_tool results as tables, charts, statements, guidance ranges and verdicts in hosts that support MCP Apps. |
| quant.catalog | Every tool: name, toolset and one-line description. |
| quant.methods | What each toolset's results are checked against in the test suite. |
| quant.privacy | What the server does with your data, and the tests that hold it to that. |
| quant.sleeves | All 399 strategy sleeves: id, family, data shape, rule and spec hash. |
| validation.limits | The boundary sentences every validation result carries. |
| validation.sources | The papers behind each validator and how each is checked against them. |
| validation.strategy-spec | JSON Schema of backtest_strategy's families, parameters and rules. |
| validation.openapi | Generated from the endpoints that exist; fetched from canlicapital.com when read. |
| fundamentals.concepts | Every plain name the tools accept (revenue, eps_diluted, ...), the US GAAP and IFRS tags it follows in order, and the ten known_as_of reads by default. |
| fundamentals.limits | The limits every fundamentals result carries; quote them with any finding. |
| research.limits | The limits every research result carries; quote them with any finding. |
TDQS
Scored across 5 tools
The find_tool → describe_tool → run_tool pipeline is a clean, non-overlapping progression, and the descriptions explicitly state when to move to the next stage. The only real overlap is history vs financial_statements, both returning filed financial data, but the descriptions draw a clear line (one measure over time vs whole statements).
find_tool, describe_tool, and run_tool follow a consistent verb_noun snake_case pattern, but history and financial_statements are bare nouns outside that convention. The naming is readable and snake_case throughout, but the two noun-only tools break the agent-facing pattern.
Five tools is well-scoped for a gateway server fronting 350 underlying tools: three generic dispatch tools plus two common high-value shortcuts. Each tool earns its place and none feels redundant.
The surface covers discovery, schema inspection, execution (single and batch), and the two most common finance workflows, which is strong for a meta-server. Minor gaps exist: no explicit way to enumerate packs/domains or browse the full 350-tool catalog without a query, and pagination is only handled implicitly via arguments.