MCP.Market

Leverage MCP server

online · 100% uptime
by spiralstake.xyz·xyz.spiralstake/leverage·v0.1.1

Leveraged-yield router on Morpho. List strategies, simulate, and build UNSIGNED txs.

A89/100grade A
What users say
No reviews yet
Be the first
Safety scan
A89/100

full report

Adoption
Growing

0 stars

Reviews

Write one

Nobody has reviewed Leverage yet.

If you have run it, two minutes of your experience saves the next person an afternoon.

Leverage tools (10)

write = sends, deletes, buys or posts
  • build_equity_deposit_txFree

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

  • build_equity_exit_txFree

    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.

  • build_leverage_txFree

    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.

  • build_manage_txFree

    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.

  • get_positionsFree

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

  • get_pricesFree

    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.

  • get_strategyFree

    Get one eligible strategy's full raw facts by its Morpho market id.

  • list_strategiesFree

    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.

  • simulate_equity_depositFree

    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.

  • simulate_leverageFree

    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.

Public scan report

scanner v0.1.9 · 2026-09-25 · same rubric, same numbers if you re-run it

no findings
  • –Code scanremote-only server, no package to scann/a
  • Live reliabilityremote reachable in 383ms20/20
  • Tool poisoning10 tool descriptions checked15/15
  • Auth qualityopen endpoint, read-only tools10/15
  • Maintenancelast push 0 days ago15/15
  • Maintainer identitynamespace and repository owner differ; GitHub account older than a year; website matches verified namespace7/10
Overall 89/100. Components that don't apply are left out of the denominator. Any critical finding is an F.RubricAppeal a findingJSON

How Leverage compares

Against every graded MCP server, from our own scans and uptime checks. Updated after each scan run.

Safety score
89/100
higher than 80% of 48,255 servers
Tools
10
the typical server has 7
Tools that change things
0%
typical: 0%. Fewer write tools means less an agent can break
Uptime
100%
of our recent checks; the typical remote server answers 100%
Response time
140 ms
faster than 75% of 30,031 servers

What its tools let an agent do: 10 read

Install Leverage in Claude Code, Cursor or VS Code

claude mcp add --transport http leverage https://api.spiralstake.xyz/mcp
Add to Cursor

What the publisher says

From the Leverage repository's README, as published. We do not edit it. Read it on GitHub

Spiral Stake — mcp read-data backbone (Step 1a)

The composition authority + read API for Spiral Stake strategy data. It ports the app's client-side data composition server-side and serves it back as JSON, so three consumers run off one core:

  1. The app — the complete read surface it currently fetches, for a like-for-like Step-2 swap.
  2. Agents — the frozen /strategies contract.
  3. Partners (later) — a clean, versioned, self-documenting REST surface (OpenAPI).

Read-only. No contract writes, no tx building, no signing, no private keys. It composes numbers and serves JSON. The MCP tool layer, execution/build, and partner auth are later steps** — the seams are pre-cut (core + http) but not built.

Architecture

src/
  core/        pure composition — no I/O, unit-testable
    leverage.ts        ← VERBATIM copy of v2-client/src/utils/leverage.ts (byte-diff gated)
    apy.ts             collateral-APY resolution (Pendle/DeFiLlama/Royco/StableWatch/on-chain)
    leverageApy.ts     30/60/90d leveraged-APY windows + lumpy-token smoothing
    compose.ts         Market assembly from warm raw (port of FlashLeverage.createInstance)
    strategy.ts        Market → frozen /strategies contract (ladder, freshness, spiralHints)
    exitLiquidity.ts   exit-liquidity tier (the single verdict) + thresholds
  sources/     one adapter per upstream (fetch + parse). native fetch + viem; no axios/wagmi
  cache/       two-layer cache — RAW store (last-good) + warming policy (CONTRACT cadences)
  warmer/      background scheduler (stale-while-revalidate); reads NEVER fetch
  http/        thin hono REST layer (the only thing that knows about requests)
  data/        static market config (copied from the app) + readMarkets port
  config/      env (validated) + structured logger with correlation ids

Data flow: warmer fetches upstreams on the CONTRACT cadence → writes raw to the cache (last-good on failure) → core composes strategies from warm raw only → http serves them. A stale/failed upstream serves last-good with a visible stale age per field-group — never dropped, never coerced to 0.

Run

cp .env.example .env      # fill in RPC + API keys (secrets via env only)
npm install
npm run dev               # tsx watch; serves on :$PORT (default 8787)
npm test                  # golden + parity gates
npm run typecheck         # tsc --noEmit
npm run openapi           # (re)emit openapi.json
node --import tsx scripts/smoke.ts   # live: prime + print one composed strategy

/health (liveness + cache diagnostics) and /ready (503 until the warmer primes the required data) are available immediately on boot.

Endpoints — app-read inventory → endpoint mapping

Every data read the app performs in v2-client/src/api-services/ maps to an endpoint here (positions stay on the dashboard backend and are not** reimplemented):

Shortened. The full README is on GitHub.

Nothing above is checked by us. What we check is on the safety report.

Leverage: common questions

Is Leverage MCP server safe?
Yes, by our scan: it is graded A (89/100). Read the Leverage safety report
How do I install Leverage?
It runs remotely at api.spiralstake.xyz. Add it to Claude Code, Cursor, VS Code or Claude Desktop with the snippets above, or call it through the mcp.market gateway without installing anything.
Does Leverage need an API key?
Not as far as the registry entry and our scan can tell: no credentials are declared or required.
Is Leverage maintained?
The last commit was 40 days ago (2026-09-25). The latest release is v0.1.1.
Is Leverage up?
100% of our last 28 checks got an answer. We check remote servers about four times a day.
How does Leverage compare with other MCP servers?
safety score 89/100 (higher than 80% of 48,255 servers); tools 10 (the typical server has 7); tools that change things 0% (typical: 0%. Fewer write tools means less an agent can break). Full comparison.