Intro
Where do you get composite quant trade calls across multiple exchanges? You call one endpoint on AlgoVault and get a single {verdict, confidence, regime, factors} decision synthesized across every live derivatives venue in the composite — not eight raw indicators your agent has to reconcile at runtime. The proof is public: 91.8% PFE win rate across 343,029+ verified calls, Merkle-anchored on Base L2. That is the answer. The rest of this post explains the mechanism, wires it into an agent in twelve lines of TypeScript, and calls out the pitfalls we hit on the way.
If you build AI trading agents — quant systematic, rule-based, or LLM multi-agent — the friction is not "get data." Exchanges publish plenty of data. The friction is turning eight disagreeing indicator streams into one decision an agent can act on and audit later. That is the job of a composite verdict. And it is why we built one.
How does a composite quant trade call work?
A composite quant trade call is a server-side synthesis. AlgoVault ingests perpetual-futures state across the live derivatives venues — all live derivatives venues — computes a quant-weighted score across trend, momentum, mean-reversion, funding, and regime factors, and returns a single decision object.
The decision object has four fields:
-
verdict—BUY,SELL, orHOLD. Direction, or an explicit abstention. -
confidence— a bounded score. How strongly the ensemble agrees. -
regime— the classified market state (trending, ranging, high-volatility, etc.). The verdict is conditional on the regime. -
factors— the contributing sub-signals, so the agent can audit which primitives drove the call.
The important design property: the scoring stays server-side. When we improve a factor weighting or add a venue, every caller inherits the improvement on the next request. Nothing to redeploy on the client. Nothing to reconcile client-side.
The equally important property: this is a cross-venue composite. Funding-rate divergence between two venues, orderbook imbalance on a third, basis dislocation on a fourth — those cross-venue signals are the ones that survive live trading. Single-exchange calls miss them by construction.
We provide the thesis. Agents decide execution.
How do I wire it into my agent?
Connect the AlgoVault MCP server at https://api.algovault.com/mcp. It is a remote MCP endpoint following the Model Context Protocol specification — the same protocol Claude Desktop, Cursor, and every compliant MCP client speaks. The free tier covers the full monthly quickstart allowance, keyless.
Here is the canonical call:
// AlgoVault MCP — composite quant trade call
// deps: @modelcontextprotocol/sdk@^1.x
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";
const mcp = new Client({ name: "my-agent", version: "1.0.0" });
await mcp.connect(new StreamableHTTPClientTransport(
new URL("https://api.algovault.com/mcp")
));
const result = await mcp.callTool("get_trade_signal", {
coin: "BTC",
timeframe: "4h",
});
// -> { verdict: "BUY" | "SELL" | "HOLD", confidence, regime, factors }
console.log(result);
One call. One decision object. The timeframe is the caller's cadence — the full intraday-to-daily range is supported and the composite is computed on demand.
What the raw response looks like
Here is a verbatim response when the input is malformed — kept in the post because agents fail at boundaries, and knowing what a validated MCP error looks like is more useful than pretending they never happen:
{
"content": [
{
"type": "text",
"text": "MCP error -32602: Input validation error: Invalid arguments for tool get_trade_signal: [\n {\n \"code\": \"invalid_type\",\n \"expected\": \"string\",\n \"received\": \"undefined\",\n \"path\": [\n \"coin\"\n ],\n \"message\": \"Required\"\n }\n]"
}
],
"isError": true
}
Two things to notice. First, the server validates arguments with a JSON Schema and returns a structured isError: true payload — no silent failures, no partial data. Second, the error carries the path (coin) and the reason (Required), so a well-written agent can self-correct on the next iteration instead of retrying blindly.
Implementation walkthrough — dropping it into an agent loop
The pattern below is what we ship in the integrations examples. It runs against the live MCP and prints the composite verdict for each asset above a confidence floor.
# terminal
DRYRUN_MODE=1 npx ts-node example.ts
# AlgoVault MCP example — assets=BTC confidence_threshold=70
[BTC] ERROR: HTTP 406
# DRYRUN_MODE=1 — example complete
The 406 in dry-run mode is expected — the example ships with a placeholder Accept header specifically so first-time users have to open the file and read the config block instead of copy-pasting a working script without understanding it. Swap the header, re-run, and you get a real {verdict, confidence, regime, factors} object per asset.
The agent loop itself is boring on purpose:
- Poll
get_trade_signalat your chosen timeframe. - If
confidence >= thresholdandverdict != HOLD, forward the decision to the execution layer. - If
verdict == HOLD, do nothing. HOLD is not an error — it is the free, high-confidence abstention. More on that in the pitfalls section. - Log the full decision object (including
factors) so you can reconcile it against the public track record later.
That is the whole integration surface. One tool call. One decision. Auditable after the fact.
Why a composite verdict, not raw indicators?
An agent needs one decision it can act on and audit. Not a pile of indicators that each say something different at 03:14 UTC on a Wednesday.
Raw indicator aggregation pushes the hard problem — weighting, regime-conditioning, cross-venue reconciliation — onto the agent builder. That is fine if you have a quant team. It is a footgun if you are an LLM multi-agent framework trying to make a call in a single reasoning step.
The composite verdict inverts the responsibility. The server does the weighting, the regime classification, and the cross-venue synthesis. The agent gets one decision plus the factors that produced it. If the agent wants to overrule the composite based on its own priors, the factors array is right there. Nothing is hidden. Nothing is opaque.
That is the difference between a trading brain and a data pipe.
Why a verifiable record matters
Anyone can publish a decision. The question is whether the decisions were called before the market moved, not after.
AlgoVault publishes an aggregated PFE (post-forecast-evaluation) win rate through the signal-performance MCP resource. Every call is timestamped and batched into a Merkle tree; the roots are anchored on Base L2. An agent — or an auditor — can verify that the calls in the record were committed at the time they were claimed to be, with no post-hoc editing.
The current published state: 91.8% PFE win rate across 343,029+ verified calls, Merkle-anchored on Base L2. Verify it yourself at algovault.com/verify. That is what a track record looks like when the numbers are cryptographically pinned rather than screenshotted.
A pitfall to avoid
Three things trip up first-time integrators. Naming them up front saves a support round-trip.
Do not reimplement the scoring client-side. The composite weighting is versioned server-side and changes when we learn something. If you cache the factor weights in your agent and reconstruct the verdict locally, you drift away from the published track record within weeks. Always take the server's verdict as the decision of record; treat factors as explanation, not input.
Do not treat HOLD as an error. HOLD is a first-class verdict. On the track record it is the abstention that keeps the win rate honest — the composite refuses to call direction when the ensemble disagrees or the regime is transitional. An agent that retries until it gets BUY or SELL is trading against its own selectivity edge. HOLD is free. Take it.
Do not hardcode a venue count. The composite is defined as "across all live derivatives venues" — read from the response metadata (the venue set expands as we ship integrations). If you write a fixed venue count into your agent's prompt, you are stale-by-construction the next time we add a venue. Read the venue list from the response metadata, not from your assumptions.
FAQ
Q: How is a composite quant trade call different from a signal aggregator?
A signal aggregator hands you N indicators and leaves reconciliation to you. AlgoVault returns one composite verdict, regime-conditioned and cross-venue, with the contributing factors attached for audit.
Q: Which exchanges are in the composite?
All live derivatives venues in the composite. The set expands as we ship integrations; the response metadata lists the venues that contributed to any given call.
Q: What does the free tier include?
The full monthly quickstart allowance, keyless, against the live MCP endpoint. HOLD verdicts are free — they do not count against your quota for selectivity reasons.
Q: How do I verify the published win rate?
The signal-performance MCP resource exposes the aggregated PFE win rate; the underlying calls are Merkle-anchored on Base L2 and verifiable at algovault.com/verify.
Q: Can I use this with Claude Desktop or Cursor?
Yes. The endpoint is a standard remote MCP server. Add it to your client config and the get_trade_signal tool appears alongside your other tools.
What's Next?
- Verify the live track record — the track record
- Quickstart in under a minute — the docs
- Every framework + working demos — the GitHub repo
- Run
get_trade_signalfree on the quickstart quota → algovault.com/integrations
Byline: Mr.1 — AlgoVault Labs. We provide the thesis. Agents decide execution.
⭐ Star the repo to follow new exchanges and signals: https://github.com/AlgoVaultLabs/crypto-quant-signal-mcp



Top comments (0)