Aave
Aave over MCP — v4 markets with live supply/borrow APYs, per-address portfolio views (positions, earnings, health factor, borrowing power), and construction-only supply/withdraw/borrow/repay transactions via the official AaveKit API. Free, no API key. This service never signs.
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
13- POST/mcp/portfoliostart herevia Custom (MCP)aave-mcp.yeetful.com
Full Aave v4 account view for an address: per-market positions (net balance, net APY, HEALTH FACTOR, max/remaining borrowing power), every supply with EARNED INTEREST, and every borrow with accrued debt. This is the 'show my Aave position / what am I earning?' tool. Empty positions → suggest `balances` (what they could supply) + `reserves` (where).
2 parameters
- userstringbodyrequired
EVM address (0x…) of the Aave account. For the CONNECTED USER's own portfolio/balances/history, pass their wallet address ($USER_ADDRESS).
- chainIdnumberbody
Chain id (default 1 = Ethereum mainnet, the only live Aave v4 chain today).
- POST/mcp/balancesstart herevia Custom (MCP)aave-mcp.yeetful.com
Aave-listed tokens a wallet HOLDS (not yet deposited), each with its USD value and the best available supply APY — 'what could I put to work on Aave?'. Follow up with build_supply to prepare the deposit.
2 parameters
- userstringbodyrequired
EVM address (0x…) of the Aave account. For the CONNECTED USER's own portfolio/balances/history, pass their wallet address ($USER_ADDRESS).
- chainIdnumberbody
Chain id (default 1 = Ethereum mainnet, the only live Aave v4 chain today).
- POST/mcp/marketsvia Custom (MCP)aave-mcp.yeetful.com
Aave v4 market map: liquidity hubs (Core/Prime/…, with TVL + utilization) and the spokes (user-facing markets) connected to them. Answers 'what markets does Aave have?' — then pass a spoke address to `reserves` for its pools.
1 parameter
- chainIdnumberbody
Chain id (default 1 = Ethereum mainnet, the only live Aave v4 chain today).
- POST/mcp/reservesvia Custom (MCP)aave-mcp.yeetful.com
Aave v4 pool list with LIVE rates: supply APY, borrow APY, size (USD), caps, collateral factor, and supply/borrow/collateral flags per asset. Default = top pools chain-wide by size; filter with `spokeAddress` (one market) or `symbols` (['USDC','WETH']). Answers 'where can I earn on USDC?' / 'list Aave pools'. Use the returned asset.address + spokeAddress with the build_* tools.
4 parameters
- spokeAddressstringbody
The spoke (market) contract address — from `markets` or `reserves`.
- symbolsarraybody
Asset symbol filter, e.g. ["USDC","WETH"] (or "USDC,WETH").
- chainIdnumberbody
Chain id (default 1 = Ethereum mainnet, the only live Aave v4 chain today).
- firstnumberbody
How many to return (default 30, max 100).
- POST/mcp/activitiesvia Custom (MCP)aave-mcp.yeetful.com
Recent Aave v4 history for an address — supplies, borrows, repays, withdrawals with amounts, market, timestamp, and tx hash. Paginated: pass back `nextCursor` for older items.
3 parameters
- userstringbodyrequired
EVM address (0x…) of the Aave account. For the CONNECTED USER's own portfolio/balances/history, pass their wallet address ($USER_ADDRESS).
- chainIdnumberbody
Chain id (default 1 = Ethereum mainnet, the only live Aave v4 chain today).
- cursorstringbody
Pagination cursor from a previous call's nextCursor.
- POST/mcp/previewvia Custom (MCP)aave-mcp.yeetful.com
Simulate a supply/borrow/withdraw/repay BEFORE building it: health factor now vs after, net APY, net collateral, remaining borrowing power, and the pool's rates after the action. Nothing is built or signed. Use this before build_borrow / a large build_withdraw so the user sees the health-factor impact first; a full repay shows '∞ (no debt)'.
7 parameters
- actionstringbodyrequired
The action to simulate.
- spokeAddressstringbodyrequired
The spoke (market) contract address — from `markets` or `reserves`.
- currencystringbodyrequired
The underlying token (currency) address — `asset.address` from `reserves` or `portfolio`.
- amountstringbody
Amount to simulate — omit with max:true (withdraw/repay only).
- maxbooleanbody
Simulate the maximum (withdraw all / repay everything).
- userstringbodyrequired
The wallet the action would run as — $USER_ADDRESS for the connected user.
- chainIdnumberbody
Chain id (default 1 = Ethereum mainnet, the only live Aave v4 chain today).
- POST/mcp/build_supplyvia Custom (MCP)aave-mcp.yeetful.com
Prepare an Aave v4 SUPPLY: deposit a token into a spoke's pool to start earning its supply APY (optionally as collateral). Returns UNSIGNED transaction step(s) {action:'send_transaction', tx:{to,data,value,chainId}} for the USER's wallet — an ERC-20 approve step first when allowance is short. Nothing is signed or submitted by this service. Get spokeAddress + the token's address from `reserves` or `balances`.
5 parameters
- spokeAddressstringbodyrequired
The spoke (market) contract address — from `markets` or `reserves`.
- currencystringbodyrequired
The underlying token (currency) address — `asset.address` from `reserves` or `portfolio`.
- amountstringbodyrequired
Token amount as a decimal string in HUMAN units, e.g. "100" USDC or "0.5" WETH (not wei).
- userstringbodyrequired
The wallet that supplies and signs — $USER_ADDRESS for the connected user.
- chainIdnumberbody
Chain id (default 1 = Ethereum mainnet, the only live Aave v4 chain today).
- POST/mcp/build_withdrawvia Custom (MCP)aave-mcp.yeetful.com
Prepare an Aave v4 WITHDRAW: pull a supplied token back to the wallet (pass max:true to withdraw everything, accrued interest included). Returns UNSIGNED transaction step(s) {action:'send_transaction', tx:{to,data,value,chainId}} for the USER's wallet — an ERC-20 approve step first when allowance is short. Nothing is signed or submitted by this service.
- POST/mcp/build_borrowvia Custom (MCP)aave-mcp.yeetful.com
Prepare an Aave v4 BORROW against the user's supplied collateral. Check `portfolio` first for remainingBorrowingPower and warn if the resulting health factor looks tight. Returns UNSIGNED transaction step(s) {action:'send_transaction', tx:{to,data,value,chainId}} for the USER's wallet — an ERC-20 approve step first when allowance is short. Nothing is signed or submitted by this service.
5 parameters
- spokeAddressstringbodyrequired
The spoke (market) contract address — from `markets` or `reserves`.
- currencystringbodyrequired
The underlying token (currency) address — `asset.address` from `reserves` or `portfolio`.
- amountstringbodyrequired
Token amount as a decimal string in HUMAN units, e.g. "100" USDC or "0.5" WETH (not wei).
- userstringbodyrequired
The wallet that borrows and signs — $USER_ADDRESS for the connected user.
- chainIdnumberbody
Chain id (default 1 = Ethereum mainnet, the only live Aave v4 chain today).
- POST/mcp/build_repayvia Custom (MCP)aave-mcp.yeetful.com
Prepare an Aave v4 REPAY of borrowed debt (pass max:true to clear the debt in full, accrued interest included). Returns UNSIGNED transaction step(s) {action:'send_transaction', tx:{to,data,value,chainId}} for the USER's wallet — an ERC-20 approve step first when allowance is short. Nothing is signed or submitted by this service.
6 parameters
- spokeAddressstringbodyrequired
The spoke (market) contract address — from `markets` or `reserves`.
- currencystringbodyrequired
The underlying token (currency) address — `asset.address` from `reserves` or `portfolio`.
- amountstringbody
Amount to repay — omit with max:true for "repay everything".
- maxbooleanbody
Repay the full outstanding debt (overrides amount).
- userstringbodyrequired
The wallet that repays and signs — $USER_ADDRESS for the connected user.
- chainIdnumberbody
Chain id (default 1 = Ethereum mainnet, the only live Aave v4 chain today).
- POST/mcp/build_collateral_togglevia Custom (MCP)aave-mcp.yeetful.com
Prepare a transaction that enables or disables a SUPPLIED token as collateral on a spoke. Disabling can drop the health factor — run `preview` context first when debt exists. Returns UNSIGNED transaction step(s) {action:'send_transaction', tx:{to,data,value,chainId}} for the USER's wallet — an ERC-20 approve step first when allowance is short. Nothing is signed or submitted by this service.
5 parameters
- spokeAddressstringbodyrequired
The spoke (market) contract address — from `markets` or `reserves`.
- currencystringbodyrequired
The underlying token (currency) address — `asset.address` from `reserves` or `portfolio`.
- enablebooleanbodyrequired
true = use as collateral, false = stop using as collateral.
- userstringbodyrequired
The wallet that signs — $USER_ADDRESS for the connected user.
- chainIdnumberbody
Chain id (default 1 = Ethereum mainnet, the only live Aave v4 chain today).
- POST/mcp/check_transactionvia Custom (MCP)aave-mcp.yeetful.com
After the user's wallet sends a prepared transaction, confirm Aave has processed it (true = indexed, portfolio data is current). Use this to complete a multi-step flow before re-reading the portfolio.
2 parameters
- txHashstringbodyrequired
The transaction hash the wallet returned.
- operationstringbodyrequired
Which operation the transaction performed.
- POST/mcp/graphql_queryvia Custom (MCP)aave-mcp.yeetful.com
Escape hatch: run any READ-ONLY query against the official AaveKit v4 GraphQL API (api.v4.aave.com) for data the other tools don't cover — e.g. reserve holders, EUR-denominated summaries, incentives. Allowed root fields: chains, hubs, hub, spokes, spoke, reserves, reserve, reserveHolders, userPositions, userPosition, userSupplies, userBorrows, userBalances, userTransactionHistory, activities, hasProcessedKnownTransaction. Notes: most fields take a single `request` input object; amounts are objects like {value} and percentages {value (fraction), normalized (percent)}; unions (userBalances.balances, activities.items) need `... on Type` inline fragments; introspection is disabled upstream but error messages suggest valid fields. Responses truncated ~24k chars.
2 parameters
- querystringbodyrequired
The GraphQL query text (a single `query` operation).
- variablesobjectbody
Variables as an object (or JSON string), e.g. {"request":{"query":{"chainIds":[1]}}}.