fetch_leaderboard
Retrieve leaderboard rankings by specifying type like PNL_WIN or TRADE_VOLUME. Returns JSON data.
Instructions
Fetch Vector leaderboard data
Args:
leaderboard_type: Type of leaderboard (e.g., 'PNL_WIN', 'TRADE_VOLUME')
Returns:
JSON string with leaderboard dataInput Schema
| Name | Required | Description | Default |
|---|---|---|---|
| leaderboard_type | No | PNL_WIN |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| result | Yes |
Implementation Reference
- vector_server.py:274-316 (handler)The async function that implements the fetch_leaderboard tool. It builds a GraphQL query payload with the given leaderboard_type, sends it to the Vector GraphQL API via httpx, and returns the response text (or an error message).
async def fetch_leaderboard( leaderboard_type: str = "PNL_WIN", ctx: Context = None ) -> str: """Fetch Vector leaderboard data Args: leaderboard_type: Type of leaderboard (e.g., 'PNL_WIN', 'TRADE_VOLUME') Returns: JSON string with leaderboard data """ if ctx: ctx.info(f"Fetching {leaderboard_type} leaderboard data...") # Hardcoded variables as requested variables = { "after": None, "first": 100, "groupId": None, "leaderboardType": leaderboard_type, "periodsAgo": None } payload = { "query": LEADERBOARD_QUERY, "variables": variables } async with httpx.AsyncClient(verify=False) as client: try: response = await client.post( API_URL, json=payload, headers=HEADERS ) response.raise_for_status() return response.text except Exception as e: error_message = f"Error fetching leaderboard data: {str(e)}" if ctx: ctx.error(error_message) return error_message - vector_server.py:273-273 (registration)The decorator that registers fetch_leaderboard as an MCP tool with the name "fetch_leaderboard" on the FastMCP server instance.
@mcp.tool(name="fetch_leaderboard") - vector_server.py:31-103 (schema)The LEADERBOARD_QUERY GraphQL query string used by fetch_leaderboard. It queries leaderboardWeekly with the provided variables and includes an embedded fragment for leaderboard entries (rank, value, profile info).
LEADERBOARD_QUERY = """ query leaderboardScreenQuery( $groupId: String $leaderboardType: LeaderboardType! $periodsAgo: Int $first: Int $after: String ) { ...leaderboardFragment_31k55b } fragment InlineProfileFragment on Profile { id ...ProfilePicFragment ...ProfileUsernameFragment } fragment LeaderboardEntryFragment on LeaderboardEntry { profileId broadcastCount rank value percentileV2 profile { id username profileImageUrl twitterUsername isVerified followerCount followerCountX ...InlineProfileFragment ...ProfilePicFragment } } fragment ProfileBadgesFragment on Profile { username twitterUsername isVerified } fragment ProfilePicFragment on Profile { id username moderationState profileImageUrl ...ProfileBadgesFragment } fragment ProfileUsernameFragment on Profile { username moderationState ...ProfileBadgesFragment } fragment leaderboardFragment_31k55b on Query { leaderboardWeekly(leaderboardType: $leaderboardType, groupId: $groupId, periodsAgo: $periodsAgo, first: $first, after: $after) { edges { node { profileId ...LeaderboardEntryFragment __typename } cursor } resetsAt pageInfo { endCursor hasNextPage } } } - vector_server.py:16-28 (helper)The API_URL constant pointing to the Vector mainnet GraphQL endpoint and the HEADERS dict used by fetch_leaderboard for its HTTP request.
API_URL = "https://mainnet-api.vector.fun/graphql" HEADERS = { "Host": "mainnet-api.vector.fun", "content-type": "application/json", "X-App-Version": "1.11.0", "X-App-Build-Number": "331", "accept": "*/*", "x-app-name": "Vector", "Accept-Language": "en-US;q=1", "user-agent": "Vector/331 CFNetwork/1568.200.51 Darwin/24.1.0", "pragma": "no-cache", "cache-control": "no-cache" }