Canli Validation is a remote MCP server that gives an AI agent 18 tools, among them audit_backtest, backtest_strategy, check_feasibility. It answers at https://canlicapital.com/mcp over streamable HTTP, and it listed its tools to an anonymous client, so no sign-in was needed for that. Our probes reached it 2 of 6 times since 11 September 2026; the last check, on 21 October 2026, succeeded.
canlicapital.com backtest validation. A verdict is not admission to anything and is not a forecast.
Description as the publisher wrote it.
| Tool | What it does |
|---|---|
audit_backtest | One-call audit of a strategy's returns. Headline: one test whose false-positive rate was measured on nine return shapes (Hansen's SPA with variants). Then deflated Sharpe, minimum track record and, with variants, overfitting and out-of-samp Inputs: returns, returns_file, returns_column, periods_per_year, effective_independent_trials, cross_trial_sharpe_sd_annualized |
backtest_strategy | Backtest a rule on your prices over a whole parameter grid, then validate the best with the count of variants actually run: deflated Sharpe, overfitting probability, minimum track record, vs buy and hold, after costs. A backtest, deflated o Inputs: family, grid, prices, prices_file, prices_column, dates |
check_feasibility | Check a trading plan before it trades: broker order-rate and minimum-order limits, 2026 US day-trading rules, square-root market impact with crowding, and the capital where costs eat the return. Checks the plan as described against publishe Inputs: broker, asset_class, account, capital_usd, orders_per_rebalance, rebalances_per_year |
check_leakage | Does a signal look ahead? plan gives cuts; rerun your code on the first cut rows for each, then compare. Rows that changed used later rows; the result names the pattern and horizon. No code is sent. A pass covers only these cuts: the column Inputs: action, observations, prefixes, seed, cuts, columns |
placebo_test | Does your pipeline find edges in noise? plan writes placebo files (your data's returns in random orders, so nothing is predictable); run the whole pipeline on real.csv and on each, then compare for a p-value that counts every choice it make Inputs: action, data_file, columns, kind, placebos, method |
service_status | Whether the validation API is up, with its quotas; check after a timeout before resubmitting. No key. This verdict is about the series exactly as submitted. The service never saw the data source, its costs, survivorship, or any lookahead in |
stress_test | Stress a strategy's returns: bootstrap histories (how often the drawdown limit breaks or Sharpe turns negative) and named crash, volatility, repeat and stuck-position scenarios, with a fragility share. Frequencies over resampled histories a Inputs: returns, returns_file, returns_column, periods_per_year, paths, block |
summarize_series | A long price or return series in about 100 words plus fields: growth, risk, dated drawdowns, trend, volatility regime, tails, jumps, stale data. Use instead of reading raw bars. Nothing here is a forecast or advice. Inputs: prices, returns, series_file, series_column, series_kind, dates |
validate_backtest_length | Minimum backtest length (years) before the best of N independent trials is not expected to reach a target Sharpe by luck; with backtest_years, the most trials those years allow. For planning a search; once it has a result, use validate_defl Inputs: effective_independent_trials, backtest_years, target_sharpe_annualized |
validate_breadth | Book Sharpe ceiling from adding sleeves of this quality and correlation, the Sharpe at a sleeve count, and the sleeves a target needs. For portfolio construction; it validates no single strategy. This verdict is about the series exactly as Inputs: sleeve_sharpe, average_pairwise_correlation, sleeves, target |
validate_deflated_sharpe | Deflated Sharpe ratio: the probability (0 to 1) that the selected strategy's Sharpe beats the best that luck gives across the variants tried, with the probabilistic Sharpe and that luck benchmark. Send the seven statistics or a return serie Inputs: observed_sharpe_annualized, observations, periods_per_year, skew, non_excess_kurtosis, effective_independent_trials |
validate_haircut_sharpe | Haircut Sharpe for multiple testing (Harvey and Liu 2015): the Sharpe a single test would have needed, by Bonferroni and independent tests, and with the other tests' Sharpes, Holm and BHY. For the probability the Sharpe is real, use validat Inputs: observed_sharpe_annualized, periods_per_year, observations, tests, autocorrelation, other_sharpe_ratios_annualized |
validate_luck_trials | How many skill-less strategies a search would need for its best to reach this Sharpe by luck (Monte Carlo), and with a trial count, the chance it did. States luck as the best of N random tries; for the probability the Sharpe is real, use va Inputs: observed_sharpe_annualized, periods_per_year, observations, effective_independent_trials, skew, autocorrelation |
validate_overfitting | Probability of backtest overfitting (0 to 1) by CSCV: how often the in-sample best variant falls below the out-of-sample median. Needs every variant's returns (periods by variants); with summary statistics only, use validate_deflated_sharpe Inputs: matrix, n_splits, max_combinations, seed |
validate_paper_evidence | Checks paper-evidence.v0 structure and disclosures. With CANLI_LOCAL=1, record_file reads an export bundle and journal_file verifies signatures, source hashes and recomputed claims. Without a journal, source facts and signatures are uncheck Inputs: record, record_file, journal_file, signature |
validate_reality_check | Data-snooping tests on every variant a search tried: Hansen's SPA p-value that the best beat the benchmark only by luck, White's Reality Check, and the variants Romano-Wolf StepM finds better. Send all variants tried, not only the winners. Inputs: matrix, matrix_file, benchmark, block_length, reps, seed |
validate_track_record | Minimum track record length (observations and years) for an observed Sharpe to beat a benchmark at a confidence level; with observations, the record's probabilistic Sharpe so far. For live or paper records; to size a backtest for its trials Inputs: observed_sharpe_annualized, periods_per_year, skew, non_excess_kurtosis, benchmark_sharpe_annualized, confidence |
verify_receipt | Verify a receipt offline: its Ed25519 signature against the bundled canlicapital.com key, its output hash and its id. Send an id to fetch it first, or the receipt itself. The receipt is content-hashed, reproducible from the open-source core Inputs: id, receipt, include_receipt |
Every block below points at https://canlicapital.com/mcp. Pick your client and copy.
claude mcp add --transport http canli-validation https://canlicapital.com/mcp
{
"mcpServers": {
"canli-validation": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://canlicapital.com/mcp"]
}
}
}{
"mcpServers": {
"canli-validation": {
"url": "https://canlicapital.com/mcp"
}
}
}{
"servers": {
"canli-validation": {
"type": "http",
"url": "https://canlicapital.com/mcp"
}
}
}{
"context_servers": {
"canli-validation": {
"url": "https://canlicapital.com/mcp"
}
}
}{
"mcpServers": {
"canli-validation": {
"serverUrl": "https://canlicapital.com/mcp"
}
}
}{
"mcpServers": {
"canli-validation": {
"url": "https://canlicapital.com/mcp"
}
}
}name: Canli Validation
version: 0.0.1
schema: v1
mcpServers:
- name: Canli Validation
type: streamable-http
url: https://canlicapital.com/mcp{
"mcpServers": {
"canli-validation": {
"httpUrl": "https://canlicapital.com/mcp"
}
}
}{
"mcpServers": {
"canli-validation": {
"type": "http",
"url": "https://canlicapital.com/mcp"
}
}
}{
"mcpServers": {
"canli-validation": {
"url": "https://canlicapital.com/mcp"
}
}
}goose://extension?url=https%3A%2F%2Fcanlicapital.com%2Fmcp&type=streamable_http&id=canli-validation&name=Canli%20Validation
It answered our last check on 21 October 2026 in 99 ms. Over 6 checks since 11 September 2026 it answered 2. Status here comes from Neuronto's own probes, not from the publisher.
18, as returned by the server's own tools/list on 7 October 2026: audit_backtest, backtest_strategy, check_feasibility, check_leakage, placebo_test, service_status, stress_test, summarize_series, and 10 more.
It answered our last check on 21 October 2026 in 99 ms. Over 6 checks since 11 September 2026 it answered 2.
Put the server under mcpServers in ~/.cursor/mcp.json with the URL https://canlicapital.com/mcp. The exact JSON is above, with the same setup for Claude Code, Claude Desktop, VS Code, Windsurf, Zed, Gemini CLI and the rest.
It listed its tools to an anonymous client, so reading the tool list needs no key. Individual tools can still ask for credentials in their own inputs.
Publisher: io.github.arhancanli. Endpoint host: canlicapital.com. ARD identifier: urn:air:io.github.arhancanli:mcp:canli-validation-mcp.
First indexed 10 September 2026. The tools are exactly what the server returned; nothing on this page
is inferred from its name. Ranking in Neuronto search is never for sale.