Morpho (Free)
Morpho (Blue) lending on Base and Ethereum, computed from on-chain state, free and non-gated: curated markets with live supply/borrow APYs, per-market deep-dives, full account positions (supplied, collateral, debt, health factor), health-factor previews, and construction-only build_* tools that return UNSIGNED approve→act transactions the user signs — lend, post/withdraw collateral, borrow, repay, withdraw. 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/marketsstart herevia Yeetful (free)morpho-mcp.yeetful.com
Morpho (Blue) lending markets on Base or Ethereum: loan/collateral pair, supply & borrow APY, utilization, LLTV, and market size in USD. Curated (listed) markets by default; includeUnlisted adds permissionless ones. Answers 'what can I lend/borrow on Morpho?' — use the returned 32-byte marketId (never a symbol) with the build_* tools.
2 parameters
- chainIdnumberbody
Chain id: 8453 = Base (default), 1 = Ethereum mainnet. Market ids are chain-specific — use the chainId the market came from.
- includeUnlistedbooleanbody
Also show permissionless (unvetted) markets. Default false.
- POST/mcp/positionstart herevia Yeetful (free)morpho-mcp.yeetful.com
A wallet's Morpho position on Base or Ethereum, computed from on-chain state: supplied assets (earning), posted collateral, borrowed debt with accrued interest, borrowing power, and health factor per market. This is the 'show my Morpho position / can I get liquidated?' tool. Scans the 100 largest indexed markets by default; pass marketIds to narrow or to reach a niche market.
3 parameters
- userstringbodyrequired
EVM address (0x…) of the account — pass "$USER_ADDRESS" for the connected user.
- chainIdnumberbody
Chain id: 8453 = Base (default), 1 = Ethereum mainnet. Market ids are chain-specific — use the chainId the market came from.
- marketIdsstringbody
Specific 32-byte market ids to check (array, max 20). Omit to scan all known markets.
- POST/mcp/market_infovia Yeetful (free)morpho-mcp.yeetful.com
One Morpho market in depth, straight from the chain: loan + collateral assets (addresses, decimals), LLTV, live supply/borrow APY, utilization, available liquidity, fee, and the oracle's collateral price. Use before lending or borrowing to sanity-check the market.
2 parameters
- chainIdnumberbody
Chain id: 8453 = Base (default), 1 = Ethereum mainnet. Market ids are chain-specific — use the chainId the market came from.
- marketIdstringbodyrequired
The 32-byte Morpho market id (0x…, 64 hex chars) from `markets` — NEVER a token symbol or address.
- POST/mcp/previewvia Yeetful (free)morpho-mcp.yeetful.com
Simulate a lend/supply_collateral/borrow/repay/withdraw/withdraw_collateral BEFORE building it: health factor now vs after, borrowing power after — computed locally from live on-chain state and the market's oracle. Nothing is built or signed. Use this before build_borrow / a large build_withdraw_collateral so the user sees the health-factor impact first.
5 parameters
- actionstringbodyrequired
One of "lend" | "supply_collateral" | "borrow" | "repay" | "withdraw" | "withdraw_collateral".
- userstringbodyrequired
EVM address (0x…) of the wallet the action would run as — pass "$USER_ADDRESS" for the connected user.
- chainIdnumberbody
Chain id: 8453 = Base (default), 1 = Ethereum mainnet. Market ids are chain-specific — use the chainId the market came from.
- marketIdstringbodyrequired
The 32-byte Morpho market id (0x…, 64 hex chars) from `markets` — NEVER a token symbol or address.
- amountstringbodyrequired
Amount to simulate ("max" for repay/withdraw/withdraw_collateral only) as a decimal string in HUMAN units, or "max" for the full balance/debt.
- POST/mcp/build_lendvia Yeetful (free)morpho-mcp.yeetful.com
Prepare transactions to lend an asset into a Morpho market and start earning the supply APY — returns UNSIGNED {action:'send_transaction'} steps (exact-amount approve first when allowance is short) for the USER to sign. Get the 32-byte marketId from `markets` first — the param validates a MARKET ID, not a symbol.
4 parameters
- userstringbodyrequired
EVM address (0x…) of the wallet that lends and signs — pass "$USER_ADDRESS" for the connected user.
- chainIdnumberbody
Chain id: 8453 = Base (default), 1 = Ethereum mainnet. Market ids are chain-specific — use the chainId the market came from.
- marketIdstringbodyrequired
The 32-byte Morpho market id (0x…, 64 hex chars) from `markets` — NEVER a token symbol or address.
- amountstringbodyrequired
LOAN-asset amount to supply as a decimal string in HUMAN units, e.g. "100" USDC or "0.5" WETH (not wei/atoms).
- POST/mcp/build_supply_collateralvia Yeetful (free)morpho-mcp.yeetful.com
Prepare transactions to post collateral into a Morpho market (collateral doesn't earn; it unlocks borrowing the loan asset). Unsigned steps for the user.
4 parameters
- userstringbodyrequired
EVM address (0x…) of the wallet that posts and signs — pass "$USER_ADDRESS" for the connected user.
- chainIdnumberbody
Chain id: 8453 = Base (default), 1 = Ethereum mainnet. Market ids are chain-specific — use the chainId the market came from.
- marketIdstringbodyrequired
The 32-byte Morpho market id (0x…, 64 hex chars) from `markets` — NEVER a token symbol or address.
- amountstringbodyrequired
COLLATERAL-asset amount to post as a decimal string in HUMAN units, e.g. "100" USDC or "0.5" WETH (not wei/atoms).
- POST/mcp/build_borrowvia Yeetful (free)morpho-mcp.yeetful.com
Prepare a borrow against posted Morpho collateral. Fails closed: refuses when the amount exceeds borrowing power or market liquidity, warns when the resulting health factor is thin. Unsigned steps.
4 parameters
- userstringbodyrequired
EVM address (0x…) of the wallet that borrows and signs — pass "$USER_ADDRESS" for the connected user.
- chainIdnumberbody
Chain id: 8453 = Base (default), 1 = Ethereum mainnet. Market ids are chain-specific — use the chainId the market came from.
- marketIdstringbodyrequired
The 32-byte Morpho market id (0x…, 64 hex chars) from `markets` — NEVER a token symbol or address.
- amountstringbodyrequired
LOAN-asset amount to borrow as a decimal string in HUMAN units, e.g. "100" USDC or "0.5" WETH (not wei/atoms).
- POST/mcp/build_repayvia Yeetful (free)morpho-mcp.yeetful.com
Prepare transactions to repay Morpho debt. Pass "max" to clear the debt exactly (repaid by shares, immune to interest drift — the approve carries a ~0.05% buffer). Unsigned steps.
4 parameters
- userstringbodyrequired
EVM address (0x…) of the wallet that repays and signs — pass "$USER_ADDRESS" for the connected user.
- chainIdnumberbody
Chain id: 8453 = Base (default), 1 = Ethereum mainnet. Market ids are chain-specific — use the chainId the market came from.
- marketIdstringbodyrequired
The 32-byte Morpho market id (0x…, 64 hex chars) from `markets` — NEVER a token symbol or address.
- amountstringbodyrequired
Amount to repay ("max" clears the debt) as a decimal string in HUMAN units, or "max" for the full balance/debt.
- POST/mcp/build_withdrawvia Yeetful (free)morpho-mcp.yeetful.com
Prepare a withdrawal of assets supplied to a Morpho market ("max" empties the position including accrued interest). Refuses when market utilization leaves too little un-borrowed liquidity. Unsigned steps.
4 parameters
- userstringbodyrequired
EVM address (0x…) of the wallet that withdraws and signs — pass "$USER_ADDRESS" for the connected user.
- chainIdnumberbody
Chain id: 8453 = Base (default), 1 = Ethereum mainnet. Market ids are chain-specific — use the chainId the market came from.
- marketIdstringbodyrequired
The 32-byte Morpho market id (0x…, 64 hex chars) from `markets` — NEVER a token symbol or address.
- amountstringbodyrequired
Amount to withdraw ("max" empties the position) as a decimal string in HUMAN units, or "max" for the full balance/debt.
- POST/mcp/build_withdraw_collateralvia Yeetful (free)morpho-mcp.yeetful.com
Prepare a collateral withdrawal from a Morpho market. Fails closed: refuses any withdrawal that would leave outstanding debt under-collateralized or the health factor razor-thin. Unsigned steps.
4 parameters
- userstringbodyrequired
EVM address (0x…) of the wallet that withdraws and signs — pass "$USER_ADDRESS" for the connected user.
- chainIdnumberbody
Chain id: 8453 = Base (default), 1 = Ethereum mainnet. Market ids are chain-specific — use the chainId the market came from.
- marketIdstringbodyrequired
The 32-byte Morpho market id (0x…, 64 hex chars) from `markets` — NEVER a token symbol or address.
- amountstringbodyrequired
Collateral amount to withdraw ("max" for all of it) as a decimal string in HUMAN units, or "max" for the full balance/debt.