get_weekly_trading_volume_by_frontend
Retrieve 7-day trading volume data for different frontends from Dune Analytics. Returns a markdown-formatted table sorted by volume to analyze platform performance.
Instructions
Retrieve 7-day trading volume by frontend.
This tool fetches 7-day trading volume data for different frontends from a Dune Analytics query and returns it in a markdown-formatted table, sorted by volume in descending order.
Args:
limit (int, optional): Maximum number of rows to retrieve from the query. Defaults to 1000.
Returns:
str: A markdown-formatted table of trading volume data, or an error message if the query fails.
Tool call template
This tool declares no required parameters. Add optional parameters from the input schema as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {},
"name": "get_weekly_trading_volume_by_frontend"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No |
Implementation Reference
- main.py:221-239 (handler)The main handler function for the 'get_weekly_trading_volume_by_frontend' tool. It fetches the latest results from Dune query ID 3364122, processes the data into a pandas DataFrame, sorts it by 'volume' in descending order, and returns a markdown-formatted table. Includes error handling.
def get_weekly_trading_volume_by_frontend(limit: int = 1000) -> str: """ Retrieve 7-day trading volume by frontend. This tool fetches 7-day trading volume data for different frontends from a Dune Analytics query and returns it in a markdown-formatted table, sorted by volume in descending order. Args: limit (int, optional): Maximum number of rows to retrieve from the query. Defaults to 1000. Returns: str: A markdown-formatted table of trading volume data, or an error message if the query fails. """ try: data = get_latest_result(3364122, limit=limit) df = pd.DataFrame(data) df = df.sort_values(by="volume", ascending=False) return df.to_markdown() except Exception as e: return str(e) - main.py:220-220 (registration)The @mcp.tool() decorator registers the get_weekly_trading_volume_by_frontend function as an MCP tool.
@mcp.tool() - main.py:21-43 (helper)Shared helper function used by the tool to fetch the latest execution results from a specified Dune Analytics query ID, returning the rows as a list of dictionaries.
def get_latest_result(query_id: int, limit: int = 1000) -> list: """ Fetch the latest results from a Dune Analytics query. Args: query_id (int): The ID of the Dune query to fetch results from. limit (int, optional): Maximum number of rows to return. Defaults to 1000. Returns: list: A list of dictionaries containing the query results, or an empty list if the request fails. Raises: httpx.HTTPStatusError: If the API request fails due to a client or server error. """ url = f"{BASE_URL}/query/{query_id}/results" params = {"limit": limit} with httpx.Client() as client: response = client.get(url, params=params, headers=HEADERS, timeout=300) response.raise_for_status() data = response.json() result_data = data.get("result", {}).get("rows", []) return result_data