protogrid

Search / io.github.arhancanli/canli-validation-mcp

Canli Validation

R0· no sign-in

Deflated Sharpe and PBO checks. A verdict is not admission to anything and is not a forecast.

v0.14.0 · active · repository · website · descriptor JSON · versions

An agent can connect right now, no human step.Remote endpoint, no authentication, reachable on the last probe.
Quality72needs work
Trust93of 100
Uptime, 30 days100%
Latency p50314 ms

Connect

8 clients · secrets stay placeholders
{
  "mcpServers": {
    "canli-validation-mcp": {
      "type": "http",
      "url": "https://canlicapital.com/mcp",
      "headers": {
        "Authorization": "Bearer ${CANLI_VALIDATION_MCP_TOKEN}"
      }
    }
  }
}
claude mcp add --transport http canli-validation-mcp https://canlicapital.com/mcp --header "Authorization: Bearer ${CANLI_VALIDATION_MCP_TOKEN}"
[mcp_servers.canli-validation-mcp]
url = "https://canlicapital.com/mcp"
bearer_token_env_var = "CANLI_VALIDATION_MCP_TOKEN"
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "canli-validation-mcp": {
      "type": "remote",
      "url": "https://canlicapital.com/mcp",
      "enabled": true,
      "headers": {
        "Authorization": "Bearer {env:CANLI_VALIDATION_MCP_TOKEN}"
      }
    }
  }
}
{
  "mcpServers": {
    "canli-validation-mcp": {
      "type": "http",
      "url": "https://canlicapital.com/mcp",
      "headers": {
        "Authorization": "Bearer ${CANLI_VALIDATION_MCP_TOKEN}"
      }
    }
  },
  "deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=canli-validation-mcp&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vY2FubGljYXBpdGFsLmNvbS9tY3AiLCJoZWFkZXJzIjp7IkF1dGhvcml6YXRpb24iOiJCZWFyZXIgJHtDQU5MSV9WQUxJREFUSU9OX01DUF9UT0tFTn0ifX0%3D"
}
{
  "servers": {
    "canli-validation-mcp": {
      "type": "http",
      "url": "https://canlicapital.com/mcp",
      "headers": {
        "Authorization": "Bearer ${CANLI_VALIDATION_MCP_TOKEN}"
      }
    }
  }
}
{
  "mcpServers": {
    "canli-validation-mcp": {
      "httpUrl": "https://canlicapital.com/mcp",
      "headers": {
        "Authorization": "Bearer ${CANLI_VALIDATION_MCP_TOKEN}"
      }
    }
  }
}
extensions:
  "canli-validation-mcp":
    enabled: true
    name: "canli-validation-mcp"
    type: streamable_http
    uri: "https://canlicapital.com/mcp"
    headers:
      "Authorization": "Bearer ${CANLI_VALIDATION_MCP_TOKEN}"
    timeout: 300

Placeholders to fill from your own secret store: ${CANLI_VALIDATION_MCP_TOKEN}. The registry never accepts secret values.

Quality 72 / 100needs work

protocol75 · weight 25
  • warn
    protocol.modernnewest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
  • n/a
    protocol.statelessonly applies to 2026-07-28 servers
  • pass
    protocol.transportstreamable HTTP
  • n/a
    protocol.list_ttlonly applies to 2026-07-28 servers
authorizationn/a · weight 15
  • n/a
    auth.prm, auth.as_metadata, auth.cimdno remote uses OAuth
  • n/a
    auth.secret_in_urlno templated URL
tool hygiene93 · weight 30
  • pass
    tools.descriptionsevery tool has a description
  • pass
    tools.description_lengthdescriptions are concise
  • pass
    tools.schemasevery tool has an object input schema
  • pass
    tools.annotations18 of 18 tools declare readOnlyHint or destructiveHint
  • warn
    tools.directory_hints6 of 18 tools declare all four hints; missing: validate_deflated_sharpe (idempotentHint); validate_overfitting (idempotentHint); validate_paper_evidence (idempotentHint); …
  • pass
    tools.token_costabout 6,738 tokens to load every tool
  • pass
    tools.api_dumptools are not a one-to-one API dump
stability25 · weight 15
  • warn
    stability.changes44 tool changes in 30 days
  • fail
    stability.rug_pull1 tools kept their name but changed most of their description in 30 days; review before trusting them
dependenciesn/a · weight 15
  • n/a
    deps.known_vulns, deps.mcp_sdk_version, deps.resolvabledeps.dev does not know [email protected]

18 tools, about 6,738 tokens to load them all · tool set c527473ddf06 · tools last changed 2026-10-07 · checked 2026-10-20 15:57 UTC

Tool changes

  • audit_backtestchangeddescription
    before

    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-sample decay, each with its receipt, plus fix_next. Send every variant tried (variants_file) so trials are counted; point returns_file at a CSV instead of pasting. A deflated Sharpe or overfitting probability above or below any threshold is not admission to anything and is not a forecast.

    after · 88% of words in common

    One-call audit of a strategy's returns. Headline: one test whose false-positive rate was measured on nine return shapes (White's Reality Check with variants, luck trials with Lo's correction without). Then deflated Sharpe, minimum track record and, with variants, overfitting and out-of-sample decay, each with its receipt, plus fix_next. Send every variant tried (variants_file) so trials are counted; point returns_file at a CSV instead of pasting. A deflated Sharpe or overfitting probability above or below any threshold is not admission to anything and is not a forecast.

  • placebo_testadded

    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 makes. Beating the placebos shows the pipeline finds more in the real order of the returns than in random orders of the same returns; it does not show the edge survives costs, capacity or the future.

  • check_leakageadded

    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 columns are the caller's, and survivorship, vendor revisions or a leak no cut reaches leave no trace.

  • check_feasibilitychangedinput schema, output schema
  • stress_testchangedinput schema, output schema
  • summarize_serieschangedinput schema, output schema
  • backtest_strategychangedinput schema, output schema
  • service_statuschangedoutput schema
  • verify_receiptchangedinput schema, output schema
  • audit_backtestchangedinput schema, output schema

Showing the latest 10. Full history: list_changes · trend: quality JSON.

Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.

Trust 93 / 100

duplicate-repo
provenance90
liveness100
freshness100
hygiene80

+repository +namespace-matches-repo +website +reachable +uptime-100% +updated-13d-ago -duplicate-repo(7 names)

Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.

Dependencies

[email protected] npmthis version is not known to the dependency resolver

Dependency graphs from deps.dev; advisories from OSV.dev, including the GitHub Advisory Database and the PyPI Advisory Database; all CC BY 4.0. The graph is what a clean install of this version resolves today; nothing was installed or run. How it is checked.

Endpoints

remoteauthreachableuptime 30dp50protocollast ok
https://canlicapital.com/mcp streamable-httpnoneyes100%314 ms2025-11-252026-10-20
packageregistryversionruntimesecrets
canli-validation-mcpnpm0.14.0–CANLI_KEY

Tools (18)

audit_backtestOne-call audit of a strategy's returns. Headline: one test whose false-positive rate was measured on nine return shapes (White's Reality Check with variants, luck trials with Lo's correction without). Then deflated Sharpe, minimum track record and, with variants, overfitting and out-of-sample decay, each with its receipt, plus fix_next. Send every variant tried (variants_file) so trials are counted; point returns_file at a CSV instead of pasting. A deflated Sharpe or overfitting probability above or below any threshold is not admission to anything and is not a forecast.
backtest_strategyread-onlyBacktest 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 or not, is not a forecast and not advice.
check_feasibilityread-onlyCheck 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 published broker limits and a market-impact model; it never contacts a broker or sees an account.
check_leakageread-onlyDoes 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 columns are the caller's, and survivorship, vendor revisions or a leak no cut reaches leave no trace.
placebo_testDoes 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 makes. Beating the placebos shows the pipeline finds more in the real order of the returns than in random orders of the same returns; it does not show the edge survives costs, capacity or the future.
service_statusread-onlyWhether 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 how the series was built.
stress_testread-onlyStress 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 are not forecasts of the future.
summarize_seriesread-onlyA 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.
validate_backtest_lengthMinimum 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_deflated_sharpe. A deflated Sharpe or overfitting probability above or below any threshold is not admission to anything and is not a forecast.
validate_breadthBook 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 submitted. The service never saw the data source, its costs, survivorship, or any lookahead in how the series was built.
validate_deflated_sharpeDeflated 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 series. With every variant's returns use validate_overfitting; luck as a trial count, validate_luck_trials; a multiple-testing haircut, validate_haircut_sharpe. A deflated Sharpe or overfitting probability above or below any threshold is not admission to anything and is not a forecast.
validate_haircut_sharpeHaircut 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 validate_deflated_sharpe. A deflated Sharpe or overfitting probability above or below any threshold is not admission to anything and is not a forecast.
validate_luck_trialsHow 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 validate_deflated_sharpe. A deflated Sharpe or overfitting probability above or below any threshold is not admission to anything and is not a forecast.
validate_overfittingProbability 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. A deflated Sharpe or overfitting probability above or below any threshold is not admission to anything and is not a forecast.
validate_paper_evidenceChecks 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 unchecked. Local files are never uploaded. This verdict is about the series exactly as submitted. The service never saw the data source, its costs, survivorship, or any lookahead in how the series was built.
validate_reality_checkData-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. A deflated Sharpe or overfitting probability above or below any threshold is not admission to anything and is not a forecast.
validate_track_recordMinimum 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, use validate_backtest_length. A deflated Sharpe or overfitting probability above or below any threshold is not admission to anything and is not a forecast.
verify_receiptread-onlyVerify 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 it names, and signed with Ed25519 by a key published at https://canlicapital.com/.well-known/canli-receipt-keys.json.

Schemas: list_tools.

Also listed as

6 other active names share this repository: io.github.arhancanli/canli-backtest-mcp, io.github.arhancanli/canli-fundamentals-mcp, io.github.arhancanli/canli-markets-mcp, io.github.arhancanli/canli-mcp, io.github.arhancanli/canli-quant-mcp, io.github.arhancanli/canli-research-mcp

Similar MCP servers

More from io.github.arhancanli

Official server.json
{
  "name": "io.github.arhancanli/canli-validation-mcp",
  "icons": [
    {
      "src": "https://canlicapital.com/icon-512.png",
      "sizes": [
        "512x512"
      ],
      "mimeType": "image/png"
    },
    {
      "src": "https://canlicapital.com/favicon.svg",
      "sizes": [
        "any"
      ],
      "mimeType": "image/svg+xml"
    }
  ],
  "title": "Canli Validation",
  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
  "remotes": [
    {
      "url": "https://canlicapital.com/mcp",
      "type": "streamable-http",
      "headers": [
        {
          "name": "Authorization",
          "isSecret": true
        }
      ]
    }
  ],
  "version": "0.14.0",
  "packages": [
    {
      "version": "0.14.0",
      "transport": {
        "type": "stdio"
      },
      "identifier": "canli-validation-mcp",
      "registryType": "npm",
      "registryBaseUrl": "https://registry.npmjs.org",
      "environmentVariables": [
        {
          "name": "CANLI_KEY",
          "isSecret": true
        },
        {
          "name": "CANLI_LOCAL"
        },
        {
          "name": "CANLI_API_BASE"
        }
      ]
    }
  ],
  "repository": {
    "url": "https://github.com/arhancanli/canlicapital",
    "source": "github",
    "subfolder": "mcp"
  },
  "websiteUrl": "https://canlicapital.com/developers#ai-assistant",
  "description": "Deflated Sharpe and PBO checks. A verdict is not admission to anything and is not a forecast."
}