AlphaAssay $ test my signal

The 21 tools

The hosted public AlphaAssay MCP server exposes 21 tools: 6 free and 15 metered — currently $0.05 per completed check on every paid tool, as published by /v1/meta/pricing. The local stdio registry contains a separate catalog of 50 operator/research tools; it is a development surface, not the customer storefront and not the number registries should advertise. Public assay tools are demote-only — they can devalue a claim, never bless one — and none of them places orders, touches a broker or gives buy/sell advice. You send derived evidence (returns, trades, candles you choose); raw payloads are not retained — the ledger keeps a one-way fingerprint, the verdict, summary statistics and a coarse return sketch for family accounting, and a pre-registered spec is stored by design (the complete retention ledger). This page is the plain-language version of each tool's job; the machine-readable descriptions live in the server itself.

How do you connect?

The server speaks streamable HTTP at https://mcp.alphaassay.com/mcp and is published in the official MCP registry as com.alphaassay/mcp. Clients that expect a local stdio server can bridge it with one line: npx mcp-remote https://mcp.alphaassay.com/mcp. No SDK is required either way. REST overlaps with many operations but is not a one-for-one wrapper around every tool (API and transport parity); x402 is only the REST route POST /x402/v1/gauntlet (how that route pays). Paid MCP tools take an api_key. Create or manage one at api.alphaassay.com/account; any signed-in account allowance and the current MCP charge are published by the live pricing registry.

Which tools are free — and why?

6 tools cost nothing, permanently, because they are how you audit us before paying: the demo, the public records, the offline check, the payload lint and the due-diligence protocol. Trust infrastructure does not belong behind a meter.

assay_demo — see a full verdict before sending anything

Runs the real fail-closed validator with no auth, no payment and no signup. It answers in two shapes, and which one you get depends on what you send — assert against the right one:

  • No body (or an empty one) → the built-in 40-trade example in the validate envelope: a nested verdict object with findings, leakage taxonomy, reproducibility readiness and provenance hashes, plus the free synthetic_null_preview — three synthetic no-edge paths (stochastic volatility, jump diffusion, drift bursts), ground truth „no edge", so you can watch the process placebo work before paying anything.
  • A golden specimen as the body → the gauntlet envelope: top-level verdict, died_at, failure_codes, stages and budget. This is the shape the specimens document their known answers against.

Both are real validator output; the difference is the surface, not the rigour. The demo is unsigned and deterministic: between two identical calls _meta.as_of is the only field that changes — request and input digests are derived from the payload, so they stay put and can be compared byte for byte.

assay_graveyard — has this idea already died?

Anonymised mortality statistics per structural signal family: tested, killed, survived, top causes of death, and the crowd prior your submission would be deflated by. Check before you spend weeks on an idea whether the crowd already buried it. k-anonymous — families with fewer than 5 distinct submitters return only coarse taxonomy stats.

assay_calibration — what does the current disclosure contain?

Calibration v0 exposes only a privacy-bucketed count of evaluated mature registrations, forward_outcomes.status=accumulating, and honesty=insufficient_history until a separately defined mature-outcome metric exists. It does not yet publish a hit rate, Brier score or survived/deflated outcome score. A valid snapshot contains its signature fields; an unavailable or stale snapshot reports signed:false and a reason instead of presenting unsigned data as trusted. The format is described in how we grade ourselves. This document is population/status evidence only; it does not establish examiner quality or outcome accuracy.

assay_certificate_verify — is this certificate trusted by the platform?

Fail-closed verification of an Ed25519-signed AlphaAssay certificate against the service's externally pinned signed keyring and complete revocation-head history. A caller-supplied public key is evidence, never a trust root; a full valid result also requires a retained certificate-purpose key and no matching revocation. Use it on any certificate someone attaches to a signal they are selling.

assay_provider_protocol — judge any signal vendor or validator with seven tests

The falsification protocol as machine-readable rules: provenance, survivorship, pre-registration, placebo, costs, trial accounting, examiner — each with a machine-checkable failure condition, and tests 3–6 name the endpoint that automates them. It hands your agent the checklist; it does not rate, score or rank any provider, and test 7 applies the whole protocol to us.

assay_preflight — lint the payload before you spend a check

Checks the form of a submission — DSL schema, OHLCV sanity (finite positive prices, aligned series, strictly increasing timestamps), trade-row types — in the same failure-code vocabulary the paid tools use, and warns honestly when the sample sits below the engine's evidence floor. A clean preflight is not evidence of an edge; it only means the trial can run — so no paid check ever dies of a typo.

Which tools put a signal on trial?

The trial group interrogates a strategy or a claim about one, each tool from a different angle, all priced by the live registry — a fail costs the same as a pass, because you are buying the trial, not the outcome.

assay_signal — the fail-closed verdict on your export

Send a trade list, equity curve or QuantConnect/LEAN export — crypto, stocks, futures, FX alike — and get pass / conditional / fail / insufficient_evidence with the evidence attached. Survival now demands two thresholds at once (expected-max-Sharpe deflation AND multiple-testing significance), every fail names its killer in one plain sentence (died_at_plain), and the deflation haircut is decomposed: how much was your search, how much your fat tails (dsr_attribution). Declare your trial count honestly — omitting it earns the named finding TRIALS_UNDISCLOSED instead of a silent benefit of the doubt. Optionally attach a pit_evidence attestation about your data's point-in-time discipline: opt-in and demote-only — only an explicitly computed material look-ahead hard-fails, everything inconclusive changes nothing.

assay_forensics — WHY it fails, not just that it fails

Upload decision timestamps plus candles and get the leak named: does the edge collapse under a one-bar execution delay (look-ahead)? Does the move happen before your decision (front-loading)? Does random timing with your trade structure do just as well? The placebo evidence is three-dimensional — timing, sign and chronology. Naive timestamps are rejected outright; timezone ambiguity is the top source of fake edges.

assay_backtest — a backtest that remembers your retries

Define the strategy as an executable JSON DSL (sma, ema, rsi, atr, roc, zscore + logic ops), supply your own candles, and get net-of-cost returns plus a family-deflated verdict. Every call lands in your family's trial ledger — with near-duplicate variants collapsed to their effective count, so honest exploration is cheap and quiet grinding is priced. That memory is the feature: it keeps your next verdict meaningful.

assay_batch — the whole sweep, tested honestly in one call

Up to 25 DSL variants — a list, or base_spec plus a parameter grid with canonical expansion order — and every variant becomes a family-ledger trial verdicted under the cumulative deflation of its siblings: later variants see the budget the earlier ones spent, which is the whole point. The report is demote-only by construction: survives/deflated_out counts and per-variant verdicts, never a ranking, never a „best pick". Metered per variant, individually journaled; if the balance runs short you get what was paid for plus an explicit declined counter — no silent truncation.

assay_gauntlet — the whole battery, one dossier

Validator, family deflation, honesty stamps, purged combinatorial time-partitions (cpcv), the 500-twin placebo, the capacity ceiling and the graveyard prior — chained into one response that says which gate killed it first, at what placebo percentile, at what tradable size („your edge dies at $X"), and how much search budget your family has left (break_even_n). Built for iterating agents: training feedback with budget economics, not a bare yes/no.

assay_falsify — we actively try to kill it

An adversary runs eight attacks — execution-lag push, cost stress, time jackknife, regime split, parameter-neighbourhood perturbation (now with a full stability_surface: the Sharpe terrain around your optimum, because a lonely spike is an overfit fingerprint), cpcv partition, a synthetic-null placebo (does the strategy beat no-edge worlds built with stochastic volatility and jumps?), and a drift-burst strip (remove the flash-crash bars whose PnL dwarfs local volatility — an edge that dies without them was rarely harvestable at quoted prices) — and returns the survival map: what kills it first, what it withstands and up to what limit. The graveyard sharpens the attack order: families that usually die of costs get cost-stressed first. Surviving everything is the strongest robustness evidence this platform can give — still not a profit promise.

assay_pbo — did your sweep find an edge, or manufacture one?

Submit the full T×N trial matrix of a parameter sweep and get the Probability of Backtest Overfitting via combinatorial purged cross-validation, with degradation slope, probability of out-of-sample loss and stochastic dominance of your picks versus the pool; PBO ≥ 0.5 earns the named demote PBO_HIGH. The pairing matters: the trial ledger counts how many tries your family burned — PBO grades whether the selection process itself is overfit. The statistic, explained.

assay_reproduce — audit the arithmetic, not the story

A different audit object: not the signal, the caller's calculation. Send trades, the candles they were filled on, and the claimed headline metrics — the engine independently rebuilds the equity book and grades each claim against disclosed per-metric tolerances (published cross-engine divergence reaches 3.71%, so the band is explicit output, never a hidden judgment). Every fill is checked against its bar's low–high range — a fill outside it was never physically available (FILL_OUTSIDE_BAR_RANGE) — and stop/limit exits that OHLC data cannot order are priced worst-case (FILL_AMBIGUITY_MATERIAL). It audits whether the numbers follow from the trades; it does not judge whether the strategy is good.

assay_tradelog — interrogate a fill log against itself

No candles needed: this audit asks whether a raw fill log is internally consistent. It hunts exact duplicate fills (double counting inflates every headline number), time travel — exits before entries, or decisions stamped after the entry they supposedly caused, the anatomy of a look-ahead — PnL that contradicts the row's own prices, naive or future timestamps (ambiguous clocks are the top source of fake edges), and fills booked outside the declared trading calendar. Where assay_preflight lints shape and assay_reproduce audits arithmetic against candles, this one needs nothing but the log itself.

assay_survivors — which variants survive family-wise error control

The same T×N matrix assay_pbo grades, answered variant by variant: could this family's evidence kill it at family-wise error rate α, and in which stepdown round — Romano-Wolf stepwise multiple testing with a circular block bootstrap that respects serial dependence. The output is an error-budget disclosure, never a ranking: fail means nothing survives (NO_SURVIVORS_AT_FWER), conditional means survivors are disclosed — explicitly not a pass — and thin data blocks with a named reason. No sorting, no seal, no recommendation.

assay_cpcv — the full purged-CV distribution, not one number

The gauntlet's cpcv stage answers a single question; this tool hands over everything behind it: the annualized Sharpe of every purged combinatorial half-partition of your history — as quantiles and a histogram — the number of recoverable backtest paths, purge/embargo accounting, and the demote line: when too few of the purged partitions show a positive Sharpe, the edge lives in a handful of lucky segments rather than the whole record, and the result earns cpcv_unstable. Send a net-return series directly, or a DSL spec plus candles — the series is then computed with the same primitives the gauntlet uses, so the distribution describes the same strategy the verdict judged.

Which tools build a pre-registered record?

Two tools implement pre-registration. Retaining the original commitment gives a reviewer a concrete value to compare with later publications; independent time and immutability claims additionally require an independently controlled anchor. Pre-registration is not immune to trying many variants, which is why every registration still counts against your family's deflation budget.

assay_register — seal the call before the data exists

Your strategy spec is canonically hashed with its service acceptance time into the operator-published Merkle/JSONL chain. Registrations are idempotent, and withdrawing one still counts against your family's budget — pre-registering ten variants and deleting nine is the oldest trick in the book, and it is priced in.

assay_verdict — the post-cutoff test, then a certificate that travels

Evaluates a registration strictly on bars after its cutoff, with maturity floor and fail-closed gap handling — and even an anchored signal is still deflated by how much its family searched. A separate certificate-issuance action exports the result as a signed artifact (current price in the live registry; verification free for everyone) that embeds the full trial_disclosure: N, effective N, sample length and the threshold curve — the numbers a skeptical reader needs to audit the deflation are inside the signed document itself.

assay_var_es — does your risk forecast survive contact with reality?

The other tools test return claims; this one tests risk numbers. Submit the VaR/ES forecasts your model produced ex ante alongside the realised returns, and the exceedance backtest checks whether losses breached your own thresholds more often than your stated confidence level allowed. A risk model that is quietly too optimistic is a claim like any other — so it gets tested like one, not taken on trust. Optionally attach a naive benchmark forecast (say, a rolling historical quantile): a Diebold–Mariano test on a strictly consistent loss then asks whether your model actually beats the benchmark it claims to improve on — losing to it decisively is the kill RISK_FORECAST_DOMINATED_BY_BENCHMARK, because sophistication that underperforms naivety is theatre.

assay_conformal — does your confidence label survive the outcomes?

The third kind of claim after returns and risk: coverage. Submit the prediction intervals your model emitted — lower and upper bound per case — and the audit measures how often the truth actually landed inside them, against the coverage you claimed. An interval that promises „90%" and delivers seventy is not calibrated confidence, it is a story; this is the test that tells the two apart.

What do all 21 have in common?

Demote-only: evidence can kill a claim, never inflate one, so there is no „verified winners" list to raid. Pure/read results require an explicit as_of for reproducibility; stateful calls expose their effective timestamp and replay stored output only under the documented idempotency contract. Fail-closed: when data is too thin or a model leaves its validity range, the answer says so instead of guessing. And every fail arrives with its named cause of death. Wire the discipline into your agent once — copy-paste rules — and check prices against the live source on the pricing page. A methodology audit, not investment advice.