Documentation

API reference, usage examples, and pricing for AI agents and human developers.

Quick Start

Add AlgoVault to Claude Desktop in under 30 seconds. Paste this into your claude_desktop_config.json:

{
  "mcpServers": {
    "crypto-quant-signal": {
      "command": "npx",
      "args": ["-y", "crypto-quant-signal-mcp"]
    }
  }
}

Then ask Claude:

"Get me a trade call for BTC on the 1h timeframe"

Free tier: all supported assets, all 11 timeframes (1m–1d), 200 calls/month (up to 100/day). No signup needed. Upgrade to Starter ($9.99/mo) or Pro for higher monthly limits and unlimited funding-arb results.

Your agent can also ask AlgoVault to teach itself how to use the tools — see Knowledge Tools below.

Platform

Tools

Six MCP tools: a directional trade call, market-regime classification, cross-venue funding arbitrage, a multi-asset trade-call scanner, and two knowledge tools your agent can query to learn the API before calling it. Each is callable over MCP and (where flagged) the REST/x402 HTTP API, webhooks, and the Telegram bot — see Channels.

Trade Call get_trade_call

Returns a composite BUY/SELL/HOLD trade call with confidence percentage, regime context, and reasoning. The exchange parameter below lists every venue this tool accepts.

Parameters

Name Type Description
coinstringAsset symbol. BTC, ETH, TSLA, GOLD. Required
timeframestringCandle interval. 1m 3m 5m 15m 30m 1h 2h 4h 8h 12h 1d.
exchangestringVenue to query. Asset availability varies per venue — pass one explicitly to target it. HL BINANCE BYBIT OKX BITGET ASTER BINGX GATE HTX KUCOIN MEXC PHEMEX WHITEBIT BITMART XT.
assetClassstringForce the engine instead of letting the router infer it from the symbol. perp equity.
includeReasoningbooleanInclude human-readable reasoning. Default: true

Omit both timeframe and exchange and the router treats the call as bare: it infers the asset class from the symbol, then applies 15m on BINANCE for a perpetual. Naming either one routes to the perpetual engine explicitly.

Example Response

{
  "call": "BUY",
  "confidence": 78,
  "price": 84250.50,
  "indicators": {
    "funding_rate": 0.0001,
    "funding_24h_avg": 0.00008,
    "funding_state": "NORMAL",
    "oi_change_pct": 2.4,
    "volume_24h": 2381602633,
    "trend_persistence": "HIGH",
    "breakout_pending": "INACTIVE"
  },
  "regime": "TRENDING_UP",
  "reasoning": "Trending regime, upward bias. Funding pressure mild. Volatility neither expanding nor compressed. Trend persistence elevated; momentum structure. Strong conviction from aligned signals.",
  "timestamp": 1712764800,
  "coin": "BTC",
  "timeframe": "1h",
  "_algovault": {
    "version": "1.10.0",
    "tool": "get_trade_call",
    "compatible_with": ["crypto-quant-risk-mcp", "crypto-quant-backtest-mcp"]
  }
}

Response Fields

The example above is abridged. Every response carries these top-level fields.

Field Type Description
callstringThe verdict. BUY, SELL or HOLD.
confidencenumberConviction, 0–100.
pricenumberMark price at evaluation time, in USD.
indicatorsobjectThe raw factor readings behind the verdict (funding, open-interest change, 24h volume, trend persistence, breakout state, session).
regimestringTRENDING_UP, TRENDING_DOWN, RANGING or VOLATILE.
reasoningstringHuman-readable rationale. Omitted when includeReasoning is false.
timestampnumberUnix seconds at evaluation.
coinstringEcho of the resolved asset symbol.
timeframestringEcho of the resolved candle interval.
_algovaultobjectCall metadata — server version, canonical tool name, resolved venue and its status, quota state, and the credential-resolution state.
_receiptsobjectThe audit trail for this verdict. Documented below.
closest_tradeableobjectPresent on HOLD. The nearest higher-confidence setup, so an agent can route elsewhere instead of idling: coin, timeframe, exchange, confidence.
also_seearrayPresent on HOLD. Same shape as closest_tradeable, as a ranked list.

_receipts — the audit trail

Ships on every get_trade_call response. It is what makes a verdict checkable rather than merely asserted: the ledger names each factor the engine weighed, which way it pointed, and whether it moved the result.

Field Type Description
verdictstringThe verdict this receipt explains — equals call.
conviction_pctnumberThe conviction this receipt explains — equals confidence.
regimestringThe regime in force when the verdict was computed.
factorsarrayThe headline readings, each factor / direction / value.
factor_ledgerarrayEvery factor the engine weighed, in evaluation order. Each entry carries factor (the reading’s name), direction (bullish / bearish / neutral), value (the reading, formatted), contributes (boolean — whether it moved this verdict) and strength (primary / supporting / marginal / none).
stripped_remainderobjectWhat was weighed but not named: count, withheld_term_count, unnameable_this_response, unevaluated_terms, and the net direction of the remainder.
track_recordobjectThe live verdict track record at call time — pfe_win_rate, sample size n, the rolling window, and as_of.
verification_uristringWhere that track record can be independently checked.
disclaimerstringInformational-analytics notice carried with every verdict.

_algovault.auth — what happened to your key

Read this before anything else when a paid key seems not to apply. A key that was presented but not accepted still returns a verdict — on the free tier — so the response looks fine and the quota is wrong. This block says so explicitly, and replaces inferring it from the quota numbers.

Field Type Meaning
outcomestringHow the credential resolved. One of the five below.
presentedbooleanWhether an Authorization header was sent at all — the difference between “no key” and “a key that did not work”.
tierstringThe tier actually applied to this call. A paid key showing free means it was not applied.
outcome Where it surfaces Meaning
ABSENTserved responseNo Authorization header. Free tier, working as intended.
RESOLVEDserved responseThe key was recognised and its tier applied.
MALFORMEDserved responseA header was sent but the value is not a key shape. You are served on the free tier — check for a truncated paste or a stray Bearer.
UNKNOWNrefusal — error.data.auth_outcomeWell-formed but not a key we issued. The call is refused with -32003 and retryable: false rather than silently downgraded.
INDETERMINATErefusal — error.data.auth_outcomeThe key could not be checked right now. Refused with -32004 and retryable: true — the key was not rejected. Retry shortly.

The three served outcomes appear in _algovault.auth.outcome; the two refusing ones never do, because the call is refused before a verdict exists — look for them in error.data.auth_outcome instead. See Errors & troubleshooting.

Market Regime get_market_regime

Classifies the current market regime for any asset, on any venue this tool accepts. Returns one of four states: TRENDING_UP, TRENDING_DOWN, RANGING, or VOLATILE.

Parameters

Name Type Description
coinstringAsset symbol. Required
timeframestringCandle interval. 1h 4h 1d. Default: 4h
exchangestringVenue to query. Asset availability varies per venue — pass one explicitly to target it. HL BINANCE BYBIT OKX BITGET ASTER BINGX GATE HTX KUCOIN MEXC PHEMEX WHITEBIT BITMART XT. Default: HL

Example Response

{
  "regime": "TRENDING_UP",
  "confidence": 85,
  "metrics": {
    "adx_interpretation": "Strong trend",
    "volatility_interpretation": "Normal",
    "price_structure": "HIGHER_HIGHS",
    "trend_strength": "STRONG",
    "cross_venue_funding_sentiment": "BULLISH_BIAS",
    "funding_divergence_note": "HL funding 3.2x above CEX avg — longs concentrated on HL"
  },
  "suggestion": "Strong uptrend detected. Favor long positions with trend-following strategies.",
  "timestamp": 1712764800,
  "coin": "BTC",
  "timeframe": "4h",
  "_algovault": {
    "version": "1.10.0",
    "tool": "get_market_regime",
    "compatible_with": ["crypto-quant-risk-mcp", "crypto-quant-backtest-mcp"]
  }
}

Response Fields

Transcribed from a live response. The example above is abridged; every response carries these top-level fields.

Field Type Description
regimestringThe classification. TRENDING_UP, TRENDING_DOWN, RANGING or VOLATILE.
confidencenumberHow strongly the metrics agree on that classification, 0–100.
metricsobjectThe readings behind the call — ADX and its slope with plain-language interpretations, volatility ratio, price structure, pivot quality, trend strength, cross-venue funding sentiment, the underlying session, and per-venue funding under funding_by_venue.
suggestionstringWhat the regime implies for strategy selection and position sizing, in one paragraph.
timestampnumberUnix seconds at evaluation time.
coinstringThe asset evaluated, echoed back.
timeframestringThe candle interval used, echoed back.
_algovaultobjectEnvelope metadata — version, tool, compatible_with, session_id, the resolved exchange and its venue_status, your quota, and auth (see Errors & troubleshooting).

Funding Arbitrage scan_funding_arb

Scans cross-venue funding rate differences across 7 venues: Hyperliquid, Binance, Bybit, Gate, KuCoin, Aster, and OKX. Returns top arbitrage opportunities ranked by annualized spread, with a per-leg liquidity filter so only tradeable spreads surface.

Parameters

Name Type Description
minSpreadBpsnumberMinimum spread in basis points to include. Default: 5
limitnumberMax results to return. Default: 10. Free tier: max 5

Example Response

{
  "opportunities": [
    {
      "coin": "ETH",
      "rates": {
        "HlPerp": 0.000125,
        "BinPerp": -0.000042,
        "BybitPerp": -0.000038
      },
      "bestArb": {
        "longVenue": "Binance",
        "shortVenue": "Hyperliquid",
        "spreadBps": 13.4,
        "annualizedPct": 117.3,
        "direction": "Long Binance / Short Hyperliquid"
      }
    }
  ],
  "scannedPairs": 245,
  "timestamp": 1712764800,
  "_algovault": {
    "version": "1.10.0",
    "tool": "scan_funding_arb",
    "compatible_with": ["crypto-quant-risk-mcp", "crypto-quant-execution-mcp"]
  }
}

Response Fields

Transcribed from a live response. The example above is abridged; every response carries these top-level fields.

Field Type Description
opportunitiesarrayOne entry per asset with a cross-venue funding spread, best first. Each carries coin, the per-venue rates, a bestArb leg (long venue, short venue, spread in bps, annualized percent, and an urgency block counting minutes to the next collection), a conviction block scoring direction consistency and spread persistence over a 24-hour sample, and nextFundingTimes per venue in epoch milliseconds.
scannedPairsnumberHow many venue pairs were compared to produce the list — the denominator behind the ranking.
timestampnumberUnix seconds at evaluation time.
_algovaultobjectEnvelope metadata — version, tool, compatible_with, session_id, your quota, and auth (see Errors & troubleshooting).

Trade Call Scanner scan_trade_calls

Scans a whole promoted-venue universe in one call and returns the top-ranked get_trade_call verdicts, ordered by a selectable lens (open interest, OI change, volume, momentum, …). One request instead of N per-asset calls — ideal for an agent building a watchlist or a scheduled digest.

Parameters

Name Type Description
topNnumberUniverse size to evaluate before ranking (1–100). Default: 20
timeframestringCandle interval. 1m 3m 5m 15m 30m 1h 2h 4h 8h 12h 1d. Default: 15m
exchangestringVenue to query. Asset availability varies per venue — pass one explicitly to target it. HL BINANCE BYBIT OKX BITGET ASTER BINGX GATE HTX KUCOIN MEXC PHEMEX WHITEBIT BITMART XT. Default: BINANCE
oiChangeWindowstringOpen-interest delta window for the oi_change lens. Ignored by other lenses. 1h 4h 24h. Default: 24h
oiBasisstringWhether the open-interest delta is measured in notional value or in contract count. notional contracts. Default: notional
rankBystringWhich slice of the venue’s assets gets evaluated. All nine lenses are listed below, with the short alias each one answers to. Default: oi
limitnumberMax ranked calls to return (1–100). Default: 10
minConfidencenumberDrop calls below this confidence (0–100). Optional.
includeHoldsbooleanInclude HOLD verdicts in the results. Default: false
includeReasoningbooleanAttach human-readable reasoning to each call. Default: false
minLiquidityUsdnumberDrop assets whose 24h notional volume is below this floor, in USD. Optional.

Ranking lenses

Every value rankBy accepts. Pass the lens or its alias — both resolve to the same universe.

Lens Alias Selects
oi (default)The largest positions on the venue, by open interest. The default, and the deepest book.
volumevolThe most heavily traded assets over the last 24 hours, by notional.
gainersgainThe strongest 24-hour price gains — momentum that is already running.
losersloseThe steepest 24-hour price falls — where a reversal setup would form.
moversmoveThe largest absolute 24-hour move in either direction, gainers and losers together.
funding_positivepfrWhere longs are paying shorts most — crowded long positioning.
funding_negativenfrWhere shorts are paying longs most — crowded short positioning.
volatilityatrThe widest ranges, by ATRP — ATR(14) ÷ price × 100 on the scan timeframe.
oi_changeoidThe fastest real open-interest change, measured from the stored OI snapshots.

Example

scan_trade_calls({
  topN: 20,
  timeframe: "1h",
  exchange: "BINANCE",
  rankBy: "oi",
  limit: 10
})
// → the 10 highest-ranked assets, each a get_trade_call verdict
//    (call, confidence, regime, price, indicators, _algovault)

Response Fields

The scan returns counters alongside the results, so you can tell “nothing qualified” from “nothing was scanned” without a second call.

Field Type Meaning
scannednumberHow many assets were evaluated.
eligible_non_holdnumberHow many produced a BUY or a SELL.
holdsnumberHow many produced a HOLD.
errorsnumberA count of venue errors during the scan — not a detail object.
partialbooleanTrue when a venue timed out and the scan is therefore incomplete. Treat the counters as a floor.
callsarrayThe ranked results. Each entry carries coin, timeframe, exchange, call, confidence and regime.
{
  "scanned": 30,
  "eligible_non_hold": 1,
  "holds": 29,
  "errors": 0,
  "partial": false,
  "calls": [
    { "coin": "BTC", "timeframe": "1h", "exchange": "BINANCE",
      "call": "BUY", "confidence": 57, "regime": "TRENDING_UP" }
  ]
}

An empty calls array is the ordinary outcome

Most assets are HOLD most of the time, and includeHolds defaults to false — so a scan that filters every result out is working correctly, not failing. A live 30-asset scan on 1h at the time of writing returned 29 HOLD against 1 actionable call.

Read scanned to confirm the universe was evaluated. To widen the result set, lower minConfidence, or set includeHolds: true to see the HOLD verdicts alongside the rest.

Each result carries the same shape as get_trade_call. A scan charges one unit per returned result, minimum 1. Quota is counted per call, regardless of verdict. x402 is a flat $0.02/scan.

Knowledge Chat chat_knowledge

Ask AlgoVault a natural-language question — get a synthesized answer with citations, grounded in the canonical knowledge bundle (every MCP tool description, response shape, integration tutorial, and code example). Use this when you need an explanation, code pattern, or "how do I" answer. For raw ranked snippets without LLM synthesis, use search_knowledge (faster, no quota cost).

Parameters

Name Type Description
questionstringNatural-language question (5–500 chars). Required
modelstringOptional model override. claude-haiku-4-5-20251001 (default), claude-sonnet-4-6

Response Fields

Transcribed from a live response.

Field Type Description
questionstringYour question, echoed back.
answerstringThe synthesized answer, grounded in the knowledge bundle.
citationsarrayWhat the answer was built from. Each entry carries title, excerpt, source_type and source_url. Check these before acting on the answer.
modelstringWhich model produced the answer — the default, or the override you passed.
_algovaultobjectEnvelope metadata — the bundle_version and bundle_generated_at the answer was grounded in, quota_remaining for the monthly chat allowance, and auth. A chat call refused for quota returns CHAT_QUOTA_EXHAUSTED instead — see Errors & troubleshooting.

Knowledge Search search_knowledge

Ask AlgoVault any question about its MCP tools, response shapes, integration patterns (LangChain / LlamaIndex / MAF / CrewAI), or code examples. Returns ranked snippets from the canonical knowledge bundle. Use this BEFORE attempting any tool call to confirm correct parameter usage and avoid hallucinating tool shapes. Fast (BM25 lexical search, no LLM call, no quota cost). For natural-language synthesized answers, use chat_knowledge instead.

Parameters

Name Type Description
querystringNatural-language search query (3–500 chars). Required
limitnumberMax ranked results (1–50). Default: 10

Response Fields

Transcribed from a live response.

Field Type Description
querystringYour query, echoed back.
total_resultsnumberHow many ranked snippets were returned — at most your limit.
resultsarrayThe ranked snippets, best first. Each carries id, a BM25 score, title, excerpt, source_type and source_url. Read the excerpt before calling the tool it describes.
_algovaultobjectEnvelope metadata — the bundle_version and bundle_generated_at searched, plus auth. This tool costs no quota, so it carries no quota block.

When to use which

Use case Pick Why
Param lookup before tool callsearch_knowledgeFree, fast (no LLM call), returns the exact describe-text snippet.
"How do I integrate with X"search_knowledgeIntegration tutorials are indexed verbatim. BM25 ranks the right tutorial first.
Compare two toolschat_knowledgeSynthesis across multiple snippets needs an LLM. Cited answer beats raw retrieval.
"Write me code for X"chat_knowledgePattern synthesis from code examples needs reasoning. Free tier covers 10/month.

Worked examples

1. Discovery query — agent asks for trade-call docs before calling get_trade_call:

search_knowledge({
  query: "how do I get a trade call with stop loss for BTC"
})
// → ranked snippets including get_trade_call describe-text + integration excerpts

2. Comparison query — ask for synthesis across two tool descriptions:

chat_knowledge({
  question: "what's the difference between get_trade_call and get_market_regime"
})
// → synthesized answer with [source: ...] citations

3. Integration discovery — agent finds the LangChain tutorial:

search_knowledge({
  query: "how do I integrate with LangChain"
})
// → LangChain integration tutorial ranks first, with full code snippet

4. Direct HTTP — search:

curl -X POST https://api.algovault.com/api/search \
  -H "Content-Type: application/json" \
  -d '{"query":"BTC stop loss","limit":3}'

# → { "query": "BTC stop loss", "total_results": 3, "results": [...], "_algovault": {...} }

5. Direct HTTP — chat:

curl -X POST https://api.algovault.com/api/chat \
  -H "Content-Type: application/json" \
  -d '{"question":"how do I get a BTC trade call","model":"claude-haiku-4-5-20251001"}'

# → { "question": "...", "answer": "...", "citations": [...], "model": "...", "_algovault": {...} }

Rate limits & cost

Tier search_knowledge chat_knowledge Notes
FreeUnlimited10 / monthSearch is BM25-only, no LLM cost.
StarterUnlimited50 / monthDefault model: claude-haiku-4-5-20251001.
ProUnlimited200 / monthAdds claude-sonnet-4-6 upgrade option.
EnterpriseUnlimited2000 / monthCustom limits available.

Cost transparency: chat_knowledge costs about $0.002 per call with prompt caching. Quota resets at the first of each UTC month.

Errors & troubleshooting

Every failure this API can return, what it means, and what to change. Verified against the live server.

Failures arrive in two shapes — check both

Check response.error first. If it is absent, check response.result.isError.

A parameter validation failure returns HTTP 200 with result.isError: true and the code as plain text inside result.content[0].text — there is no error object at all. A client that only inspects error reads that failure as a success, then fails again trying to parse the message as a verdict. This is the single most common cause of a working integration appearing broken.

Code Where to read it What it means — and what to do
-32602result.isError — code in result.content[0].textInvalid parameter: a value outside an enum, or a required field missing. The message carries an options array listing exactly what that parameter accepts — read it rather than guessing.
-32003response.error.codeThe API key was not recognised. Check it on your account page, or drop the Authorization header entirely to use the free tier. error.data.retryable is false: retrying will not help.
-32004response.error.codeThe key could not be verified right now — it was not rejected. error.data.retryable is true: retry shortly and treat it as transient, never as a bad key.
HTTP 406HTTP status, plus error.code -32000The Accept header is incomplete. Send both values: Accept: application/json, text/event-stream.

A venue outside the exchange list is a -32602, not an outage. The published list is the set with a live track record; venues without one are not accepted.

Channels

Four ways to reach the same engine: the MCP server, the REST / x402 HTTP API, outbound webhooks, and the Telegram bot. Pick the surface that fits your stack — each links to a dedicated guide.

MCP Server

Connect over the Model Context Protocol at https://api.algovault.com/mcp. Any MCP-compatible client (Claude Desktop, Cursor, Cline, Claude Code) handles the protocol for you. See Connect Your MCP Client for per-client setup. Wiring a non-MCP system? POST tools/call directly. The transport is stateless, so there is no initialize step and no session id to thread:

AV_KEY="av_live_..."   # paste your API key

curl -sS -X POST https://api.algovault.com/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -H "Authorization: Bearer $AV_KEY" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"get_trade_call","arguments":{"coin":"BTC","timeframe":"15m","exchange":"BINANCE"}}}'

No key? Drop the Authorization header and the same call runs on the free tier.

Send both Accept types. The header must list application/json and text/event-stream. Sending only the first returns:

{"jsonrpc":"2.0","error":{"code":-32000,"message":"Not Acceptable: Client must accept both application/json and text/event-stream"},"id":null}

Parse twice. The reply is an SSE frame. The verdict is a JSON string nested at result.content[0].text. Strip the data: prefix, then decode the inner payload:

curl -sS -X POST https://api.algovault.com/mcp \
  -H "Content-Type: application/json" -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"get_trade_call","arguments":{"coin":"BTC"}}}' \
  | sed -n 's/^data: //p' | head -1 | jq -r '.result.content[0].text' | jq

The same call in Python. Both parses in one place — the SSE frame, then the verdict string inside it. No MCP client library, no handshake, no session id.

import json, requests

r = requests.post(
    "https://api.algovault.com/mcp",
    headers={
        "Content-Type": "application/json",
        # both values, or the server answers 406
        "Accept": "application/json, text/event-stream",
        # optional — omit entirely to use the free tier
        # "Authorization": "Bearer av_live_...",
    },
    json={"jsonrpc": "2.0", "id": 1, "method": "tools/call",
          "params": {"name": "get_trade_call",
                     "arguments": {"coin": "BTC", "timeframe": "1h"}}},
    timeout=30,
)

# 1st parse — the reply is an SSE frame; the payload is the line after "data: "
envelope = json.loads(next(l[6:] for l in r.text.splitlines() if l.startswith("data: ")))

# failures arrive in TWO shapes — check both before reading a verdict
if "error" in envelope:
    raise SystemExit(envelope["error"])                      # -32003 / -32004
if envelope["result"].get("isError"):
    raise SystemExit(envelope["result"]["content"][0]["text"])  # -32602, as text

# 2nd parse — the verdict is a JSON *string* inside the tool result
verdict = json.loads(envelope["result"]["content"][0]["text"])

print(verdict["call"], verdict["confidence"], verdict["regime"])
print(verdict["_algovault"]["auth"])   # ABSENT / RESOLVED / MALFORMED

Optional: the full MCP session handshake. You do not need this to call a tool. It is kept for clients that speak full MCP session semantics. It also reproduces what an MCP client does internally:

AV_KEY="av_live_..."   # paste your API key

# 1. initialize — reads a session id from the response headers, if the server issues one
SESSION_ID=$(curl -sS -i -X POST https://api.algovault.com/mcp \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $AV_KEY" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"curl","version":"1.0"}},"id":1}' \
  | awk 'BEGIN{IGNORECASE=1} /^mcp-session-id:/ {gsub(/\r/,""); print $2; exit}')

# 2. notify "initialized"
curl -sS -X POST https://api.algovault.com/mcp \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $AV_KEY" \
  -H "Accept: application/json, text/event-stream" \
  -H "mcp-session-id: $SESSION_ID" \
  -d '{"jsonrpc":"2.0","method":"notifications/initialized"}' >/dev/null

# 3. call the tool
curl -sS -X POST https://api.algovault.com/mcp \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $AV_KEY" \
  -H "Accept: application/json, text/event-stream" \
  -H "mcp-session-id: $SESSION_ID" \
  -d '{"jsonrpc":"2.0","method":"tools/call","params":{"name":"get_trade_call","arguments":{"coin":"SOL","timeframe":"5m","exchange":"BINANCE"}},"id":2}'

The stateless server issues no session id, so SESSION_ID stays empty and the header is ignored. Every call above still succeeds.

Full MCP Server guide →

REST API

Two keyless / keyed HTTP rails for non-MCP consumers: x402 pay-per-call (USDC on Base, no signup) for autonomous agents, and plain API-key POST endpoints for the knowledge tools. Base URL https://api.algovault.com.

x402 Pay-Per-Call (USDC on Base)

No signup. No API key. No billing. Your agent pays per HTTP call with USDC on Base — the payment receipt is the credential. Works with any x402-compatible client or wallet.

How it works

  1. Call the endpoint — your agent POSTs to an x402 route (e.g. /x402/get_trade_call) with no payment attached.
  2. Receive a 402 quote — the server replies 402 Payment Required with the price, asset (USDC), network (Base), and recipient address.
  3. Sign & retry — your x402 client signs an ERC-3009 transferWithAuthorization and retries with the signed X-PAYMENT header. The facilitator submits it on-chain, so your agent pays no gas.
  4. Get your verdict — the server verifies the signature and returns the result immediately; settlement confirms on Base in ~2 seconds.

Quick start (TypeScript)

The official x402-fetch client wraps fetch and runs the 402 → sign → retry handshake for you. Your wallet just needs USDC on Base.

// npm i x402-fetch viem
import { wrapFetchWithPayment } from "x402-fetch";
import { createWalletClient, http } from "viem";
import { privateKeyToAccount } from "viem/accounts";
import { base } from "viem/chains";

const account = privateKeyToAccount(process.env.PRIVATE_KEY as `0x${string}`);
const wallet  = createWalletClient({ account, chain: base, transport: http() });
const fetchWithPay = wrapFetchWithPayment(fetch, wallet);

// Pays automatically on the 402, then returns the verdict.
// content-type: set it EXACTLY once. x402-fetch wraps raw fetch, which would send a string
// body as text/plain — so here you must set it. Circle's GatewayClient.pay() is the opposite:
// it sets Content-Type itself, so passing your own merges into "application/json,
// application/json" and the server replies 400 invalid_content_type (you are not charged).
const res = await fetchWithPay("https://api.algovault.com/x402/get_trade_call", {
  method: "POST",
  headers: { "content-type": "application/json" },
  body: JSON.stringify({ coin: "BTC", timeframe: "1h" }),
});

const verdict = await res.json();
console.log(verdict.call, verdict.confidence); // e.g. "BUY" 72
Set content-type exactly once

The two common x402 clients have opposite requirements, and getting it wrong produces the same 400 invalid_content_type after your payment has already verified (you are not charged):

  • x402-fetch wraps raw fetch, which sends a string body as text/plain — so you must pass content-type: application/json yourself, as above.
  • Circle's GatewayClient.pay() (the Circle Gateway rail advertised on every 402) already sets Content-Type — so you must not. Adding your own leaves both capitalisations in the options object; fetch then merges them into application/json, application/json, which no JSON parser accepts. Pass body as a plain object and omit headers entirely.

Endpoints & pricing

Endpoint Price / call
POST /x402/get_trade_call$0.02 (HFT 1m–5m: up to $0.05)
POST /x402/scan_funding_arb$0.01
POST /x402/get_market_regime$0.02

Base URL https://api.algovault.com.

New to x402? The open protocol spec and client libraries (x402-fetch, x402-axios) live at x402.org.

HTTP API (search & chat)

Both tools also expose plain HTTP endpoints for non-MCP consumers. Send a JSON body, read a JSON response — no JSON-RPC envelope, no dual Accept header, no SSE to unwrap.

Trade calls are served over POST /mcp and the /x402/* routes. There is no separate /api/trade-call endpoint.

Endpoint Body Cache
POST /api/search{"query": "string", "limit": 10}public, max-age=300
POST /api/chat{"question": "string", "model": "..."}no-store (per-user)

Error contract: INVALID_QUERY / QUERY_TOO_SHORT / QUERY_TOO_LONG / INVALID_QUESTION / QUESTION_TOO_SHORT / QUESTION_TOO_LONG / INVALID_MODEL / CHAT_QUOTA_EXHAUSTED / INTERNAL_ERROR. All return JSON {"code": "...", "message": "..."}.

Full REST API guide →

Webhooks

Stop polling. Register an HTTPS endpoint and AlgoVault POSTs you a signed event the instant a new trade call fires, the regime shifts, or a scheduled scan completes — every delivery is HMAC-signed, idempotent, and retried. Needs a free or paid av_live_ key (get one in your account).

Events

trade_callA new BUY/SELL trade call is recorded for an asset you track.
regime_shiftThe market regime for (coin, timeframe, exchange) changes vs the previous call.
scan_digestA scheduled scan completes — the ranked top-N calls for a timeframe/exchange at your chosen cadence.

Subscribe

curl -X POST https://api.algovault.com/api/webhooks \
  -H "Authorization: Bearer av_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://your-server.com/hook",
    "events": ["trade_call", "regime_shift"],
    "timeframes": ["15m", "1h"],
    "assets": ["BTC", "ETH", "top:25"],
    "min_confidence": 60
  }'

Filters are optional — omit them to receive every call. assets accepts coin symbols or a top:N token (N 1–100); min_confidence is 0–100. For scan_digest add timeframe, exchange, top_n (1–100) and cadence (1h/4h/1d). The response includes a per-subscription secret — store it to verify signatures.

Manage

GET /api/webhooksList your active subscriptions.
DELETE /api/webhooks/:idRemove a subscription.
POST /api/webhooks/:id/testSend a sample delivery to your endpoint to verify wiring.

Delivery & signature

Each delivery is a POST to your URL with these headers:

X-AlgoVault-EventThe event type.
X-AlgoVault-DeliveryUnique delivery id — use it as an idempotency key.
X-AlgoVault-TimestampUnix seconds; reject deliveries outside your tolerance to stop replays.
X-AlgoVault-SignatureHMAC-SHA256(secret, "{timestamp}.{rawBody}") in hex — recompute and constant-time compare before trusting a payload.
{
  "event": "trade_call",
  "delivery_id": "d_8f3c...",
  "data": {
    "type": "trade_call",
    "coin": "BTC",
    "timeframe": "15m",
    "exchange": "BINANCE",
    "call": "BUY",
    "confidence": 72,
    "regime": "TRENDING_UP",
    "verify_url": "https://algovault.com/verify?id=..."
  }
}

Endpoint URLs must be HTTPS (SSRF-guarded; internal addresses are rejected). Full reference — payload schemas, retry/backoff, and self-healing — in docs/WEBHOOKS.md →

Full Webhooks guide →

Telegram Bot

Trade calls delivered straight to Telegram — no client, no key. Start the bot, ask for a composite verdict in chat, or subscribe to push alerts for regime shifts and new calls. Free tier works out of the box.

Start @algovaultofficialbot on Telegram →

Ecosystem

Drop AlgoVault into what you already run — MCP clients, agent frameworks, exchange execution kits, and hosted trading platforms — plus ready-made skills and 20 worked examples.

Integration

Connect AlgoVault to your existing tools. Pick your surface below; each links to a step-by-step guide at /integrations.

Connect Your MCP Client

Your av_live_… API key works across every MCP-compatible client. Pick yours below. Free tier (no key) also works for every coin + every timeframe, capped at 200 calls/month, and at 100 calls per UTC day.

Surface Setup What you get
Claude Desktop Settings → Connectors → Add custom connector, or edit claude_desktop_config.json Native Streamable-HTTP MCP. AlgoVault tools (get_trade_call, scan_funding_arb, get_market_regime) callable in any chat.
Cursor Edit ~/.cursor/mcp.json (global) or .cursor/mcp.json (project) IDE-native MCP. Cursor's coding agent pulls live signals while editing strategy code.
Cline (VSCode) Cline panel → MCP Servers → Remote Servers tab, or edit cline_mcp_settings.json VSCode-side coding agent with AlgoVault tools available.
Claude Code claude mcp add --transport http … --header … — or commit .mcp.json to repo root Per-project MCP. Useful for backtest / strategy-dev repos. Team-shared via .mcp.json.
Smithery npx -y @smithery/cli install crypto-quant-signal-mcp --client <name> Auto-managed connection via Smithery registry. Easiest install across clients.
Plain HTTP / curl curl -X POST https://api.algovault.com/mcp … Raw JSON-RPC. For developers integrating into bots, scripts, or non-MCP services.
Codex Add [mcp_servers.algovault] to ~/.codex/config.toml Coding agent for terminal and IDE. AlgoVault tools available in every Codex session.
Kimi Code Add a url entry to ~/.kimi-code/mcp.json, or run /mcp-config Moonshot’s coding agent. Pulls AlgoVault verdicts while you edit strategy code.
ZCode (GLM) Settings → MCP Servers → New MCP ServerHTTP, then paste the URL Z.ai’s GLM harness. AlgoVault verdicts alongside the GLM model family.
DeepSeek Harness Insert one entry in cordis.patch.yml — the dsh CLI already ships the MCP bridge DeepSeek’s own agent runtime. AlgoVault tools arrive as mcp__algovault__*; the free tier needs no key.
Z.ai API Pass type: "mcp" in the tools array on chat/completions No app to install. Z.ai reaches AlgoVault server-side while it answers.
DeepSeek Point Claude Code at https://api.deepseek.com/anthropic, then add AlgoVault as usual Bring your own model. DeepSeek does the thinking; your existing harness carries the AlgoVault tools.
Claude Desktop — setup walkthrough

Easiest path (UI): Open Claude Desktop → SettingsConnectorsAdd custom connector. Name it AlgoVault. URL: https://api.algovault.com/mcp?src=docs. Add Authorization: Bearer av_live_… as a custom header (paid tier). Save and restart Claude Desktop.

JSON path: Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "algovault": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://api.algovault.com/mcp?src=docs",
               "--header", "Authorization: Bearer ${AV_API_KEY}",
               "--header", "X-AlgoVault-Track-Token:chan-docs"]
    }
  }
}

Set AV_API_KEY in the env block or your shell. Free tier: drop the Authorization header, but keep the X-AlgoVault-Track-Token header.

Verify: ask Claude "Get me a trade call for BTC on the 1h timeframe". Tool indicator appears bottom-right of the input box.

Cursor — setup walkthrough

Edit ~/.cursor/mcp.json (global, all projects) or .cursor/mcp.json in the project root (per-project, commit-friendly):

{
  "mcpServers": {
    "algovault": {
      "url": "https://api.algovault.com/mcp?src=docs",
      "headers": {
        "Authorization": "Bearer ${env:AV_API_KEY}",
        "X-AlgoVault-Track-Token": "chan-docs"
      }
    }
  }
}

Set AV_API_KEY in your shell. Restart Cursor. The Cursor agent now has AlgoVault tools available while editing strategy code.

Cline (VSCode) — setup walkthrough

Open the Cline panel in VSCode → MCP ServersRemote Servers tab → Add server. Or edit cline_mcp_settings.json (path varies by OS; access via Configure MCP Servers):

{
  "mcpServers": {
    "algovault": {
      "type": "streamableHttp",
      "url": "https://api.algovault.com/mcp?src=docs",
      "headers": {
        "Authorization": "Bearer ${env:AV_API_KEY}",
        "X-AlgoVault-Track-Token": "chan-docs"
      },
      "disabled": false,
      "autoApprove": []
    }
  }
}

type: "streamableHttp" is the modern transport (recommended). The legacy "sse" type still works but is being deprecated upstream.

Claude Code — setup walkthrough

One-liner (recommended):

claude mcp add --transport http --scope project algovault https://api.algovault.com/mcp?src=docs \
  --header "Authorization: Bearer $AV_API_KEY" \
  --header "X-AlgoVault-Track-Token:chan-docs"

This writes a .mcp.json in your repo root which you can commit so every teammate gets the same MCP config:

{
  "mcpServers": {
    "algovault": {
      "type": "http",
      "url": "https://api.algovault.com/mcp?src=docs",
      "headers": {
        "Authorization": "Bearer ${AV_API_KEY}",
        "X-AlgoVault-Track-Token": "chan-docs"
      }
    }
  }
}

Verify: in Claude Code, run /mcp to list connected servers; AlgoVault should appear with its tools.

Smithery — setup walkthrough

The Smithery CLI installs and configures the MCP server in your client of choice automatically:

# Pick one — replace <client> with: claude, cursor, cline, claude-code
npx -y @smithery/cli install crypto-quant-signal-mcp --client <client>

The CLI writes the right config file for your client and prompts for any required env vars (like AV_API_KEY for paid-tier access). Easiest path if you're new to MCP. Browse the AlgoVault listing at smithery.ai.

Plain HTTP / curl — advanced testing

For non-MCP integrations (bots, scripts, services), call the JSON-RPC endpoint directly. The transport is stateless, so a single POST of tools/call works: no initialize, no session id. See Testing with raw HTTP / curl for the one-shot call, the two Accept types you must send, and the optional session handshake.

One-shot smoke (free tier, no auth):

curl -sS https://api.algovault.com/health

Returns {"status":"ok","version":"1.10.3","stripe":true}.

Codex — setup walkthrough

Codex reads MCP servers from ~/.codex/config.toml. Add a table for AlgoVault:

[mcp_servers.algovault]
url = "https://api.algovault.com/mcp?src=docs"
bearer_token_env_var = "AV_API_KEY"

[mcp_servers.algovault.http_headers]
"X-AlgoVault-Track-Token" = "chan-docs"

Set AV_API_KEY in your shell for paid tier; drop bearer_token_env_var for free tier. Note that codex mcp add covers local stdio servers only, so remote HTTP servers are configured in the file.

IDE extension: open settings, choose MCP servers, add a server, pick Streamable HTTP and paste the same URL.

Verify: ask Codex "Get me a trade call for BTC on the 1h timeframe".

Kimi Code — setup walkthrough

Edit ~/.kimi-code/mcp.json (user level) or .kimi-code/mcp.json (project level). An entry carrying a url and no transport is an HTTP server:

{
  "mcpServers": {
    "algovault": {
      "url": "https://api.algovault.com/mcp?src=docs",
      "bearerTokenEnvVar": "AV_API_KEY",
      "headers": {
        "X-AlgoVault-Track-Token": "chan-docs"
      }
    }
  }
}

Prefer the guided path? Run /mcp-config in the TUI to add, edit or delete servers without touching the JSON.

Verify: ask Kimi "Get me a trade call for BTC on the 1h timeframe".

ZCode (GLM) — setup walkthrough

Open SettingsMCP Servers, then click New MCP Server at the top right. Choose HTTP as the type and enter:

https://api.algovault.com/mcp?src=docs

For paid tier, expand Headers (optional) and add Authorization: Bearer av_live_…. Free tier needs no header.

ZCode also accepts a pasted config block under Full configuration, in either the {"mcpServers": {…}} or the bare {"server-name": {…}} shape.

Verify: ask ZCode "Get me a trade call for BTC on the 1h timeframe".

DeepSeek Harness — setup walkthrough

One step: patch the profile. There is no plugin to install — the dsh CLI ships @deepseek-ai/dsh-mcp-client in its own dependency closure, and the bridge’s README says one entry per server is the entire setup.

The bundles are a red herring: base, headless and web-app declare zero MCP dependencies, but a bare plugin name resolves through the profile’s Node parent walk to $DSH_HOME/profiles/node_modules, which the CLI closure feeds. Nothing is enabled by default because DSH treats each server as trusted code outside the sandbox — the entry below is the opt-in.

Edit ~/.dsh/profiles/<name>/cordis.patch.yml, or ~/.dsh/cordis.patch.yml for every profile:

- insert:
    - id: mcp-algovault
      name: '@deepseek-ai/dsh-mcp-client'
      config:
        serverName: algovault
        transport: streamable-http
        url: https://api.algovault.com/mcp?src=deepseek_harness
        headers:
          X-AlgoVault-Track-Token: int-deepseek-harness

The - insert: wrapper is required. Without it the entry is an id-targeted override, and it is skipped with a warning. The bridge’s own README shows the unwrapped form because it documents the plugin config shape, not a cordis.patch.yml edit.

Paid tier adds one more line to that headers block: Authorization: Bearer av_live_…. The free tier needs no key.

The tools arrive server-qualified — mcp__algovault__get_trade_call, mcp__algovault__scan_trade_calls, and the rest.

DSH bridges tools only. MCP resources and prompts are deferred upstream, so read the track record at algovault.com/track-record instead.

Verify: ask dsh "Get me a trade call for BTC on the 1h timeframe".

Verified against dsh 0.1.1-rc.2 on 2026-08-29. DSH ships prereleases only; expect compatibility-breaking changes.

Z.ai API — server-side, no client needed

Z.ai dials the MCP server itself, so there is nothing to install locally. Declare AlgoVault as a tool on the request:

{
  "model": "glm-4.6",
  "messages": [{"role": "user", "content": "Trade call for BTC on the 1h timeframe"}],
  "tools": [{
    "type": "mcp",
    "mcp": {
      "server_label": "algovault",
      "server_url": "https://api.algovault.com/mcp?src=docs",
      "headers": {"X-AlgoVault-Track-Token": "chan-docs"}
    }
  }]
}

server_label is required. transport_type is optional and already defaults to streamable-http, so it is omitted above. Add allowed_tools to narrow the tool set.

DeepSeek — bring your own model

DeepSeek’s own harness connects to AlgoVault directly — see the DeepSeek Harness tutorial. This row is the other path: keep the harness you already run and swap the model behind it. The DeepSeek API itself still exposes no MCP parameter, so the harness carries the tools.

export ANTHROPIC_BASE_URL="https://api.deepseek.com/anthropic"
export ANTHROPIC_AUTH_TOKEN="$DEEPSEEK_API_KEY"

claude mcp add --transport http --scope project algovault \
  https://api.algovault.com/mcp?src=docs \
  --header "X-AlgoVault-Track-Token:chan-docs"

Claude Code then runs against DeepSeek while AlgoVault stays connected exactly as it would otherwise. Verdicts are unchanged: they are computed on our side and handed back as JSON.

Harnesses that speak the OpenAI protocol instead use the plain https://api.deepseek.com base, not the /anthropic one shown here.

Config formats verified per client against: MCP quickstart · Cursor MCP docs · Cline remote-server docs · Claude Code MCP docs · @smithery/cli on npm · Codex MCP docs · Kimi Code MCP docs · ZCode MCP docs · Z.ai MCP-call docs · DeepSeek Anthropic API. Config formats can drift — if a snippet here doesn't work, please refer to the upstream doc and report it at GitHub issues.

Connect Your AI Agent

Building on a major agent framework? AlgoVault MCP plugs into 4 of them via the framework's canonical MCP-adapter library. Each pairing ships with a runnable Python demo.

Framework Setup What you get
LangChain pip install langchain-mcp-adapters · MultiServerMCPClient with streamable HTTP AlgoVault tools as LangChain BaseTool objects in any create_react_agent or LangGraph workflow.
LlamaIndex pip install llama-index-tools-mcp · BasicMCPClient + McpToolSpec AlgoVault tools as LlamaIndex FunctionTool objects in any FunctionAgent or ReActAgent.
Microsoft Agent Framework pip install agent-framework · MCPStreamableHTTPTool(url=…) AlgoVault tools called directly or handed to any ChatAgent in the MAF ecosystem.
CrewAI pip install crewai 'crewai-tools[mcp]' · MCPServerAdapter AlgoVault tools as CrewAI BaseTool objects in any Crew or single Agent workflow.
LangChain — setup walkthrough

Install the canonical bridge maintained by LangChain:

pip install langchain-mcp-adapters

Connect once, then call tools from any LangChain agent:

from langchain_mcp_adapters.client import MultiServerMCPClient

client = MultiServerMCPClient({"algovault": {
    "url": "https://api.algovault.com/mcp",
    "transport": "streamable_http"}})
tools = await client.get_tools()
verdict = await tools[0].ainvoke({"coin": "BTC", "timeframe": "4h"})

Full tutorial + runnable demo →

LlamaIndex — setup walkthrough

Install the canonical bridge maintained by LlamaIndex:

pip install llama-index-tools-mcp

Call directly via BasicMCPClient, or adapt its tools to FunctionTool via McpToolSpec:

from llama_index.tools.mcp import BasicMCPClient

client = BasicMCPClient("https://api.algovault.com/mcp")
result = await client.call_tool(
    "get_trade_call", {"coin": "BTC", "timeframe": "4h"})

Full tutorial + runnable demo →

Microsoft Agent Framework — setup walkthrough

Install the framework (MCP support is built in):

pip install agent-framework

Open an MCP session, call tools directly, or hand the tool to a ChatAgent:

from agent_framework import MCPStreamableHTTPTool

tool = MCPStreamableHTTPTool(
    name="algovault",
    url="https://api.algovault.com/mcp",
    load_prompts=False)
async with tool:
    contents = await tool.call_tool(
        "get_trade_call", coin="BTC", timeframe="4h")

Note: load_prompts=False matters because AlgoVault MCP is tools-only.

Full tutorial + runnable demo →

CrewAI — setup walkthrough

Install CrewAI with the MCP extras (the canonical adapter):

pip install crewai 'crewai-tools[mcp]'

Open the adapter as a context manager; all 4 AlgoVault tools land as CrewAI BaseTool objects:

from crewai_tools import MCPServerAdapter

server_params = {"url": "https://api.algovault.com/mcp",
                 "transport": "streamable-http"}
with MCPServerAdapter(server_params) as tools:
    raw = tools[0].run(coin="BTC", timeframe="4h", exchange="BINANCE")

Full tutorial + runnable demo →

Tutorials verified 2026-05-18 against: langchain-mcp-adapters · llama-index-tools-mcp · agent-framework · crewAI-tools MCP. Snippets can drift — if one doesn't work, please refer to the upstream doc and report it at GitHub issues.

Try a framework integration: algovault.com/integrations/langchain

Connect Your Exchange Kit

Already running an exchange's Agent Trade Kit? Pair AlgoVault's composite verdict with the kit's execution layer. AlgoVault returns analytics; the exchange kit places orders; your agent decides.

Exchange Setup What you get
Binance npx skills add https://github.com/binance/binance-skills-hub · Spot Testnet execution Composite verdict + official Binance Skills Hub, on the direct API path. You issue keys and sign requests; the demo runs against Spot Testnet.
Binance Agent OS claude mcp add binance-mcp-server --transport http https://agent.binance.com/mcp/agentic · OAuth, no API keys Your agent asks AlgoVault what to do and Binance to do it. No API keys on the machine, no HMAC signing, and no withdrawal scope exists.
OKX npx -y @okx_ai/okx-trade-mcp · 83 execution tools (spot, swap, futures, options, grid) Composite verdict + OKX's full execution surface. Agent reads signals, places orders across spot or derivatives via one MCP server.
Bybit npx -y bybit-official-trading-server · Linear Perpetual + conditional orders Composite verdict + Bybit's official MCP server. Agent fetches AlgoVault signals, places perpetual + conditional orders via Bybit testnet.
Bitget npx -y bitget-mcp-server · GetClaw agent-native execution Composite verdict + Bitget's MCP server inside a dedicated AI account. Agent-native execution; isolate from your main funds.
Gemini node packages/mcp-server/dist/index.js · Self-hosted Node MCP (Apache-2.0), sandbox-gated Composite verdict + Gemini's Agentic Trading MCP. Agent reads signals, places sandbox orders via gemini_new_order; subaccounts isolate each agent.
Kraken kraken mcp -s all · Single Rust binary (MIT), 151 commands, keyless paper engine Composite verdict + the Kraken CLI's stdio MCP. Agent reads signals, simulates orders on the keyless paper engine before going live.
Alpaca uvx alpaca-mcp-server · Crypto toolsets, paper venue default-on Composite verdict + Alpaca's crypto MCP Server. Agent reads signals, places notional BTC/USD paper orders via place_crypto_order.
Hyperliquid pip install hyperliquid-python-sdk · official Python SDK (no official npm SDK) Composite verdict + Hyperliquid's testnet perps API. Keyless demo builds the exact EIP-712 order action and prints it — nothing is signed or sent.
Aster pip install git+https://github.com/asterdex/aster-connector-python.git · git-install only Composite verdict + Aster's futures testnet on BNB Chain Testnet. V3 EIP-712 auth; V1 API-key creation closed 2026-03-25.
BingX No SDK to install · plain fetch + node:crypto against the VST demo host Composite verdict + BingX's VST demo-trading environment. Dry-run order validation plus an API-callable demo-funds faucet.
KuCoin npm install kucoin-universal-sdk · the only non-archived official SDK Composite verdict + KuCoin Futures order VALIDATION. KuCoin retired its sandbox in 2023, so this validates payloads rather than simulating fills.
Gate.io pip install gate-api · official SDK 7.2.100 (PyPI + npm) Composite verdict + Gate.io's futures testnet. Keyless demo converts coins to CONTRACTS from the live quanto_multiplier and prints the order — nothing is signed or sent.
Binance — setup walkthrough

On Binance Agent OS? That path needs no API keys — OAuth, an isolated Agentic sub-account, and no withdrawal scope. Start there instead →

For the direct API path, install AlgoVault’s plugin and the Binance Skills Hub:

claude plugin install AlgoVaultLabs/algovault-skills
npx skills add https://github.com/binance/binance-skills-hub

Your agent now has AlgoVault's analytics tools and Binance's execution tools side-by-side. Set BINANCE_TESTNET=true for zero real-money risk during development.

Keep this path for custom order types, non-MCP runtimes, or a deterministic backtest harness.

Full tutorial + runnable demo →

Binance Agent OS — setup walkthrough

Add both servers to one MCP client — AlgoVault decides, Binance executes:

claude mcp add binance-mcp-server --transport http https://agent.binance.com/mcp/agentic
claude mcp add --transport http --scope project algovault \
  https://api.algovault.com/mcp?src=binance_agent_os

Authenticate Binance through /mcp and grant the least scope you need: market data, account, trade or transfer. Trading runs inside an isolated Agentic sub-account you fund yourself.

Name the tool you want. An exchange-shaped prompt routes to Binance and never reaches the verdict, so ask for get_trade_call explicitly.

Full tutorial →

OKX — setup walkthrough

Install OKX's official trade MCP server in your client config:

{
  "mcpServers": {
    "algovault": {"url": "https://api.algovault.com/mcp"},
    "okx-trade": {"command": "npx", "args": ["-y", "@okx_ai/okx-trade-mcp"]}
  }
}

Set OKX_DEMO=true (or pass --demo) for the demo trading environment. Real keys go in env vars; never commit them.

Full tutorial + runnable demo →

Bybit — setup walkthrough

Wire Bybit's official server next to AlgoVault:

{
  "mcpServers": {
    "algovault": {"url": "https://api.algovault.com/mcp"},
    "bybit-trade": {"command": "npx", "args": ["-y", "bybit-official-trading-server"]}
  }
}

Set BYBIT_TESTNET=true + API keys in env. Conditional orders (stop-loss, take-profit, OCO) are first-class — your agent can attach risk policy at order time.

Full tutorial + runnable demo →

Bitget — setup walkthrough

Bitget exposes a dedicated AI sub-account ("GetClaw") for agent execution:

{
  "mcpServers": {
    "algovault": {"url": "https://api.algovault.com/mcp"},
    "bitget-trade": {"command": "npx", "args": ["-y", "bitget-mcp-server"]}
  }
}

Set BITGET_DEMO=true in the wrapper (the MCP server has no built-in demo flag — the env var gates order placement at the client level). Fund the GetClaw account separately from your main account.

Full tutorial + runnable demo →

Gemini — setup walkthrough

Build Gemini's self-hosted MCP from source, alongside AlgoVault:

git clone https://github.com/gemini/developer-platform
cd developer-platform/packages/mcp-server
npm install
npm run build

Set GEMINI_API_BASE_URL=https://api.sandbox.gemini.com/v1 for zero real-money risk during development. Public market-data tools need no keys.

Full tutorial + runnable demo →

Kraken — setup walkthrough

Install the Kraken CLI (one binary), then serve it over MCP next to AlgoVault:

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/krakenfx/kraken-cli/releases/latest/download/kraken-cli-installer.sh | sh
kraken mcp -s all

The kraken paper engine needs no keys and no account. Run --validate before any live order; arm cancel-after as a dead-man's switch.

Full tutorial + runnable demo →

Alpaca — setup walkthrough

Run Alpaca's crypto MCP Server zero-install, scoped to crypto toolsets, alongside AlgoVault:

{
  "mcpServers": {
    "algovault": {"url": "https://api.algovault.com/mcp"},
    "alpaca": {"command": "uvx", "args": ["alpaca-mcp-server"]}
  }
}

Set ALPACA_TOOLSETS=trading,crypto-data to scope crypto-only; ALPACA_PAPER_TRADE defaults to true for zero real-money risk.

Full tutorial + runnable demo →

Hyperliquid — setup walkthrough

Hyperliquid signs orders with an EIP-712 wallet signature; the official Python SDK implements both signing schemes:

pip install hyperliquid-python-sdk

from hyperliquid.exchange import Exchange
from hyperliquid.utils import constants
exchange = Exchange(wallet, constants.TESTNET_API_URL, account_address=MASTER)

Note the testnet faucet requires a prior mainnet deposit from the same address, and US/Ontario are Restricted Persons under Hyperliquid's Terms §1.6.

Full tutorial + runnable demo →

Aster — setup walkthrough

Aster publishes nothing to npm or PyPI — the official connector installs from git:

pip install git+https://github.com/asterdex/aster-connector-python.git

# testnet base: https://fapi.asterdex-testnet.com
# EIP-712 chainId: 714 (testnet) / 1666 (mainnet)

The V3 nonce is in microseconds and must sit within ±10s of server time.

Full tutorial + runnable demo →

BingX — setup walkthrough

BingX publishes no official client SDK, so the demo is dependency-free:

# demo host (paper trading, no real funds)
https://open-api-vst.bingx.com

POST /openApi/swap/v2/trade/order/test   # validates, places nothing
POST /openApi/swap/v2/trade/getVst       # top up demo balance

Symbols on the VST host are normal (BTC-USDT), not -VST-suffixed.

Full tutorial + runnable demo →

KuCoin — setup walkthrough

KuCoin has no sandbox — it was delisted on 2023-07-10 and every sandbox host is NXDOMAIN. The demo uses the order-validation endpoint instead:

npm install kucoin-universal-sdk

POST https://api-futures.kucoin.com/api/v1/orders/test
# validates signature + params. Does NOT fill, no simulated balances.

Every legacy per-language KuCoin SDK is archived — and several archived repos carry more stars than the live one.

Full tutorial + runnable demo →

Gate.io — setup walkthrough

Gate moved its futures testnet — and gate-api 7.2.100 still ships the old host as its default, so set the base URL explicitly:

import gate_api
cfg = gate_api.Configuration(
    host="https://api-testnet.gateapi.io/api/v4",   # NOT the SDK default
)

size is a CONTRACT count, not a coin quantity — 0.001 BTC is 10 contracts at quanto_multiplier 0.0001. Direction is the sign of size.

Full tutorial + runnable demo →

Tutorials verified 2026-08-25 against: Binance Skills Hub · @okx_ai/okx-trade-mcp · bybit-official-trading-server · bitget-mcp-server. Snippets can drift — if one doesn't work, please refer to the upstream doc and report it at GitHub issues.

Try an exchange integration: algovault.com/integrations/binance

Connect Your Trading Platform

Feed AlgoVault calls into hosted crypto-bot and copy-trade platforms — e.g. Cryptohopper's signaler marketplace, 3Commas, and other signal-bot platforms — via the Webhooks channel or the platform's signal import. Your bot trades on AlgoVault's directional calls without you writing glue code.

See trading-platform integrations →

Skills & Usage Examples

20 real-world workflows for AI agents and human developers. From simple one-liners to multi-agent orchestration.

01

Quick BTC Check

Beginner

The simplest possible call. Ask your agent for a single trade call.

"Get me a trade call for BTC on the 1h timeframe"
Tools: get_trade_call
claude plugin install AlgoVaultLabs/algovault-skills View Skill →
02

Portfolio Scanner

Intermediate

Loop through the top 10 assets, get trade calls for each, and filter by high confidence.

"Get trade calls for BTC, ETH, SOL, DOGE, XRP, ADA, AVAX, LINK, DOT, and MATIC on the 15m timeframe. Only show me the ones with confidence above 70%."
Tools: get_trade_call × 10  |  Pattern: batch calling, confidence filtering
claude plugin install AlgoVaultLabs/algovault-skills View Skill →
03

Regime-Aware Trading

Intermediate

Check the market regime first. Only request trade calls when the regime is favorable for directional trading.

"First check the market regime for ETH on the 4h timeframe. If it's TRENDING_UP or TRENDING_DOWN, get me a trade call on the 15m timeframe. If it's RANGING or VOLATILE, skip it."
Tools: get_market_regimeget_trade_call  |  Pattern: conditional chaining
claude plugin install AlgoVaultLabs/algovault-skills View Skill →
04

Funding Arb Monitor

Intermediate

Scan for cross-venue funding rate arbitrage opportunities. Alert when the annualized spread exceeds your threshold.

"Scan for funding arbitrage opportunities with a minimum spread of 10 basis points. Show me the top 5 ranked by annualized return."
Tools: scan_funding_arb  |  Pattern: threshold-based alerting
claude plugin install AlgoVaultLabs/algovault-skills View Skill →
05

Full 3-Tool Pipeline

Advanced

The complete AlgoVault workflow: regime detection, trade call, then arb check for the same asset. Maximum context for one decision.

"For SOL: first get the market regime on 4h, then get a trade call on 15m, then check if there are any funding arb opportunities. Give me a combined recommendation based on all three."
Tools: get_market_regimeget_trade_callscan_funding_arb  |  Pattern: full pipeline composition
claude plugin install AlgoVaultLabs/algovault-skills View Skill →
06

Multi-Timeframe Confirmation

Advanced

Get trade calls on multiple timeframes for the same asset. Only act when all timeframes agree on direction.

"Get trade calls for ETH on the 5m, 15m, and 1h timeframes. Only tell me to trade if all three agree on the same direction (all BUY or all SELL)."
Tools: get_trade_call × 3  |  Pattern: multi-timeframe consensus
claude plugin install AlgoVaultLabs/algovault-skills View Skill →
07

TradFi Rotation

Advanced

Compare regime and direction across TradFi perpetuals. Rotate into the asset with the strongest trend.

"Get the market regime and trade call for TSLA, GOLD, and SP500 on the 4h timeframe. Which one has the strongest trend with the highest confidence trade call? Recommend the best one to trade."
Tools: get_market_regime × 3 + get_trade_call × 3  |  Pattern: cross-asset comparison
claude plugin install AlgoVaultLabs/algovault-skills View Skill →
08

Risk-Gated Entry

Advanced

Only enter trades when both confidence and regime alignment pass your risk filters. Skip everything else.

"Check BTC regime on 4h, then get a trade call on 15m. Only recommend entry if confidence is 75% or higher AND the regime is TRENDING (not VOLATILE or RANGING). Otherwise say 'no trade'."
Tools: get_market_regimeget_trade_call  |  Pattern: dual risk filter
claude plugin install AlgoVaultLabs/algovault-skills View Skill →
09

Funding Sentiment Dashboard

Advanced

Get market regime for major assets and use the cross-venue funding sentiment to gauge overall market bias.

"Get the market regime for BTC, ETH, and SOL on the 4h timeframe. Summarize the cross-venue funding sentiment for each. Is the overall market leaning bullish or bearish based on where funding is concentrated?"
Tools: get_market_regime × 3  |  Pattern: macro sentiment aggregation
claude plugin install AlgoVaultLabs/algovault-skills View Skill →
10

Contrarian Meme Scanner

Advanced

Scan lower-tier assets for contrarian setups: high-confidence SELL calls during an uptrend may signal crowded longs about to unwind.

"Get the market regime for DOGE, SHIB, PEPE, WIF, and BONK on 4h. For any that are TRENDING_UP, get a trade call on 15m. Flag any that return SELL with confidence above 70% — those might be crowded longs ready to unwind."
Tools: get_market_regime × 5 + get_trade_call (conditional)  |  Pattern: contrarian divergence detection
claude plugin install AlgoVaultLabs/algovault-skills View Skill →
11

Divergence Detector

Advanced

Compare trade call direction vs market regime. When they disagree, flag it as a high-risk divergence.

"For BTC and ETH: get the market regime on 4h and a trade call on 15m. If the trade call says BUY but the regime is TRENDING_DOWN (or vice versa), flag it as a divergence with a risk warning."
Tools: get_market_regime + get_trade_call per asset  |  Pattern: signal-regime divergence
claude plugin install AlgoVaultLabs/algovault-skills View Skill →
12

Hourly Digest Bot

Advanced

Build an automated digest: scan all tier-1 and tier-2 assets every hour, summarize trade calls and market regime into a brief report.

"Scan BTC, ETH, SOL, AVAX, LINK, DOGE, XRP, ADA for trade calls on 1h. Also get the market regime for BTC and ETH on 4h. Summarize as a brief market digest: how many BUYs vs SELLs, overall regime, and top 3 highest-confidence calls."
Tools: get_trade_call × 8 + get_market_regime × 2  |  Pattern: periodic digest, notification-ready
claude plugin install AlgoVaultLabs/algovault-skills View Skill →
13

Hedging Advisor

Advanced

You hold a long ETH position. Check regime and trade call — if both turn bearish, look for a funding arb to hedge via the cheaper venue.

"I'm currently long ETH. Get the market regime on 4h and a trade call on 1h. If both are bearish, scan funding arb for ETH and tell me which venue has the cheapest short to hedge my position."
Tools: get_market_regimeget_trade_callscan_funding_arb  |  Pattern: defensive hedging
claude plugin install AlgoVaultLabs/algovault-skills View Skill →
14

Volatility Breakout Watch

Advanced

Use regime detection as a screener: find assets in VOLATILE regime with high confidence — these are breakout candidates. Then get trade call for direction.

"Check the market regime for BTC, ETH, SOL, AVAX, LINK, and DOGE on 4h. For any in VOLATILE regime with confidence above 70%, get a trade call on 5m. Those are potential breakout trades."
Tools: get_market_regime × 6 + get_trade_call (conditional)  |  Pattern: regime as screener
claude plugin install AlgoVaultLabs/algovault-skills View Skill →
15

Cross-Asset Correlation

Advanced

Get trade calls for BTC, ETH, SOL simultaneously. If all say SELL, it's a macro risk-off signal, not just one asset.

"Get trade calls for BTC, ETH, and SOL on the 1h timeframe. If all three say the same direction, flag it as a market-wide move. If they disagree, note which ones are diverging."
Tools: get_trade_call × 3  |  Pattern: correlation / macro signal
claude plugin install AlgoVaultLabs/algovault-skills View Skill →
16

Funding Cash-and-Carry

Advanced

Find a funding arb spread, then get a trade call on the long side. If the trade call agrees with the long direction, you have double conviction.

"Scan funding arb with minimum 10 bps spread. For the top opportunity, get a trade call for the asset on 15m. If the trade call agrees with the long side of the arb, flag it as a high-conviction cash-and-carry setup."
Tools: scan_funding_arbget_trade_call  |  Pattern: arb + directional alignment
claude plugin install AlgoVaultLabs/algovault-skills View Skill →
17

Weekend vs Weekday Patterns

Research

Schedule trade calls every 4 hours, log results over time. Compare weekend vs weekday regime patterns to find exploitable edges.

"Every 4 hours, get a trade call for BTC on 4h and log the regime, direction, and confidence. After a week, compare weekend vs weekday patterns. Are weekends more RANGING? Do SELL calls cluster on Sundays?"
Tools: get_trade_call + get_market_regime (scheduled)  |  Pattern: data collection, research
claude plugin install AlgoVaultLabs/algovault-skills View Skill →
18

Agent Portfolio Rebalance

Advanced

Daily regime check for each asset in your portfolio. Shift allocation toward TRENDING assets, reduce exposure to VOLATILE/RANGING positions.

"My portfolio holds BTC, ETH, SOL, AVAX, and LINK. Get the market regime for each on the 1d timeframe. Recommend which ones to overweight (TRENDING) and which to underweight (VOLATILE or RANGING)."
Tools: get_market_regime × 5  |  Pattern: regime-based portfolio allocation
claude plugin install AlgoVaultLabs/algovault-skills View Skill →
19

Smart DCA Bot

Advanced

Dollar-cost averaging, enhanced: skip buys when the trade call says SELL with high confidence. Only DCA when direction is neutral or favorable.

"I DCA into BTC every day. Before today's buy, get a trade call on the 4h timeframe. If it says SELL with confidence above 70%, skip today's buy and wait. Otherwise proceed normally."
Tools: get_trade_call  |  Pattern: strategy enhancement, DCA optimization
claude plugin install AlgoVaultLabs/algovault-skills View Skill →
20

Multi-Agent War Room

Expert

Three specialized agents, one coordinator. Agent A handles regime detection, Agent B runs trade calls, Agent C monitors funding arbs. The coordinator synthesizes all three into a single decision.

"Set up three agents: Agent A gets market regime for BTC, ETH, SOL on 4h. Agent B gets trade calls for the same assets on 15m. Agent C scans funding arb for spreads above 8 bps. Combine all results into a single dashboard showing: regime, direction, confidence, and best arb for each asset."
Tools: All core tools in parallel  |  Pattern: multi-agent orchestration
claude plugin install AlgoVaultLabs/algovault-skills View Skill →

Track Record

Live Dashboard

Every recorded BUY/SELL call is scored by PFE (Peak Favorable Excursion) win rate and broken down by asset, timeframe, and regime — updated live from the same on-chain-anchored record. No cherry-picking: the full call set is public.

Open the live track record →

Verify

Every call is hashed and anchored on Base L2 via daily Merkle batches. This makes the track record tamper-proof.

How It Works

1

Every BUY/SELL call is hashed using keccak256(coin, signal, confidence, timeframe, timestamp, price) at the moment it's generated

2

Hashes accumulate throughout the day

3

At 00:05 UTC, all new hashes are assembled into a Merkle tree

4

The Merkle root is published to the MerkleRootRegistry smart contract on Base L2

5

Anyone can verify that a specific call existed in a batch by checking its Merkle proof against the on-chain root

Verification Endpoints

GET /api/verify-signal?signalId=<ID>

Returns: call details, hash, Merkle proof, batch info, Basescan tx link, and a boolean verified field.

GET /api/merkle-batches

Returns: list of all published batches with root hashes, call counts, tx hashes, and Basescan links.

Visual Verification

Visit algovault.com/verify to look up any call and see its on-chain proof in a human-readable format.

Contract Details

Address0x6485396ac981fe0a58540dfbf3e730f6f7bcbf81
ChainBase (chain ID 8453)
ExplorerView on Basescan →

What This Proves

  • Calls were recorded BEFORE outcomes were known
  • No call can be retroactively edited or deleted
  • The complete set of calls in each batch is locked — cherry-picking is detectable via sequential call IDs

Pricing

Two payment rails: Stripe subscriptions for human developers, x402 micropayments (USDC on Base) for autonomous agents.

Subscription Tiers

Free Starter Pro Enterprise
Price$0$9.99/mo
or $39.90/6mo
$49/mo
or $129/6mo
Contact us
Monthly calls20010,000100,000Custom
Daily calls1001,00010,000Custom
AssetsAll crypto + TradFiAll crypto + TradFiAll crypto + TradFiAll crypto + TradFi
TimeframesAll 11All 11All 11All 11
Funding arb resultsTop 5UnlimitedUnlimitedUnlimited

Pro 6-month is currently $129 — limited-time pricing; subscribe now and renewals keep your price.

Quota is counted per call, regardless of verdict. The two meters are independent — a call is refused when either the monthly or the daily allowance is exhausted, and the daily one resets at 00:00 UTC.

What happens after you subscribe

  1. Click "Subscribe to [Plan]" — on /signup. We redirect you to Stripe Checkout (we never see your card).
  2. Pay on Stripe — Stripe sends you a receipt email. Behind the scenes, our webhook generates a unique API key for your subscription tier.
  3. Land on the Welcome page — Your API key is shown in green — copy it. We also email it to your billing address (check spam, sender: [email protected]).
  4. Make your first call curl -H "Authorization: Bearer av_live_…" https://api.algovault.com/mcp … or paste the key into your Claude Desktop / Cursor / Claude Code MCP config. Need to find your key later? Visit /account.

FAQ

How often should I call get_trade_call?
Match your call frequency to the timeframe. A 5m trade call is stale after ~5 minutes, while a 4h call is relevant for several hours. For most agents, calling once per candle close on your chosen timeframe is optimal.
Can I combine multiple tools in one workflow?
Yes — and it's encouraged. The recommended flow is: regime → trade call → arb. Check the regime first to decide if conditions favor directional trading, then get a trade call for direction, then check if a funding arb exists on the same asset. See the usage examples for 20 real-world workflows.
What's the latency per call?
Typically 1–3 seconds. Each call fetches live data from the chosen exchange — Binance for get_trade_call and Hyperliquid for get_market_regime when you do not name one, or any other venue in that tool’s exchange parameter. Funding arb scans 7 venues: Hyperliquid, Binance, Bybit, Gate, KuCoin, Aster, and OKX. Response time depends on the exchange's API latency and the number of assets scanned.
How is trade call performance tracked?
Every trade call with confidence ≥ 60% is automatically recorded. After enough candles have passed, the system measures PFE (Peak Favorable Excursion) win rate — did price move in the called direction at any point during the evaluation window? Per-timeframe win rates use each venue’s candles for that timeframe — or, where a venue doesn’t list it natively, the nearest available candle under twice its length (e.g. a venue with no native 3-minute candle is measured on 5-minute candles); any timeframe a venue could serve only from a candle two-or-more times its length is excluded rather than reported, so a per-timeframe figure is never inflated by a materially coarser candle than it names. Results are available via the performance://signal-performance MCP resource and on the live dashboard.
What assets are supported?
All perpetuals listed across 15 exchanges. The exchange parameter on each tool lists every venue it accepts. This includes standard crypto perps (BTC, ETH, SOL, etc.) and liquidity-filtered meme coins on every venue. TradFi perpetuals (TSLA, XAU, NVDA, SPX, MSTR, COIN, AAPL, and more) are available on multiple venues — asset availability varies per venue; pass exchange explicitly to target a specific venue. Low-liquidity meme coins are automatically gated to prevent unreliable trade calls.
Do you provide exit calls?
No. AlgoVault provides directional entry calls only — BUY, SELL, or HOLD. Your agent or strategy determines exit timing. This is by design: exit logic depends on your risk tolerance, position size, and portfolio context, which only you know. PFE Win Rate measures whether the called direction was correct, independent of exit.
What is x402 and how do agent payments work?
x402 is an open protocol for machine-to-machine micropayments. Your agent pays per API call with USDC on Base — no signup, no API key, no subscription. The agent signs an ERC-3009 authorization, the server verifies it on-chain, and the call proceeds. It's the native payment rail for autonomous agents that don't have credit cards.
How do I verify a call's integrity?
Every call is hashed and anchored on Base L2 via daily Merkle batches. Visit algovault.com/verify to look up any call by ID. You'll see its hash, Merkle proof, batch details, and a direct link to the transaction on Basescan. You can also call the API directly: GET /api/verify-signal?signalId=<ID>.
Can I run AlgoVault locally?
Yes. Install via npx -y crypto-quant-signal-mcp and it runs locally in stdio mode for Claude Desktop. For remote access, the hosted version at api.algovault.com/mcp supports Streamable HTTP transport.

Built by AlgoVault Labs