Skip to main content
Glama
dragonkhoi

mixpanel

list_saved_cohorts

Retrieve all cohorts within a Mixpanel project to identify user segments, plan targeted analyses, and extract cohort IDs for filtering in reports.

Instructions

Get all cohorts in a given project. Useful for discovering user segments, planning targeted analyses, and retrieving cohort IDs for filtering in other reports.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
project_idNoThe Mixpanel project ID. Optional since it has a default.
workspace_idNoThe ID of the workspace if applicable

Implementation Reference

  • The handler function for the list_saved_cohorts tool. It constructs an authenticated GET request to the Mixpanel /api/query/cohorts/list endpoint using service account credentials, fetches the list of saved cohorts, and returns the JSON response or an error message.
      async ({ project_id = DEFAULT_PROJECT_ID, workspace_id }) => {
        try {
          const credentials = `${SERVICE_ACCOUNT_USER_NAME}:${SERVICE_ACCOUNT_PASSWORD}`;
          const encodedCredentials = Buffer.from(credentials).toString('base64');
          
          const queryParams = new URLSearchParams({
            project_id: project_id || ''
          });
          
          if (workspace_id) {
            queryParams.append('workspace_id', workspace_id);
          }
          
          const url = `https://mixpanel.com/api/query/cohorts/list?${queryParams.toString()}`;
          
          const options = {
            method: 'GET',
            headers: {
              'accept': 'application/json',
              'authorization': `Basic ${encodedCredentials}`
            }
          };
          
          const response = await fetch(url, options);
          
          if (!response.ok) {
            const errorText = await response.text();
            throw new Error(`HTTP error! status: ${response.status} - ${errorText}`);
          }
          
          const data = await response.json();
          
          return {
            content: [
              {
                type: "text",
                text: JSON.stringify(data)
              }
            ]
          };
        } catch (error: unknown) {
          console.error("Error fetching Mixpanel cohorts list:", error);
          const errorMessage = error instanceof Error ? error.message : String(error);
          return {
            content: [
              {
                type: "text",
                text: `Error fetching Mixpanel cohorts list: ${errorMessage}`
              }
            ],
            isError: true
          };
        }
      }
    );
  • Zod input schema for the tool, defining optional project_id and workspace_id parameters.
    {
      project_id: z.string().describe("The Mixpanel project ID. Optional since it has a default.").optional(),
      workspace_id: z.string().optional().describe("The ID of the workspace if applicable"),
    },
  • src/index.ts:621-681 (registration)
    MCP server.tool registration for 'list_saved_cohorts', including name, description, input schema, and handler function.
      "list_saved_cohorts",
      "Get all cohorts in a given project. Useful for discovering user segments, planning targeted analyses, and retrieving cohort IDs for filtering in other reports.",
      {
        project_id: z.string().describe("The Mixpanel project ID. Optional since it has a default.").optional(),
        workspace_id: z.string().optional().describe("The ID of the workspace if applicable"),
      },
      async ({ project_id = DEFAULT_PROJECT_ID, workspace_id }) => {
        try {
          const credentials = `${SERVICE_ACCOUNT_USER_NAME}:${SERVICE_ACCOUNT_PASSWORD}`;
          const encodedCredentials = Buffer.from(credentials).toString('base64');
          
          const queryParams = new URLSearchParams({
            project_id: project_id || ''
          });
          
          if (workspace_id) {
            queryParams.append('workspace_id', workspace_id);
          }
          
          const url = `https://mixpanel.com/api/query/cohorts/list?${queryParams.toString()}`;
          
          const options = {
            method: 'GET',
            headers: {
              'accept': 'application/json',
              'authorization': `Basic ${encodedCredentials}`
            }
          };
          
          const response = await fetch(url, options);
          
          if (!response.ok) {
            const errorText = await response.text();
            throw new Error(`HTTP error! status: ${response.status} - ${errorText}`);
          }
          
          const data = await response.json();
          
          return {
            content: [
              {
                type: "text",
                text: JSON.stringify(data)
              }
            ]
          };
        } catch (error: unknown) {
          console.error("Error fetching Mixpanel cohorts list:", error);
          const errorMessage = error instanceof Error ? error.message : String(error);
          return {
            content: [
              {
                type: "text",
                text: `Error fetching Mixpanel cohorts list: ${errorMessage}`
              }
            ],
            isError: true
          };
        }
      }
    );
  • JSON Schema definition for the Mixpanel /query/cohorts/list API endpoint used by the tool, including input metadata (project_id required integer, optional workspace_id) and response format (array of cohort objects with id, name, count, etc.).
    declare const CohortsList: {
        readonly metadata: {
            readonly allOf: readonly [{
                readonly type: "object";
                readonly properties: {
                    readonly project_id: {
                        readonly type: "integer";
                        readonly $schema: "http://json-schema.org/draft-04/schema#";
                        readonly description: "Required if using service account to authenticate request.";
                    };
                    readonly workspace_id: {
                        readonly type: "integer";
                        readonly $schema: "http://json-schema.org/draft-04/schema#";
                        readonly description: "The id of the workspace if applicable.";
                    };
                };
                readonly required: readonly ["project_id"];
            }];
        };
        readonly response: {
            readonly "200": {
                readonly type: "array";
                readonly items: {
                    readonly type: "object";
                    readonly properties: {
                        readonly count: {
                            readonly type: "integer";
                        };
                        readonly is_visible: {
                            readonly type: "integer";
                            readonly description: "0 if not visible. 1 if visible";
                        };
                        readonly description: {
                            readonly type: "string";
                        };
                        readonly created: {
                            readonly type: "string";
                        };
                        readonly project_id: {
                            readonly type: "integer";
                        };
                        readonly id: {
                            readonly type: "integer";
                        };
                        readonly name: {
                            readonly type: "string";
                        };
                    };
                };
                readonly $schema: "http://json-schema.org/draft-04/schema#";
            };
        };
    };

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