· Channels — how you connect

MCP Server

AlgoVault's Model Context Protocol server exposes every trade-call, market-regime, and cross-venue scan tool to AI agents over one endpoint. Point Claude, Cursor, Cline, or any MCP client at https://api.algovault.com/mcp — the free tier needs no API key. Streamable HTTP or stdio transport, with typed tool schemas out of the box.

When to use MCP Server vs the other channels

Reach for MCP when your agent framework speaks the Model Context Protocol — Claude Desktop, Cursor, Cline, or an MCP-aware LangChain / LlamaIndex stack. It gives typed tool discovery and the full tool set. If you just want raw HTTP without an MCP client, use the REST API; if you want AlgoVault to push to you, use Webhooks.

Connect

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 Add @deepseek-ai/dsh-mcp-client, then insert one entry in cordis.patch.yml 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

Two steps: add the plugin, then patch the profile. pnpm must be on PATH — the CLI forwards to it.

dsh plugin --profile <name> add @deepseek-ai/[email protected]

The version is pinned on purpose. npm’s latest tag still points at 0.0.1-rc.1, which is BSD-3-Clause; MIT starts at 0.1.0-rc.2.

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

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 @deepseek-ai/dsh-mcp-client 0.1.1-rc.2 on 2026-08-28. 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.

Full reference in the docs →

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 →

Full reference in the docs →

Tool coverage

Every publicly-listed tool reachable through MCP Server (equities are held from public listings):

Frequently asked questions

Do I need an API key to use the MCP server?

No — the free tier is keyless. Point your MCP client at https://api.algovault.com/mcp and start calling tools. An API key raises your limits but is not required to connect.

What transports does the MCP server support?

Streamable HTTP is the default remote transport; stdio is available for local process integration (set TRANSPORT=stdio). Both expose the same tool set.

Which MCP clients work with AlgoVault?

Any MCP-compliant client — Claude Desktop, Cursor, Cline, and MCP-aware agent frameworks. See the Integrations page for per-client setup recipes.

How is MCP different from the REST API?

MCP gives typed tool discovery and schemas over a protocol; the REST API is plain HTTP request/response. Use MCP when your framework speaks it, and the REST API when it does not.

Explore the tools →