Directory

Lido (Free)

DeFiFREERoutes in chatEthereum

Lido liquid staking on Ethereum, free and non-gated: protocol stats with live staking APR, full per-address positions (stETH + wstETH balances, staked value in ETH and USD), EARNINGS history from Lido’s reward backend (lifetime rewards, average APR, daily rebases), withdrawal-queue tracking with wait estimates, and construction-only build_* tools that return UNSIGNED transactions the user signs — stake, wrap/unwrap, request withdrawal, claim. Never holds keys, never signs, never submits. Rate-limited. By Yeetful.

Routability

can the router discover, pick, and call it?

Not yet graded. Diagnostics check param schemas, description quality, live health, and run the actual routing planner against this service’s own tools — construction only, nothing is paid or executed.

Tools

10
  • POST/mcp/positionstart here
    via Yeetful (free)lido-mcp.yeetful.com

    Full Lido staking position for an address: ETH / stETH / wstETH balances (wstETH also valued in stETH), total staked in ETH and USD, the APR it's earning, and withdrawal requests in flight — the 'show my Lido position / how much do I have staked?' tool. For what it has EARNED, use `earnings`.

    1 parameter
    • userstringbodyrequired

      EVM address (0x…) of the account — pass "$USER_ADDRESS" for the connected user.

  • POST/mcp/earningsstart here
    via Yeetful (free)lido-mcp.yeetful.com

    Lido staking EARNINGS for an address from the protocol's reward history: lifetime rewards in stETH and USD, the average APR actually earned, and recent daily rebase events — the 'what have I earned staking? / show my Lido rewards' tool. wstETH holders earn via the rising rate instead; `position` shows that value.

    2 parameters
    • userstringbodyrequired

      EVM address (0x…) of the account — pass "$USER_ADDRESS" for the connected user.

    • limitnumberbody

      How many recent reward events to include (default 14, max 60).

  • POST/mcp/stats
    via Yeetful (free)lido-mcp.yeetful.com

    Lido protocol snapshot: staking APR (7-day average + latest daily), total ETH staked, live stETH↔wstETH rate, stake-rate limit, stETH USD price, withdrawal-queue depth — 'what's the Lido APR?'.

  • POST/mcp/withdrawals
    via Yeetful (free)lido-mcp.yeetful.com

    Withdrawal-queue view for an address: every request with status (pending / claimable / claimed), claimable ETH total, a wait estimate for pending requests — 'where is my unstake? can I claim yet?'. When something is claimable, follow with build_claim.

    1 parameter
    • userstringbodyrequired

      EVM address (0x…) of the account — pass "$USER_ADDRESS" for the connected user.

  • POST/mcp/convert
    via Yeetful (free)lido-mcp.yeetful.com

    Convert an amount between ETH, stETH, and wstETH at the live on-chain rate — "how much wstETH is 5 stETH?". ETH↔stETH is 1:1 at the protocol.

    3 parameters
    • amountstringbodyrequired

      Amount to convert as a decimal string in HUMAN units, e.g. "0.5" (not wei).

    • fromstringbodyrequired

      One of "ETH" | "stETH" | "wstETH".

    • tostringbodyrequired

      One of "ETH" | "stETH" | "wstETH".

  • POST/mcp/build_stake
    via Yeetful (free)lido-mcp.yeetful.com

    Prepare a Lido STAKE — returns UNSIGNED {action:'send_transaction'} steps for the USER to sign: ETH into rebasing stETH 1:1 (default) or straight into wstETH. Balance + the protocol's stake-rate limit are checked live first. Exit is via the withdrawal queue or a DEX swap — say so when asked.

    3 parameters
    • userstringbodyrequired

      EVM address (0x…) of the wallet that stakes, receives the tokens, and signs — pass "$USER_ADDRESS" for the connected user.

    • amountstringbodyrequired

      ETH amount to stake as a decimal string in HUMAN units, e.g. "0.5" (not wei).

    • receivestringbody

      Which token to receive: "stETH" (default) or "wstETH".

  • POST/mcp/build_wrap
    via Yeetful (free)lido-mcp.yeetful.com

    Prepare UNSIGNED steps wrapping stETH into non-rebasing wstETH (approve step included only when the live allowance is short). max:true wraps the full balance.

    3 parameters
    • userstringbodyrequired

      EVM address (0x…) of the wallet that wraps and signs — pass "$USER_ADDRESS" for the connected user.

    • amountstringbody

      stETH amount to wrap — omit with max:true as a decimal string in HUMAN units, e.g. "0.5" (not wei).

    • maxbooleanbody

      Wrap the entire stETH balance (overrides amount).

  • POST/mcp/build_unwrap
    via Yeetful (free)lido-mcp.yeetful.com

    Prepare an UNSIGNED transaction unwrapping wstETH back into rebasing stETH (no approval needed). max:true unwraps the full balance.

    3 parameters
    • userstringbodyrequired

      EVM address (0x…) of the wallet that unwraps and signs — pass "$USER_ADDRESS" for the connected user.

    • amountstringbody

      wstETH amount to unwrap — omit with max:true as a decimal string in HUMAN units, e.g. "0.5" (not wei).

    • maxbooleanbody

      Unwrap the entire wstETH balance (overrides amount).

  • POST/mcp/build_request_withdrawal
    via Yeetful (free)lido-mcp.yeetful.com

    Prepare UNSIGNED steps starting a Lido exit: stETH (or wstETH with token:"wstETH") into the withdrawal queue; the wallet gets claimable request NFT(s) and the ETH unlocks after finalization (hours–days, `withdrawals` shows the estimate). Amounts over the 1000-stETH per-request cap are split automatically. NOT instant — a DEX swap is the instant alternative at market price.

    4 parameters
    • userstringbodyrequired

      EVM address (0x…) of the wallet exiting (receives the NFTs, later the ETH) — pass "$USER_ADDRESS" for the connected user.

    • amountstringbody

      Amount to withdraw — omit with max:true as a decimal string in HUMAN units, e.g. "0.5" (not wei).

    • maxbooleanbody

      Withdraw the entire balance of the chosen token (overrides amount).

    • tokenstringbody

      Which token funds the withdrawal: "stETH" (default) or "wstETH".

  • POST/mcp/build_claim
    via Yeetful (free)lido-mcp.yeetful.com

    Prepare the UNSIGNED claim transaction for EVERY finalized, unclaimed withdrawal request an address holds — the ETH lands in their wallet. Reads the queue live; refuses honestly when nothing is claimable yet.

    1 parameter
    • userstringbodyrequired

      EVM address (0x…) of the wallet that owns the withdrawal request NFT(s) — pass "$USER_ADDRESS" for the connected user.