MCP Connection Issues
The server does not appear in my MCP client
The server does not appear in my MCP client
- Build first. The focused servers run from
dist/, which does not exist untilnpm run buildhas succeeded. - Use an absolute path.
argsmust point at the full path todist/index.js, not a relative one. The host does not run from your project directory. - Restart the host. MCP hosts read their config at startup, so a running client will not pick up a new server.
- Check the JSON. A trailing comma or an unquoted key silently invalidates the whole config in most hosts.
Server starts then exits immediately
Server starts then exits immediately
kaleido-mcp, without WDK_SEED, or without the optional @tetherto/wdk-wallet-spark package, it still boots, logs a warning or install hint, and disables the Spark tools. On KALEIDO_NETWORK=mainnet it does refuse to start without KALEIDOSWAP_API_URL, since there is no public mainnet API.Solutions:- Inspect the startup error and the environment passed by the MCP client; a GUI client may not inherit your shell variables.
- On mainnet, set
KALEIDOSWAP_API_URL. A seed is not required for a market-only signet startup. - Run the server by hand with the same env vars to see the error directly:
Some tool prefixes are missing
Some tool prefixes are missing
spark_* tools work but wdk_* or kaleidoswap_* do not, or vice versa.Cause: You are connected to a focused server rather than the gateway. Each focused server exposes only its own domain.Solutions:- Use
kaleido-mcpto get every prefix over one connection. - Or add each focused server to the host config separately.
Node and Wallet Errors
Connection refused on wdk_* tools
Connection refused on wdk_* tools
RLN_NODE_URL, which defaults to http://localhost:3001.Solutions:- Start a node. The quickest route is the CLI:
- Verify it answers:
- If the node runs elsewhere, set
RLN_NODE_URLto that address in the host config. - See Node Environments for the Docker-backed setup.
The node is running but locked
The node is running but locked
- Unlock through the CLI, or use the
kaleido_node_unlocktool exposed bykaleido-mcp. - Expect a wait: unlocking syncs the node before it becomes fully accessible.
KaleidoCLI not found
KaleidoCLI not found
skill mode, or the kaleido_node_* tools, fail to execute.Cause: The binary is not on PATH where the process can see it.Solutions:- Confirm it resolves:
kaleido --version - Set
KALEIDO_BINto the absolute path of the binary in the server or agent config. - Install it per CLI Installation if it is missing.
Balances read zero when funds exist
Balances read zero when funds exist
- Check the network.
KALEIDO_NETWORK(orSPARK_NETWORK) and the node’s own network must match where the funds are. A signet wallet shows nothing on mainnet, and the reverse. - Confirm the seed. A different mnemonic derives a different wallet, not an empty one.
- Wait for sync. A node that has just unlocked may not have caught up to the chain tip.
- Distinguish on-chain from Lightning.
wdk_get_balancesseparates vanilla and colored UTXOs from the Lightning balance, and an asset in a channel is not an on-chain balance.
Swap Failures
Quote expired before execution
Quote expired before execution
rfq_id is rejected when you try to use it.Cause: Quotes carry a short expiry, and an LLM turn plus a confirmation prompt can outlast it.Solutions:- Re-quote immediately before initiating, rather than reusing an earlier
rfq_id. - Reduce the number of steps between quote and execution in your prompt or skill.
Atomic swap fails or stalls
Atomic swap fails or stalls
kaleidoswap_atomic_execute errors, or the status never leaves pending.Cause: An atomic swap needs both the DEX tools and the wallet tools, in order, plus channel liquidity on your side.Solutions:- Confirm the sequence ran fully: init on the DEX,
wdk_atomic_takerto whitelist the HTLC on your node, then execute. See the cross-server sequence. - Check the asset is actually in a channel. On-chain balance alone cannot settle a Lightning swap.
- Poll
kaleidoswap_atomic_statusbypayment_hashfor the real state. - If either side stalls, the timelocks expire and both sides recover their own funds. That is the designed outcome, not a lost swap.
Amounts are wrong by orders of magnitude
Amounts are wrong by orders of magnitude
- Read
kaleidoswap_get_assetsfor each asset’s precision before constructing an amount. - Have the model state the raw amount and the display amount in its confirmation, so a mismatch is visible before you approve.
KaleidoAgent Issues
The agent decides but never trades
The agent decides but never trades
portfolio.dry_run is true. This is the default and is intentional.Solution: Set it to false only once the dry-run decisions have looked correct across several runs.Trading stopped on its own
Trading stopped on its own
dry_run is still on, so decisions are simulated rather than executed. Otherwise the model declined to trade, which can happen when it applies stop_loss_btc_sats or min_btc_reserve_sats from its instructions, or when a tool call failed.Solutions:- Read
GET /statusfor balances and recent runs. - Compare them against the limits in
agent.config.json. - Fund the wallet or adjust the threshold deliberately, rather than removing the guard.
Rebalance never triggers
Rebalance never triggers
rebalance_threshold_pct, which defaults to 5 percent.Solution: Lower the threshold, or trigger a run by hand with POST /run and {"task_id":"rebalance"}.Missing API key or wrong provider
Missing API key or wrong provider
- Confirm
ANTHROPIC_API_KEYorOPENAI_API_KEYis set in.env. - Confirm
AGENT_PROVIDERmatches the key you actually provided.
Rate Limits and Data
Price tools return errors under load
Price tools return errors under load
l402_get_price or l402_get_market_data fail intermittently.Cause: The free CoinGecko tier behind the public endpoints is rate limited.Solutions:- Avoid calling price tools more than once every 30 seconds.
- Use
l402_get_market_datato batch several assets into one call instead of looping.
Get Help
Check the FAQ for questions rather than errors, and Additional Resources for upstream documentation and links. For anything else, report a problem through your preferred channel from the options below, including:- Which surface and version (MCP server name, KaleidoAgent commit, or Desktop App version)
- The network you are on (signet or mainnet)
- The tool name that failed and the error text
- Host and runtime versions (MCP client, Node.js)
- Your config with the seed and any keys removed