kaleido-mcp, a single unified server, plus three per-wallet servers that remain standalone.
Why One Server
Several focused, single-domain MCP servers existed early on: a KaleidoSwap DEX server, an MPP/L402 payment server, per-wallet servers for RLN and Spark. The DEX and payment servers have since been consolidated intokaleido-mcp, which re-exposes the same tool contracts under one connection:
One connection
An agent host configures a single MCP server instead of wiring up four or five.
Same tool names
Tool contracts (
kaleidoswap_*, wdk_*, spark_*, mpp_*, l402_*) are unchanged from the original focused servers, nothing to relearn.One place to maintain
Bug fixes and new tools land in one repo instead of being duplicated across several.
Actively maintained
The standalone
kaleidoswap-mcp and l402-gateway-mcp repos are archived. kaleido-mcp is where ongoing work happens.Available Servers
kaleido-mcp implements its tools directly on kaleido-sdk and the WDK toolkit rather than proxying the focused servers: it is a composition of the same tool contracts, not a wrapper around those processes. Legacy rln_* and generic get_* market aliases remain in place for migration.Retired Servers
These repos are archived. Their own READMEs point tokaleido-mcp and say they receive no further updates:
If you have an integration still pointing at
kaleidoswap-mcp or l402-gateway-mcp directly, point it at kaleido-mcp instead. The tool names and arguments did not change.
Installation & Configuration
kaleido-mcp is published to npm, so the fastest path needs no local build:
Legacy Aliases
Some tools are still reachable under older names (rln_* for wdk_*, generic get_* for the l402_get_* market tools) for backward compatibility with earlier integrations. New integrations should use the canonical wdk_* / l402_* names.
Tool Surface by Domain
All tools below are served bykaleido-mcp over a single connection. The 🔒 icon marks spend-moving tools in these docs; kaleido-mcp does not encode a confirmation flag, so whether a call is confirmed before executing is the MCP host’s behavior. The exception is the WDK built-in sendTransaction and transfer, which request an MCP-elicitation confirmation themselves before broadcasting.
Spark L2 wallet (spark_*)
Spark L2 wallet (spark_*)
WDK built-in tools (via
@tetherto/wdk-mcp-toolkit, scoped to the spark chain): getAddress, getBalance, getMaxSpendableBtc, sendTransaction, transfer, getTokenBalance, quoteSendTransaction, quoteTransfer, getFeeRates, sign, verify.Custom Spark tools, on top of the built-ins:Configured with
WDK_SPARK_SEED on the standalone wdk-wallet-spark-mcp server, plus optional SPARK_NETWORK, SPARK_SCAN_API_KEY, and SPARK_USDT_TOKEN.RLN, RGB Lightning Node (wdk_, alias rln_)
RLN, RGB Lightning Node (wdk_, alias rln_)
Requires a running RGB Lightning Node reachable at
RLN_NODE_URL, default http://localhost:3001.KaleidoSwap DEX (kaleidoswap_*)
KaleidoSwap DEX (kaleidoswap_*)
Configured with
KALEIDOSWAP_API_URL. See the Swap Protocol and RGB LSPS1 APIs references for the underlying endpoints.MPP / L402 payments (mpp_, l402_)
MPP / L402 payments (mpp_, l402_)
Market data (l402_get_, alias get_)
Market data (l402_get_, alias get_)
WDK built-in pricing tools (Bitfinex):
getCurrentPrice, getHistoricalPrice.Uses free public APIs (CoinGecko, alternative.me) with no configuration required. The free CoinGecko tier is rate limited, so avoid calling price tools more than once every 30 seconds.
Node lifecycle (kaleido_node_*)
Node lifecycle (kaleido_node_*)
Shells out to a local
kaleido binary, so an agent can bring a node up and unlock it rather than requiring one to already be running. See Node Environments for the CLI-native equivalent of these operations.Client Configuration
Add a server to an MCP host such as Claude Desktop.npx works for the published gateway; the standalone wallet servers run from a local build.
First Run
Go read-only first, then quoting, then execution. Every step after the first one moves real value.1
Add the gateway to your host
Drop the
kaleido-mcp block into your MCP host’s config, pointing KALEIDOSWAP_API_URL at a test environment and SPARK_NETWORK at REGTEST. The full JSON is in Client Configuration above.2
Restart the host
MCP hosts read their config at startup. A running client will not pick up a new server until you restart it.
3
Call a read-only tool
Start with something that cannot move funds. Ask for market data, which needs no seed and no node:That exercises
l402_get_price and l402_get_sentiment. If it answers, the connection works.4
Check the wallet is wired
Now confirm the wallet tools resolve:This calls
spark_get_balance and spark_get_address. An error here is a seed or network problem, not a connection problem.5
Quote before you trade
Ask for a price without placing anything:
kaleidoswap_get_quote returns an rfq_id, raw amounts, the fee, and an expiry. Read the raw amounts carefully: they are in the asset’s smallest unit, not display units.6
Execute only once the quote looks right
An atomic swap needs the DEX tools and the wallet tools together, and the node must hold the asset in a channel. The cross-server sequence below shows each call in order.
Atomic Swap Across Servers
An atomic swap needs the DEX tools and the wallet tools together.kaleido-mcp speaks to the maker via its kaleidoswap_* tools and drives the taker node via its wdk_* tools. Nothing is custodied at any step, and the HTLC settles on Lightning.
kaleido-mcp connection, since both prefixes are available at once.