Skip to main content
Glama

Get Defi Positions

get_defi_positions
Read-only

Aggregate DeFi positions for a wallet across Aave v3, Compound v3, Uniswap v3 LP, and canonical Ethereum (chain_id=1) or Base (chain_id=8453). Returns Aave aggregate account health (collateral, debt, health factor, LTV) with per-reserve breakdown for major assets, Compound v3 Comet market positions (supply, borrow, per-asset collateral, liquidation flag), and Uniswap v3 LP positions by token ID (token pair, fee tier, tick range, liquidity, uncollected fees). On Ethereum, also returns canonical Lido stETH/wstETH balances and the current wstETH-to-stETH equivalent. Per-protocol failures are isolated — other protocols still return.

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. Dates show when Glama detected each change.

  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.5/5.0
Behavior5/5

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

Beyond the readOnlyHint annotation, the description discloses detailed behavior: only reads data, returns specific Aave/Compound/Uniswap breakdowns, includes Lido balances on Ethereum, and isolates per-protocol failures so other protocols still return results. This is comprehensive and adds significant value beyond the annotation.

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

Conciseness5/5

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

The description is information-dense but not bloated. Four sentences cover purpose, return details, chain-specific behavior, and error isolation—every sentence earns its place and the main purpose is front-loaded.

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?

Given the high complexity of aggregating multiple protocols, the description is complete: it covers chains, protocols, return contents for each protocol, chain-specific extras, and failure handling. The output schema exists, and the description still provides additional useful context, making it fully sufficient.

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%, and the schema already explains both parameters (wallet_address and chain_id). The description restates chain_id values but adds minimal new meaning beyond the schema, so a baseline score 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 uses a specific verb ('aggregate') and identifies the exact resource ('DeFi positions for a wallet') plus the protocols and chains covered (Aave v3, Compound v3, Uniswap v3 LP, Ethereum/Base). It clearly distinguishes from sibling tools like get_wallet_portfolio by naming the precise protocols and scope.

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

Usage Guidelines4/5

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

The description provides clear context on what the tool does (aggregating multiple DeFi protocols), so an agent can infer when to use it. However, it does not explicitly name alternatives or state when NOT to use it, falling short of the highest level of guidance.

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.

TDQS

A3.7/5.0
Disambiguation3/5

Most tools target distinct data sources, but several near-duplicates exist: get_token_approvals/get_wallet_approvals, get_defi_positions/get_wallet_positions, and get_wallet_portfolio/get_eth_balance. The descriptions do cross-reference and clarify the differences, so an agent can disambiguate with effort, but names alone are not enough.

Naming Consistency4/5

The dominant get_<noun> pattern is clear and nearly all names use lowercase snake_case with verb-first conventions. A few tools like calculate, record_predictions, http_fetch, and web_search break the get_ pattern, but the overall style remains predictable.

Tool Count2/5

34 tools is excessive for a single server, even for a broad DeFi/onchain analytics domain. The count is inflated by generic utilities such as calculate, count_text_stats, web_search, and http_fetch, plus multiple overlapping data-retrieval endpoints, making the surface hard to scan.

Completeness4/5

The set covers an unusually wide range of domain operations: prices, balances, portfolio/positions, approvals, yields, TVL, DEX quotes/volume, transactions, blocks, gas, ENS, contract reads, and risk assessments. It is view-only by design, so missing write/transaction tools is acceptable; minor gaps like address-based token pricing or transaction simulation are workaround-able.

Resources