Skip to main content
Glama

Finding recent traders

token_who_bought_sold
Read-only

Get net buyers or net sellers of a token on DEX (Decentralised Exchanges) only.

Use this tool to find out WHO is buying or selling a token (on DEX) AND then you can check if they are liquidating profits or accumulating more.

Returns: Aggregated buyer/seller activity as markdown. Returns empty string if no trading data found.

Columns returned:
- **Address**: Trader's wallet address
- **Label**: Nansen label of the address
- **Bought Token Volume**: Total quantity of tokens purchased
- **Sold Token Volume**: Total quantity of tokens sold
- **Total Token Volume**: Bought plus sold
- **Net Bought / Net Sold Token Volume**: Bought minus sold for BUY results, or sold minus bought for SELL results
- **Bought Volume USD**: USD value of all token purchases
- **Sold Volume USD**: USD value of all token sales
- **Total Volume USD**: Bought plus sold
- **Net Bought / Net Sold Volume USD**: Bought minus sold for BUY results, or sold minus bought for SELL results

Sorting Options: Sort ASC or DESC by net_token_volume (default: biggest net buyers or sellers first), token_trade_volume (total volume: most active traders, such as market-making bots), bought_token_volume, or sold_token_volume.

Notes: - buy_or_sell parameter filters for "BUY" (net buyers) or "SELL" (net sellers), decided by net token amount - Net USD volume can be negative while net token volume is zero or positive, because USD is priced per trade - min_trade_volume_usd applies to the requested side: bought USD for BUY, sold USD for SELL - Machine-readable rows: token_trade_volume / trade_volume_usd are total volume (bought + sold); net_token_volume / net_volume_usd are net volume. - Aggregates all trading activity within the specified time range

Input Schema

NameRequiredDescriptionDefault
requestYesComplete request for token who bought/sold (flattened).

Output Schema

NameRequiredDescriptionDefault
rowsNo
chainNo
date_toNo
messageNoNotice or error text when the tool returns no data rows.
date_fromNo
paginationNo
buy_or_sellNo
token_addressNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed8 schema fields changed
    • changedInput schema / properties / request / properties / buy_or_sell / description
      Previous value: -"Transaction type for buyers or sellers analysis"New value: +"Select net buyers (BUY) or net sellers (SELL)"
    • addedInput schema / properties / request / properties / min_trade_volume_usd / description
      Added value: +"Minimum USD volume on the requested side (bought for BUY, sold for SELL)."
    • changedInput schema / properties / request / properties / orderBy / anyOf
      Previous value: -[
      -  {
      -    "enum": [
      -      "token_trade_volume",
      -      "bought_token_volume",
      -      "sold_token_volume"
      -    ],
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "enum": [
      +      "net_token_volume",
      +      "token_trade_volume",
      +      "bought_token_volume",
      +      "sold_token_volume"
      +    ],
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / properties / request / properties / orderBy / description
      Previous value: -"Sort field. Pass an exact value above or None for default ('token_trade_volume'). USD volume fields are disabled; native token volume is preferred."New value: +"Sort field. The default net_token_volume (bought minus sold for BUY, sold minus bought for SELL) ranks the biggest net buyers or sellers. token_trade_volume is total volume (bought plus sold): use it to find the most active traders. USD volume fields are disabled; native token volume is preferred."
    • addedOutput schema / properties / rows / items / properties / net_token_volume
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "number"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Net token volume: bought minus sold for BUY, or sold minus bought for SELL.",
      +  "title": "Net Token Volume"
      +}
    • addedOutput schema / properties / rows / items / properties / net_volume_usd
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "number"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Net USD volume: bought minus sold for BUY, or sold minus bought for SELL. Can be negative while net token volume is positive, because USD is priced per trade.",
      +  "title": "Net Volume Usd"
      +}
    • changedOutput schema / properties / rows / items / properties / token_trade_volume / description
      Previous value: -"Gross token volume (bought + sold)."New value: +"Total token volume (bought + sold)."
    • changedOutput schema / properties / rows / items / properties / trade_volume_usd / description
      Previous value: -"Gross USD volume (bought + sold)."New value: +"Total USD volume (bought + sold)."
  2. 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 token who bought/sold (flattened).",
      -    "properties": {
      -      "buy_or_sell": {
      -        "description": "Transaction type for buyers or sellers analysis",
      -        "enum": [
      -          "BUY",
      -          "SELL"
      -        ],
      -        "type": "string"
      -      },
      -      "chain": {
      -        "type": "string"
      -      },
      -      "include_labels": {
      -        "description": "Filter based on a particular set of segments based on label, default is empty which includes all segments",
      -        "items": {
      -          "description": "Wallet labels for holder analysis and filtering.",
      -          "enum": [
      -            "Whale",
      -            "Public Figure",
      -            "Exchange",
      -            "Fund",
      -            "30D Smart Trader",
      -            "90D Smart Trader",
      -            "180D Smart Trader",
      -            "All Time Smart Trader"
      -          ],
      -          "type": "string"
      -        },
      -        "type": "array"
      -      },
      -      "min_trade_volume_usd": {
      -        "default": 10,
      -        "type": "number"
      -      },
      -      "orderBy": {
      -        "anyOf": [
      -          {
      -            "enum": [
      -              "token_trade_volume",
      -              "bought_token_volume",
      -              "sold_token_volume"
      -            ],
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "default": null,
      -        "description": "Sort field. Pass an exact value above or None for default ('token_trade_volume'). USD volume fields are disabled; native token volume is preferred."
      -      },
      -      "order_by_direction": {
      -        "default": "DESC",
      -        "enum": [
      -          "ASC",
      -          "DESC",
      -          "asc",
      -          "desc"
      -        ],
      -        "type": "string"
      -      },
      -      "page": {
      -        "default": 1,
      -        "type": "integer"
      -      },
      -      "time_range": {
      -        "description": "Date range for analysis",
      -        "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"
      -      },
      -      "tokenAddress": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "chain",
      -      "tokenAddress",
      -      "buy_or_sell"
      -    ],
      -    "type": "object"
      -  }
      -]
    • addedInput schema / properties / request / description
      Added value: +"Complete request for token who bought/sold (flattened)."
    • addedInput schema / properties / request / properties
      Added value: +{
      +  "buy_or_sell": {
      +    "description": "Transaction type for buyers or sellers analysis",
      +    "enum": [
      +      "BUY",
      +      "SELL"
      +    ],
      +    "type": "string"
      +  },
      +  "chain": {
      +    "type": "string"
      +  },
      +  "include_labels": {
      +    "description": "Filter based on a particular set of segments based on label, default is empty which includes all segments",
      +    "items": {
      +      "description": "Wallet labels for holder analysis and filtering.",
      +      "enum": [
      +        "Whale",
      +        "Public Figure",
      +        "Exchange",
      +        "Fund",
      +        "30D Smart Trader",
      +        "90D Smart Trader",
      +        "180D Smart Trader",
      +        "All Time Smart Trader"
      +      ],
      +      "type": "string"
      +    },
      +    "type": "array"
      +  },
      +  "min_trade_volume_usd": {
      +    "default": 10,
      +    "type": "number"
      +  },
      +  "orderBy": {
      +    "anyOf": [
      +      {
      +        "enum": [
      +          "token_trade_volume",
      +          "bought_token_volume",
      +          "sold_token_volume"
      +        ],
      +        "type": "string"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ],
      +    "default": null,
      +    "description": "Sort field. Pass an exact value above or None for default ('token_trade_volume'). USD volume fields are disabled; native token volume is preferred."
      +  },
      +  "order_by_direction": {
      +    "default": "DESC",
      +    "enum": [
      +      "ASC",
      +      "DESC",
      +      "asc",
      +      "desc"
      +    ],
      +    "type": "string"
      +  },
      +  "page": {
      +    "default": 1,
      +    "type": "integer"
      +  },
      +  "time_range": {
      +    "additionalProperties": false,
      +    "description": "Date range for analysis",
      +    "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"
      +  },
      +  "tokenAddress": {
      +    "type": "string"
      +  }
      +}
    • addedInput schema / properties / request / required
      Added value: +[
      +  "chain",
      +  "tokenAddress",
      +  "buy_or_sell"
      +]
    • addedInput schema / properties / request / type
      Added value: +"object"
  3. Changed1 schema field changed
    • changedInput schema / properties / request / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": true,
      -    "type": "object"
      -  },
      -  {
      -    "description": "Complete request for token who bought/sold (flattened).",
      -    "properties": {
      -      "buy_or_sell": {
      -        "description": "Transaction type for buyers or sellers analysis",
      -        "enum": [
      -          "BUY",
      -          "SELL"
      -        ],
      -        "type": "string"
      -      },
      -      "chain": {
      -        "type": "string"
      -      },
      -      "include_labels": {
      -        "description": "Filter based on a particular set of segments based on label, default is empty which includes all segments",
      -        "items": {
      -          "description": "Wallet labels for holder analysis and filtering.",
      -          "enum": [
      -            "Whale",
      -            "Public Figure",
      -            "Exchange",
      -            "Fund",
      -            "30D Smart Trader",
      -            "90D Smart Trader",
      -            "180D Smart Trader",
      -            "All Time Smart Trader"
      -          ],
      -          "type": "string"
      -        },
      -        "type": "array"
      -      },
      -      "min_trade_volume_usd": {
      -        "default": 10,
      -        "type": "number"
      -      },
      -      "orderBy": {
      -        "anyOf": [
      -          {
      -            "enum": [
      -              "token_trade_volume",
      -              "bought_token_volume",
      -              "sold_token_volume"
      -            ],
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "default": null,
      -        "description": "Sort field. Pass an exact value above or None for default ('token_trade_volume'). USD volume fields are disabled; native token volume is preferred."
      -      },
      -      "order_by_direction": {
      -        "default": "DESC",
      -        "enum": [
      -          "ASC",
      -          "DESC",
      -          "asc",
      -          "desc"
      -        ],
      -        "type": "string"
      -      },
      -      "page": {
      -        "default": 1,
      -        "type": "integer"
      -      },
      -      "time_range": {
      -        "description": "Date range for analysis",
      -        "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"
      -      },
      -      "tokenAddress": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "chain",
      -      "tokenAddress",
      -      "buy_or_sell"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": true,
      +    "type": "object"
      +  },
      +  {
      +    "description": "Complete request for token who bought/sold (flattened).",
      +    "properties": {
      +      "buy_or_sell": {
      +        "description": "Transaction type for buyers or sellers analysis",
      +        "enum": [
      +          "BUY",
      +          "SELL"
      +        ],
      +        "type": "string"
      +      },
      +      "chain": {
      +        "type": "string"
      +      },
      +      "include_labels": {
      +        "description": "Filter based on a particular set of segments based on label, default is empty which includes all segments",
      +        "items": {
      +          "description": "Wallet labels for holder analysis and filtering.",
      +          "enum": [
      +            "Whale",
      +            "Public Figure",
      +            "Exchange",
      +            "Fund",
      +            "30D Smart Trader",
      +            "90D Smart Trader",
      +            "180D Smart Trader",
      +            "All Time Smart Trader"
      +          ],
      +          "type": "string"
      +        },
      +        "type": "array"
      +      },
      +      "min_trade_volume_usd": {
      +        "default": 10,
      +        "type": "number"
      +      },
      +      "orderBy": {
      +        "anyOf": [
      +          {
      +            "enum": [
      +              "token_trade_volume",
      +              "bought_token_volume",
      +              "sold_token_volume"
      +            ],
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Sort field. Pass an exact value above or None for default ('token_trade_volume'). USD volume fields are disabled; native token volume is preferred."
      +      },
      +      "order_by_direction": {
      +        "default": "DESC",
      +        "enum": [
      +          "ASC",
      +          "DESC",
      +          "asc",
      +          "desc"
      +        ],
      +        "type": "string"
      +      },
      +      "page": {
      +        "default": 1,
      +        "type": "integer"
      +      },
      +      "time_range": {
      +        "description": "Date range for analysis",
      +        "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"
      +      },
      +      "tokenAddress": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "chain",
      +      "tokenAddress",
      +      "buy_or_sell"
      +    ],
      +    "type": "object"
      +  }
      +]
  4. Changed13 schema fields changed
    • addedOutput schema / description
      Added value: +"Structured result of `token_who_bought_sold`."
    • addedOutput schema / properties / buy_or_sell
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Buy Or Sell"
      +}
    • addedOutput schema / properties / chain
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Chain"
      +}
    • addedOutput schema / properties / date_from
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Date From"
      +}
    • addedOutput schema / properties / date_to
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Date To"
      +}
    • addedOutput schema / properties / message
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Notice or error text when the tool returns no data rows.",
      +  "title": "Message"
      +}
    • addedOutput schema / properties / pagination
      Added value: +{
      +  "anyOf": [
      +    {
      +      "description": "Page position of the returned rows.",
      +      "properties": {
      +        "is_last_page": {
      +          "anyOf": [
      +            {
      +              "type": "boolean"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "default": null,
      +          "title": "Is Last Page"
      +        },
      +        "page": {
      +          "anyOf": [
      +            {
      +              "type": "integer"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "default": null,
      +          "title": "Page"
      +        },
      +        "per_page": {
      +          "anyOf": [
      +            {
      +              "type": "integer"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "default": null,
      +          "title": "Per Page"
      +        }
      +      },
      +      "title": "Pagination",
      +      "type": "object"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • removedOutput schema / properties / result
      Removed value: -{
      -  "type": "string"
      -}
    • addedOutput schema / properties / rows
      Added value: +{
      +  "items": {
      +    "description": "Aggregated DEX buy and sell volume of one address for the token.",
      +    "properties": {
      +      "address": {
      +        "title": "Address",
      +        "type": "string"
      +      },
      +      "address_label": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "title": "Address Label"
      +      },
      +      "bought_token_volume": {
      +        "anyOf": [
      +          {
      +            "type": "number"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "title": "Bought Token Volume"
      +      },
      +      "bought_volume_usd": {
      +        "anyOf": [
      +          {
      +            "type": "number"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "title": "Bought Volume Usd"
      +      },
      +      "sold_token_volume": {
      +        "anyOf": [
      +          {
      +            "type": "number"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "title": "Sold Token Volume"
      +      },
      +      "sold_volume_usd": {
      +        "anyOf": [
      +          {
      +            "type": "number"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "title": "Sold Volume Usd"
      +      },
      +      "token_trade_volume": {
      +        "anyOf": [
      +          {
      +            "type": "number"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Gross token volume (bought + sold).",
      +        "title": "Token Trade Volume"
      +      },
      +      "trade_volume_usd": {
      +        "anyOf": [
      +          {
      +            "type": "number"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Gross USD volume (bought + sold).",
      +        "title": "Trade Volume Usd"
      +      }
      +    },
      +    "required": [
      +      "address"
      +    ],
      +    "title": "TokenTraderVolumeRow",
      +    "type": "object"
      +  },
      +  "title": "Rows",
      +  "type": "array"
      +}
    • addedOutput schema / properties / token_address
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Token Address"
      +}
    • removedOutput schema / required
      Removed value: -[
      -  "result"
      -]
    • addedOutput schema / title
      Added value: +"TokenWhoBoughtSoldOutput"
    • removedOutput schema / x-fastmcp-wrap-result
      Removed value: -true
  5. Changed1 schema field changed
    • changedInput schema / properties / request / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": true,
      -    "type": "object"
      -  },
      -  {
      -    "description": "Complete request for token who bought/sold (flattened).",
      -    "properties": {
      -      "buy_or_sell": {
      -        "description": "Transaction type for buyers or sellers analysis",
      -        "enum": [
      -          "BUY",
      -          "SELL"
      -        ],
      -        "type": "string"
      -      },
      -      "chain": {
      -        "type": "string"
      -      },
      -      "include_labels": {
      -        "description": "Filter based on a particular set of segments based on label, default is empty which includes all segments",
      -        "items": {
      -          "description": "Wallet labels for holder analysis and filtering.",
      -          "enum": [
      -            "Whale",
      -            "Public Figure",
      -            "Exchange",
      -            "Fund",
      -            "30D Smart Trader",
      -            "90D Smart Trader",
      -            "180D Smart Trader",
      -            "All Time Smart Trader"
      -          ],
      -          "type": "string"
      -        },
      -        "type": "array"
      -      },
      -      "min_trade_volume_usd": {
      -        "default": 10,
      -        "type": "number"
      -      },
      -      "order_by": {
      -        "default": "bought_volume_usd",
      -        "type": "string"
      -      },
      -      "order_by_direction": {
      -        "default": "DESC",
      -        "enum": [
      -          "asc",
      -          "desc",
      -          "ASC",
      -          "DESC"
      -        ],
      -        "type": "string"
      -      },
      -      "page": {
      -        "default": 1,
      -        "type": "integer"
      -      },
      -      "time_range": {
      -        "description": "Date range for analysis",
      -        "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"
      -      },
      -      "tokenAddress": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "chain",
      -      "tokenAddress",
      -      "buy_or_sell"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": true,
      +    "type": "object"
      +  },
      +  {
      +    "description": "Complete request for token who bought/sold (flattened).",
      +    "properties": {
      +      "buy_or_sell": {
      +        "description": "Transaction type for buyers or sellers analysis",
      +        "enum": [
      +          "BUY",
      +          "SELL"
      +        ],
      +        "type": "string"
      +      },
      +      "chain": {
      +        "type": "string"
      +      },
      +      "include_labels": {
      +        "description": "Filter based on a particular set of segments based on label, default is empty which includes all segments",
      +        "items": {
      +          "description": "Wallet labels for holder analysis and filtering.",
      +          "enum": [
      +            "Whale",
      +            "Public Figure",
      +            "Exchange",
      +            "Fund",
      +            "30D Smart Trader",
      +            "90D Smart Trader",
      +            "180D Smart Trader",
      +            "All Time Smart Trader"
      +          ],
      +          "type": "string"
      +        },
      +        "type": "array"
      +      },
      +      "min_trade_volume_usd": {
      +        "default": 10,
      +        "type": "number"
      +      },
      +      "orderBy": {
      +        "anyOf": [
      +          {
      +            "enum": [
      +              "token_trade_volume",
      +              "bought_token_volume",
      +              "sold_token_volume"
      +            ],
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Sort field. Pass an exact value above or None for default ('token_trade_volume'). USD volume fields are disabled; native token volume is preferred."
      +      },
      +      "order_by_direction": {
      +        "default": "DESC",
      +        "enum": [
      +          "ASC",
      +          "DESC",
      +          "asc",
      +          "desc"
      +        ],
      +        "type": "string"
      +      },
      +      "page": {
      +        "default": 1,
      +        "type": "integer"
      +      },
      +      "time_range": {
      +        "description": "Date range for analysis",
      +        "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"
      +      },
      +      "tokenAddress": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "chain",
      +      "tokenAddress",
      +      "buy_or_sell"
      +    ],
      +    "type": "object"
      +  }
      +]
  6. Changed3 schema fields changed
    • removedInput schema / $defs
      Removed value: -{
      -  "BuyOrSell": {
      -    "description": "Transaction types for buy/sell analysis.",
      -    "enum": [
      -      "BUY",
      -      "SELL"
      -    ],
      -    "type": "string"
      -  },
      -  "DateRange": {
      -    "description": "Date range via tokens or dates.\nTokens: NOW, XMIN_AGO, XD_AGO, XH_AGO; THIS_YEAR_START, THIS_QUARTER_START, THIS_MONTH_START, THIS_WEEK_START, TODAY_START; LAST_WEEK_START/END, LAST_MONTH_START/END, LAST_QUARTER_START/END, LAST_YEAR_START/END.\nWeek starts Monday. Quarters are calendar. Dates: YYYY-MM-DD or ___-MM-DD (year omitted).\nPlease check detailed system instructions for more information.",
      -    "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"
      -  },
      -  "TokenWhoBoughtSoldRequest": {
      -    "description": "Complete request for token who bought/sold (flattened).",
      -    "properties": {
      -      "buy_or_sell": {
      -        "$ref": "#/$defs/BuyOrSell",
      -        "description": "Transaction type for buyers or sellers analysis"
      -      },
      -      "chain": {
      -        "type": "string"
      -      },
      -      "include_labels": {
      -        "description": "Filter based on a particular set of segments based on label, default is empty which includes all segments",
      -        "items": {
      -          "$ref": "#/$defs/WalletLabel"
      -        },
      -        "type": "array"
      -      },
      -      "min_trade_volume_usd": {
      -        "default": 10,
      -        "type": "number"
      -      },
      -      "order_by": {
      -        "default": "bought_volume_usd",
      -        "type": "string"
      -      },
      -      "order_by_direction": {
      -        "default": "DESC",
      -        "enum": [
      -          "asc",
      -          "desc",
      -          "ASC",
      -          "DESC"
      -        ],
      -        "type": "string"
      -      },
      -      "page": {
      -        "default": 1,
      -        "type": "integer"
      -      },
      -      "time_range": {
      -        "$ref": "#/$defs/DateRange",
      -        "description": "Date range for analysis"
      -      },
      -      "tokenAddress": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "chain",
      -      "tokenAddress",
      -      "buy_or_sell"
      -    ],
      -    "type": "object"
      -  },
      -  "WalletLabel": {
      -    "description": "Wallet labels for holder analysis and filtering.",
      -    "enum": [
      -      "Whale",
      -      "Public Figure",
      -      "Exchange",
      -      "Fund",
      -      "30D Smart Trader",
      -      "90D Smart Trader",
      -      "180D Smart Trader",
      -      "All Time Smart Trader"
      -    ],
      -    "type": "string"
      -  }
      -}
    • addedInput schema / additionalProperties
      Added value: +false
    • changedInput schema / properties / request / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": true,
      -    "type": "object"
      -  },
      -  {
      -    "$ref": "#/$defs/TokenWhoBoughtSoldRequest"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": true,
      +    "type": "object"
      +  },
      +  {
      +    "description": "Complete request for token who bought/sold (flattened).",
      +    "properties": {
      +      "buy_or_sell": {
      +        "description": "Transaction type for buyers or sellers analysis",
      +        "enum": [
      +          "BUY",
      +          "SELL"
      +        ],
      +        "type": "string"
      +      },
      +      "chain": {
      +        "type": "string"
      +      },
      +      "include_labels": {
      +        "description": "Filter based on a particular set of segments based on label, default is empty which includes all segments",
      +        "items": {
      +          "description": "Wallet labels for holder analysis and filtering.",
      +          "enum": [
      +            "Whale",
      +            "Public Figure",
      +            "Exchange",
      +            "Fund",
      +            "30D Smart Trader",
      +            "90D Smart Trader",
      +            "180D Smart Trader",
      +            "All Time Smart Trader"
      +          ],
      +          "type": "string"
      +        },
      +        "type": "array"
      +      },
      +      "min_trade_volume_usd": {
      +        "default": 10,
      +        "type": "number"
      +      },
      +      "order_by": {
      +        "default": "bought_volume_usd",
      +        "type": "string"
      +      },
      +      "order_by_direction": {
      +        "default": "DESC",
      +        "enum": [
      +          "asc",
      +          "desc",
      +          "ASC",
      +          "DESC"
      +        ],
      +        "type": "string"
      +      },
      +      "page": {
      +        "default": 1,
      +        "type": "integer"
      +      },
      +      "time_range": {
      +        "description": "Date range for analysis",
      +        "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"
      +      },
      +      "tokenAddress": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "chain",
      +      "tokenAddress",
      +      "buy_or_sell"
      +    ],
      +    "type": "object"
      +  }
      +]
  7. First observed

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already cover the read-only, non-destructive, open-world profile, so the description is free to add operational detail, and it does: aggregation across the requested time range, empty-string return on no data, and the caveat that net USD can go negative while net token volume is zero or positive. It stops short of stating auth/entitlement requirements or pagination behavior.

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?

Purpose and the WHO framing are front-loaded, and the notes/sorting blocks are scannable. The 11-row column listing is the weakest part, since an output schema exists and much of that block restates field names, though the net-volume interpretation adds genuine value.

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?

For a nested, single-request analytics tool, the description covers what is returned, how sorting and side filtering work, and two non-obvious edge cases (negative net USD, side-specific volume threshold). The only material omission is pagination semantics for the 'page' field.

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 baseline is 3, but the description adds real meaning: buy_or_sell is decided by net token amount, min_trade_volume_usd applies to the requested side (bought USD for BUY, sold USD for SELL), and the sort options are explained in terms of trader behavior. It does not explain the 'page' parameter, leaving one gap.

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

Purpose4/5

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

States a specific verb and resource: 'Get net buyers or net sellers of a token on DEX only,' which tells an agent exactly what dataset comes back. The DEX-only scoping further narrows it against the broader trade/transfer siblings. It does not name a specific sibling (e.g., token_dex_trades or token_current_top_holders) to distinguish itself explicitly, keeping it at 4.

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

Usage Guidelines3/5

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

'Use this tool to find out WHO is buying or selling a token (on DEX) AND then you can check if they are liquidating profits or accumulating more' gives an actionable intent, and 'on DEX only' sets a boundary. However, there is no explicit statement of when NOT to use it or which sibling to pick for raw trade-level, holder, or CEX data; an agent must infer the routing.

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