Skip to main content
Glama

Get Defi Positions

get_defi_positions
Read-only

Block-accurate DeFi positions for a wallet across Aave v3, Compound v3, Uniswap v3 LP, and Lido on Ethereum or Base. Returns Aave account health (collateral, debt, health factor, LTV) with per-reserve breakdown, Compound v3 market positions, Uniswap v3 LP positions by token ID, and on Ethereum the Lido stETH/wstETH balances with the current wstETH-to-stETH equivalent. Per-protocol failures are isolated — other protocols still return.

Use when: Use when a block-accurate single-wallet protocol snapshot is needed, including health factor and LP position detail. For broad all-chain discovery or net worth across many protocols use get_wallet_positions instead.

Limitations: On-chain RPC view of four protocol families on Ethereum and Base only; does not discover wallets' unknown or long-tail protocol positions. Compound v3 reports only a boolean liquidation flag — never state a numeric Compound health factor. Errors list which protocols were unavailable.

Alternatives: get_wallet_positions, get_liquidation_risk, get_wallet_portfolio

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
chain_idNoChain ID (1=Ethereum, 8453=Base)
wallet_addressYesWallet address (0x…)

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
noteNoOn-chain position snapshot at data_block_number. Aave USD values are from the Aave oracle (base currency = USD, 8 decimals on Ethereum/Base). Compound collateral and Uniswap v3 amounts are raw integer units — divide by 10**decimals to format. Compound collateral factors are decimals (e.g., 0.90 = 90%) when available from Comet getAssetInfo. Token symbols are resolved for well-known tokens; None means unrecognised — do NOT call read_contract, web_search, or any external lookup to identify these tokens. Report them as 'unrecognized token (0x…)' in the final answer and move on. Uniswap v3 liquidity is returned raw (no underlying token valuation in v1); tokensOwed0/1 are uncollected fees only. Lido staking contains canonical Ethereum stETH/wstETH balances and a current wstETH-to-stETH equivalent in raw integer units; it does not include APR, rewards accounting, validator positions, or withdrawal queue status. Lido staking is null on Base because its wstETH representation there is bridged. If a protocol is missing (e.g., aave_v3 is null) and appears in errors, its risk could not be verified from this snapshot and must not be treated as no debt. Does not include COMP accruals or unlisted protocols.
errorsNo
aave_v3No
chain_idYes
uniswap_v3No
compound_v3No
lido_stakingNo
wallet_addressYes
data_block_numberYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed22 schema fields changed
    • removedInput schema / additionalProperties
      Removed value: -false
    • addedInput schema / properties / chain_id / title
      Added value: +"Chain Id"
    • addedInput schema / properties / wallet_address / title
      Added value: +"Wallet Address"
    • addedInput schema / title
      Added value: +"mcp_get_defi_positionsArguments"
    • addedOutput schema / $defs
      Added value: +{
      +  "AavePosition": {
      +    "properties": {
      +      "available_borrows_usd": {
      +        "title": "Available Borrows Usd",
      +        "type": "number"
      +      },
      +      "health_factor": {
      +        "anyOf": [
      +          {
      +            "type": "number"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "title": "Health Factor"
      +      },
      +      "health_factor_status": {
      +        "title": "Health Factor Status",
      +        "type": "string"
      +      },
      +      "liquidation_threshold_bps": {
      +        "title": "Liquidation Threshold Bps",
      +        "type": "integer"
      +      },
      +      "ltv_bps": {
      +        "title": "Ltv Bps",
      +        "type": "integer"
      +      },
      +      "reserves": {
      +        "items": {
      +          "$ref": "#/$defs/AaveReservePosition"
      +        },
      +        "title": "Reserves",
      +        "type": "array"
      +      },
      +      "total_collateral_usd": {
      +        "title": "Total Collateral Usd",
      +        "type": "number"
      +      },
      +      "total_debt_usd": {
      +        "title": "Total Debt Usd",
      +        "type": "number"
      +      }
      +    },
      +    "required": [
      +      "total_collateral_usd",
      +      "total_debt_usd",
      +      "available_borrows_usd",
      +      "ltv_bps",
      +      "liquidation_threshold_bps",
      +      "health_factor",
      +      "health_factor_status",
      +      "reserves"
      +    ],
      +    "title": "AavePosition",
      +    "type": "object"
      +  },
      +  "AaveReservePosition": {
      +    "properties": {
      +      "asset_address": {
      +        "title": "Asset Address",
      +        "type": "string"
      +      },
      +      "stable_debt_amount": {
      +        "title": "Stable Debt Amount",
      +        "type": "string"
      +      },
      +      "supplied_amount": {
      +        "title": "Supplied Amount",
      +        "type": "string"
      +      },
      +      "symbol": {
      +        "title": "Symbol",
      +        "type": "string"
      +      },
      +      "usage_as_collateral": {
      +        "title": "Usage As Collateral",
      +        "type": "boolean"
      +      },
      +      "variable_debt_amount": {
      +        "title": "Variable Debt Amount",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "symbol",
      +      "asset_address",
      +      "supplied_amount",
      +      "variable_debt_amount",
      +      "stable_debt_amount",
      +      "usage_as_collateral"
      +    ],
      +    "title": "AaveReservePosition",
      +    "type": "object"
      +  },
      +  "CompoundCollateral": {
      +    "properties": {
      +      "amount": {
      +        "title": "Amount",
      +        "type": "string"
      +      },
      +      "asset_address": {
      +        "title": "Asset Address",
      +        "type": "string"
      +      },
      +      "borrow_collateral_factor": {
      +        "anyOf": [
      +          {
      +            "type": "number"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "title": "Borrow Collateral Factor"
      +      },
      +      "liquidate_collateral_factor": {
      +        "anyOf": [
      +          {
      +            "type": "number"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "title": "Liquidate Collateral Factor"
      +      }
      +    },
      +    "required": [
      +      "asset_address",
      +      "amount"
      +    ],
      +    "title": "CompoundCollateral",
      +    "type": "object"
      +  },
      +  "CompoundMarketPosition": {
      +    "properties": {
      +      "base_asset_address": {
      +        "title": "Base Asset Address",
      +        "type": "string"
      +      },
      +      "base_asset_symbol": {
      +        "title": "Base Asset Symbol",
      +        "type": "string"
      +      },
      +      "borrowed_amount": {
      +        "title": "Borrowed Amount",
      +        "type": "string"
      +      },
      +      "collateral": {
      +        "items": {
      +          "$ref": "#/$defs/CompoundCollateral"
      +        },
      +        "title": "Collateral",
      +        "type": "array"
      +      },
      +      "is_liquidatable": {
      +        "title": "Is Liquidatable",
      +        "type": "boolean"
      +      },
      +      "market_address": {
      +        "title": "Market Address",
      +        "type": "string"
      +      },
      +      "market_name": {
      +        "title": "Market Name",
      +        "type": "string"
      +      },
      +      "supplied_amount": {
      +        "title": "Supplied Amount",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "market_name",
      +      "market_address",
      +      "base_asset_symbol",
      +      "base_asset_address",
      +      "supplied_amount",
      +      "borrowed_amount",
      +      "collateral",
      +      "is_liquidatable"
      +    ],
      +    "title": "CompoundMarketPosition",
      +    "type": "object"
      +  },
      +  "LidoStakingPosition": {
      +    "properties": {
      +      "steth_balance": {
      +        "title": "Steth Balance",
      +        "type": "string"
      +      },
      +      "total_steth_equivalent": {
      +        "title": "Total Steth Equivalent",
      +        "type": "string"
      +      },
      +      "wsteth_balance": {
      +        "title": "Wsteth Balance",
      +        "type": "string"
      +      },
      +      "wsteth_steth_equivalent": {
      +        "title": "Wsteth Steth Equivalent",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "steth_balance",
      +      "wsteth_balance",
      +      "wsteth_steth_equivalent",
      +      "total_steth_equivalent"
      +    ],
      +    "title": "LidoStakingPosition",
      +    "type": "object"
      +  },
      +  "ProtocolErrorInfo": {
      +    "properties": {
      +      "error": {
      +        "title": "Error",
      +        "type": "string"
      +      },
      +      "protocol": {
      +        "title": "Protocol",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "protocol",
      +      "error"
      +    ],
      +    "title": "ProtocolErrorInfo",
      +    "type": "object"
      +  },
      +  "UniswapV3Position": {
      +    "properties": {
      +      "fee_tier_raw": {
      +        "title": "Fee Tier Raw",
      +        "type": "integer"
      +      },
      +      "liquidity": {
      +        "title": "Liquidity",
      +        "type": "string"
      +      },
      +      "status": {
      +        "title": "Status",
      +        "type": "string"
      +      },
      +      "tick_lower": {
      +        "title": "Tick Lower",
      +        "type": "integer"
      +      },
      +      "tick_upper": {
      +        "title": "Tick Upper",
      +        "type": "integer"
      +      },
      +      "token0_address": {
      +        "title": "Token0 Address",
      +        "type": "string"
      +      },
      +      "token0_symbol": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "title": "Token0 Symbol"
      +      },
      +      "token1_address": {
      +        "title": "Token1 Address",
      +        "type": "string"
      +      },
      +      "token1_symbol": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "title": "Token1 Symbol"
      +      },
      +      "token_id": {
      +        "title": "Token Id",
      +        "type": "string"
      +      },
      +      "tokens_owed_0": {
      +        "title": "Tokens Owed 0",
      +        "type": "string"
      +      },
      +      "tokens_owed_1": {
      +        "title": "Tokens Owed 1",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "token_id",
      +      "token0_address",
      +      "token1_address",
      +      "fee_tier_raw",
      +      "tick_lower",
      +      "tick_upper",
      +      "liquidity",
      +      "tokens_owed_0",
      +      "tokens_owed_1",
      +      "status"
      +    ],
      +    "title": "UniswapV3Position",
      +    "type": "object"
      +  }
      +}
    • changedOutput schema / properties / aave_v3 / anyOf
      Previous value: -[
      -  {
      -    "properties": {
      -      "available_borrows_usd": {
      -        "title": "Available Borrows Usd",
      -        "type": "number"
      -      },
      -      "health_factor": {
      -        "anyOf": [
      -          {
      -            "type": "number"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "title": "Health Factor"
      -      },
      -      "health_factor_status": {
      -        "title": "Health Factor Status",
      -        "type": "string"
      -      },
      -      "liquidation_threshold_bps": {
      -        "title": "Liquidation Threshold Bps",
      -        "type": "integer"
      -      },
      -      "ltv_bps": {
      -        "title": "Ltv Bps",
      -        "type": "integer"
      -      },
      -      "reserves": {
      -        "items": {
      -          "properties": {
      -            "asset_address": {
      -              "title": "Asset Address",
      -              "type": "string"
      -            },
      -            "stable_debt_amount": {
      -              "title": "Stable Debt Amount",
      -              "type": "string"
      -            },
      -            "supplied_amount": {
      -              "title": "Supplied Amount",
      -              "type": "string"
      -            },
      -            "symbol": {
      -              "title": "Symbol",
      -              "type": "string"
      -            },
      -            "usage_as_collateral": {
      -              "title": "Usage As Collateral",
      -              "type": "boolean"
      -            },
      -            "variable_debt_amount": {
      -              "title": "Variable Debt Amount",
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "symbol",
      -            "asset_address",
      -            "supplied_amount",
      -            "variable_debt_amount",
      -            "stable_debt_amount",
      -            "usage_as_collateral"
      -          ],
      -          "title": "AaveReservePosition",
      -          "type": "object"
      -        },
      -        "title": "Reserves",
      -        "type": "array"
      -      },
      -      "total_collateral_usd": {
      -        "title": "Total Collateral Usd",
      -        "type": "number"
      -      },
      -      "total_debt_usd": {
      -        "title": "Total Debt Usd",
      -        "type": "number"
      -      }
      -    },
      -    "required": [
      -      "total_collateral_usd",
      -      "total_debt_usd",
      -      "available_borrows_usd",
      -      "ltv_bps",
      -      "liquidation_threshold_bps",
      -      "health_factor",
      -      "health_factor_status",
      -      "reserves"
      -    ],
      -    "title": "AavePosition",
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "$ref": "#/$defs/AavePosition"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedOutput schema / properties / compound_v3 / items / $ref
      Added value: +"#/$defs/CompoundMarketPosition"
    • removedOutput schema / properties / compound_v3 / items / properties
      Removed value: -{
      -  "base_asset_address": {
      -    "title": "Base Asset Address",
      -    "type": "string"
      -  },
      -  "base_asset_symbol": {
      -    "title": "Base Asset Symbol",
      -    "type": "string"
      -  },
      -  "borrowed_amount": {
      -    "title": "Borrowed Amount",
      -    "type": "string"
      -  },
      -  "collateral": {
      -    "items": {
      -      "properties": {
      -        "amount": {
      -          "title": "Amount",
      -          "type": "string"
      -        },
      -        "asset_address": {
      -          "title": "Asset Address",
      -          "type": "string"
      -        },
      -        "borrow_collateral_factor": {
      -          "anyOf": [
      -            {
      -              "type": "number"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ],
      -          "default": null,
      -          "title": "Borrow Collateral Factor"
      -        },
      -        "liquidate_collateral_factor": {
      -          "anyOf": [
      -            {
      -              "type": "number"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ],
      -          "default": null,
      -          "title": "Liquidate Collateral Factor"
      -        }
      -      },
      -      "required": [
      -        "asset_address",
      -        "amount"
      -      ],
      -      "title": "CompoundCollateral",
      -      "type": "object"
      -    },
      -    "title": "Collateral",
      -    "type": "array"
      -  },
      -  "is_liquidatable": {
      -    "title": "Is Liquidatable",
      -    "type": "boolean"
      -  },
      -  "market_address": {
      -    "title": "Market Address",
      -    "type": "string"
      -  },
      -  "market_name": {
      -    "title": "Market Name",
      -    "type": "string"
      -  },
      -  "supplied_amount": {
      -    "title": "Supplied Amount",
      -    "type": "string"
      -  }
      -}
    • removedOutput schema / properties / compound_v3 / items / required
      Removed value: -[
      -  "market_name",
      -  "market_address",
      -  "base_asset_symbol",
      -  "base_asset_address",
      -  "supplied_amount",
      -  "borrowed_amount",
      -  "collateral",
      -  "is_liquidatable"
      -]
    • removedOutput schema / properties / compound_v3 / items / title
      Removed value: -"CompoundMarketPosition"
    • removedOutput schema / properties / compound_v3 / items / type
      Removed value: -"object"
    • addedOutput schema / properties / errors / items / $ref
      Added value: +"#/$defs/ProtocolErrorInfo"
    • removedOutput schema / properties / errors / items / properties
      Removed value: -{
      -  "error": {
      -    "title": "Error",
      -    "type": "string"
      -  },
      -  "protocol": {
      -    "title": "Protocol",
      -    "type": "string"
      -  }
      -}
    • removedOutput schema / properties / errors / items / required
      Removed value: -[
      -  "protocol",
      -  "error"
      -]
    • removedOutput schema / properties / errors / items / title
      Removed value: -"ProtocolErrorInfo"
    • removedOutput schema / properties / errors / items / type
      Removed value: -"object"
    • changedOutput schema / properties / lido_staking / anyOf
      Previous value: -[
      -  {
      -    "properties": {
      -      "steth_balance": {
      -        "title": "Steth Balance",
      -        "type": "string"
      -      },
      -      "total_steth_equivalent": {
      -        "title": "Total Steth Equivalent",
      -        "type": "string"
      -      },
      -      "wsteth_balance": {
      -        "title": "Wsteth Balance",
      -        "type": "string"
      -      },
      -      "wsteth_steth_equivalent": {
      -        "title": "Wsteth Steth Equivalent",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "steth_balance",
      -      "wsteth_balance",
      -      "wsteth_steth_equivalent",
      -      "total_steth_equivalent"
      -    ],
      -    "title": "LidoStakingPosition",
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "$ref": "#/$defs/LidoStakingPosition"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedOutput schema / properties / uniswap_v3 / items / $ref
      Added value: +"#/$defs/UniswapV3Position"
    • removedOutput schema / properties / uniswap_v3 / items / properties
      Removed value: -{
      -  "fee_tier_raw": {
      -    "title": "Fee Tier Raw",
      -    "type": "integer"
      -  },
      -  "liquidity": {
      -    "title": "Liquidity",
      -    "type": "string"
      -  },
      -  "status": {
      -    "title": "Status",
      -    "type": "string"
      -  },
      -  "tick_lower": {
      -    "title": "Tick Lower",
      -    "type": "integer"
      -  },
      -  "tick_upper": {
      -    "title": "Tick Upper",
      -    "type": "integer"
      -  },
      -  "token0_address": {
      -    "title": "Token0 Address",
      -    "type": "string"
      -  },
      -  "token0_symbol": {
      -    "anyOf": [
      -      {
      -        "type": "string"
      -      },
      -      {
      -        "type": "null"
      -      }
      -    ],
      -    "default": null,
      -    "title": "Token0 Symbol"
      -  },
      -  "token1_address": {
      -    "title": "Token1 Address",
      -    "type": "string"
      -  },
      -  "token1_symbol": {
      -    "anyOf": [
      -      {
      -        "type": "string"
      -      },
      -      {
      -        "type": "null"
      -      }
      -    ],
      -    "default": null,
      -    "title": "Token1 Symbol"
      -  },
      -  "token_id": {
      -    "title": "Token Id",
      -    "type": "string"
      -  },
      -  "tokens_owed_0": {
      -    "title": "Tokens Owed 0",
      -    "type": "string"
      -  },
      -  "tokens_owed_1": {
      -    "title": "Tokens Owed 1",
      -    "type": "string"
      -  }
      -}
    • removedOutput schema / properties / uniswap_v3 / items / required
      Removed value: -[
      -  "token_id",
      -  "token0_address",
      -  "token1_address",
      -  "fee_tier_raw",
      -  "tick_lower",
      -  "tick_upper",
      -  "liquidity",
      -  "tokens_owed_0",
      -  "tokens_owed_1",
      -  "status"
      -]
    • removedOutput schema / properties / uniswap_v3 / items / title
      Removed value: -"UniswapV3Position"
    • removedOutput schema / properties / uniswap_v3 / items / type
      Removed value: -"object"
  2. Changed2 schema fields changed
    • addedOutput schema / properties / lido_staking
      Added value: +{
      +  "anyOf": [
      +    {
      +      "properties": {
      +        "steth_balance": {
      +          "title": "Steth Balance",
      +          "type": "string"
      +        },
      +        "total_steth_equivalent": {
      +          "title": "Total Steth Equivalent",
      +          "type": "string"
      +        },
      +        "wsteth_balance": {
      +          "title": "Wsteth Balance",
      +          "type": "string"
      +        },
      +        "wsteth_steth_equivalent": {
      +          "title": "Wsteth Steth Equivalent",
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "steth_balance",
      +        "wsteth_balance",
      +        "wsteth_steth_equivalent",
      +        "total_steth_equivalent"
      +      ],
      +      "title": "LidoStakingPosition",
      +      "type": "object"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • changedOutput schema / properties / note / default
      Previous value: -"On-chain position snapshot at data_block_number. Aave USD values are from the Aave oracle (base currency = USD, 8 decimals on Ethereum/Base). Compound collateral and Uniswap v3 amounts are raw integer units — divide by 10**decimals to format. Compound collateral factors are decimals (e.g., 0.90 = 90%) when available from Comet getAssetInfo. Token symbols are resolved for well-known tokens; None means unrecognised — do NOT call read_contract, web_search, or any external lookup to identify these tokens. Report them as 'unrecognized token (0x…)' in the final answer and move on. Uniswap v3 liquidity is returned raw (no underlying token valuation in v1); tokensOwed0/1 are uncollected fees only. If a protocol is missing (e.g., aave_v3 is null) and appears in errors, its risk could not be verified from this snapshot and must not be treated as no debt. Does not include staking rewards, COMP accruals, or unlisted protocols."New value: +"On-chain position snapshot at data_block_number. Aave USD values are from the Aave oracle (base currency = USD, 8 decimals on Ethereum/Base). Compound collateral and Uniswap v3 amounts are raw integer units — divide by 10**decimals to format. Compound collateral factors are decimals (e.g., 0.90 = 90%) when available from Comet getAssetInfo. Token symbols are resolved for well-known tokens; None means unrecognised — do NOT call read_contract, web_search, or any external lookup to identify these tokens. Report them as 'unrecognized token (0x…)' in the final answer and move on. Uniswap v3 liquidity is returned raw (no underlying token valuation in v1); tokensOwed0/1 are uncollected fees only. Lido staking contains canonical Ethereum stETH/wstETH balances and a current wstETH-to-stETH equivalent in raw integer units; it does not include APR, rewards accounting, validator positions, or withdrawal queue status. Lido staking is null on Base because its wstETH representation there is bridged. If a protocol is missing (e.g., aave_v3 is null) and appears in errors, its risk could not be verified from this snapshot and must not be treated as no debt. Does not include COMP accruals or unlisted protocols."
  3. First observed

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, and the description aligns with that. It adds valuable behavioral context beyond annotations: per-protocol failure isolation, the fact that errors list unavailable protocols, and the warning that Compound v3 only reports a boolean liquidation flag rather than a numeric health factor.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is longer than minimal but well-organized with labeled sections: use-when, limitations, and alternatives. Content is front-loaded with the core purpose, and each section earns its place, though the repeated 'Use when:' phrase is mildly redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present and annotations covering read-only safety, the description supplies everything else needed: invocation conditions, protocol scope, failure behavior, Compound caveat, and alternative tools. Nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents wallet_address and chain_id fully. The description reinforces the Ethereum/Base scope but adds no significant new parameter semantics, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: it returns block-accurate DeFi positions for a wallet across Aave v3, Compound v3, Uniswap v3 LP, and Lido. It also enumerates concrete return details like health factor, LP positions, and Lido balances, making the tool's purpose unmistakable and distinct from siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit 'Use when' guidance, tells the agent to use get_wallet_positions for broad all-chain discovery, and lists alternatives including get_liquidation_risk and get_wallet_portfolio. Limitations such as chain scope and Compound's boolean-only flag further guide correct invocation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources