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

NameRequiredDescriptionDefault
requestYesComplete request for an address' DEX trades (flattened).

Output Schema

NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed6 schema fields changed
    • addedInput schema / properties / request / additionalProperties
      Added value: +false
    • removedInput schema / properties / request / anyOf
      Removed 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 token or date (YYYY-MM-DD or ___-MM-DD). Durations use exact rolling UTC timestamps; dates and calendar tokens start at midnight.",
      -            "type": "string"
      -          },
      -          "to": {
      -            "description": "End token or date (YYYY-MM-DD or ___-MM-DD). Durations use exact rolling UTC timestamps without an extra day. Dates and calendar tokens include the final date; TODAY_START stays at midnight.",
      -            "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"
      -  }
      -]
    • addedInput schema / properties / request / description
      Added value: +"Complete request for an address' DEX trades (flattened)."
    • addedInput schema / properties / request / properties
      Added value: +{
      +  "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": {
      +    "additionalProperties": false,
      +    "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 token or date (YYYY-MM-DD or ___-MM-DD). Durations use exact rolling UTC timestamps; dates and calendar tokens start at midnight.",
      +        "type": "string"
      +      },
      +      "to": {
      +        "description": "End token or date (YYYY-MM-DD or ___-MM-DD). Durations use exact rolling UTC timestamps without an extra day. Dates and calendar tokens include the final date; TODAY_START stays at midnight.",
      +        "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": [
      +      {
      +        "additionalProperties": false,
      +        "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)"
      +  }
      +}
    • addedInput schema / properties / request / required
      Added value: +[
      +  "address"
      +]
    • addedInput schema / properties / request / type
      Added value: +"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). 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"
      -  }
      -]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 token or date (YYYY-MM-DD or ___-MM-DD). Durations use exact rolling UTC timestamps; dates and calendar tokens start at midnight.",
      +            "type": "string"
      +          },
      +          "to": {
      +            "description": "End token or date (YYYY-MM-DD or ___-MM-DD). Durations use exact rolling UTC timestamps without an extra day. Dates and calendar tokens include the final date; TODAY_START stays at midnight.",
      +            "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. 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"
      +  }
      +]
  4. 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"
      +  }
      +]
  5. 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"
      +  }
      +]
  6. Added

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnly/openWorld/non-destructive, so the safety profile is covered. The description adds genuinely useful behavior: default ordering is newest-first, sortable by timestamp or value, and the exact spot vs perp column sets returned. It omits pagination behavior (the `page` param exists but nothing says page size or how to walk pages).

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?

Well front-loaded — purpose first, then chain rules, then column sets, then an example. The structure (headers, explicit lists) makes it scannable. Slightly padded by repeating the chain rules verbatim from the schema and by listing return columns that the output schema already covers.

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

Completeness4/5

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

Covers the hard parts of a nested-parameter, multi-chain tool: chain requirement, perp vs spot differences, filter semantics, and a concrete request example. An output schema exists so return values needn't be spelled out. The remaining gap is pagination — `page` defaults to 1 with no guidance on result-set size or how to retrieve further pages.

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 100%, so the baseline is 3, but the description adds meaning beyond it: token filter fields switch semantics by chain (contract address on spot vs perp symbol selecting Long/Short on Hyperliquid) and the one-token-field restriction. Minor deduction because the chain rules are largely a restatement of the schema's own `chain` description.

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?

States a specific verb and resource ('Get a wallet's individual trades'), scopes it to a single chain, and distinguishes both data modes (DEX spot swaps vs Hyperliquid perps). It explicitly positions itself against the sibling `token_dex_trades` as the wallet-centric counterpart, so an agent can pick between them 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 concrete routing rules: EVM wallets MUST pass `chain`, non-EVM is auto-detected, 'all'/'evm' are unsupported, use 'hyperliquid' for perps with an EVM address, and call once per chain to span networks. It also states that only one token filter field is allowed on Hyperliquid — a real invocation constraint, not just context.

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