Lido (Free)
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 herevia 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 herevia 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/statsvia 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/withdrawalsvia 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/convertvia 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_stakevia 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_wrapvia 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_unwrapvia 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_withdrawalvia 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_claimvia 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.