xyz. spiralstake/ leverage
by spiralstake.xyz · remote · no sign-in to list tools · v0.1.1 · published by xyz.spiralstake
Leveraged-yield router on Morpho. List strategies, simulate, and build UNSIGNED txs.
10 tools: 4 change things and 6 only read.
Scanned Oct 21, 2026
- Deletes or cancels0Claude Code: deny
- Can't be undone0Claude Code: ask
- Changes things4Claude Code: ask: see these tools
- Only reads6Claude Code: allow: see these tools
No check matched anything in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http leverage https://api.spiralstake.xyz/mcpTools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
10 tools
Changes things 4Claude Code: ask
build_equity_deposit_txBuild the UNSIGNED call batch to deposit into a stock + yield equity vault, for the given wallet to sign.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it Build the UNSIGNED call batch to deposit into a stock + yield equity vault, for the given wallet to sign. Non-custodial. Returns `calls[]` (approve USDG → router, authorize the router on Morpho, the one-call equityEntry, revoke) to submit as ONE atomic batch (EIP-5792 wallet_sendCalls / Safe), plus the same preview as simulate_equity_deposit. meta.signingUrl is a one-click link for a human to sign in the app. Swap calldata is time-sensitive (meta.expiresAt).
Annotations the server declares
- title: Build Equity Vault Deposit
- readOnlyHint: false
- destructiveHint: false
build_equity_exit_txBuild the UNSIGNED call batch to fully unwind an OPEN equity vault (from get_positions.equityPositions): close each of its yield loops, then one self-funded router call repays the …No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it Build the UNSIGNED call batch to fully unwind an OPEN equity vault (from get_positions.equityPositions): close each of its yield loops, then one self-funded router call repays the stock debt, withdraws the stock, swaps it to USDG and returns the proceeds. Submit as ONE atomic batch. Non-custodial; the vault's yield loop cannot be closed alone through build_manage_tx. Only the vault's own loop(s) are closed: those get_positions attributes unambiguously, or exactly the ones you pass in yieldPositionIds. Always read meta.closedYieldPositionIds.
Annotations the server declares
- title: Build Equity Vault Exit
- readOnlyHint: false
- destructiveHint: false
build_leverage_txBuild the UNSIGNED transaction to open a leveraged position, for the given wallet to sign.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it Build the UNSIGNED transaction to open a leveraged position, for the given wallet to sign. Non-custodial: this server never signs, sends, or holds keys. The canonical output is the executable { approvals[], tx{to,data,value} } — sign and broadcast it directly (approvals first), plus the same position preview as simulate_leverage. meta.signingUrl is an optional one-click link for a human to sign in their own wallet. The embedded swap calldata is time-sensitive (see meta.expiresAt) — rebuild if stale.
Annotations the server declares
- title: Build Leverage Transaction
- readOnlyHint: false
- destructiveHint: false
build_manage_txBuild the UNSIGNED transaction to adjust or close an OPEN position, for the given wallet to sign.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it Build the UNSIGNED transaction to adjust or close an OPEN position, for the given wallet to sign. Non-custodial (never signs/holds keys). Canonical output is the executable { approvals[], tx{to,data,value} } (sign/broadcast directly); meta.signingUrl is an optional link for a human to sign in their own wallet. Actions: 'close' (unwind fully), 'increase_leverage' (borrow to a higher LTV), 'add_collateral' (top up — pay in collateral or any token), 'remove_collateral' (withdraw), 'repay' (pay down debt; set full=true to clear it), 'borrow' (draw more loan token). Get the position `id` from get_positions. Swap calldata (close/increase/zap paths) is time-sensitive — see meta.expiresAt.
Annotations the server declares
- title: Build Manage Transaction
- readOnlyHint: false
- destructiveHint: false
Only reads 6Claude Code: allow
get_positionsRead a wallet's open/closed Spiral leverage positions from chain state (read-only).No findings
Why it is in this group
- The name "get_positions" says "get": a word for reading.
Description, as the server wrote it Read a wallet's open/closed Spiral leverage positions from chain state (read-only). For each: collateral/loan, leveraged collateral, net equity, debt, current LTV vs liquidation LTV (with headroom), current leverage, net USD value, and current leveraged APY. No cost-basis / realized P&L (those need off-chain history). Newest first. `equityPositions` lists the wallet's open equity vaults (stock leg + the yield loop(s) it funds); those loops are excluded from `positions`.
Annotations the server declares
- title: Get Positions
- readOnlyHint: true
get_pricesCurrent USD prices of every loan and collateral token the chain's strategies use (token address -> USD), including equity-vault stocks.No findings
Why it is in this group
- The name "get_prices" says "get": a word for reading.
Description, as the server wrote it Current USD prices of every loan and collateral token the chain's strategies use (token address -> USD), including equity-vault stocks. Loan tokens are priced from CoinGecko; collateral from the market oracle × its loan token's price — the same figures the strategies' priceUsd fields carry.
Annotations the server declares
- title: Get Prices
- readOnlyHint: true
get_strategyGet one eligible strategy's full raw facts by its Morpho market id.No findings
Why it is in this group
- The name "get_strategy" says "get": a word for reading.
Description, as the server wrote it Get one eligible strategy's full raw facts by its Morpho market id.
Annotations the server declares
- title: Get Strategy
- readOnlyHint: true
list_strategiesList eligible Spiral strategies on a chain with raw risk facts (collateral/borrow APY, leverage ladder, oracle type, exit liquidity, LTVs, curator).No findings
Why it is in this group
- The name "list_strategies" says "list": a word for reading.
Description, as the server wrote it List eligible Spiral strategies on a chain with raw risk facts (collateral/borrow APY, leverage ladder, oracle type, exit liquidity, LTVs, curator). Mainnet (1): correlated yield loops on stables, ETH, BTC and Pendle PTs. Robinhood Chain (4663): stable loops on USDG, directional perps (spiralHints.profile 'leveraged_perp' — APYs are financing carry only) and stock + yield equity vaults (profile 'equity_yield_vault', ids start with 'equity-'). Optionally filter by collateral category.
Annotations the server declares
- title: List Strategies
- readOnlyHint: true
simulate_equity_depositPreview depositing USDG into a stock + yield equity vault — deterministic, read-only, no wallet.No findings
Why it is in this group
- The description's first verb is "preview": a word for reading.
Description, as the server wrote it Preview depositing USDG into a stock + yield equity vault — deterministic, read-only, no wallet. You end up 1x long the stock (held as your own Morpho collateral), with `stockLtvPct` of its value borrowed as USDG and flash-looped into the vault's yield strategy. Returns the stock received, the borrow, the stock liquidation price and headroom, the yield leg's size/leverage/APY, the net APY at that LTV, fees and price impact per leg.
Annotations the server declares
- title: Simulate Equity Vault Deposit
- readOnlyHint: true
simulate_leveragePreview opening a leveraged position — deterministic, read-only, no wallet needed.No findings
Why it is in this group
- The description's first verb is "preview": a word for reading.
Description, as the server wrote it Preview opening a leveraged position — deterministic, read-only, no wallet needed. Returns the resulting leverage, effective LTV, leveraged collateral, expected leveraged APY, price impact, the auto-selected execution path, flash-loan size, and (if the flash loan exceeds direct market liquidity) the public-allocator reallocation fee. Numbers move with market prices.
Annotations the server declares
- title: Simulate Leverage
- readOnlyHint: true
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 0.1.1. Values in angle brackets are yours to fill in.
claude mcp add --transport http leverage https://api.spiralstake.xyz/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__leverage__list_strategies",
"mcp__leverage__get_strategy",
"mcp__leverage__get_prices",
"mcp__leverage__simulate_leverage",
"mcp__leverage__get_positions",
"mcp__leverage__simulate_equity_deposit"
],
"ask": [
"mcp__leverage__build_leverage_tx",
"mcp__leverage__build_manage_tx",
"mcp__leverage__build_equity_deposit_tx",
"mcp__leverage__build_equity_exit_tx"
],
"deny": []
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as leverage. Review it before you use it.