Skip to main content
Glama
dragonkhoi

mixpanel

top_event_property_values

Identify the top values of a specific property within Mixpanel data to analyze value distribution, uncover common categories, and plan targeted insights.

Instructions

Get the top values for a property. Useful for understanding the distribution of values for a specific property, identifying the most common categories or segments, and planning further targeted analyses.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
eventYesThe event that you wish to get data for. Note: this is a single event name, not an array
limitNoThe maximum number of values to return. Defaults to 255
nameYesThe name of the property you would like to get data for
project_idNoThe Mixpanel project ID
workspace_idNoThe ID of the workspace if applicable

Implementation Reference

  • The handler function for the 'top_event_property_values' tool. It makes a GET request to Mixpanel's API endpoint '/api/query/events/properties/values' with the provided event name and property name, authenticates using service account credentials, and returns the top property values or an error.
      async ({ 
        project_id = DEFAULT_PROJECT_ID, 
        workspace_id, 
        event, 
        name,
        limit 
      }) => {
        try {
          // Create authorization header using base64 encoding of credentials
          const credentials = `${SERVICE_ACCOUNT_USER_NAME}:${SERVICE_ACCOUNT_PASSWORD}`;
          const encodedCredentials = Buffer.from(credentials).toString('base64');
          
          // Construct base URL with required parameters
          let url = `https://mixpanel.com/api/query/events/properties/values?project_id=${project_id}&event=${encodeURIComponent(event)}&name=${encodeURIComponent(name)}`;
          
          // Add optional parameters if they exist
          if (workspace_id) url += `&workspace_id=${workspace_id}`;
          if (limit !== undefined) url += `&limit=${limit}`;
          
          // Set up request options
          const options = {
            method: 'GET',
            headers: {
              'accept': 'application/json',
              'authorization': `Basic ${encodedCredentials}`
            }
          };
          
          // Make the API request
          const response = await fetch(url, options);
          
          if (!response.ok) {
            const errorText = await response.text();
            throw new Error(`API request failed with status ${response.status}: ${errorText}`);
          }
          
          const data = await response.json();
          return {
            content: [
              {
                type: "text",
                text: JSON.stringify(data)
              }
            ]
          };
        } catch (error) {
          console.error('Error fetching top event property values:', error);
          return {
            content: [
              {
                type: "text",
                text: `Error fetching top event property values: ${error}`
              }
            ],
            isError: true
          };
        }
      }
    );
  • Zod schema defining the input parameters for the 'top_event_property_values' tool, including project_id, workspace_id, event, name, and optional limit.
    {
      project_id: z.string().describe("The Mixpanel project ID").optional(),
      workspace_id: z.string().describe("The ID of the workspace if applicable").optional(),
      event: z.string().describe("The event that you wish to get data for. Note: this is a single event name, not an array"),
      name: z.string().describe("The name of the property you would like to get data for"),
      limit: z.number().describe("The maximum number of values to return. Defaults to 255").optional(),
    },
  • src/index.ts:1472-1540 (registration)
    Registration of the 'top_event_property_values' tool using server.tool(), including name, description, input schema, and handler function.
    server.tool(
      "top_event_property_values",
      "Get the top values for a property. Useful for understanding the distribution of values for a specific property, identifying the most common categories or segments, and planning further targeted analyses.",
      {
        project_id: z.string().describe("The Mixpanel project ID").optional(),
        workspace_id: z.string().describe("The ID of the workspace if applicable").optional(),
        event: z.string().describe("The event that you wish to get data for. Note: this is a single event name, not an array"),
        name: z.string().describe("The name of the property you would like to get data for"),
        limit: z.number().describe("The maximum number of values to return. Defaults to 255").optional(),
      },
      async ({ 
        project_id = DEFAULT_PROJECT_ID, 
        workspace_id, 
        event, 
        name,
        limit 
      }) => {
        try {
          // Create authorization header using base64 encoding of credentials
          const credentials = `${SERVICE_ACCOUNT_USER_NAME}:${SERVICE_ACCOUNT_PASSWORD}`;
          const encodedCredentials = Buffer.from(credentials).toString('base64');
          
          // Construct base URL with required parameters
          let url = `https://mixpanel.com/api/query/events/properties/values?project_id=${project_id}&event=${encodeURIComponent(event)}&name=${encodeURIComponent(name)}`;
          
          // Add optional parameters if they exist
          if (workspace_id) url += `&workspace_id=${workspace_id}`;
          if (limit !== undefined) url += `&limit=${limit}`;
          
          // Set up request options
          const options = {
            method: 'GET',
            headers: {
              'accept': 'application/json',
              'authorization': `Basic ${encodedCredentials}`
            }
          };
          
          // Make the API request
          const response = await fetch(url, options);
          
          if (!response.ok) {
            const errorText = await response.text();
            throw new Error(`API request failed with status ${response.status}: ${errorText}`);
          }
          
          const data = await response.json();
          return {
            content: [
              {
                type: "text",
                text: JSON.stringify(data)
              }
            ]
          };
        } catch (error) {
          console.error('Error fetching top event property values:', error);
          return {
            content: [
              {
                type: "text",
                text: `Error fetching top event property values: ${error}`
              }
            ],
            isError: true
          };
        }
      }
    );

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/dragonkhoi/mixpanel-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server