Prototipo · Versión preliminar: todos los servidores del registro oficial, sincronizados cada 30 minutos. Las reseñas y las cuentas llegarán en una etapa posterior.
PopNx MCPServidores MCP para quienes usan IA · explicados con palabras sencillas

Canli Validation

de arhancanliversión 0.15.0i★ –iComputadora o nube
Nombre en el registroio.github.arhancanli/canli-validation-mcp

Instalar

Resumen

Descripción del creador (original en inglés)

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

Los tres pilares de PopNx MCP

Estos tres nunca se combinan en una sola puntuación: las opiniones, las mediciones y la popularidad son cosas distintas.

Qué puedes hacer con él

Todavía no escribimos un resumen sencillo para este. Abajo están los datos que leímos del registro.

  • Conexión: Computadora o nube
  • Transporte: stdio, Streamable HTTP
  • Categoría: Viajes, mapas y clima
  • Debes completar: CANLI_KEY, Authorization

Instalación

Elige la app de IA que usas y copia la configuración.

Antes de instalar

Los valores marcados como secretos son llaves de tu cuenta. Nunca los compartas ni los pegues en un chat.

Necesitas

¿Qué app usas?

Elige tu app arriba. La recordamos, así que la próxima vez el botón dirá “Instalar en …”.

Esta dirección necesita una clave en un header de la solicitud, y el menú para agregar conectores no puede ponerla. Usa Claude Code, Cursor o VS Code.

O ejecútalo en tu computadora

Abre Claude Desktop → Settings → Developer → Edit Config y pega esto en claude_desktop_config.json

{
  "mcpServers": {
    "canli-validation": {
      "command": "npx",
      "args": [
        "-y",
        "canli-validation-mcp"
      ],
      "env": {
        "CANLI_KEY": "your-value",
        "CANLI_LOCAL": "your-value",
        "CANLI_API_BASE": "your-value"
      }
    }
  }
}

Ejecuta esto en tu terminal

claude mcp add --transport http canli-validation https://canlicapital.com/mcp --header 'Authorization: your-value'

O ejecútalo en tu computadora

claude mcp add canli-validation --env CANLI_KEY=your-value --env CANLI_LOCAL=your-value --env CANLI_API_BASE=your-value -- npx -y canli-validation-mcp

Completa los valores vacíos antes de ejecutarlo.

Abrir en Cursor

O copia la configuración tú

Pégalo en .cursor/mcp.json de tu proyecto, o en ~/.cursor/mcp.json

{
  "mcpServers": {
    "canli-validation": {
      "url": "https://canlicapital.com/mcp",
      "headers": {
        "Authorization": "your-value"
      }
    }
  }
}

O ejecútalo en tu computadora

Abrir en Cursor

O copia la configuración tú

Pégalo en .cursor/mcp.json de tu proyecto, o en ~/.cursor/mcp.json

{
  "mcpServers": {
    "canli-validation": {
      "command": "npx",
      "args": [
        "-y",
        "canli-validation-mcp"
      ],
      "env": {
        "CANLI_KEY": "your-value",
        "CANLI_LOCAL": "your-value",
        "CANLI_API_BASE": "your-value"
      }
    }
  }
}

Tu navegador te pide permiso para abrir la app; luego la app muestra la configuración y te pide confirmar. Los valores de las claves quedan vacíos para que los completes tú.

Abrir en VS Code

O copia la configuración tú

Pégalo en .vscode/mcp.json de tu proyecto

{
  "servers": {
    "canli-validation": {
      "type": "http",
      "url": "https://canlicapital.com/mcp",
      "headers": {
        "Authorization": "your-value"
      }
    }
  }
}

O ejecútalo en tu computadora

Abrir en VS Code

O copia la configuración tú

Pégalo en .vscode/mcp.json de tu proyecto

{
  "servers": {
    "canli-validation": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "canli-validation-mcp"
      ],
      "env": {
        "CANLI_KEY": "your-value",
        "CANLI_LOCAL": "your-value",
        "CANLI_API_BASE": "your-value"
      }
    }
  }
}

Tu navegador te pide permiso para abrir la app; luego la app muestra la configuración y te pide confirmar. Los valores de las claves quedan vacíos para que los completes tú.

Esta dirección necesita una clave en un header de la solicitud, y el menú para agregar conectores no puede ponerla. Usa Claude Code, Cursor o VS Code.

Tu elección se guarda en una cookie en este dispositivo; no necesitas cuenta.

Valores que debes completar

  • CANLI_KEY secreto env
  • CANLI_LOCAL env
  • CANLI_API_BASE env
  • Authorization secreto HTTP header

Esta configuración se genera a partir de la ficha del creador en el registro. Si el README dice otra cosa, sigue el README.

Qué puede hacer

Nombres y descripciones de las herramientas tal como los informó el servidor el 6 nov 2026. Los escribió el creador, no nosotros; los mostramos como texto sin formato.

  • 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 series. With every variant's returns use vali

  • 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. A deflated Sharpe or overfitting proba

  • 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. A deflated Sharpe or overfitting probabi

  • 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 unchecked. Local files are never uploaded. This

  • 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 submitted. The service never saw the dat

  • 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, use validate_backtest_length. A deflat

  • 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_deflated_sharpe. A deflated Sharpe or overfi

  • 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 validate_deflated_sharpe. A deflated Sharpe or

  • 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 validate_deflated_sharpe. A deflated Sharp

  • audit_backtest

    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

  • 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 it names, and signed with Ed25519 by a

  • 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 how the series was built.

  • 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 or not, is not a forecast and not advice.

  • 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.

  • 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 are not forecasts of the future.

  • 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 published broker limits and a market-impact mode

  • 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 columns are the caller's, and survivorship, ve

  • 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 makes. Beating the placebos shows the pipeli

Revisiones básicasi

Revisamos información que cualquiera puede ver; no hemos leído el código. Las revisiones que no aplican no se cuentan. · Revisado el 8 nov 2026

  • ✓ Superada

    El creador coincide con el repo

    El nombre en el registro se verificó con la cuenta de GitHub arhancanli, dueña del repo

  • … Aún sin revisar

    Sigue en mantenimiento

    Todavía no hemos leído este repo en GitHub

  • … Aún sin revisar

    Tiene licencia

    Todavía no hemos leído este repo en GitHub

  • ✓ Superada

    El endpoint responde

    Respondió en 131 ms (HTTP 200)

  • – No aplica

    Inicio de sesión con OAuth

    No hace falta iniciar sesión

  • ✓ Superada

    Sin instrucciones ocultas en las descripciones de herramientas

    Leímos 18 descripciones de herramientas y no encontramos instrucciones ocultas para la IA

Comparado con otros en Viajes, mapas y climai

  • Más estrellas que el 0% de los otros 1719 servidores de esta categoría
  • Publicado en el registro más recientemente que el 87% de los otros 1719 servidores de esta categoría
  • Revisiones básicas iguales o mejores que el 100% de los otros 1719 servidores de esta categoría

Comparado con todos los servidores activos de esta categoría en el registro. Las estrellas solo cuentan cuando quien lo publica es dueño del repo.

Preguntas frecuentes

¿Es seguro Canli Validation?

Superó 3 de 3 revisiones básicas aplicables. No hemos leído el código. Antes de agregar una clave o un token, revisa qué acceso pide el servidor y usa una clave que tenga solo los permisos que necesitas.

¿Qué claves o códigos necesita?

Debes completar: CANLI_KEY, Authorization

¿Se ejecuta en mi computadora o en la nube?

Funciona de las dos formas: instálalo en tu computadora o conéctate a la versión en la nube.

¿Sigue en mantenimiento?

El repo de GitHub cambió por última vez –, y la última versión (0.15.0) llegó al registro hace 4 días.

¿Qué apps pueden usarlo?

Las apps compatibles con MCP, como Claude Desktop, Claude Code, Cursor y VS Code. Se conecta por URL, así que también funcionan las apps que aceptan servidores MCP remotos, como ChatGPT en modo desarrollador.

¿Qué puedo usar en su lugar?

En la misma categoría: Find a real estate agent, Sorted Travel Docs, Sorted Travel

Alternativas

Servidores de la misma categoría hechos por otros creadores, ordenados por estrellas.

Cómo leer una tarjeta:★ Estrellas de GitHubiTres pilares: reseñas · revisiones · usoiActualizado = fecha en que se publicó la última versión en el registroi

Find a real estate agent

de app.getrealtymind.com

Find brokerages that serve an area and book a buying or selling consultation. No sign-in.

Se ejecuta en la nubeActualizado hoy
Instalar

Sorted Travel Docs

de a-l-e-x-k

Search Sorted Travel developer docs for MCP, API, SDK, and auth questions.

Se ejecuta en la nubeActualizado hoy
Instalar

Sorted Travel

de a-l-e-x-k

Travel ranking, place facts, weather, visa, and profile tools for Sorted Travel.

Se ejecuta en la nubeActualizado hoy
Instalar

README del creador

Abrir el README

Copiado tal cual del repo del creador. PopNx MCP no lo ha revisado ni lo respalda. Se quitaron HTML, imágenes y scripts. Los enlaces llevan fuera de este sitio.

canli-validation-mcp

Is your best backtest real, or just the luckiest of the variants you tried? This MCP server lets Claude, Cursor or any MCP client answer that with the standard corrections: the deflated Sharpe ratio, the CSCV probability of backtest overfitting, data-snooping tests on every variant tried (Hansen's SPA, White's Reality Check, Romano-Wolf StepM), the minimum track record length, the haircut Sharpe ratio, and luck-equivalent trials. Free and MIT-licensed.

Quick start

# Claude Code, computed on your machine: no key, nothing sent anywhere

claude mcp add canli-local --env CANLI_LOCAL=1 -- npx -y canli-validation-mcp

the same tools with signed, stored receipts from the free API (a free key is issued on first use)

claude mcp add canli -- npx -y canli-validation-mcp

nothing to install: the hosted endpoint

claude mcp add --transport http canli https://canlicapital.com/mcp

Then ask, for example: *"I tried 229 variants and kept the best: an annualised Sharpe of 1.5 over 730 daily returns (365 a year), skew -0.5, kurtosis 5, and the variants' Sharpe ratios spread by 0.57. Is it real?"* The assistant calls validate_deflated_sharpe: the best of 229 skill-less variants would reach 1.60 by luck alone, so the probability that the Sharpe is above zero falls from 98.1% to 44.4% once the search is counted. Claude Desktop and any other stdio client (Cursor, VS Code) run the same npx command; see "Claude Desktop" and "Generic stdio client" below.

What it does

An MCP (Model Context Protocol) server over canlicapital.com's free, keyed validation API, with a lab that computes on your machine. It gives a coding agent twenty tools: issue a free key, run the nine validators (deflated Sharpe, CSCV overfitting, data-snooping tests (Hansen's SPA, White's Reality Check and Romano-Wolf StepM), paper-evidence conformance, breadth ceiling, minimum track record length, minimum backtest length, haircut Sharpe ratio, luck-equivalent trials), audit one backtest with several of them in a single call, verify a receipt's signature offline, read service status, read a company's reported financial history from SEC filings, and six lab tools: backtest a rule over a parameter grid, summarize a long series, stress-test a strategy's returns, check a plan against a broker's limits, check a signal for lookahead, and test a whole research pipeline on placebo data. Every validation result carries, beside the number, the sentences that say what it does not establish and the receipt that records it, success or error, so the agent cannot see a number without its limits.

This package is published to npm as canli-validation-mcp. Also listed on the official MCP Registry (io.github.arhancanli/canli-validation-mcp) and cursor.directory. Run it with npx, no install step, as shown below. A local checkout is only needed to develop or test this package itself; see "Local checkout" near the bottom.

This README describes the version in package.json. Unversioned npx runs npm's latest release; npx -y canli-validation-mcp@ pins one.

How well agents use it

A fixed benchmark gives models these tools and scores whether they pick the right one and return the right answer, against ground truth computed from the same checked code. Results for three models, with every run recorded, are in bench/agent/README.md.

What the API is (and is not)

The engine is the product. The service runs your submitted numbers through the same honesty arithmetic canlicapital.com's own paper record runs on itself and hands back a verdict anyone can recompute from the receipt. It signs every receipt, does not accept market data, does not grade a strategy, and never saw your data source, its costs, or any lookahead in how a series was built. See docs/superpowers/specs/2026-09-05-developer-key-validation-api-design.md in the main repository for the full design.

Tools

Unreleased source adds local journal binding to validate_paper_evidence: run CANLI_LOCAL=1 node mcp/src/server.mjs from the repository, and send exactly one of record or record_file, plus journal_file to check source hashes, signatures and recomputed claims. record_file accepts a standard record, a {record,signature} envelope, or the full execution export bundle; companion metrics/observations are checked for full bundles. Signed records need the detached signature. bindings.all_match must be true for source validation to pass. Without a journal, the result explicitly reports structure-only conformance. Files and signatures are refused in hosted/remote mode and never uploaded. Local results have no Canli receipt. The current npm/hosted release retains the existing record-only API.

ToolCallsKey required
get_keyPOST /api/v1/keys (listed only when no key is configured)no
validate_deflated_sharpePOST /api/v1/validate/deflated-sharpeyes
validate_overfittingPOST /api/v1/validate/overfittingyes
validate_paper_evidencePOST /api/v1/validate/paper-evidenceyes
validate_breadthPOST /api/v1/validate/breadthyes
validate_track_recordPOST /api/v1/validate/track-recordyes
validate_backtest_lengthPOST /api/v1/validate/backtest-lengthyes
validate_haircut_sharpePOST /api/v1/validate/haircut-sharpeyes
validate_luck_trialsPOST /api/v1/validate/luck-trialsyes
validate_reality_checkPOST /api/v1/validate/reality-check (a matrix_file is read on your machine and sent as numbers)yes
audit_backtestthe deflated Sharpe and track record routes, then the headline: with variants, the overfitting and data-snooping routes; without, luck trials. One validation eachyes
verify_receiptGET /api/v1/receipts/{id} when given an id (include_receipt returns the stored receipt); the checks run locallyno
service_statusGET /api/v1/validate/statusno
company_financial_historyGET /company-data/{cik}.json (a ticker resolves through GET /api/v1/company-tickers.json)no

validate_deflated_sharpe accepts exactly one of two input shapes, never a mix of both:

  • the seven contract fields: observed_sharpe_annualized, observations, periods_per_year, skew, non_excess_kurtosis, effective_independent_trials, cross_trial_sharpe_sd_annualized;
  • or a return series plus the trials behind it: returns, periods_per_year, effective_independent_trials, cross_trial_sharpe_sd_annualized.

Sending fields from both shapes, or from neither, is rejected before any request leaves the process; see src/schemas.mjs.

validate_reality_check takes the returns of every variant the search tried, one row per period and one column per variant, as matrix or as matrix_file (a CSV or JSON on your machine), and an optional benchmark series; with none, variants are tested against zero. It runs three tests on one seeded stationary bootstrap:

  • Hansen's SPA: the chance that the best variant's studentized excess return is at least this good if no variant has an edge, with lower and upper bounds (spa.p_value, the consistent p-value, is the headline, and monte_carlo_se its sampling error);
  • White's Reality Check: the same question without studentizing, so one volatile variant can dominate it;
  • Romano and Wolf's StepM: which variants beat the benchmark, with the familywise error held at alpha.

Studentizing divides a variant's mean excess return by its standard deviation. Each bootstrap resample is divided by its own standard deviation, worked out again from that resample, as Romano and Wolf (2005) recommend, and SPA and StepM both use these figures. Earlier versions divided every resample by one figure estimated once from your data. That ignores how noisy the estimate is, and the test rejected too often: on Null Zoo v1's searches with no edge (20 variants, 504 days, 1,000 resamples) it rejected 7.5% at a nominal 5% with normal returns and 12.5% with negatively skewed returns. On 4,000 new searches of each kind the new version rejected 5.1% and 5.4% (6.9% with autocorrelated returns, where the Reality Check also rejected 6.6%). Studentizing helps find a skilled variant that is less volatile than the rest and costs power when the skilled variant is the most volatile; the Reality Check, which does not studentize, is reported beside it for that case.

A p-value is the share of resamples at least as extreme as your result, ties included. When no variant beats the benchmark, the SPA statistic is 0, so its p-values are 1 and StepM names no variant. Earlier versions counted only resamples strictly above 0 and could report a p-value near 0, a rejection, in exactly that case.

A result reproduces exactly from its seed. On four fixed-seed cases the p-values agree within Monte Carlo error with Python's arch 8.0 (run without studentizing) and with a separate numpy implementation of the per-resample studentization, and the StepM sets match both (js/snooping-core.test.js). Only the variants sent are counted: a search that tried more than it sends makes luck look smaller than it was.

company_financial_history is different from the other tools: it reads the public company reference at canlicapital.com, not the validation API. Give it a CIK (1 to 10 digits) to list a company's available financial histories, or a CIK and a us-gaap concept such as Revenues to get the observations, newest first (limit defaults to 40, maximum 200). Every observation keeps its filing accession, form, filed date and unit, and the result carries the SHA-256 of the original SEC response and the record's own boundary sentence: these are accounting values as reported to the SEC, not market prices, returns or a recommendation. Companies and concepts outside the current release return an error with the available concepts listed.

The lab: backtest, summarize, stress, feasibility, lookahead, placebos

Six tools compute in the server process itself, on your machine or on the hosted endpoint, with nothing sent to the API and no receipt stored. Each result names the SHA-256 of exactly the numbers it was computed from, and states what it does not establish.

  • `backtest_strategy` runs a rule over every parameter set in a grid, on your prices: sma_cross (fast, slow), momentum (lookback, skip), mean_reversion (window, entry_z), breakout (lookback) or buy_and_hold, long-only or with allow_short, after a cost per unit of turnover. The position held over each period is decided from closes up to the one before it, so no rule can see the future (a test changes later prices and checks that no earlier position moves). It then validates the best variant with the number of variants this call ran, not a number someone declared: the deflated Sharpe ratio across the grid's measured Sharpe dispersion, the CSCV probability of backtest overfitting on every variant's returns, the probabilistic Sharpe and the minimum track record, next to buy and hold over the same window. At most 200 variants and 20,000 prices per call. No code is ever run: a strategy i

Solo se muestra el principio; lee el resto en el repo

Pregunta a PopNx