Skip to main content
Glama

Checking wallet DEX trades

address_dex_trades
Read-only

Get a wallet's individual trades on a single chain — DEX swaps (spot) or Hyperliquid perpetual trades, newest first. Wallet-centric companion to token_dex_trades (which is token-centric).

Chain: one per call ('all'/'evm' unsupported). EVM wallets MUST pass chain explicitly (e.g. ethereum, base, arbitrum); non-EVM (e.g. Solana) is auto-detected. Use 'hyperliquid' for Hyperliquid perpetual trades (requires an EVM address). Call once per chain to span multiple networks.

Spot columns: Time, Bought / Bought Amount, Sold / Sold Amount, Value USD, Tx Hash. Perp columns: Time, Token, Side, Action, Size, Price, Value USD, Fee USD, Closed PnL, Tx Hash. Sort (order_by, asc/desc): timestamp, value. Filter by valueUsd, tokenAddressBought, or tokenAddressSold. On spot chains the token fields take contract addresses. On Hyperliquid they take perp symbols and select Long or Short trades respectively; only one token field is allowed.

Example: { "address": "0x1f2f10d1c40777ae1da742455c65828ff36df387", "chain": "ethereum", "dateRange": {"from": "7D_AGO", "to": "NOW"} }

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
requestYes

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / request / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": true,
      -    "type": "object"
      -  },
      -  {
      -    "description": "Complete request for an address' DEX trades (flattened).",
      -    "properties": {
      -      "address": {
      -        "description": "The wallet address whose DEX trades to fetch",
      -        "type": "string"
      -      },
      -      "chain": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "default": null,
      -        "description": "Single chain to query (e.g. ethereum, base, arbitrum, solana). This endpoint queries ONE chain at a time and does NOT accept 'all' or 'evm'. For EVM wallets a concrete chain is REQUIRED (they trade across many chains); non-EVM addresses are auto-detected from the address. Use 'hyperliquid' for Hyperliquid perpetual trades (requires an EVM address)."
      -      },
      -      "dateRange": {
      -        "description": "Date range for the trades (defaults to last 7 days)",
      -        "properties": {
      -          "from": {
      -            "description": "Start value: token (see above) or date (YYYY-MM-DD or ___-MM-DD).",
      -            "type": "string"
      -          },
      -          "to": {
      -            "description": "End value: token (see above) or date (YYYY-MM-DD or ___-MM-DD).",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "from",
      -          "to"
      -        ],
      -        "type": "object"
      -      },
      -      "orderBy": {
      -        "anyOf": [
      -          {
      -            "enum": [
      -              "timestamp",
      -              "value"
      -            ],
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "default": null,
      -        "description": "Sort field. Pass an exact value above or None for default ('timestamp')."
      -      },
      -      "order_by_direction": {
      -        "default": "DESC",
      -        "enum": [
      -          "ASC",
      -          "DESC",
      -          "asc",
      -          "desc"
      -        ],
      -        "type": "string"
      -      },
      -      "page": {
      -        "default": 1,
      -        "type": "integer"
      -      },
      -      "tokenAddressBought": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "default": null,
      -        "description": "Token bought filter. On spot chains, use the token contract address. On Hyperliquid, use a perp symbol (e.g. BTC, HYPE, xyz:NVDA); returns Long-side trades."
      -      },
      -      "tokenAddressSold": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "default": null,
      -        "description": "Token sold filter. On spot chains, use the token contract address. On Hyperliquid, use a perp symbol (e.g. BTC, HYPE, xyz:NVDA); returns Short-side trades."
      -      },
      -      "valueUsd": {
      -        "anyOf": [
      -          {
      -            "description": "Numeric range where from_value and to_value are optional,\nallowing for open-ended ranges (e.g., only minimum or only maximum).",
      -            "properties": {
      -              "from": {
      -                "anyOf": [
      -                  {
      -                    "type": "number"
      -                  },
      -                  {
      -                    "type": "null"
      -                  }
      -                ],
      -                "default": null,
      -                "description": "Minimum value (inclusive), optional"
      -              },
      -              "to": {
      -                "anyOf": [
      -                  {
      -                    "type": "number"
      -                  },
      -                  {
      -                    "type": "null"
      -                  }
      -                ],
      -                "default": null,
      -                "description": "Maximum value (inclusive), optional"
      -              }
      -            },
      -            "type": "object"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "default": null,
      -        "description": "Filter trades by USD value (open-ended min/max allowed)"
      -      }
      -    },
      -    "required": [
      -      "address"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": true,
      +    "type": "object"
      +  },
      +  {
      +    "description": "Complete request for an address' DEX trades (flattened).",
      +    "properties": {
      +      "address": {
      +        "description": "The wallet address whose DEX trades to fetch",
      +        "type": "string"
      +      },
      +      "chain": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Single chain to query (e.g. ethereum, base, arbitrum, solana). This endpoint queries ONE chain at a time and does NOT accept 'all' or 'evm'. For EVM wallets a concrete chain is REQUIRED (they trade across many chains); non-EVM addresses are auto-detected from the address. Use 'hyperliquid' for Hyperliquid perpetual trades (requires an EVM address)."
      +      },
      +      "dateRange": {
      +        "description": "Date range for the trades (defaults to last 7 days). Use ALL_TIME for full history (start 2009-01-03).",
      +        "properties": {
      +          "from": {
      +            "description": "Start value: token (see above) or date (YYYY-MM-DD or ___-MM-DD).",
      +            "type": "string"
      +          },
      +          "to": {
      +            "description": "End value: token (see above) or date (YYYY-MM-DD or ___-MM-DD).",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "from",
      +          "to"
      +        ],
      +        "type": "object"
      +      },
      +      "orderBy": {
      +        "anyOf": [
      +          {
      +            "enum": [
      +              "timestamp",
      +              "value"
      +            ],
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Sort field. Pass an exact value above or None for default ('timestamp')."
      +      },
      +      "order_by_direction": {
      +        "default": "DESC",
      +        "enum": [
      +          "ASC",
      +          "DESC",
      +          "asc",
      +          "desc"
      +        ],
      +        "type": "string"
      +      },
      +      "page": {
      +        "default": 1,
      +        "type": "integer"
      +      },
      +      "tokenAddressBought": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Token bought filter. On spot chains, use the token contract address. On Hyperliquid, use a perp symbol (e.g. BTC, HYPE, xyz:NVDA); returns Long-side trades."
      +      },
      +      "tokenAddressSold": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Token sold filter. On spot chains, use the token contract address. On Hyperliquid, use a perp symbol (e.g. BTC, HYPE, xyz:NVDA); returns Short-side trades."
      +      },
      +      "valueUsd": {
      +        "anyOf": [
      +          {
      +            "description": "Numeric range where from_value and to_value are optional,\nallowing for open-ended ranges (e.g., only minimum or only maximum).",
      +            "properties": {
      +              "from": {
      +                "anyOf": [
      +                  {
      +                    "type": "number"
      +                  },
      +                  {
      +                    "type": "null"
      +                  }
      +                ],
      +                "default": null,
      +                "description": "Minimum value (inclusive), optional"
      +              },
      +              "to": {
      +                "anyOf": [
      +                  {
      +                    "type": "number"
      +                  },
      +                  {
      +                    "type": "null"
      +                  }
      +                ],
      +                "default": null,
      +                "description": "Maximum value (inclusive), optional"
      +              }
      +            },
      +            "type": "object"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Filter trades by USD value (open-ended min/max allowed)"
      +      }
      +    },
      +    "required": [
      +      "address"
      +    ],
      +    "type": "object"
      +  }
      +]
  2. Changed1 schema field changed
    • changedInput schema / properties / request / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": true,
      -    "type": "object"
      -  },
      -  {
      -    "description": "Complete request for an address' DEX trades (flattened).",
      -    "properties": {
      -      "address": {
      -        "description": "The wallet address whose DEX trades to fetch",
      -        "type": "string"
      -      },
      -      "chain": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "default": null,
      -        "description": "Single chain to query (e.g. ethereum, base, arbitrum, solana). This endpoint queries ONE chain at a time and does NOT accept 'all' or 'evm'. For EVM wallets a concrete chain is REQUIRED (they trade across many chains); non-EVM addresses are auto-detected from the address. Use 'hyperliquid' for Hyperliquid perpetual trades (requires an EVM address)."
      -      },
      -      "dateRange": {
      -        "description": "Date range for the trades (defaults to last 7 days)",
      -        "properties": {
      -          "from": {
      -            "description": "Start value: token (see above) or date (YYYY-MM-DD or ___-MM-DD).",
      -            "type": "string"
      -          },
      -          "to": {
      -            "description": "End value: token (see above) or date (YYYY-MM-DD or ___-MM-DD).",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "from",
      -          "to"
      -        ],
      -        "type": "object"
      -      },
      -      "orderBy": {
      -        "anyOf": [
      -          {
      -            "enum": [
      -              "timestamp",
      -              "value"
      -            ],
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "default": null,
      -        "description": "Sort field. Pass an exact value above or None for default ('timestamp')."
      -      },
      -      "order_by_direction": {
      -        "default": "DESC",
      -        "enum": [
      -          "ASC",
      -          "DESC",
      -          "asc",
      -          "desc"
      -        ],
      -        "type": "string"
      -      },
      -      "page": {
      -        "default": 1,
      -        "type": "integer"
      -      },
      -      "valueUsd": {
      -        "anyOf": [
      -          {
      -            "description": "Numeric range where from_value and to_value are optional,\nallowing for open-ended ranges (e.g., only minimum or only maximum).",
      -            "properties": {
      -              "from": {
      -                "anyOf": [
      -                  {
      -                    "type": "number"
      -                  },
      -                  {
      -                    "type": "null"
      -                  }
      -                ],
      -                "default": null,
      -                "description": "Minimum value (inclusive), optional"
      -              },
      -              "to": {
      -                "anyOf": [
      -                  {
      -                    "type": "number"
      -                  },
      -                  {
      -                    "type": "null"
      -                  }
      -                ],
      -                "default": null,
      -                "description": "Maximum value (inclusive), optional"
      -              }
      -            },
      -            "type": "object"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "default": null,
      -        "description": "Filter trades by USD value (open-ended min/max allowed)"
      -      }
      -    },
      -    "required": [
      -      "address"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": true,
      +    "type": "object"
      +  },
      +  {
      +    "description": "Complete request for an address' DEX trades (flattened).",
      +    "properties": {
      +      "address": {
      +        "description": "The wallet address whose DEX trades to fetch",
      +        "type": "string"
      +      },
      +      "chain": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Single chain to query (e.g. ethereum, base, arbitrum, solana). This endpoint queries ONE chain at a time and does NOT accept 'all' or 'evm'. For EVM wallets a concrete chain is REQUIRED (they trade across many chains); non-EVM addresses are auto-detected from the address. Use 'hyperliquid' for Hyperliquid perpetual trades (requires an EVM address)."
      +      },
      +      "dateRange": {
      +        "description": "Date range for the trades (defaults to last 7 days)",
      +        "properties": {
      +          "from": {
      +            "description": "Start value: token (see above) or date (YYYY-MM-DD or ___-MM-DD).",
      +            "type": "string"
      +          },
      +          "to": {
      +            "description": "End value: token (see above) or date (YYYY-MM-DD or ___-MM-DD).",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "from",
      +          "to"
      +        ],
      +        "type": "object"
      +      },
      +      "orderBy": {
      +        "anyOf": [
      +          {
      +            "enum": [
      +              "timestamp",
      +              "value"
      +            ],
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Sort field. Pass an exact value above or None for default ('timestamp')."
      +      },
      +      "order_by_direction": {
      +        "default": "DESC",
      +        "enum": [
      +          "ASC",
      +          "DESC",
      +          "asc",
      +          "desc"
      +        ],
      +        "type": "string"
      +      },
      +      "page": {
      +        "default": 1,
      +        "type": "integer"
      +      },
      +      "tokenAddressBought": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Token bought filter. On spot chains, use the token contract address. On Hyperliquid, use a perp symbol (e.g. BTC, HYPE, xyz:NVDA); returns Long-side trades."
      +      },
      +      "tokenAddressSold": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Token sold filter. On spot chains, use the token contract address. On Hyperliquid, use a perp symbol (e.g. BTC, HYPE, xyz:NVDA); returns Short-side trades."
      +      },
      +      "valueUsd": {
      +        "anyOf": [
      +          {
      +            "description": "Numeric range where from_value and to_value are optional,\nallowing for open-ended ranges (e.g., only minimum or only maximum).",
      +            "properties": {
      +              "from": {
      +                "anyOf": [
      +                  {
      +                    "type": "number"
      +                  },
      +                  {
      +                    "type": "null"
      +                  }
      +                ],
      +                "default": null,
      +                "description": "Minimum value (inclusive), optional"
      +              },
      +              "to": {
      +                "anyOf": [
      +                  {
      +                    "type": "number"
      +                  },
      +                  {
      +                    "type": "null"
      +                  }
      +                ],
      +                "default": null,
      +                "description": "Maximum value (inclusive), optional"
      +              }
      +            },
      +            "type": "object"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Filter trades by USD value (open-ended min/max allowed)"
      +      }
      +    },
      +    "required": [
      +      "address"
      +    ],
      +    "type": "object"
      +  }
      +]
  3. Changed1 schema field changed
    • changedInput schema / properties / request / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": true,
      -    "type": "object"
      -  },
      -  {
      -    "description": "Complete request for an address' DEX trades (flattened).",
      -    "properties": {
      -      "address": {
      -        "description": "The wallet address whose DEX trades to fetch",
      -        "type": "string"
      -      },
      -      "chain": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "default": null,
      -        "description": "Single chain to query (e.g. ethereum, base, arbitrum, solana). This endpoint queries ONE chain at a time and does NOT accept 'all' or 'evm'. For EVM wallets a concrete chain is REQUIRED (they trade across many chains); non-EVM addresses are auto-detected from the address."
      -      },
      -      "dateRange": {
      -        "description": "Date range for the trades (defaults to last 7 days)",
      -        "properties": {
      -          "from": {
      -            "description": "Start value: token (see above) or date (YYYY-MM-DD or ___-MM-DD).",
      -            "type": "string"
      -          },
      -          "to": {
      -            "description": "End value: token (see above) or date (YYYY-MM-DD or ___-MM-DD).",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "from",
      -          "to"
      -        ],
      -        "type": "object"
      -      },
      -      "orderBy": {
      -        "anyOf": [
      -          {
      -            "enum": [
      -              "timestamp",
      -              "value"
      -            ],
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "default": null,
      -        "description": "Sort field. Pass an exact value above or None for default ('timestamp')."
      -      },
      -      "order_by_direction": {
      -        "default": "DESC",
      -        "enum": [
      -          "ASC",
      -          "DESC",
      -          "asc",
      -          "desc"
      -        ],
      -        "type": "string"
      -      },
      -      "page": {
      -        "default": 1,
      -        "type": "integer"
      -      },
      -      "valueUsd": {
      -        "anyOf": [
      -          {
      -            "description": "Numeric range where from_value and to_value are optional,\nallowing for open-ended ranges (e.g., only minimum or only maximum).",
      -            "properties": {
      -              "from": {
      -                "anyOf": [
      -                  {
      -                    "type": "number"
      -                  },
      -                  {
      -                    "type": "null"
      -                  }
      -                ],
      -                "default": null,
      -                "description": "Minimum value (inclusive), optional"
      -              },
      -              "to": {
      -                "anyOf": [
      -                  {
      -                    "type": "number"
      -                  },
      -                  {
      -                    "type": "null"
      -                  }
      -                ],
      -                "default": null,
      -                "description": "Maximum value (inclusive), optional"
      -              }
      -            },
      -            "type": "object"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "default": null,
      -        "description": "Filter trades by USD value (open-ended min/max allowed)"
      -      }
      -    },
      -    "required": [
      -      "address"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": true,
      +    "type": "object"
      +  },
      +  {
      +    "description": "Complete request for an address' DEX trades (flattened).",
      +    "properties": {
      +      "address": {
      +        "description": "The wallet address whose DEX trades to fetch",
      +        "type": "string"
      +      },
      +      "chain": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Single chain to query (e.g. ethereum, base, arbitrum, solana). This endpoint queries ONE chain at a time and does NOT accept 'all' or 'evm'. For EVM wallets a concrete chain is REQUIRED (they trade across many chains); non-EVM addresses are auto-detected from the address. Use 'hyperliquid' for Hyperliquid perpetual trades (requires an EVM address)."
      +      },
      +      "dateRange": {
      +        "description": "Date range for the trades (defaults to last 7 days)",
      +        "properties": {
      +          "from": {
      +            "description": "Start value: token (see above) or date (YYYY-MM-DD or ___-MM-DD).",
      +            "type": "string"
      +          },
      +          "to": {
      +            "description": "End value: token (see above) or date (YYYY-MM-DD or ___-MM-DD).",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "from",
      +          "to"
      +        ],
      +        "type": "object"
      +      },
      +      "orderBy": {
      +        "anyOf": [
      +          {
      +            "enum": [
      +              "timestamp",
      +              "value"
      +            ],
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Sort field. Pass an exact value above or None for default ('timestamp')."
      +      },
      +      "order_by_direction": {
      +        "default": "DESC",
      +        "enum": [
      +          "ASC",
      +          "DESC",
      +          "asc",
      +          "desc"
      +        ],
      +        "type": "string"
      +      },
      +      "page": {
      +        "default": 1,
      +        "type": "integer"
      +      },
      +      "valueUsd": {
      +        "anyOf": [
      +          {
      +            "description": "Numeric range where from_value and to_value are optional,\nallowing for open-ended ranges (e.g., only minimum or only maximum).",
      +            "properties": {
      +              "from": {
      +                "anyOf": [
      +                  {
      +                    "type": "number"
      +                  },
      +                  {
      +                    "type": "null"
      +                  }
      +                ],
      +                "default": null,
      +                "description": "Minimum value (inclusive), optional"
      +              },
      +              "to": {
      +                "anyOf": [
      +                  {
      +                    "type": "number"
      +                  },
      +                  {
      +                    "type": "null"
      +                  }
      +                ],
      +                "default": null,
      +                "description": "Maximum value (inclusive), optional"
      +              }
      +            },
      +            "type": "object"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Filter trades by USD value (open-ended min/max allowed)"
      +      }
      +    },
      +    "required": [
      +      "address"
      +    ],
      +    "type": "object"
      +  }
      +]
  4. Added

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already establish readOnly/non-destructive, but the description goes well beyond them: it discloses single-chain enforcement and the rejected 'all'/'evm' values, the EVM-vs-non-EVM chain requirement, the Hyperliquid-requires-EVM-address constraint, and the rule that only one token field is allowed on Hyperliquid. It even previews the returned Spot and Perp column sets.

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?

Dense but deliberately structured with labeled sections (Chain, columns, Sort, Filter, Example) and the core purpose front-loaded. The column lists and Hyperliquid caveats are long, but each line carries usable calling information; nothing reads as filler.

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?

For a complex multi-chain tool spanning spot and perp venues with chain-dependent filter semantics, the description covers chain selection, venue selection, sorting, filtering, and an inline example. An output schema exists, so omitting a detailed return-value contract is appropriate, and the summary of returned columns is a bonus rather than a gap.

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

Parameters4/5

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

Schema coverage is reported at 0%, so the description carries the burden and largely does: it explains that order_by accepts timestamp/value with asc/desc, that valueUsd is a filter, and that tokenAddressBought/Sold take contract addresses on spot chains but perp symbols on Hyperliquid (selecting Long/Short respectively). It omits page/pagination and the dateRange token-vs-date duality, so it is strong but not exhaustive.

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?

Starts with a specific verb+resource ('Get a wallet's individual trades on a single chain') and immediately scopes it to DEX spot swaps or Hyperliquid perps, newest first. It explicitly positions itself against the sibling by calling itself the 'wallet-centric companion to token_dex_trades (which is token-centric)', so an agent can disambiguate without opening either schema.

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?

Gives explicit when-to-use conditions: one chain per call, 'all'/'evm' unsupported, EVM wallets MUST pass chain explicitly while non-EVM is auto-detected, 'hyperliquid' for perps requiring an EVM address, and 'Call once per chain to span multiple networks'. It also names the alternative tool and the axis (wallet vs token) that selects it.

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